From e76b2abd9fa60f5b16e230680432c464f1c8b6d6 Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Tue, 28 Nov 2017 22:49:28 +0100 Subject: [PATCH 001/798] some corrections for the german translation --- sonoff/language/de-DE.h | 156 ++++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 1410ee50ef59..c188df3aea86 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -31,9 +31,9 @@ \*********************************************************************/ // "2017-03-07T11:08:02" - ISO8601:2004 -#define D_YEAR_MONTH_SEPARATOR "-" -#define D_MONTH_DAY_SEPARATOR "-" -#define D_DATE_TIME_SEPARATOR "T" +#define D_YEAR_MONTH_SEPARATOR "." +#define D_MONTH_DAY_SEPARATOR "." +#define D_DATE_TIME_SEPARATOR " " #define D_HOUR_MINUTE_SEPARATOR ":" #define D_MINUTE_SECOND_SEPARATOR ":" @@ -59,17 +59,17 @@ #define D_BLINK "Blinken" #define D_BLINKOFF "BlinkenAus" #define D_BOOTVERSION "Boot" -#define D_BOOT_COUNT "Boot-Zähler" +#define D_BOOT_COUNT "Anzahl Startvorgänge" #define D_BOOTCOUNT "BootZähler" #define D_BRIGHTLIGHT "hell" #define D_BUILDDATETIME "BuildDatumUhrzeit" -#define D_BUTTON "Taste" +#define D_BUTTON "Knopf" #define D_CELSIUS "Celsius" #define D_CODE "code" // Button code #define D_COLDLIGHT "kalt" #define D_COMMAND "Befehl" #define D_CONNECTED "verbunden" -#define D_COREVERSION "Kern" +#define D_COREVERSION "Core" #define D_COUNT "zählen" #define D_COUNTER "Zähler" #define D_CURRENT "Strom" // As in Voltage and Current @@ -82,7 +82,7 @@ #define D_DONE "erledigt" #define D_DST_TIME "DST" #define D_EMPTY "leer" -#define D_EMULATION "Emulierung" +#define D_EMULATION "Emulation" #define D_ENABLED "aktiviert" #define D_ENDDST "EndDST" // End Daylight Savings Time #define D_ERASE "löschen" @@ -97,14 +97,14 @@ #define D_FILE "Datei" #define D_FLASHMODE "FlashMode" #define D_FLASHSIZE "FlashSize" -#define D_FREE_MEMORY "freier Speicher" +#define D_FREE_MEMORY "Freier Speicher" #define D_FREEMEMORY "frei" #define D_FROM "von" #define D_GATEWAY "Gateway" #define D_GROUP "Gruppe" #define D_HEAPSIZE "Heap-Größe" #define D_HIGH "hoch" -#define D_HOST "host" +#define D_HOST "Host" #define D_HOSTNAME "Hostname" #define D_HUMIDITY "Feuchtigkeit" #define D_ID "ID" @@ -115,10 +115,10 @@ #define D_INITIALIZED "initialisiert" #define D_IP_ADDRESS "IP-Addresse" #define D_LIGHT "Licht" -#define D_LOCAL_TIME "örtlich" +#define D_LOCAL_TIME "lokale Zeit" #define D_LOW "niedrig" #define D_LWT "LWT" -#define D_MAC "Mac" +#define D_MAC "MAC" #define D_MASK "Maske" #define D_MODULE "Modul" #define D_MQTT "MQTT" @@ -134,13 +134,13 @@ #define D_OR "oder" #define D_PASSWORD "Passwort" #define D_PERIOD "Punkt" -#define D_PORT "port" +#define D_PORT "Port" #define D_POWER_FACTOR "Leistungsfaktor" #define D_POWERFACTOR "Faktor" #define D_POWERUSAGE "Leistung" #define D_PRESSURE "Druck" #define D_PRESSUREATSEALEVEL "MeeresDruck" -#define D_PROGRAM_FLASH_SIZE "Programm-Flash-Größe" +#define D_PROGRAM_FLASH_SIZE "Programm Flash Größe" #define D_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_PROGRAM_SIZE "Programmgröße" #define D_PROGRAMSIZE "ProgramSize" @@ -150,16 +150,16 @@ #define D_RESTARTING "starte neu" #define D_RESTART_REASON "Grund für Neustart" #define D_RESTARTREASON "RestartReason" -#define D_RESTORE "wiederherstellen" +#define D_RESTORE "Wiederherstellung" #define D_RETAINED "beibehalten" -#define D_SAVE "speichern" +#define D_SAVE "Speichern" #define D_SAVEADDRESS "SaveAddress" #define D_SAVECOUNT "SaveCount" #define D_SAVESTATE "SaveState" #define D_SDKVERSION "SDK" #define D_SELECTED "ausgewählt" #define D_SENSOR "Sensor" -#define D_SERIAL "Serial" +#define D_SERIAL "Seriell" #define D_BYTES "Bytes" #define D_SSID "SSID" #define D_START "Start" @@ -171,7 +171,7 @@ #define D_SUBNETMASK "Subnetmaske" #define D_SUBSCRIBE_TO "subscribe to" #define D_SUCCESSFUL "erfolgreich" -#define D_SWITCH "switch" +#define D_SWITCH "Schalter" #define D_SYNC "sync" #define D_SYS "sys" // Sys log #define D_TEMPERATURE "Temperatur" @@ -179,15 +179,15 @@ #define D_TIME "Zeit" #define D_TO "bis" #define D_TODAY "heute" -#define D_TOGGLE "schalten" +#define D_TOGGLE "An/Aus" #define D_TOPIC "topic" #define D_TOTAL "Total" #define D_TRANSMIT "Übertragen" #define D_TRUE "wahr" -#define D_TYPE "Typ" +#define D_TYPE "Art" #define D_UNKNOWN "unbekannt" -#define D_UPGRADE "upgrade" -#define D_UPLOAD "upload" +#define D_UPGRADE "update" +#define D_UPLOAD "Upload" #define D_UPTIME "Laufzeit" #define D_USER "Benutzer" #define D_UTC_TIME "UTC" @@ -196,26 +196,26 @@ #define D_VERSION "Version" #define D_VOLTAGE "Spannung" #define D_WARMLIGHT "warm" -#define D_WEB "web" // Web log +#define D_WEB "Web" // Web log #define D_WEB_SERVER "Web-Server" #define D_WIFI "WLAN" #define D_WRONG "falsch" #define D_YESTERDAY "gestern" // settings.ino -#define D_SAVED_TO_FLASH_AT "in flash gespeichert am" -#define D_LOADED_FROM_FLASH_AT "geladen aus flash am" +#define D_SAVED_TO_FLASH_AT "in Flash gespeichert am" +#define D_LOADED_FROM_FLASH_AT "aus Flash geladen am" #define D_USE_DEFAULTS "Standard verwenden" #define D_ERASED_SECTOR "gelöschter Sektor" // sonoff.ino #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" -#define D_SERIAL_LOGGING_DISABLED "serielles logging deaktiviert" -#define D_SYSLOG_LOGGING_REENABLED "syslog logging reaktiviert" +#define D_SERIAL_LOGGING_DISABLED "Serielles logging deaktiviert" +#define D_SYSLOG_LOGGING_REENABLED "Syslog logging reaktiviert" -#define D_SET_BAUDRATE_TO "Baudrate eingestell auf" -#define D_RECEIVED_TOPIC "erhaltenes topic" +#define D_SET_BAUDRATE_TO "Baudrate eingestellt auf" +#define D_RECEIVED_TOPIC "empfangenes topic" #define D_DATA_SIZE "Datengröße" #define D_ANALOG_INPUT "Analog" @@ -229,16 +229,16 @@ // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Blocked Loop" -#define D_WPS_FAILED_WITH_STATUS "WPSconfig fehlgeschlagen mit Status" +#define D_WPS_FAILED_WITH_STATUS "WPS fehlgeschlagen mit Status" #define D_ACTIVE_FOR_1_MINUTE "aktiv für 1 Minute" #define D_FAILED_TO_START "Starten fehlgeschlagen" #define D_PATCH_ISSUE_2186 "Patch-Problem 2186" #define D_CONNECTING_TO_AP "verbinden mit AP" #define D_IN_MODE "in Modus" -#define D_CONNECT_FAILED_NO_IP_ADDRESS "Verbindung fehlgeschlagen da keine IP-Adresse erhalten wurde" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "Verbindung fehlgeschlagen da keine IP-Adresse zugeteilt wurde" #define D_CONNECT_FAILED_AP_NOT_REACHED "Verbindung fehlgeschlagen da AP nicht erreicht werden konnte" -#define D_CONNECT_FAILED_WRONG_PASSWORD "Verbindung fehlgeschlagen mit AP falschem Passwort" -#define D_CONNECT_FAILED_AP_TIMEOUT "Verbindung fehlgeschlagen mit AP timeout" +#define D_CONNECT_FAILED_WRONG_PASSWORD "Verbindung fehlgeschlagen mit AP weil das Passwort falsch ist" +#define D_CONNECT_FAILED_AP_TIMEOUT "Verbindung fehlgeschlagen da der AP nicht antwortet (timeout)" #define D_ATTEMPTING_CONNECTION "Verbindungsversuch..." #define D_CHECKING_CONNECTION "prüfe Verbindung..." #define D_QUERY_DONE "Suchanfrage abgeschlossen. MQTT-Services gefunden" @@ -247,7 +247,7 @@ #define D_FOUND_AT "gefunden bei" #define D_I2CSCAN_UNKNOWN_ERROR_AT "unbekannter Fehler bei" #define D_I2CSCAN_NO_DEVICES_FOUND "keine Geräte gefunden" -#define D_SYSLOG_HOST_NOT_FOUND "syslog host nicht gefunden" +#define D_SYSLOG_HOST_NOT_FOUND "Syslog Host nicht gefunden" // webserver.ino #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMUM-Firmware - bitte upgraden" @@ -262,11 +262,11 @@ #define D_RESTART_IN "Neustart in" #define D_SECONDS "Sekunden" -#define D_DEVICE_WILL_RESTART "Gerät wird in wenigen Sekunden neu starten" -#define D_BUTTON_TOGGLE "schalten" +#define D_DEVICE_WILL_RESTART "Gerät wird jetzt neu gestartet" +#define D_BUTTON_TOGGLE "An/Aus" #define D_CONFIGURATION "Einstellungen" #define D_INFORMATION "Informationen" -#define D_FIRMWARE_UPGRADE "Firmware-Upgrade" +#define D_FIRMWARE_UPGRADE "Firmware Update" #define D_CONSOLE "Konsole" #define D_CONFIRM_RESTART "Neustart bestätigen" @@ -282,16 +282,16 @@ #define D_RESTORE_CONFIGURATION "Konfiguration wiederherstellen" #define D_MAIN_MENU "Hauptmenü" -#define D_MODULE_PARAMETERS "Modul-Parameter" -#define D_MODULE_TYPE "Module-Typ" +#define D_MODULE_PARAMETERS "Modul Einstellungen" +#define D_MODULE_TYPE "Modul Typ" #define D_GPIO "GPIO" #define D_SERIAL_IN "serieller Eingang [serial in]" #define D_SERIAL_OUT "serieller Ausgang [serial out]" -#define D_WIFI_PARAMETERS "WLAN-Parameter" -#define D_SCAN_FOR_WIFI_NETWORKS "Suche nach WLAN-Netzwerke" -#define D_SCAN_DONE "scan abgeschlossen" -#define D_NO_NETWORKS_FOUND "keine Netzwerke gefunden" +#define D_WIFI_PARAMETERS "WLAN Einstellungen" +#define D_SCAN_FOR_WIFI_NETWORKS "WLAN-Netzwerk suchen und auswählen" +#define D_SCAN_DONE "Suche abgeschlossen" +#define D_NO_NETWORKS_FOUND "Keine Netzwerke gefunden" #define D_REFRESH_TO_SCAN_AGAIN "Aktualisieren um erneut zu suchen" #define D_DUPLICATE_ACCESSPOINT "AccessPoint duplizieren" #define D_SKIPPING_LOW_QUALITY "überspringe wegen niedriger Qualität" @@ -299,42 +299,42 @@ #define D_WEP "WEP" #define D_WPA_PSK "WPA PSK" #define D_WPA2_PSK "WPA2 PSK" -#define D_AP1_SSID "AP1 SSID" -#define D_AP1_PASSWORD "AP1 Password" -#define D_AP2_SSID "AP2 SSID" -#define D_AP2_PASSWORD "AP2 Password" +#define D_AP1_SSID "WLAN 1 - SSID" +#define D_AP1_PASSWORD "WLAN 1 - Passwort" +#define D_AP2_SSID "WLAN 2 - SSID" +#define D_AP2_PASSWORD "WLAN 2 - Passwort" -#define D_MQTT_PARAMETERS "MQTT-Parameter" +#define D_MQTT_PARAMETERS "MQTT Einstellungen" #define D_CLIENT "client" #define D_FULL_TOPIC "full topic" -#define D_LOGGING_PARAMETERS "Logging-Parameter" -#define D_LOG_LEVEL "log level" +#define D_LOGGING_PARAMETERS "Logging Einstellungen" +#define D_LOG_LEVEL "Log level" #define D_MORE_DEBUG "More debug" -#define D_SYSLOG_HOST "Syslog host" -#define D_SYSLOG_PORT "Syslog port" +#define D_SYSLOG_HOST "Syslog Host" +#define D_SYSLOG_PORT "Syslog Port" #define D_TELEMETRY_PERIOD "Telemetry period" -#define D_OTHER_PARAMETERS "andere Parameter" -#define D_WEB_ADMIN_PASSWORD "Web-Admin-Passwort" +#define D_OTHER_PARAMETERS "Sonstige Einstellungen" +#define D_WEB_ADMIN_PASSWORD "Passwort für Web Oberfläche" #define D_MQTT_ENABLE "MQTT aktivieren" #define D_FRIENDLY_NAME "Name [friendly name]" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" -#define D_SINGLE_DEVICE "einzelnes Gerät" +#define D_SINGLE_DEVICE "Einzelnes Gerät" #define D_MULTI_DEVICE "Mehrfachgerät" #define D_SAVE_CONFIGURATION "Konfiguration speichern" #define D_CONFIGURATION_SAVED "Konfiguration gespeichert" #define D_CONFIGURATION_RESET "Konfiguration zurücksetzen" -#define D_PROGRAM_VERSION "Programmversion" +#define D_PROGRAM_VERSION "Tasmota Version" #define D_BUILD_DATE_AND_TIME "Build-Datum & -Uhrzeit" #define D_CORE_AND_SDK_VERSION "Core-/SDK-Version" -#define D_FLASH_WRITE_COUNT "Flash-Schreibzähler" +#define D_FLASH_WRITE_COUNT "Anz. Flash Schreibzugriffe" #define D_MAC_ADDRESS "MAC-Adresse" -#define D_MQTT_HOST "MQTT host" -#define D_MQTT_PORT "MQTT port" +#define D_MQTT_HOST "MQTT Host" +#define D_MQTT_PORT "MQTT Port" #define D_MQTT_CLIENT "MQTT client" #define D_MQTT_USER "MQTT-Benutzer" #define D_MQTT_TOPIC "MQTT topic" @@ -344,26 +344,26 @@ #define D_MDNS_ADVERTISE "mDNS-Bekanntmachung" #define D_ESP_CHIP_ID "ESP Chip ID" #define D_FLASH_CHIP_ID "Flash Chip ID" -#define D_FLASH_CHIP_SIZE "Flash-Größe" -#define D_FREE_PROGRAM_SPACE "freier Programmspeicherplatz" +#define D_FLASH_CHIP_SIZE "Flash Größe" +#define D_FREE_PROGRAM_SPACE "Freier Programm Speicher" -#define D_UPGRADE_BY_WEBSERVER "Upgrade über Web-Server" +#define D_UPGRADE_BY_WEBSERVER "Update über Web-Server" #define D_OTA_URL "OTA-URL" -#define D_START_UPGRADE "Upgrade starten" -#define D_UPGRADE_BY_FILE_UPLOAD "Upgrade per Datei-Upload" +#define D_START_UPGRADE "Update starten" +#define D_UPGRADE_BY_FILE_UPLOAD "Update Datei hochladen" #define D_UPLOAD_STARTED "Upload gestartet" -#define D_UPGRADE_STARTED "Upgrade gestartet" +#define D_UPGRADE_STARTED "Update gestartet" #define D_UPLOAD_DONE "Upload abgeschlossen" #define D_UPLOAD_ERR_1 "keine Datei ausgewählt" #define D_UPLOAD_ERR_2 "ungenügend Speicherplatz" #define D_UPLOAD_ERR_3 "magic byte ist nicht 0xE9" -#define D_UPLOAD_ERR_4 "Flash-Größe des Programmes ist größer als die reale Flash-Größe" +#define D_UPLOAD_ERR_4 "Flash-Größe des Programmes ist größer als der reale Flashspeicher" #define D_UPLOAD_ERR_5 "Upload-buffer-Vergleich weicht ab" #define D_UPLOAD_ERR_6 "Upload fehlgeschlagen. Aktiviere logging 3" #define D_UPLOAD_ERR_7 "Upload abgebrochen" #define D_UPLOAD_ERR_8 "Datei ungültig" #define D_UPLOAD_ERR_9 "Datei zu groß" -#define D_UPLOAD_ERROR_CODE "Upload-Fehler-Code" +#define D_UPLOAD_ERROR_CODE "Upload Fehler Nummer" #define D_ENTER_COMMAND "Befehl eingeben" #define D_ENABLE_WEBLOG_FOR_RESPONSE "aktivere weblog 2 falls Reaktion erwartet" @@ -396,10 +396,10 @@ #define D_IRHVAC_MODE "MODUS" #define D_IRHVAC_FANSPEED "LÜFTERGESCHWINDIGKEIT" #define D_IRHVAC_TEMP "TEMPERATUR" -#define D_IRRECEIVED "IrReceived" +#define D_IRRECEIVED "IR empfangen" // xdrv_snfbridge.ino -#define D_RFRECEIVED "RfReceived" +#define D_RFRECEIVED "RF empfangen" #define D_START_LEARNING "starte Anlernen" #define D_SET_TO_DEFAULT "auf Standard zurücksetzen" #define D_DEFAULT_SENT "Standard gesendet" @@ -412,7 +412,7 @@ // xdrv_wemohue.ino #define D_MULTICAST_DISABLED "Multicast deaktiviert" #define D_MULTICAST_REJOINED "Multicast (wieder-)verbunden" -#define D_MULTICAST_JOIN_FAILED "Multicast-Verbinden fehlgeschlagen" +#define D_MULTICAST_JOIN_FAILED "Multicast Verbindung fehlgeschlagen" #define D_FAILED_TO_SEND_RESPONSE "Antwort senden fehlgeschlagen" #define D_WEMO "WeMo" @@ -464,14 +464,14 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" -#define D_SENSOR_IRSEND "IRsend" -#define D_SENSOR_SWITCH "Switch" // Suffix "1" -#define D_SENSOR_BUTTON "Button" // Suffix "1" -#define D_SENSOR_RELAY "Relay" // Suffix "1i" -#define D_SENSOR_LED "Led" // Suffix "1i" -#define D_SENSOR_PWM "PWM" // Suffix "1" +#define D_SENSOR_IRSEND "IRSend" +#define D_SENSOR_SWITCH "Switch " // Suffix "1" +#define D_SENSOR_BUTTON "Button " // Suffix "1" +#define D_SENSOR_RELAY "Relay " // Suffix "1i" +#define D_SENSOR_LED "LED " // Suffix "1i" +#define D_SENSOR_PWM "PWM " // Suffix "1" #define D_SENSOR_COUNTER "Counter" // Suffix "1" -#define D_SENSOR_IRRECV "IRrecv" +#define D_SENSOR_IRRECV "IRRecv" #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BLight" @@ -481,12 +481,12 @@ #define D_UNIT_HOUR "h" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" -#define D_UNIT_MICROSECOND "us" +#define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" #define D_UNIT_PRESSURE "hPa" -#define D_UNIT_SECOND "sec" +#define D_UNIT_SECOND "sek" #define D_UNIT_SECTORS "Sektoren" #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" From d34c51cda32b3408e26da467454071efc8b81e9b Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Tue, 28 Nov 2017 23:04:00 +0100 Subject: [PATCH 002/798] fix missing space --- sonoff/language/de-DE.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index c188df3aea86..29bd8586d27d 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -173,7 +173,7 @@ #define D_SUCCESSFUL "erfolgreich" #define D_SWITCH "Schalter" #define D_SYNC "sync" -#define D_SYS "sys" // Sys log +#define D_SYS "Sys " // Sys log #define D_TEMPERATURE "Temperatur" #define D_TEMPERATURE_UNIT "TempUnit" #define D_TIME "Zeit" From 95e6002b51722f8bf1a34ca9ed914cf77ddeebcf Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Wed, 29 Nov 2017 00:08:26 +0100 Subject: [PATCH 003/798] fix translate fix --- sonoff/language/de-DE.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 29bd8586d27d..a236a64725d5 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -177,7 +177,7 @@ #define D_TEMPERATURE "Temperatur" #define D_TEMPERATURE_UNIT "TempUnit" #define D_TIME "Zeit" -#define D_TO "bis" +#define D_TO "zu" #define D_TODAY "heute" #define D_TOGGLE "An/Aus" #define D_TOPIC "topic" @@ -694,4 +694,4 @@ #define D_CMND_MAXENERGY "MaxEnergy" #define D_CMND_MAXENERGYSTART "MaxEnergyStart" -#endif // _LANGUAGE_DE_DE_H_ \ No newline at end of file +#endif // _LANGUAGE_DE_DE_H_ From 12bbfd962b0529d5d33bec995a15a1a16c0aef9e Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Wed, 13 Dec 2017 23:39:54 +0100 Subject: [PATCH 004/798] Add WeMo GetBinaryState --- sonoff/xdrv_wemohue.ino | 93 ++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 24 deletions(-) diff --git a/sonoff/xdrv_wemohue.ino b/sonoff/xdrv_wemohue.ino index 9fbb3cd35a3f..ad339a382ee0 100755 --- a/sonoff/xdrv_wemohue.ino +++ b/sonoff/xdrv_wemohue.ino @@ -242,18 +242,18 @@ void PollUdp() const char WEMO_EVENTSERVICE_XML[] PROGMEM = "" - "" - "" - "SetBinaryState" - "" - "" - "" - "BinaryState" - "BinaryState" - "in" - "" - "" - "" + "" + "" + "SetBinaryState" + "" + "" + "" + "BinaryState" + "BinaryState" + "in" + "" + "" + "" "" "BinaryState" "Boolean" @@ -263,14 +263,43 @@ const char WEMO_EVENTSERVICE_XML[] PROGMEM = "level" "string" "0" - "" - "" + "" + "" + "" + "" + "GetBinaryState" + "" + "" + "" + "BinaryState" + "BinaryState" + "out" + "" + "" "" "\r\n" "\r\n"; +const char WEMO_SETSTATE_XML[] PROGMEM = +"" + "" + "" + "{x1" + "" + "" +"\r\n" +"\r\n"; +const char WEMO_GETSTATE_XML[] PROGMEM = +"" + "" + "" + "{x1" + "" + "" +"\r\n" +"\r\n"; const char WEMO_SETUP_XML[] PROGMEM = "" - "" + "" "" "urn:Belkin:device:controllee:1" "{x1" @@ -297,17 +326,34 @@ const char WEMO_SETUP_XML[] PROGMEM = void HandleUpnpEvent() { - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT)); String request = WebServer->arg(0); - if (request.indexOf(F("State>1 0) { -// ExecuteCommandPower(1, 1); - ExecuteCommandPower(devices_present, 1); + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT)); + //differentiate get and set state + if (request.indexOf(F("SetBinaryState")) > 0) { + String setstate_xml = FPSTR(WEMO_SETSTATE_XML); + if (request.indexOf(F("State>1 0) { + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " SET STATE 1")); + ExecuteCommandPower(devices_present, 1); + setstate_xml.replace("{x1", "1"); + } + else if (request.indexOf(F("State>0 0) { + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " SET STATE 0")); + ExecuteCommandPower(devices_present, 0); + setstate_xml.replace("{x1", "0"); + } + WebServer->send(200, FPSTR(HDR_CTYPE_XML), setstate_xml.c_str()); } - if (request.indexOf(F("State>0 0) { -// ExecuteCommandPower(1, 0); - ExecuteCommandPower(devices_present, 0); + else if(request.indexOf(F("GetBinaryState")) > 0){ + String getstate_xml = FPSTR(WEMO_GETSTATE_XML); + char svalue[80]; + /** TODO: can only return one device status for now in response, + * check how to response multi device status to echo + */ + snprintf_P(svalue, sizeof(svalue), PSTR("%d"), bitRead(power, 1 -1)); + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " GET STATE")); + getstate_xml.replace("{x1", svalue); + WebServer->send(200, FPSTR(HDR_CTYPE_XML), getstate_xml.c_str()); } - WebServer->send(200, FPSTR(HDR_CTYPE_PLAIN), ""); } void HandleUpnpService() @@ -720,4 +766,3 @@ void HandleHueApi(String *path) } #endif // USE_WEBSERVER #endif // USE_EMULATION - From f2362af36f51ccfadbbe971f12dc1983215a51e6 Mon Sep 17 00:00:00 2001 From: Nils Sdun Date: Fri, 15 Dec 2017 13:13:53 +0100 Subject: [PATCH 005/798] save some bytes, merge set and get to one pattern --- sonoff/xdrv_wemohue.ino | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/sonoff/xdrv_wemohue.ino b/sonoff/xdrv_wemohue.ino index ad339a382ee0..f8dfb7cc8463 100755 --- a/sonoff/xdrv_wemohue.ino +++ b/sonoff/xdrv_wemohue.ino @@ -279,21 +279,12 @@ const char WEMO_EVENTSERVICE_XML[] PROGMEM = "" "\r\n" "\r\n"; -const char WEMO_SETSTATE_XML[] PROGMEM = +const char WEMO_RESPONSE_STATE_XML[] PROGMEM = "" "" - "" - "{x1" - "" - "" -"\r\n" -"\r\n"; -const char WEMO_GETSTATE_XML[] PROGMEM = -"" - "" - "" - "{x1" - "" + "" + "{x2" + "" "" "\r\n" "\r\n"; @@ -326,33 +317,33 @@ const char WEMO_SETUP_XML[] PROGMEM = void HandleUpnpEvent() { - String request = WebServer->arg(0); AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT)); + String request = WebServer->arg(0); + String state_xml = FPSTR(WEMO_RESPONSE_STATE_XML); //differentiate get and set state if (request.indexOf(F("SetBinaryState")) > 0) { - String setstate_xml = FPSTR(WEMO_SETSTATE_XML); if (request.indexOf(F("State>1 0) { AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " SET STATE 1")); ExecuteCommandPower(devices_present, 1); - setstate_xml.replace("{x1", "1"); + state_xml.replace("{x1", "Set"); + state_xml.replace("{x2", "1"); } else if (request.indexOf(F("State>0 0) { AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " SET STATE 0")); ExecuteCommandPower(devices_present, 0); - setstate_xml.replace("{x1", "0"); + + state_xml.replace("{x1", "Set"); + state_xml.replace("{x2", "0"); } - WebServer->send(200, FPSTR(HDR_CTYPE_XML), setstate_xml.c_str()); + WebServer->send(200, FPSTR(HDR_CTYPE_XML), state_xml.c_str()); } else if(request.indexOf(F("GetBinaryState")) > 0){ - String getstate_xml = FPSTR(WEMO_GETSTATE_XML); char svalue[80]; - /** TODO: can only return one device status for now in response, - * check how to response multi device status to echo - */ snprintf_P(svalue, sizeof(svalue), PSTR("%d"), bitRead(power, 1 -1)); AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_WEMO_BASIC_EVENT " GET STATE")); - getstate_xml.replace("{x1", svalue); - WebServer->send(200, FPSTR(HDR_CTYPE_XML), getstate_xml.c_str()); + state_xml.replace("{x1", "Get"); + state_xml.replace("{x2", svalue); + WebServer->send(200, FPSTR(HDR_CTYPE_XML), state_xml.c_str()); } } From 25e3918ce3c0cc74f21d1dcd0ab4a7ac48e80674 Mon Sep 17 00:00:00 2001 From: Nils Sdun Date: Fri, 15 Dec 2017 13:31:38 +0100 Subject: [PATCH 006/798] ignore lib/readme --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5dac9f52ff5d..f5681567e352 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .piolibdeps .clang_complete .gcc-flags.json +lib/readme.txt From a51bb39a5d18c0e5e35cea75d69322cc7e2e0701 Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Thu, 12 Apr 2018 22:56:08 +0200 Subject: [PATCH 007/798] igno --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 01bb48119e05..3ac33def4a25 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ .clang_complete .gcc-flags.json lib/readme.txt +sonoff/user_config_override.h +sonoff/user_config_my.h From 9c04666a17e11dd4bf8c80f289163e97d785e913 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:16:51 +0200 Subject: [PATCH 008/798] Add SDS0X1 RX and TX gpio pins to sonoff_template.h --- sonoff/sonoff_template.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f97c3220398f..315ce43165c2 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -88,7 +88,8 @@ enum UserSelectablePins { GPIO_SPI_DC, // SPI Data Direction GPIO_BACKLIGHT, // Display backlight control GPIO_PMS5003, // Plantower PMS5003 Serial interface - GPIO_SDS0X1, // Nova Fitness SDS011 Serial interface + GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface + GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface GPIO_SBR_TX, // Serial Bridge Serial interface GPIO_SBR_RX, // Serial Bridge Serial interface GPIO_SR04_TRIG, // SR04 Trigger pin @@ -138,7 +139,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|" D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" D_SENSOR_BACKLIGHT "|" - D_SENSOR_PMS5003 "|" D_SENSOR_SDS0X1 "|" + D_SENSOR_PMS5003 "|" + D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" @@ -912,4 +914,4 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { */ -#endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file +#endif // _SONOFF_TEMPLATE_H_ From 91b07f2943c46b1cfee5d3003418d4c74a984053 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:19:53 +0200 Subject: [PATCH 009/798] Add SDS0X1 gpio pins to support.ino --- sonoff/support.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 2bc80c5eb75b..6449912e8d7a 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -527,7 +527,8 @@ boolean GetUsedInModule(byte val, uint8_t *arr) if (GPIO_PMS5003 == val) { return true; } #endif #ifndef USE_NOVA_SDS - if (GPIO_SDS0X1 == val) { return true; } + if (GPIO_SDS0X1_TX == val) { return true; } + if (GPIO_SDS0X1_RX == val) { return true; } #endif #ifndef USE_SERIAL_BRIDGE if (GPIO_SBR_TX == val) { return true; } From c41a092c7d45b0be5514e577a111a1a332b1a75a Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:23:25 +0200 Subject: [PATCH 010/798] SDS0X1 RX TX pin handling in NovaSdsInit --- sonoff/xsns_20_novasds.ino | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index dc5f0ab661a4..610e0742723e 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -83,12 +83,14 @@ void NovaSdsSecond() // Every second void NovaSdsInit() { novasds_type = 0; - if (pin[GPIO_SDS0X1] < 99) { - NovaSdsSerial = new TasmotaSerial(pin[GPIO_SDS0X1], -1, 1); + if (pin[GPIO_SDS0X1_RX] < 99 && pin[GPIO_SDS0X1_TX] < 99) { + NovaSdsSerial = new TasmotaSerial(pin[GPIO_SDS0X1_RX], pin[GPIO_SDS0X1_TX], 1); + if (NovaSdsSerial->begin(9600)) { - if (NovaSdsSerial->hardwareSerial()) { ClaimSerial(); } + if (NovaSdsSerial->hardwareSerial()) ClaimSerial(); novasds_type = 1; } + } } @@ -154,4 +156,4 @@ boolean Xsns20(byte function) return result; } -#endif // USE_NOVA_SDS \ No newline at end of file +#endif // USE_NOVA_SDS From 7cefc9b76efa762772fbac412df992174cb42b07 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:24:53 +0200 Subject: [PATCH 011/798] SDS0X1 add start and stop functions to idle the sensor --- sonoff/xsns_20_novasds.ino | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 610e0742723e..c54297911a68 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -94,6 +94,26 @@ void NovaSdsInit() } } +void NovaSdsStart() +{ + AddLog_P(LOG_LEVEL_DEBUG, "SDS: start"); + const uint8_t novasds_start_cmd[] = {0xAA, 0xB4, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xAB}; + NovaSdsSerial->write(novasds_start_cmd, sizeof(novasds_start_cmd)); + NovaSdsSerial->flush(); +} + +void NovaSdsStop() +{ + AddLog_P(LOG_LEVEL_DEBUG, "SDS: stop"); + const uint8_t novasds_stop_cmd[] = {0xAA, 0xB4, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xAB}; + NovaSdsSerial->write(novasds_stop_cmd, sizeof(novasds_stop_cmd)); + NovaSdsSerial->flush(); + // drain any old data + while (NovaSdsSerial->available()) { + NovaSdsSerial->read(); + } +} + #ifdef USE_WEBSERVER const char HTTP_SDS0X1_SNS[] PROGMEM = "%s" "{s}SDS0X1 " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%s " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" From 4a588581d145837dfd006e06ca932ca3dadd0e23 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:28:31 +0200 Subject: [PATCH 012/798] Allow NovaSdsReadData to read without publishing data --- sonoff/xsns_20_novasds.ino | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index c54297911a68..03b4965f859f 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -37,7 +37,8 @@ struct sds011data { uint16_t pm25; } novasds_data; -bool NovaSdsReadData() + +bool NovaSdsReadData(bool publish) { if (! NovaSdsSerial->available()) return false; @@ -51,7 +52,9 @@ bool NovaSdsReadData() NovaSdsSerial->flush(); AddLogSerial(LOG_LEVEL_DEBUG_MORE, d, 8); - + if (!publish){ + return false; + } if (d[7] == ((d[1] + d[2] + d[3] + d[4] + d[5] + d[6]) & 0xFF)) { novasds_data.pm25 = (d[1] + 256 * d[2]); novasds_data.pm100 = (d[3] + 256 * d[4]); @@ -59,9 +62,6 @@ bool NovaSdsReadData() AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDS: " D_CHECKSUM_FAILURE)); return false; } - - novasds_valid = 10; - return true; } From 87e3dcddb9fde27ed5f057dbe8308a77829c0cd8 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:29:53 +0200 Subject: [PATCH 013/798] SDS0X1 take one stable reading every 3 minutes --- sonoff/xsns_20_novasds.ino | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 03b4965f859f..a9dd180b62a8 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -31,6 +31,10 @@ TasmotaSerial *NovaSdsSerial; uint8_t novasds_type = 1; uint8_t novasds_valid = 0; +uint8_t novasds_running = 1; +uint8_t novasds_read_tick = 30; +uint8_t novasds_wakup_tick = 179; +uint8_t novasds_ticker = 0; struct sds011data { uint16_t pm100; @@ -69,12 +73,35 @@ bool NovaSdsReadData(bool publish) void NovaSdsSecond() // Every second { - if (NovaSdsReadData()) { - novasds_valid = 10; - } else { - if (novasds_valid) { - novasds_valid--; + if (novasds_ticker < novasds_read_tick) { + // wake up the sensor and wait read ticks to stabalize the sensor + if (!novasds_running) { + NovaSdsStart(); + novasds_running = 1; + } + + // drain the serial without publishing data + NovaSdsReadData(false); + novasds_ticker++; + + } else if (novasds_ticker == novasds_read_tick) { + + // try to take a single stable reading and sleep the sensor + if (NovaSdsReadData(true)) { + novasds_valid = 1; + NovaSdsStop(); + novasds_running = 0; + novasds_ticker++; + } else { + novasds_valid = 0; } + + } else if (novasds_ticker >= novasds_wakup_tick) { + // reset the counter + novasds_ticker = 0; + } else { + // sensor is sleeping keep waiting + novasds_ticker++; } } From f11386cfe7da93bedac801747fb093d8498177a8 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:30:40 +0200 Subject: [PATCH 014/798] Update language files for SDS0X1 RX and TX --- sonoff/language/bg-BG.h | 3 ++- sonoff/language/cs-CZ.h | 3 ++- sonoff/language/de-DE.h | 3 ++- sonoff/language/el-GR.h | 3 ++- sonoff/language/en-GB.h | 3 ++- sonoff/language/es-AR.h | 3 ++- sonoff/language/fr-FR.h | 3 ++- sonoff/language/hu-HU.h | 3 ++- sonoff/language/it-IT.h | 3 ++- sonoff/language/nl-NL.h | 3 ++- sonoff/language/pl-PL.h | 3 ++- sonoff/language/pt-BR.h | 3 ++- sonoff/language/pt-PT.h | 3 ++- sonoff/language/ru-RU.h | 3 ++- sonoff/language/zh-CN.h | 3 ++- sonoff/language/zh-TW.h | 3 ++- 16 files changed, 32 insertions(+), 16 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 55482d55c93c..9981f1902d75 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "Подсветка" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 9f939534a169..6ee0bea8d5e1 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 7d2e7285d9e4..c2fdd0640024 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 97eefcd7bb3b..5db01909b39e 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 9eb8c9d4a8be..4af5f998e08f 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index aff7b2665a29..69737de8c80c 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index f37d3cfae36f..a862c54a0744 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "RétroÉcl" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 4ebeffbf6075..879204ace0d4 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "Háttérvil" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 16c11645be14..54868fd2dc27 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 262daee7b4c5..f9a16a720c70 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 683d43cb31d9..d3e753946270 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 02bdec2e49c1..6db472624cca 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "Luz de fundo" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 4cf9e0da3892..398e32a58a37 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "Luz negra" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 3336484e9d64..5ea49a669d8a 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 1c3ee0bb72bf..c97929c3290d 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index e8505010f818..9f79ddb8932e 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -456,7 +456,8 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" From ff132238077ffd04ac432dcfb0f65c6c49b32eb6 Mon Sep 17 00:00:00 2001 From: Johann Weging Date: Sun, 27 May 2018 14:34:47 +0200 Subject: [PATCH 015/798] SDS0X1 minor code cleanup --- sonoff/xsns_20_novasds.ino | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index a9dd180b62a8..851326f3fd35 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -114,7 +114,9 @@ void NovaSdsInit() NovaSdsSerial = new TasmotaSerial(pin[GPIO_SDS0X1_RX], pin[GPIO_SDS0X1_TX], 1); if (NovaSdsSerial->begin(9600)) { - if (NovaSdsSerial->hardwareSerial()) ClaimSerial(); + if (NovaSdsSerial->hardwareSerial()) { + ClaimSerial(); + } novasds_type = 1; } @@ -137,8 +139,8 @@ void NovaSdsStop() NovaSdsSerial->flush(); // drain any old data while (NovaSdsSerial->available()) { - NovaSdsSerial->read(); - } + NovaSdsSerial->read(); + } } #ifdef USE_WEBSERVER From 5482ac9bfc5e756a09dea94864a8709f50638396 Mon Sep 17 00:00:00 2001 From: reloxx13 Date: Mon, 27 Aug 2018 22:56:26 +0200 Subject: [PATCH 016/798] ignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index b6460347bd88..028a76667bf7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ build ## Visual Studio Code specific ###### .vscode +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json From 2e8864effd32578cb719c066692f44cca51afcb9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 31 Aug 2018 16:53:40 +0200 Subject: [PATCH 017/798] 6.2.0 - Released --- README.md | 2 +- sonoff/_changelog.ino | 161 ++++++++++++++-------------------------- sonoff/sonoff_version.h | 2 +- sonoff/user_config.h | 2 +- 4 files changed, 60 insertions(+), 107 deletions(-) diff --git a/README.md b/README.md index f8f9c92ac150..556367edeb15 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute! [![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota) ### Development -[![Dev Version](https://img.shields.io/badge/development%20version-6.1.1.13-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-6.2.0.x-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/tasmota/) [![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 6fc8a9fb59db..b95a6ce0edce 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,114 +1,67 @@ -/* 6.1.1.14 20180830 - * Add boot loop detection and perform some solutions - * Add features to and provide more stable display drivers - * - * 6.1.1.13 20180828 - * Fix 6.1.1.12 regression of Mem and Var default handling (#3618) - * Optimizations - * Change define USE_ALL_SENSORS to USE_SENSORS as it doesn't contain all sensors due to duplicate I2C addresses - * - * 6.1.1.12 20180827 - * Add commands ButtonDebounce 40..1000 and SwitchDebounce 40..1000 to have user control over debounce timing. Default is 50mS (#3594) - * Add rule variables %sunrise%, %sunset%, %uptime% and %time% (#3608) - * Fix handling use of default names when using names starting with shortcut character (#3392, #3600) - * Fix Sonoff Bridge data reception when using Portisch EFM8 firmware and in data buffer length (#3605) - * Add optional MQTT_TELE_RETAIN to Energy Margins message (#3612, 3614) - * Add Individual HSBColorX commands (#3430, #3615) - * Add RuleX debug options 8,9,10 (StopOnError) to control RuleX execution status after an exception restart (#3607) - * - * 6.1.1.11 20180826 - * Change scheduler phase 1/3 - Fixed when sleep is enabled: Uptime, Delay, PulseTime and TelePeriod (#3581) - * Change scheduler phase 2/3 - Fixed when sleep is enabled: Blinktime (#3581) - * Change scheduler phase 3/3 - Some sensor update timings: AdcEvery 200 -> 250, Senseair 300 -> 250, SDM120 300 -> 250, SDM630 300 -> 250 - * - * 6.1.1.10 20180827 +/* 6.2.0 20180901 + * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) * Disable wifi sleep for both Esp8266/Arduino core 2.4.1 and 2.4.2 to solve device freeze caused by Espressif SDK bug (#3554) - * Rewrite GPIO options ButtonXn, SwitchXn and CounterXn to select INPUT mode instead of INPUT_PULLUP - * Add command Publish2 for publishing retained MQTT messages (#3593) - * - * 6.1.1.9 20180825 - * Allow user override of define MAX_RULE_TIMERS (#3561) - * Allow user override of define MAX_RULE_VARS - * Add GPIO options ButtonXn, SwitchXn and CounterXn to select INPUT mode instead of INPUT_PULLUP (#2525) - * Fix OtaMagic when file path contains a dash (-) (#3563) - * Fix EnergyReset3 (#2723) - * Change command sleep from restart after change to not restart after change (#3554) - * Add all ruletimer values to command RuleTimer result message (#3571) - * Add RGB support for Domoticz (#3547) - * - * 6.1.1.8 20180825 - * Fix MQTT reconnection detection when using TasmotaMqtt library (#3558) - * Add build time setting of ButtonTopic and SwitchTopic (#3414) - * Add display features and dynamic buffering - * - * 6.1.1.7 20180818 - * Add initial display support for Lcd, Oled, Matrix, Tft and e-paper - Need more docs - * Fix SDM120 reporting wrong negative values to Domoticz (#3521) - * Fix iFan02 power on state (#3412, #3530) - * Add display define USE_DISPLAY_MODES1TO5 to select display modes 1 to 5 - * Add command DisplayRotate 0..3 to select persistent display rotation - * - * 6.1.1.6 20180813 - * Add modulo option to rules like rule1 on Time#Minute|5 do backlog power on;delay 200;power off endon (#3466) - * - * 6.1.1.5 20180812 - * Fix some Pow R2 and S31 checksum errors using optimized re-sync - * - * 6.1.1.4 20180812 - * Change version representation from 1.1.1a to 1.1.1.1 for better change reference - * - * 6.1.1c 20180720 - * Add iFan02 Fanspeed + and Fanspeed - command options (#3415) - * Fix some Pow R2 and S31 checksum errors (#3425) + * Change DS18B20 driver to provide better instant results + * Change some sensor drivers to provide instant results + * Change define USE_ALL_SENSORS to USE_SENSORS as it doesn't contain all sensors due to duplicate I2C addresses + * Change some sensor update timings: AdcEvery 200 -> 250, Senseair 300 -> 250, SDM120 300 -> 250, SDM630 300 -> 250 + * Change default Wifi config option from WPS to Wifi Manager if WPS is disabled or Wifi Smartconfig if webserver is disabled or Wifi Serial input if Smartconfig is disabled + * Change SHT1x driver to provide better instant results and fix I2C interference + * Change DHT driver to provide better instant results and add decimals to DHT11 (#3164) + * Change DS18x20 driver to provide better instant results (#3169) * Change CounterType 1 from milliseconds to microseconds (#3437) - * Add output support on MCP23008/MCP23017 (#3436) - * Fix LM75AD I2C sensor detection (#3408) - * Add message when JavaScript is not enabled in webbrowser (#3388) - * Fix sonoff-minimal from using default settings - * Add option + to command Rule to concatenate new rule with existing rules (#3365) - * Add initial support for sensor MPU6050 (#3352) - * Add command SerialSend4 to send binary serial data (#3345) - * Add rule triggers Wifi#Connected and Wifi#Disconnected (#3359) - * Fix unsecure main webpage update - * Add Turkish language file (#3332) - * Fix command TimeDst/TimeStd invalid JSON (#3322) - * Fix possible WDT due to long MQTT publish handling (#3313) - * Fix CCS811 temperature and humidity compensation - * Add support for CCS811 sensor (#3309) - * Add command Timers 0/1 to globally disable or enable armed timers (#3270) - * - * 6.1.1b 20180715 - * Add support for MPR121 controller in input mode for touch buttons (#3142) - * Add support for MCP230xx for general purpose input expansion and command Sensor29 (#3188) - * Fix command Scale buffer overflow (#3236) - * Fix rules once regression from v6.1.0 (#3198, #3226) - * Add default Wifi Configuration tool as define WIFI_CONFIG_NO_SSID in user_config.h if no SSID is configured (#3224) - * Add user selection of Wifi Smartconfig as define USE_SMARTCONFIG in user_config.h - * Add user selection of WPS as define USE_WPS in user_config.h in preparation for core v2.4.2 (#3221) - * Change default Wifi config option from WPS to Wifi Manager if WPS is disabled - * or Wifi Smartconfig if webserver is disabled - * or Wifi Serial input if Smartconfig is disabled + * Change scheduler for better sleep support using Uptime, Delay, PulseTime and TelePeriod, Blinktime (#3581) + * Remove unused functionality from Sonoff-minimal to save space * Remove WPS and SmartConfig from sonoff-minimal saving 56k code space - * - * 6.1.1a 20180714 - * Fix TM1638 compile error (#3212) - * Add TM1638 switch support (#2226) + * Remove TSL2561 debug message and update library (#2415) + * Remove forced restart when sleep command is executed (#3554) * Fix invalid response using more than 4 switches and domoticz - * Update sensor drivers to provide instant results - * Add read sensor retry to DS18B20, DS18x20, DHT, SHT1X and HTU21 - * Change SHT1x driver to provide better instant results + * Fix sonoff-minimal not using default settings + * Fix unsecure main webpage update * Fix DHT driver mixing values for different sensors (#1797) - * Change DHT driver to provide better instant results and add decimals to DHT11 (#3164) - * Change DS18x20 driver to provide better instant results (#3169) - * Change DS18B20 driver to provide better instant results - * Remove TSL2561 debug message and update library (#2415) - * Change SHT1x sensor initialization from pre-teleperiod to once during restart to fix I2C interference + * Fix EnergyReset3 regression not clearing total energy (#2723) + * Fix rules once regression from v6.1.0 (#3198, #3226) + * Fix command Scale buffer overflow (#3236) + * Fix possible WDT due to long MQTT publish handling (#3313) + * Fix command TimeDst/TimeStd invalid JSON (#3322) + * Fix handling of default names when using names starting with shortcut character ",0,1 or 2 (#3392, #3600, #3618) + * Fix LM75AD I2C sensor detection (#3408) + * Fix iFan02 power on state (#3412, #3530) + * Fix some Pow R2 and S31 checksum errors using optimized re-sync (#3425) + * Fix SDM120 reporting wrong negative values to Domoticz (#3521) + * Fix MQTT reconnection detection when using TasmotaMqtt library (#3558) + * Fix OtaMagic when file path contains a dash (-) (#3563) + * Fix Sonoff Bridge data reception when using Portisch EFM8 firmware using in data buffer length (#3605) + * Add read sensor retry to DS18B20, DS18x20, DHT, SHT1X and HTU21 + * Add user selection of Wifi Smartconfig as define USE_SMARTCONFIG in user_config.h + * Add boot loop detection and perform some solutions * Add wifi and mqtt status led blinkyblinky to be disabled by SetOption31 1. Does not work when LedPower is On (deliberate) (#871, #2230, #3114, #3155) - * Add experimental (untested) TM1638 switch support (#2226) + * Add support for TM1638 switch (#2226) + * Add GPIO options ButtonXn, SwitchXn and CounterXn to select INPUT mode instead of INPUT_PULLUP (#2525) * Add support for APDS9960 proximity sensor (#3051) - * Add heap and stack debug information - * Add debug facilities using optional xdrv_99_debug.ino to enable in user_config.h - * Remove not needed functionality from Sonoff-minimal to save space + * Add support for MPR121 controller in input mode for touch buttons (#3142) + * Add support for MCP230xx for general purpose input expansion and command Sensor29 (#3188) + * Add default Wifi Configuration tool as define WIFI_CONFIG_NO_SSID in user_config.h if no SSID is configured (#3224) + * Add command Timers 0/1 to globally disable or enable armed timers (#3270) + * Add support for CCS811 sensor (#3309) + * Add Turkish language file (#3332) + * Add command SerialSend4 to send binary serial data (#3345) + * Add initial support for sensor MPU6050 (#3352) + * Add rule triggers Wifi#Connected and Wifi#Disconnected (#3359) + * Add option + to command Rule to concatenate new rule with existing rules (#3365) + * Add message when JavaScript is not enabled in webbrowser (#3388) + * Add build time setting of ButtonTopic and SwitchTopic (#3414) + * Add iFan02 Fanspeed + and Fanspeed - command options (#3415) + * Add Individual HSBColorX commands (#3430, #3615) + * Add output support on MCP23008/MCP23017 (#3436) + * Add modulo option to rules like rule1 on Time#Minute|5 do backlog power on;delay 200;power off endon (#3466) + * Add RGB support for Domoticz (#3547) + * Add all ruletimer values to command RuleTimer result message (#3571) + * Add command Publish2 for publishing retained MQTT messages (#3593) + * Add commands ButtonDebounce 40..1000 and SwitchDebounce 40..1000 to have user control over debounce timing. Default is 50mS (#3594) + * Add RuleX debug options 8,9,10 (StopOnError) to control RuleX execution status after an exception restart (#3607) + * Add rule variables %sunrise%, %sunset%, %uptime% and %time% (#3608) + * Add optional MQTT_TELE_RETAIN to Energy Margins message (#3612, 3614) * * 6.1.1 20180714 * Revert wifi changes (#3177) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 72634caa1c6c..1bf322288723 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0601010E +#define VERSION 0x06020000 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 0471ff7682c9..a8457ff97485 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -318,7 +318,7 @@ #endif // USE_I2C // -- SPI sensors --------------------------------- -#define USE_SPI // SPI using library TasmotaTFT +//#define USE_SPI // SPI using library TasmotaTFT #ifdef USE_SPI #ifndef USE_DISPLAY From 17496d002e365138e96f0bbd01c7a5d95b4971fc Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sat, 1 Sep 2018 17:46:45 +0200 Subject: [PATCH 018/798] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 556367edeb15..3ab25ac179ac 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute! See [RELEASENOTES.md](https://github.com/arendst/Sonoff-Tasmota/blob/development/RELEASENOTES.md) for release information and [sonoff/_changelog.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_changelog.ino) for detailed change information. -The compiled development versions from current codebase are built around 6AM GMT+2 everyday and posted at http://thehackbox.org/tasmota/ (this web address can be used for OTA too). Remember that these are based on the current development codebase and it is not recommended to flash devices in hard to reach places with this firmware. +The development codebase is checked hourly for changes and if new commits have been merged and compile successfuly they will be posted at http://thehackbox.org/tasmota/ (this web address can be used for OTA too). It is important to note that these are based on the current development codebase and it is not recommended to flash it to devices used in production or which are hard to reach in the event that you need to manually flash the device if OTA failed. The last compiled commit number is also posted on the same page along with the current build status (if a firmware rebuild is in progress). ### Disclaimer :warning: **DANGER OF ELECTROCUTION** :warning: From e5186e602e247117fab0c5109f8ee11409605157 Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 1 Sep 2018 19:57:10 +0200 Subject: [PATCH 019/798] Fix ccs811 begin result check --- sonoff/xsns_31_ccs811.ino | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sonoff/xsns_31_ccs811.ino b/sonoff/xsns_31_ccs811.ino index 482572cdb22c..8aba4d04f413 100644 --- a/sonoff/xsns_31_ccs811.ino +++ b/sonoff/xsns_31_ccs811.ino @@ -47,13 +47,12 @@ void CCS811Update() // Perform every n second tcnt = 0; CCS811_ready = 0; if (!CCS811_type) { - sint8_t res = ccs.begin(CCS811_ADDRESS); - if (!res) { + if (ccs.begin(CCS811_ADDRESS)) { // ccs.begin returns true in case of success CCS811_type = 1; snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "CCS811", 0x5A); AddLog(LOG_LEVEL_DEBUG); } else { - //snprintf_P(log_data, sizeof(log_data), "CCS811 init failed: %d",res); + //snprintf_P(log_data, sizeof(log_data), "CCS811 init failed"); //AddLog(LOG_LEVEL_DEBUG); } } else { From 6a57882829fe12a0f0c26f4d70389a63197f4002 Mon Sep 17 00:00:00 2001 From: Alexey Kubrinsky Date: Sun, 2 Sep 2018 00:47:35 +0200 Subject: [PATCH 020/798] Revert "Fix ccs811 begin result check" --- sonoff/xsns_31_ccs811.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sonoff/xsns_31_ccs811.ino b/sonoff/xsns_31_ccs811.ino index 8aba4d04f413..482572cdb22c 100644 --- a/sonoff/xsns_31_ccs811.ino +++ b/sonoff/xsns_31_ccs811.ino @@ -47,12 +47,13 @@ void CCS811Update() // Perform every n second tcnt = 0; CCS811_ready = 0; if (!CCS811_type) { - if (ccs.begin(CCS811_ADDRESS)) { // ccs.begin returns true in case of success + sint8_t res = ccs.begin(CCS811_ADDRESS); + if (!res) { CCS811_type = 1; snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "CCS811", 0x5A); AddLog(LOG_LEVEL_DEBUG); } else { - //snprintf_P(log_data, sizeof(log_data), "CCS811 init failed"); + //snprintf_P(log_data, sizeof(log_data), "CCS811 init failed: %d",res); //AddLog(LOG_LEVEL_DEBUG); } } else { From 48b5f9117ab00d86cb4fac5cc4b4ee0d9621bf96 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 11:11:49 +0200 Subject: [PATCH 021/798] 6.2.0.1 - Fix StateText ambiguity Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b95a6ce0edce..8b5af65ce5cf 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.0 20180901 +/* 6.2.0.1 20180902 + * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) + * + * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) * Disable wifi sleep for both Esp8266/Arduino core 2.4.1 and 2.4.2 to solve device freeze caused by Espressif SDK bug (#3554) * Change DS18B20 driver to provide better instant results diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 1bf322288723..c3ea9381ef66 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020000 +#define VERSION 0x06020001 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index 8cc064fe5d75..eed4146c2702 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -561,13 +561,13 @@ int GetStateNumber(char *state_text) char command[CMDSZ]; int state_number = -1; - if ((GetCommandCode(command, sizeof(command), state_text, kOptionOff) >= 0) || !strcasecmp(state_text, Settings.state_text[0])) { + if (GetCommandCode(command, sizeof(command), state_text, kOptionOff) >= 0) { state_number = 0; } - else if ((GetCommandCode(command, sizeof(command), state_text, kOptionOn) >= 0) || !strcasecmp(state_text, Settings.state_text[1])) { + else if (GetCommandCode(command, sizeof(command), state_text, kOptionOn) >= 0) { state_number = 1; } - else if ((GetCommandCode(command, sizeof(command), state_text, kOptionToggle) >= 0) || !strcasecmp(state_text, Settings.state_text[2])) { + else if (GetCommandCode(command, sizeof(command), state_text, kOptionToggle) >= 0) { state_number = 2; } else if (GetCommandCode(command, sizeof(command), state_text, kOptionBlink) >= 0) { From c6a14c5fe72ead31c3bc869e6cf93ea2e8331121 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 11:52:24 +0200 Subject: [PATCH 022/798] Fix possible exception Fix possible exception due to buffer overflow (#3659) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.ino | 2 +- sonoff/support.ino | 4 ++-- sonoff/xdrv_02_webserver.ino | 4 ++-- sonoff/xdsp_01_lcd.ino | 2 +- sonoff/xsns_01_counter.ino | 2 +- sonoff/xsns_05_ds18x20_legacy.ino | 2 +- sonoff/xsns_12_ads1115.ino | 2 +- sonoff/xsns_12_ads1115_i2cdev.ino | 2 +- 9 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 8b5af65ce5cf..c3d1e4c6a0d6 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.2.0.1 20180902 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) + * Fix possible exception due to buffer overflow (#3659) * * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 254f881842f4..93ffbda01068 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -442,7 +442,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) ShowFreeMem(PSTR("MqttDataHandler")); - strncpy(topicBuf, topic, sizeof(topicBuf)); + strlcpy(topicBuf, topic, sizeof(topicBuf)); for (i = 0; i < data_len; i++) { if (!isspace(data[i])) break; } diff --git a/sonoff/support.ino b/sonoff/support.ino index eed4146c2702..8aaeabf8825b 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -143,7 +143,7 @@ char* subStr(char* dest, char* str, const char *delim, int index) int i; // Since strtok consumes the first arg, make a copy - strncpy(dest, str, strlen(str)); + strlcpy(dest, str, strlen(str)); for (i = 1, act = dest; i <= index; i++, act = NULL) { sub = strtok_r(act, delim, &ptr); if (sub == NULL) break; @@ -157,7 +157,7 @@ double CharToDouble(char *str) // simple ascii to double, because atof or strtod are too large char strbuf[24]; - strcpy(strbuf, str); + strlcpy(strbuf, str, sizeof(strbuf)); char *pt; double left = atoi(strbuf); double right = 0; diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index c919c8f43bfa..91c01eeae546 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -372,8 +372,8 @@ long ajax_token = 1; static void WebGetArg(const char* arg, char* out, size_t max) { String s = WebServer->arg(arg); - strncpy(out, s.c_str(), max); - out[max-1] = '\0'; // Ensure terminating NUL + strlcpy(out, s.c_str(), max); +// out[max-1] = '\0'; // Ensure terminating NUL } void ShowWebSource(int source) diff --git a/sonoff/xdsp_01_lcd.ino b/sonoff/xdsp_01_lcd.ino index 9d4a5d396b85..bfc0b3536f83 100644 --- a/sonoff/xdsp_01_lcd.ino +++ b/sonoff/xdsp_01_lcd.ino @@ -107,7 +107,7 @@ void LcdCenter(byte row, char* txt) line[Settings.display_cols[0]] = 0; len = strlen(txt); offset = (len < Settings.display_cols[0]) ? offset = (Settings.display_cols[0] - len) / 2 : 0; - strncpy(line +offset, txt, len); + strlcpy(line +offset, txt, len); lcd->setCursor(0, row); lcd->print(line); } diff --git a/sonoff/xsns_01_counter.ino b/sonoff/xsns_01_counter.ino index 069d5b3e7283..b5822cac75c3 100644 --- a/sonoff/xsns_01_counter.ino +++ b/sonoff/xsns_01_counter.ino @@ -111,7 +111,7 @@ void CounterShow(boolean json) } header++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"C%d\":%s"), mqtt_data, stemp, i +1, counter); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_DOMOTICZ if ((0 == tele_period) && (1 == dsxflg)) { DomoticzSensor(DZ_COUNT, RtcSettings.pulse_counter[i]); diff --git a/sonoff/xsns_05_ds18x20_legacy.ino b/sonoff/xsns_05_ds18x20_legacy.ino index 1563121044d8..03754bbe156e 100644 --- a/sonoff/xsns_05_ds18x20_legacy.ino +++ b/sonoff/xsns_05_ds18x20_legacy.ino @@ -186,7 +186,7 @@ void Ds18x20Show(boolean json) dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"DS%d\":{\"" D_JSON_TYPE "\":\"%s\",\"" D_JSON_ADDRESS "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, i +1, ds18x20_types, Ds18x20Addresses(i).c_str(), temperature); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_DOMOTICZ if ((0 == tele_period) && (1 == dsxflg)) { DomoticzSensor(DZ_TEMP, temperature); diff --git a/sonoff/xsns_12_ads1115.ino b/sonoff/xsns_12_ads1115.ino index f1279a73277c..bcfb6dfad747 100644 --- a/sonoff/xsns_12_ads1115.ino +++ b/sonoff/xsns_12_ads1115.ino @@ -191,7 +191,7 @@ void Ads1115Show(boolean json) } dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"A%d\":%d"), mqtt_data, stemp, i, adc_value); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "ADS1115", i, adc_value); diff --git a/sonoff/xsns_12_ads1115_i2cdev.ino b/sonoff/xsns_12_ads1115_i2cdev.ino index d3748ec7ae4e..588a37ac5c95 100644 --- a/sonoff/xsns_12_ads1115_i2cdev.ino +++ b/sonoff/xsns_12_ads1115_i2cdev.ino @@ -111,7 +111,7 @@ void Ads1115Show(boolean json) } dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"A%d\":%d"), mqtt_data, stemp, i, adc_value); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "ADS1115", i, adc_value); From 5623924813f888c25d672f23714a6675b6012c35 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 12:10:22 +0200 Subject: [PATCH 023/798] Add Wifi channel number Add Wifi channel number to state message (#3664) --- sonoff/_changelog.ino | 1 + sonoff/i18n.h | 1 + sonoff/sonoff.ino | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c3d1e4c6a0d6..d8a14e367f07 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.0.1 20180902 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) * Fix possible exception due to buffer overflow (#3659) + * Add Wifi channel number to state message (#3664) * * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 1077106780ef..cfc30e6bca04 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -40,6 +40,7 @@ #define D_JSON_BOOTVERSION "Boot" #define D_JSON_BOOTCOUNT "BootCount" #define D_JSON_BUILDDATETIME "BuildDateTime" +#define D_JSON_CHANNEL "Channel" #define D_JSON_CO2 "CarbonDioxide" #define D_JSON_COMMAND "Command" #define D_JSON_CONNECT_FAILED "Connect failed" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 93ffbda01068..9a167eddf087 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1532,8 +1532,8 @@ void MqttShowState() MqttShowPWMState(); } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_RSSI "\":%d,\"" D_JSON_APMAC_ADDRESS "\":\"%s\"}}"), - mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WifiGetRssiAsQuality(WiFi.RSSI()), WiFi.BSSIDstr().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_CHANNEL "\":%d,\"" D_JSON_RSSI "\":%d,\"" D_JSON_APMAC_ADDRESS "\":\"%s\"}}"), + mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WiFi.channel(), WifiGetRssiAsQuality(WiFi.RSSI()), WiFi.BSSIDstr().c_str()); } boolean MqttShowSensor() From a60876378f0adc066352eb978ef07d2d54fc83f7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 13:01:08 +0200 Subject: [PATCH 024/798] Show AP channel on webpage Show channel number on webpage and wifiscan debug info. Add BSSid to wifiscan debug info --- sonoff/language/bg-BG.h | 2 ++ sonoff/language/cs-CZ.h | 2 ++ sonoff/language/de-DE.h | 2 ++ sonoff/language/el-GR.h | 2 ++ sonoff/language/en-GB.h | 2 ++ sonoff/language/es-AR.h | 2 ++ sonoff/language/fr-FR.h | 2 ++ sonoff/language/hu-HU.h | 2 ++ sonoff/language/it-IT.h | 2 ++ sonoff/language/nl-NL.h | 2 ++ sonoff/language/pl-PL.h | 2 ++ sonoff/language/pt-BR.h | 2 ++ sonoff/language/pt-PT.h | 2 ++ sonoff/language/ru-RU.h | 2 ++ sonoff/language/tr-TR.h | 4 +++- sonoff/language/uk-UK.h | 2 ++ sonoff/language/zh-CN.h | 2 ++ sonoff/language/zh-TW.h | 2 ++ sonoff/xdrv_02_webserver.ino | 5 +++-- 19 files changed, 40 insertions(+), 3 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 6421441b715e..e85ab66c3570 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Мигане изкл." #define D_BOOT_COUNT "Брой на стартиранията" #define D_BRIGHTLIGHT "Яркост" +#define D_BSSID "BSSId" #define D_BUTTON "Бутон" #define D_BY "от" // Written by me #define D_BYTES "Байта" #define D_CELSIUS "Целзий" +#define D_CHANNEL "Channel" #define D_CO2 "Въглероден диоксид" #define D_CODE "код" // Button code #define D_COLDLIGHT "Хладна" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index d1905c103532..2f51ccc93b69 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlikáníVyp" #define D_BOOT_COUNT "Počítadlo spuštění" #define D_BRIGHTLIGHT "Světlý" +#define D_BSSID "BSSId" #define D_BUTTON "Tlačítko" #define D_BY "by" // Written by me #define D_BYTES "Bytů" #define D_CELSIUS "°C" +#define D_CHANNEL "Channel" #define D_CO2 "CO2" #define D_CODE "kód" // Button code #define D_COLDLIGHT "Studené světlo" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 302c7e55e6c5..888345d8af78 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkenAus" #define D_BOOT_COUNT "Anzahl Startvorgänge" #define D_BRIGHTLIGHT "hell" +#define D_BSSID "BSSId" #define D_BUTTON "Knopf" #define D_BY "von" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Kanal" #define D_CO2 "CO²" #define D_CODE "code" // Button code #define D_COLDLIGHT "kalt" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 789d88a6f8f6..3187eadf96b9 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Δεν αναβοσβήνει" #define D_BOOT_COUNT "Αριθμός εκκινήσεων" #define D_BRIGHTLIGHT "Λαμπερό" +#define D_BSSID "BSSId" #define D_BUTTON "Κουμπί" #define D_BY "από" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Κελσίου" +#define D_CHANNEL "Channel" #define D_CO2 "Διοξείδιο του άνθρακα" #define D_CODE "κώδικας" // Button code #define D_COLDLIGHT "Ψυχρός" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index e8af7fab1f45..558877db2682 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Boot Count" #define D_BRIGHTLIGHT "Bright" +#define D_BSSID "BSSId" #define D_BUTTON "Button" #define D_BY "by" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "Carbon dioxide" #define D_CODE "code" // Button code #define D_COLDLIGHT "Cold" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 68e9141ea2fb..c1993ffee8ce 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Conteo Reinicios" #define D_BRIGHTLIGHT "Brillante" +#define D_BSSID "BSSId" #define D_BUTTON "Botón" #define D_BY "por" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "CO2" #define D_CODE "código" // Button code #define D_COLDLIGHT "Fría" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 1e5c2b9f8db7..2a46f7b53428 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Nombre de boot" #define D_BRIGHTLIGHT "Luminosité" +#define D_BSSID "BSSId" #define D_BUTTON "Bouton" #define D_BY "par" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "Dioxyde de carbone" #define D_CODE "code" // Button code #define D_COLDLIGHT "Froid" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 76076427e97e..c57278176cf8 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Villogás Ki" #define D_BOOT_COUNT "Bootolások száma" #define D_BRIGHTLIGHT "Max. fényerő" +#define D_BSSID "BSSId" #define D_BUTTON "Gomb" #define D_BY "tőle:" // Written by me #define D_BYTES "Byte-ok" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "Szén-dioxid" #define D_CODE "kód" // Button code #define D_COLDLIGHT "Hideg" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 2beda2e796ca..d07a330218d3 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Numero di boot" #define D_BRIGHTLIGHT "Luminoso" +#define D_BSSID "BSSId" #define D_BUTTON "Pulsante" #define D_BY "da" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "CO2" #define D_CODE "codice" // Button code #define D_COLDLIGHT "Fredda" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 8ef596448297..05ec4666ba1b 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "KnipperUit" #define D_BOOT_COUNT "Herstarts" #define D_BRIGHTLIGHT "Fel" +#define D_BSSID "BSSId" #define D_BUTTON "DrukKnop" #define D_BY "door" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Kanaal" #define D_CO2 "Koolstofdioxide" #define D_CODE "code" // Button code #define D_COLDLIGHT "Koud" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 06d086c57971..faaf8df6d2e5 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "MiganieWył" #define D_BOOT_COUNT "Licznik uruchomienia" #define D_BRIGHTLIGHT "Jasny" +#define D_BSSID "BSSId" #define D_BUTTON "Przycisk" #define D_BY "by" // Written by me #define D_BYTES "Bajtow" #define D_CELSIUS "Celsiusza" +#define D_CHANNEL "Channel" #define D_CO2 "Dwutlenku węgla" #define D_CODE "kod" // Button code #define D_COLDLIGHT "Zimny" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 6c5f3fceb57e..318f69e4513d 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Pulsar desligado" #define D_BOOT_COUNT "Contagem de inicialização" #define D_BRIGHTLIGHT "Brilho" +#define D_BSSID "BSSId" #define D_BUTTON "Botão" #define D_BY "por" // Write by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "Dióxido de carbono" #define D_CODE "Código" // Button code #define D_COLDLIGHT "Luz fria" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 0c93620e8ac4..d39ec6e501ae 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Piscar desligado" #define D_BOOT_COUNT "Contagem de Inicialização" #define D_BRIGHTLIGHT "Brilho" +#define D_BSSID "BSSId" #define D_BUTTON "Botão" #define D_BY "por" // Write by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Channel" #define D_CO2 "Dioxido de Carbono" #define D_CODE "Código" // Button code #define D_COLDLIGHT "Luz Fria" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 2fa9d388f4da..5fea0468e68a 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Не Мигать" #define D_BOOT_COUNT "Количество загрузок" #define D_BRIGHTLIGHT "Яркость" +#define D_BSSID "BSSId" #define D_BUTTON "Кнопка" #define D_BY "by" // Written by me #define D_BYTES "Байт" #define D_CELSIUS "Цельсия" +#define D_CHANNEL "Channel" #define D_CO2 "Углекислый газ" #define D_CODE "код" // Button code #define D_COLDLIGHT "Холодный" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 3d88ae1a8e2c..b133d2c80627 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Yeniden başlama sayısı" #define D_BRIGHTLIGHT "Işık" +#define D_BSSID "BSSId" #define D_BUTTON "Buton" #define D_BY "by" // Written by me #define D_BYTES "Bayt" #define D_CELSIUS "Derece" +#define D_CHANNEL "Channel" #define D_CO2 "Karbon dioksit" #define D_CODE "kod" // Button code #define D_COLDLIGHT "Soğuk" @@ -536,4 +538,4 @@ #define D_LOG_UPNP "UPP: " // UPnP #define D_LOG_WIFI "WIF: " // Wifi -#endif // _LANGUAGE_TR_TR_H_ \ No newline at end of file +#endif // _LANGUAGE_TR_TR_H_ diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index a2fe05843050..9cf66773b103 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "Не блимати" #define D_BOOT_COUNT "Кіл-сть завант." #define D_BRIGHTLIGHT "Яскравість" +#define D_BSSID "BSSId" #define D_BUTTON "Кнопка" #define D_BY "by" // Written by me #define D_BYTES "Байт" #define D_CELSIUS "Цельсія" +#define D_CHANNEL "Channel" #define D_CO2 "Вуглек. газ" #define D_CODE "код" // Button code #define D_COLDLIGHT "Холодний" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 70186035d5f7..88f680f8e042 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "闪烁关" #define D_BOOT_COUNT "启动次数" #define D_BRIGHTLIGHT "亮" +#define D_BSSID "BSSId" #define D_BUTTON "按钮" #define D_BY "汉化: killadm 作者:" // Written by me #define D_BYTES "大小:" #define D_CELSIUS "摄氏" +#define D_CHANNEL "Channel" #define D_CO2 "二氧化碳" #define D_CODE "代码" // Button code #define D_COLDLIGHT "冷" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 16e6961d0c27..abb92d359ea2 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -60,10 +60,12 @@ #define D_BLINKOFF "閃爍關" #define D_BOOT_COUNT "啟動次數" #define D_BRIGHTLIGHT "亮度" +#define D_BSSID "BSSId" #define D_BUTTON "按鈕" #define D_BY "by" // Written by me #define D_BYTES "大小:" #define D_CELSIUS "攝氏" +#define D_CHANNEL "Channel" #define D_CO2 "二氧化碳" #define D_CODE "代碼" // Button code #define D_COLDLIGHT "冷" diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 91c01eeae546..951c25f9d95e 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -254,7 +254,7 @@ const char HTTP_FORM_MODULE[] PROGMEM = "" "
" D_MODULE_TYPE " ({mt)

"; const char HTTP_LNK_ITEM[] PROGMEM = - "
{v} {i} {r}%
"; + "
{v} ({w}) {i} {r}%
"; const char HTTP_LNK_SCAN[] PROGMEM = "
"; const char HTTP_FORM_WIFI[] PROGMEM = @@ -882,7 +882,7 @@ void HandleWifi(boolean scan) //display networks in page for (int i = 0; i < n; i++) { if (-1 == indices[i]) { continue; } // skip dups - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_SSID " %s, " D_RSSI " %d"), WiFi.SSID(indices[i]).c_str(), WiFi.RSSI(indices[i])); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_SSID " %s, " D_BSSID " %s, " D_CHANNEL " %d, " D_RSSI " %d"), WiFi.SSID(indices[i]).c_str(), WiFi.BSSIDstr(indices[i]).c_str(), WiFi.channel(indices[i]), WiFi.RSSI(indices[i])); AddLog(LOG_LEVEL_DEBUG); int quality = WifiGetRssiAsQuality(WiFi.RSSI(indices[i])); @@ -891,6 +891,7 @@ void HandleWifi(boolean scan) String rssiQ; rssiQ += quality; item.replace(F("{v}"), WiFi.SSID(indices[i])); + item.replace(F("{w}"), String(WiFi.channel(indices[i]))); item.replace(F("{r}"), rssiQ); uint8_t auth = WiFi.encryptionType(indices[i]); item.replace(F("{i}"), (ENC_TYPE_WEP == auth) ? F(D_WEP) : (ENC_TYPE_TKIP == auth) ? F(D_WPA_PSK) : (ENC_TYPE_CCMP == auth) ? F(D_WPA2_PSK) : (ENC_TYPE_AUTO == auth) ? F(D_AUTO) : F("")); From 0ac8c73938cff33f0166d86867e33b190f23ded8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 14:26:00 +0200 Subject: [PATCH 025/798] Fix Wemo emulation Fix Wemo emulation to select the first relay when more than one relay is present (#3657) --- sonoff/_changelog.ino | 1 + sonoff/xplg_wemohue.ino | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index d8a14e367f07..d2781b4d47bc 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) * Fix possible exception due to buffer overflow (#3659) * Add Wifi channel number to state message (#3664) + * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) * * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 9a7cdeec7386..9a5fb9467b8b 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -386,12 +386,18 @@ void HandleUpnpEvent() String state_xml = FPSTR(WEMO_RESPONSE_STATE_SOAP); //differentiate get and set state if (request.indexOf(F("SetBinaryState")) > 0) { + uint8_t power = POWER_TOGGLE; if (request.indexOf(F("State>1 0) { - ExecuteCommandPower(devices_present, POWER_ON, SRC_WEMO); + power = POWER_ON } else if (request.indexOf(F("State>0 0) { - ExecuteCommandPower(devices_present, POWER_OFF, SRC_WEMO); + power = POWER_OFF; } + if (power != POWER_TOGGLE) { + uint8_t device = (light_type) ? devices_present : 1; // Select either a configured light or relay1 + ExecuteCommandPower(device, power, SRC_WEMO); + } + } else if(request.indexOf(F("GetBinaryState")) > 0){ state_xml.replace(F("Set"), F("Get")); From 4b4b0dff855a5e9c1bf7a8d272b2a73fa8fbb223 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 14:46:06 +0200 Subject: [PATCH 026/798] Fix compile error Fix compile error --- sonoff/xplg_wemohue.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 9a5fb9467b8b..bc579782a78e 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -388,7 +388,7 @@ void HandleUpnpEvent() if (request.indexOf(F("SetBinaryState")) > 0) { uint8_t power = POWER_TOGGLE; if (request.indexOf(F("State>1 0) { - power = POWER_ON + power = POWER_ON; } else if (request.indexOf(F("State>0 0) { power = POWER_OFF; From 5ff735e4e783a46d68f333ce2a6b1a6618cdc294 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 15:21:58 +0200 Subject: [PATCH 027/798] Remove obsolete linker file Remove obsolete linker file as platformio now supports 1m0 out of the box --- esp8266.flash.1m0.ld | 18 ------------------ platformio.ini | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 esp8266.flash.1m0.ld diff --git a/esp8266.flash.1m0.ld b/esp8266.flash.1m0.ld deleted file mode 100644 index 1f9b56a87607..000000000000 --- a/esp8266.flash.1m0.ld +++ /dev/null @@ -1,18 +0,0 @@ -/* Flash Split for 1M chips */ -/* sketch 999KB */ -/* eeprom 20KB */ - -MEMORY -{ - dport0_0_seg : org = 0x3FF00000, len = 0x10 - dram0_0_seg : org = 0x3FFE8000, len = 0x14000 - iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40201010, len = 0xf9ff0 -} - -PROVIDE ( _SPIFFS_start = 0x402FB000 ); -PROVIDE ( _SPIFFS_end = 0x402FB000 ); -PROVIDE ( _SPIFFS_page = 0 ); -PROVIDE ( _SPIFFS_block = 0 ); - -INCLUDE "esp8266.flash.common.ld" diff --git a/platformio.ini b/platformio.ini index 4cda52b6f12a..03e61b1dccb3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,7 +60,7 @@ board_build.f_cpu = 80000000L build_unflags = -Wall build_flags = - -Wl,-Tesp8266.flash.1m0.ld + -Wl,-Teagle.flash.1m0.ld ; -DUSE_CONFIG_OVERRIDE ; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH From 9ff3233b9755fd1a1f160af5ace605ff1dab8e4a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 15:23:11 +0200 Subject: [PATCH 028/798] Revert "Remove obsolete linker file" This reverts commit 5ff735e4e783a46d68f333ce2a6b1a6618cdc294. --- esp8266.flash.1m0.ld | 18 ++++++++++++++++++ platformio.ini | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 esp8266.flash.1m0.ld diff --git a/esp8266.flash.1m0.ld b/esp8266.flash.1m0.ld new file mode 100644 index 000000000000..1f9b56a87607 --- /dev/null +++ b/esp8266.flash.1m0.ld @@ -0,0 +1,18 @@ +/* Flash Split for 1M chips */ +/* sketch 999KB */ +/* eeprom 20KB */ + +MEMORY +{ + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + iram1_0_seg : org = 0x40100000, len = 0x8000 + irom0_0_seg : org = 0x40201010, len = 0xf9ff0 +} + +PROVIDE ( _SPIFFS_start = 0x402FB000 ); +PROVIDE ( _SPIFFS_end = 0x402FB000 ); +PROVIDE ( _SPIFFS_page = 0 ); +PROVIDE ( _SPIFFS_block = 0 ); + +INCLUDE "esp8266.flash.common.ld" diff --git a/platformio.ini b/platformio.ini index 03e61b1dccb3..4cda52b6f12a 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,7 +60,7 @@ board_build.f_cpu = 80000000L build_unflags = -Wall build_flags = - -Wl,-Teagle.flash.1m0.ld + -Wl,-Tesp8266.flash.1m0.ld ; -DUSE_CONFIG_OVERRIDE ; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH From 2210bda2e6ff3c0033959cb27014119fed6fea9f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 15:54:26 +0200 Subject: [PATCH 029/798] Replace APMac with BSSId Replace APMac with BSSId in state and status 11 --- sonoff/i18n.h | 1 + sonoff/sonoff.ino | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index cfc30e6bca04..5559ac6d1701 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -39,6 +39,7 @@ #define D_JSON_BLOCKED_LOOP "Blocked Loop" #define D_JSON_BOOTVERSION "Boot" #define D_JSON_BOOTCOUNT "BootCount" +#define D_JSON_BSSID "BSSId" #define D_JSON_BUILDDATETIME "BuildDateTime" #define D_JSON_CHANNEL "Channel" #define D_JSON_CO2 "CarbonDioxide" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 9a167eddf087..8d82efc184bc 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1532,8 +1532,8 @@ void MqttShowState() MqttShowPWMState(); } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_CHANNEL "\":%d,\"" D_JSON_RSSI "\":%d,\"" D_JSON_APMAC_ADDRESS "\":\"%s\"}}"), - mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WiFi.channel(), WifiGetRssiAsQuality(WiFi.RSSI()), WiFi.BSSIDstr().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_BSSID "\":\"%s\",\"" D_JSON_CHANNEL "\":%d,\"" D_JSON_RSSI "\":%d}}"), + mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WiFi.BSSIDstr().c_str(), WiFi.channel(), WifiGetRssiAsQuality(WiFi.RSSI())); } boolean MqttShowSensor() From 44ecdaf952b7e0cf42cf30ffebb996b75e52e1ad Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 2 Sep 2018 16:17:49 +0200 Subject: [PATCH 030/798] Add support for Shelly Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) --- sonoff/_changelog.ino | 1 + sonoff/sonoff_template.h | 52 ++++++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index d2781b4d47bc..a59ba99cb19d 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,6 +3,7 @@ * Fix possible exception due to buffer overflow (#3659) * Add Wifi channel number to state message (#3664) * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) + * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) * * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 84a0749dc249..8d3fac17605d 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -136,6 +136,9 @@ enum ProgramSelectablePins { GPIO_DI, // my92x1 PWM input GPIO_DCKI, // my92x1 CLK input GPIO_ARIRFRCV, // AliLux RF Receive input + GPIO_MCP39_TX, // MCP39F501 Serial output + GPIO_MCP39_RX, // MCP39F501 Serial input + GPIO_MCP39_RST, // MCP39F501 Serial reset GPIO_USER, // User configurable GPIO_MAX }; @@ -220,6 +223,8 @@ enum SupportedModules { SONOFF_POW_R2, SONOFF_IFAN02, BLITZWOLF_BWSHP2, + SHELLY1, + SHELLY2, MAXMODULE }; /********************************************************************************************/ @@ -271,6 +276,8 @@ const uint8_t kNiceList[MAXMODULE] PROGMEM = { LUANIHVIO, YUNSHAN, WION, + SHELLY1, + SHELLY2, BLITZWOLF_BWSHP2, H801, MAGICHOME, @@ -906,6 +913,27 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_HLW_CF1, // GPIO14 BL0937 or HJL-01 CF1 voltage / current GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 + }, + { "Shelly 1", // Shelly1 Open Source (ESP8266 - 2MB) - https://shelly.cloud/shelly1-open-source/ + 0, 0, 0, 0, + GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) + GPIO_SWT1_NP, // GPIO05 SW pin + 0, 0, 0, 0, 0, 0, // Flash connection + 0, 0, 0, 0, 0, 0 + }, + { "Shelly 2", // Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/ + 0, + GPIO_MCP39_RX, // GPIO01 MCP39F501 Serial input + 0, + GPIO_MCP39_TX, // GPIO03 MCP39F501 Serial output + GPIO_REL1, // GPIO04 + GPIO_REL2, // GPIO05 + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_SWT1_NP, // GPIO12 + 0, + GPIO_SWT2_NP, // GPIO14 + GPIO_MCP39_RST, // GPIO15 MCP39F501 Reset + 0, 0 } }; @@ -988,29 +1016,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, // GPIO15 (D15) GPIO_USER, // GPIO16 (D16) 0 // ADC0 Analog input (A0) - }, - - { "Shelly 1", // Shelly1 Open Source (ESP8266 - 2MB) - https://shelly.cloud/shelly1-open-source/ - GPIO_KEY1, // GPIO00 Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - 0, - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) - GPIO_SWT1_NP, // GPIO05 Switch - 0, 0, 0, 0, 0, 0, // Flash connection - 0, 0, 0, 0, 0, 0 - }, - { "Shelly 2", // Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/ - // As Gnd is connected to AC no user GPIO allowed - 0, 0, 0, 0, - GPIO_REL1, // GPIO04 Relay 1 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) - 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_SWT1_NP, // GPIO12 Switch 1 - 0, - GPIO_SWT2_NP, // GPIO14 Switch 2 - 0, 0, 0 - }, + } */ #endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file From d557fdbe7b6cee4a5956512fdb632073c7b170ad Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 3 Sep 2018 00:28:03 -0300 Subject: [PATCH 031/798] Updated Spanish Translation --- sonoff/language/es-AR.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index c1993ffee8ce..986b9507fa67 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1c + * Updated until v6.2.0.1 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -65,7 +65,7 @@ #define D_BY "por" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" -#define D_CHANNEL "Channel" +#define D_CHANNEL "Canal" #define D_CO2 "CO2" #define D_CODE "código" // Button code #define D_COLDLIGHT "Fría" @@ -462,7 +462,7 @@ #define D_SENSOR_RELAY "Relé" // Suffix "1i" #define D_SENSOR_LED "Led" // Suffix "1i" #define D_SENSOR_PWM "PWM" // Suffix "1" -#define D_SENSOR_COUNTER "Counter" // Suffix "1" +#define D_SENSOR_COUNTER "Contador" // Suffix "1" #define D_SENSOR_IRRECV "IR RX" #define D_SENSOR_MHZ_RX "MHZ Rx" #define D_SENSOR_MHZ_TX "MHZ Tx" From 41999a0afcb866c8bc006bc2a7a96fcc74f356ed Mon Sep 17 00:00:00 2001 From: znanev <20048364+znanev@users.noreply.github.com> Date: Mon, 3 Sep 2018 13:49:49 +0100 Subject: [PATCH 032/798] Update bg-BG.h --- sonoff/language/bg-BG.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index e85ab66c3570..b1ecd6fa655b 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1.5 + * Updated until v6.2.0.1 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -65,7 +65,7 @@ #define D_BY "от" // Written by me #define D_BYTES "Байта" #define D_CELSIUS "Целзий" -#define D_CHANNEL "Channel" +#define D_CHANNEL "Канал" #define D_CO2 "Въглероден диоксид" #define D_CODE "код" // Button code #define D_COLDLIGHT "Хладна" @@ -440,12 +440,12 @@ #define D_PARTICALS_BEYOND "Частици" // xsns_32_mpu6050.ino -#define D_AX_AXIS "Accel. X-Axis" -#define D_AY_AXIS "Accel. Y-Axis" -#define D_AZ_AXIS "Accel. Z-Axis" -#define D_GX_AXIS "Gyro X-Axis" -#define D_GY_AXIS "Gyro Y-Axis" -#define D_GZ_AXIS "Gyro Z-Axis" +#define D_AX_AXIS "Ускорение - ос X" +#define D_AY_AXIS "Ускорение - ос Y" +#define D_AZ_AXIS "Ускорение - ос Z" +#define D_GX_AXIS "Жироскоп - ос X" +#define D_GY_AXIS "Жироскоп - ос Y" +#define D_GZ_AXIS "Жироскоп - ос Z" // sonoff_template.h #define D_SENSOR_NONE "Няма" From ababc351d74b485fa733fdb6b17a7172ab012220 Mon Sep 17 00:00:00 2001 From: MadDoct <32080323+MadDoct@users.noreply.github.com> Date: Tue, 4 Sep 2018 09:45:26 +0100 Subject: [PATCH 033/798] prepare to allow h801 tx and rx pins to be gpio_user --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 8d82efc184bc..12aea14e9cd9 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2362,7 +2362,7 @@ void GpioInit() if (mpin) pin[mpin] = i; } - if (2 == pin[GPIO_TXD]) Serial.set_tx(2); + if ((2 == pin[GPIO_TXD]) || (Settings.module == 20)) Serial.set_tx(2); analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h) analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) From a8b673487b631a8b2f3ffdd4962dcffe93b9db93 Mon Sep 17 00:00:00 2001 From: MadDoct <32080323+MadDoct@users.noreply.github.com> Date: Tue, 4 Sep 2018 09:56:43 +0100 Subject: [PATCH 034/798] h801 tx and rx user selectable --- sonoff/sonoff_template.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 8d3fac17605d..f2fe9300312c 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -550,8 +550,8 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "H801", // Lixada H801 Wifi (ESP8266) GPIO_USER, // GPIO00 E-FW Button GPIO_LED1, // GPIO01 Green LED - GPIO_TXD, // GPIO02 RX - Pin next to TX on the PCB - GPIO_RXD, // GPIO03 TX - Pin next to GND on the PCB + GPIO_USER, // GPIO02 RX and Optional sensor - Pin next to TX on the PCB + GPIO_USER, // GPIO03 TX and Optional sensor - Pin next to GND on the PCB GPIO_PWM5, // GPIO04 W2 - PWM5 GPIO_LED2_INV, // GPIO05 Red LED 0, 0, 0, 0, 0, 0, // Flash connection @@ -1019,4 +1019,4 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { } */ -#endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file +#endif // _SONOFF_TEMPLATE_H_ From 07dafe16312d27e838b42dd6de4a7944bf8927f4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 4 Sep 2018 16:22:34 +0200 Subject: [PATCH 035/798] 6.2.0.2 - Energy monitoring 6.2.0.2 20180904 * Rewrite energy monitoring using energy sensor driver modules * Fix lost today and total energy value after power cycle (#3689) --- sonoff/_changelog.ino | 6 +- sonoff/settings.h | 10 +- sonoff/settings.ino | 43 ++- sonoff/sonoff.h | 6 +- sonoff/sonoff.ino | 51 +-- sonoff/sonoff_post.h | 2 + sonoff/sonoff_version.h | 2 +- sonoff/xdrv_03_energy.ino | 638 ++--------------------------------- sonoff/xdrv_06_snfbridge.ino | 3 + sonoff/xdsp_03_matrix.ino | 4 + sonoff/xnrg_01_hlw8012.ino | 283 ++++++++++++++++ sonoff/xnrg_02_cse7766.ino | 248 ++++++++++++++ sonoff/xnrg_03_pzem004t.ino | 248 ++++++++++++++ sonoff/xnrg_interface.ino | 57 ++++ 14 files changed, 949 insertions(+), 652 deletions(-) create mode 100644 sonoff/xnrg_01_hlw8012.ino create mode 100644 sonoff/xnrg_02_cse7766.ino create mode 100644 sonoff/xnrg_03_pzem004t.ino create mode 100644 sonoff/xnrg_interface.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index a59ba99cb19d..0b3c115cd090 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,8 @@ -/* 6.2.0.1 20180902 +/* 6.2.0.2 20180904 + * Rewrite energy monitoring using energy sensor driver modules + * Fix lost today and total energy value after power cycle (#3689) + * + * 6.2.0.1 20180902 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) * Fix possible exception due to buffer overflow (#3659) * Add Wifi channel number to state message (#3664) diff --git a/sonoff/settings.h b/sonoff/settings.h index ded2c140b6f0..3876baf60a84 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -333,6 +333,12 @@ struct SYSCFG { // E00 - FFF free locations } Settings; +struct RTCRBT { + uint16_t valid; // 000 + uint8_t fast_reboot_count; // 002 + uint8_t free_003[1]; // 003 +} RtcReboot; + struct RTCMEM { uint16_t valid; // 000 byte oswatch_blocked_loop; // 002 @@ -341,9 +347,7 @@ struct RTCMEM { unsigned long energy_kWhtotal; // 008 unsigned long pulse_counter[MAX_COUNTERS]; // 00C power_t power; // 01C - uint16_t extended_valid; // 020 Extended valid flag (v6.1.1.14) - uint8_t fast_reboot_count; // 022 - uint8_t free_023[57]; // 023 + uint8_t free_020[60]; // 020 // 05C next free location (64 (=core) + 100 (=tasmota offset) + 92 (=0x5C RTCMEM struct) = 256 bytes (max = 512)) } RtcSettings; diff --git a/sonoff/settings.ino b/sonoff/settings.ino index cba043696e30..5626f862bd12 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -84,7 +84,6 @@ void RtcSettingsSave() { if (GetRtcSettingsCrc() != rtc_settings_crc) { RtcSettings.valid = RTC_MEM_VALID; - RtcSettings.extended_valid = RTC_MEM_VALID; ESP.rtcUserMemoryWrite(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); rtc_settings_crc = GetRtcSettingsCrc(); #ifdef DEBUG_THEO @@ -104,14 +103,12 @@ void RtcSettingsLoad() if (RtcSettings.valid != RTC_MEM_VALID) { memset(&RtcSettings, 0, sizeof(RTCMEM)); RtcSettings.valid = RTC_MEM_VALID; - RtcSettings.extended_valid = RTC_MEM_VALID; RtcSettings.energy_kWhtoday = Settings.energy_kWhtoday; RtcSettings.energy_kWhtotal = Settings.energy_kWhtotal; for (byte i = 0; i < MAX_COUNTERS; i++) { RtcSettings.pulse_counter[i] = Settings.pulse_counter[i]; } RtcSettings.power = Settings.power; -// RtcSettings.fast_reboot_count = 0; // Explicit by memset RtcSettingsSave(); } rtc_settings_crc = GetRtcSettingsCrc(); @@ -122,9 +119,45 @@ boolean RtcSettingsValid() return (RTC_MEM_VALID == RtcSettings.valid); } -boolean RtcSettingsExtendedValid() +/********************************************************************************************/ + +uint32_t rtc_reboot_crc = 0; + +uint32_t GetRtcRebootCrc() +{ + uint32_t crc = 0; + uint8_t *bytes = (uint8_t*)&RtcReboot; + + for (uint16_t i = 0; i < sizeof(RTCRBT); i++) { + crc += bytes[i]*(i+1); + } + return crc; +} + +void RtcRebootSave() +{ + if (GetRtcRebootCrc() != rtc_reboot_crc) { + RtcReboot.valid = RTC_MEM_VALID; + ESP.rtcUserMemoryWrite(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); + rtc_reboot_crc = GetRtcRebootCrc(); + } +} + +void RtcRebootLoad() +{ + ESP.rtcUserMemoryRead(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); + if (RtcReboot.valid != RTC_MEM_VALID) { + memset(&RtcReboot, 0, sizeof(RTCRBT)); + RtcReboot.valid = RTC_MEM_VALID; +// RtcReboot.fast_reboot_count = 0; // Explicit by memset + RtcRebootSave(); + } + rtc_reboot_crc = GetRtcRebootCrc(); +} + +boolean RtcRebootValid() { - return (RTC_MEM_VALID == RtcSettings.extended_valid); + return (RTC_MEM_VALID == RtcReboot.valid); } /*********************************************************************************************\ diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 3a1dc14c6c5a..2c5d5cce9d94 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -202,9 +202,9 @@ enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_RGBWC}; enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; -enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, - FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_FREE_MEM}; +enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, + FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 8d82efc184bc..c92a8db76deb 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -172,7 +172,7 @@ uint8_t led_inverted = 0; // LED inverted flag (1 = (0 = On, 1 uint8_t pwm_inverted = 0; // PWM inverted flag (1 = inverted) uint8_t counter_no_pullup = 0; // Counter input pullup flag (1 = No pullup) uint8_t dht_flg = 0; // DHT configured -uint8_t energy_flg = 1; // Energy monitor configured +uint8_t energy_flg = 0; // Energy monitor configured uint8_t i2c_flg = 0; // I2C configured uint8_t spi_flg = 0; // SPI configured uint8_t light_type = 0; // Light types @@ -1568,8 +1568,8 @@ void PerformEverySecond() uptime++; if (BOOT_LOOP_TIME == uptime) { - RtcSettings.fast_reboot_count = 0; - RtcSettingsSave(); + RtcReboot.fast_reboot_count = 0; + RtcRebootSave(); } if ((4 == uptime) && (SONOFF_IFAN02 == Settings.module)) { // Microcontroller needs 3 seconds before accepting commands @@ -2193,29 +2193,14 @@ void SerialInput() } } -/*-------------------------------------------------------------------------------------------*\ - * Sonoff bridge 19200 baud serial interface -\*-------------------------------------------------------------------------------------------*/ - if (SONOFF_BRIDGE == Settings.module) { - if (SonoffBridgeSerialInput()) { - serial_in_byte_counter = 0; - Serial.flush(); - return; - } - } +/*-------------------------------------------------------------------------------------------*/ -#ifdef USE_ENERGY_SENSOR -/*-------------------------------------------------------------------------------------------*\ - * Sonoff S31 and Sonoff Pow R2 4800 baud serial interface -\*-------------------------------------------------------------------------------------------*/ - if ((SONOFF_S31 == Settings.module) || (SONOFF_POW_R2 == Settings.module)) { - if (CseSerialInput()) { - serial_in_byte_counter = 0; - Serial.flush(); - return; - } + if (XdrvCall(FUNC_SERIAL)) { + serial_in_byte_counter = 0; + Serial.flush(); + return; } -#endif // USE_ENERGY_SENSOR + /*-------------------------------------------------------------------------------------------*/ if (serial_in_byte > 127 && !Settings.flag.mqtt_serial_raw) { // binary data... @@ -2491,10 +2476,10 @@ void setup() { byte idx; - RtcSettingsLoad(); - if (!RtcSettingsExtendedValid()) { RtcSettings.fast_reboot_count = 0; } - RtcSettings.fast_reboot_count++; - RtcSettingsSave(); + RtcRebootLoad(); + if (!RtcRebootValid()) { RtcReboot.fast_reboot_count = 0; } + RtcReboot.fast_reboot_count++; + RtcRebootSave(); Serial.begin(baudrate); delay(10); @@ -2528,26 +2513,26 @@ void setup() sleep = Settings.sleep; // Disable functionality as possible cause of fast restart within BOOT_LOOP_TIME seconds (Exception, WDT or restarts) - if (RtcSettings.fast_reboot_count > 1) { // Restart twice + if (RtcReboot.fast_reboot_count > 1) { // Restart twice Settings.flag3.user_esp8285_enable = 0; // Disable ESP8285 Generic GPIOs interfering with flash SPI - if (RtcSettings.fast_reboot_count > 2) { // Restart 3 times + if (RtcReboot.fast_reboot_count > 2) { // Restart 3 times for (byte i = 0; i < MAX_RULE_SETS; i++) { if (bitRead(Settings.rule_stop, i)) { bitWrite(Settings.rule_enabled, i, 0); // Disable rules causing boot loop } } } - if (RtcSettings.fast_reboot_count > 3) { // Restarted 4 times + if (RtcReboot.fast_reboot_count > 3) { // Restarted 4 times Settings.rule_enabled = 0; // Disable all rules } - if (RtcSettings.fast_reboot_count > 4) { // Restarted 5 times + if (RtcReboot.fast_reboot_count > 4) { // Restarted 5 times Settings.module = SONOFF_BASIC; // Reset module to Sonoff Basic Settings.last_module = SONOFF_BASIC; for (byte i = 0; i < MAX_GPIO_PIN; i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcSettings.fast_reboot_count); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count); AddLog(LOG_LEVEL_DEBUG); } diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index b6b8d320c236..dc49211d1da5 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -52,6 +52,8 @@ void KNX_CB_Action(message_t const &msg, void *arg); #define USE_DHT // Default DHT11 sensor needs no external library #define USE_ENERGY_SENSOR // Use energy sensors +#define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz +#define USE_CSE7766 // Use energy sensor for Sonoff S31 and Pow R2 /*********************************************************************************************\ * [sonoff-sensors.bin] diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index c3ea9381ef66..e9e92cc9da25 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020001 +#define VERSION 0x06020002 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 4ea594cdb5d1..5c122c314f9a 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -1,5 +1,5 @@ /* - xdrv_03_energy.ino - HLW8012 (Sonoff Pow) and PZEM004T energy sensor support for Sonoff-Tasmota + xdrv_03_energy.ino - Energy sensor support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -19,12 +19,12 @@ #ifdef USE_ENERGY_SENSOR /*********************************************************************************************\ - * HLW8012 and PZEM004T - Energy + * Energy \*********************************************************************************************/ -#define FEATURE_POWER_LIMIT true +#define ENERGY_NONE 0 -enum EnergyHardware { ENERGY_NONE, ENERGY_HLW8012, ENERGY_CSE7766, ENERGY_PZEM004T }; +#define FEATURE_POWER_LIMIT true enum EnergyCommands { CMND_POWERDELTA, @@ -76,6 +76,7 @@ uint16_t energy_mplw_counter = 0; byte energy_fifth_second = 0; Ticker ticker_energy; +int energy_command_code = 0; /********************************************************************************************/ void EnergyUpdateToday() @@ -90,543 +91,15 @@ void EnergyUpdateToday() energy_total = (float)(RtcSettings.energy_kWhtotal + energy_kWhtoday) / 100000; } -/*********************************************************************************************\ - * HLW8012, BL0937 or HJL-01 - Energy (Sonoff Pow, HuaFan, KMC70011, BlitzWolf) - * - * Based on Source: Shenzhen Heli Technology Co., Ltd -\*********************************************************************************************/ - -// HLW8012 based (Sonoff Pow, KMC70011, HuaFan) -#define HLW_PREF 10000 // 1000.0W -#define HLW_UREF 2200 // 220.0V -#define HLW_IREF 4545 // 4.545A -#define HLW_SEL_VOLTAGE 1 - -// HJL-01 based (BlitzWolf, Homecube, Gosund) -#define HJL_PREF 1362 -#define HJL_UREF 822 -#define HJL_IREF 3300 -#define HJL_SEL_VOLTAGE 0 - -#define HLW_POWER_PROBE_TIME 10 // Number of seconds to probe for power before deciding none used - -byte hlw_select_ui_flag; -byte hlw_ui_flag = 1; -byte hlw_load_off; -byte hlw_cf1_timer; -unsigned long hlw_cf_pulse_length; -unsigned long hlw_cf_pulse_last_time; -unsigned long hlw_cf1_pulse_length; -unsigned long hlw_cf1_pulse_last_time; -unsigned long hlw_cf1_summed_pulse_length; -unsigned long hlw_cf1_pulse_counter; -unsigned long hlw_cf1_voltage_pulse_length; -unsigned long hlw_cf1_current_pulse_length; -unsigned long hlw_energy_period_counter; - -unsigned long hlw_power_ratio = 0; -unsigned long hlw_voltage_ratio = 0; -unsigned long hlw_current_ratio = 0; - -unsigned long hlw_cf1_voltage_max_pulse_counter; -unsigned long hlw_cf1_current_max_pulse_counter; - -#ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves exception -void HlwCfInterrupt() ICACHE_RAM_ATTR; -void HlwCf1Interrupt() ICACHE_RAM_ATTR; -#endif // USE_WS2812_DMA - -void HlwCfInterrupt() // Service Power -{ - unsigned long us = micros(); - - if (hlw_load_off) { // Restart plen measurement - hlw_cf_pulse_last_time = us; - hlw_load_off = 0; - } else { - hlw_cf_pulse_length = us - hlw_cf_pulse_last_time; - hlw_cf_pulse_last_time = us; - hlw_energy_period_counter++; - } -} - -void HlwCf1Interrupt() // Service Voltage and Current -{ - unsigned long us = micros(); - - hlw_cf1_pulse_length = us - hlw_cf1_pulse_last_time; - hlw_cf1_pulse_last_time = us; - if ((hlw_cf1_timer > 2) && (hlw_cf1_timer < 8)) { // Allow for 300 mSec set-up time and measure for up to 1 second - hlw_cf1_summed_pulse_length += hlw_cf1_pulse_length; - hlw_cf1_pulse_counter++; - if (10 == hlw_cf1_pulse_counter) { - hlw_cf1_timer = 8; // We need up to ten samples within 1 second (low current could take up to 0.3 second) - } - } -} - -void HlwEverySecond() -{ - unsigned long hlw_len; - - if (hlw_energy_period_counter) { - hlw_len = 10000 / hlw_energy_period_counter; - hlw_energy_period_counter = 0; - if (hlw_len) { - energy_kWhtoday_delta += ((hlw_power_ratio * Settings.energy_power_calibration) / hlw_len) / 36; - EnergyUpdateToday(); - } - } -} - -void HlwEvery200ms() -{ - unsigned long hlw_w = 0; - unsigned long hlw_u = 0; - unsigned long hlw_i = 0; - - if (micros() - hlw_cf_pulse_last_time > (HLW_POWER_PROBE_TIME * 1000000)) { - hlw_cf_pulse_length = 0; // No load for some time - hlw_load_off = 1; - } - - if (hlw_cf_pulse_length && energy_power_on && !hlw_load_off) { - hlw_w = (hlw_power_ratio * Settings.energy_power_calibration) / hlw_cf_pulse_length; - energy_power = (float)hlw_w / 10; - } else { - energy_power = 0; - } - - hlw_cf1_timer++; - if (hlw_cf1_timer >= 8) { - hlw_cf1_timer = 0; - hlw_select_ui_flag = (hlw_select_ui_flag) ? 0 : 1; - digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); - - if (hlw_cf1_pulse_counter) { - hlw_cf1_pulse_length = hlw_cf1_summed_pulse_length / hlw_cf1_pulse_counter; - } else { - hlw_cf1_pulse_length = 0; - } - if (hlw_select_ui_flag == hlw_ui_flag) { - hlw_cf1_voltage_pulse_length = hlw_cf1_pulse_length; - hlw_cf1_voltage_max_pulse_counter = hlw_cf1_pulse_counter; - - if (hlw_cf1_voltage_pulse_length && energy_power_on) { // If powered on always provide voltage - hlw_u = (hlw_voltage_ratio * Settings.energy_voltage_calibration) / hlw_cf1_voltage_pulse_length; - energy_voltage = (float)hlw_u / 10; - } else { - energy_voltage = 0; - } - - } else { - hlw_cf1_current_pulse_length = hlw_cf1_pulse_length; - hlw_cf1_current_max_pulse_counter = hlw_cf1_pulse_counter; - - if (hlw_cf1_current_pulse_length && energy_power) { // No current if no power being consumed - hlw_i = (hlw_current_ratio * Settings.energy_current_calibration) / hlw_cf1_current_pulse_length; - energy_current = (float)hlw_i / 1000; - } else { - energy_current = 0; - } - - } - hlw_cf1_summed_pulse_length = 0; - hlw_cf1_pulse_counter = 0; - } -} - -void HlwInit() -{ - if (!Settings.energy_power_calibration || (4975 == Settings.energy_power_calibration)) { - Settings.energy_power_calibration = HLW_PREF_PULSE; - Settings.energy_voltage_calibration = HLW_UREF_PULSE; - Settings.energy_current_calibration = HLW_IREF_PULSE; - } - - if (BLITZWOLF_BWSHP2 == Settings.module) { - hlw_power_ratio = HJL_PREF; - hlw_voltage_ratio = HJL_UREF; - hlw_current_ratio = HJL_IREF; - hlw_ui_flag = HJL_SEL_VOLTAGE; - } else { - hlw_power_ratio = HLW_PREF; - hlw_voltage_ratio = HLW_UREF; - hlw_current_ratio = HLW_IREF; - hlw_ui_flag = HLW_SEL_VOLTAGE; - } - - hlw_cf_pulse_length = 0; - hlw_cf_pulse_last_time = 0; - hlw_cf1_pulse_length = 0; - hlw_cf1_pulse_last_time = 0; - hlw_cf1_voltage_pulse_length = 0; - hlw_cf1_current_pulse_length = 0; - hlw_cf1_voltage_max_pulse_counter = 0; - hlw_cf1_current_max_pulse_counter = 0; - - hlw_load_off = 1; - hlw_energy_period_counter = 0; - - hlw_select_ui_flag = 0; // Voltage; - - pinMode(pin[GPIO_HLW_SEL], OUTPUT); - digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); - pinMode(pin[GPIO_HLW_CF1], INPUT_PULLUP); - attachInterrupt(pin[GPIO_HLW_CF1], HlwCf1Interrupt, FALLING); - pinMode(pin[GPIO_HLW_CF], INPUT_PULLUP); - attachInterrupt(pin[GPIO_HLW_CF], HlwCfInterrupt, FALLING); - - hlw_cf1_timer = 0; -} - -/*********************************************************************************************\ - * CSE7766 - Energy (Sonoff S31 and Sonoff Pow R2) - * - * Based on datasheet from http://www.chipsea.com/UploadFiles/2017/08/11144342F01B5662.pdf -\*********************************************************************************************/ - -#define CSE_NOT_CALIBRATED 0xAA - -#define CSE_PULSES_NOT_INITIALIZED -1 - -#define CSE_PREF 1000 -#define CSE_UREF 100 - -uint8_t cse_receive_flag = 0; - -long voltage_cycle = 0; -long current_cycle = 0; -long power_cycle = 0; -unsigned long power_cycle_first = 0; -long cf_pulses = 0; -long cf_pulses_last_time = CSE_PULSES_NOT_INITIALIZED; - -void CseReceived() -{ - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - // 55 5A 02 F7 60 00 03 AB 00 40 10 02 60 5D 51 A6 58 03 E9 EF 71 0B 7A 36 - // Hd Id VCal---- Voltage- ICal---- Current- PCal---- Power--- Ad CF--- Ck - - uint8_t header = serial_in_buffer[0]; - if ((header & 0xFC) == 0xFC) { - AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Abnormal hardware")); - return; - } - - // Get chip calibration data (coefficients) and use as initial defaults - if (HLW_UREF_PULSE == Settings.energy_voltage_calibration) { - long voltage_coefficient = 191200; // uSec - if (CSE_NOT_CALIBRATED != header) { - voltage_coefficient = serial_in_buffer[2] << 16 | serial_in_buffer[3] << 8 | serial_in_buffer[4]; - } - Settings.energy_voltage_calibration = voltage_coefficient / CSE_UREF; - } - if (HLW_IREF_PULSE == Settings.energy_current_calibration) { - long current_coefficient = 16140; // uSec - if (CSE_NOT_CALIBRATED != header) { - current_coefficient = serial_in_buffer[8] << 16 | serial_in_buffer[9] << 8 | serial_in_buffer[10]; - } - Settings.energy_current_calibration = current_coefficient; - } - if (HLW_PREF_PULSE == Settings.energy_power_calibration) { - long power_coefficient = 5364000; // uSec - if (CSE_NOT_CALIBRATED != header) { - power_coefficient = serial_in_buffer[14] << 16 | serial_in_buffer[15] << 8 | serial_in_buffer[16]; - } - Settings.energy_power_calibration = power_coefficient / CSE_PREF; - } - - uint8_t adjustement = serial_in_buffer[20]; - voltage_cycle = serial_in_buffer[5] << 16 | serial_in_buffer[6] << 8 | serial_in_buffer[7]; - current_cycle = serial_in_buffer[11] << 16 | serial_in_buffer[12] << 8 | serial_in_buffer[13]; - power_cycle = serial_in_buffer[17] << 16 | serial_in_buffer[18] << 8 | serial_in_buffer[19]; - cf_pulses = serial_in_buffer[21] << 8 | serial_in_buffer[22]; - - if (energy_power_on) { // Powered on - if (adjustement & 0x40) { // Voltage valid - energy_voltage = (float)(Settings.energy_voltage_calibration * CSE_UREF) / (float)voltage_cycle; - } - if (adjustement & 0x10) { // Power valid - if ((header & 0xF2) == 0xF2) { // Power cycle exceeds range - energy_power = 0; - } else { - if (0 == power_cycle_first) power_cycle_first = power_cycle; // Skip first incomplete power_cycle - if (power_cycle_first != power_cycle) { - power_cycle_first = -1; - energy_power = (float)(Settings.energy_power_calibration * CSE_PREF) / (float)power_cycle; - } else { - energy_power = 0; - } - } - } else { - power_cycle_first = 0; - energy_power = 0; // Powered on but no load - } - if (adjustement & 0x20) { // Current valid - if (0 == energy_power) { - energy_current = 0; - } else { - energy_current = (float)Settings.energy_current_calibration / (float)current_cycle; - } - } - } else { // Powered off - power_cycle_first = 0; - energy_voltage = 0; - energy_power = 0; - energy_current = 0; - } -} - -bool CseSerialInput() -{ - if (cse_receive_flag) { - serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; - if (24 == serial_in_byte_counter) { - - AddLogSerial(LOG_LEVEL_DEBUG_MORE); - - uint8_t checksum = 0; - for (byte i = 2; i < 23; i++) { checksum += serial_in_buffer[i]; } - if (checksum == serial_in_buffer[23]) { - CseReceived(); - cse_receive_flag = 0; - return 1; - } else { - AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: " D_CHECKSUM_FAILURE)); - do { // Sync buffer with data (issue #1907 and #3425) - memmove(serial_in_buffer, serial_in_buffer +1, 24); - serial_in_byte_counter--; - } while ((serial_in_byte_counter > 2) && (0x5A != serial_in_buffer[1])); - if (0x5A != serial_in_buffer[1]) { - cse_receive_flag = 0; - serial_in_byte_counter = 0; - } - } - } - } else { - if ((0x5A == serial_in_byte) && (1 == serial_in_byte_counter)) { // 0x5A - Packet header 2 - cse_receive_flag = 1; - } else { - serial_in_byte_counter = 0; - } - serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; - } - serial_in_byte = 0; // Discard - return 0; -} - -void CseEverySecond() -{ - long cf_frequency = 0; - - if (CSE_PULSES_NOT_INITIALIZED == cf_pulses_last_time) { - cf_pulses_last_time = cf_pulses; // Init after restart - } else { - if (cf_pulses < cf_pulses_last_time) { // Rolled over after 65535 pulses - cf_frequency = (65536 - cf_pulses_last_time) + cf_pulses; - } else { - cf_frequency = cf_pulses - cf_pulses_last_time; - } - if (cf_frequency && energy_power) { - cf_pulses_last_time = cf_pulses; - energy_kWhtoday_delta += (cf_frequency * Settings.energy_power_calibration) / 36; - EnergyUpdateToday(); - } - } -} - -#ifdef USE_PZEM004T -/*********************************************************************************************\ - * PZEM004T - Energy - * - * Source: Victor Ferrer https://github.com/vicfergar/Sonoff-MQTT-OTA-Arduino - * Based on: PZEM004T library https://github.com/olehs/PZEM004T - * - * Hardware Serial will be selected if GPIO1 = [PZEM Rx] and [GPIO3 = PZEM Tx] -\*********************************************************************************************/ - -#include - -TasmotaSerial *PzemSerial; - -#define PZEM_VOLTAGE (uint8_t)0xB0 -#define RESP_VOLTAGE (uint8_t)0xA0 - -#define PZEM_CURRENT (uint8_t)0xB1 -#define RESP_CURRENT (uint8_t)0xA1 - -#define PZEM_POWER (uint8_t)0xB2 -#define RESP_POWER (uint8_t)0xA2 - -#define PZEM_ENERGY (uint8_t)0xB3 -#define RESP_ENERGY (uint8_t)0xA3 - -#define PZEM_SET_ADDRESS (uint8_t)0xB4 -#define RESP_SET_ADDRESS (uint8_t)0xA4 - -#define PZEM_POWER_ALARM (uint8_t)0xB5 -#define RESP_POWER_ALARM (uint8_t)0xA5 - -#define PZEM_DEFAULT_READ_TIMEOUT 500 - /*********************************************************************************************/ -struct PZEMCommand { - uint8_t command; - uint8_t addr[4]; - uint8_t data; - uint8_t crc; -}; - -IPAddress pzem_ip(192, 168, 1, 1); - -uint8_t PzemCrc(uint8_t *data) -{ - uint16_t crc = 0; - for (uint8_t i = 0; i < sizeof(PZEMCommand) -1; i++) crc += *data++; - return (uint8_t)(crc & 0xFF); -} - -void PzemSend(uint8_t cmd) -{ - PZEMCommand pzem; - - pzem.command = cmd; - for (uint8_t i = 0; i < sizeof(pzem.addr); i++) pzem.addr[i] = pzem_ip[i]; - pzem.data = 0; - - uint8_t *bytes = (uint8_t*)&pzem; - pzem.crc = PzemCrc(bytes); - - PzemSerial->flush(); - PzemSerial->write(bytes, sizeof(pzem)); -} - -bool PzemReceiveReady() -{ - return PzemSerial->available() >= (int)sizeof(PZEMCommand); -} - -bool PzemRecieve(uint8_t resp, float *data) -{ - // 0 1 2 3 4 5 6 - // A4 00 00 00 00 00 A4 - Set address - // A0 00 D4 07 00 00 7B - Voltage (212.7V) - // A1 00 00 0A 00 00 AB - Current (0.1A) - // A1 00 00 00 00 00 A1 - No current - // A2 00 16 00 00 00 B8 - Power (22W) - // A2 00 00 00 00 00 A2 - No power - // A3 00 08 A4 00 00 4F - Energy (2.212kWh) - // A3 01 86 9F 00 00 C9 - Energy (99.999kWh) - - uint8_t buffer[sizeof(PZEMCommand)] = { 0 }; - - unsigned long start = millis(); - uint8_t len = 0; - while ((len < sizeof(PZEMCommand)) && (millis() - start < PZEM_DEFAULT_READ_TIMEOUT)) { - if (PzemSerial->available() > 0) { - uint8_t c = (uint8_t)PzemSerial->read(); - if (!c && !len) { - continue; // skip 0 at startup - } - if ((1 == len) && (buffer[0] == c)) { - len--; - continue; // fix skewed data - } - buffer[len++] = c; - } - } - - AddLogSerial(LOG_LEVEL_DEBUG_MORE, buffer, len); - - if (len != sizeof(PZEMCommand)) { -// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem comms timeout")); - return false; - } - if (buffer[6] != PzemCrc(buffer)) { -// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem crc error")); - return false; - } - if (buffer[0] != resp) { -// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem bad response")); - return false; - } - - switch (resp) { - case RESP_VOLTAGE: - *data = (float)(buffer[1] << 8) + buffer[2] + (buffer[3] / 10.0); // 65535.x V - break; - case RESP_CURRENT: - *data = (float)(buffer[1] << 8) + buffer[2] + (buffer[3] / 100.0); // 65535.xx A - break; - case RESP_POWER: - *data = (float)(buffer[1] << 8) + buffer[2]; // 65535 W - break; - case RESP_ENERGY: - *data = (float)((uint32_t)buffer[1] << 16) + ((uint16_t)buffer[2] << 8) + buffer[3]; // 16777215 Wh - break; - } - return true; -} - -/*********************************************************************************************/ - -const uint8_t pzem_commands[] { PZEM_SET_ADDRESS, PZEM_VOLTAGE, PZEM_CURRENT, PZEM_POWER, PZEM_ENERGY }; -const uint8_t pzem_responses[] { RESP_SET_ADDRESS, RESP_VOLTAGE, RESP_CURRENT, RESP_POWER, RESP_ENERGY }; - -uint8_t pzem_read_state = 0; -uint8_t pzem_sendRetry = 0; - -void PzemEvery200ms() -{ - bool data_ready = PzemReceiveReady(); - - if (data_ready) { - float value = 0; - if (PzemRecieve(pzem_responses[pzem_read_state], &value)) { - switch (pzem_read_state) { - case 1: // Voltage as 230.2V - energy_voltage = value; - break; - case 2: // Current as 17.32A - energy_current = value; - break; - case 3: // Power as 20W - energy_power = value; - break; - case 4: // Total energy as 99999Wh - if (!energy_start || (value < energy_start)) energy_start = value; // Init after restart and hanlde roll-over if any - energy_kWhtoday += (value - energy_start) * 100; - energy_start = value; - EnergyUpdateToday(); - break; - } - pzem_read_state++; - if (5 == pzem_read_state) pzem_read_state = 1; - } - } - - if (0 == pzem_sendRetry || data_ready) { - pzem_sendRetry = 5; - PzemSend(pzem_commands[pzem_read_state]); - } - else { - pzem_sendRetry--; - } -} - -/********************************************************************************************/ -#endif // USE_PZEM004T - void Energy200ms() { energy_fifth_second++; if (5 == energy_fifth_second) { energy_fifth_second = 0; - if (ENERGY_HLW8012 == energy_flg) HlwEverySecond(); - if (ENERGY_CSE7766 == energy_flg) CseEverySecond(); + XnrgCall(FUNC_EVERY_SECOND); if (RtcTime.valid) { if (LocalTime() == Midnight()) { @@ -647,10 +120,7 @@ void Energy200ms() energy_power_on = (power &1) | Settings.flag.no_power_on_check; - if (ENERGY_HLW8012 == energy_flg) HlwEvery200ms(); -#ifdef USE_PZEM004T - if (ENERGY_PZEM004T == energy_flg) PzemEvery200ms(); -#endif // USE_PZEM004T + XnrgCall(FUNC_EVERY_200_MSECOND); float power_factor = 0; if (energy_voltage && energy_current && energy_power) { @@ -721,7 +191,7 @@ void EnergyMarginCheck() energy_voltage_u = (uint16_t)(energy_voltage); energy_current_u = (uint16_t)(energy_current * 1000); -// snprintf_P(log_data, sizeof(log_data), PSTR("HLW: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u); +// snprintf_P(log_data, sizeof(log_data), PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u); // AddLog(LOG_LEVEL_DEBUG); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{")); @@ -849,6 +319,7 @@ boolean EnergyCommand() unsigned long nvalue = 0; int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic, kEnergyCommands); + energy_command_code = command_code; if (-1 == command_code) { serviced = false; // Unknown command } @@ -936,63 +407,38 @@ boolean EnergyCommand() command, energy_total_chr, energy_yesterday_chr, energy_daily_chr); status_flag = 1; } - - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_POWERCAL == command_code)) { + else if ((CMND_POWERCAL == command_code) && XnrgCall(FUNC_COMMAND)) { if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { Settings.energy_power_calibration = (XdrvMailbox.payload > 4000) ? XdrvMailbox.payload : HLW_PREF_PULSE; // HLW = 12530, CSE = 5364 } nvalue = Settings.energy_power_calibration; unit = UNIT_MICROSECOND; } - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_POWERSET == command_code)) { // Watt - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601)) { - if ((ENERGY_HLW8012 == energy_flg) && hlw_cf_pulse_length) { - Settings.energy_power_calibration = (XdrvMailbox.payload * 10 * hlw_cf_pulse_length) / hlw_power_ratio; - } - else if ((ENERGY_CSE7766 == energy_flg) && power_cycle) { - Settings.energy_power_calibration = (XdrvMailbox.payload * power_cycle) / CSE_PREF; - } - } - snprintf_P(command, sizeof(command), PSTR(D_CMND_POWERCAL)); - nvalue = Settings.energy_power_calibration; - unit = UNIT_MICROSECOND; - } - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_VOLTAGECAL == command_code)) { + else if ((CMND_VOLTAGECAL == command_code) && XnrgCall(FUNC_COMMAND)) { if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { Settings.energy_voltage_calibration = (XdrvMailbox.payload > 999) ? XdrvMailbox.payload : HLW_UREF_PULSE; // HLW = 1950, CSE = 1912 } nvalue = Settings.energy_voltage_calibration; unit = UNIT_MICROSECOND; } - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_VOLTAGESET == command_code)) { // Volt - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501)) { - if ((ENERGY_HLW8012 == energy_flg) && hlw_cf1_voltage_pulse_length) { - Settings.energy_voltage_calibration = (XdrvMailbox.payload * 10 * hlw_cf1_voltage_pulse_length) / hlw_voltage_ratio; - } - else if ((ENERGY_CSE7766 == energy_flg) && voltage_cycle) { - Settings.energy_voltage_calibration = (XdrvMailbox.payload * voltage_cycle) / CSE_UREF; - } - } - snprintf_P(command, sizeof(command), PSTR(D_CMND_VOLTAGECAL)); - nvalue = Settings.energy_voltage_calibration; - unit = UNIT_MICROSECOND; - } - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_CURRENTCAL == command_code)) { + else if ((CMND_CURRENTCAL == command_code) && XnrgCall(FUNC_COMMAND)) { if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { Settings.energy_current_calibration = (XdrvMailbox.payload > 1100) ? XdrvMailbox.payload : HLW_IREF_PULSE; // HLW = 3500, CSE = 16140 } nvalue = Settings.energy_current_calibration; unit = UNIT_MICROSECOND; } - else if (((ENERGY_HLW8012 == energy_flg) || (ENERGY_CSE7766 == energy_flg)) && (CMND_CURRENTSET == command_code)) { // milliAmpere - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001)) { - if ((ENERGY_HLW8012 == energy_flg) && hlw_cf1_current_pulse_length) { - Settings.energy_current_calibration = (XdrvMailbox.payload * hlw_cf1_current_pulse_length) / hlw_current_ratio; - } - else if ((ENERGY_CSE7766 == energy_flg) && current_cycle) { - Settings.energy_current_calibration = (XdrvMailbox.payload * current_cycle) / 1000; - } - } + else if ((CMND_POWERSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Watt + snprintf_P(command, sizeof(command), PSTR(D_CMND_POWERCAL)); + nvalue = Settings.energy_power_calibration; + unit = UNIT_MICROSECOND; + } + else if ((CMND_VOLTAGESET == command_code) && XnrgCall(FUNC_COMMAND)) { // Volt + snprintf_P(command, sizeof(command), PSTR(D_CMND_VOLTAGECAL)); + nvalue = Settings.energy_voltage_calibration; + unit = UNIT_MICROSECOND; + } + else if ((CMND_CURRENTSET == command_code) && XnrgCall(FUNC_COMMAND)) { // milliAmpere snprintf_P(command, sizeof(command), PSTR(D_CMND_CURRENTCAL)); nvalue = Settings.energy_current_calibration; unit = UNIT_MICROSECOND; @@ -1070,38 +516,15 @@ boolean EnergyCommand() return serviced; } -/********************************************************************************************/ - void EnergyDrvInit() { energy_flg = ENERGY_NONE; - if ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // Sonoff Pow or any HLW8012 based device - energy_flg = ENERGY_HLW8012; - } else if ((SONOFF_S31 == Settings.module) || (SONOFF_POW_R2 == Settings.module)) { // Sonoff S31 or Sonoff Pow R2 - baudrate = 4800; - serial_config = SERIAL_8E1; - energy_flg = ENERGY_CSE7766; -#ifdef USE_PZEM004T - } else if ((pin[GPIO_PZEM_RX] < 99) && (pin[GPIO_PZEM_TX] < 99)) { // Any device with a Pzem004T - energy_flg = ENERGY_PZEM004T; -#endif // USE_PZEM004T - } + XnrgCall(FUNC_PRE_INIT); } void EnergySnsInit() { - if (ENERGY_HLW8012 == energy_flg) HlwInit(); - -#ifdef USE_PZEM004T - if (ENERGY_PZEM004T == energy_flg) { // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions - PzemSerial = new TasmotaSerial(pin[GPIO_PZEM_RX], pin[GPIO_PZEM_TX], 1); - if (PzemSerial->begin(9600)) { - if (PzemSerial->hardwareSerial()) { ClaimSerial(); } - } else { - energy_flg = ENERGY_NONE; - } - } -#endif // USE_PZEM004T + XnrgCall(FUNC_INIT); if (energy_flg) { energy_kWhtoday = (RtcSettingsValid()) ? RtcSettings.energy_kWhtoday : (RtcTime.day_of_year == Settings.energy_kWhdoy) ? Settings.energy_kWhtoday : 0; @@ -1192,17 +615,20 @@ boolean Xdrv03(byte function) { boolean result = false; - if (energy_flg) { + if (FUNC_PRE_INIT == function) { + EnergyDrvInit(); + } + else if (energy_flg) { switch (function) { - case FUNC_PRE_INIT: - EnergyDrvInit(); - break; case FUNC_COMMAND: result = EnergyCommand(); break; case FUNC_SET_POWER: EnergySetPowerSteadyCounter(); break; + case FUNC_SERIAL: + result = XnrgCall(FUNC_SERIAL); + break; } } return result; diff --git a/sonoff/xdrv_06_snfbridge.ino b/sonoff/xdrv_06_snfbridge.ino index 73c93d37448f..b0518f133b72 100644 --- a/sonoff/xdrv_06_snfbridge.ino +++ b/sonoff/xdrv_06_snfbridge.ino @@ -592,6 +592,9 @@ boolean Xdrv06(byte function) case FUNC_COMMAND: result = SonoffBridgeCommand(); break; + case FUNC_SERIAL: + result = SonoffBridgeSerialInput(); + break; } } return result; diff --git a/sonoff/xdsp_03_matrix.ino b/sonoff/xdsp_03_matrix.ino index aef33dbc34ae..4989ad24be51 100644 --- a/sonoff/xdsp_03_matrix.ino +++ b/sonoff/xdsp_03_matrix.ino @@ -253,6 +253,10 @@ void MatrixPrintLog(uint8_t direction) strncat(mtx_buffer, (const char*)txt +i, 1); } } + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer); + AddLog(LOG_LEVEL_DEBUG); + mtx_done = 1; } diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino new file mode 100644 index 000000000000..440112c1535f --- /dev/null +++ b/sonoff/xnrg_01_hlw8012.ino @@ -0,0 +1,283 @@ +/* + xnrg_01_hlw8012.ino - HLW8012 (Sonoff Pow) energy sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_HLW8012 +/*********************************************************************************************\ + * HLW8012, BL0937 or HJL-01 - Energy (Sonoff Pow, HuaFan, KMC70011, BlitzWolf) + * + * Based on Source: Shenzhen Heli Technology Co., Ltd +\*********************************************************************************************/ + +#define XNRG_01 1 + +// HLW8012 based (Sonoff Pow, KMC70011, HuaFan) +#define HLW_PREF 10000 // 1000.0W +#define HLW_UREF 2200 // 220.0V +#define HLW_IREF 4545 // 4.545A +#define HLW_SEL_VOLTAGE 1 + +// HJL-01 based (BlitzWolf, Homecube, Gosund) +#define HJL_PREF 1362 +#define HJL_UREF 822 +#define HJL_IREF 3300 +#define HJL_SEL_VOLTAGE 0 + +#define HLW_POWER_PROBE_TIME 10 // Number of seconds to probe for power before deciding none used + +static byte hlw_select_ui_flag; +static byte hlw_ui_flag = 1; +static byte hlw_load_off; +static byte hlw_cf1_timer; +static unsigned long hlw_cf_pulse_length; +static unsigned long hlw_cf_pulse_last_time; +static unsigned long hlw_cf1_pulse_length; +static unsigned long hlw_cf1_pulse_last_time; +static unsigned long hlw_cf1_summed_pulse_length; +static unsigned long hlw_cf1_pulse_counter; +static unsigned long hlw_cf1_voltage_pulse_length; +static unsigned long hlw_cf1_current_pulse_length; +static unsigned long hlw_energy_period_counter; + +static unsigned long hlw_power_ratio = 0; +static unsigned long hlw_voltage_ratio = 0; +static unsigned long hlw_current_ratio = 0; + +static unsigned long hlw_cf1_voltage_max_pulse_counter; +static unsigned long hlw_cf1_current_max_pulse_counter; + +#ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves exception +void HlwCfInterrupt() ICACHE_RAM_ATTR; +void HlwCf1Interrupt() ICACHE_RAM_ATTR; +#endif // USE_WS2812_DMA + +void HlwCfInterrupt() // Service Power +{ + unsigned long us = micros(); + + if (hlw_load_off) { // Restart plen measurement + hlw_cf_pulse_last_time = us; + hlw_load_off = 0; + } else { + hlw_cf_pulse_length = us - hlw_cf_pulse_last_time; + hlw_cf_pulse_last_time = us; + hlw_energy_period_counter++; + } +} + +void HlwCf1Interrupt() // Service Voltage and Current +{ + unsigned long us = micros(); + + hlw_cf1_pulse_length = us - hlw_cf1_pulse_last_time; + hlw_cf1_pulse_last_time = us; + if ((hlw_cf1_timer > 2) && (hlw_cf1_timer < 8)) { // Allow for 300 mSec set-up time and measure for up to 1 second + hlw_cf1_summed_pulse_length += hlw_cf1_pulse_length; + hlw_cf1_pulse_counter++; + if (10 == hlw_cf1_pulse_counter) { + hlw_cf1_timer = 8; // We need up to ten samples within 1 second (low current could take up to 0.3 second) + } + } +} + +/********************************************************************************************/ + +void HlwEvery200ms() +{ + unsigned long hlw_w = 0; + unsigned long hlw_u = 0; + unsigned long hlw_i = 0; + + if (micros() - hlw_cf_pulse_last_time > (HLW_POWER_PROBE_TIME * 1000000)) { + hlw_cf_pulse_length = 0; // No load for some time + hlw_load_off = 1; + } + + if (hlw_cf_pulse_length && energy_power_on && !hlw_load_off) { + hlw_w = (hlw_power_ratio * Settings.energy_power_calibration) / hlw_cf_pulse_length; + energy_power = (float)hlw_w / 10; + } else { + energy_power = 0; + } + + hlw_cf1_timer++; + if (hlw_cf1_timer >= 8) { + hlw_cf1_timer = 0; + hlw_select_ui_flag = (hlw_select_ui_flag) ? 0 : 1; + digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); + + if (hlw_cf1_pulse_counter) { + hlw_cf1_pulse_length = hlw_cf1_summed_pulse_length / hlw_cf1_pulse_counter; + } else { + hlw_cf1_pulse_length = 0; + } + if (hlw_select_ui_flag == hlw_ui_flag) { + hlw_cf1_voltage_pulse_length = hlw_cf1_pulse_length; + hlw_cf1_voltage_max_pulse_counter = hlw_cf1_pulse_counter; + + if (hlw_cf1_voltage_pulse_length && energy_power_on) { // If powered on always provide voltage + hlw_u = (hlw_voltage_ratio * Settings.energy_voltage_calibration) / hlw_cf1_voltage_pulse_length; + energy_voltage = (float)hlw_u / 10; + } else { + energy_voltage = 0; + } + + } else { + hlw_cf1_current_pulse_length = hlw_cf1_pulse_length; + hlw_cf1_current_max_pulse_counter = hlw_cf1_pulse_counter; + + if (hlw_cf1_current_pulse_length && energy_power) { // No current if no power being consumed + hlw_i = (hlw_current_ratio * Settings.energy_current_calibration) / hlw_cf1_current_pulse_length; + energy_current = (float)hlw_i / 1000; + } else { + energy_current = 0; + } + + } + hlw_cf1_summed_pulse_length = 0; + hlw_cf1_pulse_counter = 0; + } +} + +void HlwEverySecond() +{ + unsigned long hlw_len; + + if (hlw_energy_period_counter) { + hlw_len = 10000 / hlw_energy_period_counter; + hlw_energy_period_counter = 0; + if (hlw_len) { + energy_kWhtoday_delta += ((hlw_power_ratio * Settings.energy_power_calibration) / hlw_len) / 36; + EnergyUpdateToday(); + } + } +} + +void HlwSnsInit() +{ + if (!Settings.energy_power_calibration || (4975 == Settings.energy_power_calibration)) { + Settings.energy_power_calibration = HLW_PREF_PULSE; + Settings.energy_voltage_calibration = HLW_UREF_PULSE; + Settings.energy_current_calibration = HLW_IREF_PULSE; + } + + if (BLITZWOLF_BWSHP2 == Settings.module) { + hlw_power_ratio = HJL_PREF; + hlw_voltage_ratio = HJL_UREF; + hlw_current_ratio = HJL_IREF; + hlw_ui_flag = HJL_SEL_VOLTAGE; + } else { + hlw_power_ratio = HLW_PREF; + hlw_voltage_ratio = HLW_UREF; + hlw_current_ratio = HLW_IREF; + hlw_ui_flag = HLW_SEL_VOLTAGE; + } + + hlw_cf_pulse_length = 0; + hlw_cf_pulse_last_time = 0; + hlw_cf1_pulse_length = 0; + hlw_cf1_pulse_last_time = 0; + hlw_cf1_voltage_pulse_length = 0; + hlw_cf1_current_pulse_length = 0; + hlw_cf1_voltage_max_pulse_counter = 0; + hlw_cf1_current_max_pulse_counter = 0; + + hlw_load_off = 1; + hlw_energy_period_counter = 0; + + hlw_select_ui_flag = 0; // Voltage; + + pinMode(pin[GPIO_HLW_SEL], OUTPUT); + digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); + pinMode(pin[GPIO_HLW_CF1], INPUT_PULLUP); + attachInterrupt(pin[GPIO_HLW_CF1], HlwCf1Interrupt, FALLING); + pinMode(pin[GPIO_HLW_CF], INPUT_PULLUP); + attachInterrupt(pin[GPIO_HLW_CF], HlwCfInterrupt, FALLING); + + hlw_cf1_timer = 0; +} + +void HlwDrvInit() +{ + if (!energy_flg) { + if ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // Sonoff Pow or any HLW8012 based device + energy_flg = XNRG_01; + } + } +} + +boolean HlwCommand() +{ + boolean serviced = true; + + if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { + + } + else if (CMND_POWERSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && hlw_cf_pulse_length) { + Settings.energy_power_calibration = (XdrvMailbox.payload * 10 * hlw_cf_pulse_length) / hlw_power_ratio; + } + } + else if (CMND_VOLTAGESET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && hlw_cf1_voltage_pulse_length) { + Settings.energy_voltage_calibration = (XdrvMailbox.payload * 10 * hlw_cf1_voltage_pulse_length) / hlw_voltage_ratio; + } + } + else if (CMND_CURRENTSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && hlw_cf1_current_pulse_length) { + Settings.energy_current_calibration = (XdrvMailbox.payload * hlw_cf1_current_pulse_length) / hlw_current_ratio; + } + } + else serviced = false; // Unknown command + + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +int Xnrg01(byte function) +{ + int result = 0; + + if (FUNC_PRE_INIT == function) { + HlwDrvInit(); + } + else if (XNRG_01 == energy_flg) { + switch (function) { + case FUNC_INIT: + HlwSnsInit(); + break; + case FUNC_EVERY_SECOND: + HlwEverySecond(); + break; + case FUNC_EVERY_200_MSECOND: + HlwEvery200ms(); + break; + case FUNC_COMMAND: + result = HlwCommand(); + break; + } + } + return result; +} + +#endif // USE_HLW8012 +#endif // USE_ENERGY_SENSOR diff --git a/sonoff/xnrg_02_cse7766.ino b/sonoff/xnrg_02_cse7766.ino new file mode 100644 index 000000000000..640da704ecc7 --- /dev/null +++ b/sonoff/xnrg_02_cse7766.ino @@ -0,0 +1,248 @@ +/* + xnrg_02_cse7766.ino - CSE7766 energy sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_CSE7766 +/*********************************************************************************************\ + * CSE7766 - Energy (Sonoff S31 and Sonoff Pow R2) + * + * Based on datasheet from http://www.chipsea.com/UploadFiles/2017/08/11144342F01B5662.pdf +\*********************************************************************************************/ + +#define XNRG_02 2 + +#define CSE_NOT_CALIBRATED 0xAA + +#define CSE_PULSES_NOT_INITIALIZED -1 + +#define CSE_PREF 1000 +#define CSE_UREF 100 + +uint8_t cse_receive_flag = 0; + +long voltage_cycle = 0; +long current_cycle = 0; +long power_cycle = 0; +unsigned long power_cycle_first = 0; +long cf_pulses = 0; +long cf_pulses_last_time = CSE_PULSES_NOT_INITIALIZED; + +void CseReceived() +{ + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + // 55 5A 02 F7 60 00 03 AB 00 40 10 02 60 5D 51 A6 58 03 E9 EF 71 0B 7A 36 + // Hd Id VCal---- Voltage- ICal---- Current- PCal---- Power--- Ad CF--- Ck + + uint8_t header = serial_in_buffer[0]; + if ((header & 0xFC) == 0xFC) { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Abnormal hardware")); + return; + } + + // Get chip calibration data (coefficients) and use as initial defaults + if (HLW_UREF_PULSE == Settings.energy_voltage_calibration) { + long voltage_coefficient = 191200; // uSec + if (CSE_NOT_CALIBRATED != header) { + voltage_coefficient = serial_in_buffer[2] << 16 | serial_in_buffer[3] << 8 | serial_in_buffer[4]; + } + Settings.energy_voltage_calibration = voltage_coefficient / CSE_UREF; + } + if (HLW_IREF_PULSE == Settings.energy_current_calibration) { + long current_coefficient = 16140; // uSec + if (CSE_NOT_CALIBRATED != header) { + current_coefficient = serial_in_buffer[8] << 16 | serial_in_buffer[9] << 8 | serial_in_buffer[10]; + } + Settings.energy_current_calibration = current_coefficient; + } + if (HLW_PREF_PULSE == Settings.energy_power_calibration) { + long power_coefficient = 5364000; // uSec + if (CSE_NOT_CALIBRATED != header) { + power_coefficient = serial_in_buffer[14] << 16 | serial_in_buffer[15] << 8 | serial_in_buffer[16]; + } + Settings.energy_power_calibration = power_coefficient / CSE_PREF; + } + + uint8_t adjustement = serial_in_buffer[20]; + voltage_cycle = serial_in_buffer[5] << 16 | serial_in_buffer[6] << 8 | serial_in_buffer[7]; + current_cycle = serial_in_buffer[11] << 16 | serial_in_buffer[12] << 8 | serial_in_buffer[13]; + power_cycle = serial_in_buffer[17] << 16 | serial_in_buffer[18] << 8 | serial_in_buffer[19]; + cf_pulses = serial_in_buffer[21] << 8 | serial_in_buffer[22]; + + if (energy_power_on) { // Powered on + if (adjustement & 0x40) { // Voltage valid + energy_voltage = (float)(Settings.energy_voltage_calibration * CSE_UREF) / (float)voltage_cycle; + } + if (adjustement & 0x10) { // Power valid + if ((header & 0xF2) == 0xF2) { // Power cycle exceeds range + energy_power = 0; + } else { + if (0 == power_cycle_first) power_cycle_first = power_cycle; // Skip first incomplete power_cycle + if (power_cycle_first != power_cycle) { + power_cycle_first = -1; + energy_power = (float)(Settings.energy_power_calibration * CSE_PREF) / (float)power_cycle; + } else { + energy_power = 0; + } + } + } else { + power_cycle_first = 0; + energy_power = 0; // Powered on but no load + } + if (adjustement & 0x20) { // Current valid + if (0 == energy_power) { + energy_current = 0; + } else { + energy_current = (float)Settings.energy_current_calibration / (float)current_cycle; + } + } + } else { // Powered off + power_cycle_first = 0; + energy_voltage = 0; + energy_power = 0; + energy_current = 0; + } +} + +bool CseSerialInput() +{ + if (cse_receive_flag) { + serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; + if (24 == serial_in_byte_counter) { + + AddLogSerial(LOG_LEVEL_DEBUG_MORE); + + uint8_t checksum = 0; + for (byte i = 2; i < 23; i++) { checksum += serial_in_buffer[i]; } + if (checksum == serial_in_buffer[23]) { + CseReceived(); + cse_receive_flag = 0; + return 1; + } else { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: " D_CHECKSUM_FAILURE)); + do { // Sync buffer with data (issue #1907 and #3425) + memmove(serial_in_buffer, serial_in_buffer +1, 24); + serial_in_byte_counter--; + } while ((serial_in_byte_counter > 2) && (0x5A != serial_in_buffer[1])); + if (0x5A != serial_in_buffer[1]) { + cse_receive_flag = 0; + serial_in_byte_counter = 0; + } + } + } + } else { + if ((0x5A == serial_in_byte) && (1 == serial_in_byte_counter)) { // 0x5A - Packet header 2 + cse_receive_flag = 1; + } else { + serial_in_byte_counter = 0; + } + serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; + } + serial_in_byte = 0; // Discard + return 0; +} + +/********************************************************************************************/ + +void CseEverySecond() +{ + long cf_frequency = 0; + + if (CSE_PULSES_NOT_INITIALIZED == cf_pulses_last_time) { + cf_pulses_last_time = cf_pulses; // Init after restart + } else { + if (cf_pulses < cf_pulses_last_time) { // Rolled over after 65535 pulses + cf_frequency = (65536 - cf_pulses_last_time) + cf_pulses; + } else { + cf_frequency = cf_pulses - cf_pulses_last_time; + } + if (cf_frequency && energy_power) { + cf_pulses_last_time = cf_pulses; + energy_kWhtoday_delta += (cf_frequency * Settings.energy_power_calibration) / 36; + EnergyUpdateToday(); + } + } +} + +void CseDrvInit() +{ + if (!energy_flg) { + if ((SONOFF_S31 == Settings.module) || (SONOFF_POW_R2 == Settings.module)) { // Sonoff S31 or Sonoff Pow R2 + baudrate = 4800; + serial_config = SERIAL_8E1; + energy_flg = XNRG_02; + } + } +} + +boolean CseCommand() +{ + boolean serviced = true; + + if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { + + } + else if (CMND_POWERSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && power_cycle) { + Settings.energy_power_calibration = (XdrvMailbox.payload * power_cycle) / CSE_PREF; + } + } + else if (CMND_VOLTAGESET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && voltage_cycle) { + Settings.energy_voltage_calibration = (XdrvMailbox.payload * voltage_cycle) / CSE_UREF; + } + } + else if (CMND_CURRENTSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && current_cycle) { + Settings.energy_current_calibration = (XdrvMailbox.payload * current_cycle) / 1000; + } + } + else serviced = false; // Unknown command + + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +int Xnrg02(byte function) +{ + int result = 0; + + if (FUNC_PRE_INIT == function) { + CseDrvInit(); + } + else if (XNRG_02 == energy_flg) { + switch (function) { + case FUNC_EVERY_SECOND: + CseEverySecond(); + break; + case FUNC_COMMAND: + result = CseCommand(); + break; + case FUNC_SERIAL: + result = CseSerialInput(); + break; + } + } + return result; +} + +#endif // USE_CSE7766 +#endif // USE_ENERGY_SENSOR diff --git a/sonoff/xnrg_03_pzem004t.ino b/sonoff/xnrg_03_pzem004t.ino new file mode 100644 index 000000000000..d009feea4ce1 --- /dev/null +++ b/sonoff/xnrg_03_pzem004t.ino @@ -0,0 +1,248 @@ +/* + xnrg_03_pzem004t.ino - PZEM004T energy sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_PZEM004T +/*********************************************************************************************\ + * PZEM004T - Energy + * + * Source: Victor Ferrer https://github.com/vicfergar/Sonoff-MQTT-OTA-Arduino + * Based on: PZEM004T library https://github.com/olehs/PZEM004T + * + * Hardware Serial will be selected if GPIO1 = [PZEM Rx] and [GPIO3 = PZEM Tx] +\*********************************************************************************************/ + +#define XNRG_03 3 + +#include + +TasmotaSerial *PzemSerial; + +#define PZEM_VOLTAGE (uint8_t)0xB0 +#define RESP_VOLTAGE (uint8_t)0xA0 + +#define PZEM_CURRENT (uint8_t)0xB1 +#define RESP_CURRENT (uint8_t)0xA1 + +#define PZEM_POWER (uint8_t)0xB2 +#define RESP_POWER (uint8_t)0xA2 + +#define PZEM_ENERGY (uint8_t)0xB3 +#define RESP_ENERGY (uint8_t)0xA3 + +#define PZEM_SET_ADDRESS (uint8_t)0xB4 +#define RESP_SET_ADDRESS (uint8_t)0xA4 + +#define PZEM_POWER_ALARM (uint8_t)0xB5 +#define RESP_POWER_ALARM (uint8_t)0xA5 + +#define PZEM_DEFAULT_READ_TIMEOUT 500 + +/*********************************************************************************************/ + +struct PZEMCommand { + uint8_t command; + uint8_t addr[4]; + uint8_t data; + uint8_t crc; +}; + +IPAddress pzem_ip(192, 168, 1, 1); + +uint8_t PzemCrc(uint8_t *data) +{ + uint16_t crc = 0; + for (uint8_t i = 0; i < sizeof(PZEMCommand) -1; i++) crc += *data++; + return (uint8_t)(crc & 0xFF); +} + +void PzemSend(uint8_t cmd) +{ + PZEMCommand pzem; + + pzem.command = cmd; + for (uint8_t i = 0; i < sizeof(pzem.addr); i++) pzem.addr[i] = pzem_ip[i]; + pzem.data = 0; + + uint8_t *bytes = (uint8_t*)&pzem; + pzem.crc = PzemCrc(bytes); + + PzemSerial->flush(); + PzemSerial->write(bytes, sizeof(pzem)); +} + +bool PzemReceiveReady() +{ + return PzemSerial->available() >= (int)sizeof(PZEMCommand); +} + +bool PzemRecieve(uint8_t resp, float *data) +{ + // 0 1 2 3 4 5 6 + // A4 00 00 00 00 00 A4 - Set address + // A0 00 D4 07 00 00 7B - Voltage (212.7V) + // A1 00 00 0A 00 00 AB - Current (0.1A) + // A1 00 00 00 00 00 A1 - No current + // A2 00 16 00 00 00 B8 - Power (22W) + // A2 00 00 00 00 00 A2 - No power + // A3 00 08 A4 00 00 4F - Energy (2.212kWh) + // A3 01 86 9F 00 00 C9 - Energy (99.999kWh) + + uint8_t buffer[sizeof(PZEMCommand)] = { 0 }; + + unsigned long start = millis(); + uint8_t len = 0; + while ((len < sizeof(PZEMCommand)) && (millis() - start < PZEM_DEFAULT_READ_TIMEOUT)) { + if (PzemSerial->available() > 0) { + uint8_t c = (uint8_t)PzemSerial->read(); + if (!c && !len) { + continue; // skip 0 at startup + } + if ((1 == len) && (buffer[0] == c)) { + len--; + continue; // fix skewed data + } + buffer[len++] = c; + } + } + + AddLogSerial(LOG_LEVEL_DEBUG_MORE, buffer, len); + + if (len != sizeof(PZEMCommand)) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem comms timeout")); + return false; + } + if (buffer[6] != PzemCrc(buffer)) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem crc error")); + return false; + } + if (buffer[0] != resp) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem bad response")); + return false; + } + + switch (resp) { + case RESP_VOLTAGE: + *data = (float)(buffer[1] << 8) + buffer[2] + (buffer[3] / 10.0); // 65535.x V + break; + case RESP_CURRENT: + *data = (float)(buffer[1] << 8) + buffer[2] + (buffer[3] / 100.0); // 65535.xx A + break; + case RESP_POWER: + *data = (float)(buffer[1] << 8) + buffer[2]; // 65535 W + break; + case RESP_ENERGY: + *data = (float)((uint32_t)buffer[1] << 16) + ((uint16_t)buffer[2] << 8) + buffer[3]; // 16777215 Wh + break; + } + return true; +} + +/*********************************************************************************************/ + +const uint8_t pzem_commands[] { PZEM_SET_ADDRESS, PZEM_VOLTAGE, PZEM_CURRENT, PZEM_POWER, PZEM_ENERGY }; +const uint8_t pzem_responses[] { RESP_SET_ADDRESS, RESP_VOLTAGE, RESP_CURRENT, RESP_POWER, RESP_ENERGY }; + +uint8_t pzem_read_state = 0; +uint8_t pzem_sendRetry = 0; + +void PzemEvery200ms() +{ + bool data_ready = PzemReceiveReady(); + + if (data_ready) { + float value = 0; + if (PzemRecieve(pzem_responses[pzem_read_state], &value)) { + switch (pzem_read_state) { + case 1: // Voltage as 230.2V + energy_voltage = value; + break; + case 2: // Current as 17.32A + energy_current = value; + break; + case 3: // Power as 20W + energy_power = value; + break; + case 4: // Total energy as 99999Wh + if (!energy_start || (value < energy_start)) energy_start = value; // Init after restart and hanlde roll-over if any + energy_kWhtoday += (value - energy_start) * 100; + energy_start = value; + EnergyUpdateToday(); + break; + } + pzem_read_state++; + if (5 == pzem_read_state) pzem_read_state = 1; + } + } + + if (0 == pzem_sendRetry || data_ready) { + pzem_sendRetry = 5; + PzemSend(pzem_commands[pzem_read_state]); + } + else { + pzem_sendRetry--; + } +} + +void PzemSnsInit() +{ + // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions + PzemSerial = new TasmotaSerial(pin[GPIO_PZEM_RX], pin[GPIO_PZEM_TX], 1); + if (PzemSerial->begin(9600)) { + if (PzemSerial->hardwareSerial()) { ClaimSerial(); } + } else { + energy_flg = ENERGY_NONE; + } +} + +void PzemDrvInit() +{ + if (!energy_flg) { + if ((pin[GPIO_PZEM_RX] < 99) && (pin[GPIO_PZEM_TX] < 99)) { // Any device with a Pzem004T + energy_flg = XNRG_03; + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +int Xnrg03(byte function) +{ + int result = 0; + + if (FUNC_PRE_INIT == function) { + PzemDrvInit(); + } + else if (XNRG_03 == energy_flg) { + switch (function) { + case FUNC_INIT: + PzemSnsInit(); + break; + case FUNC_EVERY_200_MSECOND: + PzemEvery200ms(); + break; + } + } + return result; +} + +#endif // USE_PZEM004T +#endif // USE_ENERGY_SENSOR diff --git a/sonoff/xnrg_interface.ino b/sonoff/xnrg_interface.ino new file mode 100644 index 000000000000..d9726ac05fce --- /dev/null +++ b/sonoff/xnrg_interface.ino @@ -0,0 +1,57 @@ +/* + xnrg_interface.ino - Energy driver interface support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends inspired by ESPEasy + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +int (* const xnrg_func_ptr[])(byte) PROGMEM = { // Energy driver Function Pointers +#ifdef XNRG_01 + &Xnrg01, +#endif + +#ifdef XNRG_02 + &Xnrg02, +#endif + +#ifdef XNRG_03 + &Xnrg03, +#endif + +#ifdef XNRG_04 + &Xnrg04, +#endif + +#ifdef XNRG_05 + &Xnrg05, +#endif + +#ifdef XNRG_06 + &Xnrg06 +#endif +}; + +const uint8_t xnrg_present = sizeof(xnrg_func_ptr) / sizeof(xnrg_func_ptr[0]); // Number of drivers found + +int XnrgCall(byte Function) +{ + int result = 0; + + for (byte x = 0; x < xnrg_present; x++) { + result = xnrg_func_ptr[x](Function); + if (result) break; + } + return result; +} From e7ae727c659b5471fbc2713d20e9341dba36560f Mon Sep 17 00:00:00 2001 From: MadDoct <32080323+MadDoct@users.noreply.github.com> Date: Tue, 4 Sep 2018 18:53:44 +0100 Subject: [PATCH 036/798] Update sonoff.ino --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 12aea14e9cd9..9ada9f656871 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2362,7 +2362,7 @@ void GpioInit() if (mpin) pin[mpin] = i; } - if ((2 == pin[GPIO_TXD]) || (Settings.module == 20)) Serial.set_tx(2); + if ((2 == pin[GPIO_TXD]) || (H801 == Settings.module)) Serial.set_tx(2); analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h) analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) From bd0323f6f28df037aed04a476798291acaf31cb5 Mon Sep 17 00:00:00 2001 From: gitolicious Date: Tue, 4 Sep 2018 22:43:27 +0200 Subject: [PATCH 037/798] Added toggle function for RGBW lights #3695 Proposed fix for #3695 --- sonoff/xdrv_04_light.ino | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 22fce0c337d0..f8dde0ce6020 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -69,6 +69,12 @@ struct LRgbColor { const LRgbColor kFixedColor[MAX_FIXED_COLOR] PROGMEM = { 255,0,0, 0,255,0, 0,0,255, 228,32,0, 0,228,32, 0,32,228, 188,64,0, 0,160,96, 160,32,240, 255,255,0, 255,0,170, 255,255,255 }; +struct LWColor { + uint8_t W; +}; +#define MAX_FIXED_WHITE 3 +const LWColor kFixedWhite[MAX_FIXED_WHITE] PROGMEM = { 0, 255, 128 }; + struct LCwColor { uint8_t C, W; }; @@ -1006,7 +1012,11 @@ boolean LightColorEntry(char *buffer, uint8_t buffer_length) entry_type = 1; // Hexadecimal } else if ((value > 199) && (value <= 199 + MAX_FIXED_COLD_WARM)) { - if (LST_COLDWARM == light_subtype) { + if (LST_RGBW == light_subtype) { + memcpy_P(&light_entry_color[3], &kFixedWhite[value -200], 1); + entry_type = 1; // Hexadecimal + } + else if (LST_COLDWARM == light_subtype) { memcpy_P(&light_entry_color, &kFixedColdWarm[value -200], 2); entry_type = 1; // Hexadecimal } From 170013c1e13860c33da91014ee73beec3cbe5d50 Mon Sep 17 00:00:00 2001 From: gitolicious Date: Tue, 4 Sep 2018 23:03:19 +0200 Subject: [PATCH 038/798] Added 4th dimming step It wasn't a good idea to cycle through three dimming steps only, as the 4th would be triggered by the toggle, but nothing happened (`Color 203` got ignored). --- sonoff/xdrv_04_light.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index f8dde0ce6020..209fe467a028 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -72,8 +72,8 @@ const LRgbColor kFixedColor[MAX_FIXED_COLOR] PROGMEM = struct LWColor { uint8_t W; }; -#define MAX_FIXED_WHITE 3 -const LWColor kFixedWhite[MAX_FIXED_WHITE] PROGMEM = { 0, 255, 128 }; +#define MAX_FIXED_WHITE 4 +const LWColor kFixedWhite[MAX_FIXED_WHITE] PROGMEM = { 0, 255, 128, 32 }; struct LCwColor { uint8_t C, W; From 28e3773113360d2056dd7f1c065c436a1cc07917 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 10:58:56 +0200 Subject: [PATCH 039/798] v6.2.1 Version 6.2.1 20180905 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) * Fix possible exception due to buffer overflow (#3659) * Fix lost energy today and total energy value after power cycle (#3689) --- RELEASENOTES.md | 6 +++++ sonoff/_changelog.ino | 8 +++++- sonoff/language/bg-BG.h | 16 +++++++----- sonoff/language/es-AR.h | 6 +++-- sonoff/settings.h | 10 ++++--- sonoff/settings.ino | 43 +++++++++++++++++++++++++++---- sonoff/sonoff.ino | 24 ++++++++--------- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 10 +++---- sonoff/xdrv_02_webserver.ino | 3 +-- sonoff/xplg_wemohue.ino | 9 +++++-- sonoff/xsns_01_counter.ino | 2 +- sonoff/xsns_05_ds18x20_legacy.ino | 2 +- sonoff/xsns_12_ads1115.ino | 2 +- sonoff/xsns_12_ads1115_i2cdev.ino | 2 +- 15 files changed, 101 insertions(+), 44 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7cacefa47c25..8cf1a0022667 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,6 +104,12 @@ See [Tasmota ESP/Arduino library version related issues](https://github.com/aren | USE_RF_FLASH | - | - | x | x | x | ## Changelog +Version 6.2.1 20180905 + * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) + * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) + * Fix possible exception due to buffer overflow (#3659) + * Fix lost energy today and total energy value after power cycle (#3689) + Version 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) * Disable wifi sleep for both Esp8266/Arduino core 2.4.1 and 2.4.2 to solve device freeze caused by Espressif SDK bug (#3554) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b95a6ce0edce..101ab2f61dc1 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,10 @@ -/* 6.2.0 20180901 +/* 6.2.1 20180905 + * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) + * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) + * Fix possible exception due to buffer overflow (#3659) + * Fix lost energy today and total energy value after power cycle (#3689) + * + * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) * Disable wifi sleep for both Esp8266/Arduino core 2.4.1 and 2.4.2 to solve device freeze caused by Espressif SDK bug (#3554) * Change DS18B20 driver to provide better instant results diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 6421441b715e..b1ecd6fa655b 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1.5 + * Updated until v6.2.0.1 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -60,10 +60,12 @@ #define D_BLINKOFF "Мигане изкл." #define D_BOOT_COUNT "Брой на стартиранията" #define D_BRIGHTLIGHT "Яркост" +#define D_BSSID "BSSId" #define D_BUTTON "Бутон" #define D_BY "от" // Written by me #define D_BYTES "Байта" #define D_CELSIUS "Целзий" +#define D_CHANNEL "Канал" #define D_CO2 "Въглероден диоксид" #define D_CODE "код" // Button code #define D_COLDLIGHT "Хладна" @@ -438,12 +440,12 @@ #define D_PARTICALS_BEYOND "Частици" // xsns_32_mpu6050.ino -#define D_AX_AXIS "Accel. X-Axis" -#define D_AY_AXIS "Accel. Y-Axis" -#define D_AZ_AXIS "Accel. Z-Axis" -#define D_GX_AXIS "Gyro X-Axis" -#define D_GY_AXIS "Gyro Y-Axis" -#define D_GZ_AXIS "Gyro Z-Axis" +#define D_AX_AXIS "Ускорение - ос X" +#define D_AY_AXIS "Ускорение - ос Y" +#define D_AZ_AXIS "Ускорение - ос Z" +#define D_GX_AXIS "Жироскоп - ос X" +#define D_GY_AXIS "Жироскоп - ос Y" +#define D_GZ_AXIS "Жироскоп - ос Z" // sonoff_template.h #define D_SENSOR_NONE "Няма" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 68e9141ea2fb..986b9507fa67 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1c + * Updated until v6.2.0.1 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -60,10 +60,12 @@ #define D_BLINKOFF "BlinkOff" #define D_BOOT_COUNT "Conteo Reinicios" #define D_BRIGHTLIGHT "Brillante" +#define D_BSSID "BSSId" #define D_BUTTON "Botón" #define D_BY "por" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" +#define D_CHANNEL "Canal" #define D_CO2 "CO2" #define D_CODE "código" // Button code #define D_COLDLIGHT "Fría" @@ -460,7 +462,7 @@ #define D_SENSOR_RELAY "Relé" // Suffix "1i" #define D_SENSOR_LED "Led" // Suffix "1i" #define D_SENSOR_PWM "PWM" // Suffix "1" -#define D_SENSOR_COUNTER "Counter" // Suffix "1" +#define D_SENSOR_COUNTER "Contador" // Suffix "1" #define D_SENSOR_IRRECV "IR RX" #define D_SENSOR_MHZ_RX "MHZ Rx" #define D_SENSOR_MHZ_TX "MHZ Tx" diff --git a/sonoff/settings.h b/sonoff/settings.h index ded2c140b6f0..3876baf60a84 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -333,6 +333,12 @@ struct SYSCFG { // E00 - FFF free locations } Settings; +struct RTCRBT { + uint16_t valid; // 000 + uint8_t fast_reboot_count; // 002 + uint8_t free_003[1]; // 003 +} RtcReboot; + struct RTCMEM { uint16_t valid; // 000 byte oswatch_blocked_loop; // 002 @@ -341,9 +347,7 @@ struct RTCMEM { unsigned long energy_kWhtotal; // 008 unsigned long pulse_counter[MAX_COUNTERS]; // 00C power_t power; // 01C - uint16_t extended_valid; // 020 Extended valid flag (v6.1.1.14) - uint8_t fast_reboot_count; // 022 - uint8_t free_023[57]; // 023 + uint8_t free_020[60]; // 020 // 05C next free location (64 (=core) + 100 (=tasmota offset) + 92 (=0x5C RTCMEM struct) = 256 bytes (max = 512)) } RtcSettings; diff --git a/sonoff/settings.ino b/sonoff/settings.ino index cba043696e30..5626f862bd12 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -84,7 +84,6 @@ void RtcSettingsSave() { if (GetRtcSettingsCrc() != rtc_settings_crc) { RtcSettings.valid = RTC_MEM_VALID; - RtcSettings.extended_valid = RTC_MEM_VALID; ESP.rtcUserMemoryWrite(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); rtc_settings_crc = GetRtcSettingsCrc(); #ifdef DEBUG_THEO @@ -104,14 +103,12 @@ void RtcSettingsLoad() if (RtcSettings.valid != RTC_MEM_VALID) { memset(&RtcSettings, 0, sizeof(RTCMEM)); RtcSettings.valid = RTC_MEM_VALID; - RtcSettings.extended_valid = RTC_MEM_VALID; RtcSettings.energy_kWhtoday = Settings.energy_kWhtoday; RtcSettings.energy_kWhtotal = Settings.energy_kWhtotal; for (byte i = 0; i < MAX_COUNTERS; i++) { RtcSettings.pulse_counter[i] = Settings.pulse_counter[i]; } RtcSettings.power = Settings.power; -// RtcSettings.fast_reboot_count = 0; // Explicit by memset RtcSettingsSave(); } rtc_settings_crc = GetRtcSettingsCrc(); @@ -122,9 +119,45 @@ boolean RtcSettingsValid() return (RTC_MEM_VALID == RtcSettings.valid); } -boolean RtcSettingsExtendedValid() +/********************************************************************************************/ + +uint32_t rtc_reboot_crc = 0; + +uint32_t GetRtcRebootCrc() +{ + uint32_t crc = 0; + uint8_t *bytes = (uint8_t*)&RtcReboot; + + for (uint16_t i = 0; i < sizeof(RTCRBT); i++) { + crc += bytes[i]*(i+1); + } + return crc; +} + +void RtcRebootSave() +{ + if (GetRtcRebootCrc() != rtc_reboot_crc) { + RtcReboot.valid = RTC_MEM_VALID; + ESP.rtcUserMemoryWrite(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); + rtc_reboot_crc = GetRtcRebootCrc(); + } +} + +void RtcRebootLoad() +{ + ESP.rtcUserMemoryRead(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); + if (RtcReboot.valid != RTC_MEM_VALID) { + memset(&RtcReboot, 0, sizeof(RTCRBT)); + RtcReboot.valid = RTC_MEM_VALID; +// RtcReboot.fast_reboot_count = 0; // Explicit by memset + RtcRebootSave(); + } + rtc_reboot_crc = GetRtcRebootCrc(); +} + +boolean RtcRebootValid() { - return (RTC_MEM_VALID == RtcSettings.extended_valid); + return (RTC_MEM_VALID == RtcReboot.valid); } /*********************************************************************************************\ diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 254f881842f4..f99262d90688 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -442,7 +442,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) ShowFreeMem(PSTR("MqttDataHandler")); - strncpy(topicBuf, topic, sizeof(topicBuf)); + strlcpy(topicBuf, topic, sizeof(topicBuf)); for (i = 0; i < data_len; i++) { if (!isspace(data[i])) break; } @@ -1568,8 +1568,8 @@ void PerformEverySecond() uptime++; if (BOOT_LOOP_TIME == uptime) { - RtcSettings.fast_reboot_count = 0; - RtcSettingsSave(); + RtcReboot.fast_reboot_count = 0; + RtcRebootSave(); } if ((4 == uptime) && (SONOFF_IFAN02 == Settings.module)) { // Microcontroller needs 3 seconds before accepting commands @@ -2491,10 +2491,10 @@ void setup() { byte idx; - RtcSettingsLoad(); - if (!RtcSettingsExtendedValid()) { RtcSettings.fast_reboot_count = 0; } - RtcSettings.fast_reboot_count++; - RtcSettingsSave(); + RtcRebootLoad(); + if (!RtcRebootValid()) { RtcReboot.fast_reboot_count = 0; } + RtcReboot.fast_reboot_count++; + RtcRebootSave(); Serial.begin(baudrate); delay(10); @@ -2528,26 +2528,26 @@ void setup() sleep = Settings.sleep; // Disable functionality as possible cause of fast restart within BOOT_LOOP_TIME seconds (Exception, WDT or restarts) - if (RtcSettings.fast_reboot_count > 1) { // Restart twice + if (RtcReboot.fast_reboot_count > 1) { // Restart twice Settings.flag3.user_esp8285_enable = 0; // Disable ESP8285 Generic GPIOs interfering with flash SPI - if (RtcSettings.fast_reboot_count > 2) { // Restart 3 times + if (RtcReboot.fast_reboot_count > 2) { // Restart 3 times for (byte i = 0; i < MAX_RULE_SETS; i++) { if (bitRead(Settings.rule_stop, i)) { bitWrite(Settings.rule_enabled, i, 0); // Disable rules causing boot loop } } } - if (RtcSettings.fast_reboot_count > 3) { // Restarted 4 times + if (RtcReboot.fast_reboot_count > 3) { // Restarted 4 times Settings.rule_enabled = 0; // Disable all rules } - if (RtcSettings.fast_reboot_count > 4) { // Restarted 5 times + if (RtcReboot.fast_reboot_count > 4) { // Restarted 5 times Settings.module = SONOFF_BASIC; // Reset module to Sonoff Basic Settings.last_module = SONOFF_BASIC; for (byte i = 0; i < MAX_GPIO_PIN; i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcSettings.fast_reboot_count); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count); AddLog(LOG_LEVEL_DEBUG); } diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 1bf322288723..a8d4d41419d9 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020000 +#define VERSION 0x06020100 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index 8cc064fe5d75..8aaeabf8825b 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -143,7 +143,7 @@ char* subStr(char* dest, char* str, const char *delim, int index) int i; // Since strtok consumes the first arg, make a copy - strncpy(dest, str, strlen(str)); + strlcpy(dest, str, strlen(str)); for (i = 1, act = dest; i <= index; i++, act = NULL) { sub = strtok_r(act, delim, &ptr); if (sub == NULL) break; @@ -157,7 +157,7 @@ double CharToDouble(char *str) // simple ascii to double, because atof or strtod are too large char strbuf[24]; - strcpy(strbuf, str); + strlcpy(strbuf, str, sizeof(strbuf)); char *pt; double left = atoi(strbuf); double right = 0; @@ -561,13 +561,13 @@ int GetStateNumber(char *state_text) char command[CMDSZ]; int state_number = -1; - if ((GetCommandCode(command, sizeof(command), state_text, kOptionOff) >= 0) || !strcasecmp(state_text, Settings.state_text[0])) { + if (GetCommandCode(command, sizeof(command), state_text, kOptionOff) >= 0) { state_number = 0; } - else if ((GetCommandCode(command, sizeof(command), state_text, kOptionOn) >= 0) || !strcasecmp(state_text, Settings.state_text[1])) { + else if (GetCommandCode(command, sizeof(command), state_text, kOptionOn) >= 0) { state_number = 1; } - else if ((GetCommandCode(command, sizeof(command), state_text, kOptionToggle) >= 0) || !strcasecmp(state_text, Settings.state_text[2])) { + else if (GetCommandCode(command, sizeof(command), state_text, kOptionToggle) >= 0) { state_number = 2; } else if (GetCommandCode(command, sizeof(command), state_text, kOptionBlink) >= 0) { diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index c919c8f43bfa..db0124a31ae6 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -372,8 +372,7 @@ long ajax_token = 1; static void WebGetArg(const char* arg, char* out, size_t max) { String s = WebServer->arg(arg); - strncpy(out, s.c_str(), max); - out[max-1] = '\0'; // Ensure terminating NUL + strlcpy(out, s.c_str(), max); } void ShowWebSource(int source) diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 9a7cdeec7386..93912bc76636 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -386,11 +386,16 @@ void HandleUpnpEvent() String state_xml = FPSTR(WEMO_RESPONSE_STATE_SOAP); //differentiate get and set state if (request.indexOf(F("SetBinaryState")) > 0) { + uint8_t power = POWER_TOGGLE; if (request.indexOf(F("State>1 0) { - ExecuteCommandPower(devices_present, POWER_ON, SRC_WEMO); + power = POWER_ON; } else if (request.indexOf(F("State>0 0) { - ExecuteCommandPower(devices_present, POWER_OFF, SRC_WEMO); + power = POWER_OFF; + } + if (power != POWER_TOGGLE) { + uint8_t device = (light_type) ? devices_present : 1; // Select either a configured light or relay1 + ExecuteCommandPower(device, power, SRC_WEMO); } } else if(request.indexOf(F("GetBinaryState")) > 0){ diff --git a/sonoff/xsns_01_counter.ino b/sonoff/xsns_01_counter.ino index 069d5b3e7283..b5822cac75c3 100644 --- a/sonoff/xsns_01_counter.ino +++ b/sonoff/xsns_01_counter.ino @@ -111,7 +111,7 @@ void CounterShow(boolean json) } header++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"C%d\":%s"), mqtt_data, stemp, i +1, counter); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_DOMOTICZ if ((0 == tele_period) && (1 == dsxflg)) { DomoticzSensor(DZ_COUNT, RtcSettings.pulse_counter[i]); diff --git a/sonoff/xsns_05_ds18x20_legacy.ino b/sonoff/xsns_05_ds18x20_legacy.ino index 1563121044d8..03754bbe156e 100644 --- a/sonoff/xsns_05_ds18x20_legacy.ino +++ b/sonoff/xsns_05_ds18x20_legacy.ino @@ -186,7 +186,7 @@ void Ds18x20Show(boolean json) dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"DS%d\":{\"" D_JSON_TYPE "\":\"%s\",\"" D_JSON_ADDRESS "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, i +1, ds18x20_types, Ds18x20Addresses(i).c_str(), temperature); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_DOMOTICZ if ((0 == tele_period) && (1 == dsxflg)) { DomoticzSensor(DZ_TEMP, temperature); diff --git a/sonoff/xsns_12_ads1115.ino b/sonoff/xsns_12_ads1115.ino index f1279a73277c..bcfb6dfad747 100644 --- a/sonoff/xsns_12_ads1115.ino +++ b/sonoff/xsns_12_ads1115.ino @@ -191,7 +191,7 @@ void Ads1115Show(boolean json) } dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"A%d\":%d"), mqtt_data, stemp, i, adc_value); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "ADS1115", i, adc_value); diff --git a/sonoff/xsns_12_ads1115_i2cdev.ino b/sonoff/xsns_12_ads1115_i2cdev.ino index d3748ec7ae4e..588a37ac5c95 100644 --- a/sonoff/xsns_12_ads1115_i2cdev.ino +++ b/sonoff/xsns_12_ads1115_i2cdev.ino @@ -111,7 +111,7 @@ void Ads1115Show(boolean json) } dsxflg++; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"A%d\":%d"), mqtt_data, stemp, i, adc_value); - strcpy(stemp, ","); + strlcpy(stemp, ",", sizeof(stemp)); #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "ADS1115", i, adc_value); From eaff2962624a24d44fd03e9a24d0e9bf9ab7a509 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 11:22:58 +0200 Subject: [PATCH 040/798] v6.2.1.1 - Released v6.2.1 Released v6.2.1 to solve important issues --- RELEASENOTES.md | 6 ++++++ sonoff/_changelog.ino | 12 ++++++------ sonoff/sonoff_version.h | 2 +- sonoff/xplg_wemohue.ino | 1 - 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7cacefa47c25..8cf1a0022667 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,6 +104,12 @@ See [Tasmota ESP/Arduino library version related issues](https://github.com/aren | USE_RF_FLASH | - | - | x | x | x | ## Changelog +Version 6.2.1 20180905 + * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) + * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) + * Fix possible exception due to buffer overflow (#3659) + * Fix lost energy today and total energy value after power cycle (#3689) + Version 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) * Disable wifi sleep for both Esp8266/Arduino core 2.4.1 and 2.4.2 to solve device freeze caused by Espressif SDK bug (#3554) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 0b3c115cd090..145e435e3319 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,13 +1,13 @@ -/* 6.2.0.2 20180904 +/* 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules - * Fix lost today and total energy value after power cycle (#3689) + * Add Wifi channel number to state message (#3664) + * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) * - * 6.2.0.1 20180902 + * 6.2.1 20180905 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) - * Fix possible exception due to buffer overflow (#3659) - * Add Wifi channel number to state message (#3664) * Fix Wemo emulation to select the first relay when more than one relay is present (#3657) - * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) + * Fix possible exception due to buffer overflow (#3659) + * Fix lost energy today and total energy value after power cycle (#3689) * * 6.2.0 20180901 * Allow user override of define MAX_RULE_VARS and MAX_RULE_TIMERS (#3561) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index e9e92cc9da25..f4df759c821e 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020002 +#define VERSION 0x06020101 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index bc579782a78e..93912bc76636 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -397,7 +397,6 @@ void HandleUpnpEvent() uint8_t device = (light_type) ? devices_present : 1; // Select either a configured light or relay1 ExecuteCommandPower(device, power, SRC_WEMO); } - } else if(request.indexOf(F("GetBinaryState")) > 0){ state_xml.replace(F("Set"), F("Get")); From 36242e0e02102e7f6534f53ec519ac304515cac3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 15:38:48 +0200 Subject: [PATCH 041/798] Add network information Add network information to display start screen (#3704) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 10 +++++----- sonoff/xdrv_13_display.ino | 22 +++++++++++++++++++--- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 145e435e3319..77020540e857 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Rewrite energy monitoring using energy sensor driver modules * Add Wifi channel number to state message (#3664) * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) + * Add network information to display start screen (#3704) * * 6.2.1 20180905 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 2c5d5cce9d94..a0b65b348521 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -204,7 +204,7 @@ enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MA enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_DISPLAY, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index c92a8db76deb..8afae580e49b 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2540,19 +2540,19 @@ void setup() snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_BOOT_COUNT " %d"), Settings.bootcount); AddLog(LOG_LEVEL_DEBUG); - GpioInit(); - - SetSerialBaudrate(baudrate); - Format(mqtt_client, Settings.mqtt_client, sizeof(mqtt_client)); Format(mqtt_topic, Settings.mqtt_topic, sizeof(mqtt_topic)); - if (strstr(Settings.hostname, "%")) { strlcpy(Settings.hostname, WIFI_HOSTNAME, sizeof(Settings.hostname)); snprintf_P(my_hostname, sizeof(my_hostname)-1, Settings.hostname, mqtt_topic, ESP.getChipId() & 0x1FFF); } else { snprintf_P(my_hostname, sizeof(my_hostname)-1, Settings.hostname); } + + GpioInit(); + + SetSerialBaudrate(baudrate); + WifiConnect(); if (MOTOR == Settings.module) Settings.poweronstate = POWER_ALL_ON; // Needs always on else in limbo! diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index 74b4069e19b6..c8972536afd6 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -626,11 +626,24 @@ void DisplayLogBufferInit() DisplayReAllocLogBuffer(); - char buffer[20]; + char buffer[40]; snprintf_P(buffer, sizeof(buffer), PSTR(D_VERSION " %s"), my_version); DisplayLogBufferAdd(buffer); snprintf_P(buffer, sizeof(buffer), PSTR("Display mode %d"), Settings.display_mode); DisplayLogBufferAdd(buffer); + + snprintf_P(buffer, sizeof(buffer), PSTR(D_CMND_HOSTNAME " %s"), my_hostname); + DisplayLogBufferAdd(buffer); + snprintf_P(buffer, sizeof(buffer), PSTR(D_JSON_SSID " %s"), Settings.sta_ssid[Settings.sta_active]); + DisplayLogBufferAdd(buffer); + snprintf_P(buffer, sizeof(buffer), PSTR(D_JSON_MAC " %s"), WiFi.macAddress().c_str()); + DisplayLogBufferAdd(buffer); + if (!global_state.wifi_down && (static_cast(WiFi.localIP()) != 0)) { + snprintf_P(buffer, sizeof(buffer), PSTR("IP %s"), WiFi.localIP().toString().c_str()); + DisplayLogBufferAdd(buffer); + snprintf_P(buffer, sizeof(buffer), PSTR(D_JSON_RSSI " %d%%"), WifiGetRssiAsQuality(WiFi.RSSI())); + DisplayLogBufferAdd(buffer); + } } } @@ -915,8 +928,8 @@ boolean DisplayCommand() if (last_display_mode && !Settings.display_mode) { // Switch to mode 0 DisplayInit(DISPLAY_INIT_MODE); DisplayClear(); - } - if (!last_display_mode && Settings.display_mode) { // Switch to non mode 0 + } else { +// if (!last_display_mode && Settings.display_mode) { // Switch to non mode 0 DisplayLogBufferInit(); DisplayInit(DISPLAY_INIT_MODE); } @@ -1047,6 +1060,9 @@ boolean Xdrv13(byte function) case FUNC_PRE_INIT: DisplayInitDriver(); break; + case FUNC_DISPLAY: + DisplayLogBufferAdd(log_data); + break; case FUNC_EVERY_50_MSECOND: if (Settings.display_model) { XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND); } break; From 35d0e502c46b99d18b5389c9162d399be9e38f04 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 18:01:15 +0200 Subject: [PATCH 042/798] Some additions * Add command Display to show all settings at once * Add toggle function RGBW lights (#3695, #3697) * Add user configurable GPIO02 and GPIO03 on H801 devices (#3692) --- sonoff/_changelog.ino | 3 +++ sonoff/sonoff.ino | 2 +- sonoff/sonoff_template.h | 17 +++++++---------- sonoff/xdrv_13_display.ino | 10 ++++++++-- sonoff/xdsp_03_matrix.ino | 4 +++- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 77020540e857..910f70bbc56c 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,6 +3,9 @@ * Add Wifi channel number to state message (#3664) * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) * Add network information to display start screen (#3704) + * Add command Display to show all settings at once + * Add toggle function RGBW lights (#3695, #3697) + * Add user configurable GPIO02 and GPIO03 on H801 devices (#3692) * * 6.2.1 20180905 * Fix possible ambiguity on command parameters if StateText contains numbers only (#3656) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index fa59bb06d169..a7315623dec8 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2347,7 +2347,7 @@ void GpioInit() if (mpin) pin[mpin] = i; } - if ((2 == pin[GPIO_TXD]) || (H801 == Settings.module)) Serial.set_tx(2); + if ((2 == pin[GPIO_TXD]) || (H801 == Settings.module)) { Serial.set_tx(2); } analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h) analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f2fe9300312c..b1087da97216 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -136,9 +136,6 @@ enum ProgramSelectablePins { GPIO_DI, // my92x1 PWM input GPIO_DCKI, // my92x1 CLK input GPIO_ARIRFRCV, // AliLux RF Receive input - GPIO_MCP39_TX, // MCP39F501 Serial output - GPIO_MCP39_RX, // MCP39F501 Serial input - GPIO_MCP39_RST, // MCP39F501 Serial reset GPIO_USER, // User configurable GPIO_MAX }; @@ -550,8 +547,8 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "H801", // Lixada H801 Wifi (ESP8266) GPIO_USER, // GPIO00 E-FW Button GPIO_LED1, // GPIO01 Green LED - GPIO_USER, // GPIO02 RX and Optional sensor - Pin next to TX on the PCB - GPIO_USER, // GPIO03 TX and Optional sensor - Pin next to GND on the PCB + GPIO_USER, // GPIO02 TX and Optional sensor - Pin next to TX on the PCB + GPIO_USER, // GPIO03 RX and Optional sensor - Pin next to GND on the PCB GPIO_PWM5, // GPIO04 W2 - PWM5 GPIO_LED2_INV, // GPIO05 Red LED 0, 0, 0, 0, 0, 0, // Flash connection @@ -923,16 +920,16 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { }, { "Shelly 2", // Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/ 0, - GPIO_MCP39_RX, // GPIO01 MCP39F501 Serial input + GPIO_TXD, // GPIO01 MCP39F501 Serial input 0, - GPIO_MCP39_TX, // GPIO03 MCP39F501 Serial output + GPIO_RXD, // GPIO03 MCP39F501 Serial output GPIO_REL1, // GPIO04 GPIO_REL2, // GPIO05 0, 0, 0, 0, 0, 0, // Flash connection GPIO_SWT1_NP, // GPIO12 0, GPIO_SWT2_NP, // GPIO14 - GPIO_MCP39_RST, // GPIO15 MCP39F501 Reset + 0, // GPIO15 MCP39F501 Reset 0, 0 } }; @@ -1002,7 +999,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0 } - { "Ledunia", // Ledunia (ESP8266) - http://ledunia.de/ + { "Ledunia", // Ledunia (ESP8266 - 32MB) - http://ledunia.de/ GPIO_USER, // GPIO00 (D0) GPIO_USER, // GPIO01 (D7) Serial RXD GPIO_USER, // GPIO02 (D2) @@ -1019,4 +1016,4 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { } */ -#endif // _SONOFF_TEMPLATE_H_ +#endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index c8972536afd6..083aae74a7d9 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -49,10 +49,10 @@ enum XdspFunctions { FUNC_DISPLAY_INIT_DRIVER, FUNC_DISPLAY_INIT, FUNC_DISPLAY_E enum DisplayInitModes { DISPLAY_INIT_MODE, DISPLAY_INIT_PARTIAL, DISPLAY_INIT_FULL }; -enum DisplayCommands { CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, +enum DisplayCommands { CMND_DISPLAY, CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, CMND_DISP_SIZE, CMND_DISP_FONT, CMND_DISP_ROTATE, CMND_DISP_TEXT, CMND_DISP_ADDRESS }; const char kDisplayCommands[] PROGMEM = - D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" + "|" D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" D_CMND_DISP_SIZE "|" D_CMND_DISP_FONT "|" D_CMND_DISP_ROTATE "|" D_CMND_DISP_TEXT "|" D_CMND_DISP_ADDRESS ; const char S_JSON_DISPLAY_COMMAND_VALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":\"%s\"}"; @@ -898,6 +898,12 @@ boolean DisplayCommand() if (-1 == command_code) { serviced = false; // Unknown command } + else if (CMND_DISPLAY == command_code) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_DISPLAY "\":{\"" D_CMND_DISP_MODEL "\":%d,\"" D_CMND_DISP_MODE "\":%d,\"" D_CMND_DISP_DIMMER "\":%d,\"" + D_CMND_DISP_SIZE "\":%d,\"" D_CMND_DISP_FONT "\":%d,\"" D_CMND_DISP_ROTATE "\":%d,\"" D_CMND_DISP_REFRESH "\":%d,\"" D_CMND_DISP_COLS "\":[%d,%d],\"" D_CMND_DISP_ROWS "\":%d}}"), + Settings.display_model, Settings.display_mode, Settings.display_dimmer, Settings.display_size, Settings.display_font, Settings.display_rotate, Settings.display_refresh, + Settings.display_cols[0], Settings.display_cols[1], Settings.display_rows); + } else if (CMND_DISP_MODEL == command_code) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < DISPLAY_MAX_DRIVERS)) { uint8_t last_display_model = Settings.display_model; diff --git a/sonoff/xdsp_03_matrix.ino b/sonoff/xdsp_03_matrix.ino index 4989ad24be51..36c5955d647d 100644 --- a/sonoff/xdsp_03_matrix.ino +++ b/sonoff/xdsp_03_matrix.ino @@ -243,7 +243,8 @@ void MatrixPrintLog(uint8_t direction) uint8_t space = 0; uint8_t max_cols = (disp_log_buffer_cols < MTX_MAX_SCREEN_BUFFER) ? disp_log_buffer_cols : MTX_MAX_SCREEN_BUFFER; mtx_buffer[0] = '\0'; - for (byte i = 0; i < max_cols; i++) { + uint8_t i = 0; + while ((txt[i] != '\0') && (i < max_cols)) { if (txt[i] == ' ') { space++; } else { @@ -252,6 +253,7 @@ void MatrixPrintLog(uint8_t direction) if (space < 2) { strncat(mtx_buffer, (const char*)txt +i, 1); } + i++; } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer); From 00814c7fc64cb37e8db373e8565fb13e83fffea3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 20:51:17 +0200 Subject: [PATCH 043/798] Fix compile error Fix compile error --- sonoff/sonoff.h | 2 +- sonoff/xdrv_13_display.ino | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index a0b65b348521..2c5d5cce9d94 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -204,7 +204,7 @@ enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MA enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_DISPLAY, FUNC_FREE_MEM}; + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index 083aae74a7d9..4d6ce2e8911c 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -1066,9 +1066,6 @@ boolean Xdrv13(byte function) case FUNC_PRE_INIT: DisplayInitDriver(); break; - case FUNC_DISPLAY: - DisplayLogBufferAdd(log_data); - break; case FUNC_EVERY_50_MSECOND: if (Settings.display_model) { XdspCall(FUNC_DISPLAY_EVERY_50_MSECOND); } break; From c6507482c4969d452a764c209ebe603265ff7394 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 5 Sep 2018 20:56:43 +0200 Subject: [PATCH 044/798] Bump README.md version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ab25ac179ac..581b38e8331c 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute! [![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota) ### Development -[![Dev Version](https://img.shields.io/badge/development%20version-6.2.0.x-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-6.2.1.x-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/tasmota/) [![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) From b8e7ee865085370ba53fd1db589420cf5529eb02 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 5 Sep 2018 18:35:02 -0300 Subject: [PATCH 045/798] Fixed Exception Issue Solves Bug #3700 --- sonoff/support.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 8aaeabf8825b..a48156444a5b 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -143,7 +143,7 @@ char* subStr(char* dest, char* str, const char *delim, int index) int i; // Since strtok consumes the first arg, make a copy - strlcpy(dest, str, strlen(str)); + strncpy(dest, str, strlen(str)); for (i = 1, act = dest; i <= index; i++, act = NULL) { sub = strtok_r(act, delim, &ptr); if (sub == NULL) break; From 9413ba9f47386fbd4ade98d8046e10382160382c Mon Sep 17 00:00:00 2001 From: Rodney Gitzel Date: Sun, 2 Sep 2018 01:42:52 -0700 Subject: [PATCH 046/798] optionally append timezone to timestamp in JSON messages --- .gitignore | 3 ++ sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 6 ++-- sonoff/support.ino | 68 +++++++++++++++++++----------------- sonoff/user_config.h | 3 ++ sonoff/xdrv_02_webserver.ino | 2 +- 6 files changed, 46 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index b6460347bd88..028a76667bf7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ build ## Visual Studio Code specific ###### .vscode +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 3a1dc14c6c5a..b7df1408a193 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -170,7 +170,7 @@ enum WeekInMonthOptions {Last, First, Second, Third, Fourth}; enum DayOfTheWeekOptions {Sun=1, Mon, Tue, Wed, Thu, Fri, Sat}; enum MonthNamesOptions {Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; enum HemisphereOptions {North, South}; -enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_RESTART, DT_UPTIME }; +enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_RESTART }; enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL}; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 254f881842f4..bf12d97ebd34 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1418,7 +1418,7 @@ void PublishStatus(uint8_t payload) if ((0 == payload) || (1 == payload)) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), - baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); + baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetUptime().c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } @@ -1509,7 +1509,7 @@ void MqttShowState() { char stemp1[33]; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str(), GetDateAndTime(DT_UPTIME).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str()); #ifdef USE_ADC_VCC dtostrfd((double)ESP.getVcc()/1000, 3, stemp1); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VCC "\":%s"), mqtt_data, stemp1); @@ -1626,7 +1626,7 @@ void PerformEverySecond() if ((2 == RtcTime.minute) && latest_uptime_flag) { latest_uptime_flag = false; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(DT_LOCAL).c_str(), GetDateAndTime(DT_UPTIME).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str()); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_UPTIME)); } if ((3 == RtcTime.minute) && !latest_uptime_flag) latest_uptime_flag = true; diff --git a/sonoff/support.ino b/sonoff/support.ino index 8cc064fe5d75..290acf231d02 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1802,44 +1802,46 @@ String GetBuildDateAndTime() return String(bdt); } +/* + * timestamps in https://en.wikipedia.org/wiki/ISO_8601 format + * + * DT_UTC - current data and time in Greenwich, England (aka GMT) + * DT_LOCAL - current date and time taking timezone into account + * DT_RESTART - the date and time this device last started, in local timezone + * + * Format: + * "2017-03-07T11:08:02-07:00" - if DT_LOCAL and TIME_APPEND_TIMEZONE=1 + * "2017-03-07T11:08:02" - otherwise + */ String GetDateAndTime(byte time_type) { - // enum GetDateAndTimeOptions { DT_LOCAL, DT_UTC, DT_RESTART, DT_UPTIME }; - // "2017-03-07T11:08:02" - ISO8601:2004 - char dt[21]; + // "2017-03-07T11:08:02-07:00" - ISO8601:2004 + char dt[27]; TIME_T tmpTime; - if (DT_UPTIME == time_type) { - if (restart_time) { - BreakTime(utc_time - restart_time, tmpTime); - } else { - BreakTime(uptime, tmpTime); - } - // "P128DT14H35M44S" - ISO8601:2004 - https://en.wikipedia.org/wiki/ISO_8601 Durations - // snprintf_P(dt, sizeof(dt), PSTR("P%dDT%02dH%02dM%02dS"), ut.days, ut.hour, ut.minute, ut.second); - // "128 14:35:44" - OpenVMS - // "128T14:35:44" - Tasmota - snprintf_P(dt, sizeof(dt), PSTR("%dT%02d:%02d:%02d"), - tmpTime.days, tmpTime.hour, tmpTime.minute, tmpTime.second); - } else { - switch (time_type) { - case DT_UTC: - BreakTime(utc_time, tmpTime); - tmpTime.year += 1970; - break; - case DT_RESTART: - if (restart_time == 0) { - return ""; - } - BreakTime(restart_time, tmpTime); - tmpTime.year += 1970; - break; - default: - tmpTime = RtcTime; - } - snprintf_P(dt, sizeof(dt), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), - tmpTime.year, tmpTime.month, tmpTime.day_of_month, tmpTime.hour, tmpTime.minute, tmpTime.second); + switch (time_type) { + case DT_UTC: + BreakTime(utc_time, tmpTime); + tmpTime.year += 1970; + break; + case DT_RESTART: + if (restart_time == 0) { + return ""; + } + BreakTime(restart_time, tmpTime); + tmpTime.year += 1970; + break; + default: + tmpTime = RtcTime; } + + snprintf_P(dt, sizeof(dt), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), + tmpTime.year, tmpTime.month, tmpTime.day_of_month, tmpTime.hour, tmpTime.minute, tmpTime.second); + + if (TIME_APPEND_TIMEZONE && (time_type == DT_LOCAL)) { + snprintf_P(dt, sizeof(dt), PSTR("%s%+03d:00"), dt, Settings.timezone); + } + return String(dt); } diff --git a/sonoff/user_config.h b/sonoff/user_config.h index a8457ff97485..3dbf9c5b250f 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -152,6 +152,9 @@ #define TIME_STD_HOUR 3 // Hour (0 to 23) #define TIME_STD_OFFSET +60 // Offset from UTC in minutes (-780 to +780) +// -- Time - formatting options +#define TIME_APPEND_TIMEZONE 0 // for local timestamps: 0 = no timezone in string, 1 = append numeric timezone (e.g. "+1:00" or "-7:00") + // -- Location ------------------------------------ #define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset #define LONGITUDE 2.294442 // [Longitude] Your location to be used with sunrise and sunset diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index c919c8f43bfa..8725bd6f598a 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -1291,7 +1291,7 @@ void HandleInformation() func += F(D_PROGRAM_VERSION "}2"); func += my_version; func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); - func += F("}1" D_UPTIME "}2"); func += GetDateAndTime(DT_UPTIME); + func += F("}1" D_UPTIME "}2"); func += GetUptime(); snprintf_P(stopic, sizeof(stopic), PSTR(" at %X"), GetSettingsAddress()); func += F("}1" D_FLASH_WRITE_COUNT "}2"); func += String(Settings.save_flag); func += stopic; func += F("}1" D_BOOT_COUNT "}2"); func += String(Settings.bootcount); From 359877489d7acba5f19c221a35921bdc83c97017 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Sep 2018 10:42:22 +0200 Subject: [PATCH 047/798] 6.2.1.2 - Fix KNX PA exception 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow (#3700, #3710) --- sonoff/_changelog.ino | 5 ++++- sonoff/settings.h | 4 ++-- sonoff/sonoff.ino | 9 ++++++--- sonoff/sonoff_version.h | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 910f70bbc56c..c34a70697132 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.1 20180905 +/* 6.2.1.2 20180906 + * Fix KNX PA exception. Regression from 6.2.1 buffer overflow (#3700, #3710) + * + * 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules * Add Wifi channel number to state message (#3664) * Add support for Shelly 1 and basic support for Shelly 2 - No energy monitoring yet (#2789) diff --git a/sonoff/settings.h b/sonoff/settings.h index 3876baf60a84..7a44ef9ccb69 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -64,7 +64,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption50 .. SetOption81 uint32_t timers_enable : 1; // bit 0 (v6.1.1b) - uint32_t spare01 : 1; + uint32_t user_esp8285_enable : 1; // bit 1 (v6.1.1.14) uint32_t spare02 : 1; uint32_t spare03 : 1; uint32_t spare04 : 1; @@ -94,7 +94,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t spare28 : 1; uint32_t spare29 : 1; uint32_t spare30 : 1; - uint32_t user_esp8285_enable : 1; // bit 31 (v6.1.1.14) + uint32_t spare31 : 1; }; } SysBitfield3; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index a7315623dec8..b3760faa2972 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -843,9 +843,11 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) else if ((CMND_GPIO == command_code) && (index < MAX_GPIO_PIN)) { mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - if ((GPIO_USER == cmodule.gp.io[index]) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { +// if ((GPIO_USER == cmodule.gp.io[index]) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { + if ((GPIO_USER == ValidGPIO(index, cmodule.gp.io[index])) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if ((GPIO_USER == cmodule.gp.io[i]) && (Settings.my_gp.io[i] == payload)) { +// if ((GPIO_USER == cmodule.gp.io[i]) && (Settings.my_gp.io[i] == payload)) { + if ((GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) && (Settings.my_gp.io[i] == payload)) { Settings.my_gp.io[i] = 0; } } @@ -854,7 +856,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{")); for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if (GPIO_USER == cmodule.gp.io[i]) { +// if (GPIO_USER == cmodule.gp.io[i]) { + if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { if (jsflg) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data); jsflg = 1; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"" D_CMND_GPIO "%d\":\"%d (%s)\""), diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index f4df759c821e..178e0af68cc9 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020101 +#define VERSION 0x06020102 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From dd95bb393e807eb9fa30670df68d9c7c8be722d7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Sep 2018 12:37:50 +0200 Subject: [PATCH 048/798] Add command SetOption52 Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) --- sonoff/_changelog.ino | 1 + sonoff/settings.h | 2 +- sonoff/support.ino | 10 +++++----- sonoff/user_config.h | 27 ++++++++++++--------------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c34a70697132..7e7bdc520b67 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow (#3700, #3710) + * Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) * * 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules diff --git a/sonoff/settings.h b/sonoff/settings.h index 7a44ef9ccb69..32bc80ad04c3 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -65,7 +65,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu struct { // SetOption50 .. SetOption81 uint32_t timers_enable : 1; // bit 0 (v6.1.1b) uint32_t user_esp8285_enable : 1; // bit 1 (v6.1.1.14) - uint32_t spare02 : 1; + uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t spare03 : 1; uint32_t spare04 : 1; uint32_t spare05 : 1; diff --git a/sonoff/support.ino b/sonoff/support.ino index ca361d3b370d..51b59c554fce 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1804,13 +1804,13 @@ String GetBuildDateAndTime() /* * timestamps in https://en.wikipedia.org/wiki/ISO_8601 format - * + * * DT_UTC - current data and time in Greenwich, England (aka GMT) * DT_LOCAL - current date and time taking timezone into account * DT_RESTART - the date and time this device last started, in local timezone - * + * * Format: - * "2017-03-07T11:08:02-07:00" - if DT_LOCAL and TIME_APPEND_TIMEZONE=1 + * "2017-03-07T11:08:02-07:00" - if DT_LOCAL and SetOption52 = 1 * "2017-03-07T11:08:02" - otherwise */ String GetDateAndTime(byte time_type) @@ -1838,8 +1838,8 @@ String GetDateAndTime(byte time_type) snprintf_P(dt, sizeof(dt), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), tmpTime.year, tmpTime.month, tmpTime.day_of_month, tmpTime.hour, tmpTime.minute, tmpTime.second); - if (TIME_APPEND_TIMEZONE && (time_type == DT_LOCAL)) { - snprintf_P(dt, sizeof(dt), PSTR("%s%+03d:00"), dt, Settings.timezone); + if (Settings.flag3.time_append_timezone && (time_type == DT_LOCAL)) { + snprintf_P(dt, sizeof(dt), PSTR("%s%+03d:%02d"), dt, time_timezone / 10, abs((time_timezone % 10) * 6)); // if timezone = +2:30 then time_timezone = 25 } return String(dt); diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 3dbf9c5b250f..ece8545301e8 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -137,23 +137,20 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes -#define TIME_DST_HEMISPHERE North // [TimeDst] Hemisphere (0 or North, 1 or South) -#define TIME_DST_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) -#define TIME_DST_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) -#define TIME_DST_MONTH Mar // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) -#define TIME_DST_HOUR 2 // Hour (0 to 23) -#define TIME_DST_OFFSET +120 // Offset from UTC in minutes (-780 to +780) +#define TIME_DST_HEMISPHERE North // [TimeDst] Hemisphere (0 or North, 1 or South) +#define TIME_DST_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) +#define TIME_DST_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) +#define TIME_DST_MONTH Mar // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) +#define TIME_DST_HOUR 2 // Hour (0 to 23) +#define TIME_DST_OFFSET +120 // Offset from UTC in minutes (-780 to +780) // -- Time - Start Standard Time and timezone offset from UTC in minutes -#define TIME_STD_HEMISPHERE North // [TimeStd] Hemisphere (0 or North, 1 or South) -#define TIME_STD_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) -#define TIME_STD_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) -#define TIME_STD_MONTH Oct // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) -#define TIME_STD_HOUR 3 // Hour (0 to 23) -#define TIME_STD_OFFSET +60 // Offset from UTC in minutes (-780 to +780) - -// -- Time - formatting options -#define TIME_APPEND_TIMEZONE 0 // for local timestamps: 0 = no timezone in string, 1 = append numeric timezone (e.g. "+1:00" or "-7:00") +#define TIME_STD_HEMISPHERE North // [TimeStd] Hemisphere (0 or North, 1 or South) +#define TIME_STD_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) +#define TIME_STD_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) +#define TIME_STD_MONTH Oct // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) +#define TIME_STD_HOUR 3 // Hour (0 to 23) +#define TIME_STD_OFFSET +60 // Offset from UTC in minutes (-780 to +780) // -- Location ------------------------------------ #define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset From b441c8577655629e532f299ff69e4a1c3fc5bb34 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Sep 2018 17:35:57 +0200 Subject: [PATCH 049/798] Experimental PZEM-003,014,016,017 Add experimental support for PZEM-003,014,016,017 Energy monitoring (#3694) --- sonoff/_changelog.ino | 1 + sonoff/sonoff_template.h | 5 +- sonoff/user_config.h | 5 +- sonoff/xdrv_03_energy.ino | 1 + sonoff/xnrg_05_pzem2.ino | 215 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 sonoff/xnrg_05_pzem2.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 7e7bdc520b67..49193dfbdf57 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow (#3700, #3710) * Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) + * Add experimental support for PZEM-003,014,016,017 Energy monitoring (#3694) * * 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index b1087da97216..3881f8c3e8e8 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -120,6 +120,8 @@ enum UserSelectablePins { GPIO_CNTR2_NP, GPIO_CNTR3_NP, GPIO_CNTR4_NP, + GPIO_PZEM2_TX, // PZEM-003,014,016,017 Serial interface + GPIO_PZEM2_RX, // PZEM-003,014,016,017 Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -169,7 +171,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" D_SENSOR_SWITCH "1n|" D_SENSOR_SWITCH "2n|" D_SENSOR_SWITCH "3n|" D_SENSOR_SWITCH "4n|" D_SENSOR_SWITCH "5n|" D_SENSOR_SWITCH "6n|" D_SENSOR_SWITCH "7n|" D_SENSOR_SWITCH "8n|" D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" - D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|"; + D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" + D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|"; /********************************************************************************************/ diff --git a/sonoff/user_config.h b/sonoff/user_config.h index ece8545301e8..b742196a8572 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -335,13 +335,16 @@ #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) #define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) //#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) +// Power monitoring sensors ----------------------- +#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +#define USE_PZEM2 // Add support for PZEM003,014,016,017 Energy monitor (+2k code) + // -- Low level interface devices ----------------- #define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 5c122c314f9a..d9cfee8cb349 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -44,6 +44,7 @@ const char kEnergyCommands[] PROGMEM = float energy_voltage = 0; // 123.1 V float energy_current = 0; // 123.123 A float energy_power = 0; // 123.1 W +float energy_frequency = 0; // 123.1 Hz float energy_power_factor = 0; // 0.12 float energy_daily = 0; // 123.123 kWh float energy_total = 0; // 12345.12345 kWh diff --git a/sonoff/xnrg_05_pzem2.ino b/sonoff/xnrg_05_pzem2.ino new file mode 100644 index 000000000000..2b326f21619b --- /dev/null +++ b/sonoff/xnrg_05_pzem2.ino @@ -0,0 +1,215 @@ +/* + xnrg_06_pzem2.ino - PZEM-003,017 and PZEM-014,016 Modbus energy sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_PZEM2 +/*********************************************************************************************\ + * PZEM-003 - DC 300V 10A Energy + * PZEM-014 - AC 220V 10A Energy + * PZEM-016 - AC 220V 100A Energy + * PZEM-017 - DC 300V 50A - 300A Energy + * + * Based on: + * PZEM-003,017 docs Https://pan.baidu.com/s/1V9bDWj3RK2u6_fbBJ3GtqQ password rq37 + * PZEM-014,016 docs https://pan.baidu.com/s/1B0MdMgURyjtO1oQa2lavKw password ytkv + * + * Hardware Serial will be selected if GPIO1 = [99 PZEM Rx] and GPIO3 = [98 PZEM Tx] +\*********************************************************************************************/ + +#define XNRG_05 5 + +#define PZEM2_TYPES_003_017 8 // Result 16 bit register count +#define PZEM2_TYPES_014_016 10 // Result 16 bit register count + +#define PZEM2_READ_RESULT 0x04 + +#include + +TasmotaSerial *Pzem2Serial; + +uint8_t pzem2_type = PZEM2_TYPES_014_016; + +/*********************************************************************************************/ + +uint16_t Pzem2ModbusCalculateCRC(uint8_t *frame, uint8_t num) +{ + uint16_t crc = 0xFFFF; + uint16_t flag; + + for (uint8_t i = 0; i < num; i++) { + crc ^= frame[i]; + for (uint8_t j = 8; j; j--) { + if ((crc & 0x0001) != 0) { // If the LSB is set + crc >>= 1; // Shift right and XOR 0xA001 + crc ^= 0xA001; + } else { // Else LSB is not set + crc >>= 1; // Just shift right + } + } + } + return crc; +} + +void Pzem2ModbusSend(uint8_t function_code, uint16_t start_address, uint16_t register_count) +{ + uint8_t frame[8]; + + frame[0] = 0xFE; // Any Address + frame[1] = function_code; + frame[2] = (uint8_t)(start_address >> 8); + frame[3] = (uint8_t)(start_address); + frame[4] = (uint8_t)(register_count >> 8); + frame[5] = (uint8_t)(register_count); + uint16_t crc = Pzem2ModbusCalculateCRC(frame, 6); + frame[6] = (uint8_t)((crc >> 8) & 0xFF); + frame[7] = (uint8_t)(crc & 0xFF); + + Pzem2Serial->flush(); + Pzem2Serial->write(frame, sizeof(frame)); +} + +bool Pzem2ModbusReceiveReady() +{ + return (Pzem2Serial->available() >= 5); // 5 - Error frame, 21 or 25 - Ok frame +} + +uint8_t Pzem2ModbusReceive() +{ + uint8_t buffer[26]; + +// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 +// FE 04 14 08 98 03 E8 00 00 08 98 00 00 00 00 00 00 01 F4 00 64 00 00 HH LL = PZEM-014 +// Id Cc Sz Volt- Current---- Power------ Energy----- Frequ PFact Alarm Crc-- +// FE 04 10 27 10 00 64 03 E8 00 00 00 00 00 00 00 00 00 00 HH LL = PZEM-017 +// Id Cc Sz Volt- Curre Power------ Energy----- HiAlm LoAlm Crc-- + + uint8_t len = 0; + while (Pzem2Serial->available() > 0) { + buffer[len++] = (uint8_t)Pzem2Serial->read(); + if (3 == len) { + if (buffer[1] & 0x80) { // fe 84 02 f2 f1 + return buffer[2]; // 1 = Illegal Function, 2 = Illegal Address, 3 = Illegal Data, 4 = Slave Error + } + } + if (sizeof(buffer) == len) { break; } + } + + AddLogSerial(LOG_LEVEL_DEBUG_MORE, buffer, len); + + if (len < 5) { return 8; } // 8 = Not enough data + if (len != buffer[2] + 5) { return 9; } // 9 = Unexpected result + + uint16_t crc = (buffer[len -2] << 8) | buffer[len -1]; + if (Pzem2ModbusCalculateCRC(buffer, len -3) == crc) { + float energy = 0; + if (0x10 == buffer[2]) { // PZEM-003,017 + pzem2_type = PZEM2_TYPES_003_017; + energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 65535.x V + energy_current = (float)((buffer[5] << 8) + buffer[6]); // 65535.xx A + energy_power = (float)((uint32_t)buffer[9] << 24 + (uint32_t)buffer[10] << 16 + (uint32_t)buffer[7] << 8 + buffer[8]); // 65535 W + energy = (float)((uint32_t)buffer[13] << 24 + (uint32_t)buffer[14] << 16 + (uint32_t)buffer[11] << 8 + buffer[12]); // 65535 Wh + if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any + energy_kWhtoday += (energy - energy_start) * 100; + energy_start = energy; + EnergyUpdateToday(); + } + else if (0x14 == buffer[2]) { // PZEM-014,016 + pzem2_type = PZEM2_TYPES_014_016; + energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 65535.x V + energy_current = (float)((uint32_t)buffer[7] << 24 + (uint32_t)buffer[8] << 16 + (uint32_t)buffer[5] << 8 + buffer[6]); // 65535.xx A + energy_power = (float)((uint32_t)buffer[11] << 24 + (uint32_t)buffer[12] << 16 + (uint32_t)buffer[9] << 8 + buffer[10]); // 65535 W + energy_frequency = (float)((buffer[13] << 8) + buffer[14]) / 10.0; // 50.0 Hz + energy = (float)((uint32_t)buffer[15] << 24 + (uint32_t)buffer[16] << 16 + (uint32_t)buffer[13] << 8 + buffer[14]); // 65535 Wh + if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any + energy_kWhtoday += (energy - energy_start) * 100; + energy_start = energy; + EnergyUpdateToday(); + } + } else { + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem2 crc error")); + } + + return 0; // 0 = No error +} + +/*********************************************************************************************/ + +uint8_t pzem2_sendRetry = 0; + +void Pzem2EverySecond() +{ + bool data_ready = Pzem2ModbusReceiveReady(); + + if (data_ready) { Pzem2ModbusReceive(); } + + if (0 == pzem2_sendRetry || data_ready) { + pzem2_sendRetry = 5; + Pzem2ModbusSend(PZEM2_READ_RESULT, 0, pzem2_type); + } + else { + pzem2_sendRetry--; + } +} + +void Pzem2SnsInit() +{ + // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions + Pzem2Serial = new TasmotaSerial(pin[GPIO_PZEM2_RX], pin[GPIO_PZEM2_TX], 1); + if (Pzem2Serial->begin(9600)) { + if (Pzem2Serial->hardwareSerial()) { ClaimSerial(); } + } else { + energy_flg = ENERGY_NONE; + } +} + +void Pzem2DrvInit() +{ + if (!energy_flg) { + if ((pin[GPIO_PZEM2_RX] < 99) && (pin[GPIO_PZEM2_TX] < 99)) { // Any device with a Pzem-003,014,016,017 + energy_flg = XNRG_05; + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +int Xnrg05(byte function) +{ + int result = 0; + + if (FUNC_PRE_INIT == function) { + Pzem2DrvInit(); + } + else if (XNRG_03 == energy_flg) { + switch (function) { + case FUNC_INIT: + Pzem2SnsInit(); + break; + case FUNC_EVERY_SECOND: + Pzem2EverySecond(); + break; + } + } + return result; +} + +#endif // USE_PZEM2 +#endif // USE_ENERGY_SENSOR From 2fdc91f1b4b671b8d1af45354073e3fed1b66a02 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 6 Sep 2018 18:08:10 +0200 Subject: [PATCH 050/798] Housekeeping --- sonoff/support.ino | 19 ++++++++++++++++++- sonoff/user_config.h | 2 +- tools/decode-status.py | 8 +++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 51b59c554fce..57cb6d9f4266 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -609,6 +609,10 @@ boolean GetUsedInModule(byte val, uint8_t *arr) if (GPIO_PZEM_TX == val) { return true; } if (GPIO_PZEM_RX == val) { return true; } #endif +#ifndef USE_PZEM2 + if (GPIO_PZEM2_TX == val) { return true; } + if (GPIO_PZEM2_RX == val) { return true; } +#endif #ifndef USE_SENSEAIR if (GPIO_SAIR_TX == val) { return true; } if (GPIO_SAIR_RX == val) { return true; } @@ -965,7 +969,7 @@ void GetFeatures() feature_sns1 |= 0x00000004; // xdrv_03_energy.ino #endif #ifdef USE_PZEM004T - feature_sns1 |= 0x00000008; // xdrv_03_energy.ino + feature_sns1 |= 0x00000008; // xnrg_03_pzem004t.ino #endif #ifdef USE_DS18B20 feature_sns1 |= 0x00000010; // xsns_05_ds18b20.ino @@ -1074,6 +1078,19 @@ void GetFeatures() #ifdef USE_MCP230xx_DISPLAYOUTPUT feature_sns2 |= 0x00000020; // xsns_29_mcp230xx.ino #endif +#ifdef USE_HLW8012 + feature_sns2 |= 0x00000040; // xnrg_01_hlw8012.ino +#endif +#ifdef USE_CSE7766 + feature_sns2 |= 0x00000080; // xnrg_02_cse7766.ino +#endif +#ifdef USE_MCP39F501 + feature_sns2 |= 0x00000100; // xnrg_04_mcp39f501.ino +#endif +#ifdef USE_PZEM2 + feature_sns2 |= 0x00000200; // xnrg_05_pzem2.ino +#endif + } /*********************************************************************************************\ diff --git a/sonoff/user_config.h b/sonoff/user_config.h index b742196a8572..81928f1e75eb 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -343,7 +343,7 @@ // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) -#define USE_PZEM2 // Add support for PZEM003,014,016,017 Energy monitor (+2k code) +#define USE_PZEM2 // Add support for PZEM003,014,016,017 Energy monitor (+1k1 code) // -- Low level interface devices ----------------- #define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) diff --git a/tools/decode-status.py b/tools/decode-status.py index 7f06b674b2b4..b26be9df03a8 100644 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -83,7 +83,9 @@ "Do not show Wifi and Mqtt state using Led" ],[ "Timers enabled", - "","","", + "Generic ESP8285 GPIO enabled", + "Add UTC time offset to JSON message", + "", "","","","", "","","","", "","","","", @@ -122,8 +124,8 @@ "USE_SDM630","USE_LM75AD","USE_APDS9960","USE_TM1638" ],[ "USE_MCP230xx","USE_MPR121","USE_CCS811","USE_MPU6050", - "USE_MCP230xx_OUTPUT","USE_MCP230xx_DISPLAYOUTPUT","","", - "","","","", + "USE_MCP230xx_OUTPUT","USE_MCP230xx_DISPLAYOUTPUT","USE_HLW8012","USE_CSE7766", + "USE_MCP39F501","USE_PZEM2","","", "","","","", "","","","", "","","","", From 420be8f4990ec838d51b0f58dad8c814db058461 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 6 Sep 2018 14:21:52 -0300 Subject: [PATCH 051/798] Simplified Function Substr --- sonoff/support.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 57cb6d9f4266..d00ee009be4a 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -143,7 +143,7 @@ char* subStr(char* dest, char* str, const char *delim, int index) int i; // Since strtok consumes the first arg, make a copy - strncpy(dest, str, strlen(str)); + strncpy(dest, str, strlen(str)+1); for (i = 1, act = dest; i <= index; i++, act = NULL) { sub = strtok_r(act, delim, &ptr); if (sub == NULL) break; From 96aff63c712f2ec81ae28e1cf207d8fb4ccbe278 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 6 Sep 2018 14:26:26 -0300 Subject: [PATCH 052/798] Code Simplification for Substr --- sonoff/xdrv_11_knx.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index ca5e220906f1..3897caac7f51 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -1156,7 +1156,7 @@ boolean KnxCommand() else if (CMND_KNX_PA == command_code) { if (XdrvMailbox.data_len) { if (strstr(XdrvMailbox.data, ".")) { // Process parameter entry - char sub_string[XdrvMailbox.data_len +1]; + char sub_string[XdrvMailbox.data_len]; int pa_area = atoi(subStr(sub_string, XdrvMailbox.data, ".", 1)); int pa_line = atoi(subStr(sub_string, XdrvMailbox.data, ".", 2)); @@ -1183,7 +1183,7 @@ boolean KnxCommand() else if ((CMND_KNX_GA == command_code) && (index > 0) && (index <= MAX_KNX_GA)) { if (XdrvMailbox.data_len) { if (strstr(XdrvMailbox.data, ",")) { // Process parameter entry - char sub_string[XdrvMailbox.data_len +1]; + char sub_string[XdrvMailbox.data_len]; int ga_option = atoi(subStr(sub_string, XdrvMailbox.data, ",", 1)); int ga_area = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); @@ -1232,7 +1232,7 @@ boolean KnxCommand() else if ((CMND_KNX_CB == command_code) && (index > 0) && (index <= MAX_KNX_CB)) { if (XdrvMailbox.data_len) { if (strstr(XdrvMailbox.data, ",")) { // Process parameter entry - char sub_string[XdrvMailbox.data_len +1]; + char sub_string[XdrvMailbox.data_len]; int cb_option = atoi(subStr(sub_string, XdrvMailbox.data, ",", 1)); int cb_area = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); From c827270cc2c3e1f3bc315cf5a420c7ba8b65fec2 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 6 Sep 2018 19:26:52 +0200 Subject: [PATCH 053/798] Update MCP230xx to conform to new usage of subStr() --- sonoff/support.ino | 2 +- sonoff/xsns_29_mcp230xx.ino | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 57cb6d9f4266..d00ee009be4a 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -143,7 +143,7 @@ char* subStr(char* dest, char* str, const char *delim, int index) int i; // Since strtok consumes the first arg, make a copy - strncpy(dest, str, strlen(str)); + strncpy(dest, str, strlen(str)+1); for (i = 1, act = dest; i <= index; i++, act = NULL) { sub = strtok_r(act, delim, &ptr); if (sub == NULL) break; diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index f27d68990e3d..d6683da44e95 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -421,10 +421,11 @@ bool MCP230xx_Command(void) { uint8_t paramcount = 0; if (XdrvMailbox.data_len > 0) { paramcount=1; - sprintf(XdrvMailbox.data,"%s,",XdrvMailbox.data); // need a trailing comma to make substr work properly with last variable - bug? dunno? - XdrvMailbox.data_len++; + } else { + serviced = false; + return serviced; } - char sub_string[XdrvMailbox.data_len +1]; + char sub_string[XdrvMailbox.data_len]; for (uint8_t ca=0;ca 2) { + if (paramcount > 1) { uint8_t intpri = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); if ((intpri >= 0) && (intpri <= 20)) { Settings.mcp230xx_int_prio = intpri; @@ -455,7 +456,7 @@ bool MCP230xx_Command(void) { } if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTTIMER")) { - if (paramcount > 2) { + if (paramcount > 1) { uint8_t inttim = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); if ((inttim >= 0) && (inttim <= 3600)) { Settings.mcp230xx_int_timer = inttim; @@ -470,7 +471,7 @@ bool MCP230xx_Command(void) { } if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTDEF")) { - if (paramcount > 2) { + if (paramcount > 1) { uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); if (pin < mcp230xx_pincount) { if (pin == 0) { @@ -480,7 +481,7 @@ bool MCP230xx_Command(void) { } } if (validpin) { - if (paramcount > 3) { + if (paramcount > 2) { uint8_t intdef = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); if ((intdef >= 0) && (intdef <= 15)) { Settings.mcp230xx_config[pin].int_report_defer=intdef; @@ -510,7 +511,7 @@ bool MCP230xx_Command(void) { } if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"INTCNT")) { - if (paramcount > 2) { + if (paramcount > 1) { uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); if (pin < mcp230xx_pincount) { if (pin == 0) { @@ -520,7 +521,7 @@ bool MCP230xx_Command(void) { } } if (validpin) { - if (paramcount > 3) { + if (paramcount > 2) { uint8_t intcnt = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); if ((intcnt >= 0) && (intcnt <= 1)) { Settings.mcp230xx_config[pin].int_count_en=intcnt; @@ -567,7 +568,7 @@ bool MCP230xx_Command(void) { validpin=true; } } - if (validpin && (paramcount > 2)) { + if (validpin && (paramcount > 1)) { if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 2), "?")) { uint8_t port = 0; if (pin > 7) { port = 1; } @@ -606,13 +607,13 @@ bool MCP230xx_Command(void) { uint8_t pinmode = 0; uint8_t pullup = 0; uint8_t intmode = 0; - if (paramcount > 2) { + if (paramcount > 1) { pinmode = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); } - if (paramcount > 3) { + if (paramcount > 2) { pullup = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); } - if (paramcount > 4) { + if (paramcount > 3) { intmode = atoi(subStr(sub_string, XdrvMailbox.data, ",", 4)); } #ifdef USE_MCP230xx_OUTPUT From 10bb6b856f8588f43943015124161675c343cae5 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 6 Sep 2018 15:38:10 -0300 Subject: [PATCH 054/798] Fix Compilation of Sonoff Classic Version --- sonoff/sonoff_post.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index dc49211d1da5..7504af3b45c9 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -137,6 +137,7 @@ void KNX_CB_Action(message_t const &msg, void *arg); #undef USE_PMS5003 // Disable support for PMS5003 and PMS7003 particle concentration sensor #undef USE_NOVA_SDS // Disable support for SDS011 and SDS021 particle concentration sensor #undef USE_PZEM004T // Disable PZEM004T energy sensor +#undef USE_PZEM2 // Disable PZEM003,014,016,017 Energy monitor #undef USE_SERIAL_BRIDGE // Disable support for software Serial Bridge #undef USE_SDM120 // Disable support for Eastron SDM120-Modbus energy meter #undef USE_SDM630 // Disable support for Eastron SDM630-Modbus energy meter From 7722f5232a4d484b5c2ca862f55a6e727119a26c Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 07:54:29 +0200 Subject: [PATCH 055/798] Added DFPlayer Mini MP3 Player (RB-DFR-562) --- sonoff/sonoff_template.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 3881f8c3e8e8..c6e70b98c673 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -122,6 +122,7 @@ enum UserSelectablePins { GPIO_CNTR4_NP, GPIO_PZEM2_TX, // PZEM-003,014,016,017 Serial interface GPIO_PZEM2_RX, // PZEM-003,014,016,017 Serial interface + GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -172,7 +173,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_SWITCH "1n|" D_SENSOR_SWITCH "2n|" D_SENSOR_SWITCH "3n|" D_SENSOR_SWITCH "4n|" D_SENSOR_SWITCH "5n|" D_SENSOR_SWITCH "6n|" D_SENSOR_SWITCH "7n|" D_SENSOR_SWITCH "8n|" D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" - D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|"; + D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|" + D_SENSOR_MP3_DFR562; /********************************************************************************************/ @@ -1019,4 +1021,4 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { } */ -#endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file +#endif // _SONOFF_TEMPLATE_H_ From a416f0b33487bd5dc37ab2dd1cec6c8e2d55839c Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 07:59:08 +0200 Subject: [PATCH 056/798] Add files via upload --- sonoff/xdrv_91_mp3.ino | 117 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 sonoff/xdrv_91_mp3.ino diff --git a/sonoff/xdrv_91_mp3.ino b/sonoff/xdrv_91_mp3.ino new file mode 100644 index 000000000000..82c778127f0f --- /dev/null +++ b/sonoff/xdrv_91_mp3.ino @@ -0,0 +1,117 @@ +/* + xdrv_91_mp3.ino - MP3 Player support for Sonoff-Tasmota + Player type: RB-DFR-562, DFPlayer Mini MP3 Player + Copyright (C) 2018 Theo Arends + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +*/ + +#ifdef USE_MP3_PLAYER + +#include + +TasmotaSerial *MP3Player; + +#define D_CMND_MP3 "MP3" +const char S_JSON_MP3_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_MP3 "%s\":%d}"; +const char S_JSON_MP3_COMMAND[] PROGMEM = "{\"" D_CMND_MP3 "%s\"}"; + +enum MP3_Commands { CMND_MP3_PLAY, CMND_MP3_STOP, CMND_MP3_VOLUME}; +const char kMP3_Commands[] PROGMEM = "Play" "|" "Stop" "|" "Volume"; + +#define MP3_CMD_PLAY 3 +#define MP3_CMD_VOLUME 6 +#define MP3_CMD_STOP 0x0e + +uint16_t MP3_Checksum(uint8_t *array) +{ + uint16_t checksum = 0; + for (uint8_t i = 0; i < 6; i++) { + checksum += array[i]; + } + checksum = checksum^0xffff; + return checksum+1; +} + +// init player define serial tx port +void InitMP3Player() { + MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3PLAYER]); + + if (MP3Player->begin(9600)) { + //serial_bridge_active = 1; + MP3Player->flush(); + } +} + +void MP3_CMD(uint8_t mp3cmd,uint16_t val) { + uint8_t cmd[10] = {0x7e,0xff,6,0,0,0,0,0,0,0xef}; + cmd[3] = mp3cmd; + cmd[5] = val>>8; + cmd[6] = val; + uint16_t chks = MP3_Checksum(&cmd[1]); // calculate out + cmd[7] = chks>>8; + cmd[8] = chks; + MP3Player->write(cmd, sizeof(cmd)); +} + +boolean MP3PlayerCmd() { + char command[CMDSZ]; + boolean serviced = true; + uint8_t disp_len = strlen(D_CMND_MP3); + + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MP3), disp_len)) { // Prefix + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + disp_len, kMP3_Commands); + + if (CMND_MP3_PLAY == command_code) { + if (XdrvMailbox.data_len > 0) { // play + MP3_CMD(MP3_CMD_PLAY, XdrvMailbox.payload); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); + } + else if (CMND_MP3_VOLUME == command_code) { + if (XdrvMailbox.data_len > 0) { // set volume + MP3_CMD(MP3_CMD_VOLUME, XdrvMailbox.payload * 30 / 100); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); + } + else if (CMND_MP3_STOP == command_code) { // stop + MP3_CMD(MP3_CMD_STOP, 0); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload); + } else { + serviced = false; // Unknown command + } + } + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_91 + +boolean Xdrv91(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_PRE_INIT: + InitMP3Player(); + break; + case FUNC_COMMAND: + result = MP3PlayerCmd(); + break; + } + return result; +} + +#endif // USE_MP3_PLAYER From 5582c85b3b36bad9d37bc0d4af9f8c118c0f5573 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:05:58 +0200 Subject: [PATCH 057/798] define MP3 Player added //#define USE_MP3_PLAYER --- sonoff/user_config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 81928f1e75eb..b7a54408dc2d 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -268,6 +268,9 @@ // -- Internal Analog input ----------------------- #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices +// -- MP3 player ---------------------------------- +//#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop + // -- One wire sensors ---------------------------- // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors #define USE_DS18x20 // Optional for more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) From b13c5452a510774019a172a10b031b13639af5fb Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:10:32 +0200 Subject: [PATCH 058/798] Added #define D_SENSOR_MP3_DFR562 "MP3 Player" --- sonoff/language/en-GB.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 558877db2682..e6ce2eca4d45 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_MP3_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From 7fd8dcd68dfe77624e7b227208e56e4b4fe78233 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:11:53 +0200 Subject: [PATCH 059/798] Update en-GB.h --- sonoff/language/en-GB.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index e6ce2eca4d45..a622419faaca 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -456,7 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" -#define D_SENSOR_MP3_DFR562 "MP3 Player" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From 96682723d32e400bb37ba00e95c92f5b04c5db2b Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:14:07 +0200 Subject: [PATCH 060/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/sonoff_template.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index c6e70b98c673..2ab43286db13 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -174,7 +174,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|" - D_SENSOR_MP3_DFR562; + D_SENSOR_DFR562; /********************************************************************************************/ From 14ab4b718d2257e2acc350692e0376d0eaaaae67 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:16:03 +0200 Subject: [PATCH 061/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/bg-BG.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index b1ecd6fa655b..bd76cf0bec35 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Ключ" // Suffix "1" #define D_SENSOR_BUTTON "Бутон" // Suffix "1" From 7722c663a033b1fad68ca9e78aa441ffb8f1c8ff Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:17:26 +0200 Subject: [PATCH 062/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/cs-CZ.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 2f51ccc93b69..0a3430e013ae 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Spínač" // Suffix "1" #define D_SENSOR_BUTTON "Tlačítko" // Suffix "1" From a5c85a6882a4648b1e5e8258be5d07968ef6eac2 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:18:06 +0200 Subject: [PATCH 063/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/de-DE.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 888345d8af78..32d6a8f2b105 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRSend" #define D_SENSOR_SWITCH "Switch " // Suffix "1" #define D_SENSOR_BUTTON "Button " // Suffix "1" From 9ce856bb6ee7b7a146354a1fb226b4887c687e48 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:19:41 +0200 Subject: [PATCH 064/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/el-GR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 3187eadf96b9..b2fa8feb6619 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Διακόπτης" // Suffix "1" #define D_SENSOR_BUTTON "Κουμπί" // Suffix "1" From f891a8a2e73d172e7368ac5d089ba4a9c017ed2e Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:22:02 +0200 Subject: [PATCH 065/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/es-AR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 986b9507fa67..398d0442fe73 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IR TX" #define D_SENSOR_SWITCH "Llave" // Suffix "1" #define D_SENSOR_BUTTON "Botón" // Suffix "1" From 1791f8e034ffb1f0fab077592eb4b913e75ef2b8 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:23:00 +0200 Subject: [PATCH 066/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/fr-FR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 2a46f7b53428..a4b7d20113e3 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "ÉmetIR" #define D_SENSOR_SWITCH "Inter." // Suffix "1" #define D_SENSOR_BUTTON "Bouton" // Suffix "1" From f3ebfe7c5f3e10f19ed406720b8136070eeba2b7 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:24:03 +0200 Subject: [PATCH 067/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/it-IT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index d07a330218d3..509105eb5ee9 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From efd1b8a1a3643af57ffda75a049288ab83f3ce72 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:24:12 +0200 Subject: [PATCH 068/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/hu-HU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index c57278176cf8..79fd88d8ece8 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRadó" #define D_SENSOR_SWITCH "Kapcsoló" // Suffix "1" #define D_SENSOR_BUTTON "Gomb" // Suffix "1" From 3b22dc7d52b1f7b7761a746389928b1a8a9120c3 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:26:33 +0200 Subject: [PATCH 069/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/nl-NL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 05ec4666ba1b..2761e45d3e3c 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Speler" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From d6324a9f44edf58e4fe9d29b66832ba5aa8c3732 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:27:28 +0200 Subject: [PATCH 070/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/pl-PL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index faaf8df6d2e5..9fa16ac9feee 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Przela" // Suffix "1" #define D_SENSOR_BUTTON "Przyci" // Suffix "1" From 1cf7bc747df792834a412914c5fe7f69ed54e384 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:28:50 +0200 Subject: [PATCH 071/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/pt-PT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index d39ec6e501ae..d4cea0a4875a 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Interruptor" // Suffix "1" #define D_SENSOR_BUTTON "Botão" // Suffix "1" From f6f69e3b4df2245e739c969e62cd7c1e181c127b Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:29:00 +0200 Subject: [PATCH 072/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/pt-BR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 318f69e4513d..46a21b998ea9 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Interruptor" // Suffix "1" #define D_SENSOR_BUTTON "Botão" // Suffix "1" From 764af507b9df4fa057cc8202f3455404c1d0d1ee Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:30:24 +0200 Subject: [PATCH 073/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/tr-TR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index b133d2c80627..1f11d4a018a9 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From 8dfbaf656651cbdc164c2177ae9fd9eef6cdb004 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:30:31 +0200 Subject: [PATCH 074/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/ru-RU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 5fea0468e68a..e782e9409eff 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Свич" // Suffix "1" #define D_SENSOR_BUTTON "Кнопка" // Suffix "1" From a33566f93e547a6014119b4aa1c41cee2a102a78 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:34:15 +0200 Subject: [PATCH 075/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/zh-TW.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index abb92d359ea2..c0702326808c 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From a37f0b397335ff79a558852d4e38d29c322fc845 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:34:22 +0200 Subject: [PATCH 076/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/zh-CN.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 88f680f8e042..24eb38f6f5cf 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Switch" // Suffix "1" #define D_SENSOR_BUTTON "Button" // Suffix "1" From 9bb6c201dfe882a157077d53ac8b21e4f391e8b3 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 7 Sep 2018 08:34:31 +0200 Subject: [PATCH 077/798] Added DFPlayer Mini MP3 Player, D_SENSOR_DFR562 --- sonoff/language/uk-UK.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 9cf66773b103..90cfb9f4a31e 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -456,6 +456,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Перемикач" // Suffix "1" #define D_SENSOR_BUTTON "Кнопка" // Suffix "1" From b659444c3abb8fd641ed1eb7eeeaa08034297f4f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 7 Sep 2018 10:54:24 +0200 Subject: [PATCH 078/798] Add basic MP3 player * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) * Add basic support for MP3 player using DFRobot RB-DFR-562 (#3723) --- sonoff/_changelog.ino | 3 +- sonoff/user_config.h | 4 +-- sonoff/{xdrv_91_mp3.ino => xdrv_14_mp3.ino} | 36 ++++++++++++--------- 3 files changed, 24 insertions(+), 19 deletions(-) rename sonoff/{xdrv_91_mp3.ino => xdrv_14_mp3.ino} (83%) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 49193dfbdf57..82d12f28e80d 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,7 +1,8 @@ /* 6.2.1.2 20180906 - * Fix KNX PA exception. Regression from 6.2.1 buffer overflow (#3700, #3710) + * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) * Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) * Add experimental support for PZEM-003,014,016,017 Energy monitoring (#3694) + * Add basic support for MP3 player using DFRobot RB-DFR-562 (#3723) * * 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules diff --git a/sonoff/user_config.h b/sonoff/user_config.h index b7a54408dc2d..d46a295d73ce 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -268,9 +268,6 @@ // -- Internal Analog input ----------------------- #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices -// -- MP3 player ---------------------------------- -//#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop - // -- One wire sensors ---------------------------- // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors #define USE_DS18x20 // Optional for more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) @@ -343,6 +340,7 @@ #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) +//#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/sonoff/xdrv_91_mp3.ino b/sonoff/xdrv_14_mp3.ino similarity index 83% rename from sonoff/xdrv_91_mp3.ino rename to sonoff/xdrv_14_mp3.ino index 82c778127f0f..e4c72cb167b3 100644 --- a/sonoff/xdrv_91_mp3.ino +++ b/sonoff/xdrv_14_mp3.ino @@ -1,32 +1,39 @@ /* - xdrv_91_mp3.ino - MP3 Player support for Sonoff-Tasmota - Player type: RB-DFR-562, DFPlayer Mini MP3 Player - Copyright (C) 2018 Theo Arends + xdrv_14_mp3.ino - MP3 support for Sonoff-Tasmota + + Copyright (C) 2018 gemu2015, mike2nl and Theo Arends + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program. If not, see . - */ #ifdef USE_MP3_PLAYER +/*********************************************************************************************\ + * MP3 control for RB-DFR-562 DFRobot mini MP3 player + * https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299 +\*********************************************************************************************/ #include TasmotaSerial *MP3Player; #define D_CMND_MP3 "MP3" + const char S_JSON_MP3_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_MP3 "%s\":%d}"; const char S_JSON_MP3_COMMAND[] PROGMEM = "{\"" D_CMND_MP3 "%s\"}"; enum MP3_Commands { CMND_MP3_PLAY, CMND_MP3_STOP, CMND_MP3_VOLUME}; -const char kMP3_Commands[] PROGMEM = "Play" "|" "Stop" "|" "Volume"; +const char kMP3_Commands[] PROGMEM = "Play|Stop|Volume"; #define MP3_CMD_PLAY 3 #define MP3_CMD_VOLUME 6 @@ -43,11 +50,10 @@ uint16_t MP3_Checksum(uint8_t *array) } // init player define serial tx port -void InitMP3Player() { - MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3PLAYER]); - +void MP3PlayerInit() { + MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3_DFR562]); + if (MP3Player->begin(9600)) { - //serial_bridge_active = 1; MP3Player->flush(); } } @@ -67,7 +73,7 @@ boolean MP3PlayerCmd() { char command[CMDSZ]; boolean serviced = true; uint8_t disp_len = strlen(D_CMND_MP3); - + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MP3), disp_len)) { // Prefix int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + disp_len, kMP3_Commands); @@ -82,7 +88,7 @@ boolean MP3PlayerCmd() { MP3_CMD(MP3_CMD_VOLUME, XdrvMailbox.payload * 30 / 100); } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); - } + } else if (CMND_MP3_STOP == command_code) { // stop MP3_CMD(MP3_CMD_STOP, 0); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload); @@ -97,15 +103,15 @@ boolean MP3PlayerCmd() { * Interface \*********************************************************************************************/ -#define XDRV_91 +#define XDRV_14 -boolean Xdrv91(byte function) +boolean Xdrv14(byte function) { boolean result = false; switch (function) { case FUNC_PRE_INIT: - InitMP3Player(); + MP3PlayerInit(); break; case FUNC_COMMAND: result = MP3PlayerCmd(); @@ -114,4 +120,4 @@ boolean Xdrv91(byte function) return result; } -#endif // USE_MP3_PLAYER +#endif // USE_MP3_PLAYER From f517755303587f5d5a6b60fb9c75d3dda2dabcde Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 7 Sep 2018 18:15:47 +0200 Subject: [PATCH 079/798] Prep for frequency display Prep for energy frequency display and update xnrg_05_pzem2.ino with correct register values --- sonoff/i18n.h | 1 + sonoff/settings.h | 3 +- sonoff/sonoff.ino | 14 +++-- sonoff/xdrv_03_energy.ino | 76 ++++++++++++++++++--------- sonoff/xnrg_01_hlw8012.ino | 41 ++++++++------- sonoff/xnrg_02_cse7766.ino | 1 + sonoff/xnrg_03_pzem004t.ino | 1 + sonoff/xnrg_05_pzem2.ino | 101 ++++++++++++++++++++---------------- sonoff/xsns_23_sdm120.ino | 2 +- 9 files changed, 144 insertions(+), 96 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 5559ac6d1701..da47371d8411 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -181,6 +181,7 @@ #define D_CMND_PRESSURE_RESOLUTION "PressRes" #define D_CMND_POWER_RESOLUTION "WattRes" #define D_CMND_VOLTAGE_RESOLUTION "VoltRes" +#define D_CMND_FREQUENCY_RESOLUTION "FreqRes" #define D_CMND_CURRENT_RESOLUTION "AmpRes" #define D_CMND_ENERGY_RESOLUTION "EnergyRes" #define D_CMND_MODULE "Module" diff --git a/sonoff/settings.h b/sonoff/settings.h index 32bc80ad04c3..a1fd218ac63e 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -112,8 +112,7 @@ typedef union { uint32_t spare08 : 1; uint32_t spare09 : 1; uint32_t spare10 : 1; - uint32_t spare11 : 1; - uint32_t spare12 : 1; + uint32_t frequency_resolution : 2; uint32_t axis_resolution : 2; uint32_t current_resolution : 2; uint32_t voltage_resolution : 2; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 6163acfa4252..6b2e8422b103 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -77,8 +77,8 @@ enum TasmotaCommands { CMND_BACKLOG, CMND_DELAY, CMND_POWER, CMND_FANSPEED, CMND_STATUS, CMND_STATE, CMND_POWERONSTATE, CMND_PULSETIME, CMND_BLINKTIME, CMND_BLINKCOUNT, CMND_SENSOR, CMND_SAVEDATA, CMND_SETOPTION, CMND_TEMPERATURE_RESOLUTION, CMND_HUMIDITY_RESOLUTION, - CMND_PRESSURE_RESOLUTION, CMND_POWER_RESOLUTION, CMND_VOLTAGE_RESOLUTION, CMND_CURRENT_RESOLUTION, CMND_ENERGY_RESOLUTION, CMND_MODULE, CMND_MODULES, - CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, + CMND_PRESSURE_RESOLUTION, CMND_POWER_RESOLUTION, CMND_VOLTAGE_RESOLUTION, CMND_FREQUENCY_RESOLUTION, CMND_CURRENT_RESOLUTION, CMND_ENERGY_RESOLUTION, + CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, @@ -87,8 +87,8 @@ enum TasmotaCommands { const char kTasmotaCommands[] PROGMEM = D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_FANSPEED "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SENSOR "|" D_CMND_SAVEDATA "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|" - D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_MODULE "|" D_CMND_MODULES "|" - D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" + D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" + D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" @@ -794,6 +794,12 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.voltage_resolution); } + else if (CMND_FREQUENCY_RESOLUTION == command_code) { + if ((payload >= 0) && (payload <= 3)) { + Settings.flag2.frequency_resolution = payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.frequency_resolution); + } else if (CMND_CURRENT_RESOLUTION == command_code) { if ((payload >= 0) && (payload <= 3)) { Settings.flag2.current_resolution = payload; diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index d9cfee8cb349..081b52d83349 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -44,11 +44,13 @@ const char kEnergyCommands[] PROGMEM = float energy_voltage = 0; // 123.1 V float energy_current = 0; // 123.123 A float energy_power = 0; // 123.1 W -float energy_frequency = 0; // 123.1 Hz -float energy_power_factor = 0; // 0.12 +float energy_power_factor = NAN; // 0.12 +int energy_calc_power_factor = 0; // Do not calculate power factor from data +float energy_frequency = NAN; // 123.1 Hz +float energy_start = 0; // 12345.12345 kWh total previous + float energy_daily = 0; // 123.123 kWh float energy_total = 0; // 12345.12345 kWh -float energy_start = 0; // 12345.12345 kWh total previous unsigned long energy_kWhtoday_delta = 0; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to energy_kWhtoday (HLW and CSE only) unsigned long energy_kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily unsigned long energy_period = 0; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily @@ -123,12 +125,14 @@ void Energy200ms() XnrgCall(FUNC_EVERY_200_MSECOND); - float power_factor = 0; - if (energy_voltage && energy_current && energy_power) { - power_factor = energy_power / (energy_voltage * energy_current); - if (power_factor > 1) power_factor = 1; + if (energy_calc_power_factor) { + float power_factor = 0; + if (energy_voltage && energy_current && energy_power) { + power_factor = energy_power / (energy_voltage * energy_current); + if (power_factor > 1) power_factor = 1; + } + energy_power_factor = power_factor; } - energy_power_factor = power_factor; } void EnergySaveState() @@ -537,11 +541,18 @@ void EnergySnsInit() } #ifdef USE_WEBSERVER -const char HTTP_ENERGY_SNS[] PROGMEM = "%s" +const char HTTP_ENERGY_SNS1[] PROGMEM = "%s" "{s}" D_VOLTAGE "{m}%s " D_UNIT_VOLT "{e}" "{s}" D_CURRENT "{m}%s " D_UNIT_AMPERE "{e}" - "{s}" D_POWERUSAGE "{m}%s " D_UNIT_WATT "{e}" - "{s}" D_POWER_FACTOR "{m}%s{e}" + "{s}" D_POWERUSAGE "{m}%s " D_UNIT_WATT "{e}"; + +const char HTTP_ENERGY_SNS2[] PROGMEM = "%s" + "{s}" D_POWER_FACTOR "{m}%s{e}"; + +const char HTTP_ENERGY_SNS3[] PROGMEM = "%s" + "{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"; + +const char HTTP_ENERGY_SNS4[] PROGMEM = "%s" "{s}" D_ENERGY_TODAY "{m}%s " D_UNIT_KILOWATTHOUR "{e}" "{s}" D_ENERGY_YESTERDAY "{m}%s " D_UNIT_KILOWATTHOUR "{e}" "{s}" D_ENERGY_TOTAL "{m}%s " D_UNIT_KILOWATTHOUR "{e}"; // {s} = , {m} = , {e} = @@ -555,31 +566,43 @@ void EnergyShow(boolean json) char energy_power_chr[10]; char energy_voltage_chr[10]; char energy_current_chr[10]; + char energy_frequency_chr[10]; char energy_power_factor_chr[10]; char energy_yesterday_chr[10]; char speriod[20]; + char spfactor[20]; + char sfrequency[20]; bool show_energy_period = (0 == tele_period); + dtostrfd(energy_power, Settings.flag2.wattage_resolution, energy_power_chr); + dtostrfd(energy_voltage, Settings.flag2.voltage_resolution, energy_voltage_chr); + dtostrfd(energy_current, Settings.flag2.current_resolution, energy_current_chr); + dtostrfd(energy_total, Settings.flag2.energy_resolution, energy_total_chr); + dtostrfd(energy_daily, Settings.flag2.energy_resolution, energy_daily_chr); + dtostrfd((float)Settings.energy_kWhyesterday / 100000, Settings.flag2.energy_resolution, energy_yesterday_chr); + float energy = 0; if (show_energy_period) { if (energy_period) energy = (float)(energy_kWhtoday - energy_period) / 100; energy_period = energy_kWhtoday; + dtostrfd(energy, Settings.flag2.wattage_resolution, energy_period_chr); + snprintf_P(speriod, sizeof(speriod), PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); + } + if (!isnan(energy_frequency)) { + dtostrfd(energy_frequency, Settings.flag2.frequency_resolution, energy_frequency_chr); + snprintf_P(sfrequency, sizeof(sfrequency), PSTR(",\"" D_JSON_FREQUENCY "\":%s"), energy_frequency_chr); + } + if (!isnan(energy_power_factor)) { + dtostrfd(energy_power_factor, 2, energy_power_factor_chr); + snprintf_P(spfactor, sizeof(spfactor), PSTR(",\"" D_JSON_POWERFACTOR "\":%s"), energy_power_factor_chr); } - - dtostrfd(energy_total, Settings.flag2.energy_resolution, energy_total_chr); - dtostrfd(energy_daily, Settings.flag2.energy_resolution, energy_daily_chr); - dtostrfd(energy, Settings.flag2.wattage_resolution, energy_period_chr); - dtostrfd(energy_power, Settings.flag2.wattage_resolution, energy_power_chr); - dtostrfd(energy_voltage, Settings.flag2.voltage_resolution, energy_voltage_chr); - dtostrfd(energy_current, Settings.flag2.current_resolution, energy_current_chr); - dtostrfd(energy_power_factor, 2, energy_power_factor_chr); - dtostrfd((float)Settings.energy_kWhyesterday / 100000, Settings.flag2.energy_resolution, energy_yesterday_chr); if (json) { - snprintf_P(speriod, sizeof(speriod), PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"), - mqtt_data, energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", energy_power_chr, energy_power_factor_chr, energy_voltage_chr, energy_current_chr); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" + D_JSON_POWERUSAGE "\":%s%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s%s}"), + mqtt_data, energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", + energy_power_chr, (!isnan(energy_power_factor)) ? spfactor : "", energy_voltage_chr, energy_current_chr, (!isnan(energy_frequency)) ? sfrequency : ""); #ifdef USE_DOMOTICZ if (show_energy_period) { // Only send if telemetry dtostrfd(energy_total * 1000, 1, energy_total_chr); @@ -593,7 +616,7 @@ void EnergyShow(boolean json) KnxSensor(KNX_ENERGY_VOLTAGE, energy_voltage); KnxSensor(KNX_ENERGY_CURRENT, energy_current); KnxSensor(KNX_ENERGY_POWER, energy_power); - KnxSensor(KNX_ENERGY_POWERFACTOR, energy_power_factor); + if (!isnan(energy_power_factor)) { KnxSensor(KNX_ENERGY_POWERFACTOR, energy_power_factor); } KnxSensor(KNX_ENERGY_DAILY, energy_daily); KnxSensor(KNX_ENERGY_TOTAL, energy_total); KnxSensor(KNX_ENERGY_START, energy_start); @@ -601,7 +624,10 @@ void EnergyShow(boolean json) #endif // USE_KNX #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS, mqtt_data, energy_voltage_chr, energy_current_chr, energy_power_chr, energy_power_factor_chr, energy_daily_chr, energy_yesterday_chr, energy_total_chr); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS1, mqtt_data, energy_voltage_chr, energy_current_chr, energy_power_chr); + if (!isnan(energy_power_factor)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS2, mqtt_data, energy_power_factor_chr); } + if (!isnan(energy_frequency)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS3, mqtt_data, energy_frequency_chr); } + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS4, mqtt_data, energy_daily_chr, energy_yesterday_chr, energy_total_chr); #endif // USE_WEBSERVER } } diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 440112c1535f..6ef196fb1eeb 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -41,26 +41,26 @@ #define HLW_POWER_PROBE_TIME 10 // Number of seconds to probe for power before deciding none used -static byte hlw_select_ui_flag; -static byte hlw_ui_flag = 1; -static byte hlw_load_off; -static byte hlw_cf1_timer; -static unsigned long hlw_cf_pulse_length; -static unsigned long hlw_cf_pulse_last_time; -static unsigned long hlw_cf1_pulse_length; -static unsigned long hlw_cf1_pulse_last_time; -static unsigned long hlw_cf1_summed_pulse_length; -static unsigned long hlw_cf1_pulse_counter; -static unsigned long hlw_cf1_voltage_pulse_length; -static unsigned long hlw_cf1_current_pulse_length; -static unsigned long hlw_energy_period_counter; - -static unsigned long hlw_power_ratio = 0; -static unsigned long hlw_voltage_ratio = 0; -static unsigned long hlw_current_ratio = 0; - -static unsigned long hlw_cf1_voltage_max_pulse_counter; -static unsigned long hlw_cf1_current_max_pulse_counter; +byte hlw_select_ui_flag; +byte hlw_ui_flag = 1; +byte hlw_load_off; +byte hlw_cf1_timer; +unsigned long hlw_cf_pulse_length; +unsigned long hlw_cf_pulse_last_time; +unsigned long hlw_cf1_pulse_length; +unsigned long hlw_cf1_pulse_last_time; +unsigned long hlw_cf1_summed_pulse_length; +unsigned long hlw_cf1_pulse_counter; +unsigned long hlw_cf1_voltage_pulse_length; +unsigned long hlw_cf1_current_pulse_length; +unsigned long hlw_energy_period_counter; + +unsigned long hlw_power_ratio = 0; +unsigned long hlw_voltage_ratio = 0; +unsigned long hlw_current_ratio = 0; + +unsigned long hlw_cf1_voltage_max_pulse_counter; +unsigned long hlw_cf1_current_max_pulse_counter; #ifndef USE_WS2812_DMA // Collides with Neopixelbus but solves exception void HlwCfInterrupt() ICACHE_RAM_ATTR; @@ -217,6 +217,7 @@ void HlwDrvInit() { if (!energy_flg) { if ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // Sonoff Pow or any HLW8012 based device + energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_01; } } diff --git a/sonoff/xnrg_02_cse7766.ino b/sonoff/xnrg_02_cse7766.ino index 640da704ecc7..84535cf96dcf 100644 --- a/sonoff/xnrg_02_cse7766.ino +++ b/sonoff/xnrg_02_cse7766.ino @@ -185,6 +185,7 @@ void CseDrvInit() if ((SONOFF_S31 == Settings.module) || (SONOFF_POW_R2 == Settings.module)) { // Sonoff S31 or Sonoff Pow R2 baudrate = 4800; serial_config = SERIAL_8E1; + energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_02; } } diff --git a/sonoff/xnrg_03_pzem004t.ino b/sonoff/xnrg_03_pzem004t.ino index d009feea4ce1..03581862c1ce 100644 --- a/sonoff/xnrg_03_pzem004t.ino +++ b/sonoff/xnrg_03_pzem004t.ino @@ -215,6 +215,7 @@ void PzemDrvInit() { if (!energy_flg) { if ((pin[GPIO_PZEM_RX] < 99) && (pin[GPIO_PZEM_TX] < 99)) { // Any device with a Pzem004T + energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_03; } } diff --git a/sonoff/xnrg_05_pzem2.ino b/sonoff/xnrg_05_pzem2.ino index 2b326f21619b..7f9a4f8ba96a 100644 --- a/sonoff/xnrg_05_pzem2.ino +++ b/sonoff/xnrg_05_pzem2.ino @@ -89,61 +89,29 @@ bool Pzem2ModbusReceiveReady() return (Pzem2Serial->available() >= 5); // 5 - Error frame, 21 or 25 - Ok frame } -uint8_t Pzem2ModbusReceive() +uint8_t Pzem2ModbusReceive(uint8_t *buffer, uint8_t register_count) { - uint8_t buffer[26]; - -// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 -// FE 04 14 08 98 03 E8 00 00 08 98 00 00 00 00 00 00 01 F4 00 64 00 00 HH LL = PZEM-014 -// Id Cc Sz Volt- Current---- Power------ Energy----- Frequ PFact Alarm Crc-- -// FE 04 10 27 10 00 64 03 E8 00 00 00 00 00 00 00 00 00 00 HH LL = PZEM-017 -// Id Cc Sz Volt- Curre Power------ Energy----- HiAlm LoAlm Crc-- + // 0 1 2 3 4 5 6 + // FE 04 02 08 98 HH LL + // Id Cc Sz Regis Crc-- uint8_t len = 0; - while (Pzem2Serial->available() > 0) { + while ((Pzem2Serial->available() > 0) && (len < (register_count *2) + 5)) { buffer[len++] = (uint8_t)Pzem2Serial->read(); if (3 == len) { if (buffer[1] & 0x80) { // fe 84 02 f2 f1 return buffer[2]; // 1 = Illegal Function, 2 = Illegal Address, 3 = Illegal Data, 4 = Slave Error } } - if (sizeof(buffer) == len) { break; } } AddLogSerial(LOG_LEVEL_DEBUG_MORE, buffer, len); - if (len < 5) { return 8; } // 8 = Not enough data - if (len != buffer[2] + 5) { return 9; } // 9 = Unexpected result + if (len < 7) { return 7; } // 7 = Not enough data + if (len != buffer[2] + 5) { return 8; } // 8 = Unexpected result uint16_t crc = (buffer[len -2] << 8) | buffer[len -1]; - if (Pzem2ModbusCalculateCRC(buffer, len -3) == crc) { - float energy = 0; - if (0x10 == buffer[2]) { // PZEM-003,017 - pzem2_type = PZEM2_TYPES_003_017; - energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 65535.x V - energy_current = (float)((buffer[5] << 8) + buffer[6]); // 65535.xx A - energy_power = (float)((uint32_t)buffer[9] << 24 + (uint32_t)buffer[10] << 16 + (uint32_t)buffer[7] << 8 + buffer[8]); // 65535 W - energy = (float)((uint32_t)buffer[13] << 24 + (uint32_t)buffer[14] << 16 + (uint32_t)buffer[11] << 8 + buffer[12]); // 65535 Wh - if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any - energy_kWhtoday += (energy - energy_start) * 100; - energy_start = energy; - EnergyUpdateToday(); - } - else if (0x14 == buffer[2]) { // PZEM-014,016 - pzem2_type = PZEM2_TYPES_014_016; - energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 65535.x V - energy_current = (float)((uint32_t)buffer[7] << 24 + (uint32_t)buffer[8] << 16 + (uint32_t)buffer[5] << 8 + buffer[6]); // 65535.xx A - energy_power = (float)((uint32_t)buffer[11] << 24 + (uint32_t)buffer[12] << 16 + (uint32_t)buffer[9] << 8 + buffer[10]); // 65535 W - energy_frequency = (float)((buffer[13] << 8) + buffer[14]) / 10.0; // 50.0 Hz - energy = (float)((uint32_t)buffer[15] << 24 + (uint32_t)buffer[16] << 16 + (uint32_t)buffer[13] << 8 + buffer[14]); // 65535 Wh - if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any - energy_kWhtoday += (energy - energy_start) * 100; - energy_start = energy; - EnergyUpdateToday(); - } - } else { - AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Pzem2 crc error")); - } + if (Pzem2ModbusCalculateCRC(buffer, len -3) != crc) { return 9; } // 9 = crc error return 0; // 0 = No error } @@ -152,11 +120,56 @@ uint8_t Pzem2ModbusReceive() uint8_t pzem2_sendRetry = 0; -void Pzem2EverySecond() +void Pzem2Every200ms() { bool data_ready = Pzem2ModbusReceiveReady(); - if (data_ready) { Pzem2ModbusReceive(); } + if (data_ready) { + uint8_t buffer[26]; + uint8_t error = Pzem2ModbusReceive(buffer, pzem2_type); + if (error) { + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "PZEM2 response error %d"), error); + AddLog(LOG_LEVEL_DEBUG); +// if (9 == error) { + if (PZEM2_TYPES_014_016 == pzem2_type) { + pzem2_type = PZEM2_TYPES_003_017; + } else { + pzem2_type = PZEM2_TYPES_014_016; + } +// } + } else { + float energy = 0; + + if (PZEM2_TYPES_003_017 == pzem2_type) { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + // FE 04 10 27 10 00 64 03 E8 00 00 00 00 00 00 00 00 00 00 HH LL = PZEM-017 + // Id Cc Sz Volt- Curre Power------ Energy----- HiAlm LoAlm Crc-- + energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 100.0; // 655.00 V + energy_current = (float)((buffer[5] << 8) + buffer[6]) / 100.0; // 655.00 A + energy_power = (float)((uint32_t)buffer[9] << 24 + (uint32_t)buffer[10] << 16 + (uint32_t)buffer[7] << 8 + buffer[8]) / 10.0; // 429496729.0 W + energy = (float)((uint32_t)buffer[13] << 24 + (uint32_t)buffer[14] << 16 + (uint32_t)buffer[11] << 8 + buffer[12]); // 4294967295 Wh + if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any + energy_kWhtoday += (energy - energy_start) * 100; + energy_start = energy; + EnergyUpdateToday(); + } + else if (PZEM2_TYPES_014_016 == pzem2_type) { // PZEM-014,016 + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + // FE 04 14 08 98 03 E8 00 00 08 98 00 00 00 00 00 00 01 F4 00 64 00 00 HH LL = PZEM-014 + // Id Cc Sz Volt- Current---- Power------ Energy----- Frequ PFact Alarm Crc-- + energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 6553.0 V + energy_current = (float)((uint32_t)buffer[7] << 24 + (uint32_t)buffer[8] << 16 + (uint32_t)buffer[5] << 8 + buffer[6]) / 1000.0; // 4294967.000 A + energy_power = (float)((uint32_t)buffer[11] << 24 + (uint32_t)buffer[12] << 16 + (uint32_t)buffer[9] << 8 + buffer[10]) / 10.0; // 429496729.0 W + energy_frequency = (float)((buffer[17] << 8) + buffer[18]) / 10.0; // 50.0 Hz + energy_power_factor = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00 + energy = (float)((uint32_t)buffer[15] << 24 + (uint32_t)buffer[16] << 16 + (uint32_t)buffer[13] << 8 + buffer[14]); // 4294967295 Wh + if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any + energy_kWhtoday += (energy - energy_start) * 100; + energy_start = energy; + EnergyUpdateToday(); + } + } + } if (0 == pzem2_sendRetry || data_ready) { pzem2_sendRetry = 5; @@ -203,8 +216,8 @@ int Xnrg05(byte function) case FUNC_INIT: Pzem2SnsInit(); break; - case FUNC_EVERY_SECOND: - Pzem2EverySecond(); + case FUNC_EVERY_200_MSECOND: + Pzem2Every200ms(); break; } } diff --git a/sonoff/xsns_23_sdm120.ino b/sonoff/xsns_23_sdm120.ino index c22bc28cb596..e5cc644188cc 100644 --- a/sonoff/xsns_23_sdm120.ino +++ b/sonoff/xsns_23_sdm120.ino @@ -246,7 +246,7 @@ void SDM120Show(boolean json) dtostrfd(sdm120_apparent_power, Settings.flag2.wattage_resolution, apparent_power); dtostrfd(sdm120_reactive_power, Settings.flag2.wattage_resolution, reactive_power); dtostrfd(sdm120_power_factor, 2, power_factor); - dtostrfd(sdm120_frequency, 2, frequency); + dtostrfd(sdm120_frequency, Settings.flag2.frequency_resolution, frequency); dtostrfd(sdm120_energy_total, Settings.flag2.energy_resolution, energy_total); if (json) { From b5d7f75647ab656bca132ae8986ad520c30eaf8e Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 8 Sep 2018 08:49:08 +0200 Subject: [PATCH 080/798] Fix setting and getting color temperature for Philips Hue emulation - Improve setting and getting color temperature for Philips Hue emulation - Clamp Philips Hue API values - Turn off white LEDs when setting hue+saturation --- sonoff/xdrv_04_light.ino | 26 ++++++++++++++++---------- sonoff/xplg_wemohue.ino | 33 +++++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 209fe467a028..93c2c522ccdc 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -557,8 +557,8 @@ void LightState(uint8_t append) if (light_subtype > LST_SINGLE) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_COLOR "\":\"%s\""), mqtt_data, LightGetColor(0, scolor)); // Add status for HSB - LightGetHsb(&hsb[0],&hsb[1],&hsb[2]); - // Scale these percentages up to the numbers expected byt he client + LightGetHsb(&hsb[0],&hsb[1],&hsb[2], false); + // Scale these percentages up to the numbers expected by the client h = round(hsb[0] * 360); s = round(hsb[1] * 100); b = round(hsb[2] * 100); @@ -911,13 +911,15 @@ void LightHsbToRgb() light_current_color[0] = (uint8_t)(r * 255.0f); light_current_color[1] = (uint8_t)(g * 255.0f); light_current_color[2] = (uint8_t)(b * 255.0f); + light_current_color[3] = 0; + light_current_color[4] = 0; } /********************************************************************************************/ -void LightGetHsb(float *hue, float *sat, float *bri) +void LightGetHsb(float *hue, float *sat, float *bri, bool gotct) { - if (light_subtype > LST_COLDWARM) { + if (light_subtype > LST_COLDWARM && !gotct) { LightRgbToHsb(); *hue = light_hue; *sat = light_saturation; @@ -925,16 +927,19 @@ void LightGetHsb(float *hue, float *sat, float *bri) } else { *hue = 0; *sat = 0; -// *bri = (2.54f * (float)Settings.light_dimmer); *bri = (0.01f * (float)Settings.light_dimmer); } } -void LightSetHsb(float hue, float sat, float bri, uint16_t ct) +void LightSetHsb(float hue, float sat, float bri, uint16_t ct, bool gotct) { if (light_subtype > LST_COLDWARM) { - if ((LST_RGBWC == light_subtype) && (ct > 0)) { - LightSetColorTemp(ct); + if ((LST_RGBWC == light_subtype) && (gotct)) { + uint8_t tmp = (uint8_t)(bri * 100); + Settings.light_dimmer = tmp; + if (ct > 0) { + LightSetColorTemp(ct); + } } else { light_hue = hue; light_saturation = sat; @@ -1114,7 +1119,7 @@ boolean LightCommand() } else { // Command with only 1 parameter, Hue (0360) ? (HSB[0] % 360) : HSB[0] ) /360.0, ( (HSB[1]>100) ? (HSB[1] % 100) : HSB[1] ) /100.0, ( (HSB[2]>100) ? (HSB[2] % 100) : HSB[2] ) /100.0, - 0); + 0, + false); } } else { LightState(0); diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 93912bc76636..f0b20ef59bbf 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -17,6 +17,9 @@ along with this program. If not, see . */ +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) + #if defined(USE_WEBSERVER) && defined(USE_EMULATION) /*********************************************************************************************\ * Belkin WeMo and Philips Hue bridge emulation @@ -462,10 +465,10 @@ const char HUE_LIGHTS_STATUS_JSON[] PROGMEM = "\"hue\":{h}," "\"sat\":{s}," "\"xy\":[0.5, 0.5]," - "\"ct\":500," + "\"ct\":{t}," "\"alert\":\"none\"," "\"effect\":\"none\"," - "\"colormode\":\"hs\"," + "\"colormode\":\"{m}\"," "\"reachable\":true}"; const char HUE_LIGHTS_STATUS_JSON2[] PROGMEM = ",\"type\":\"Extended color light\"," @@ -559,20 +562,26 @@ void HueConfig(String *path) WebServer->send(200, FPSTR(HDR_CTYPE_JSON), response); } +bool g_gotct = false; + void HueLightStatus1(byte device, String *response) { float hue = 0; float sat = 0; float bri = 0; + uint16_t ct = 500; if (light_type) { - LightGetHsb(&hue, &sat, &bri); + LightGetHsb(&hue, &sat, &bri, g_gotct); + ct = LightGetColorTemp(); } *response += FPSTR(HUE_LIGHTS_STATUS_JSON); response->replace("{state}", (power & (1 << (device-1))) ? "true" : "false"); response->replace("{h}", String((uint16_t)(65535.0f * hue))); response->replace("{s}", String((uint8_t)(254.0f * sat))); response->replace("{b}", String((uint8_t)(254.0f * bri))); + response->replace("{t}", String(ct)); + response->replace("{m}", g_gotct?"ct":"hs"); } void HueLightStatus2(byte device, String *response) @@ -678,11 +687,13 @@ void HueLights(String *path) } if (light_type) { - LightGetHsb(&hue, &sat, &bri); + LightGetHsb(&hue, &sat, &bri, g_gotct); } - if (hue_json.containsKey("bri")) { + if (hue_json.containsKey("bri")) { // Brightness is a scale from 1 (the minimum the light is capable of) to 254 (the maximum). Note: a brightness of 1 is not off. tmp = hue_json["bri"]; + tmp = max(tmp, 1); + tmp = min(tmp, 254); bri = (float)tmp / 254.0f; if (resp) { response += ","; @@ -694,7 +705,7 @@ void HueLights(String *path) resp = true; change = true; } - if (hue_json.containsKey("hue")) { + if (hue_json.containsKey("hue")) { // The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue. tmp = hue_json["hue"]; hue = (float)tmp / 65535.0f; if (resp) { @@ -704,11 +715,14 @@ void HueLights(String *path) response.replace("{id", String(device)); response.replace("{cm", "hue"); response.replace("{re", String(tmp)); + g_gotct = false; resp = true; change = true; } - if (hue_json.containsKey("sat")) { + if (hue_json.containsKey("sat")) { // Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white). tmp = hue_json["sat"]; + tmp = max(tmp, 0); + tmp = min(tmp, 254); sat = (float)tmp / 254.0f; if (resp) { response += ","; @@ -717,6 +731,8 @@ void HueLights(String *path) response.replace("{id", String(device)); response.replace("{cm", "sat"); response.replace("{re", String(tmp)); + g_gotct = false; + resp = true; change = true; } if (hue_json.containsKey("ct")) { // Color temperature 153 (Cold) to 500 (Warm) @@ -728,11 +744,12 @@ void HueLights(String *path) response.replace("{id", String(device)); response.replace("{cm", "ct"); response.replace("{re", String(ct)); + g_gotct = true; change = true; } if (change) { if (light_type) { - LightSetHsb(hue, sat, bri, ct); + LightSetHsb(hue, sat, bri, ct, g_gotct); } change = false; } From 7cd92248196550964de87ada6bf86a2b742b5b3d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Sep 2018 17:18:31 +0200 Subject: [PATCH 081/798] 6.2.1.3 - Change drop down list 6.2.1.3 20180907 * Change web Configure Module GPIO drop down list order for better readability * Fix showing Period Power in energy threshold messages * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) --- sonoff/_changelog.ino | 8 ++- sonoff/sonoff.ino | 2 +- sonoff/sonoff_template.h | 108 ++++++++++++++++++++++++++++++++++- sonoff/sonoff_version.h | 2 +- sonoff/xdrv_01_mqtt.ino | 6 +- sonoff/xdrv_02_webserver.ino | 8 +-- sonoff/xdrv_03_energy.ino | 3 + sonoff/xdrv_10_rules.ino | 2 +- 8 files changed, 125 insertions(+), 14 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 82d12f28e80d..c62144f8d19d 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,8 +1,14 @@ -/* 6.2.1.2 20180906 +/* 6.2.1.3 20180907 + * Change web Configure Module GPIO drop down list order for better readability + * Fix showing Period Power in energy threshold messages + * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) + * + * 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) * Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) * Add experimental support for PZEM-003,014,016,017 Energy monitoring (#3694) * Add basic support for MP3 player using DFRobot RB-DFR-562 (#3723) + * Fix setting and getting color temperature for Philips Hue emulation (#3733) * * 6.2.1.1 20180905 * Rewrite energy monitoring using energy sensor driver modules diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 6b2e8422b103..a1ab907abd6e 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -134,7 +134,7 @@ int ota_state_flag = 0; // OTA state flag int ota_result = 0; // OTA result int restart_flag = 0; // Sonoff restart flag int wifi_state_flag = WIFI_RESTART; // Wifi state flag -int tele_period = 0; // Tele period timer +int tele_period = 1; // Tele period timer int blinks = 201; // Number of LED blinks uint32_t uptime = 0; // Counting every second until 4294967295 = 130 year uint32_t global_update = 0; // Timestamp of last global temperature and humidity update diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 2ab43286db13..23019ff10222 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -21,6 +21,8 @@ #define _SONOFF_TEMPLATE_H_ // User selectable GPIO functionality +// ATTENTION: Only add at the end of this list just before GPIO_SENSOR_END +// Then add the same name(s) in a nice location in array kGpioNiceList enum UserSelectablePins { GPIO_NONE, // Not used GPIO_DHT11, // DHT11 @@ -244,7 +246,111 @@ typedef struct MYTMPLT { myio gp; } mytmplt; -const uint8_t kNiceList[MAXMODULE] PROGMEM = { +const uint8_t kGpioNiceList[GPIO_SENSOR_END] PROGMEM = { + GPIO_NONE, // Not used + GPIO_KEY1, // Buttons + GPIO_KEY1_NP, + GPIO_KEY2, + GPIO_KEY2_NP, + GPIO_KEY3, + GPIO_KEY3_NP, + GPIO_KEY4, + GPIO_KEY4_NP, + GPIO_SWT1, // User connected external switches + GPIO_SWT1_NP, + GPIO_SWT2, + GPIO_SWT2_NP, + GPIO_SWT3, + GPIO_SWT3_NP, + GPIO_SWT4, + GPIO_SWT4_NP, + GPIO_SWT5, + GPIO_SWT5_NP, + GPIO_SWT6, + GPIO_SWT6_NP, + GPIO_SWT7, + GPIO_SWT7_NP, + GPIO_SWT8, + GPIO_SWT8_NP, + GPIO_REL1, // Relays + GPIO_REL1_INV, + GPIO_REL2, + GPIO_REL2_INV, + GPIO_REL3, + GPIO_REL3_INV, + GPIO_REL4, + GPIO_REL4_INV, + GPIO_REL5, + GPIO_REL5_INV, + GPIO_REL6, + GPIO_REL6_INV, + GPIO_REL7, + GPIO_REL7_INV, + GPIO_REL8, + GPIO_REL8_INV, + GPIO_LED1, // Leds + GPIO_LED1_INV, + GPIO_LED2, + GPIO_LED2_INV, + GPIO_LED3, + GPIO_LED3_INV, + GPIO_LED4, + GPIO_LED4_INV, + GPIO_PWM1, // RGB Red or C Cold White + GPIO_PWM1_INV, + GPIO_PWM2, // RGB Green or CW Warm White + GPIO_PWM2_INV, + GPIO_PWM3, // RGB Blue + GPIO_PWM3_INV, + GPIO_PWM4, // RGBW (Cold) White + GPIO_PWM4_INV, + GPIO_PWM5, // RGBCW Warm White + GPIO_PWM5_INV, + GPIO_CNTR1, // Counters + GPIO_CNTR1_NP, + GPIO_CNTR2, + GPIO_CNTR2_NP, + GPIO_CNTR3, + GPIO_CNTR3_NP, + GPIO_CNTR4, + GPIO_CNTR4_NP, + GPIO_I2C_SCL, // I2C SCL + GPIO_I2C_SDA, // I2C SDA + GPIO_SPI_CS, // SPI Chip Select + GPIO_SPI_DC, // SPI Data Direction + GPIO_BACKLIGHT, // Display backlight control + GPIO_DHT11, // DHT11 + GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 + GPIO_SI7021, // iTead SI7021 + GPIO_DSB, // Single wire DS18B20 or DS18S20 + GPIO_WS2812, // WS2812 Led string + GPIO_IRSEND, // IR remote + GPIO_IRRECV, // IR receiver + GPIO_SR04_TRIG, // SR04 Trigger pin + GPIO_SR04_ECHO, // SR04 Echo pin + GPIO_TM16CLK, // TM1638 Clock + GPIO_TM16DIO, // TM1638 Data I/O + GPIO_TM16STB, // TM1638 Strobe + GPIO_SBR_TX, // Serial Bridge Serial interface + GPIO_SBR_RX, // Serial Bridge Serial interface + GPIO_MHZ_TXD, // MH-Z19 Serial interface + GPIO_MHZ_RXD, // MH-Z19 Serial interface + GPIO_SAIR_TX, // SenseAir Serial interface + GPIO_SAIR_RX, // SenseAir Serial interface + GPIO_SDS0X1, // Nova Fitness SDS011 Serial interface + GPIO_PZEM_TX, // PZEM004T Serial interface + GPIO_PZEM_RX, // PZEM004T Serial interface + GPIO_PZEM2_TX, // PZEM-003,014,016,017 Serial interface + GPIO_PZEM2_RX, // PZEM-003,014,016,017 Serial interface + GPIO_SDM120_TX, // SDM120 Serial interface + GPIO_SDM120_RX, // SDM120 Serial interface + GPIO_SDM630_TX, // SDM630 Serial interface + GPIO_SDM630_RX, // SDM630 Serial interface + GPIO_PMS5003, // Plantower PMS5003 Serial interface + GPIO_MP3_DFR562 // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface +}; + +const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { SONOFF_BASIC, SONOFF_RF, SONOFF_TH, diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 178e0af68cc9..f068473ab5f4 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020102 +#define VERSION 0x06020103 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_01_mqtt.ino b/sonoff/xdrv_01_mqtt.ino index c47728df0273..f3f33d69377e 100644 --- a/sonoff/xdrv_01_mqtt.ino +++ b/sonoff/xdrv_01_mqtt.ino @@ -380,9 +380,7 @@ void MqttConnected() MqttPublishPowerState(i); if (SONOFF_IFAN02 == Settings.module) { break; } // Only report status of light relay } - if (Settings.tele_period) { - tele_period = Settings.tele_period -9; - } + if (Settings.tele_period) { tele_period = Settings.tele_period -9; } // Enable TelePeriod in 9 seconds rules_flag.system_boot = 1; XdrvCall(FUNC_MQTT_INIT); } @@ -718,7 +716,6 @@ bool MqttCommand() } else if (CMND_BUTTONRETAIN == command_code) { if ((payload >= 0) && (payload <= 1)) { - strlcpy(Settings.button_topic, mqtt_topic, sizeof(Settings.button_topic)); if (!payload) { for(i = 1; i <= MAX_KEYS; i++) { SendKey(0, i, 9); // Clear MQTT retain in broker @@ -730,7 +727,6 @@ bool MqttCommand() } else if (CMND_SWITCHRETAIN == command_code) { if ((payload >= 0) && (payload <= 1)) { - strlcpy(Settings.button_topic, mqtt_topic, sizeof(Settings.button_topic)); if (!payload) { for(i = 1; i <= MAX_SWITCHES; i++) { SendKey(1, i, 9); // Clear MQTT retain in broker diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 4059459c54e0..4398a9eb06b1 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -768,7 +768,7 @@ void HandleModuleConfiguration() page.replace(F("{v}"), FPSTR(S_CONFIGURE_MODULE)); page += FPSTR(HTTP_SCRIPT_MODULE1); for (byte i = 0; i < MAXMODULE; i++) { - midx = pgm_read_byte(kNiceList + i); + midx = pgm_read_byte(kModuleNiceList + i); snprintf_P(stemp, sizeof(stemp), kModules[midx].name); snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, midx, midx +1, stemp); page += mqtt_data; @@ -779,10 +779,10 @@ void HandleModuleConfiguration() mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - for (byte j = 0; j < GPIO_SENSOR_END; j++) { - if (!GetUsedInModule(j, cmodule.gp.io)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, j, j, GetTextIndexed(stemp, sizeof(stemp), j, kSensorNames)); + midx = pgm_read_byte(kGpioNiceList + j); + if (!GetUsedInModule(midx, cmodule.gp.io)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, midx, midx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames)); page += mqtt_data; } } diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 081b52d83349..ac26a18da6dd 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -304,7 +304,10 @@ void EnergyMqttShow() { // {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}} snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str()); + int tele_period_save = tele_period; + tele_period = 2; EnergyShow(1); + tele_period = tele_period_save; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); energy_power_delta = 0; diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index df27cb4cdfda..930bde7d5e6e 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -426,7 +426,7 @@ void RulesEvery100ms() { if (Settings.rule_enabled) { // Any rule enabled mqtt_data[0] = '\0'; - uint16_t tele_period_save = tele_period; + int tele_period_save = tele_period; tele_period = 2; // Do not allow HA updates during next function call XsnsNextCall(FUNC_JSON_APPEND); // ,"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089} tele_period = tele_period_save; From b96c0d7773477b758ec2ce0818f3b8901b7312d6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Sep 2018 18:17:36 +0200 Subject: [PATCH 082/798] Fix Novafitnes GPIO selection Fix Novafitnes GPIO selection --- sonoff/sonoff_template.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index fd2806fa9a45..1ab62ae63695 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -94,8 +94,7 @@ enum UserSelectablePins { GPIO_SPI_DC, // SPI Data Direction GPIO_BACKLIGHT, // Display backlight control GPIO_PMS5003, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface - GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface + GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface GPIO_SBR_TX, // Serial Bridge Serial interface GPIO_SBR_RX, // Serial Bridge Serial interface GPIO_SR04_TRIG, // SR04 Trigger pin @@ -126,6 +125,7 @@ enum UserSelectablePins { GPIO_PZEM2_TX, // PZEM-003,014,016,017 Serial interface GPIO_PZEM2_RX, // PZEM-003,014,016,017 Serial interface GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player + GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -167,8 +167,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|" D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" D_SENSOR_BACKLIGHT "|" - D_SENSOR_PMS5003 "|" - D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" + D_SENSOR_PMS5003 "|" D_SENSOR_SDS0X1_RX "|" D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" @@ -178,7 +177,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|" - D_SENSOR_DFR562; + D_SENSOR_DFR562 "|" D_SENSOR_SDS0X1_TX; /********************************************************************************************/ @@ -339,7 +338,8 @@ const uint8_t kGpioNiceList[GPIO_SENSOR_END] PROGMEM = { GPIO_MHZ_RXD, // MH-Z19 Serial interface GPIO_SAIR_TX, // SenseAir Serial interface GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_SDS0X1, // Nova Fitness SDS011 Serial interface + GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface + GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface GPIO_PZEM_TX, // PZEM004T Serial interface GPIO_PZEM_RX, // PZEM004T Serial interface GPIO_PZEM2_TX, // PZEM-003,014,016,017 Serial interface From 3b029797b6534bdcd8c78be42b9e0b99cf7eed53 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Sep 2018 18:25:06 +0200 Subject: [PATCH 083/798] Add sleep to Nova Fitness SDS01X Add sleep to Nova Fitness SDS01X sensor (#2841, #3724) --- sonoff/_changelog.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c62144f8d19d..230a541b726a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Change web Configure Module GPIO drop down list order for better readability * Fix showing Period Power in energy threshold messages * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) + * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724) * * 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) From 56920ad8263c7b50f5811a29b057807af483417a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 8 Sep 2018 18:33:56 +0200 Subject: [PATCH 084/798] Adjust list box width Adjust GPIO drop down list box width --- sonoff/xdrv_02_webserver.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 4398a9eb06b1..55eb0f41bb8b 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -805,7 +805,7 @@ void HandleModuleConfiguration() for (byte i = 0; i < MAX_GPIO_PIN; i++) { if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { snprintf_P(stemp, 3, PINS_WEMOS +i*2); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s " D_GPIO "%d %s"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s " D_GPIO "%d %s"), (WEMOS==Settings.module)?stemp:"", i, (0==i)? D_SENSOR_BUTTON "1":(1==i)? D_SERIAL_OUT :(3==i)? D_SERIAL_IN :(9==i)? "ESP8285" :(10==i)? "ESP8285" :(12==i)? D_SENSOR_RELAY "1":(13==i)? D_SENSOR_LED "1i":(14==i)? D_SENSOR :"", i, i); page += mqtt_data; } From 4c41ea446154e780610bc1b96ec0f08803893a6b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Sep 2018 14:31:40 +0200 Subject: [PATCH 085/798] Houskeeping --- sonoff/sonoff.ino | 3 --- sonoff/support.ino | 12 ++++++++++++ sonoff/xdrv_02_webserver.ino | 2 +- tools/decode-status.py | 6 +++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index a1ab907abd6e..52cdb68ba442 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -849,10 +849,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) else if ((CMND_GPIO == command_code) && (index < MAX_GPIO_PIN)) { mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); -// if ((GPIO_USER == cmodule.gp.io[index]) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { if ((GPIO_USER == ValidGPIO(index, cmodule.gp.io[index])) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { for (byte i = 0; i < MAX_GPIO_PIN; i++) { -// if ((GPIO_USER == cmodule.gp.io[i]) && (Settings.my_gp.io[i] == payload)) { if ((GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) && (Settings.my_gp.io[i] == payload)) { Settings.my_gp.io[i] = 0; } @@ -862,7 +860,6 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{")); for (byte i = 0; i < MAX_GPIO_PIN; i++) { -// if (GPIO_USER == cmodule.gp.io[i]) { if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { if (jsflg) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data); jsflg = 1; diff --git a/sonoff/support.ino b/sonoff/support.ino index 291f2069df66..af93fa1486ba 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -936,8 +936,20 @@ void GetFeatures() #ifdef USE_DISPLAY_SH1106 feature_drv2 |= 0x00001000; // xdsp_06_sh1106.ino #endif +#ifdef USE_MP3_PLAYER + feature_drv2 |= 0x00002000; // xdrv_14_mp3.ino +#endif +#ifdef NO_EXTRA_4K_HEAP + feature_drv2 |= 0x00800000; // sonoff_post.h +#endif +#ifdef VTABLES_IN_IRAM + feature_drv2 |= 0x01000000; // platformio.ini +#endif +#ifdef VTABLES_IN_DRAM + feature_drv2 |= 0x02000000; // platformio.ini +#endif #ifdef VTABLES_IN_FLASH feature_drv2 |= 0x04000000; // platformio.ini #endif diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 55eb0f41bb8b..6cadb952fe91 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -1193,7 +1193,7 @@ void HandleSaveSettings() if (Settings.last_module != new_module) { Settings.my_gp.io[i] = 0; } else { - if (GPIO_USER == cmodule.gp.io[i]) { + if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { snprintf_P(stemp, sizeof(stemp), PSTR("g%d"), i); WebGetArg(stemp, tmp, sizeof(tmp)); Settings.my_gp.io[i] = (!strlen(tmp)) ? 0 : atoi(tmp); diff --git a/tools/decode-status.py b/tools/decode-status.py index b26be9df03a8..154b6e719b04 100644 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -108,10 +108,10 @@ "USE_CONFIG_OVERRIDE","BE_MINIMAL","USE_SENSORS","USE_CLASSIC", "USE_KNX_NO_EMULATION","USE_DISPLAY_MODES1TO5","USE_DISPLAY_GRAPH","USE_DISPLAY_LCD", "USE_DISPLAY_SSD1306","USE_DISPLAY_MATRIX","USE_DISPLAY_ILI9341","USE_DISPLAY_EPAPER", - "USE_DISPLAY_SH1106","","","", + "USE_DISPLAY_SH1106","USE_MP3_PLAYER","","", "","","","", - "","","","", - "","","VTABLES_IN_FLASH","PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH", + "","","","NO_EXTRA_4K_HEAP", + "VTABLES_IN_IRAM","VTABLES_IN_DRAM","VTABLES_IN_FLASH","PIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH", "PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY","PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH","DEBUG_THEO","USE_DEBUG_DRIVER" ],[ "","USE_ADC_VCC","USE_ENERGY_SENSOR","USE_PZEM004T", From 550c7d256f3d63f24f9b6613bc0e2f5d311fbf89 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Sep 2018 14:58:50 +0200 Subject: [PATCH 086/798] Add option -mtarget-align Add option -mtarget-align to solve linux compiled un-aligned binaries (#3678) --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index 4cda52b6f12a..d333fd187660 100644 --- a/platformio.ini +++ b/platformio.ini @@ -61,6 +61,7 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld + -mtarget-align ; -DUSE_CONFIG_OVERRIDE ; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH From 4f4743b77aa09e194e05b4a02e2e6897ceeea197 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 9 Sep 2018 15:36:19 +0200 Subject: [PATCH 087/798] Add pio option -mtarget-align Add pio option -mtarget-align to solve pio compile issues on linux. --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index 8254ca747ac4..f310d6c352f5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,6 +60,7 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld + -mtarget-align ; -DUSE_CONFIG_OVERRIDE -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -DVTABLES_IN_FLASH From cc23deac00908118000a7851df88c3edc695bf06 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 11:37:16 +0200 Subject: [PATCH 088/798] use SDS0X1 working period command --- sonoff/xsns_20_novasds.ino | 119 ++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 62 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 851326f3fd35..607bcc545fd6 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -27,26 +27,65 @@ #include +#ifndef WORKING_PERIOD + #define WORKING_PERIOD 5 +#endif + TasmotaSerial *NovaSdsSerial; uint8_t novasds_type = 1; uint8_t novasds_valid = 0; -uint8_t novasds_running = 1; -uint8_t novasds_read_tick = 30; -uint8_t novasds_wakup_tick = 179; -uint8_t novasds_ticker = 0; + +uint8_t novasds_workperiod[19] = {0xAA, 0xB4, 0x08, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0xAB}; //5 minutes +uint8_t novasds_setquerymode[19] = {0xAA, 0xB4, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xAB}; //query mode +uint8_t novasds_querydata[19] = {0xAA, 0xB4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x02, 0xAB}; //query DATA + struct sds011data { uint16_t pm100; uint16_t pm25; } novasds_data; +//Put sensor to sleep +void NovaSdsSetWorkPeriod() +{ + + while (NovaSdsSerial->available() > 0) { + NovaSdsSerial->read(); + } + + novasds_workperiod[4] = WORKING_PERIOD; + novasds_workperiod[17] = ((novasds_workperiod[2] + novasds_workperiod[3] + novasds_workperiod[4] + novasds_workperiod[15] + novasds_workperiod[16]) & 0xFF); //checksum + + + NovaSdsSerial->write(novasds_workperiod, sizeof(novasds_workperiod)); + + NovaSdsSerial->flush(); + + while (NovaSdsSerial->available() > 0) { + NovaSdsSerial->read(); + } + + NovaSdsSerial->write(novasds_setquerymode, sizeof(novasds_setquerymode)); + + NovaSdsSerial->flush(); + + while (NovaSdsSerial->available() > 0) { + NovaSdsSerial->read(); + } +} + + -bool NovaSdsReadData(bool publish) +bool NovaSdsReadData() { if (! NovaSdsSerial->available()) return false; - while ((NovaSdsSerial->peek() != 0xAA) && NovaSdsSerial->available()) { + NovaSdsSerial->write(novasds_querydata, sizeof(novasds_querydata)); + + NovaSdsSerial->flush(); + + while ((NovaSdsSerial->peek() != 0xAA) && NovaSdsSerial->available()) { NovaSdsSerial->read(); } @@ -56,9 +95,7 @@ bool NovaSdsReadData(bool publish) NovaSdsSerial->flush(); AddLogSerial(LOG_LEVEL_DEBUG_MORE, d, 8); - if (!publish){ - return false; - } + if (d[7] == ((d[1] + d[2] + d[3] + d[4] + d[5] + d[6]) & 0xFF)) { novasds_data.pm25 = (d[1] + 256 * d[2]); novasds_data.pm100 = (d[3] + 256 * d[4]); @@ -66,6 +103,9 @@ bool NovaSdsReadData(bool publish) AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDS: " D_CHECKSUM_FAILURE)); return false; } + + novasds_valid = 10; + return true; } @@ -73,35 +113,12 @@ bool NovaSdsReadData(bool publish) void NovaSdsSecond() // Every second { - if (novasds_ticker < novasds_read_tick) { - // wake up the sensor and wait read ticks to stabalize the sensor - if (!novasds_running) { - NovaSdsStart(); - novasds_running = 1; - } - - // drain the serial without publishing data - NovaSdsReadData(false); - novasds_ticker++; - - } else if (novasds_ticker == novasds_read_tick) { - - // try to take a single stable reading and sleep the sensor - if (NovaSdsReadData(true)) { - novasds_valid = 1; - NovaSdsStop(); - novasds_running = 0; - novasds_ticker++; - } else { - novasds_valid = 0; - } - - } else if (novasds_ticker >= novasds_wakup_tick) { - // reset the counter - novasds_ticker = 0; + if (NovaSdsReadData()) { + novasds_valid = 10; } else { - // sensor is sleeping keep waiting - novasds_ticker++; + if (novasds_valid) { + novasds_valid--; + } } } @@ -110,37 +127,15 @@ void NovaSdsSecond() // Every second void NovaSdsInit() { novasds_type = 0; - if (pin[GPIO_SDS0X1_RX] < 99 && pin[GPIO_SDS0X1_TX] < 99) { + if ((pin[GPIO_SDS0X1_RX] < 99) && (pin[GPIO_SDS0X1_TX] < 99)) { NovaSdsSerial = new TasmotaSerial(pin[GPIO_SDS0X1_RX], pin[GPIO_SDS0X1_TX], 1); - if (NovaSdsSerial->begin(9600)) { - if (NovaSdsSerial->hardwareSerial()) { - ClaimSerial(); - } + if (NovaSdsSerial->hardwareSerial()) { ClaimSerial(); } novasds_type = 1; } - } -} - -void NovaSdsStart() -{ - AddLog_P(LOG_LEVEL_DEBUG, "SDS: start"); - const uint8_t novasds_start_cmd[] = {0xAA, 0xB4, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x06, 0xAB}; - NovaSdsSerial->write(novasds_start_cmd, sizeof(novasds_start_cmd)); - NovaSdsSerial->flush(); -} -void NovaSdsStop() -{ - AddLog_P(LOG_LEVEL_DEBUG, "SDS: stop"); - const uint8_t novasds_stop_cmd[] = {0xAA, 0xB4, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x05, 0xAB}; - NovaSdsSerial->write(novasds_stop_cmd, sizeof(novasds_stop_cmd)); - NovaSdsSerial->flush(); - // drain any old data - while (NovaSdsSerial->available()) { - NovaSdsSerial->read(); - } + NovaSdsSetWorkPeriod(); } #ifdef USE_WEBSERVER From 0f25925357554efa51fe40346196fe8e46c2b2e8 Mon Sep 17 00:00:00 2001 From: edelstahlratte <17500289+edelstahlratte@users.noreply.github.com> Date: Mon, 10 Sep 2018 11:50:54 +0200 Subject: [PATCH 089/798] Add SDS0X1 working period --- sonoff/user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d46a295d73ce..357fe5fabd32 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -335,6 +335,7 @@ #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) #define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) + #define WORKING_PERIOD 5 // Working period of the SDS Sensor, Takes a reading every X Minutes #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) //#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) From ef6d5bb340c6d26509414c450d4afce71b4a45b3 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 12:11:28 +0200 Subject: [PATCH 090/798] cosmetics --- sonoff/xsns_20_novasds.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 607bcc545fd6..02614c9121b8 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -46,7 +46,6 @@ struct sds011data { uint16_t pm25; } novasds_data; -//Put sensor to sleep void NovaSdsSetWorkPeriod() { @@ -57,7 +56,6 @@ void NovaSdsSetWorkPeriod() novasds_workperiod[4] = WORKING_PERIOD; novasds_workperiod[17] = ((novasds_workperiod[2] + novasds_workperiod[3] + novasds_workperiod[4] + novasds_workperiod[15] + novasds_workperiod[16]) & 0xFF); //checksum - NovaSdsSerial->write(novasds_workperiod, sizeof(novasds_workperiod)); NovaSdsSerial->flush(); @@ -127,10 +125,12 @@ void NovaSdsSecond() // Every second void NovaSdsInit() { novasds_type = 0; - if ((pin[GPIO_SDS0X1_RX] < 99) && (pin[GPIO_SDS0X1_TX] < 99)) { + if (pin[GPIO_SDS0X1_RX] < 99 && pin[GPIO_SDS0X1_TX] < 99) { NovaSdsSerial = new TasmotaSerial(pin[GPIO_SDS0X1_RX], pin[GPIO_SDS0X1_TX], 1); if (NovaSdsSerial->begin(9600)) { - if (NovaSdsSerial->hardwareSerial()) { ClaimSerial(); } + if (NovaSdsSerial->hardwareSerial()) { + ClaimSerial(); + } novasds_type = 1; } } From 804e74d0de0322eac9a466db6a57f3578c99b351 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 12:22:00 +0200 Subject: [PATCH 091/798] cosmetics --- sonoff/xsns_20_novasds.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 02614c9121b8..2bce13e2a347 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -53,7 +53,7 @@ void NovaSdsSetWorkPeriod() NovaSdsSerial->read(); } - novasds_workperiod[4] = WORKING_PERIOD; + novasds_workperiod[4] = WORKING_PERIOD; novasds_workperiod[17] = ((novasds_workperiod[2] + novasds_workperiod[3] + novasds_workperiod[4] + novasds_workperiod[15] + novasds_workperiod[16]) & 0xFF); //checksum NovaSdsSerial->write(novasds_workperiod, sizeof(novasds_workperiod)); From dc3d699fd1436c245806bbe804e117a9c2ad7dba Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 12:23:51 +0200 Subject: [PATCH 092/798] cosmetics --- sonoff/xsns_20_novasds.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 2bce13e2a347..b6bd4a2c0576 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -60,17 +60,17 @@ void NovaSdsSetWorkPeriod() NovaSdsSerial->flush(); - while (NovaSdsSerial->available() > 0) { - NovaSdsSerial->read(); - } + while (NovaSdsSerial->available() > 0) { + NovaSdsSerial->read(); + } NovaSdsSerial->write(novasds_setquerymode, sizeof(novasds_setquerymode)); NovaSdsSerial->flush(); - while (NovaSdsSerial->available() > 0) { - NovaSdsSerial->read(); - } + while (NovaSdsSerial->available() > 0) { + NovaSdsSerial->read(); + } } From 047932a191ccc38c43d4ffb262b5695aaae903ee Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 12:25:57 +0200 Subject: [PATCH 093/798] cosmetics --- sonoff/xsns_20_novasds.ino | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index b6bd4a2c0576..46db2fb6a08e 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -57,15 +57,13 @@ void NovaSdsSetWorkPeriod() novasds_workperiod[17] = ((novasds_workperiod[2] + novasds_workperiod[3] + novasds_workperiod[4] + novasds_workperiod[15] + novasds_workperiod[16]) & 0xFF); //checksum NovaSdsSerial->write(novasds_workperiod, sizeof(novasds_workperiod)); - NovaSdsSerial->flush(); while (NovaSdsSerial->available() > 0) { NovaSdsSerial->read(); } - NovaSdsSerial->write(novasds_setquerymode, sizeof(novasds_setquerymode)); - + NovaSdsSerial->write(novasds_setquerymode, sizeof(novasds_setquerymode)); NovaSdsSerial->flush(); while (NovaSdsSerial->available() > 0) { @@ -80,10 +78,9 @@ bool NovaSdsReadData() if (! NovaSdsSerial->available()) return false; NovaSdsSerial->write(novasds_querydata, sizeof(novasds_querydata)); - NovaSdsSerial->flush(); - while ((NovaSdsSerial->peek() != 0xAA) && NovaSdsSerial->available()) { + while ((NovaSdsSerial->peek() != 0xAA) && NovaSdsSerial->available()) { NovaSdsSerial->read(); } From b9d1bb965ced0887af43467f747cef38da692209 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 10 Sep 2018 14:06:31 +0200 Subject: [PATCH 094/798] correct error --- sonoff/xsns_20_novasds.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 46db2fb6a08e..815041cabad4 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -129,10 +129,9 @@ void NovaSdsInit() ClaimSerial(); } novasds_type = 1; + NovaSdsSetWorkPeriod(); } } - - NovaSdsSetWorkPeriod(); } #ifdef USE_WEBSERVER From 6f4fefbd771008fe2ea9ce5adb2a1a34a744451e Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 10 Sep 2018 18:32:41 +0200 Subject: [PATCH 095/798] Fix potential buffer overun for EVENT --- sonoff/xsns_29_mcp230xx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index d6683da44e95..058d6c25c4a9 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -300,7 +300,7 @@ void MCP230xx_CheckForInterrupt(void) { MqttPublishPrefixTopic_P(RESULT_OR_STAT, mqtt_data); } if (int_event) { - char command[18]; + char command[19]; // Theoretical max = 'event MCPINT_D16=1' so 18 + 1 (for the \n) sprintf(command,"event MCPINT_D%i=%i",intp+(mcp230xx_port*8),((mcp230xx_intcap >> intp) & 0x01)); ExecuteCommand(command, SRC_RULE); } From 786fd792b715607fc0752c1c2ffb6ce7f9492c27 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 10 Sep 2018 19:44:23 +0200 Subject: [PATCH 096/798] Fix tr-TR.h and uk-UK.h compiler errors --- sonoff/language/tr-TR.h | 2 ++ sonoff/language/uk-UK.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 1f11d4a018a9..086c236aa725 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -476,6 +476,8 @@ #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" #define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 90cfb9f4a31e..19094d5742c2 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -476,6 +476,8 @@ #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" #define D_SENSOR_SDS0X1 "SDS0X1" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" #define D_SENSOR_SR04_TRIG "SR04 Tri" From 40b9e06b1e678497018d305910aa19150009d4c3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 10 Sep 2018 18:04:21 -0300 Subject: [PATCH 097/798] Enable AD0 in sonoff-sensors.bin #3756 --- sonoff/sonoff_post.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 7504af3b45c9..8622d0818846 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -62,7 +62,10 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_SENSORS -#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices +#ifdef USE_ADC_VCC +#undef USE_ADC_VCC +#endif +//#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices #define USE_DS18x20 // For more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) //#define USE_DS18x20_LEGACY // For more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) From e4ebee738b437fcc101f80e2f8d7df119aea9f02 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Sep 2018 10:49:13 +0200 Subject: [PATCH 098/798] Minor fixes Minor fixes --- sonoff/_changelog.ino | 3 ++- sonoff/xdrv_99_debug.ino | 3 +-- sonoff/xdsp_05_epaper.ino | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 230a541b726a..d9044fcae277 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,7 +2,8 @@ * Change web Configure Module GPIO drop down list order for better readability * Fix showing Period Power in energy threshold messages * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) - * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724) + * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724, #3749) + * Add Analog input AD0 enabled to sonoff-sensors.bin (#3756, #3757) * * 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) diff --git a/sonoff/xdrv_99_debug.ino b/sonoff/xdrv_99_debug.ino index 8a167511c5be..3cd2e69c5d30 100644 --- a/sonoff/xdrv_99_debug.ino +++ b/sonoff/xdrv_99_debug.ino @@ -182,6 +182,7 @@ void CpuLoadLoop() #if defined(ARDUINO_ESP8266_RELEASE_2_3_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_0) || defined(ARDUINO_ESP8266_RELEASE_2_4_1) // All version before core 2.4.2 +// https://github.com/esp8266/Arduino/issues/2557 extern "C" { #include @@ -190,7 +191,6 @@ extern "C" { void DebugFreeMem() { -// https://github.com/esp8266/Arduino/issues/2557 register uint32_t *sp asm("a1"); // snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d, UnmodifiedStack %d (%s)"), @@ -213,7 +213,6 @@ extern "C" { void DebugFreeMem() { -// https://github.com/esp8266/Arduino/issues/2557 register uint32_t *sp asm("a1"); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d (%s)"), diff --git a/sonoff/xdsp_05_epaper.ino b/sonoff/xdsp_05_epaper.ino index 59a08584bfbf..91eb747f2554 100644 --- a/sonoff/xdsp_05_epaper.ino +++ b/sonoff/xdsp_05_epaper.ino @@ -188,7 +188,7 @@ boolean Xdsp05(byte function) if (FUNC_DISPLAY_INIT_DRIVER == function) { EpdInitDriver(); } - else if (XDSP_04 == Settings.display_model) { + else if (XDSP_05 == Settings.display_model) { if (!dsp_color) { dsp_color = COLORED; } From 702f44cf04467a389260b4189b8170fe64f91953 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 11 Sep 2018 14:10:51 -0300 Subject: [PATCH 099/798] Fixed Compilation Bug #3766 --- sonoff/xnrg_05_pzem2.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xnrg_05_pzem2.ino b/sonoff/xnrg_05_pzem2.ino index 7f9a4f8ba96a..b7e1eab42a19 100644 --- a/sonoff/xnrg_05_pzem2.ino +++ b/sonoff/xnrg_05_pzem2.ino @@ -211,7 +211,7 @@ int Xnrg05(byte function) if (FUNC_PRE_INIT == function) { Pzem2DrvInit(); } - else if (XNRG_03 == energy_flg) { + else if (XNRG_05 == energy_flg) { switch (function) { case FUNC_INIT: Pzem2SnsInit(); From e60f7e4e9edf3fed6188c6a46fce30d1cb4ac1d3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Sep 2018 19:14:15 +0200 Subject: [PATCH 100/798] Update xnrg_05_pzem2.ino --- sonoff/xnrg_05_pzem2.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xnrg_05_pzem2.ino b/sonoff/xnrg_05_pzem2.ino index 7f9a4f8ba96a..b7e1eab42a19 100644 --- a/sonoff/xnrg_05_pzem2.ino +++ b/sonoff/xnrg_05_pzem2.ino @@ -211,7 +211,7 @@ int Xnrg05(byte function) if (FUNC_PRE_INIT == function) { Pzem2DrvInit(); } - else if (XNRG_03 == energy_flg) { + else if (XNRG_05 == energy_flg) { switch (function) { case FUNC_INIT: Pzem2SnsInit(); From 8025f28409f210760a86f603df4e7b547d3a4cec Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 12 Sep 2018 19:00:35 -0300 Subject: [PATCH 101/798] Let syslog to be active when emulation is active too solves issue https://github.com/arendst/Sonoff-Tasmota/issues/2109 --- sonoff/sonoff.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 52cdb68ba442..a55e896c4d3b 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1004,7 +1004,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) else if (CMND_SYSLOG == command_code) { if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) { Settings.syslog_level = payload; - syslog_level = (Settings.flag2.emulation) ? 0 : payload; + syslog_level = payload; syslog_timer = 0; } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE, command, Settings.syslog_level, syslog_level); @@ -1596,7 +1596,7 @@ void PerformEverySecond() if (syslog_timer) { // Restore syslog level syslog_timer--; if (!syslog_timer) { - syslog_level = (Settings.flag2.emulation) ? 0 : Settings.syslog_level; + syslog_level = Settings.syslog_level; if (Settings.syslog_level) { AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_SYSLOG_LOGGING_REENABLED)); // Might trigger disable again (on purpose) } @@ -2513,7 +2513,7 @@ void setup() #ifndef USE_EMULATION Settings.flag2.emulation = 0; #endif // USE_EMULATION - syslog_level = (Settings.flag2.emulation) ? 0 : Settings.syslog_level; + syslog_level = Settings.syslog_level; stop_flash_rotate = Settings.flag.stop_flash_rotate; save_data_counter = Settings.save_data; sleep = Settings.sleep; From f8115a5abde45eac2748ccfb28fa5aba5e6cb9cc Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:43:23 -0300 Subject: [PATCH 102/798] Added support for Xiaomi-Phillips bulb https://github.com/arendst/Sonoff-Tasmota/issues/3055 --- sonoff/sonoff_template.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 1ab62ae63695..781b1004d416 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -230,6 +230,7 @@ enum SupportedModules { BLITZWOLF_BWSHP2, SHELLY1, SHELLY2, + PHILIPS, MAXMODULE }; /********************************************************************************************/ @@ -399,7 +400,8 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { KMC_70011, AILIGHT, WEMOS, - WITTY + WITTY, + PHILIPS }; // Default module settings @@ -1044,6 +1046,14 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_SWT2_NP, // GPIO14 0, // GPIO15 MCP39F501 Reset 0, 0 + }, + { "Xiaomi Philips", // Xiaomi Philips bulb (ESP8266) + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + GPIO_PWM2, // GPIO12 cold/warm light + 0, 0, + GPIO_PWM1, // GPIO15 light intensity + 0, 0 } }; From 6f724e705b63b93d38a24ea66109ff0ac04deca6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:45:01 -0300 Subject: [PATCH 103/798] Added support for Xiaomi-Phillips bulb --- sonoff/xdrv_04_light.ino | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 93c2c522ccdc..2a5a15b0c8ee 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -427,6 +427,11 @@ void LightSetColorTemp(uint16_t ct) } uint16_t icold = (100 * (347 - my_ct)) / 136; uint16_t iwarm = (100 * my_ct) / 136; + if (PHILIPS == Settings.module) { + // Xiaomi Philips bulbs follow a different scheme: + // channel 0=intensity, channel2=temperature + Settings.light_color[1] = (uint8_t)icold; + } else if (LST_RGBWC == light_subtype) { Settings.light_color[0] = 0; Settings.light_color[1] = 0; @@ -458,6 +463,15 @@ void LightSetDimmer(uint8_t myDimmer) { float temp; + if (PHILIPS == Settings.module) { + // Xiaomi Philips bulbs use two PWM channels with a different scheme: + float dimmer = 100 / (float)myDimmer; + temp = (float)Settings.light_color[0] / dimmer; // channel 1 is intensity + light_current_color[0] = (uint8_t)temp; + temp = (float)Settings.light_color[1]; // channel 2 is temperature + light_current_color[1] = (uint8_t)temp; + return; + } if (LT_PWM1 == light_type) { Settings.light_color[0] = 255; // One PWM channel only supports Dimmer but needs max color } From 2b6e97146edc91af0d9c6b6dad6d8cbca87d5b59 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:53:27 -0300 Subject: [PATCH 104/798] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 581b38e8331c..3f695f66667e 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ The following devices are supported: - [Supla device - Espablo-inCan mod. for electrical Installation box](https://forum.supla.org/viewtopic.php?f=33&t=2188) - [BlitzWolf BW-SHP2 Smart Socket with Energy Monitoring](https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html) - [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/) +- Xiaomi-Phillips Bulbs - Wemos D1 mini, NodeMcu and Ledunia ### Contribute From b3d2447fc708f470c21341283f63652a2c083ba4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 13 Sep 2018 11:54:24 -0300 Subject: [PATCH 105/798] Update _changelog.ino --- sonoff/_changelog.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index d9044fcae277..eed6ffcc747e 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -4,6 +4,7 @@ * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724, #3749) * Add Analog input AD0 enabled to sonoff-sensors.bin (#3756, #3757) + * Add Support to Xiaomi-Phillips Bulbs * * 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) From 15fb7307fc363c2e7d8f478183dc3c0af63ad58f Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Fri, 14 Sep 2018 16:39:06 +0200 Subject: [PATCH 106/798] Add login parms for tools/decode-status.py --- tools/decode-status.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/decode-status.py b/tools/decode-status.py index 154b6e719b04..74b10a57c61d 100644 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -28,12 +28,13 @@ and store it in file status.json Usage: - ./decode-status.py -d + ./decode-status.py -d [-u username] [-p password] or ./decode-status.py -f Example: ./decode-status.py -d sonoff1 + ./decode-status.py -d sonoff1 -p 12345678 or ./decode-status.py -f status.json """ @@ -42,6 +43,7 @@ import os.path import json import pycurl +import urllib2 from sys import exit from optparse import OptionParser from StringIO import StringIO @@ -136,13 +138,20 @@ parser = OptionParser(usage) parser.add_option("-d", "--dev", action="store", type="string", dest="device", help="device to retrieve status from") +parser.add_option("-u", "--username", action="store", type="string", + dest="username", help="username for login", default="admin") +parser.add_option("-p", "--password", action="store", type="string", + dest="password", help="password for login", default=None) parser.add_option("-f", "--file", metavar="FILE", dest="jsonfile", default="status.json", help="status json file (default: status.json)") (options, args) = parser.parse_args() if (options.device): buffer = StringIO() - url = str("http://{}/cm?cmnd=status%200".format(options.device)) + loginstr = "" + if options.password is not None: + loginstr = "user={}&password={}&".format(urllib2.quote(options.username), urllib2.quote(options.password)) + url = str("http://{}/cm?{}cmnd=status%200".format(options.device, loginstr)) c = pycurl.Curl() c.setopt(c.URL, url) c.setopt(c.WRITEDATA, buffer) @@ -217,4 +226,4 @@ def StartDecode(): try: StartDecode() except Exception as e: - print("E: {}".format(e)) \ No newline at end of file + print("E: {}".format(e)) From 63a1763a3f50a87fd2221f26cdb07f05e5974203 Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 15 Sep 2018 09:13:39 +0200 Subject: [PATCH 107/798] added MP3_VOLUME to init the MP3 Player --- sonoff/user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 357fe5fabd32..a07c87ec3c2b 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -342,6 +342,7 @@ //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) //#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop +// #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) From 3c947e4c81fa71c95bfa4964a55b098affa8d427 Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 15 Sep 2018 09:33:53 +0200 Subject: [PATCH 108/798] Added version info and new MP3 Player commands - Added the version information to have some little hints what is done. - Added new commands and changed two commands from the first version. -- Intention was to get as less of commands as needed. -- There will be possible a version with much more function and serial->read. Command list: - MP3TRACK -- specify playback of a track, e.g. MP3Track 003. - MP3PLAY -- Play, works as a normal play on a real MP3 Player, starts at 001.mp3 file on the selected device. - MP3PAUSE -- Pause, was original designed as stop, see data sheet. - MP3STOP -- Stop, it's a real stop now, in the original version it was a pause command. - MP3VOLUME -- specifies the volume and means a console input as 0..100. - MP3EQ -- specify the EQ(0/1/2/3/4/5), 0:Normal, 1:Pop, 2:Rock, 3:Jazz, 4:Classic, 5:Bass. - MP3DEVICE -- specify playback device, USB=1, SD-Card=2, default is 2 also after reset or power down/up. --- sonoff/xdrv_14_mp3.ino | 153 ++++++++++++++++++++++++++++++----------- 1 file changed, 113 insertions(+), 40 deletions(-) diff --git a/sonoff/xdrv_14_mp3.ino b/sonoff/xdrv_14_mp3.ino index e4c72cb167b3..d799aa1f0822 100644 --- a/sonoff/xdrv_14_mp3.ino +++ b/sonoff/xdrv_14_mp3.ino @@ -15,6 +15,40 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . + + -------------------------------------------------------------------------------------------- + Version yyyymmdd Action Description + -------------------------------------------------------------------------------------------- + 1.0.0.3 20180915 added - select device for SD-Card or USB Stick, default will be SD-Card + tested - works by MP3Device 1 = USB STick, or MP3Device 2 = SD-Card + - after power and/or reset the SD-Card(2) is the default device + --- + 1.0.0.2 20180912 added - again some if-commands to switch() because of new commands + --- + 1.0.0.1 20180911 added - command eq (equalizer 0..5) + tested - works in console with MP3EQ 1, the value can be 0..5 + added - USB device selection via command in console + tested - looks like it is working + erased - code for USB device about some errors, will be added in a next release + --- + 1.0.0.1 20180910 changed - command real MP3Stop in place of pause/stop used in the original version + changed - the command MP3Play e.g. 001 to MP3Track e.g. 001, + added - new normal command MP3Play and MP3Pause + --- + 1.0.0.0 20180907 merged - by arendst + changed - the driver name from xdrv_91_mp3.ino to xdrv_14_mp3.ino + --- + 0.9.0.3 20180906 request - Pull Request + changed - if-commands to switch() for faster response + --- + 0.9.0.2 20180906 cleaned - source code for faster reading + --- + 0.9.0.1 20180905 added - #include because compiler error (Arduino IDE v1.8.5) + --- + 0.9.0.0 20180901 started - further development by mike2nl - https://github.com/mike2nl/Sonoff-Tasmota + base - code base from gemu2015 ;-) - https://github.com/gemu2015/Sonoff-Tasmota + forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota + */ #ifdef USE_MP3_PLAYER @@ -31,14 +65,30 @@ TasmotaSerial *MP3Player; const char S_JSON_MP3_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_MP3 "%s\":%d}"; const char S_JSON_MP3_COMMAND[] PROGMEM = "{\"" D_CMND_MP3 "%s\"}"; - -enum MP3_Commands { CMND_MP3_PLAY, CMND_MP3_STOP, CMND_MP3_VOLUME}; -const char kMP3_Commands[] PROGMEM = "Play|Stop|Volume"; - -#define MP3_CMD_PLAY 3 -#define MP3_CMD_VOLUME 6 -#define MP3_CMD_STOP 0x0e - +const char kMP3_Commands[] PROGMEM = "Track|Play|Pause|Stop|Volume|EQ|Device"; + +// enumerations +enum MP3_Commands { // commands useable in console or rules + CMND_MP3_TRACK, // MP3Track 001...255 + CMND_MP3_PLAY, // MP3Play, after pause or normal start to play + CMND_MP3_PAUSE, // MP3Pause + CMND_MP3_STOP, // MP3Stop, real stop, original version was pause function + CMND_MP3_VOLUME, // MP3Volume 0..100 + CMND_MP3_EQ, // MP3EQ 0..5 + CMND_MP3_DEVICE }; // sd-card: 02, usb-stick: 01 + +// defines +#define MP3_CMD_TRACK 0x03 // specify playback of a track, e.g. MP3Track 003 +#define MP3_CMD_PLAY 0x0d // Play, works as a normal play on a real MP3 Player, starts at 001.mp3 file on the selected device +#define MP3_CMD_PAUSE 0x0e // Pause, was original designed as stop, see data sheet +#define MP3_CMD_STOP 0x16 // Stop, it's a real stop now, in the original version it was a pause command +#define MP3_CMD_VOLUME 0x06 // specifies the volume and means a console input as 0..100 +#define MP3_CMD_EQ 0x07 // specify EQ(0/1/2/3/4/5), 0:Normal, 1:Pop, 2:Rock, 3:Jazz, 4:Classic, 5:Bass +#define MP3_CMD_DEVICE 0x09 // specify playback device, USB=1, SD-Card=2, default is 2 also after reset or power down/up + +// calculate the checksum +// starts with cmd[1] with a length of 6 bytes +// uint16_t MP3_Checksum(uint8_t *array) { uint16_t checksum = 0; @@ -49,51 +99,74 @@ uint16_t MP3_Checksum(uint8_t *array) return checksum+1; } -// init player define serial tx port +// init player, define serial tx port +// fixed with 9600 baud +// void MP3PlayerInit() { MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3_DFR562]); - - if (MP3Player->begin(9600)) { + // start serial communication fixed to 9600 baud + if (MP3Player->begin(9600)) { MP3Player->flush(); + delay(1000); // set delay + // volume setting + MP3_CMD(MP3_CMD_VOLUME, MP3_VOLUME); // set volume depending on the entry in the user_config.h } } +// create mp3 command payload and send it via serail interface to the MP3 player +// {start byte, version, length, command, feedback, para MSB, para LSB, chks MSB, chks LSB, end byte}; +// {cmd[0] , cmd[1] , cmd[2], cmd[3] , cmd[4] , cmd[5] , cmd[6] , cmd[7] , cmd[8] , cmd[9] }; +// {0x7e , 0xff , 6 , 0 , 0/1 , 0 , 0 , 0 , 0 , 0xef }; +// void MP3_CMD(uint8_t mp3cmd,uint16_t val) { - uint8_t cmd[10] = {0x7e,0xff,6,0,0,0,0,0,0,0xef}; - cmd[3] = mp3cmd; - cmd[5] = val>>8; - cmd[6] = val; - uint16_t chks = MP3_Checksum(&cmd[1]); // calculate out - cmd[7] = chks>>8; - cmd[8] = chks; - MP3Player->write(cmd, sizeof(cmd)); + uint8_t cmd[10] = {0x7e,0xff,6,0,0,0,0,0,0,0xef}; // fill array + cmd[3] = mp3cmd; // mp3 command value + //cmd[4] = ; // feedback, yet not use + cmd[5] = val>>8; // data value, shift 8 byte right + cmd[6] = val; // data value low byte + uint16_t chks = MP3_Checksum(&cmd[1]); // see calculate the checksum, line 62..72 + cmd[7] = chks>>8; // checksum. shift 8 byte right + cmd[8] = chks; // checksum low byte + MP3Player->write(cmd, sizeof(cmd)); // write mp3 data array to player } +// check the MP3 commands +// boolean MP3PlayerCmd() { char command[CMDSZ]; boolean serviced = true; uint8_t disp_len = strlen(D_CMND_MP3); - if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MP3), disp_len)) { // Prefix + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MP3), disp_len)) { // prefix int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + disp_len, kMP3_Commands); - - if (CMND_MP3_PLAY == command_code) { - if (XdrvMailbox.data_len > 0) { // play - MP3_CMD(MP3_CMD_PLAY, XdrvMailbox.payload); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); - } - else if (CMND_MP3_VOLUME == command_code) { - if (XdrvMailbox.data_len > 0) { // set volume - MP3_CMD(MP3_CMD_VOLUME, XdrvMailbox.payload * 30 / 100); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); - } - else if (CMND_MP3_STOP == command_code) { // stop - MP3_CMD(MP3_CMD_STOP, 0); - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload); - } else { - serviced = false; // Unknown command + + switch (command_code) { + case CMND_MP3_TRACK: + case CMND_MP3_VOLUME: + case CMND_MP3_EQ: + case CMND_MP3_DEVICE: + // play a track, set volume, select EQ, sepcify file device + if (XdrvMailbox.data_len > 0) { + if (command_code == CMND_MP3_TRACK) { MP3_CMD(MP3_CMD_TRACK, XdrvMailbox.payload); } + if (command_code == CMND_MP3_VOLUME) { MP3_CMD(MP3_CMD_VOLUME, XdrvMailbox.payload * 30 / 100); } + if (command_code == CMND_MP3_EQ) { MP3_CMD(MP3_CMD_EQ, XdrvMailbox.payload); } + if (command_code == CMND_MP3_DEVICE) { MP3_CMD(MP3_CMD_DEVICE, XdrvMailbox.payload); } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); + break; + case CMND_MP3_PLAY: + case CMND_MP3_PAUSE: + case CMND_MP3_STOP: + // play or re-play after pause, pause, stop, + if (command_code == CMND_MP3_PLAY) { MP3_CMD(MP3_CMD_PLAY, 0); } + if (command_code == CMND_MP3_PAUSE) { MP3_CMD(MP3_CMD_PAUSE, 0); } + if (command_code == CMND_MP3_STOP) { MP3_CMD(MP3_CMD_STOP, 0); } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload); + break; + default: + // else for Unknown command + serviced = false; + break; } } return serviced; @@ -111,10 +184,10 @@ boolean Xdrv14(byte function) switch (function) { case FUNC_PRE_INIT: - MP3PlayerInit(); + MP3PlayerInit(); // init and start communication break; case FUNC_COMMAND: - result = MP3PlayerCmd(); + result = MP3PlayerCmd(); // return result from mp3 player command break; } return result; From 9fc5d7162965e1d3415cee133404f961e85c9e99 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 15 Sep 2018 12:00:22 +0200 Subject: [PATCH 109/798] Update Czech translation Update Czech translation --- sonoff/language/cs-CZ.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 9a0b11062ff8..e90797725c4f 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -94,7 +94,7 @@ #define D_FALSE "Nepravda" #define D_FILE "Soubor" #define D_FREE_MEMORY "Volná paměť" -#define D_FREQUENCY "Frequency" +#define D_FREQUENCY "Kmitočet" #define D_GAS "Plyn" #define D_GATEWAY "Výchozí brána" #define D_GROUP "Skupina" @@ -128,7 +128,7 @@ #define D_POWERUSAGE_APPARENT "Apparent Power" #define D_POWERUSAGE_REACTIVE "Reactive Power" #define D_PRESSURE "Tlak" -#define D_PRESSUREATSEALEVEL "Tlak na úrovni hladiny moře" +#define D_PRESSUREATSEALEVEL "Tlak na hladině moře" #define D_PROGRAM_FLASH_SIZE "Velikost paměti flash" #define D_PROGRAM_SIZE "Velikost programu" #define D_PROJECT "Projekt" From d0fa749c306327f4b37c873fd18b986d163c397e Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sat, 15 Sep 2018 15:56:56 +0200 Subject: [PATCH 110/798] MCP230xx - Fix support for setoption4 --- sonoff/xsns_29_mcp230xx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 058d6c25c4a9..586b8da8e013 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -297,7 +297,7 @@ void MCP230xx_CheckForInterrupt(void) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str()); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"MCP230XX_INT\":{\"D%i\":%i,\"MS\":%lu}"), mqtt_data, intp+(mcp230xx_port*8), ((mcp230xx_intcap >> intp) & 0x01),millis_since_last_int); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); - MqttPublishPrefixTopic_P(RESULT_OR_STAT, mqtt_data); + MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR("MCP230XX_INT")); } if (int_event) { char command[19]; // Theoretical max = 'event MCPINT_D16=1' so 18 + 1 (for the \n) From 98cfb0080382df4f3a8a0cb1a77297fdf70595e6 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sat, 15 Sep 2018 18:59:45 +0200 Subject: [PATCH 111/798] MCP230xx - Fix millisecond counter reset placement --- sonoff/xsns_29_mcp230xx.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 586b8da8e013..80aa76b7afdc 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -280,7 +280,9 @@ void MCP230xx_CheckForInterrupt(void) { if (report_int) { bool int_tele = false; bool int_event = false; - unsigned long millis_since_last_int = millis() - int_millis[intp+(mcp230xx_port*8)]; + unsigned long millis_now = millis(); + unsigned long millis_since_last_int = millis_now - int_millis[intp+(mcp230xx_port*8)]; + int_millis[intp+(mcp230xx_port*8)]=millis_now; switch (Settings.mcp230xx_config[intp+(mcp230xx_port*8)].int_report_mode) { case 0: int_tele=true; @@ -304,7 +306,6 @@ void MCP230xx_CheckForInterrupt(void) { sprintf(command,"event MCPINT_D%i=%i",intp+(mcp230xx_port*8),((mcp230xx_intcap >> intp) & 0x01)); ExecuteCommand(command, SRC_RULE); } - int_millis[intp+(mcp230xx_port*8)]=millis(); } } } From bf7dcb8eec8c898e869b04e7313e1fcd1073726c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 16 Sep 2018 16:09:00 +0200 Subject: [PATCH 112/798] 6.2.1.3 Add SerialSend5 6.2.1.4 20180916 * Add command SerialSend5 to send raw serial data like "A5074100545293" * Update MCP230xx driver * Update Czech translation * Update MP3 driver (#3800) * Add userid/password option to decode-status.py (#3796) * Fix syslog when emulation is selected (#2109, #3784) * Fix Pzem2 compilation error (#3766, #3767) --- sonoff/_changelog.ino | 13 +++++++++++-- sonoff/sonoff.ino | 13 ++++++++----- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 15 +++++++++++++++ sonoff/user_config.h | 2 +- sonoff/xdrv_06_snfbridge.ino | 19 ++----------------- 6 files changed, 38 insertions(+), 26 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index eed6ffcc747e..bd4ee9b7c61c 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,10 +1,19 @@ -/* 6.2.1.3 20180907 +/* 6.2.1.4 20180916 + * Add command SerialSend5 to send raw serial data like "A5074100545293" + * Update MCP230xx driver + * Update Czech translation + * Update MP3 driver (#3800) + * Add userid/password option to decode-status.py (#3796) + * Fix syslog when emulation is selected (#2109, #3784) + * Fix Pzem2 compilation error (#3766, #3767) + * + * 6.2.1.3 20180907 * Change web Configure Module GPIO drop down list order for better readability * Fix showing Period Power in energy threshold messages * Fix ButtonRetain to not use default topic for clearing retain messages (#3737) * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724, #3749) * Add Analog input AD0 enabled to sonoff-sensors.bin (#3756, #3757) - * Add Support to Xiaomi-Phillips Bulbs + * Add Support for Xiaomi-Philips Bulbs (#3787) * * 6.2.1.2 20180906 * Fix KNX PA exception. Regression from 6.2.1 buffer overflow caused by subStr() (#3700, #3710) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index a55e896c4d3b..4903fe80f213 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -969,22 +969,25 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.baudrate * 1200); } - else if ((CMND_SERIALSEND == command_code) && (index > 0) && (index <= 4)) { + else if ((CMND_SERIALSEND == command_code) && (index > 0) && (index <= 5)) { SetSeriallog(LOG_LEVEL_NONE); Settings.flag.mqtt_serial = 1; - Settings.flag.mqtt_serial_raw = (4 == index) ? 1 : 0; + Settings.flag.mqtt_serial_raw = (index > 3) ? 1 : 0; if (data_len > 0) { if (1 == index) { - Serial.printf("%s\n", dataBuf); + Serial.printf("%s\n", dataBuf); // "Hello Tiger\n" } else if (2 == index || 4 == index) { for (int i = 0; i < data_len; i++) { - Serial.write(dataBuf[i]); + Serial.write(dataBuf[i]); // "Hello Tiger" or "A0" } } else if (3 == index) { uint16_t dat_len = data_len; - Serial.printf("%s", Unescape(dataBuf, &dat_len)); + Serial.printf("%s", Unescape(dataBuf, &dat_len)); // "Hello\f" + } + else if (5 == index) { + SerialSendRaw(dataBuf, data_len); // "AA004566" } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); } diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index f068473ab5f4..f5f94dad156b 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020103 +#define VERSION 0x06020104 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index af93fa1486ba..fb2b5eae323e 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -704,6 +704,21 @@ void ClaimSerial() Settings.baudrate = baudrate / 1200; } +void SerialSendRaw(char *codes, int size) +{ + char *p; + char stemp[3]; + uint8_t code; + + while (size > 0) { + snprintf(stemp, sizeof(stemp), codes); + code = strtol(stemp, &p, 16); + Serial.write(code); + size -= 2; + codes += 2; + } +} + uint32_t GetHash(const char *buffer, size_t size) { uint32_t hash = 0; diff --git a/sonoff/user_config.h b/sonoff/user_config.h index a07c87ec3c2b..5a2b909de0ef 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -342,7 +342,7 @@ //#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) //#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop -// #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) + #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/sonoff/xdrv_06_snfbridge.ino b/sonoff/xdrv_06_snfbridge.ino index b0518f133b72..379d29455000 100644 --- a/sonoff/xdrv_06_snfbridge.ino +++ b/sonoff/xdrv_06_snfbridge.ino @@ -199,21 +199,6 @@ uint8_t SnfBrUpdateInit() /********************************************************************************************/ -void SonoffBridgeSendRaw(char *codes, int size) -{ - char *p; - char stemp[3]; - uint8_t code; - - while (size > 0) { - snprintf(stemp, sizeof(stemp), codes); - code = strtol(stemp, &p, 16); - Serial.write(code); - size -= 2; - codes += 2; - } -} - void SonoffBridgeReceivedRaw() { // Decoding according to https://github.com/Portisch/RF-Bridge-EFM8BB1 @@ -552,11 +537,11 @@ boolean SonoffBridgeCommand() break; case 192: // 0xC0 - Beep char beep[] = "AAC000C055"; - SonoffBridgeSendRaw(beep, sizeof(beep)); + SerialSendRaw(beep, sizeof(beep)); break; } } else { - SonoffBridgeSendRaw(XdrvMailbox.data, XdrvMailbox.data_len); + SerialSendRaw(XdrvMailbox.data, XdrvMailbox.data_len); sonoff_bridge_receive_raw_flag = 1; } } From 29b3e6ec27ae9395764e19545246f7fb76f254d3 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sun, 16 Sep 2018 21:36:56 +0200 Subject: [PATCH 113/798] MCP230xx - Change address selection from auto to user defined --- sonoff/user_config.h | 3 +- sonoff/xsns_29_mcp230xx.ino | 73 +++++++++++++++---------------------- 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 5a2b909de0ef..20339b5f6c77 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -294,7 +294,8 @@ // #define USE_SI1145 // Enable SI1145/46/47 sensor (I2C address 0x60) (+1k code) #define USE_LM75AD // Enable LM75AD sensor (I2C addresses 0x48 - 0x4F) (+0k5 code) // #define USE_APDS9960 // Enable APDS9960 Proximity Sensor (I2C address 0x39). Disables SHT and VEML6070 (+4k7 code) -// #define USE_MCP230xx // Enable MCP23008/MCP23017 for GP INPUT ONLY (I2C addresses 0x20 - 0x27) providing command Sensor29 for configuration (+4k7 code) +// #define USE_MCP230xx // Enable MCP23008/MCP23017 - Must define I2C Address in #define USE_MCP230xx_ADDR below - range 0x20 - 0x27 (+4k7 code) +// #define USE_MCP230xx_ADDR 0x20 // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x27 - set according to your wired setup) // #define USE_MCP230xx_OUTPUT // Enable MCP23008/MCP23017 OUTPUT support through sensor29 commands (+1k5 code) // #define USE_MCP230xx_DISPLAYOUTPUT // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code) // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 80aa76b7afdc..50798eb8fadd 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -31,15 +31,6 @@ #define XSNS_29 29 -#define MCP230xx_ADDRESS1 0x20 -#define MCP230xx_ADDRESS2 0x21 -#define MCP230xx_ADDRESS3 0x22 -#define MCP230xx_ADDRESS4 0x23 -#define MCP230xx_ADDRESS5 0x24 -#define MCP230xx_ADDRESS6 0x25 -#define MCP230xx_ADDRESS7 0x26 -#define MCP230xx_ADDRESS8 0x27 - /* Default register locations for MCP23008 - They change for MCP23017 in default bank mode */ @@ -53,8 +44,6 @@ uint8_t MCP230xx_INTCAP = 0x08; uint8_t MCP230xx_GPIO = 0x09; uint8_t mcp230xx_type = 0; -uint8_t mcp230xx_address; -uint8_t mcp230xx_addresses[] = { MCP230xx_ADDRESS1, MCP230xx_ADDRESS2, MCP230xx_ADDRESS3, MCP230xx_ADDRESS4, MCP230xx_ADDRESS5, MCP230xx_ADDRESS6, MCP230xx_ADDRESS7, MCP230xx_ADDRESS8 }; uint8_t mcp230xx_pincount = 0; uint8_t mcp230xx_int_en = 0; uint8_t mcp230xx_int_prio_counter = 0; @@ -131,7 +120,7 @@ const char* IntModeTxt(uint8_t intmo) { } uint8_t MCP230xx_readGPIO(uint8_t port) { - return I2cRead8(mcp230xx_address, MCP230xx_GPIO + port); + return I2cRead8(USE_MCP230xx_ADDR, MCP230xx_GPIO + port); } void MCP230xx_ApplySettings(void) { @@ -178,11 +167,11 @@ void MCP230xx_ApplySettings(void) { } #endif // USE_MCP230xx_OUTPUT } - I2cWrite8(mcp230xx_address, MCP230xx_GPPU+mcp230xx_port, reg_gppu); - I2cWrite8(mcp230xx_address, MCP230xx_GPINTEN+mcp230xx_port, reg_gpinten); - I2cWrite8(mcp230xx_address, MCP230xx_IODIR+mcp230xx_port, reg_iodir); + I2cWrite8(USE_MCP230xx_ADDR, MCP230xx_GPPU+mcp230xx_port, reg_gppu); + I2cWrite8(USE_MCP230xx_ADDR, MCP230xx_GPINTEN+mcp230xx_port, reg_gpinten); + I2cWrite8(USE_MCP230xx_ADDR, MCP230xx_IODIR+mcp230xx_port, reg_iodir); #ifdef USE_MCP230xx_OUTPUT - I2cWrite8(mcp230xx_address, MCP230xx_GPIO+mcp230xx_port, reg_portpins); + I2cWrite8(USE_MCP230xx_ADDR, MCP230xx_GPIO+mcp230xx_port, reg_portpins); #endif // USE_MCP230xx_OUTPUT } for (uint8_t idx=0;idx 0) { - if (I2cValidRead8(&mcp230xx_intcap, mcp230xx_address, MCP230xx_INTCAP+mcp230xx_port)) { + if (I2cValidRead8(&mcp230xx_intcap, USE_MCP230xx_ADDR, MCP230xx_INTCAP+mcp230xx_port)) { for (uint8_t intp = 0; intp < 8; intp++) { if ((intf >> intp) & 0x01) { // we know which pin caused interrupt report_int = 0; @@ -367,7 +352,7 @@ void MCP230xx_SetOutPin(uint8_t pin,uint8_t pinstate) { portpins ^= (1 << (pin-(port*8))); } } - I2cWrite8(mcp230xx_address, MCP230xx_GPIO + port, portpins); + I2cWrite8(USE_MCP230xx_ADDR, MCP230xx_GPIO + port, portpins); if (Settings.flag.save_state) { // Firmware configured to save last known state in settings Settings.mcp230xx_config[pin].saved_state=portpins>>(pin-(port*8))&1; Settings.mcp230xx_config[pin+pinadd].saved_state=portpins>>(pin+pinadd-(port*8))&1; From bffc820fb05bae7582934d27e76b6fd1bd86206b Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 17 Sep 2018 08:23:39 +0200 Subject: [PATCH 114/798] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 2616af48fed0..f97db3ad082b 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -4,6 +4,9 @@ about: Create a report to help us improve --- +**IMPORTANT NOTICE** +If you do not complete the template below your it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. + **Describe the bug** _A clear and concise description of what the bug is._ @@ -11,6 +14,7 @@ _A clear and concise description of what the bug is._ _Also, make sure these boxes are checked [x] before submitting your issue - Thank you!_ - [ ] _Searched the problem in issues and in the wiki_ - [ ] _Hardware used_ : +- [ ] _Development/Compiler/Upload tools used_ : - [ ] _Provide the output of command_``status 0`` : ``` STATUS 0 OUTPUT HERE From 2f0cd60cb3a6ee1cab85c1b3b73e9a13d41e1a8a Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 17 Sep 2018 08:26:43 +0200 Subject: [PATCH 115/798] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 159549128389..bc769a38d2db 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -4,12 +4,16 @@ about: Users Troubleshooting Help --- +**IMPORTANT NOTICE** +If you do not complete the template below your it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. + Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in issues (https://github.com/arendst/Sonoff-Tasmota/issues) - [ ] Searched the problem in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting) - [ ] Searched the problem in the forum (https://groups.google.com/d/forum/sonoffusers) - [ ] Searched the problem in the chat (https://discord.gg/Ks2Kzd4) +- [ ] Development/Compiler/Upload tools used : - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : ``` From 3d74ed9964b9b40ba4fc6bce18aa561d25554f58 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 17 Sep 2018 09:08:37 +0200 Subject: [PATCH 116/798] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index f97db3ad082b..bf55e130ecb0 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -5,7 +5,7 @@ about: Create a report to help us improve --- **IMPORTANT NOTICE** -If you do not complete the template below your it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. +If you do not complete the template below it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. **Describe the bug** _A clear and concise description of what the bug is._ From de406b7868f0c6a0d7ab75a3270ef9971dec30a8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 17 Sep 2018 09:11:18 +0200 Subject: [PATCH 117/798] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index bc769a38d2db..77fc7a3e7b5e 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -5,7 +5,7 @@ about: Users Troubleshooting Help --- **IMPORTANT NOTICE** -If you do not complete the template below your it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. +If you do not complete the template below it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. Make sure these boxes are checked [x] before submitting your issue - Thank you! From ff4f8f75c17aa21db912775d947d31caf9a2616b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 17 Sep 2018 20:32:38 +0200 Subject: [PATCH 118/798] Add uncalibrated energy monitor Add uncalibrated energy monitoring to Shelly2 (#2789) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_03_energy.ino | 4 +- sonoff/xnrg_04_mcp39f501.ino | 301 +++++++++++++++++++++++++++++++++++ 3 files changed, 304 insertions(+), 2 deletions(-) create mode 100644 sonoff/xnrg_04_mcp39f501.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index bd4ee9b7c61c..fdf73fdc782b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -6,6 +6,7 @@ * Add userid/password option to decode-status.py (#3796) * Fix syslog when emulation is selected (#2109, #3784) * Fix Pzem2 compilation error (#3766, #3767) + * Add uncalibrated energy monitoring to Shelly2 (#2789) * * 6.2.1.3 20180907 * Change web Configure Module GPIO drop down list order for better readability diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index ac26a18da6dd..aa589efab211 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -98,6 +98,8 @@ void EnergyUpdateToday() void Energy200ms() { + energy_power_on = (power != 0) | Settings.flag.no_power_on_check; + energy_fifth_second++; if (5 == energy_fifth_second) { energy_fifth_second = 0; @@ -121,8 +123,6 @@ void Energy200ms() } } - energy_power_on = (power &1) | Settings.flag.no_power_on_check; - XnrgCall(FUNC_EVERY_200_MSECOND); if (energy_calc_power_factor) { diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino new file mode 100644 index 000000000000..f74111f9d22c --- /dev/null +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -0,0 +1,301 @@ +/* + xnrg_04_mcp39f501.ino - MCP39F501 energy sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#ifdef USE_MCP39F501 +/*********************************************************************************************\ + * MCP39F501 - Energy (Shelly 2) + * + * Based on datasheet from https://www.microchip.com/wwwproducts/en/MCP39F501 + * and https://github.com/OLIMEX/olimex-iot-firmware-esp8266/blob/7a7f9bb56d4b72770dba8d0f18eaa9d956dd0baf/olimex/user/modules/mod_emtr.c +\*********************************************************************************************/ + +#define XNRG_04 4 + +#define MCP_START_FRAME 0xA5 +#define MCP_ACK_FRAME 0x06 +#define MCP_ERROR_NAK 0x15 +#define MCP_ERROR_CRC 0x51 + +#define MCP_SINGLE_WIRE 0xAB + +#define MCP_SET_ADDRESS 0x41 + +#define MCP_READ 0x4E +#define MCP_READ_16 0x52 +#define MCP_READ_32 0x44 + +#define MCP_WRITE 0x4D +#define MCP_WRITE_16 0x57 +#define MCP_WRITE_32 0x45 + +#define MCP_SAVE_REGISTERS 0x53 + +#define MCP_FLASH_READ 0x42 +#define MCP_FLASH_WRITE 0x50 + +uint32 mcp_system_configuration = 0x03000000; +uint8_t mcp_single_wire_active = 0; + +/*********************************************************************************************\ + * Olimex tools + * https://github.com/OLIMEX/olimex-iot-firmware-esp8266/blob/7a7f9bb56d4b72770dba8d0f18eaa9d956dd0baf/olimex/user/modules/mod_emtr.c +\*********************************************************************************************/ + + +unsigned long McpExtractInt(uint8_t *data, uint8_t offset, uint8_t size) +{ + unsigned long result = 0; + unsigned long pow = 1; + + for (byte i = 0; i < size; i++) { + result = result + data[offset + i] * pow; + pow = pow * 256; + } + return result; +} + +void McpSetSystemConfiguration(uint16 interval) +{ + uint8_t data[17]; + + data[ 0] = MCP_START_FRAME; + data[ 1] = sizeof(data); + data[ 2] = MCP_SET_ADDRESS; // Set address pointer + data[ 3] = 0x00; // address + data[ 4] = 0x42; // address + data[ 5] = MCP_WRITE_32; // Write 4 bytes + data[ 6] = (mcp_system_configuration >> 24) & 0xFF; // system_configuration + data[ 7] = (mcp_system_configuration >> 16) & 0xFF; // system_configuration + data[ 8] = (mcp_system_configuration >> 8) & 0xFF; // system_configuration + data[ 9] = (mcp_system_configuration >> 0) & 0xFF; // system_configuration + data[10] = MCP_SET_ADDRESS; // Set address pointer + data[11] = 0x00; // address + data[12] = 0x5A; // address + data[13] = MCP_WRITE_16; // Write 2 bytes + data[14] = (interval >> 8) & 0xFF; // interval + data[15] = (interval >> 0) & 0xFF; // interval + uint8_t checksum = 0; + for (byte i = 0; i < sizeof(data) -1; i++) { checksum += (uint8_t)data[i]; } + data[16] = checksum; + + // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A + AddLogSerial(LOG_LEVEL_DEBUG, data, sizeof(data)); + + for (byte i = 0; i < sizeof(data); i++) { Serial.write(data[i]); } +} + +void McpSingleWireStart() +{ + if ((mcp_system_configuration & (1 << 8)) != 0) { return; } + mcp_system_configuration = mcp_system_configuration | (1 << 8); + McpSetSystemConfiguration(6); // 64 + mcp_single_wire_active = 1; +} + +void McpSingleWireStop() +{ + if ((mcp_system_configuration & (1 << 8)) == 0) { return; } + mcp_system_configuration = mcp_system_configuration & (~(1 << 8)); + McpSetSystemConfiguration(2); // 4 + mcp_single_wire_active = 0; +} + +/********************************************************************************************/ + +unsigned long mcp_current = 0; +unsigned long mcp_voltage = 0; +unsigned long mcp_power = 0; +unsigned long mcp_frequency = 0; + +void McpParseData(uint8_t single_wire) +{ + if (single_wire) { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + // AB CD EF 51 06 00 00 B8 08 FC 0D 00 00 0A C4 11 + // Header-- Current---- Volt- Power------ Freq- Ck + + mcp_current = McpExtractInt((uint8_t*)serial_in_buffer, 3, 4); + mcp_voltage = McpExtractInt((uint8_t*)serial_in_buffer, 7, 2); + mcp_power = McpExtractInt((uint8_t*)serial_in_buffer, 9, 4); + mcp_frequency = McpExtractInt((uint8_t*)serial_in_buffer, 13, 2); + } else { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + // 06 19 61 06 00 00 FE 08 9B 0E 00 00 0B 00 00 00 97 0E 00 00 FF 7F 0C C6 35 + // Ak Ln Current---- Volt- ActivePower ReActivePow ApparentPow Factr Frequ Ck + + mcp_current = McpExtractInt((uint8_t*)serial_in_buffer, 2, 4); + mcp_voltage = McpExtractInt((uint8_t*)serial_in_buffer, 6, 2); + mcp_power = McpExtractInt((uint8_t*)serial_in_buffer, 8, 4); + mcp_frequency = McpExtractInt((uint8_t*)serial_in_buffer, 22, 2); + } + + if (energy_power_on) { // Powered on + energy_frequency = (float)mcp_frequency / 1000; + energy_voltage = (float)mcp_voltage / 10; + energy_power = (float)mcp_power / 100; + if (0 == energy_power) { + energy_current = 0; + } else { + energy_current = (float)mcp_current / 10000; + } + } else { // Powered off + energy_frequency = 0; + energy_voltage = 0; + energy_power = 0; + energy_current = 0; + } +} + +bool McpSerialInput() +{ + Settings.flag.mqtt_serial = 0; // Disable possible SerialReceive handling + + serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; + if (MCP_ERROR_CRC == serial_in_buffer[0]) { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: Send " D_CHECKSUM_FAILURE)); + return 1; + } + else if (MCP_ACK_FRAME == serial_in_buffer[0]) { + if ((serial_in_byte_counter > 1) && (serial_in_byte_counter == serial_in_buffer[1])) { + + AddLogSerial(LOG_LEVEL_DEBUG_MORE); + + uint8_t checksum = 0; + for (byte i = 0; i < serial_in_byte_counter -1; i++) { checksum += (uint8_t)serial_in_buffer[i]; } + if (checksum != serial_in_buffer[serial_in_byte_counter -1]) { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); + } else { + if (25 == serial_in_buffer[1]) { McpParseData(0); } + } + return 1; + } + } + else if (MCP_SINGLE_WIRE == serial_in_buffer[0]) { + if (serial_in_byte_counter == 16) { + + AddLogSerial(LOG_LEVEL_DEBUG_MORE); + + uint8_t checksum = 0; + for (byte i = 3; i < serial_in_byte_counter -1; i++) { checksum += (uint8_t)serial_in_buffer[i]; } +// if (~checksum != serial_in_buffer[serial_in_byte_counter -1]) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); +// } else { + McpParseData(1); +// } + return 1; + } + } + else { + return 1; + } + serial_in_byte = 0; // Discard + return 0; +} + +/********************************************************************************************/ + +void McpEverySecond() +{ + if (!mcp_single_wire_active) { + char get_state[] = "A5084100044E1656"; + SerialSendRaw(get_state, sizeof(get_state)); + } + + energy_kWhtoday += (energy_power / 36); + EnergyUpdateToday(); +} + +void McpSnsInit() +{ + digitalWrite(15, 1); // GPIO15 - MCP enable +} + +void McpDrvInit() +{ + if (!energy_flg) { + if (SHELLY2 == Settings.module) { + pinMode(15, OUTPUT); + digitalWrite(15, 0); // GPIO15 - MCP disable - Reset Delta Sigma ADC's + baudrate = 4800; + energy_calc_power_factor = 1; // Calculate power factor from data + energy_flg = XNRG_04; + } + } +} + +boolean McpCommand() +{ + boolean serviced = true; + + if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { + + } + else if (CMND_POWERSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && power_cycle) { +// Settings.energy_power_calibration = (XdrvMailbox.payload * power_cycle) / CSE_PREF; + } + } + else if (CMND_VOLTAGESET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && voltage_cycle) { +// Settings.energy_voltage_calibration = (XdrvMailbox.payload * voltage_cycle) / CSE_UREF; + } + } + else if (CMND_CURRENTSET == energy_command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && current_cycle) { +// Settings.energy_current_calibration = (XdrvMailbox.payload * current_cycle) / 1000; + } + } + else serviced = false; // Unknown command + + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +int Xnrg04(byte function) +{ + int result = 0; + + if (FUNC_PRE_INIT == function) { + McpDrvInit(); + } + else if (XNRG_04 == energy_flg) { + switch (function) { + case FUNC_INIT: + McpSnsInit(); + break; + case FUNC_EVERY_SECOND: + McpEverySecond(); + break; + case FUNC_COMMAND: + result = McpCommand(); + break; + case FUNC_SERIAL: + result = McpSerialInput(); + break; + } + } + return result; +} + +#endif // USE_MCP39F501 +#endif // USE_ENERGY_SENSOR From c9f0c184661b7838536448823d3035a157223222 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 20 Sep 2018 20:44:17 +0200 Subject: [PATCH 119/798] LM75AD - Force function parameters to be C and C++ compliant --- sonoff/xsns_26_lm75ad.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino index 092c8d153d3d..1fd0f444861e 100644 --- a/sonoff/xsns_26_lm75ad.ino +++ b/sonoff/xsns_26_lm75ad.ino @@ -46,7 +46,7 @@ uint8_t lm75ad_type = 0; uint8_t lm75ad_address; uint8_t lm75ad_addresses[] = { LM75AD_ADDRESS1, LM75AD_ADDRESS2, LM75AD_ADDRESS3, LM75AD_ADDRESS4, LM75AD_ADDRESS5, LM75AD_ADDRESS6, LM75AD_ADDRESS7, LM75AD_ADDRESS8 }; -void LM75ADDetect() +void LM75ADDetect(void) { if (lm75ad_type) { return; } @@ -64,7 +64,7 @@ void LM75ADDetect() } } -float LM75ADGetTemp() { +float LM75ADGetTemp(void) { int16_t sign = 1; uint16_t t = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); From 363e19d681584f09268f49fd4ed540d421f79753 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 20 Sep 2018 21:03:33 +0200 Subject: [PATCH 120/798] MCP230xx - Force C/C++ compliance --- sonoff/xsns_29_mcp230xx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 50798eb8fadd..1ca59f8ed335 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -181,7 +181,7 @@ void MCP230xx_ApplySettings(void) { MCP230xx_CheckForIntCounter(); // update register on whether or not we should be counting interrupts } -void MCP230xx_Detect() +void MCP230xx_Detect(void) { if (mcp230xx_type) { return; From 846d7a911f0571f209109a39585e7abad4e50cac Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 20 Sep 2018 22:56:07 +0200 Subject: [PATCH 121/798] Add driverXX support for FUNC_COMMAND callback --- sonoff/i18n.h | 4 ++++ sonoff/sonoff.ino | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index da47371d8411..32cb458f1b4f 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -174,6 +174,7 @@ #define D_CMND_BLINKTIME "BlinkTime" #define D_CMND_BLINKCOUNT "BlinkCount" #define D_CMND_SENSOR "Sensor" +#define D_CMND_DRIVER "Driver" #define D_CMND_SAVEDATA "SaveData" #define D_CMND_SETOPTION "SetOption" #define D_CMND_TEMPERATURE_RESOLUTION "TempRes" @@ -467,6 +468,9 @@ const char S_JSON_COMMAND_INDEX_NVALUE_ACTIVE_NVALUE[] PROGMEM = "{\"%s%d\":\"%d const char S_JSON_SENSOR_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_SENSOR "%d\":%d}"; const char S_JSON_SENSOR_INDEX_SVALUE[] PROGMEM = "{\"" D_CMND_SENSOR "%d\":\"%s\"}"; +const char S_JSON_DRIVER_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_DRIVER "%d\":%d}"; +const char S_JSON_DRIVER_INDEX_SVALUE[] PROGMEM = "{\"" D_CMND_DRIVER "%d\":\"%s\"}"; + const char JSON_SNS_TEMP[] PROGMEM = "%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s}"; const char JSON_SNS_TEMPHUM[] PROGMEM = "%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s}"; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 4903fe80f213..84293f5bcff9 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -83,7 +83,7 @@ enum TasmotaCommands { CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE, - CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER }; + CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER, CMND_DRIVER }; const char kTasmotaCommands[] PROGMEM = D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_FANSPEED "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SENSOR "|" D_CMND_SAVEDATA "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|" @@ -93,7 +93,7 @@ const char kTasmotaCommands[] PROGMEM = D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" - D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER; + D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER "|" D_CMND_DRIVER; const uint8_t kIFan02Speed[4][3] = {{6,6,6}, {7,6,6}, {7,7,6}, {7,6,7}}; @@ -690,6 +690,16 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) XsnsCall(FUNC_COMMAND); // if (!XsnsCall(FUNC_COMMAND)) type = NULL; } + else if (CMND_DRIVER == command_code) { + XdrvMailbox.index = index; + XdrvMailbox.data_len = data_len; + XdrvMailbox.payload16 = payload16; + XdrvMailbox.payload = payload; + XdrvMailbox.grpflg = grpflg; + XdrvMailbox.topic = command; + XdrvMailbox.data = dataBuf; + XdrvCall(FUNC_COMMAND); + } else if ((CMND_SETOPTION == command_code) && (index < 82)) { byte ptype; byte pindex; From 415ed97dab55c02fd1a6b4536bfa40befdaa47c4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 21 Sep 2018 11:15:42 +0200 Subject: [PATCH 122/798] 6.2.1.5 Add web authentication Add authentication to HTTP web pages --- sonoff/_changelog.ino | 5 +- sonoff/sonoff_version.h | 2 +- sonoff/xdrv_02_webserver.ino | 107 ++++++++++++++--------------------- sonoff/xdrv_07_domoticz.ino | 6 +- sonoff/xdrv_09_timers.ino | 6 +- sonoff/xdrv_11_knx.ino | 10 ++-- 6 files changed, 56 insertions(+), 80 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index fdf73fdc782b..aa6e8bfae62e 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.4 20180916 +/* 6.2.1.5 20180921 + * Add authentication to HTTP web pages + * + * 6.2.1.4 20180916 * Add command SerialSend5 to send raw serial data like "A5074100545293" * Update MCP230xx driver * Update Czech translation diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index f5f94dad156b..43253e40ff03 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020104 +#define VERSION 0x06020105 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 6cadb952fe91..5182b7051808 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -29,8 +29,6 @@ uint8_t *efm8bb1_update = NULL; #endif // USE_RF_FLASH -#define D_TASMOTA_TOKEN "Tasmota-Token" - enum UploadTypes { UPL_TASMOTA, UPL_SETTINGS, UPL_EFM8BB1 }; const char HTTP_HEAD[] PROGMEM = @@ -58,17 +56,13 @@ const char HTTP_HEAD[] PROGMEM = "eb('s1').value=l.innerText||l.textContent;" "eb('p1').focus();" "}" - "function lx(){" - "if(to==1){" - "if(tp<30){" - "tp++;" - "lt=setTimeout(lx,33);" // Wait for token from server - "}else{" - "lt=setTimeout(la,1355);" // Discard action and retry - "}" - "return;" + "function la(p){" + "var a='';" + "if(la.arguments.length==1){" + "a=p;" + "clearTimeout(lt);" "}" - "if(x!=null){x.abort();}" // Abort if no response within 2 seconds (happens on restart 1) + "if(x!=null){x.abort();}" // Abort if no response within 2 seconds (happens on restart 1) "x=new XMLHttpRequest();" "x.onreadystatechange=function(){" "if(x.readyState==4&&x.status==200){" @@ -76,32 +70,15 @@ const char HTTP_HEAD[] PROGMEM = "eb('l1').innerHTML=s;" "}" "};" - "x.open('GET','ay'+pc,true);" // Async request - "x.setRequestHeader('" D_TASMOTA_TOKEN "',to);" - "x.send();" // Perform command if available and get updated information - "pc='';" - "lt=setTimeout(la,2345-(tp*33));" - "}" - "function la(p){" - "if(la.arguments.length==1){" - "pc='?'+p;" - "clearTimeout(lt);" - "}else{pc='';}" - "to=1;tp=0;" - "if(x!=null){x.abort();}" // Abort if no response within 2 seconds (happens on restart 1) - "x=new XMLHttpRequest();" - "x.onreadystatechange=function(){" - "if(x.readyState==4&&x.status==200){to=x.getResponseHeader('" D_TASMOTA_TOKEN "');}else{to=1;}" - "};" - "x.open('GET','az',true);" // Async request - "x.send();" // Get token from server - "lx();" + "x.open('GET','ay'+a,true);" + "x.send();" + "lt=setTimeout(la,2345);" "}" "function lb(p){" - "la('d='+p);" + "la('?d='+p);" "}" "function lc(p){" - "la('c='+p);" + "la('?t='+p);" "}"; const char HTTP_HEAD_STYLE[] PROGMEM = @@ -340,7 +317,7 @@ const char HTTP_END[] PROGMEM = "" ""; -const char HTTP_DEVICE_CONTROL[] PROGMEM = ""; +const char HTTP_DEVICE_CONTROL[] PROGMEM = ""; const char HTTP_DEVICE_STATE[] PROGMEM = "%s%s"; // {c} = %'>
"), idx, idx); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(""), idx, idx); page += mqtt_data; } } @@ -634,34 +616,13 @@ void HandleRoot() } } -void HandleToken() -{ - char token[11]; - - ajax_token = random(2, 0x7FFFFFFF); - snprintf_P(token, sizeof(token), PSTR("%u"), ajax_token); - SetHeader(); - WebServer->sendHeader(FPSTR(HDR_TASMOTA_TOKEN), token); - snprintf_P(token, sizeof(token), PSTR("%u"), random(0x7FFFFFFF)); - WebServer->send(200, FPSTR(HDR_CTYPE_HTML), token); - - const char* header_key[] = { D_TASMOTA_TOKEN }; - WebServer->collectHeaders(header_key, 1); -} - void HandleAjaxStatusRefresh() { + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } + char svalue[80]; char tmp[100]; - if (WebServer->header(FPSTR(HDR_TASMOTA_TOKEN)).toInt() != ajax_token) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_FILE_NOT_FOUND)); - SetHeader(); - WebServer->send(404, FPSTR(HDR_CTYPE_PLAIN), mqtt_data); - return; - } - ajax_token = 1; - WebGetArg("o", tmp, sizeof(tmp)); if (strlen(tmp)) { ShowWebSource(SRC_WEBGUI); @@ -736,6 +697,7 @@ boolean HttpUser() void HandleConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURATION); String page = FPSTR(HTTP_HEAD); @@ -759,6 +721,7 @@ void HandleConfiguration() void HandleModuleConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char stemp[20]; uint8_t midx; @@ -829,6 +792,7 @@ void HandleWifiConfiguration() void HandleWifi(boolean scan) { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_WIFI); @@ -925,6 +889,7 @@ void HandleWifi(boolean scan) void HandleMqttConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); String page = FPSTR(HTTP_HEAD); @@ -948,6 +913,7 @@ void HandleMqttConfiguration() void HandleLoggingConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_LOGGING); String page = FPSTR(HTTP_HEAD); @@ -995,6 +961,7 @@ void HandleLoggingConfiguration() void HandleOtherConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_OTHER); char stemp[40]; @@ -1032,6 +999,7 @@ void HandleOtherConfiguration() void HandleBackupConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_BACKUP_CONFIGURATION)); if (!SettingsBufferAlloc()) { return; } @@ -1067,6 +1035,7 @@ void HandleBackupConfiguration() void HandleSaveSettings() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char stemp[TOPSZ]; char stemp2[TOPSZ]; @@ -1232,6 +1201,7 @@ void HandleSaveSettings() void HandleResetConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char svalue[33]; @@ -1252,6 +1222,7 @@ void HandleResetConfiguration() void HandleRestoreConfiguration() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESTORE_CONFIGURATION); String page = FPSTR(HTTP_HEAD); @@ -1270,6 +1241,7 @@ void HandleRestoreConfiguration() void HandleInformation() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_INFORMATION); char stopic[TOPSZ]; @@ -1386,6 +1358,7 @@ void HandleInformation() void HandleUpgradeFirmware() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_FIRMWARE_UPGRADE); String page = FPSTR(HTTP_HEAD); @@ -1405,6 +1378,7 @@ void HandleUpgradeFirmware() void HandleUpgradeFirmwareStart() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char svalue[100]; AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_UPGRADE_STARTED)); @@ -1432,6 +1406,7 @@ void HandleUpgradeFirmwareStart() void HandleUploadDone() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_UPLOAD_DONE)); char error[100]; @@ -1684,6 +1659,7 @@ void HandlePreflightRequest() void HandleHttpCommand() { if (HttpUser()) { return; } +// if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char svalue[INPUT_BUFFER_SIZE]; // Large to serve Backlog AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_COMMAND)); @@ -1741,6 +1717,7 @@ void HandleHttpCommand() void HandleConsole() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONSOLE); String page = FPSTR(HTTP_HEAD); @@ -1756,6 +1733,7 @@ void HandleConsole() void HandleAjaxConsoleRefresh() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } char svalue[INPUT_BUFFER_SIZE]; // Large to serve Backlog byte cflg = 1; byte counter = 0; // Initial start, should never be 0 again @@ -1812,6 +1790,7 @@ void HandleAjaxConsoleRefresh() void HandleRestart() { if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESTART); String page = FPSTR(HTTP_HEAD); diff --git a/sonoff/xdrv_07_domoticz.ino b/sonoff/xdrv_07_domoticz.ino index a7eb7708f1a4..a30f79439063 100644 --- a/sonoff/xdrv_07_domoticz.ino +++ b/sonoff/xdrv_07_domoticz.ino @@ -375,10 +375,8 @@ const char S_CONFIGURE_DOMOTICZ[] PROGMEM = D_CONFIGURE_DOMOTICZ; void HandleDomoticzConfiguration() { - if (HTTP_USER == webserver_state) { - HandleRoot(); - return; - } + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_DOMOTICZ); char stemp[32]; diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 0652f3b537a6..66bf9361493f 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -676,10 +676,8 @@ const char S_CONFIGURE_TIMER[] PROGMEM = D_CONFIGURE_TIMER; void HandleTimerConfiguration() { - if (HTTP_USER == webserver_state) { - HandleRoot(); - return; - } + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TIMER); String page = FPSTR(HTTP_HEAD); diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 3897caac7f51..88260b23ce1f 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -803,15 +803,13 @@ const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = void HandleKNXConfiguration() { + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_KNX); + char tmp[100]; String stmp; - if (HTTP_USER == webserver_state) { - HandleRoot(); - return; - } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_KNX); - if ( WebServer->hasArg("save") ) { KNX_Save_Settings(); HandleConfiguration(); From 4065a215f05173230ce3f5c2e8a56f0b5c2984e0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 21 Sep 2018 15:22:17 +0200 Subject: [PATCH 123/798] Add Shelly2 Energy Monitoring Add energy monitoring to Shelly2 (#2789) --- sonoff/_changelog.ino | 1 + sonoff/i18n.h | 7 +- sonoff/settings.h | 8 +- sonoff/user_config.h | 1 + sonoff/xdrv_03_energy.ino | 8 +- sonoff/xnrg_04_mcp39f501.ino | 608 +++++++++++++++++++++++++++++------ 6 files changed, 537 insertions(+), 96 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index aa6e8bfae62e..72293c30d8e5 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.2.1.5 20180921 * Add authentication to HTTP web pages + * Add energy monitoring to Shelly2 (#2789) * * 6.2.1.4 20180916 * Add command SerialSend5 to send raw serial data like "A5074100545293" diff --git a/sonoff/i18n.h b/sonoff/i18n.h index da47371d8411..4ea5ab3fea3f 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -292,6 +292,7 @@ #define D_CMND_VOLTAGESET "VoltageSet" #define D_CMND_CURRENTCAL "CurrentCal" #define D_CMND_CURRENTSET "CurrentSet" +#define D_CMND_FREQUENCYSET "FrequencySet" #define D_CMND_MAXPOWER "MaxPower" #define D_CMND_MAXPOWERHOLD "MaxPowerHold" #define D_CMND_MAXPOWERWINDOW "MaxPowerWindow" @@ -419,7 +420,8 @@ enum UnitNames { UNIT_SECTORS, UNIT_VOLT, UNIT_WATT, - UNIT_WATTHOUR }; + UNIT_WATTHOUR, + UNIT_HERTZ }; const char kUnitNames[] PROGMEM = D_UNIT_AMPERE "|" D_UNIT_HOUR "|" @@ -439,7 +441,8 @@ const char kUnitNames[] PROGMEM = D_UNIT_SECTORS "|" D_UNIT_VOLT "|" D_UNIT_WATT "|" - D_UNIT_WATTHOUR ; + D_UNIT_WATTHOUR "|" + "d" D_UNIT_HERTZ ; const char S_JSON_COMMAND_NVALUE_SPACE_UNIT[] PROGMEM = "{\"%s\":\"%d %s\"}"; const char S_JSON_COMMAND_LVALUE_SPACE_UNIT[] PROGMEM = "{\"%s\":\"%lu %s\"}"; diff --git a/sonoff/settings.h b/sonoff/settings.h index a1fd218ac63e..7da6108910aa 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -322,9 +322,13 @@ struct SYSCFG { uint16_t mcp230xx_int_timer; // 718 - byte free_71A[180]; // 71A + byte free_71A[174]; // 71A - char mems[MAX_RULE_MEMS][10]; // 7CE + unsigned long energy_frequency_calibration; // 7C8 + + byte free_7CC[2]; // 7CC + + char mems[MAX_RULE_MEMS][10]; // 7CE // 800 Full - no more free locations char rules[MAX_RULE_SETS][MAX_RULE_SIZE]; // 800 uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 20339b5f6c77..ef3e66fc21b6 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -348,6 +348,7 @@ // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_PZEM2 // Add support for PZEM003,014,016,017 Energy monitor (+1k1 code) +#define USE_MCP39F501 // Add support for MCP39F501 Energy monitor as used in Shelly 2 (+3k2 code) // -- Low level interface devices ----------------- #define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index aa589efab211..06826197129f 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -29,14 +29,14 @@ enum EnergyCommands { CMND_POWERDELTA, CMND_POWERLOW, CMND_POWERHIGH, CMND_VOLTAGELOW, CMND_VOLTAGEHIGH, CMND_CURRENTLOW, CMND_CURRENTHIGH, - CMND_POWERCAL, CMND_POWERSET, CMND_VOLTAGECAL, CMND_VOLTAGESET, CMND_CURRENTCAL, CMND_CURRENTSET, + CMND_POWERCAL, CMND_POWERSET, CMND_VOLTAGECAL, CMND_VOLTAGESET, CMND_CURRENTCAL, CMND_CURRENTSET, CMND_FREQUENCYSET, CMND_ENERGYRESET, CMND_MAXENERGY, CMND_MAXENERGYSTART, CMND_MAXPOWER, CMND_MAXPOWERHOLD, CMND_MAXPOWERWINDOW, CMND_SAFEPOWER, CMND_SAFEPOWERHOLD, CMND_SAFEPOWERWINDOW }; const char kEnergyCommands[] PROGMEM = D_CMND_POWERDELTA "|" D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|" - D_CMND_POWERCAL "|" D_CMND_POWERSET "|" D_CMND_VOLTAGECAL "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTCAL "|" D_CMND_CURRENTSET "|" + D_CMND_POWERCAL "|" D_CMND_POWERSET "|" D_CMND_VOLTAGECAL "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTCAL "|" D_CMND_CURRENTSET "|" D_CMND_FREQUENCYSET "|" D_CMND_ENERGYRESET "|" D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|" D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|" D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW ; @@ -451,6 +451,10 @@ boolean EnergyCommand() nvalue = Settings.energy_current_calibration; unit = UNIT_MICROSECOND; } + else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // dHz + nvalue = Settings.energy_frequency_calibration; + unit = UNIT_HERTZ; + } #if FEATURE_POWER_LIMIT else if (CMND_MAXPOWER == command_code) { diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index f74111f9d22c..a9620ce508f3 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -26,56 +26,383 @@ * and https://github.com/OLIMEX/olimex-iot-firmware-esp8266/blob/7a7f9bb56d4b72770dba8d0f18eaa9d956dd0baf/olimex/user/modules/mod_emtr.c \*********************************************************************************************/ -#define XNRG_04 4 - -#define MCP_START_FRAME 0xA5 -#define MCP_ACK_FRAME 0x06 -#define MCP_ERROR_NAK 0x15 -#define MCP_ERROR_CRC 0x51 - -#define MCP_SINGLE_WIRE 0xAB - -#define MCP_SET_ADDRESS 0x41 - -#define MCP_READ 0x4E -#define MCP_READ_16 0x52 -#define MCP_READ_32 0x44 - -#define MCP_WRITE 0x4D -#define MCP_WRITE_16 0x57 -#define MCP_WRITE_32 0x45 - -#define MCP_SAVE_REGISTERS 0x53 - -#define MCP_FLASH_READ 0x42 -#define MCP_FLASH_WRITE 0x50 - -uint32 mcp_system_configuration = 0x03000000; +#define XNRG_04 4 + +#define MCP_TIMEOUT 4 + +#define MCP_START_FRAME 0xA5 +#define MCP_ACK_FRAME 0x06 +#define MCP_ERROR_NAK 0x15 +#define MCP_ERROR_CRC 0x51 + +#define MCP_SINGLE_WIRE 0xAB + +#define MCP_SET_ADDRESS 0x41 + +#define MCP_READ 0x4E +#define MCP_READ_16 0x52 +#define MCP_READ_32 0x44 + +#define MCP_WRITE 0x4D +#define MCP_WRITE_16 0x57 +#define MCP_WRITE_32 0x45 + +#define MCP_SAVE_REGISTERS 0x53 + +#define MCP_CALIBRATION_BASE 0x0028 +#define MCP_CALIBRATION_LEN 52 + +#define MCP_FREQUENCY_REF_BASE 0x0094 +#define MCP_FREQUENCY_GAIN_BASE 0x00AE +#define MCP_FREQUENCY_LEN 4 + +#define EMTR_OUT_BASE 0x0004 +#define EMTR_OUT_LEN 28 + +#define MCP_FLASH_READ 0x42 +#define MCP_FLASH_WRITE 0x50 + +typedef struct mcp_calibration_registers_type { + uint16_t gain_current_rms; + uint16_t gain_voltage_rms; + uint16_t gain_active_power; + uint16_t gain_reactive_power; + sint32_t offset_current_rms; + sint32_t offset_active_power; + sint32_t offset_reactive_power; + sint16_t dc_offset_current; + sint16_t phase_compensation; + uint16_t apparent_power_divisor; + + uint32_t system_configuration; + uint16_t dio_configuration; + uint32_t range; + + uint32_t calibration_current; + uint16_t calibration_voltage; + uint32_t calibration_active_power; + uint32_t calibration_reactive_power; + uint16_t accumulation_interval; +} mcp_calibration_registers_type; +mcp_calibration_registers_type mcp_calibration_registers; + +typedef struct mcp_calibration_setpoint_type { + uint32_t calibration_current; + uint16_t calibration_voltage; + uint32_t calibration_active_power; + uint32_t calibration_reactive_power; + uint16_t line_frequency_ref; +} mcp_calibration_setpoint_type; +mcp_calibration_setpoint_type mcp_calibration_setpoint; + +typedef struct mcp_frequency_registers_type { + uint16_t line_frequency_ref; + uint16_t gain_line_frequency; +} mcp_frequency_registers_type; +mcp_frequency_registers_type mcp_frequency_registers; + +typedef struct mcp_output_registers_type { + uint32_t current_rms; + uint16_t voltage_rms; + uint32_t active_power; + uint32_t reactive_power; + uint32_t apparent_power; + sint16_t power_factor; + uint16_t line_frequency; + uint16_t thermistor_voltage; + uint16_t event_flag; + uint16_t system_status; +} mcp_output_registers_type; +mcp_output_registers_type mcp_output_registers; + +uint32_t mcp_system_configuration = 0x03000000; +uint16_t mcp_address = 0; uint8_t mcp_single_wire_active = 0; +uint8_t mcp_calibration_active = 0; +uint8_t mcp_init = 0; +uint8_t mcp_timeout = 0; +unsigned long mcp_kWhcounter = 0; /*********************************************************************************************\ * Olimex tools * https://github.com/OLIMEX/olimex-iot-firmware-esp8266/blob/7a7f9bb56d4b72770dba8d0f18eaa9d956dd0baf/olimex/user/modules/mod_emtr.c \*********************************************************************************************/ +uint8_t McpChecksum(uint8_t *data) +{ + uint8_t checksum = 0; + uint8_t offset = 0; + uint8_t len = data[1] -1; + + if (MCP_SINGLE_WIRE == data[0]) { + offset = 3; + len = 15; + } + for (byte i = offset; i < len; i++) { checksum += data[i]; } + return (MCP_SINGLE_WIRE == data[0]) ? ~checksum : checksum; +} -unsigned long McpExtractInt(uint8_t *data, uint8_t offset, uint8_t size) +unsigned long McpExtractInt(char *data, uint8_t offset, uint8_t size) { unsigned long result = 0; unsigned long pow = 1; for (byte i = 0; i < size; i++) { - result = result + data[offset + i] * pow; + result = result + (uint8_t)data[offset + i] * pow; pow = pow * 256; } return result; } +void McpSetInt(unsigned long value, uint8_t *data, uint8_t offset, size_t size) +{ + for (byte i = 0; i < size; i++) { + data[offset + i] = ((value >> (i * 8)) & 0xFF); + } +} + +void AddLogSerialSend(byte loglevel, uint8_t *buffer, int count) +{ + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_SERIAL "Send")); + for (int i = 0; i < count; i++) { + snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, *(buffer++)); + } + AddLog(loglevel); +} + + +void McpSend(uint8_t *data) +{ + if (mcp_timeout) { return; } + mcp_timeout = MCP_TIMEOUT; + + data[0] = MCP_START_FRAME; + data[data[1] -1] = McpChecksum(data); + +// AddLogSerialSend(LOG_LEVEL_DEBUG_MORE, data, data[1]); + + for (byte i = 0; i < data[1]; i++) { + Serial.write(data[i]); + } +} + +uint32_t McpGetRange(uint8_t shift) +{ + return (mcp_calibration_registers.range >> shift) & 0xFF; +} + +void McpSetRange(uint8_t shift, uint32_t range) +{ + uint32_t old_range = McpGetRange(shift); + mcp_calibration_registers.range = mcp_calibration_registers.range ^ (old_range << shift); + mcp_calibration_registers.range = mcp_calibration_registers.range | (range << shift); +} + +bool McpCalibrationCalc(uint8_t range_shift) +{ + uint32_t measured; + uint32_t expected; + uint16_t *gain; + uint32_t new_gain; + + if (range_shift == 0) { + measured = mcp_output_registers.voltage_rms; + expected = mcp_calibration_registers.calibration_voltage; + gain = &(mcp_calibration_registers.gain_voltage_rms); + } else if (range_shift == 8) { + measured = mcp_output_registers.current_rms; + expected = mcp_calibration_registers.calibration_current; + gain = &(mcp_calibration_registers.gain_current_rms); + } else if (range_shift == 16) { + measured = mcp_output_registers.active_power; + expected = mcp_calibration_registers.calibration_active_power; + gain = &(mcp_calibration_registers.gain_active_power); + } else { + return false; + } + + if (measured == 0) { + return false; + } + + uint32_t range = McpGetRange(range_shift); + +calc: + new_gain = (*gain) * expected / measured; + + if (new_gain < 25000) { + range++; + if (measured > 6) { + measured = measured / 2; + goto calc; + } + } + + if (new_gain > 55000) { + range--; + measured = measured * 2; + goto calc; + } + + *gain = new_gain; + McpSetRange(range_shift, range); + + return true; +} + +void McpCalibrationReactivePower() +{ + mcp_calibration_registers.gain_reactive_power = mcp_calibration_registers.gain_reactive_power * mcp_calibration_setpoint.calibration_reactive_power / mcp_output_registers.reactive_power; +} + +void McpCalibrationLineFreqency() +{ + mcp_frequency_registers.gain_line_frequency = mcp_frequency_registers.gain_line_frequency * mcp_frequency_registers.line_frequency_ref / mcp_output_registers.line_frequency; +} + +void McpResetSetpoints() +{ + mcp_calibration_setpoint.calibration_active_power = 0; + mcp_calibration_setpoint.calibration_voltage = 0; + mcp_calibration_setpoint.calibration_current = 0; + mcp_calibration_setpoint.calibration_reactive_power = 0; + mcp_calibration_setpoint.line_frequency_ref = 0; +} + +/********************************************************************************************/ + +void McpGetAddress() +{ + // A5 07 41 00 26 52 65 + uint8_t data[7]; + + data[1] = sizeof(data); + data[2] = MCP_SET_ADDRESS; // Set address pointer + data[3] = 0x00; // address + data[4] = 0x26; // address + data[5] = MCP_READ_16; // Read 2 bytes + + McpSend(data); + + // Receives 06 05 004D 58 +} + +void McpGetCalibration() +{ + if (mcp_calibration_active) { return; } + mcp_calibration_active = 4; + + // A5 08 41 00 28 4E 34 98 + uint8_t data[8]; + + data[1] = sizeof(data); + data[2] = MCP_SET_ADDRESS; // Set address pointer + data[3] = (MCP_CALIBRATION_BASE >> 8) & 0xFF; // address + data[4] = (MCP_CALIBRATION_BASE >> 0) & 0xFF; // address + data[5] = MCP_READ; // Read N bytes + data[6] = MCP_CALIBRATION_LEN; + + McpSend(data); + + // Receives 06 37 C882 B6AD 0781 9273 06000000 00000000 00000000 0000 D3FF 0300 00000003 9204 120C1300 204E0000 9808 E0AB0000 D9940000 0200 24 +} + +void McpSetCalibration() +{ + uint8_t data[7 + MCP_CALIBRATION_LEN + 2 + 1]; + + data[1] = sizeof(data); + data[2] = MCP_SET_ADDRESS; // Set address pointer + data[3] = (MCP_CALIBRATION_BASE >> 8) & 0xFF; // address + data[4] = (MCP_CALIBRATION_BASE >> 0) & 0xFF; // address + + data[5] = MCP_WRITE; // Write N bytes + data[6] = MCP_CALIBRATION_LEN; + + McpSetInt(mcp_calibration_registers.gain_current_rms, data, 0+7, 2); + McpSetInt(mcp_calibration_registers.gain_voltage_rms, data, 2+7, 2); + McpSetInt(mcp_calibration_registers.gain_active_power, data, 4+7, 2); + McpSetInt(mcp_calibration_registers.gain_reactive_power, data, 6+7, 2); + McpSetInt(mcp_calibration_registers.offset_current_rms, data, 8+7, 4); + McpSetInt(mcp_calibration_registers.offset_active_power, data, 12+7, 4); + McpSetInt(mcp_calibration_registers.offset_reactive_power, data, 16+7, 4); + McpSetInt(mcp_calibration_registers.dc_offset_current, data, 20+7, 2); + McpSetInt(mcp_calibration_registers.phase_compensation, data, 22+7, 2); + McpSetInt(mcp_calibration_registers.apparent_power_divisor, data, 24+7, 2); + + McpSetInt(mcp_calibration_registers.system_configuration, data, 26+7, 4); + McpSetInt(mcp_calibration_registers.dio_configuration, data, 30+7, 2); + McpSetInt(mcp_calibration_registers.range, data, 32+7, 4); + + McpSetInt(mcp_calibration_registers.calibration_current, data, 36+7, 4); + McpSetInt(mcp_calibration_registers.calibration_voltage, data, 40+7, 2); + McpSetInt(mcp_calibration_registers.calibration_active_power, data, 42+7, 4); + McpSetInt(mcp_calibration_registers.calibration_reactive_power, data, 46+7, 4); + McpSetInt(mcp_calibration_registers.accumulation_interval, data, 50+7, 2); + + data[MCP_CALIBRATION_LEN+7] = MCP_SAVE_REGISTERS; // Save registers to flash + data[MCP_CALIBRATION_LEN+8] = mcp_address; // Device address + + McpSend(data); +} + +void McpGetFrequency() +{ + if (mcp_calibration_active) { return; } + mcp_calibration_active = 4; + + // A5 0B 41 00 94 52 41 00 AE 52 18 + uint8_t data[11]; + + data[1] = sizeof(data); + data[2] = MCP_SET_ADDRESS; // Set address pointer + data[3] = (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF; // address + data[4] = (MCP_FREQUENCY_REF_BASE >> 0) & 0xFF; // address + + data[5] = MCP_READ_16; // Read register + + data[6] = MCP_SET_ADDRESS; // Set address pointer + data[7] = (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF; // address + data[8] = (MCP_FREQUENCY_GAIN_BASE >> 0) & 0xFF; // address + + data[9] = MCP_READ_16; // Read register + + McpSend(data); +} + +void McpSetFrequency() +{ + // A5 11 41 00 94 57 C3 B4 41 00 AE 57 7E 46 53 4D 03 + uint8_t data[17]; + + data[ 1] = sizeof(data); + data[ 2] = MCP_SET_ADDRESS; // Set address pointer + data[ 3] = (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF; // address + data[ 4] = (MCP_FREQUENCY_REF_BASE >> 0) & 0xFF; // address + + data[ 5] = MCP_WRITE_16; // Write register + data[ 6] = (mcp_frequency_registers.line_frequency_ref >> 8) & 0xFF; // line_frequency_ref high + data[ 7] = (mcp_frequency_registers.line_frequency_ref >> 0) & 0xFF; // line_frequency_ref low + + data[ 8] = MCP_SET_ADDRESS; // Set address pointer + data[ 9] = (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF; // address + data[10] = (MCP_FREQUENCY_GAIN_BASE >> 0) & 0xFF; // address + + data[11] = MCP_WRITE_16; // Write register + data[12] = (mcp_frequency_registers.gain_line_frequency >> 8) & 0xFF; // gain_line_frequency high + data[13] = (mcp_frequency_registers.gain_line_frequency >> 0) & 0xFF; // gain_line_frequency low + + data[14] = MCP_SAVE_REGISTERS; // Save registers to flash + data[15] = mcp_address; // Device address + + McpSend(data); +} + void McpSetSystemConfiguration(uint16 interval) { + // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A uint8_t data[17]; - data[ 0] = MCP_START_FRAME; data[ 1] = sizeof(data); data[ 2] = MCP_SET_ADDRESS; // Set address pointer data[ 3] = 0x00; // address @@ -91,14 +418,8 @@ void McpSetSystemConfiguration(uint16 interval) data[13] = MCP_WRITE_16; // Write 2 bytes data[14] = (interval >> 8) & 0xFF; // interval data[15] = (interval >> 0) & 0xFF; // interval - uint8_t checksum = 0; - for (byte i = 0; i < sizeof(data) -1; i++) { checksum += (uint8_t)data[i]; } - data[16] = checksum; - // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A - AddLogSerial(LOG_LEVEL_DEBUG, data, sizeof(data)); - - for (byte i = 0; i < sizeof(data); i++) { Serial.write(data[i]); } + McpSend(data); } void McpSingleWireStart() @@ -109,9 +430,9 @@ void McpSingleWireStart() mcp_single_wire_active = 1; } -void McpSingleWireStop() +void McpSingleWireStop(uint8_t force) { - if ((mcp_system_configuration & (1 << 8)) == 0) { return; } + if (!force && ((mcp_system_configuration & (1 << 8)) == 0)) { return; } mcp_system_configuration = mcp_system_configuration & (~(1 << 8)); McpSetSystemConfiguration(2); // 4 mcp_single_wire_active = 0; @@ -119,10 +440,69 @@ void McpSingleWireStop() /********************************************************************************************/ -unsigned long mcp_current = 0; -unsigned long mcp_voltage = 0; -unsigned long mcp_power = 0; -unsigned long mcp_frequency = 0; +void McpAddressReceive() +{ + // 06 05 004D 58 + mcp_address = serial_in_buffer[2] * 256 + serial_in_buffer[3]; +} + +void McpParseCalibration() +{ + bool action = false; + + // 06 37 C882 B6AD 0781 9273 06000000 00000000 00000000 0000 D3FF 0300 00000003 9204 120C1300 204E0000 9808 E0AB0000 D9940000 0200 24 + mcp_calibration_registers.gain_current_rms = McpExtractInt(serial_in_buffer, 2, 2); + mcp_calibration_registers.gain_voltage_rms = McpExtractInt(serial_in_buffer, 4, 2); + mcp_calibration_registers.gain_active_power = McpExtractInt(serial_in_buffer, 6, 2); + mcp_calibration_registers.gain_reactive_power = McpExtractInt(serial_in_buffer, 8, 2); + mcp_calibration_registers.offset_current_rms = McpExtractInt(serial_in_buffer, 10, 4); + mcp_calibration_registers.offset_active_power = McpExtractInt(serial_in_buffer, 14, 4); + mcp_calibration_registers.offset_reactive_power = McpExtractInt(serial_in_buffer, 18, 4); + mcp_calibration_registers.dc_offset_current = McpExtractInt(serial_in_buffer, 22, 2); + mcp_calibration_registers.phase_compensation = McpExtractInt(serial_in_buffer, 24, 2); + mcp_calibration_registers.apparent_power_divisor = McpExtractInt(serial_in_buffer, 26, 2); + + mcp_calibration_registers.system_configuration = McpExtractInt(serial_in_buffer, 28, 4); + mcp_calibration_registers.dio_configuration = McpExtractInt(serial_in_buffer, 32, 2); + mcp_calibration_registers.range = McpExtractInt(serial_in_buffer, 34, 4); + + mcp_calibration_registers.calibration_current = McpExtractInt(serial_in_buffer, 38, 4); + mcp_calibration_registers.calibration_voltage = McpExtractInt(serial_in_buffer, 42, 2); + mcp_calibration_registers.calibration_active_power = McpExtractInt(serial_in_buffer, 44, 4); + mcp_calibration_registers.calibration_reactive_power = McpExtractInt(serial_in_buffer, 48, 4); + mcp_calibration_registers.accumulation_interval = McpExtractInt(serial_in_buffer, 52, 2); + + if (mcp_calibration_setpoint.calibration_active_power) { + mcp_calibration_registers.calibration_active_power = mcp_calibration_setpoint.calibration_active_power; + if (McpCalibrationCalc(16)) { action = true; } + } + if (mcp_calibration_setpoint.calibration_voltage) { + mcp_calibration_registers.calibration_voltage = mcp_calibration_setpoint.calibration_voltage; + if (McpCalibrationCalc(0)) { action = true; } + } + if (mcp_calibration_setpoint.calibration_current) { + mcp_calibration_registers.calibration_current = mcp_calibration_setpoint.calibration_current; + if (McpCalibrationCalc(8)) { action = true; } + } + mcp_timeout = 0; + if (action) { McpSetCalibration(); } + McpResetSetpoints(); +} + +void McpParseFrequency() +{ + // 06 07 C350 8000 A0 + mcp_frequency_registers.line_frequency_ref = serial_in_buffer[2] * 256 + serial_in_buffer[3]; + mcp_frequency_registers.gain_line_frequency = serial_in_buffer[4] * 256 + serial_in_buffer[5]; + + if (mcp_calibration_setpoint.line_frequency_ref) { + mcp_frequency_registers.line_frequency_ref = mcp_calibration_setpoint.line_frequency_ref; + McpCalibrationLineFreqency(); + mcp_timeout = 0; + McpSetFrequency(); + } + McpResetSetpoints(); +} void McpParseData(uint8_t single_wire) { @@ -131,29 +511,31 @@ void McpParseData(uint8_t single_wire) // AB CD EF 51 06 00 00 B8 08 FC 0D 00 00 0A C4 11 // Header-- Current---- Volt- Power------ Freq- Ck - mcp_current = McpExtractInt((uint8_t*)serial_in_buffer, 3, 4); - mcp_voltage = McpExtractInt((uint8_t*)serial_in_buffer, 7, 2); - mcp_power = McpExtractInt((uint8_t*)serial_in_buffer, 9, 4); - mcp_frequency = McpExtractInt((uint8_t*)serial_in_buffer, 13, 2); + mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 3, 4); + mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 7, 2); + mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 9, 4); + mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 13, 2); } else { // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // 06 19 61 06 00 00 FE 08 9B 0E 00 00 0B 00 00 00 97 0E 00 00 FF 7F 0C C6 35 + // 06 19 CE 18 00 00 F2 08 3A 38 00 00 66 00 00 00 93 38 00 00 36 7F 9A C6 B7 // Ak Ln Current---- Volt- ActivePower ReActivePow ApparentPow Factr Frequ Ck - mcp_current = McpExtractInt((uint8_t*)serial_in_buffer, 2, 4); - mcp_voltage = McpExtractInt((uint8_t*)serial_in_buffer, 6, 2); - mcp_power = McpExtractInt((uint8_t*)serial_in_buffer, 8, 4); - mcp_frequency = McpExtractInt((uint8_t*)serial_in_buffer, 22, 2); + mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 2, 4); + mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 6, 2); + mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 8, 4); + mcp_output_registers.reactive_power = McpExtractInt(serial_in_buffer, 12, 4); + mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 22, 2); } if (energy_power_on) { // Powered on - energy_frequency = (float)mcp_frequency / 1000; - energy_voltage = (float)mcp_voltage / 10; - energy_power = (float)mcp_power / 100; + energy_frequency = (float)mcp_output_registers.line_frequency / 1000; + energy_voltage = (float)mcp_output_registers.voltage_rms / 10; + energy_power = (float)mcp_output_registers.active_power / 100; if (0 == energy_power) { energy_current = 0; } else { - energy_current = (float)mcp_current / 10000; + energy_current = (float)mcp_output_registers.current_rms / 10000; } } else { // Powered off energy_frequency = 0; @@ -165,61 +547,85 @@ void McpParseData(uint8_t single_wire) bool McpSerialInput() { - Settings.flag.mqtt_serial = 0; // Disable possible SerialReceive handling - serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; - if (MCP_ERROR_CRC == serial_in_buffer[0]) { - AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: Send " D_CHECKSUM_FAILURE)); - return 1; + unsigned long start = millis(); + while (millis() - start < 20) { + yield(); + if (Serial.available()) { + serial_in_buffer[serial_in_byte_counter++] = Serial.read(); + start = millis(); + } } - else if (MCP_ACK_FRAME == serial_in_buffer[0]) { - if ((serial_in_byte_counter > 1) && (serial_in_byte_counter == serial_in_buffer[1])) { - AddLogSerial(LOG_LEVEL_DEBUG_MORE); + AddLogSerial(LOG_LEVEL_DEBUG_MORE); + + if (1 == serial_in_byte_counter) { + if (MCP_ERROR_CRC == serial_in_buffer[0]) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: Send " D_CHECKSUM_FAILURE)); + mcp_timeout = 0; + } + else if (MCP_ERROR_NAK == serial_in_buffer[0]) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: NAck")); + mcp_timeout = 0; + } + } + else if (MCP_ACK_FRAME == serial_in_buffer[0]) { + if (serial_in_byte_counter == serial_in_buffer[1]) { - uint8_t checksum = 0; - for (byte i = 0; i < serial_in_byte_counter -1; i++) { checksum += (uint8_t)serial_in_buffer[i]; } - if (checksum != serial_in_buffer[serial_in_byte_counter -1]) { + if (McpChecksum((uint8_t *)serial_in_buffer) != serial_in_buffer[serial_in_byte_counter -1]) { AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); } else { + if (5 == serial_in_buffer[1]) { McpAddressReceive(); } if (25 == serial_in_buffer[1]) { McpParseData(0); } + if (MCP_CALIBRATION_LEN + 3 == serial_in_buffer[1]) { McpParseCalibration(); } + if (MCP_FREQUENCY_LEN + 3 == serial_in_buffer[1]) { McpParseFrequency(); } } - return 1; + } + mcp_timeout = 0; } else if (MCP_SINGLE_WIRE == serial_in_buffer[0]) { if (serial_in_byte_counter == 16) { - AddLogSerial(LOG_LEVEL_DEBUG_MORE); - - uint8_t checksum = 0; - for (byte i = 3; i < serial_in_byte_counter -1; i++) { checksum += (uint8_t)serial_in_buffer[i]; } -// if (~checksum != serial_in_buffer[serial_in_byte_counter -1]) { -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); -// } else { + if (McpChecksum((uint8_t *)serial_in_buffer) != serial_in_buffer[serial_in_byte_counter -1]) { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); + } else { McpParseData(1); -// } - return 1; + } + } + mcp_timeout = 0; } - else { - return 1; - } - serial_in_byte = 0; // Discard - return 0; + return 1; } /********************************************************************************************/ void McpEverySecond() { - if (!mcp_single_wire_active) { - char get_state[] = "A5084100044E1656"; - SerialSendRaw(get_state, sizeof(get_state)); + uint8_t get_state[] = { 0xA5, 0x08, 0x41, 0x00, 0x04, 0x4E, 0x16, 0x00 }; + + if (mcp_timeout) { + mcp_timeout--; + } + else if (mcp_calibration_active) { + mcp_calibration_active--; + } + else if (mcp_init) { + McpSingleWireStop(1); + mcp_init = 0; + } + else if (!mcp_address) { + McpGetAddress(); + } + else if (!mcp_single_wire_active) { + McpSend(get_state); } - energy_kWhtoday += (energy_power / 36); - EnergyUpdateToday(); + if (mcp_output_registers.active_power) { + energy_kWhtoday_delta += ((mcp_output_registers.active_power * 10) / 36); + EnergyUpdateToday(); + } } void McpSnsInit() @@ -235,6 +641,9 @@ void McpDrvInit() digitalWrite(15, 0); // GPIO15 - MCP disable - Reset Delta Sigma ADC's baudrate = 4800; energy_calc_power_factor = 1; // Calculate power factor from data + mcp_timeout = 4; // Wait for initialization + mcp_init = 1; // Execute initial setup + McpResetSetpoints(); energy_flg = XNRG_04; } } @@ -246,20 +655,39 @@ boolean McpCommand() if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { + // MCP Debug commands - PowerCal + if (1 == XdrvMailbox.payload) { McpSingleWireStart(); } + if (2 == XdrvMailbox.payload) { McpSingleWireStop(0); } + if (3 == XdrvMailbox.payload) { McpGetAddress(); } + + serviced = false; } else if (CMND_POWERSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && power_cycle) { -// Settings.energy_power_calibration = (XdrvMailbox.payload * power_cycle) / CSE_PREF; + if (XdrvMailbox.data_len && mcp_output_registers.active_power) { + Settings.energy_power_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 100); + mcp_calibration_setpoint.calibration_active_power = Settings.energy_power_calibration; + McpGetCalibration(); } } else if (CMND_VOLTAGESET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && voltage_cycle) { -// Settings.energy_voltage_calibration = (XdrvMailbox.payload * voltage_cycle) / CSE_UREF; + if (XdrvMailbox.data_len && mcp_output_registers.voltage_rms) { + Settings.energy_voltage_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); + mcp_calibration_setpoint.calibration_voltage = Settings.energy_voltage_calibration; + McpGetCalibration(); } } else if (CMND_CURRENTSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && current_cycle) { -// Settings.energy_current_calibration = (XdrvMailbox.payload * current_cycle) / 1000; + if (XdrvMailbox.data_len && mcp_output_registers.current_rms) { + Settings.energy_current_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); + mcp_calibration_setpoint.calibration_current = Settings.energy_current_calibration; + McpGetCalibration(); + } + } + else if (CMND_FREQUENCYSET == energy_command_code) { + if (XdrvMailbox.data_len && mcp_output_registers.line_frequency) { + Settings.energy_frequency_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); + mcp_calibration_setpoint.line_frequency_ref = Settings.energy_frequency_calibration; + McpGetFrequency(); } } else serviced = false; // Unknown command From f7a8b1f9234ee628596b0b00d3736753016cae3b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 21 Sep 2018 16:02:56 +0200 Subject: [PATCH 124/798] Shelly2 clean up Shelly2 clean up --- sonoff/i18n.h | 2 +- sonoff/user_config.h | 2 +- sonoff/xdrv_03_energy.ino | 2 +- sonoff/xnrg_04_mcp39f501.ino | 36 ++++++++++-------------------------- 4 files changed, 13 insertions(+), 29 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 4ea5ab3fea3f..b0a7ec0718c3 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -442,7 +442,7 @@ const char kUnitNames[] PROGMEM = D_UNIT_VOLT "|" D_UNIT_WATT "|" D_UNIT_WATTHOUR "|" - "d" D_UNIT_HERTZ ; + D_UNIT_HERTZ ; const char S_JSON_COMMAND_NVALUE_SPACE_UNIT[] PROGMEM = "{\"%s\":\"%d %s\"}"; const char S_JSON_COMMAND_LVALUE_SPACE_UNIT[] PROGMEM = "{\"%s\":\"%lu %s\"}"; diff --git a/sonoff/user_config.h b/sonoff/user_config.h index ef3e66fc21b6..438983a66c8f 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -348,7 +348,7 @@ // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_PZEM2 // Add support for PZEM003,014,016,017 Energy monitor (+1k1 code) -#define USE_MCP39F501 // Add support for MCP39F501 Energy monitor as used in Shelly 2 (+3k2 code) +#define USE_MCP39F501 // Add support for MCP39F501 Energy monitor as used in Shelly 2 (+3k1 code) // -- Low level interface devices ----------------- #define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 06826197129f..860183f49ae4 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -451,7 +451,7 @@ boolean EnergyCommand() nvalue = Settings.energy_current_calibration; unit = UNIT_MICROSECOND; } - else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // dHz + else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Hz nvalue = Settings.energy_frequency_calibration; unit = UNIT_HERTZ; } diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index a9620ce508f3..c34846edf064 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -56,12 +56,6 @@ #define MCP_FREQUENCY_GAIN_BASE 0x00AE #define MCP_FREQUENCY_LEN 4 -#define EMTR_OUT_BASE 0x0004 -#define EMTR_OUT_LEN 28 - -#define MCP_FLASH_READ 0x42 -#define MCP_FLASH_WRITE 0x50 - typedef struct mcp_calibration_registers_type { uint16_t gain_current_rms; uint16_t gain_voltage_rms; @@ -161,16 +155,6 @@ void McpSetInt(unsigned long value, uint8_t *data, uint8_t offset, size_t size) } } -void AddLogSerialSend(byte loglevel, uint8_t *buffer, int count) -{ - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_SERIAL "Send")); - for (int i = 0; i < count; i++) { - snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, *(buffer++)); - } - AddLog(loglevel); -} - - void McpSend(uint8_t *data) { if (mcp_timeout) { return; } @@ -179,7 +163,7 @@ void McpSend(uint8_t *data) data[0] = MCP_START_FRAME; data[data[1] -1] = McpChecksum(data); -// AddLogSerialSend(LOG_LEVEL_DEBUG_MORE, data, data[1]); +// AddLogSerial(LOG_LEVEL_DEBUG_MORE, data, data[1]); for (byte i = 0; i < data[1]; i++) { Serial.write(data[i]); @@ -252,7 +236,7 @@ calc: void McpCalibrationReactivePower() { - mcp_calibration_registers.gain_reactive_power = mcp_calibration_registers.gain_reactive_power * mcp_calibration_setpoint.calibration_reactive_power / mcp_output_registers.reactive_power; + mcp_calibration_registers.gain_reactive_power = mcp_calibration_registers.gain_reactive_power * mcp_calibration_registers.calibration_reactive_power / mcp_output_registers.reactive_power; } void McpCalibrationLineFreqency() @@ -605,6 +589,11 @@ void McpEverySecond() { uint8_t get_state[] = { 0xA5, 0x08, 0x41, 0x00, 0x04, 0x4E, 0x16, 0x00 }; + if (mcp_output_registers.active_power) { + energy_kWhtoday_delta += ((mcp_output_registers.active_power * 10) / 36); + EnergyUpdateToday(); + } + if (mcp_timeout) { mcp_timeout--; } @@ -621,11 +610,6 @@ void McpEverySecond() else if (!mcp_single_wire_active) { McpSend(get_state); } - - if (mcp_output_registers.active_power) { - energy_kWhtoday_delta += ((mcp_output_registers.active_power * 10) / 36); - EnergyUpdateToday(); - } } void McpSnsInit() @@ -656,9 +640,9 @@ boolean McpCommand() if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { // MCP Debug commands - PowerCal - if (1 == XdrvMailbox.payload) { McpSingleWireStart(); } - if (2 == XdrvMailbox.payload) { McpSingleWireStop(0); } - if (3 == XdrvMailbox.payload) { McpGetAddress(); } +// if (1 == XdrvMailbox.payload) { McpSingleWireStart(); } +// if (2 == XdrvMailbox.payload) { McpSingleWireStop(0); } +// if (3 == XdrvMailbox.payload) { McpGetAddress(); } serviced = false; } From 557545cb56d774bfdfdeb32874a779b649a0fa2a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 21 Sep 2018 16:19:31 +0200 Subject: [PATCH 125/798] Cleanup Driver Cleanup Driver --- sonoff/sonoff.ino | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 84293f5bcff9..b5d752a3bd3f 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -679,7 +679,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, (Settings.save_data > 1) ? stemp1 : GetStateText(Settings.save_data)); } - else if (CMND_SENSOR == command_code) { + else if ((CMND_SENSOR == command_code) || (CMND_DRIVER == command_code)) { XdrvMailbox.index = index; XdrvMailbox.data_len = data_len; XdrvMailbox.payload16 = payload16; @@ -687,18 +687,11 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) XdrvMailbox.grpflg = grpflg; XdrvMailbox.topic = command; XdrvMailbox.data = dataBuf; - XsnsCall(FUNC_COMMAND); -// if (!XsnsCall(FUNC_COMMAND)) type = NULL; - } - else if (CMND_DRIVER == command_code) { - XdrvMailbox.index = index; - XdrvMailbox.data_len = data_len; - XdrvMailbox.payload16 = payload16; - XdrvMailbox.payload = payload; - XdrvMailbox.grpflg = grpflg; - XdrvMailbox.topic = command; - XdrvMailbox.data = dataBuf; - XdrvCall(FUNC_COMMAND); + if (CMND_SENSOR == command_code) { + XsnsCall(FUNC_COMMAND); + } else { + XdrvCall(FUNC_COMMAND); + } } else if ((CMND_SETOPTION == command_code) && (index < 82)) { byte ptype; From 4992b4368916e7a8cdb8a35b08fee75071197379 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Fri, 21 Sep 2018 23:43:58 +0200 Subject: [PATCH 126/798] PCA9685 I2C Hardware PWM - Experimental --- sonoff/user_config.h | 2 + sonoff/xdrv_15_pca9685.ino | 184 +++++++++++++++++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 sonoff/xdrv_15_pca9685.ino diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 438983a66c8f..ee374d41ca28 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -298,6 +298,8 @@ // #define USE_MCP230xx_ADDR 0x20 // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x27 - set according to your wired setup) // #define USE_MCP230xx_OUTPUT // Enable MCP23008/MCP23017 OUTPUT support through sensor29 commands (+1k5 code) // #define USE_MCP230xx_DISPLAYOUTPUT // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code) +// #define USE_PCA9685 // Enable PCA9685 I2C HW PWM Driver - Must define I2C Address in #define USE_PCA9685_ADDR below - range 0x40 - 0x47 (+1k4 code) +// #define USE_PCA9685_ADDR 0x40 // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x27 - set according to your wired setup) // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code) // #define USE_CCS811 // Enable CCS811 sensor (I2C address 0x5A) (+2k2 code) // #define USE_MPU6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) (+2k6 code) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino new file mode 100644 index 000000000000..e53b8d17f542 --- /dev/null +++ b/sonoff/xdrv_15_pca9685.ino @@ -0,0 +1,184 @@ +/* + xdrv_15_pca9685.ino - Support for I2C PCA9685 12bit 16 pin hardware PWM driver + + Copyright (C) 2018 Andre Thomas and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_I2C +#ifdef USE_PCA9685 + +#define XDRV_15 15 + +#define PCA9685_REG_MODE1 0x00 +#define PCA9685_REG_LED0_ON_L 0x06 +#define PCA9685_REG_PRE_SCALE 0xFE + +uint8_t pca9685_detected = 0; +uint16_t pca9685_freq = 50; + +void PCA9685_Detect(void) +{ + if (pca9685_detected) { return; } + + uint8_t buffer; + + if (I2cValidRead8(&buffer, USE_PCA9685_ADDR, PCA9685_REG_MODE1)) { + I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, 0x20); + if (I2cValidRead8(&buffer, USE_PCA9685_ADDR, PCA9685_REG_MODE1)) { + if (0x20 == buffer) { + pca9685_detected = 1; + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "PCA9685", USE_PCA9685_ADDR); + AddLog(LOG_LEVEL_DEBUG); + PCA9685_Reset(); // Reset the controller + } + } + } +} + +void PCA9685_Reset(void) +{ + I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, 0x80); + PCA9685_SetPWMfreq(50); + for (uint8_t pin=0;pin<16;pin++) { + PCA9685_SetPWM(pin,0,false); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"RESET\":\"OK\"}}")); +} + +void PCA9685_SetPWMfreq(double freq) { +/* + 7.3.5 from datasheet + prescale value = round(25000000/(4096*freq))-1; + */ + pca9685_freq=freq; + uint8_t pre_scale_osc = round(25000000/(4096*freq))-1; + if (1526 == freq) pre_scale_osc=0xFF; // force setting for 24hz because rounding causes 1526 to be 254 + uint8_t current_mode1 = I2cRead8(USE_PCA9685_ADDR, PCA9685_REG_MODE1); // read current value of MODE1 register + uint8_t sleep_mode1 = (current_mode1&0x7F) | 0x10; // Determine register value to put PCA to sleep + I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, sleep_mode1); // Let's sleep a little + I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_PRE_SCALE, pre_scale_osc); // Set the pre-scaler + I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, current_mode1 | 0xA0); // Reset MODE1 register to original state and enable auto increment +} + +void PCA9685_SetPWM_Reg(uint8_t pin, uint16_t on, uint16_t off) { + uint8_t led_reg = PCA9685_REG_LED0_ON_L + 4 * pin; + uint32_t led_data = 0; + I2cWrite8(USE_PCA9685_ADDR, led_reg, on); + I2cWrite8(USE_PCA9685_ADDR, led_reg+1, (on >> 8)); + I2cWrite8(USE_PCA9685_ADDR, led_reg+2, off); + I2cWrite8(USE_PCA9685_ADDR, led_reg+3, (off >> 8)); +} + +void PCA9685_SetPWM(uint8_t pin, uint16_t pwm, bool inverted) { + if (4096 == pwm) { + PCA9685_SetPWM_Reg(pin, 4096, 0); // Special use additional bit causes channel to turn on completely without PWM + } else { + PCA9685_SetPWM_Reg(pin, 0, pwm); + } +} + +bool PCA9685_Command(void) +{ + boolean serviced = true; + boolean validpin = false; + uint8_t paramcount = 0; + if (XdrvMailbox.data_len > 0) { + paramcount=1; + } else { + serviced = false; + return serviced; + } + char sub_string[XdrvMailbox.data_len]; + for (uint8_t ca=0;ca 1) { + uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + if ((new_freq >= 24) && (new_freq <= 1526)) { + PCA9685_SetPWMfreq(new_freq); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}")); + return serviced; + } + } else { // No parameter was given for setfreq, so we return current setting + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i}}"),pca9685_freq); + return serviced; + } + } + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"PWM")) { + if (paramcount > 1) { + uint8_t pin = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); + if (paramcount > 2) { + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "ON")) { + PCA9685_SetPWM(pin, 4096, false); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,4096); + serviced = true; + return serviced; + } + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "OFF")) { + PCA9685_SetPWM(pin, 0, false); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,0); + serviced = true; + return serviced; + } + uint16_t pwm = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3)); + if ((pin >= 0 && pin <= 15) && (pwm >= 0 && pwm <= 4096)) { + PCA9685_SetPWM(pin, pwm, false); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,pwm); + serviced = true; + return serviced; + } + } + } + } + return serviced; +} + +boolean Xdrv15(byte function) +{ + boolean result = false; + + if (i2c_flg) { + switch (function) { + case FUNC_MQTT_DATA: + break; + case FUNC_EVERY_SECOND: + PCA9685_Detect(); + break; + case FUNC_EVERY_50_MSECOND: + break; + case FUNC_JSON_APPEND: + break; + case FUNC_COMMAND: + if (XDRV_15 == XdrvMailbox.index) { + PCA9685_Command(); + } + break; + case FUNC_WEB_APPEND: + break; + default: + break; + } + } + return result; +} + +#endif // USE_PCA9685 +#endif // USE_IC2 From 4ff5667c2adeac42078c57d4dec38522d9ab7109 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sat, 22 Sep 2018 00:17:08 +0200 Subject: [PATCH 127/798] PCA9685 I2C Hardware PWM - Experimental --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index ee374d41ca28..b93e4421115f 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -299,7 +299,7 @@ // #define USE_MCP230xx_OUTPUT // Enable MCP23008/MCP23017 OUTPUT support through sensor29 commands (+1k5 code) // #define USE_MCP230xx_DISPLAYOUTPUT // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code) // #define USE_PCA9685 // Enable PCA9685 I2C HW PWM Driver - Must define I2C Address in #define USE_PCA9685_ADDR below - range 0x40 - 0x47 (+1k4 code) -// #define USE_PCA9685_ADDR 0x40 // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x27 - set according to your wired setup) +// #define USE_PCA9685_ADDR 0x40 // Enable PCA9685 I2C Address to use (Must be within range 0x40 through 0x47 - set according to your wired setup) // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code) // #define USE_CCS811 // Enable CCS811 sensor (I2C address 0x5A) (+2k2 code) // #define USE_MPU6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) (+2k6 code) From 20e8d76877123ffd0584e929c35d087e092d410c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Sep 2018 12:04:38 +0200 Subject: [PATCH 128/798] TSL2561 driver fixes Rewrite TSL2561 driver to fix some issues (#3681) --- sonoff/_changelog.ino | 1 + sonoff/xsns_16_tsl2561.ino | 91 ++++++++++++++++++++++++++------------ 2 files changed, 63 insertions(+), 29 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 72293c30d8e5..908fd262a158 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.5 20180921 * Add authentication to HTTP web pages * Add energy monitoring to Shelly2 (#2789) + * Rewrite TSL2561 driver to fix some issues (#3681) * * 6.2.1.4 20180916 * Add command SerialSend5 to send raw serial data like "A5074100545293" diff --git a/sonoff/xsns_16_tsl2561.ino b/sonoff/xsns_16_tsl2561.ino index ac0536c6aaf3..9f785e3e406a 100644 --- a/sonoff/xsns_16_tsl2561.ino +++ b/sonoff/xsns_16_tsl2561.ino @@ -31,17 +31,67 @@ Tsl2561 Tsl(Wire); +uint8_t tsl2561_type = 0; +uint8_t tsl2561_valid = 0; +uint32_t tsl2561_milliLux = 0; +char tsl2561_types[] = "TSL2561"; + +bool Tsl2561Read() +{ + if (tsl2561_valid) { tsl2561_valid--; } + + uint8_t id; + bool gain; + Tsl2561::exposure_t exposure; + uint16_t scaledFull, scaledIr; + uint32_t full, ir; + + if (Tsl.available()) { + if (Tsl.on()) { + if (Tsl.id(id) + && Tsl2561Util::autoGain(Tsl, gain, exposure, scaledFull, scaledIr) + && Tsl2561Util::normalizedLuminosity(gain, exposure, full = scaledFull, ir = scaledIr) + && Tsl2561Util::milliLux(full, ir, tsl2561_milliLux, Tsl2561::packageCS(id))) { + } else{ + tsl2561_milliLux = 0; + } + } + } + tsl2561_valid = SENSOR_MAX_MISS; + return true; +} + void Tsl2561Detect() { + if (tsl2561_type) { return; } + if (!Tsl.available()) { Tsl.begin(); if (Tsl.available()) { - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "TSL2561", Tsl.address()); + tsl2561_type = 1; + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, tsl2561_types, Tsl.address()); AddLog(LOG_LEVEL_DEBUG); } } } +void Tsl2561EverySecond() +{ + if (90 == (uptime %100)) { + // 1mS + Tsl2561Detect(); + } + else if (uptime &3) { + // 1mS + if (tsl2561_type) { + if (!Tsl2561Read()) { + AddLogMissed(tsl2561_types, tsl2561_valid); +// if (!tsl2561_valid) { tsl2561_type = 0; } + } + } + } +} + #ifdef USE_WEBSERVER const char HTTP_SNS_TSL2561[] PROGMEM = "%s{s}TSL2561 " D_ILLUMINANCE "{m}%u.%03u " D_UNIT_LUX "{e}"; // {s} = , {m} = , {e} = @@ -49,37 +99,17 @@ const char HTTP_SNS_TSL2561[] PROGMEM = void Tsl2561Show(boolean json) { - uint8_t id; - bool gain; - Tsl2561::exposure_t exposure; - uint16_t scaledFull, scaledIr; - uint32_t full, ir; - uint32_t milliLux; - - if (Tsl.available()) { - if (Tsl.on()) { - if( Tsl.id(id) - && Tsl2561Util::autoGain(Tsl, gain, exposure, scaledFull, scaledIr) - && Tsl2561Util::normalizedLuminosity(gain, exposure, full = scaledFull, ir = scaledIr) - && Tsl2561Util::milliLux(full, ir, milliLux, Tsl2561::packageCS(id))) { - -// snprintf_P(log_data, sizeof(log_data), PSTR(D_ILLUMINANCE " g:%d, e:%d, f:%u, i:%u -> %u.%03u " D_UNIT_LUX), -// gain, exposure, full, ir, milliLux/1000, milliLux%1000); -// AddLog(LOG_LEVEL_DEBUG); - - if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u}"), - mqtt_data, milliLux/1000, milliLux%1000); + if (tsl2561_valid) { + if (json) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u}"), + mqtt_data, tsl2561_milliLux / 1000, tsl2561_milliLux % 1000); #ifdef USE_DOMOTICZ - if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, (milliLux+500)/1000); + if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, (tsl2561_milliLux + 500) / 1000); } #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER - } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TSL2561, mqtt_data, milliLux/1000, milliLux%1000); + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TSL2561, mqtt_data, tsl2561_milliLux / 1000, tsl2561_milliLux % 1000); #endif // USE_WEBSERVER - } - } - Tsl.off(); } } } @@ -96,9 +126,12 @@ boolean Xsns16(byte function) if (i2c_flg) { switch (function) { - case FUNC_PREP_BEFORE_TELEPERIOD: + case FUNC_INIT: Tsl2561Detect(); break; + case FUNC_EVERY_SECOND: + Tsl2561EverySecond(); + break; case FUNC_JSON_APPEND: Tsl2561Show(1); break; From 57e7005b4898aaeb722444182123bff2651d86ca Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Sep 2018 12:18:13 +0200 Subject: [PATCH 129/798] Fix TSL2561 timeslot --- sonoff/xsns_16_tsl2561.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/xsns_16_tsl2561.ino b/sonoff/xsns_16_tsl2561.ino index 9f785e3e406a..61308aa206c5 100644 --- a/sonoff/xsns_16_tsl2561.ino +++ b/sonoff/xsns_16_tsl2561.ino @@ -81,8 +81,8 @@ void Tsl2561EverySecond() // 1mS Tsl2561Detect(); } - else if (uptime &3) { - // 1mS + else if (!(uptime %2)) { // Update every 2 seconds + // ?mS - 4Sec if (tsl2561_type) { if (!Tsl2561Read()) { AddLogMissed(tsl2561_types, tsl2561_valid); From 7a767f104cd2a9e1626bbcd1ee079f541086367f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Sep 2018 15:09:53 +0200 Subject: [PATCH 130/798] 6.2.1.6 Remove some commands 6.2.1.6 20180922 * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet * Allow decimals as input to commands PowerSet, VoltageSet and CurrentSet * Add support for PCA9685 12bit 16pin hardware PWM driver (#3866) --- sonoff/_changelog.ino | 7 ++++++- sonoff/i18n.h | 3 --- sonoff/sonoff_version.h | 2 +- sonoff/xdrv_03_energy.ino | 35 ++++++++--------------------------- sonoff/xnrg_01_hlw8012.ino | 17 +++++++---------- sonoff/xnrg_02_cse7766.ino | 17 +++++++---------- sonoff/xnrg_04_mcp39f501.ino | 11 +---------- 7 files changed, 30 insertions(+), 62 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 908fd262a158..2b954e151a17 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,9 @@ -/* 6.2.1.5 20180921 +/* 6.2.1.6 20180922 + * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet + * Allow decimals as input to commands PowerSet, VoltageSet and CurrentSet + * Add support for PCA9685 12bit 16pin hardware PWM driver (#3866) + * + * 6.2.1.5 20180921 * Add authentication to HTTP web pages * Add energy monitoring to Shelly2 (#2789) * Rewrite TSL2561 driver to fix some issues (#3681) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index a45d7687d22a..80f757447f28 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -287,11 +287,8 @@ #define D_CMND_CURRENTLOW "CurrentLow" #define D_CMND_CURRENTHIGH "CurrentHigh" #define D_CMND_ENERGYRESET "EnergyReset" -#define D_CMND_POWERCAL "PowerCal" #define D_CMND_POWERSET "PowerSet" -#define D_CMND_VOLTAGECAL "VoltageCal" #define D_CMND_VOLTAGESET "VoltageSet" -#define D_CMND_CURRENTCAL "CurrentCal" #define D_CMND_CURRENTSET "CurrentSet" #define D_CMND_FREQUENCYSET "FrequencySet" #define D_CMND_MAXPOWER "MaxPower" diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 43253e40ff03..228a48d92459 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020105 +#define VERSION 0x06020106 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 860183f49ae4..3ccad7df4ae3 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -29,14 +29,14 @@ enum EnergyCommands { CMND_POWERDELTA, CMND_POWERLOW, CMND_POWERHIGH, CMND_VOLTAGELOW, CMND_VOLTAGEHIGH, CMND_CURRENTLOW, CMND_CURRENTHIGH, - CMND_POWERCAL, CMND_POWERSET, CMND_VOLTAGECAL, CMND_VOLTAGESET, CMND_CURRENTCAL, CMND_CURRENTSET, CMND_FREQUENCYSET, + CMND_POWERSET, CMND_VOLTAGESET, CMND_CURRENTSET, CMND_FREQUENCYSET, CMND_ENERGYRESET, CMND_MAXENERGY, CMND_MAXENERGYSTART, CMND_MAXPOWER, CMND_MAXPOWERHOLD, CMND_MAXPOWERWINDOW, CMND_SAFEPOWER, CMND_SAFEPOWERHOLD, CMND_SAFEPOWERWINDOW }; const char kEnergyCommands[] PROGMEM = D_CMND_POWERDELTA "|" D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|" - D_CMND_POWERCAL "|" D_CMND_POWERSET "|" D_CMND_VOLTAGECAL "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTCAL "|" D_CMND_CURRENTSET "|" D_CMND_FREQUENCYSET "|" + D_CMND_POWERSET "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTSET "|" D_CMND_FREQUENCYSET "|" D_CMND_ENERGYRESET "|" D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|" D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|" D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW ; @@ -415,45 +415,21 @@ boolean EnergyCommand() command, energy_total_chr, energy_yesterday_chr, energy_daily_chr); status_flag = 1; } - else if ((CMND_POWERCAL == command_code) && XnrgCall(FUNC_COMMAND)) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { - Settings.energy_power_calibration = (XdrvMailbox.payload > 4000) ? XdrvMailbox.payload : HLW_PREF_PULSE; // HLW = 12530, CSE = 5364 - } - nvalue = Settings.energy_power_calibration; - unit = UNIT_MICROSECOND; - } - else if ((CMND_VOLTAGECAL == command_code) && XnrgCall(FUNC_COMMAND)) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { - Settings.energy_voltage_calibration = (XdrvMailbox.payload > 999) ? XdrvMailbox.payload : HLW_UREF_PULSE; // HLW = 1950, CSE = 1912 - } - nvalue = Settings.energy_voltage_calibration; - unit = UNIT_MICROSECOND; - } - else if ((CMND_CURRENTCAL == command_code) && XnrgCall(FUNC_COMMAND)) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32001)) { - Settings.energy_current_calibration = (XdrvMailbox.payload > 1100) ? XdrvMailbox.payload : HLW_IREF_PULSE; // HLW = 3500, CSE = 16140 - } - nvalue = Settings.energy_current_calibration; - unit = UNIT_MICROSECOND; - } else if ((CMND_POWERSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Watt - snprintf_P(command, sizeof(command), PSTR(D_CMND_POWERCAL)); nvalue = Settings.energy_power_calibration; unit = UNIT_MICROSECOND; } else if ((CMND_VOLTAGESET == command_code) && XnrgCall(FUNC_COMMAND)) { // Volt - snprintf_P(command, sizeof(command), PSTR(D_CMND_VOLTAGECAL)); nvalue = Settings.energy_voltage_calibration; unit = UNIT_MICROSECOND; } else if ((CMND_CURRENTSET == command_code) && XnrgCall(FUNC_COMMAND)) { // milliAmpere - snprintf_P(command, sizeof(command), PSTR(D_CMND_CURRENTCAL)); nvalue = Settings.energy_current_calibration; unit = UNIT_MICROSECOND; } else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Hz nvalue = Settings.energy_frequency_calibration; - unit = UNIT_HERTZ; + unit = UNIT_MICROSECOND; } #if FEATURE_POWER_LIMIT @@ -518,6 +494,11 @@ boolean EnergyCommand() else serviced = false; // Unknown command if (serviced && !status_flag) { + + if (UNIT_MICROSECOND == unit) { + snprintf_P(command, sizeof(command), PSTR("%sCal"), command); + } + if (Settings.flag.value_units) { snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_LVALUE_SPACE_UNIT, command, nvalue, GetTextIndexed(sunit, sizeof(sunit), unit, kUnitNames)); } else { diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 6ef196fb1eeb..5140d65969ec 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -227,22 +227,19 @@ boolean HlwCommand() { boolean serviced = true; - if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { - - } - else if (CMND_POWERSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && hlw_cf_pulse_length) { - Settings.energy_power_calibration = (XdrvMailbox.payload * 10 * hlw_cf_pulse_length) / hlw_power_ratio; + if (CMND_POWERSET == energy_command_code) { + if (XdrvMailbox.data_len && hlw_cf_pulse_length) { + Settings.energy_power_calibration = ((unsigned long)(CharToDouble(XdrvMailbox.data) * 10) * hlw_cf_pulse_length) / hlw_power_ratio; } } else if (CMND_VOLTAGESET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && hlw_cf1_voltage_pulse_length) { - Settings.energy_voltage_calibration = (XdrvMailbox.payload * 10 * hlw_cf1_voltage_pulse_length) / hlw_voltage_ratio; + if (XdrvMailbox.data_len && hlw_cf1_voltage_pulse_length) { + Settings.energy_voltage_calibration = ((unsigned long)(CharToDouble(XdrvMailbox.data) * 10) * hlw_cf1_voltage_pulse_length) / hlw_voltage_ratio; } } else if (CMND_CURRENTSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && hlw_cf1_current_pulse_length) { - Settings.energy_current_calibration = (XdrvMailbox.payload * hlw_cf1_current_pulse_length) / hlw_current_ratio; + if (XdrvMailbox.data_len && hlw_cf1_current_pulse_length) { + Settings.energy_current_calibration = ((unsigned long)(CharToDouble(XdrvMailbox.data)) * hlw_cf1_current_pulse_length) / hlw_current_ratio; } } else serviced = false; // Unknown command diff --git a/sonoff/xnrg_02_cse7766.ino b/sonoff/xnrg_02_cse7766.ino index 84535cf96dcf..a433bc4a45e4 100644 --- a/sonoff/xnrg_02_cse7766.ino +++ b/sonoff/xnrg_02_cse7766.ino @@ -195,22 +195,19 @@ boolean CseCommand() { boolean serviced = true; - if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { - - } - else if (CMND_POWERSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3601) && power_cycle) { - Settings.energy_power_calibration = (XdrvMailbox.payload * power_cycle) / CSE_PREF; + if (CMND_POWERSET == energy_command_code) { + if (XdrvMailbox.data_len && power_cycle) { + Settings.energy_power_calibration = ((unsigned long)CharToDouble(XdrvMailbox.data) * power_cycle) / CSE_PREF; } } else if (CMND_VOLTAGESET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 501) && voltage_cycle) { - Settings.energy_voltage_calibration = (XdrvMailbox.payload * voltage_cycle) / CSE_UREF; + if (XdrvMailbox.data_len && voltage_cycle) { + Settings.energy_voltage_calibration = ((unsigned long)CharToDouble(XdrvMailbox.data) * voltage_cycle) / CSE_UREF; } } else if (CMND_CURRENTSET == energy_command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 16001) && current_cycle) { - Settings.energy_current_calibration = (XdrvMailbox.payload * current_cycle) / 1000; + if (XdrvMailbox.data_len && current_cycle) { + Settings.energy_current_calibration = ((unsigned long)CharToDouble(XdrvMailbox.data) * current_cycle) / 1000; } } else serviced = false; // Unknown command diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index c34846edf064..05d55a425c68 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -637,16 +637,7 @@ boolean McpCommand() { boolean serviced = true; - if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) { - - // MCP Debug commands - PowerCal -// if (1 == XdrvMailbox.payload) { McpSingleWireStart(); } -// if (2 == XdrvMailbox.payload) { McpSingleWireStop(0); } -// if (3 == XdrvMailbox.payload) { McpGetAddress(); } - - serviced = false; - } - else if (CMND_POWERSET == energy_command_code) { + if (CMND_POWERSET == energy_command_code) { if (XdrvMailbox.data_len && mcp_output_registers.active_power) { Settings.energy_power_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 100); mcp_calibration_setpoint.calibration_active_power = Settings.energy_power_calibration; From 544abec7bf836ce945b2b65770d1895d07017951 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 22 Sep 2018 15:42:18 +0200 Subject: [PATCH 131/798] Set force_update to true for buttons --- sonoff/xdrv_12_home_assistant.ino | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index 5c8a2a7cf1e4..b085947ae723 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -19,7 +19,7 @@ #ifdef USE_HOME_ASSISTANT -const char HASS_DISCOVER_SWITCH[] PROGMEM = +const char HASS_DISCOVER_RELAY[] PROGMEM = "{\"name\":\"%s\"," // dualr2 1 "\"command_topic\":\"%s\"," // cmnd/dualr2/POWER2 "\"state_topic\":\"%s\"," // stat/dualr2/RESULT (implies "\"optimistic\":\"false\",") @@ -39,7 +39,8 @@ const char HASS_DISCOVER_BUTTON[] PROGMEM = // "\"optimistic\":\"false\"," // false is Hass default when state_topic is set "\"availability_topic\":\"%s\"," // tele/dualr2/LWT "\"payload_available\":\"" D_ONLINE "\"," // Online - "\"payload_not_available\":\"" D_OFFLINE "\""; // Offline + "\"payload_not_available\":\"" D_OFFLINE "\"," // Offline + "\"force_update\":true"; const char HASS_DISCOVER_LIGHT_DIMMER[] PROGMEM = "%s,\"brightness_command_topic\":\"%s\"," // cmnd/led2/Dimmer @@ -102,7 +103,7 @@ void HAssDiscoverRelay() GetTopic_P(command_topic, CMND, mqtt_topic, value_template); GetTopic_P(state_topic, STAT, mqtt_topic, S_RSLT_RESULT); GetTopic_P(availability_topic, TELE, mqtt_topic, S_LWT); - snprintf_P(mqtt_data, sizeof(mqtt_data), HASS_DISCOVER_SWITCH, name, command_topic, state_topic, value_template, Settings.state_text[0], Settings.state_text[1], availability_topic); + snprintf_P(mqtt_data, sizeof(mqtt_data), HASS_DISCOVER_RELAY, name, command_topic, state_topic, value_template, Settings.state_text[0], Settings.state_text[1], availability_topic); if (is_light) { char brightness_command_topic[TOPSZ]; From 665a4abc47cbee81eb32cf5bcd23782ee044561b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Sep 2018 16:09:13 +0200 Subject: [PATCH 132/798] Fix Pow R2 and S31 low power * Add power value below 5W to Sonoff Pow R2 and S31 (#3745) * Add force_update to Home Assistant discovery (#3873) --- sonoff/_changelog.ino | 2 ++ sonoff/xnrg_02_cse7766.ino | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 2b954e151a17..cb72ff407bd0 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,8 @@ * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet * Allow decimals as input to commands PowerSet, VoltageSet and CurrentSet * Add support for PCA9685 12bit 16pin hardware PWM driver (#3866) + * Add power value below 5W to Sonoff Pow R2 and S31 (#3745) + * Add force_update to Home Assistant discovery (#3873) * * 6.2.1.5 20180921 * Add authentication to HTTP web pages diff --git a/sonoff/xnrg_02_cse7766.ino b/sonoff/xnrg_02_cse7766.ino index a433bc4a45e4..8ba1b146efcc 100644 --- a/sonoff/xnrg_02_cse7766.ino +++ b/sonoff/xnrg_02_cse7766.ino @@ -27,6 +27,8 @@ #define XNRG_02 2 +#define CSE_MAX_INVALID_POWER 128 // Number of invalid power receipts before deciding active power is zero + #define CSE_NOT_CALIBRATED 0xAA #define CSE_PULSES_NOT_INITIALIZED -1 @@ -42,10 +44,12 @@ long power_cycle = 0; unsigned long power_cycle_first = 0; long cf_pulses = 0; long cf_pulses_last_time = CSE_PULSES_NOT_INITIALIZED; +uint8_t cse_power_invalid = CSE_MAX_INVALID_POWER; void CseReceived() { // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + // 55 5A 02 F7 60 00 03 5A 00 40 10 04 8B 9F 51 A6 58 18 72 75 61 AC A1 30 - Power not valid (load below 5W) // 55 5A 02 F7 60 00 03 AB 00 40 10 02 60 5D 51 A6 58 03 E9 EF 71 0B 7A 36 // Hd Id VCal---- Voltage- ICal---- Current- PCal---- Power--- Ad CF--- Ck @@ -89,10 +93,11 @@ void CseReceived() energy_voltage = (float)(Settings.energy_voltage_calibration * CSE_UREF) / (float)voltage_cycle; } if (adjustement & 0x10) { // Power valid + cse_power_invalid = 0; if ((header & 0xF2) == 0xF2) { // Power cycle exceeds range energy_power = 0; } else { - if (0 == power_cycle_first) power_cycle_first = power_cycle; // Skip first incomplete power_cycle + if (0 == power_cycle_first) { power_cycle_first = power_cycle; } // Skip first incomplete power_cycle if (power_cycle_first != power_cycle) { power_cycle_first = -1; energy_power = (float)(Settings.energy_power_calibration * CSE_PREF) / (float)power_cycle; @@ -101,8 +106,12 @@ void CseReceived() } } } else { - power_cycle_first = 0; - energy_power = 0; // Powered on but no load + if (cse_power_invalid < CSE_MAX_INVALID_POWER) { // Allow measurements down to about 1W + cse_power_invalid++; + } else { + power_cycle_first = 0; + energy_power = 0; // Powered on but no load + } } if (adjustement & 0x20) { // Current valid if (0 == energy_power) { From f05fc71d675101572a9fbd7ac90ead0542537528 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 22 Sep 2018 17:37:49 +0200 Subject: [PATCH 133/798] Fix rule trigger POWER1#STATE Fix rule trigger POWER1#STATE execution after restart and SetOption0 is 0 (#3856) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 6 +++++- sonoff/xdrv_10_rules.ino | 1 + sonoff/xdrv_interface.ino | 8 -------- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index cb72ff407bd0..b220dc4b3148 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -4,6 +4,7 @@ * Add support for PCA9685 12bit 16pin hardware PWM driver (#3866) * Add power value below 5W to Sonoff Pow R2 and S31 (#3745) * Add force_update to Home Assistant discovery (#3873) + * Fix rule trigger POWER1#STATE execution after restart and SetOption0 is 0 (#3856) * * 6.2.1.5 20180921 * Add authentication to HTTP web pages diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 80356d475b27..c3d514f0cb76 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -203,7 +203,7 @@ enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_R enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, - FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, + FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_RULE_INIT_POWER, FUNC_SHOW_SENSOR, FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index b5d752a3bd3f..a405fe47ba7f 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -335,7 +335,8 @@ void SetDevicePower(power_t rpower, int source) } } - XdrvSetPower(rpower); + XdrvMailbox.index = rpower; + XdrvCall(FUNC_SET_POWER); if ((SONOFF_DUAL == Settings.module) || (CH4 == Settings.module)) { Serial.write(0xA0); @@ -2613,6 +2614,9 @@ void setup() } } + XdrvMailbox.index = power; + XdrvCall(FUNC_RULE_INIT_POWER); + blink_powersave = power; snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " %s-" ARDUINO_ESP8266_RELEASE), diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 930bde7d5e6e..5ef59c037b0e 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -628,6 +628,7 @@ boolean Xdrv10(byte function) case FUNC_EVERY_SECOND: RulesEverySecond(); break; + case FUNC_RULE_INIT_POWER: case FUNC_SET_POWER: RulesSetPower(); break; diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index 43a391076062..a88d3b5f850e 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -153,14 +153,6 @@ boolean XdrvCommand(uint8_t grpflg, char *type, uint16_t index, char *dataBuf, u return XdrvCall(FUNC_COMMAND); } -void XdrvSetPower(power_t mpower) -{ -// XdrvMailbox.valid = 1; - XdrvMailbox.index = mpower; - - XdrvCall(FUNC_SET_POWER); -} - boolean XdrvMqttData(char *topicBuf, uint16_t stopicBuf, char *dataBuf, uint16_t sdataBuf) { XdrvMailbox.index = stopicBuf; From 01ce1b0c91a72d46a87c517626038b11497521da Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 23 Sep 2018 13:55:42 +0200 Subject: [PATCH 134/798] Fix Shelly2 monitoring Disable serial logging on Shelly2 as serial is being used by energy monitoring (#3878) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 4 ---- sonoff/xdrv_10_rules.ino | 2 +- sonoff/xnrg_04_mcp39f501.ino | 1 + 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b220dc4b3148..f38b681533de 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -5,6 +5,7 @@ * Add power value below 5W to Sonoff Pow R2 and S31 (#3745) * Add force_update to Home Assistant discovery (#3873) * Fix rule trigger POWER1#STATE execution after restart and SetOption0 is 0 (#3856) + * Disable serial logging on Shelly2 as serial is being used by energy monitoring (#3878) * * 6.2.1.5 20180921 * Add authentication to HTTP web pages diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index c3d514f0cb76..80356d475b27 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -203,7 +203,7 @@ enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_R enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, - FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_RULE_INIT_POWER, FUNC_SHOW_SENSOR, + FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index a405fe47ba7f..dc1445fc48bc 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2613,10 +2613,6 @@ void setup() SetPulseTimer(i, Settings.pulse_timer[i]); } } - - XdrvMailbox.index = power; - XdrvCall(FUNC_RULE_INIT_POWER); - blink_powersave = power; snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " %s-" ARDUINO_ESP8266_RELEASE), diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 5ef59c037b0e..303207c10be3 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -366,6 +366,7 @@ void RulesEvery50ms() if (Settings.rule_enabled) { // Any rule enabled char json_event[120]; + if (-1 == rules_new_power) { rules_new_power = power; } if (rules_new_power != rules_old_power) { if (rules_old_power != -1) { for (byte i = 0; i < devices_present; i++) { @@ -628,7 +629,6 @@ boolean Xdrv10(byte function) case FUNC_EVERY_SECOND: RulesEverySecond(); break; - case FUNC_RULE_INIT_POWER: case FUNC_SET_POWER: RulesSetPower(); break; diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index 05d55a425c68..408e0ca26863 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -614,6 +614,7 @@ void McpEverySecond() void McpSnsInit() { + SetSeriallog(LOG_LEVEL_NONE); // Free serial interface from logging interference digitalWrite(15, 1); // GPIO15 - MCP enable } From 683c21124114a25f9d0bdfd3a9712a9dc7095fb9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 23 Sep 2018 16:41:22 +0200 Subject: [PATCH 135/798] Fix Shelly2 wrong FrequencySet Fix Shelly2 wrong FrequencySet calculation and add input range checks (#3882) --- sonoff/_changelog.ino | 1 + sonoff/xnrg_04_mcp39f501.ino | 45 +++++++++++++++++++++++++----------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index f38b681533de..b7988c69c1e5 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -6,6 +6,7 @@ * Add force_update to Home Assistant discovery (#3873) * Fix rule trigger POWER1#STATE execution after restart and SetOption0 is 0 (#3856) * Disable serial logging on Shelly2 as serial is being used by energy monitoring (#3878) + * Fix Shelly2 wrong FrequencySet calculation and add input range checks (#3882) * * 6.2.1.5 20180921 * Add authentication to HTTP web pages diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index 408e0ca26863..3fa12da2699e 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -239,8 +239,12 @@ void McpCalibrationReactivePower() mcp_calibration_registers.gain_reactive_power = mcp_calibration_registers.gain_reactive_power * mcp_calibration_registers.calibration_reactive_power / mcp_output_registers.reactive_power; } -void McpCalibrationLineFreqency() +void McpCalibrationLineFrequency() { + if ((0xFFFF == mcp_output_registers.line_frequency) || (0 == mcp_frequency_registers.gain_line_frequency)) { // Reset values to 50Hz + mcp_output_registers.line_frequency = 50000; + mcp_frequency_registers.gain_line_frequency = 0x8000; + } mcp_frequency_registers.gain_line_frequency = mcp_frequency_registers.gain_line_frequency * mcp_frequency_registers.line_frequency_ref / mcp_output_registers.line_frequency; } @@ -481,7 +485,7 @@ void McpParseFrequency() if (mcp_calibration_setpoint.line_frequency_ref) { mcp_frequency_registers.line_frequency_ref = mcp_calibration_setpoint.line_frequency_ref; - McpCalibrationLineFreqency(); + McpCalibrationLineFrequency(); mcp_timeout = 0; McpSetFrequency(); } @@ -637,33 +641,46 @@ void McpDrvInit() boolean McpCommand() { boolean serviced = true; + unsigned long value = 0; if (CMND_POWERSET == energy_command_code) { if (XdrvMailbox.data_len && mcp_output_registers.active_power) { - Settings.energy_power_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 100); - mcp_calibration_setpoint.calibration_active_power = Settings.energy_power_calibration; - McpGetCalibration(); + value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 100); + if ((value > 100) && (value < 200000)) { // Between 1W and 2000W + Settings.energy_power_calibration = value; + mcp_calibration_setpoint.calibration_active_power = value; + McpGetCalibration(); + } } } else if (CMND_VOLTAGESET == energy_command_code) { if (XdrvMailbox.data_len && mcp_output_registers.voltage_rms) { - Settings.energy_voltage_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); - mcp_calibration_setpoint.calibration_voltage = Settings.energy_voltage_calibration; - McpGetCalibration(); + value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); + if ((value > 1000) && (value < 2600)) { // Between 100V and 260V + Settings.energy_voltage_calibration = value; + mcp_calibration_setpoint.calibration_voltage = value; + McpGetCalibration(); + } } } else if (CMND_CURRENTSET == energy_command_code) { if (XdrvMailbox.data_len && mcp_output_registers.current_rms) { - Settings.energy_current_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); - mcp_calibration_setpoint.calibration_current = Settings.energy_current_calibration; - McpGetCalibration(); + value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); + if ((value > 100) && (value < 80000)) { // Between 10mA and 8A + Settings.energy_current_calibration = value; + mcp_calibration_setpoint.calibration_current = value; + McpGetCalibration(); + } } } else if (CMND_FREQUENCYSET == energy_command_code) { if (XdrvMailbox.data_len && mcp_output_registers.line_frequency) { - Settings.energy_frequency_calibration = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); - mcp_calibration_setpoint.line_frequency_ref = Settings.energy_frequency_calibration; - McpGetFrequency(); + value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 1000); + if ((value > 45000) && (value < 65000)) { // Between 45Hz and 65Hz + Settings.energy_frequency_calibration = value; + mcp_calibration_setpoint.line_frequency_ref = value; + McpGetFrequency(); + } } } else serviced = false; // Unknown command From 5fa47c3fdce4b8842f095d8be1c8492685176909 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 24 Sep 2018 00:30:07 +0200 Subject: [PATCH 136/798] MCP230xx - Add missing (void) --- sonoff/xsns_29_mcp230xx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 1ca59f8ed335..9dbaf406a257 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -691,7 +691,7 @@ void MCP230xx_OutputTelemetry(void) { #endif // USE_MCP230xx_OUTPUT -void MCP230xx_Interrupt_Counter_Report() { +void MCP230xx_Interrupt_Counter_Report(void) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"MCP230_INTTIMER\": {"), GetDateAndTime(DT_LOCAL).c_str()); for (uint8_t pinx = 0;pinx < mcp230xx_pincount;pinx++) { if (Settings.mcp230xx_config[pinx].int_count_en) { // Counting is enabled for this pin so we add to report From f65d8c0cbf72ad6f68502df771fb0c91a6c3185c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 24 Sep 2018 11:44:40 +0200 Subject: [PATCH 137/798] Fix possible array overflow Fix possible array overflow (#3887 ) --- sonoff/sonoff.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index dc1445fc48bc..91c1fbb9b41e 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -462,10 +462,11 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) grpflg = (strstr(topicBuf, Settings.mqtt_grptopic) != NULL); fallback_topic_flag = (strstr(topicBuf, mqtt_client) != NULL); - type = strrchr(topicBuf, '/') +1; // Last part of received topic is always the command (type) + type = strrchr(topicBuf, '/'); // Last part of received topic is always the command (type) index = 1; if (type != NULL) { + type++; for (i = 0; i < strlen(type); i++) { type[i] = toupper(type[i]); } From 43c3cf57d596a14c18313e55ef1ab447f377dde4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 24 Sep 2018 18:16:35 +0200 Subject: [PATCH 138/798] Shelly2 Cleanup Cleanup and debug updates --- sonoff/settings.h | 24 +- sonoff/settings.ino | 4 +- sonoff/xdrv_99_debug.ino | 186 ++++++++++---- sonoff/xnrg_04_mcp39f501.ino | 462 +++++++++++++++-------------------- 4 files changed, 348 insertions(+), 328 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 7da6108910aa..bf862dd51f91 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -337,21 +337,21 @@ struct SYSCFG { } Settings; struct RTCRBT { - uint16_t valid; // 000 - uint8_t fast_reboot_count; // 002 - uint8_t free_003[1]; // 003 + uint16_t valid; // 280 (RTC memory offset 100 - sizeof(RTCRBT)) + uint8_t fast_reboot_count; // 282 + uint8_t free_003[1]; // 283 } RtcReboot; struct RTCMEM { - uint16_t valid; // 000 - byte oswatch_blocked_loop; // 002 - uint8_t ota_loader; // 003 - unsigned long energy_kWhtoday; // 004 - unsigned long energy_kWhtotal; // 008 - unsigned long pulse_counter[MAX_COUNTERS]; // 00C - power_t power; // 01C - uint8_t free_020[60]; // 020 - // 05C next free location (64 (=core) + 100 (=tasmota offset) + 92 (=0x5C RTCMEM struct) = 256 bytes (max = 512)) + uint16_t valid; // 290 (RTC memory offset 100) + byte oswatch_blocked_loop; // 292 + uint8_t ota_loader; // 293 + unsigned long energy_kWhtoday; // 294 + unsigned long energy_kWhtotal; // 298 + unsigned long pulse_counter[MAX_COUNTERS]; // 29C + power_t power; // 2AC + uint8_t free_020[60]; // 2B0 + // 2EC - 2FF free locations } RtcSettings; struct TIME_T { diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 5626f862bd12..0d8fa451a39e 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -95,7 +95,7 @@ void RtcSettingsSave() void RtcSettingsLoad() { - ESP.rtcUserMemoryRead(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); + ESP.rtcUserMemoryRead(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); // 0x290 #ifdef DEBUG_THEO AddLog_P(LOG_LEVEL_DEBUG, PSTR("Dump: Load")); RtcSettingsDump(); @@ -145,7 +145,7 @@ void RtcRebootSave() void RtcRebootLoad() { - ESP.rtcUserMemoryRead(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); + ESP.rtcUserMemoryRead(100 - sizeof(RTCRBT), (uint32_t*)&RtcReboot, sizeof(RTCRBT)); // 0x280 if (RtcReboot.valid != RTC_MEM_VALID) { memset(&RtcReboot, 0, sizeof(RTCRBT)); RtcReboot.valid = RTC_MEM_VALID; diff --git a/sonoff/xdrv_99_debug.ino b/sonoff/xdrv_99_debug.ino index 3cd2e69c5d30..abd209b82688 100644 --- a/sonoff/xdrv_99_debug.ino +++ b/sonoff/xdrv_99_debug.ino @@ -35,20 +35,25 @@ * Debug commands \*********************************************************************************************/ -#define D_CMND_CFGDUMP "CfgDump" -#define D_CMND_CFGPOKE "CfgPoke" -#define D_CMND_CFGPEEK "CfgPeek" -#define D_CMND_CFGXOR "CfgXor" +#define D_CMND_CFGDUMP "CfgDump" +#define D_CMND_CFGPOKE "CfgPoke" +#define D_CMND_CFGPEEK "CfgPeek" +#define D_CMND_CFGSHOW "CfgShow" +#define D_CMND_CFGXOR "CfgXor" +#define D_CMND_CPUCHECK "CpuChk" #define D_CMND_EXCEPTION "Exception" -#define D_CMND_CPUCHECK "CpuChk" +#define D_CMND_FREEMEM "FreeMem" +#define D_CMND_RTCDUMP "RtcDump" +#define D_CMND_HELP "Help" -enum DebugCommands { CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGXOR, CMND_EXCEPTION, CMND_CPUCHECK }; -const char kDebugCommands[] PROGMEM = D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGXOR "|" D_CMND_EXCEPTION "|" D_CMND_CPUCHECK; +enum DebugCommands { CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR, CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_HELP }; +const char kDebugCommands[] PROGMEM = D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|" D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_HELP; uint32_t CPU_loops = 0; uint32_t CPU_last_millis = 0; uint32_t CPU_last_loop_time = 0; -uint8_t CPU_load_check = CPU_LOAD_CHECK; +uint8_t CPU_load_check = 0; +uint8_t CPU_show_freemem = 0; /*******************************************************************************************/ @@ -117,41 +122,6 @@ Decoding 14 results } } -/*******************************************************************************************/ - -void RtcSettingsDump() -{ - #define CFG_COLS 16 - - uint16_t idx; - uint16_t maxrow; - uint16_t row; - uint16_t col; - - uint8_t *buffer = (uint8_t *) &RtcSettings; - maxrow = ((sizeof(RTCMEM)+CFG_COLS)/CFG_COLS); - - for (row = 0; row < maxrow; row++) { - idx = row * CFG_COLS; - snprintf_P(log_data, sizeof(log_data), PSTR("%03X:"), idx); - for (col = 0; col < CFG_COLS; col++) { - if (!(col%4)) { - snprintf_P(log_data, sizeof(log_data), PSTR("%s "), log_data); - } - snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, buffer[idx + col]); - } - snprintf_P(log_data, sizeof(log_data), PSTR("%s |"), log_data); - for (col = 0; col < CFG_COLS; col++) { -// if (!(col%4)) { -// snprintf_P(log_data, sizeof(log_data), PSTR("%s "), log_data); -// } - snprintf_P(log_data, sizeof(log_data), PSTR("%s%c"), log_data, ((buffer[idx + col] > 0x20) && (buffer[idx + col] < 0x7F)) ? (char)buffer[idx + col] : ' '); - } - snprintf_P(log_data, sizeof(log_data), PSTR("%s|"), log_data); - AddLog(LOG_LEVEL_INFO); - } -} - #endif // DEBUG_THEO /*******************************************************************************************/ @@ -224,6 +194,68 @@ void DebugFreeMem() /*******************************************************************************************/ +void DebugRtcDump(char* parms) +{ + #define CFG_COLS 16 + + uint16_t idx; + uint16_t maxrow; + uint16_t row; + uint16_t col; + char *p; + + // |<--SDK data (256 bytes)-->|<--User data (512 bytes)-->| + // 000 - 0FF: SDK + // 000 - 01B: SDK rst_info + // 100 - 2FF: User + // 280 - 283: Tasmota RtcReboot (Offset 100 (x 4bytes) - sizeof(RTCRBT) (x 4bytes)) + // 290 - 2EB: Tasmota RtcSettings (Offset 100 (x 4bytes)) + + uint8_t buffer[768]; +// ESP.rtcUserMemoryRead(0, (uint32_t*)&buffer, sizeof(buffer)); + system_rtc_mem_read(0, (uint32_t*)&buffer, sizeof(buffer)); + + maxrow = ((sizeof(buffer)+CFG_COLS)/CFG_COLS); + + uint16_t srow = strtol(parms, &p, 16) / CFG_COLS; + uint16_t mrow = strtol(p, &p, 10); + +// snprintf_P(log_data, sizeof(log_data), PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow); +// AddLog(LOG_LEVEL_DEBUG); + + if (0 == mrow) { // Default only 8 lines + mrow = 8; + } + if (srow > maxrow) { + srow = maxrow - mrow; + } + if (mrow < (maxrow - srow)) { + maxrow = srow + mrow; + } + + for (row = srow; row < maxrow; row++) { + idx = row * CFG_COLS; + snprintf_P(log_data, sizeof(log_data), PSTR("%03X:"), idx); + for (col = 0; col < CFG_COLS; col++) { + if (!(col%4)) { + snprintf_P(log_data, sizeof(log_data), PSTR("%s "), log_data); + } + snprintf_P(log_data, sizeof(log_data), PSTR("%s %02X"), log_data, buffer[idx + col]); + } + snprintf_P(log_data, sizeof(log_data), PSTR("%s |"), log_data); + for (col = 0; col < CFG_COLS; col++) { +// if (!(col%4)) { +// snprintf_P(log_data, sizeof(log_data), PSTR("%s "), log_data); +// } + snprintf_P(log_data, sizeof(log_data), PSTR("%s%c"), log_data, ((buffer[idx + col] > 0x20) && (buffer[idx + col] < 0x7F)) ? (char)buffer[idx + col] : ' '); + } + snprintf_P(log_data, sizeof(log_data), PSTR("%s|"), log_data); + AddLog(LOG_LEVEL_INFO); + } +} + +/*******************************************************************************************/ + void DebugCfgDump(char* parms) { #define CFG_COLS 16 @@ -322,6 +354,53 @@ void DebugCfgPoke(char* parms) AddLog(LOG_LEVEL_INFO); } +void DebugCfgShow(uint8_t more) +{ + uint8_t *SetAddr; + SetAddr = (uint8_t *)&Settings; + + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: Hostname (%d) [%s]"), (uint8_t *)&Settings.hostname - SetAddr, sizeof(Settings.hostname)-1, Settings.hostname); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: SSids (%d) [%s], [%s]"), (uint8_t *)&Settings.sta_ssid - SetAddr, sizeof(Settings.sta_ssid[0])-1, Settings.sta_ssid[0], Settings.sta_ssid[1]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: Friendlynames (%d) [%s], [%s], [%s], [%s]"), (uint8_t *)&Settings.friendlyname - SetAddr, sizeof(Settings.friendlyname[0])-1, Settings.friendlyname[0], Settings.friendlyname[1], Settings.friendlyname[2], Settings.friendlyname[3]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: OTA Url (%d) [%s]"), (uint8_t *)&Settings.ota_url - SetAddr, sizeof(Settings.ota_url)-1, Settings.ota_url); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: StateText (%d) [%s], [%s], [%s], [%s]"), (uint8_t *)&Settings.state_text - SetAddr, sizeof(Settings.state_text[0])-1, Settings.state_text[0], Settings.state_text[1], Settings.state_text[2], Settings.state_text[3]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: Syslog Host (%d) [%s]"), (uint8_t *)&Settings.syslog_host - SetAddr, sizeof(Settings.syslog_host)-1, Settings.syslog_host); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: NTP Servers (%d) [%s], [%s], [%s]"), (uint8_t *)&Settings.ntp_server - SetAddr, sizeof(Settings.ntp_server[0])-1, Settings.ntp_server[0], Settings.ntp_server[1], Settings.ntp_server[2]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT Host (%d) [%s]"), (uint8_t *)&Settings.mqtt_host - SetAddr, sizeof(Settings.mqtt_host)-1, Settings.mqtt_host); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT Client (%d) [%s]"), (uint8_t *)&Settings.mqtt_client - SetAddr, sizeof(Settings.mqtt_client)-1, Settings.mqtt_client); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT User (%d) [%s]"), (uint8_t *)&Settings.mqtt_user - SetAddr, sizeof(Settings.mqtt_user)-1, Settings.mqtt_user); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT FullTopic (%d) [%s]"), (uint8_t *)&Settings.mqtt_fulltopic - SetAddr, sizeof(Settings.mqtt_fulltopic)-1, Settings.mqtt_fulltopic); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT Topic (%d) [%s]"), (uint8_t *)&Settings.mqtt_topic - SetAddr, sizeof(Settings.mqtt_topic)-1, Settings.mqtt_topic); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT GroupTopic (%d) [%s]"), (uint8_t *)&Settings.mqtt_grptopic - SetAddr, sizeof(Settings.mqtt_grptopic)-1, Settings.mqtt_grptopic); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT ButtonTopic (%d) [%s]"), (uint8_t *)&Settings.button_topic - SetAddr, sizeof(Settings.button_topic)-1, Settings.button_topic); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT SwitchTopic (%d) [%s]"), (uint8_t *)&Settings.switch_topic - SetAddr, sizeof(Settings.switch_topic)-1, Settings.switch_topic); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT Prefixes (%d) [%s], [%s], [%s]"), (uint8_t *)&Settings.mqtt_prefix - SetAddr, sizeof(Settings.mqtt_prefix[0])-1, Settings.mqtt_prefix[0], Settings.mqtt_prefix[1], Settings.mqtt_prefix[2]); + AddLog(LOG_LEVEL_INFO); + if (17 == more) { + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: AP Passwords (%d) [%s], [%s]"), (uint8_t *)&Settings.sta_pwd - SetAddr, sizeof(Settings.sta_pwd[0])-1, Settings.sta_pwd[0], Settings.sta_pwd[1]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: MQTT Password (%d) [%s]"), (uint8_t *)&Settings.mqtt_pwd - SetAddr, sizeof(Settings.mqtt_pwd)-1, Settings.mqtt_pwd); + AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR("%03X: Web Password (%d) [%s]"), (uint8_t *)&Settings.web_password - SetAddr, sizeof(Settings.web_password)-1, Settings.web_password); + AddLog(LOG_LEVEL_INFO); + } +} + /*******************************************************************************************/ boolean DebugCommand() @@ -333,6 +412,15 @@ boolean DebugCommand() if (-1 == command_code) { serviced = false; // Unknown command } + else if (CMND_HELP == command_code) { + snprintf_P(log_data, sizeof(log_data), kDebugCommands); + AddLog(LOG_LEVEL_INFO); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); + } + else if (CMND_RTCDUMP == command_code) { + DebugRtcDump(XdrvMailbox.data); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); + } else if (CMND_CFGDUMP == command_code) { DebugCfgDump(XdrvMailbox.data); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); @@ -345,6 +433,10 @@ boolean DebugCommand() DebugCfgPoke(XdrvMailbox.data); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); } + else if (CMND_CFGSHOW == command_code) { + DebugCfgShow(XdrvMailbox.payload); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); + } #ifdef USE_WEBSERVER else if (CMND_CFGXOR == command_code) { if (XdrvMailbox.data_len > 0) { @@ -366,6 +458,12 @@ boolean DebugCommand() } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_load_check); } + else if (CMND_FREEMEM == command_code) { + if (XdrvMailbox.data_len > 0) { + CPU_show_freemem = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_show_freemem); + } else serviced = false; // Unknown command return serviced; @@ -392,7 +490,7 @@ boolean Xdrv99(byte function) result = DebugCommand(); break; case FUNC_FREE_MEM: - DebugFreeMem(); + if (CPU_show_freemem) { DebugFreeMem(); } break; } return result; diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index 3fa12da2699e..abf11b71faf0 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -56,7 +56,7 @@ #define MCP_FREQUENCY_GAIN_BASE 0x00AE #define MCP_FREQUENCY_LEN 4 -typedef struct mcp_calibration_registers_type { +typedef struct mcp_cal_registers_type { uint16_t gain_current_rms; uint16_t gain_voltage_rms; uint16_t gain_active_power; @@ -77,24 +77,17 @@ typedef struct mcp_calibration_registers_type { uint32_t calibration_active_power; uint32_t calibration_reactive_power; uint16_t accumulation_interval; -} mcp_calibration_registers_type; -mcp_calibration_registers_type mcp_calibration_registers; +} mcp_cal_registers_type; typedef struct mcp_calibration_setpoint_type { uint32_t calibration_current; uint16_t calibration_voltage; uint32_t calibration_active_power; - uint32_t calibration_reactive_power; +// uint32_t calibration_reactive_power; uint16_t line_frequency_ref; } mcp_calibration_setpoint_type; mcp_calibration_setpoint_type mcp_calibration_setpoint; -typedef struct mcp_frequency_registers_type { - uint16_t line_frequency_ref; - uint16_t gain_line_frequency; -} mcp_frequency_registers_type; -mcp_frequency_registers_type mcp_frequency_registers; - typedef struct mcp_output_registers_type { uint32_t current_rms; uint16_t voltage_rms; @@ -103,15 +96,11 @@ typedef struct mcp_output_registers_type { uint32_t apparent_power; sint16_t power_factor; uint16_t line_frequency; - uint16_t thermistor_voltage; - uint16_t event_flag; - uint16_t system_status; } mcp_output_registers_type; mcp_output_registers_type mcp_output_registers; uint32_t mcp_system_configuration = 0x03000000; -uint16_t mcp_address = 0; -uint8_t mcp_single_wire_active = 0; +uint8_t mcp_address = 0; uint8_t mcp_calibration_active = 0; uint8_t mcp_init = 0; uint8_t mcp_timeout = 0; @@ -128,12 +117,8 @@ uint8_t McpChecksum(uint8_t *data) uint8_t offset = 0; uint8_t len = data[1] -1; - if (MCP_SINGLE_WIRE == data[0]) { - offset = 3; - len = 15; - } for (byte i = offset; i < len; i++) { checksum += data[i]; } - return (MCP_SINGLE_WIRE == data[0]) ? ~checksum : checksum; + return checksum; } unsigned long McpExtractInt(char *data, uint8_t offset, uint8_t size) @@ -170,19 +155,83 @@ void McpSend(uint8_t *data) } } -uint32_t McpGetRange(uint8_t shift) +void McpResetSetpoints(void) +{ + memset(&mcp_calibration_setpoint, 0, sizeof(mcp_calibration_setpoint)); +} + +/********************************************************************************************/ + +void McpGetAddress(void) +{ + uint8_t data[] = { MCP_START_FRAME, 7, MCP_SET_ADDRESS, 0x00, 0x26, MCP_READ_16, 0x00 }; + + McpSend(data); +} + +void McpAddressReceive(void) { - return (mcp_calibration_registers.range >> shift) & 0xFF; + // 06 05 004D 58 + mcp_address = serial_in_buffer[3]; } -void McpSetRange(uint8_t shift, uint32_t range) +/********************************************************************************************/ + +void McpGetCalibration(void) { - uint32_t old_range = McpGetRange(shift); - mcp_calibration_registers.range = mcp_calibration_registers.range ^ (old_range << shift); - mcp_calibration_registers.range = mcp_calibration_registers.range | (range << shift); + if (mcp_calibration_active) { return; } + mcp_calibration_active = 4; + + uint8_t data[] = { MCP_START_FRAME, 8, MCP_SET_ADDRESS, (MCP_CALIBRATION_BASE >> 8) & 0xFF, MCP_CALIBRATION_BASE & 0xFF, MCP_READ, MCP_CALIBRATION_LEN, 0x00 }; + + McpSend(data); } -bool McpCalibrationCalc(uint8_t range_shift) +void McpParseCalibration(void) +{ + bool action = false; + mcp_cal_registers_type cal_registers; + + // 06 37 C882 B6AD 0781 9273 06000000 00000000 00000000 0000 D3FF 0300 00000003 9204 120C1300 204E0000 9808 E0AB0000 D9940000 0200 24 + cal_registers.gain_current_rms = McpExtractInt(serial_in_buffer, 2, 2); + cal_registers.gain_voltage_rms = McpExtractInt(serial_in_buffer, 4, 2); + cal_registers.gain_active_power = McpExtractInt(serial_in_buffer, 6, 2); + cal_registers.gain_reactive_power = McpExtractInt(serial_in_buffer, 8, 2); + cal_registers.offset_current_rms = McpExtractInt(serial_in_buffer, 10, 4); + cal_registers.offset_active_power = McpExtractInt(serial_in_buffer, 14, 4); + cal_registers.offset_reactive_power = McpExtractInt(serial_in_buffer, 18, 4); + cal_registers.dc_offset_current = McpExtractInt(serial_in_buffer, 22, 2); + cal_registers.phase_compensation = McpExtractInt(serial_in_buffer, 24, 2); + cal_registers.apparent_power_divisor = McpExtractInt(serial_in_buffer, 26, 2); + + cal_registers.system_configuration = McpExtractInt(serial_in_buffer, 28, 4); + cal_registers.dio_configuration = McpExtractInt(serial_in_buffer, 32, 2); + cal_registers.range = McpExtractInt(serial_in_buffer, 34, 4); + + cal_registers.calibration_current = McpExtractInt(serial_in_buffer, 38, 4); + cal_registers.calibration_voltage = McpExtractInt(serial_in_buffer, 42, 2); + cal_registers.calibration_active_power = McpExtractInt(serial_in_buffer, 44, 4); + cal_registers.calibration_reactive_power = McpExtractInt(serial_in_buffer, 48, 4); + cal_registers.accumulation_interval = McpExtractInt(serial_in_buffer, 52, 2); + + if (mcp_calibration_setpoint.calibration_active_power) { + cal_registers.calibration_active_power = mcp_calibration_setpoint.calibration_active_power; + if (McpCalibrationCalc(&cal_registers, 16)) { action = true; } + } + if (mcp_calibration_setpoint.calibration_voltage) { + cal_registers.calibration_voltage = mcp_calibration_setpoint.calibration_voltage; + if (McpCalibrationCalc(&cal_registers, 0)) { action = true; } + } + if (mcp_calibration_setpoint.calibration_current) { + cal_registers.calibration_current = mcp_calibration_setpoint.calibration_current; + if (McpCalibrationCalc(&cal_registers, 8)) { action = true; } + } + mcp_timeout = 0; + if (action) { McpSetCalibration(&cal_registers); } + McpResetSetpoints(); +} + +bool McpCalibrationCalc(struct mcp_cal_registers_type *cal_registers, uint8_t range_shift) { uint32_t measured; uint32_t expected; @@ -191,16 +240,16 @@ bool McpCalibrationCalc(uint8_t range_shift) if (range_shift == 0) { measured = mcp_output_registers.voltage_rms; - expected = mcp_calibration_registers.calibration_voltage; - gain = &(mcp_calibration_registers.gain_voltage_rms); + expected = cal_registers->calibration_voltage; + gain = &(cal_registers->gain_voltage_rms); } else if (range_shift == 8) { measured = mcp_output_registers.current_rms; - expected = mcp_calibration_registers.calibration_current; - gain = &(mcp_calibration_registers.gain_current_rms); + expected = cal_registers->calibration_current; + gain = &(cal_registers->gain_current_rms); } else if (range_shift == 16) { measured = mcp_output_registers.active_power; - expected = mcp_calibration_registers.calibration_active_power; - gain = &(mcp_calibration_registers.gain_active_power); + expected = cal_registers->calibration_active_power; + gain = &(cal_registers->gain_active_power); } else { return false; } @@ -209,7 +258,7 @@ bool McpCalibrationCalc(uint8_t range_shift) return false; } - uint32_t range = McpGetRange(range_shift); + uint32_t range = (cal_registers->range >> range_shift) & 0xFF; calc: new_gain = (*gain) * expected / measured; @@ -229,104 +278,50 @@ calc: } *gain = new_gain; - McpSetRange(range_shift, range); + uint32_t old_range = (cal_registers->range >> range_shift) & 0xFF; + cal_registers->range = cal_registers->range ^ (old_range << range_shift); + cal_registers->range = cal_registers->range | (range << range_shift); return true; } - -void McpCalibrationReactivePower() -{ - mcp_calibration_registers.gain_reactive_power = mcp_calibration_registers.gain_reactive_power * mcp_calibration_registers.calibration_reactive_power / mcp_output_registers.reactive_power; -} - -void McpCalibrationLineFrequency() -{ - if ((0xFFFF == mcp_output_registers.line_frequency) || (0 == mcp_frequency_registers.gain_line_frequency)) { // Reset values to 50Hz - mcp_output_registers.line_frequency = 50000; - mcp_frequency_registers.gain_line_frequency = 0x8000; - } - mcp_frequency_registers.gain_line_frequency = mcp_frequency_registers.gain_line_frequency * mcp_frequency_registers.line_frequency_ref / mcp_output_registers.line_frequency; -} - -void McpResetSetpoints() -{ - mcp_calibration_setpoint.calibration_active_power = 0; - mcp_calibration_setpoint.calibration_voltage = 0; - mcp_calibration_setpoint.calibration_current = 0; - mcp_calibration_setpoint.calibration_reactive_power = 0; - mcp_calibration_setpoint.line_frequency_ref = 0; -} - -/********************************************************************************************/ - -void McpGetAddress() +/* +void McpCalibrationReactivePower(void) { - // A5 07 41 00 26 52 65 - uint8_t data[7]; - - data[1] = sizeof(data); - data[2] = MCP_SET_ADDRESS; // Set address pointer - data[3] = 0x00; // address - data[4] = 0x26; // address - data[5] = MCP_READ_16; // Read 2 bytes - - McpSend(data); - - // Receives 06 05 004D 58 + cal_registers.gain_reactive_power = cal_registers.gain_reactive_power * cal_registers.calibration_reactive_power / mcp_output_registers.reactive_power; } - -void McpGetCalibration() -{ - if (mcp_calibration_active) { return; } - mcp_calibration_active = 4; - - // A5 08 41 00 28 4E 34 98 - uint8_t data[8]; - - data[1] = sizeof(data); - data[2] = MCP_SET_ADDRESS; // Set address pointer - data[3] = (MCP_CALIBRATION_BASE >> 8) & 0xFF; // address - data[4] = (MCP_CALIBRATION_BASE >> 0) & 0xFF; // address - data[5] = MCP_READ; // Read N bytes - data[6] = MCP_CALIBRATION_LEN; - - McpSend(data); - - // Receives 06 37 C882 B6AD 0781 9273 06000000 00000000 00000000 0000 D3FF 0300 00000003 9204 120C1300 204E0000 9808 E0AB0000 D9940000 0200 24 -} - -void McpSetCalibration() +*/ +void McpSetCalibration(struct mcp_cal_registers_type *cal_registers) { uint8_t data[7 + MCP_CALIBRATION_LEN + 2 + 1]; data[1] = sizeof(data); - data[2] = MCP_SET_ADDRESS; // Set address pointer - data[3] = (MCP_CALIBRATION_BASE >> 8) & 0xFF; // address - data[4] = (MCP_CALIBRATION_BASE >> 0) & 0xFF; // address + data[2] = MCP_SET_ADDRESS; // Set address pointer + data[3] = (MCP_CALIBRATION_BASE >> 8) & 0xFF; // address + data[4] = (MCP_CALIBRATION_BASE >> 0) & 0xFF; // address - data[5] = MCP_WRITE; // Write N bytes + data[5] = MCP_WRITE; // Write N bytes data[6] = MCP_CALIBRATION_LEN; - McpSetInt(mcp_calibration_registers.gain_current_rms, data, 0+7, 2); - McpSetInt(mcp_calibration_registers.gain_voltage_rms, data, 2+7, 2); - McpSetInt(mcp_calibration_registers.gain_active_power, data, 4+7, 2); - McpSetInt(mcp_calibration_registers.gain_reactive_power, data, 6+7, 2); - McpSetInt(mcp_calibration_registers.offset_current_rms, data, 8+7, 4); - McpSetInt(mcp_calibration_registers.offset_active_power, data, 12+7, 4); - McpSetInt(mcp_calibration_registers.offset_reactive_power, data, 16+7, 4); - McpSetInt(mcp_calibration_registers.dc_offset_current, data, 20+7, 2); - McpSetInt(mcp_calibration_registers.phase_compensation, data, 22+7, 2); - McpSetInt(mcp_calibration_registers.apparent_power_divisor, data, 24+7, 2); - - McpSetInt(mcp_calibration_registers.system_configuration, data, 26+7, 4); - McpSetInt(mcp_calibration_registers.dio_configuration, data, 30+7, 2); - McpSetInt(mcp_calibration_registers.range, data, 32+7, 4); - - McpSetInt(mcp_calibration_registers.calibration_current, data, 36+7, 4); - McpSetInt(mcp_calibration_registers.calibration_voltage, data, 40+7, 2); - McpSetInt(mcp_calibration_registers.calibration_active_power, data, 42+7, 4); - McpSetInt(mcp_calibration_registers.calibration_reactive_power, data, 46+7, 4); - McpSetInt(mcp_calibration_registers.accumulation_interval, data, 50+7, 2); + McpSetInt(cal_registers->gain_current_rms, data, 0+7, 2); + McpSetInt(cal_registers->gain_voltage_rms, data, 2+7, 2); + McpSetInt(cal_registers->gain_active_power, data, 4+7, 2); + McpSetInt(cal_registers->gain_reactive_power, data, 6+7, 2); + McpSetInt(cal_registers->offset_current_rms, data, 8+7, 4); + McpSetInt(cal_registers->offset_active_power, data, 12+7, 4); + McpSetInt(cal_registers->offset_reactive_power, data, 16+7, 4); + McpSetInt(cal_registers->dc_offset_current, data, 20+7, 2); + McpSetInt(cal_registers->phase_compensation, data, 22+7, 2); + McpSetInt(cal_registers->apparent_power_divisor, data, 24+7, 2); + + McpSetInt(cal_registers->system_configuration, data, 26+7, 4); + McpSetInt(cal_registers->dio_configuration, data, 30+7, 2); + McpSetInt(cal_registers->range, data, 32+7, 4); + + McpSetInt(cal_registers->calibration_current, data, 36+7, 4); + McpSetInt(cal_registers->calibration_voltage, data, 40+7, 2); + McpSetInt(cal_registers->calibration_active_power, data, 42+7, 4); + McpSetInt(cal_registers->calibration_reactive_power, data, 46+7, 4); + McpSetInt(cal_registers->accumulation_interval, data, 50+7, 2); data[MCP_CALIBRATION_LEN+7] = MCP_SAVE_REGISTERS; // Save registers to flash data[MCP_CALIBRATION_LEN+8] = mcp_address; // Device address @@ -334,187 +329,123 @@ void McpSetCalibration() McpSend(data); } -void McpGetFrequency() +/********************************************************************************************/ + +void McpGetFrequency(void) { if (mcp_calibration_active) { return; } mcp_calibration_active = 4; - // A5 0B 41 00 94 52 41 00 AE 52 18 - uint8_t data[11]; + uint8_t data[] = { MCP_START_FRAME, 11, MCP_SET_ADDRESS, (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF, MCP_FREQUENCY_REF_BASE & 0xFF, MCP_READ_16, + MCP_SET_ADDRESS, (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF, MCP_FREQUENCY_GAIN_BASE & 0xFF, MCP_READ_16, 0x00 }; - data[1] = sizeof(data); - data[2] = MCP_SET_ADDRESS; // Set address pointer - data[3] = (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF; // address - data[4] = (MCP_FREQUENCY_REF_BASE >> 0) & 0xFF; // address + McpSend(data); +} - data[5] = MCP_READ_16; // Read register +void McpParseFrequency(void) +{ + // 06 07 C350 8000 A0 + uint16_t line_frequency_ref = serial_in_buffer[2] * 256 + serial_in_buffer[3]; + uint16_t gain_line_frequency = serial_in_buffer[4] * 256 + serial_in_buffer[5]; - data[6] = MCP_SET_ADDRESS; // Set address pointer - data[7] = (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF; // address - data[8] = (MCP_FREQUENCY_GAIN_BASE >> 0) & 0xFF; // address + if (mcp_calibration_setpoint.line_frequency_ref) { + line_frequency_ref = mcp_calibration_setpoint.line_frequency_ref; - data[9] = MCP_READ_16; // Read register + if ((0xFFFF == mcp_output_registers.line_frequency) || (0 == gain_line_frequency)) { // Reset values to 50Hz + mcp_output_registers.line_frequency = 50000; + gain_line_frequency = 0x8000; + } + gain_line_frequency = gain_line_frequency * line_frequency_ref / mcp_output_registers.line_frequency; - McpSend(data); + mcp_timeout = 0; + McpSetFrequency(line_frequency_ref, gain_line_frequency); + } + McpResetSetpoints(); } -void McpSetFrequency() +void McpSetFrequency(uint16_t line_frequency_ref, uint16_t gain_line_frequency) { // A5 11 41 00 94 57 C3 B4 41 00 AE 57 7E 46 53 4D 03 uint8_t data[17]; data[ 1] = sizeof(data); - data[ 2] = MCP_SET_ADDRESS; // Set address pointer + data[ 2] = MCP_SET_ADDRESS; // Set address pointer data[ 3] = (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF; // address data[ 4] = (MCP_FREQUENCY_REF_BASE >> 0) & 0xFF; // address - data[ 5] = MCP_WRITE_16; // Write register - data[ 6] = (mcp_frequency_registers.line_frequency_ref >> 8) & 0xFF; // line_frequency_ref high - data[ 7] = (mcp_frequency_registers.line_frequency_ref >> 0) & 0xFF; // line_frequency_ref low + data[ 5] = MCP_WRITE_16; // Write register + data[ 6] = (line_frequency_ref >> 8) & 0xFF; // line_frequency_ref high + data[ 7] = (line_frequency_ref >> 0) & 0xFF; // line_frequency_ref low - data[ 8] = MCP_SET_ADDRESS; // Set address pointer - data[ 9] = (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF; // address - data[10] = (MCP_FREQUENCY_GAIN_BASE >> 0) & 0xFF; // address + data[ 8] = MCP_SET_ADDRESS; // Set address pointer + data[ 9] = (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF; // address + data[10] = (MCP_FREQUENCY_GAIN_BASE >> 0) & 0xFF; // address - data[11] = MCP_WRITE_16; // Write register - data[12] = (mcp_frequency_registers.gain_line_frequency >> 8) & 0xFF; // gain_line_frequency high - data[13] = (mcp_frequency_registers.gain_line_frequency >> 0) & 0xFF; // gain_line_frequency low + data[11] = MCP_WRITE_16; // Write register + data[12] = (gain_line_frequency >> 8) & 0xFF; // gain_line_frequency high + data[13] = (gain_line_frequency >> 0) & 0xFF; // gain_line_frequency low - data[14] = MCP_SAVE_REGISTERS; // Save registers to flash - data[15] = mcp_address; // Device address + data[14] = MCP_SAVE_REGISTERS; // Save registers to flash + data[15] = mcp_address; // Device address McpSend(data); } +/********************************************************************************************/ + void McpSetSystemConfiguration(uint16 interval) { // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A uint8_t data[17]; data[ 1] = sizeof(data); - data[ 2] = MCP_SET_ADDRESS; // Set address pointer - data[ 3] = 0x00; // address - data[ 4] = 0x42; // address - data[ 5] = MCP_WRITE_32; // Write 4 bytes - data[ 6] = (mcp_system_configuration >> 24) & 0xFF; // system_configuration - data[ 7] = (mcp_system_configuration >> 16) & 0xFF; // system_configuration - data[ 8] = (mcp_system_configuration >> 8) & 0xFF; // system_configuration - data[ 9] = (mcp_system_configuration >> 0) & 0xFF; // system_configuration - data[10] = MCP_SET_ADDRESS; // Set address pointer - data[11] = 0x00; // address - data[12] = 0x5A; // address - data[13] = MCP_WRITE_16; // Write 2 bytes - data[14] = (interval >> 8) & 0xFF; // interval - data[15] = (interval >> 0) & 0xFF; // interval + data[ 2] = MCP_SET_ADDRESS; // Set address pointer + data[ 3] = 0x00; // address + data[ 4] = 0x42; // address + data[ 5] = MCP_WRITE_32; // Write 4 bytes + data[ 6] = (mcp_system_configuration >> 24) & 0xFF; // system_configuration + data[ 7] = (mcp_system_configuration >> 16) & 0xFF; // system_configuration + data[ 8] = (mcp_system_configuration >> 8) & 0xFF; // system_configuration + data[ 9] = (mcp_system_configuration >> 0) & 0xFF; // system_configuration + data[10] = MCP_SET_ADDRESS; // Set address pointer + data[11] = 0x00; // address + data[12] = 0x5A; // address + data[13] = MCP_WRITE_16; // Write 2 bytes + data[14] = (interval >> 8) & 0xFF; // interval + data[15] = (interval >> 0) & 0xFF; // interval McpSend(data); } -void McpSingleWireStart() -{ - if ((mcp_system_configuration & (1 << 8)) != 0) { return; } - mcp_system_configuration = mcp_system_configuration | (1 << 8); - McpSetSystemConfiguration(6); // 64 - mcp_single_wire_active = 1; -} - void McpSingleWireStop(uint8_t force) { if (!force && ((mcp_system_configuration & (1 << 8)) == 0)) { return; } mcp_system_configuration = mcp_system_configuration & (~(1 << 8)); McpSetSystemConfiguration(2); // 4 - mcp_single_wire_active = 0; } /********************************************************************************************/ -void McpAddressReceive() -{ - // 06 05 004D 58 - mcp_address = serial_in_buffer[2] * 256 + serial_in_buffer[3]; -} - -void McpParseCalibration() -{ - bool action = false; - - // 06 37 C882 B6AD 0781 9273 06000000 00000000 00000000 0000 D3FF 0300 00000003 9204 120C1300 204E0000 9808 E0AB0000 D9940000 0200 24 - mcp_calibration_registers.gain_current_rms = McpExtractInt(serial_in_buffer, 2, 2); - mcp_calibration_registers.gain_voltage_rms = McpExtractInt(serial_in_buffer, 4, 2); - mcp_calibration_registers.gain_active_power = McpExtractInt(serial_in_buffer, 6, 2); - mcp_calibration_registers.gain_reactive_power = McpExtractInt(serial_in_buffer, 8, 2); - mcp_calibration_registers.offset_current_rms = McpExtractInt(serial_in_buffer, 10, 4); - mcp_calibration_registers.offset_active_power = McpExtractInt(serial_in_buffer, 14, 4); - mcp_calibration_registers.offset_reactive_power = McpExtractInt(serial_in_buffer, 18, 4); - mcp_calibration_registers.dc_offset_current = McpExtractInt(serial_in_buffer, 22, 2); - mcp_calibration_registers.phase_compensation = McpExtractInt(serial_in_buffer, 24, 2); - mcp_calibration_registers.apparent_power_divisor = McpExtractInt(serial_in_buffer, 26, 2); - - mcp_calibration_registers.system_configuration = McpExtractInt(serial_in_buffer, 28, 4); - mcp_calibration_registers.dio_configuration = McpExtractInt(serial_in_buffer, 32, 2); - mcp_calibration_registers.range = McpExtractInt(serial_in_buffer, 34, 4); - - mcp_calibration_registers.calibration_current = McpExtractInt(serial_in_buffer, 38, 4); - mcp_calibration_registers.calibration_voltage = McpExtractInt(serial_in_buffer, 42, 2); - mcp_calibration_registers.calibration_active_power = McpExtractInt(serial_in_buffer, 44, 4); - mcp_calibration_registers.calibration_reactive_power = McpExtractInt(serial_in_buffer, 48, 4); - mcp_calibration_registers.accumulation_interval = McpExtractInt(serial_in_buffer, 52, 2); - - if (mcp_calibration_setpoint.calibration_active_power) { - mcp_calibration_registers.calibration_active_power = mcp_calibration_setpoint.calibration_active_power; - if (McpCalibrationCalc(16)) { action = true; } - } - if (mcp_calibration_setpoint.calibration_voltage) { - mcp_calibration_registers.calibration_voltage = mcp_calibration_setpoint.calibration_voltage; - if (McpCalibrationCalc(0)) { action = true; } - } - if (mcp_calibration_setpoint.calibration_current) { - mcp_calibration_registers.calibration_current = mcp_calibration_setpoint.calibration_current; - if (McpCalibrationCalc(8)) { action = true; } - } - mcp_timeout = 0; - if (action) { McpSetCalibration(); } - McpResetSetpoints(); -} - -void McpParseFrequency() +void McpGetData(void) { - // 06 07 C350 8000 A0 - mcp_frequency_registers.line_frequency_ref = serial_in_buffer[2] * 256 + serial_in_buffer[3]; - mcp_frequency_registers.gain_line_frequency = serial_in_buffer[4] * 256 + serial_in_buffer[5]; + uint8_t data[] = { MCP_START_FRAME, 8, MCP_SET_ADDRESS, 0x00, 0x04, MCP_READ, 22, 0x00 }; - if (mcp_calibration_setpoint.line_frequency_ref) { - mcp_frequency_registers.line_frequency_ref = mcp_calibration_setpoint.line_frequency_ref; - McpCalibrationLineFrequency(); - mcp_timeout = 0; - McpSetFrequency(); - } - McpResetSetpoints(); + McpSend(data); } -void McpParseData(uint8_t single_wire) +void McpParseData(void) { - if (single_wire) { - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - // AB CD EF 51 06 00 00 B8 08 FC 0D 00 00 0A C4 11 - // Header-- Current---- Volt- Power------ Freq- Ck - - mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 3, 4); - mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 7, 2); - mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 9, 4); - mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 13, 2); - } else { - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - // 06 19 61 06 00 00 FE 08 9B 0E 00 00 0B 00 00 00 97 0E 00 00 FF 7F 0C C6 35 - // 06 19 CE 18 00 00 F2 08 3A 38 00 00 66 00 00 00 93 38 00 00 36 7F 9A C6 B7 - // Ak Ln Current---- Volt- ActivePower ReActivePow ApparentPow Factr Frequ Ck - - mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 2, 4); - mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 6, 2); - mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 8, 4); - mcp_output_registers.reactive_power = McpExtractInt(serial_in_buffer, 12, 4); - mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 22, 2); - } + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 + // 06 19 61 06 00 00 FE 08 9B 0E 00 00 0B 00 00 00 97 0E 00 00 FF 7F 0C C6 35 + // 06 19 CE 18 00 00 F2 08 3A 38 00 00 66 00 00 00 93 38 00 00 36 7F 9A C6 B7 + // Ak Ln Current---- Volt- ActivePower ReActivePow ApparentPow Factr Frequ Ck + + mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 2, 4); + mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 6, 2); + mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 8, 4); +// mcp_output_registers.reactive_power = McpExtractInt(serial_in_buffer, 12, 4); +// mcp_output_registers.power_factor = McpExtractInt(serial_in_buffer, 20, 2); + mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 22, 2); if (energy_power_on) { // Powered on energy_frequency = (float)mcp_output_registers.line_frequency / 1000; @@ -533,7 +464,9 @@ void McpParseData(uint8_t single_wire) } } -bool McpSerialInput() +/********************************************************************************************/ + +bool McpSerialInput(void) { serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; unsigned long start = millis(); @@ -564,7 +497,7 @@ bool McpSerialInput() AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); } else { if (5 == serial_in_buffer[1]) { McpAddressReceive(); } - if (25 == serial_in_buffer[1]) { McpParseData(0); } + if (25 == serial_in_buffer[1]) { McpParseData(); } if (MCP_CALIBRATION_LEN + 3 == serial_in_buffer[1]) { McpParseCalibration(); } if (MCP_FREQUENCY_LEN + 3 == serial_in_buffer[1]) { McpParseFrequency(); } } @@ -573,15 +506,6 @@ bool McpSerialInput() mcp_timeout = 0; } else if (MCP_SINGLE_WIRE == serial_in_buffer[0]) { - if (serial_in_byte_counter == 16) { - - if (McpChecksum((uint8_t *)serial_in_buffer) != serial_in_buffer[serial_in_byte_counter -1]) { - AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: " D_CHECKSUM_FAILURE)); - } else { - McpParseData(1); - } - - } mcp_timeout = 0; } return 1; @@ -589,10 +513,8 @@ bool McpSerialInput() /********************************************************************************************/ -void McpEverySecond() +void McpEverySecond(void) { - uint8_t get_state[] = { 0xA5, 0x08, 0x41, 0x00, 0x04, 0x4E, 0x16, 0x00 }; - if (mcp_output_registers.active_power) { energy_kWhtoday_delta += ((mcp_output_registers.active_power * 10) / 36); EnergyUpdateToday(); @@ -611,18 +533,18 @@ void McpEverySecond() else if (!mcp_address) { McpGetAddress(); } - else if (!mcp_single_wire_active) { - McpSend(get_state); + else { + McpGetData(); } } -void McpSnsInit() +void McpSnsInit(void) { SetSeriallog(LOG_LEVEL_NONE); // Free serial interface from logging interference digitalWrite(15, 1); // GPIO15 - MCP enable } -void McpDrvInit() +void McpDrvInit(void) { if (!energy_flg) { if (SHELLY2 == Settings.module) { @@ -638,7 +560,7 @@ void McpDrvInit() } } -boolean McpCommand() +boolean McpCommand(void) { boolean serviced = true; unsigned long value = 0; From ecd3175257360ac13c46042000c1297acd385242 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 24 Sep 2018 16:16:14 -0300 Subject: [PATCH 139/798] Prevent Command NtpServer to restart Tasmota #3890 --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 91c1fbb9b41e..2e64b904609b 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1043,7 +1043,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) for (i = 0; i < strlen(Settings.ntp_server[index -1]); i++) { if (Settings.ntp_server[index -1][i] == ',') Settings.ntp_server[index -1][i] = '.'; } - restart_flag = 2; +// restart_flag = 2; } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.ntp_server[index -1]); } From 2029440fae58b204e1d23c50e6b74fbb1383388e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Sep 2018 11:35:37 +0200 Subject: [PATCH 140/798] 6.2.1.7 Fix NTPserver change 6.2.1.7 20180925 * Remove restart after ntpserver change and force NTP re-sync (#3890) * Release full Shelly2 support --- sonoff/_changelog.ino | 6 +- sonoff/sonoff.ino | 3 +- sonoff/sonoff_version.h | 2 +- sonoff/xnrg_04_mcp39f501.ino | 213 ++++++++++++++++++----------------- 4 files changed, 116 insertions(+), 108 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b7988c69c1e5..5aa6e9e13763 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,8 @@ -/* 6.2.1.6 20180922 +/* 6.2.1.7 20180925 + * Remove restart after ntpserver change and force NTP re-sync (#3890) + * Release full Shelly2 support + * + * 6.2.1.6 20180922 * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet * Allow decimals as input to commands PowerSet, VoltageSet and CurrentSet * Add support for PCA9685 12bit 16pin hardware PWM driver (#3866) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 2e64b904609b..f0619f36230f 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1043,7 +1043,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) for (i = 0; i < strlen(Settings.ntp_server[index -1]); i++) { if (Settings.ntp_server[index -1][i] == ',') Settings.ntp_server[index -1][i] = '.'; } -// restart_flag = 2; +// restart_flag = 2; // Issue #3890 + ntp_force_sync = 1; } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.ntp_server[index -1]); } diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 228a48d92459..16c5547834b8 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020106 +#define VERSION 0x06020107 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index abf11b71faf0..f2ce321bc5d0 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -29,6 +29,13 @@ #define XNRG_04 4 #define MCP_TIMEOUT 4 +#define MCP_CALIBRATION_TIMEOUT 2 + +#define MCP_CALIBRATE_POWER 0x001 +#define MCP_CALIBRATE_VOLTAGE 0x002 +#define MCP_CALIBRATE_CURRENT 0x004 +#define MCP_CALIBRATE_FREQUENCY 0x008 +#define MCP_SINGLE_WIRE_FLAG 0x100 #define MCP_START_FRAME 0xA5 #define MCP_ACK_FRAME 0x06 @@ -79,32 +86,20 @@ typedef struct mcp_cal_registers_type { uint16_t accumulation_interval; } mcp_cal_registers_type; -typedef struct mcp_calibration_setpoint_type { - uint32_t calibration_current; - uint16_t calibration_voltage; - uint32_t calibration_active_power; -// uint32_t calibration_reactive_power; - uint16_t line_frequency_ref; -} mcp_calibration_setpoint_type; -mcp_calibration_setpoint_type mcp_calibration_setpoint; - -typedef struct mcp_output_registers_type { - uint32_t current_rms; - uint16_t voltage_rms; - uint32_t active_power; - uint32_t reactive_power; - uint32_t apparent_power; - sint16_t power_factor; - uint16_t line_frequency; -} mcp_output_registers_type; -mcp_output_registers_type mcp_output_registers; - +unsigned long mcp_kWhcounter = 0; uint32_t mcp_system_configuration = 0x03000000; +uint32_t mcp_active_power; +//uint32_t mcp_reactive_power; +//uint32_t mcp_apparent_power; +uint32_t mcp_current_rms; +uint16_t mcp_voltage_rms; +uint16_t mcp_line_frequency; +//sint16_t mcp_power_factor; uint8_t mcp_address = 0; uint8_t mcp_calibration_active = 0; uint8_t mcp_init = 0; uint8_t mcp_timeout = 0; -unsigned long mcp_kWhcounter = 0; +uint8_t mcp_calibrate = 0; /*********************************************************************************************\ * Olimex tools @@ -155,11 +150,6 @@ void McpSend(uint8_t *data) } } -void McpResetSetpoints(void) -{ - memset(&mcp_calibration_setpoint, 0, sizeof(mcp_calibration_setpoint)); -} - /********************************************************************************************/ void McpGetAddress(void) @@ -180,7 +170,7 @@ void McpAddressReceive(void) void McpGetCalibration(void) { if (mcp_calibration_active) { return; } - mcp_calibration_active = 4; + mcp_calibration_active = MCP_CALIBRATION_TIMEOUT; uint8_t data[] = { MCP_START_FRAME, 8, MCP_SET_ADDRESS, (MCP_CALIBRATION_BASE >> 8) & 0xFF, MCP_CALIBRATION_BASE & 0xFF, MCP_READ, MCP_CALIBRATION_LEN, 0x00 }; @@ -214,21 +204,33 @@ void McpParseCalibration(void) cal_registers.calibration_reactive_power = McpExtractInt(serial_in_buffer, 48, 4); cal_registers.accumulation_interval = McpExtractInt(serial_in_buffer, 52, 2); - if (mcp_calibration_setpoint.calibration_active_power) { - cal_registers.calibration_active_power = mcp_calibration_setpoint.calibration_active_power; + if (mcp_calibrate & MCP_CALIBRATE_POWER) { + cal_registers.calibration_active_power = Settings.energy_power_calibration; if (McpCalibrationCalc(&cal_registers, 16)) { action = true; } } - if (mcp_calibration_setpoint.calibration_voltage) { - cal_registers.calibration_voltage = mcp_calibration_setpoint.calibration_voltage; + if (mcp_calibrate & MCP_CALIBRATE_VOLTAGE) { + cal_registers.calibration_voltage = Settings.energy_voltage_calibration; if (McpCalibrationCalc(&cal_registers, 0)) { action = true; } } - if (mcp_calibration_setpoint.calibration_current) { - cal_registers.calibration_current = mcp_calibration_setpoint.calibration_current; + if (mcp_calibrate & MCP_CALIBRATE_CURRENT) { + cal_registers.calibration_current = Settings.energy_current_calibration; if (McpCalibrationCalc(&cal_registers, 8)) { action = true; } } mcp_timeout = 0; if (action) { McpSetCalibration(&cal_registers); } - McpResetSetpoints(); + + mcp_calibrate = 0; + + Settings.energy_power_calibration = cal_registers.calibration_active_power; + Settings.energy_voltage_calibration = cal_registers.calibration_voltage; + Settings.energy_current_calibration = cal_registers.calibration_current; + + mcp_system_configuration = cal_registers.system_configuration; + + if (mcp_system_configuration & MCP_SINGLE_WIRE_FLAG) { + mcp_system_configuration &= ~MCP_SINGLE_WIRE_FLAG; // Reset SingleWire flag + McpSetSystemConfiguration(2); + } } bool McpCalibrationCalc(struct mcp_cal_registers_type *cal_registers, uint8_t range_shift) @@ -239,15 +241,15 @@ bool McpCalibrationCalc(struct mcp_cal_registers_type *cal_registers, uint8_t ra uint32_t new_gain; if (range_shift == 0) { - measured = mcp_output_registers.voltage_rms; + measured = mcp_voltage_rms; expected = cal_registers->calibration_voltage; gain = &(cal_registers->gain_voltage_rms); } else if (range_shift == 8) { - measured = mcp_output_registers.current_rms; + measured = mcp_current_rms; expected = cal_registers->calibration_current; gain = &(cal_registers->gain_current_rms); } else if (range_shift == 16) { - measured = mcp_output_registers.active_power; + measured = mcp_active_power; expected = cal_registers->calibration_active_power; gain = &(cal_registers->gain_active_power); } else { @@ -287,7 +289,7 @@ calc: /* void McpCalibrationReactivePower(void) { - cal_registers.gain_reactive_power = cal_registers.gain_reactive_power * cal_registers.calibration_reactive_power / mcp_output_registers.reactive_power; + cal_registers.gain_reactive_power = cal_registers.gain_reactive_power * cal_registers.calibration_reactive_power / mcp_reactive_power; } */ void McpSetCalibration(struct mcp_cal_registers_type *cal_registers) @@ -331,10 +333,36 @@ void McpSetCalibration(struct mcp_cal_registers_type *cal_registers) /********************************************************************************************/ +void McpSetSystemConfiguration(uint16 interval) +{ + // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A + uint8_t data[17]; + + data[ 1] = sizeof(data); + data[ 2] = MCP_SET_ADDRESS; // Set address pointer + data[ 3] = 0x00; // address + data[ 4] = 0x42; // address + data[ 5] = MCP_WRITE_32; // Write 4 bytes + data[ 6] = (mcp_system_configuration >> 24) & 0xFF; // system_configuration + data[ 7] = (mcp_system_configuration >> 16) & 0xFF; // system_configuration + data[ 8] = (mcp_system_configuration >> 8) & 0xFF; // system_configuration + data[ 9] = (mcp_system_configuration >> 0) & 0xFF; // system_configuration + data[10] = MCP_SET_ADDRESS; // Set address pointer + data[11] = 0x00; // address + data[12] = 0x5A; // address + data[13] = MCP_WRITE_16; // Write 2 bytes + data[14] = (interval >> 8) & 0xFF; // interval + data[15] = (interval >> 0) & 0xFF; // interval + + McpSend(data); +} + +/********************************************************************************************/ + void McpGetFrequency(void) { if (mcp_calibration_active) { return; } - mcp_calibration_active = 4; + mcp_calibration_active = MCP_CALIBRATION_TIMEOUT; uint8_t data[] = { MCP_START_FRAME, 11, MCP_SET_ADDRESS, (MCP_FREQUENCY_REF_BASE >> 8) & 0xFF, MCP_FREQUENCY_REF_BASE & 0xFF, MCP_READ_16, MCP_SET_ADDRESS, (MCP_FREQUENCY_GAIN_BASE >> 8) & 0xFF, MCP_FREQUENCY_GAIN_BASE & 0xFF, MCP_READ_16, 0x00 }; @@ -348,19 +376,22 @@ void McpParseFrequency(void) uint16_t line_frequency_ref = serial_in_buffer[2] * 256 + serial_in_buffer[3]; uint16_t gain_line_frequency = serial_in_buffer[4] * 256 + serial_in_buffer[5]; - if (mcp_calibration_setpoint.line_frequency_ref) { - line_frequency_ref = mcp_calibration_setpoint.line_frequency_ref; + if (mcp_calibrate & MCP_CALIBRATE_FREQUENCY) { + line_frequency_ref = Settings.energy_frequency_calibration; - if ((0xFFFF == mcp_output_registers.line_frequency) || (0 == gain_line_frequency)) { // Reset values to 50Hz - mcp_output_registers.line_frequency = 50000; + if ((0xFFFF == mcp_line_frequency) || (0 == gain_line_frequency)) { // Reset values to 50Hz + mcp_line_frequency = 50000; gain_line_frequency = 0x8000; } - gain_line_frequency = gain_line_frequency * line_frequency_ref / mcp_output_registers.line_frequency; + gain_line_frequency = gain_line_frequency * line_frequency_ref / mcp_line_frequency; mcp_timeout = 0; McpSetFrequency(line_frequency_ref, gain_line_frequency); } - McpResetSetpoints(); + + Settings.energy_frequency_calibration = line_frequency_ref; + + mcp_calibrate = 0; } void McpSetFrequency(uint16_t line_frequency_ref, uint16_t gain_line_frequency) @@ -393,39 +424,6 @@ void McpSetFrequency(uint16_t line_frequency_ref, uint16_t gain_line_frequency) /********************************************************************************************/ -void McpSetSystemConfiguration(uint16 interval) -{ - // A5 11 41 00 42 45 03 00 01 00 41 00 5A 57 00 06 7A - uint8_t data[17]; - - data[ 1] = sizeof(data); - data[ 2] = MCP_SET_ADDRESS; // Set address pointer - data[ 3] = 0x00; // address - data[ 4] = 0x42; // address - data[ 5] = MCP_WRITE_32; // Write 4 bytes - data[ 6] = (mcp_system_configuration >> 24) & 0xFF; // system_configuration - data[ 7] = (mcp_system_configuration >> 16) & 0xFF; // system_configuration - data[ 8] = (mcp_system_configuration >> 8) & 0xFF; // system_configuration - data[ 9] = (mcp_system_configuration >> 0) & 0xFF; // system_configuration - data[10] = MCP_SET_ADDRESS; // Set address pointer - data[11] = 0x00; // address - data[12] = 0x5A; // address - data[13] = MCP_WRITE_16; // Write 2 bytes - data[14] = (interval >> 8) & 0xFF; // interval - data[15] = (interval >> 0) & 0xFF; // interval - - McpSend(data); -} - -void McpSingleWireStop(uint8_t force) -{ - if (!force && ((mcp_system_configuration & (1 << 8)) == 0)) { return; } - mcp_system_configuration = mcp_system_configuration & (~(1 << 8)); - McpSetSystemConfiguration(2); // 4 -} - -/********************************************************************************************/ - void McpGetData(void) { uint8_t data[] = { MCP_START_FRAME, 8, MCP_SET_ADDRESS, 0x00, 0x04, MCP_READ, 22, 0x00 }; @@ -440,21 +438,21 @@ void McpParseData(void) // 06 19 CE 18 00 00 F2 08 3A 38 00 00 66 00 00 00 93 38 00 00 36 7F 9A C6 B7 // Ak Ln Current---- Volt- ActivePower ReActivePow ApparentPow Factr Frequ Ck - mcp_output_registers.current_rms = McpExtractInt(serial_in_buffer, 2, 4); - mcp_output_registers.voltage_rms = McpExtractInt(serial_in_buffer, 6, 2); - mcp_output_registers.active_power = McpExtractInt(serial_in_buffer, 8, 4); -// mcp_output_registers.reactive_power = McpExtractInt(serial_in_buffer, 12, 4); -// mcp_output_registers.power_factor = McpExtractInt(serial_in_buffer, 20, 2); - mcp_output_registers.line_frequency = McpExtractInt(serial_in_buffer, 22, 2); + mcp_current_rms = McpExtractInt(serial_in_buffer, 2, 4); + mcp_voltage_rms = McpExtractInt(serial_in_buffer, 6, 2); + mcp_active_power = McpExtractInt(serial_in_buffer, 8, 4); +// mcp_reactive_power = McpExtractInt(serial_in_buffer, 12, 4); +// mcp_power_factor = McpExtractInt(serial_in_buffer, 20, 2); + mcp_line_frequency = McpExtractInt(serial_in_buffer, 22, 2); if (energy_power_on) { // Powered on - energy_frequency = (float)mcp_output_registers.line_frequency / 1000; - energy_voltage = (float)mcp_output_registers.voltage_rms / 10; - energy_power = (float)mcp_output_registers.active_power / 100; + energy_frequency = (float)mcp_line_frequency / 1000; + energy_voltage = (float)mcp_voltage_rms / 10; + energy_power = (float)mcp_active_power / 100; if (0 == energy_power) { energy_current = 0; } else { - energy_current = (float)mcp_output_registers.current_rms / 10000; + energy_current = (float)mcp_current_rms / 10000; } } else { // Powered off energy_frequency = 0; @@ -515,8 +513,8 @@ bool McpSerialInput(void) void McpEverySecond(void) { - if (mcp_output_registers.active_power) { - energy_kWhtoday_delta += ((mcp_output_registers.active_power * 10) / 36); + if (mcp_active_power) { + energy_kWhtoday_delta += ((mcp_active_power * 10) / 36); EnergyUpdateToday(); } @@ -527,14 +525,19 @@ void McpEverySecond(void) mcp_calibration_active--; } else if (mcp_init) { - McpSingleWireStop(1); - mcp_init = 0; + if (2 == mcp_init) { + McpGetCalibration(); // Get calibration parameters and disable SingleWire mode if enabled + } + else if (1 == mcp_init) { + McpGetFrequency(); // Get calibration parameter + } + mcp_init--; } else if (!mcp_address) { - McpGetAddress(); + McpGetAddress(); // Get device address for future calibration changes } else { - McpGetData(); + McpGetData(); // Get energy data } } @@ -551,10 +554,10 @@ void McpDrvInit(void) pinMode(15, OUTPUT); digitalWrite(15, 0); // GPIO15 - MCP disable - Reset Delta Sigma ADC's baudrate = 4800; + mcp_calibrate = 0; + mcp_timeout = 2; // Initial wait + mcp_init = 2; // Initial setup steps energy_calc_power_factor = 1; // Calculate power factor from data - mcp_timeout = 4; // Wait for initialization - mcp_init = 1; // Execute initial setup - McpResetSetpoints(); energy_flg = XNRG_04; } } @@ -566,41 +569,41 @@ boolean McpCommand(void) unsigned long value = 0; if (CMND_POWERSET == energy_command_code) { - if (XdrvMailbox.data_len && mcp_output_registers.active_power) { + if (XdrvMailbox.data_len && mcp_active_power) { value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 100); if ((value > 100) && (value < 200000)) { // Between 1W and 2000W Settings.energy_power_calibration = value; - mcp_calibration_setpoint.calibration_active_power = value; + mcp_calibrate |= MCP_CALIBRATE_POWER; McpGetCalibration(); } } } else if (CMND_VOLTAGESET == energy_command_code) { - if (XdrvMailbox.data_len && mcp_output_registers.voltage_rms) { + if (XdrvMailbox.data_len && mcp_voltage_rms) { value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); if ((value > 1000) && (value < 2600)) { // Between 100V and 260V Settings.energy_voltage_calibration = value; - mcp_calibration_setpoint.calibration_voltage = value; + mcp_calibrate |= MCP_CALIBRATE_VOLTAGE; McpGetCalibration(); } } } else if (CMND_CURRENTSET == energy_command_code) { - if (XdrvMailbox.data_len && mcp_output_registers.current_rms) { + if (XdrvMailbox.data_len && mcp_current_rms) { value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 10); if ((value > 100) && (value < 80000)) { // Between 10mA and 8A Settings.energy_current_calibration = value; - mcp_calibration_setpoint.calibration_current = value; + mcp_calibrate |= MCP_CALIBRATE_CURRENT; McpGetCalibration(); } } } else if (CMND_FREQUENCYSET == energy_command_code) { - if (XdrvMailbox.data_len && mcp_output_registers.line_frequency) { + if (XdrvMailbox.data_len && mcp_line_frequency) { value = (unsigned long)(CharToDouble(XdrvMailbox.data) * 1000); if ((value > 45000) && (value < 65000)) { // Between 45Hz and 65Hz Settings.energy_frequency_calibration = value; - mcp_calibration_setpoint.line_frequency_ref = value; + mcp_calibrate |= MCP_CALIBRATE_FREQUENCY; McpGetFrequency(); } } From ec421e614477115c99c67275bfafa5ecf33a8eb4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Sep 2018 14:08:36 +0200 Subject: [PATCH 141/798] Released decode-config.py Released tools/decode-config.py by Norbert Richter to decode configuration data. --- sonoff/_changelog.ino | 1 + tools/decode-config.py | 1924 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1925 insertions(+) create mode 100644 tools/decode-config.py diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 5aa6e9e13763..333a524a60a1 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.7 20180925 * Remove restart after ntpserver change and force NTP re-sync (#3890) * Release full Shelly2 support + * Released tools/decode-config.py by Norbert Richter to decode configuration data. See file for information * * 6.2.1.6 20180922 * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet diff --git a/tools/decode-config.py b/tools/decode-config.py new file mode 100644 index 000000000000..299f152c46f7 --- /dev/null +++ b/tools/decode-config.py @@ -0,0 +1,1924 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" + decode-config.py - Decode configuration of Sonoff-Tasmota device + + Copyright (C) 2018 Norbert Richter + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Requirements: + - Python + - pip json pycurl urllib2 configargparse + +Instructions: + Execute command with option -d to retrieve config data from device or + use -f to read out a previously saved configuration file. + + For help execute command with argument -h + + +Usage: + decode-config.py [-h] [-f ] [-d ] + [-u ] [-p ] [--format ] + [--sort ] [--raw] [--unhide-pw] [-o ] + [-c ] [-V] + + Decode configuration of Sonoff-Tasmota device. Args that start with '--' (eg. + -f) can also be set in a config file (specified via -c). Config file syntax + allows: key=value, flag=true, stuff=[a,b,c] (for details, see syntax at + https://goo.gl/R74nmi). If an arg is specified in more than one place, then + commandline values override config file values which override defaults. + + optional arguments: + -h, --help show this help message and exit + -c , --config + Config file, can be used instead of command parameter + (defaults to None) + + source: + -f , --file + file to retrieve Tasmota configuration from (default: + None) + -d , --device + device to retrieve configuration from (default: None) + -u , --username + for -d usage: http access username (default: admin) + -p , --password + for -d usage: http access password (default: None) + + output: + --format output format ("json" or "text", default: "json") + --sort sort result - can be "none" or "name" (default: + "name") + --raw output raw values (default: processed) + --unhide-pw unhide passwords (default: hide) + -o , --output-file + file to store decrypted raw binary configuration to + (default: None) + + info: + -V, --version show program's version number and exit + + Note: Either argument -d or -f must be given. + + +Examples: + Read configuration from hostname 'sonoff1' and output default json config + ./decode-config.py -d sonoff1 + + Read configuration from file 'Config__6.2.1.dmp' and output default json config + ./decode-config.py -f Config__6.2.1.dmp + + Read configuration from hostname 'sonoff1' using web login data + ./decode-config.py -d sonoff1 -u admin -p xxxx + + Read configuration from hostname 'sonoff1' using web login data and unhide passwords + ./decode-config.py -d sonoff1 -u admin -p xxxx --unhide-pw + + Read configuration from hostname 'sonoff1' using web login data, unhide passwords + and sort key names + ./decode-config.py -d sonoff1 -u admin -p xxxx --unhide-pw --sort name +""" + +import os.path +import io +import sys +import configargparse +import collections +import struct +import re +import json +try: + import pycurl +except ImportError: + print("module not found. Try 'pip pycurl' to install it") + sys.exit(9) +try: + import urllib2 +except ImportError: + print("module not found. Try 'pip urllib2' to install it") + sys.exit(9) + + +VER = '1.5.0008' +PROG='{} v{} by Norbert Richter'.format(os.path.basename(sys.argv[0]),VER) + +CONFIG_FILE_XOR = 0x5A + + +args = {} +DEFAULTS = { + 'DEFAULT': + { + 'configfile': None, + }, + 'source': + { + 'device': None, + 'username': 'admin', + 'password': None, + 'tasmotafile': None, + }, + 'output': + { + 'format': 'json', + 'sort': 'name', + 'raw': False, + 'unhide-pw': False, + 'outputfile': None, + }, +} + + +""" +Settings dictionary describes the config file fields definition: + + Each setting name has a tuple containing the following items: + + (format, baseaddr, datadef, ) + + where + + format + Define the data interpretation. + For details see struct module format string + https://docs.python.org/2.7/library/struct.html#format-strings + + baseaddr + The address (starting from 0) within config data + + datadef + Define the field interpretation different from simple + standard types (like char, byte, int) e. g. lists or bit fields + Can be None, a single integer, a list or a dictionary + None: + None must be given if the field contains a simple value + desrcibed by the prefix + n: + Same as [n] below + [n]: + Defines a one-dimensional array of size + [n, n <,n...>] + Defines a multi-dimensional array + [{} <,{}...] + Defines a bit struct. The items are simply dict + {'bitname', bitlen}, the dict order is important. + + convert (optional) + Define an output/conversion methode, can be a simple string + or a previously defined function name. + 'xxx': + a string defines a format specification of the string + formatter, see + https://docs.python.org/2.7/library/string.html#format-string-syntax + func: + a function defines the name of a formating function + +""" +# config data conversion function and helper +def baudrate(value): + return value * 1200 + +def int2ip(value): + return '{:d}.{:d}.{:d}.{:d}'.format(value & 0xff, value>>8 & 0xff, value>>16 & 0xff, value>>24 & 0xff) + +def int2geo(value): + return float(value) / 1000000 + +def password(value): + if args.unhidepw: + return value + return '********' + +def fingerprintstr(value): + s = list(value) + result = '' + for c in s: + if c in '0123456789abcdefABCDEF': + result += c + return result + + +Setting_6_2_1 = { + 'cfg_holder': ('0 and isinstance(fielddef[2][0], int)) or isinstance(fielddef[2], int): + for i in range(0, fielddef[2][0] if isinstance(fielddef[2], list) else fielddef[2] ): + # multidimensional array + if isinstance(fielddef[2], list) and len(fielddef[2])>1: + length += GetFieldLength( (fielddef[0], fielddef[1], fielddef[2][1:]) ) + else: + length += GetFieldLength( (fielddef[0], fielddef[1], None) ) + else: + if fielddef[0][-1:].lower() in ['b','c','?']: + length=1 + elif fielddef[0][-1:].lower() in ['h']: + length=2 + elif fielddef[0][-1:].lower() in ['i','l','f']: + length=4 + elif fielddef[0][-1:].lower() in ['q','d']: + length=8 + elif fielddef[0][-1:].lower() in ['s','p']: + # s and p needs prefix as length + match = re.search("\s*(\d+)", fielddef[0]) + if match: + length=int(match.group(0)) + + # it's a single value + return length + +def ConvertFieldValue(value, fielddef): + """ + Convert field value based on field desc + + @param value: + original value read from binary data + @param fielddef + field definition (contains possible conversion defiinition) + + @return: (und)converted value + """ + if not args.raw and len(fielddef)>3: + if isinstance(fielddef[3],str): # use a format string + return fielddef[3].format(value) + elif callable(fielddef[3]): # use a format function + return fielddef[3](value) + return value + + +def GetField(dobj, fieldname, fielddef): + """ + Get field value from definition + + @param dobj: + uncrypted binary config data + @param fieldname: + name of the field + @param fielddef: + see Settings desc above + + @return: read field value + """ + + result = None + + if fielddef[2] is not None: + result = [] + + # tuple 2 contains a list with integer or an integer value + if (isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], int)) or isinstance(fielddef[2], int): + addr = fielddef[1] + for i in range(0, fielddef[2][0] if isinstance(fielddef[2], list) else fielddef[2] ): + # multidimensional array + if isinstance(fielddef[2], list) and len(fielddef[2])>1: + subfielddef = (fielddef[0], addr, fielddef[2][1:], None if len(fielddef)<4 else fielddef[3]) + else: # single array + subfielddef = (fielddef[0], addr, None, None if len(fielddef)<4 else fielddef[3]) + length = GetFieldLength(subfielddef) + if length != 0: + result.append(GetField(dobj, fieldname, subfielddef)) + addr += length + # tuple 2 contains a list with dict + elif isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], dict): + d = {} + value = struct.unpack_from(fielddef[0], dobj, fielddef[1])[0] + d['base'] = ConvertFieldValue(value, fielddef); + union = fielddef[2] + i = 0 + for l in union: + for name,bits in l.items(): + bitval = (value & ( ((1<> i + d[name] = bitval + i += bits + result = d + else: + # it's a single value + if GetFieldLength(fielddef) != 0: + result = struct.unpack_from(fielddef[0], dobj, fielddef[1])[0] + if fielddef[0][-1:].lower() in ['s','p']: + if ord(result[:1])==0x00 or ord(result[:1])==0xff: + result = '' + s = str(result).split('\0')[0] + result = s #unicode(s, errors='replace') + result = ConvertFieldValue(result, fielddef) + + return result + + +def DeEncrypt(obj): + """ + Decrpt/Encrypt binary config data + + @param obj: + binary config data + + @return: decrypted configuration (if obj contains encrypted data) + encrypted configuration (if obj contains decrypted data) + """ + dobj = obj[0:2] + for i in range(2, len(obj)): + dobj += chr( (ord(obj[i]) ^ (CONFIG_FILE_XOR +i)) & 0xff ) + return dobj + + +def Decode(obj): + """ + Decodes (already decrypted) binary data stream + + @param obj: + binary config data + """ + # get header data + cfg_size = GetField(obj, 'cfg_size', Setting_6_2_1['cfg_size']) + version = GetField(obj, 'version', Setting_6_2_1['version']) + + # search setting definition + setting = None + for cfg in Settings: + if version >= cfg[0] and cfg_size == cfg[1]: + template = cfg + break + + setting = template[2] + # if we did not found a mathching setting + if setting is None: + exit(2, "Can't handle Tasmota configuration data for version 0x{:x} with {} bytes".format(version, cfg_size) ) + + if GetField(obj, 'cfg_crc', setting['cfg_crc']) != GetSettingsCrc(obj): + exit(3, 'Data crc error' ) + + config = {} + config['version_template'] = '0x{:x}'.format(template[0]) + for name in setting: + config[name] = GetField(obj, name, setting[name]) + + if args.sort == 'name': + config = collections.OrderedDict(sorted(config.items())) + + if args.format == 'json': + print json.dumps(config, sort_keys=args.sort=='name') + else: + for key,value in config.items(): + print '{} = {}'.format(key, repr(value)) + + + +if __name__ == "__main__": + parser = configargparse.ArgumentParser(description='Decode configuration of Sonoff-Tasmota device.', + epilog='Note: Either argument -d or -f must be given.') + + source = parser.add_argument_group('source') + source.add_argument('-f', '--file', + metavar='', + dest='tasmotafile', + default=DEFAULTS['source']['tasmotafile'], + help='file to retrieve Tasmota configuration from (default: {})'.format(DEFAULTS['source']['tasmotafile'])) + source.add_argument('-d', '--device', + metavar='', + dest='device', + default=DEFAULTS['source']['device'], + help='device to retrieve configuration from (default: {})'.format(DEFAULTS['source']['device']) ) + source.add_argument('-u', '--username', + metavar='', + dest='username', + default=DEFAULTS['source']['username'], + help='for -d usage: http access username (default: {})'.format(DEFAULTS['source']['username'])) + source.add_argument('-p', '--password', + metavar='', + dest='password', + default=DEFAULTS['source']['password'], + help='for -d usage: http access password (default: {})'.format(DEFAULTS['source']['password'])) + + output = parser.add_argument_group('output') + output.add_argument('--format', + metavar='', + dest='format', + choices=['json', 'text'], + default=DEFAULTS['output']['format'], + help='output format ("json" or "text", default: "{}")'.format(DEFAULTS['output']['format']) ) + output.add_argument('--sort', + metavar='', + dest='sort', + choices=['none', 'name'], + default=DEFAULTS['output']['sort'], + help='sort result - can be "none" or "name" (default: "{}")'.format(DEFAULTS['output']['sort']) ) + output.add_argument('--raw', + dest='raw', + action='store_true', + default=DEFAULTS['output']['raw'], + help='output raw values (default: {})'.format('raw' if DEFAULTS['output']['raw'] else 'processed') ) + output.add_argument('--unhide-pw', + dest='unhidepw', + action='store_true', + default=DEFAULTS['output']['unhide-pw'], + help='unhide passwords (default: {})'.format('unhide' if DEFAULTS['output']['unhide-pw'] else 'hide') ) + output.add_argument('-o', '--output-file', + metavar='', + dest='outputfile', + default=DEFAULTS['output']['outputfile'], + help='file to store decrypted raw binary configuration to (default: {})'.format(DEFAULTS['output']['outputfile'])) + + parser.add_argument('-c', '--config', + metavar='', + dest='configfile', + default=DEFAULTS['DEFAULT']['configfile'], + is_config_file=True, + help='Config file, can be used instead of command parameter (defaults to {})'.format(DEFAULTS['DEFAULT']['configfile']) ) + + info = parser.add_argument_group('info') + info.add_argument('-V', '--version', action='version', version=PROG) + + args = parser.parse_args() + + configobj = None + + if args.device is not None: + + # read config direct from device via http + buffer = io.BytesIO() + url = str("http://{}/dl".format(args.device)) + c = pycurl.Curl() + c.setopt(c.URL, url) + c.setopt(c.VERBOSE, 0) + if args.username is not None and args.password is not None: + c.setopt(c.HTTPAUTH, c.HTTPAUTH_BASIC) + c.setopt(c.USERPWD, args.username + ':' + args.password) + c.setopt(c.WRITEDATA, buffer) + try: + c.perform() + except Exception, e: + exit(e[0], e[1]) + response = c.getinfo(c.RESPONSE_CODE) + c.close() + if response>=400: + exit(response, 'HTTP returns {}'.format(response) ) + + configobj = buffer.getvalue() + + elif args.tasmotafile is not None: + # read config from a file + + if not os.path.isfile(args.tasmotafile): # check file exists + exit(1, "file '{}' not found".format(args.tasmotafile)) + try: + tasmotafile = open(args.tasmotafile, "rb") + configobj = tasmotafile.read() + tasmotafile.close() + except Exception, e: + exit(e[0], e[1]) + + else: + parser.print_help() + sys.exit(0) + + if configobj is not None and len(configobj)>0: + cfg = DeEncrypt(configobj) + + if args.outputfile is not None: + outputfile = open(args.outputfile, "wb") + outputfile.write(cfg) + outputfile.close() + + Decode(cfg) + + else: + exit(4, "Could not read configuration data from {} '{}'".format('device' if args.device is not None else 'file', args.device if args.device is not None else args.tasmotafile) ) \ No newline at end of file From 977ee779b06b7c90d97fef335788fd826e742e24 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:30:01 +0200 Subject: [PATCH 142/798] Added VEML6070 defines Added define for Rset for the VEML6070 sensor and to show or show-not the raw value --- sonoff/user_config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index b93e4421115f..846c86097af7 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -283,6 +283,8 @@ // #define USE_BME680 // Enable support for BME680 sensor using Bosch BME680 library (+4k code) #define USE_BH1750 // Enable BH1750 sensor (I2C address 0x23 or 0x5C) (+0k5 code) // #define USE_VEML6070 // Enable VEML6070 sensor (I2C addresses 0x38 and 0x39) (+0k5 code) +// #define USE_VEML6070_RSET 270000 // VEML6070, Rset in Ohm used on PCB board, default 270K = 270000ohm, range for this sensor: 220K ... 1Meg +// #define USE_VEML6070_SHOW_RAW // VEML6070, shows the raw value of UV-A // #define USE_ADS1115 // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Enable INA219 (I2C address 0x40, 0x41 0x44 or 0x45) Low voltage and current sensor (+1k code) From 2ba0b1be7324f5ccec0aed308b5b0a98b50c8aca Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:32:24 +0200 Subject: [PATCH 143/798] driver cahnge Added a lot of new calculation for more precission and more output so as UV Index plus a text behind the value and UV Power in W/m2 --- sonoff/xsns_11_veml6070.ino | 234 ++++++++++++++++++++++++++++++++---- 1 file changed, 211 insertions(+), 23 deletions(-) diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index 557f615f3b36..be7d3daa03a8 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -15,25 +15,136 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . + + ----------------------------------------------------- + Some words to the meaning of the UV Risk Level: + ----------------------------------------------------- + D_UV_INDEX_1 = "Low" = sun->fun + D_UV_INDEX_2 = "Mid" = sun->glases advised + D_UV_INDEX_3 = "High" = sun->glases a must + D_UV_INDEX_4 = "Danger" = sun->skin burns Level 1 + D_UV_INDEX_5 = "BurnL1/2" = sun->skin burns level 1..2 + D_UV_INDEX_6 = "BurnL3" = sun->skin burns with level 3 + D_UV_INDEX_7 = "OoR" = out of range or unknown + + -------------------------------------------------------------------------------------------- + Version Date Action Description + -------------------------------------------------------------------------------------------- + + 1.0.0.1 20180925 tests - all tests are done with 1x sonoff sv, 2x Wemos D1 (not the mini) + - 3 different VEMl6070 sensors from 3 different online shops + - all the last three test where good and all looks working so far + - all tests are done at high noon with blue sky and a leaned UV light source + sience - a special Thank You to my friend the professor. He works in the aerospace industrie. Thank You R.G.T. + - all calculations are based on the very good work of Karel Vanicek. Thank You Karel + - more information about UV Index and the irradiation power calculation can be found on the internet + info - all calculations are based on the effective irradiation from Karel Vanicek + - all this was not possible without the work of @arendst. He has done really a lot of basic work/code. Thank You Theo + cleaned - source code a little bit + added - missing void in function calls: void name(void) + added - UV Risk level now defined as UV Index, 0.00 based on NASA standard with text behind the value + added - UV Power level now named as UV Power, used W/m2 because official standards + added - automatic fill of the uv-risk compare table based on the coefficient calculation + added - suspend and wakeup mode for the uv seonsor + - current drain in wake-up-ed mode was around 180uA incl. I2C bus + - current drain in suspend mode was around 70..80uA incl. I2C bus + changed - 2x the power calculation about some incorrent data sheet values + changed - float to double calculation because a rare effect on uv compare map filling + - in that case @andrethomas was a big help too (while(work){output=lot_of_fun};) + added - USE_VEML6070_RSET + - in user_config as possible input, different resistor values depending on PCB types + added - USE_VEML6070_SHOW_RAW + - in user_config, show or show-NOT the uv raw value + added - lots of #defines for automatic calulations to get the best possible values + added - error messages for LOG_LEVEL_DEBUG + added - lots of information in one of the last postings in: https://github.com/arendst/Sonoff-Tasmota/issues/3844 + debugging - without the softly hit ;-) from @andrethomas about Serial.print i would never done it. Thank You Andre + safety - personal, please read this: http://www.segurancaetrabalho.com.br/download/uv_index_karel_vanicek.pdf + next - possible i will add the calculation for LAT and LONG coordinates for much more precission + - show not only the UV Power value in W/m2, possible a @define value to show it as joule value + - add a #define to select how many characters are shown benhind the decimal point for the UV Index + --- + 1.0.0.0 20180912 started - further development by mike2nl - https://github.com/mike2nl/Sonoff-Tasmota + forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota + base - code base from arendst too + */ #ifdef USE_I2C #ifdef USE_VEML6070 /*********************************************************************************************\ - * VEML6070 - Ultra Violet Light Intensity + * VEML6070 - Ultra Violet Light Intensity (UV-A, 100% output by 255nm) * * I2C Address: 0x38 and 0x39 \*********************************************************************************************/ -#define VEML6070_ADDR_H 0x39 -#define VEML6070_ADDR_L 0x38 +#define VEML6070_ADDR_H 0x39 // on some PCB boards the address can be changed by a solder point, +#define VEML6070_ADDR_L 0x38 // to have no address conflicts with other I2C sensors and/or hardware -#define VEML6070_INTEGRATION_TIME 3 // 500msec integration time +#define VEML6070_INTEGRATION_TIME 3 // IT_4 = 500msec integration time, because the precission is 4 times higher then IT_0.5 +#define VEML6070_ENABLE 1 // +#define VEML6070_DISABLE 0 // +#define VEML6070_RSET_DEFAULT 270000 // 270K default resistor value 270000 ohm, range from 220K..1Meg +#define VEML6070_UV_MAX_INDEX 15 // normal 11, internal on weather laboratories and NASA it's 15 so far the sensor is linear +#define VEML6070_UV_MAX_DEFAULT 11 // 11 = public default table values +#define VEML6070_POWER_COEFFCIENT 0.025 // based on calculations from Karel Vanicek and reorder by hand +#define VEML6070_TABLE_COEFFCIENT 32.86270591 // calculated by hand with help from a friend of mine, a professor which works in aero space things + // (resistor, differences, power coefficients and official UV index calculations (LAT & LONG will be added later) + +/********************************************************************************************/ +// globals uint8_t veml6070_address; uint8_t veml6070_type = 0; -uint16_t Veml6070ReadUv() +/********************************************************************************************/ + +void Veml6070Detect(void) +{ + if (veml6070_type) { + return; + } + + uint8_t itime = VEML6070_INTEGRATION_TIME; + veml6070_address = VEML6070_ADDR_L; + Wire.beginTransmission(veml6070_address); + Wire.write((itime << 2) | 0x02); + uint8_t status = Wire.endTransmission(); + + if (!status) { + veml6070_type = 1; + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", veml6070_address); + AddLog(LOG_LEVEL_DEBUG); + } +} + +/********************************************************************************************/ + +void Veml6070ModeCmd(boolean mode_cmd) +{ + uint8_t itime = VEML6070_INTEGRATION_TIME; + uint8_t opmode = 0; + + if (mode_cmd) { + opmode = VEML6070_ENABLE; + } else { + opmode = VEML6070_DISABLE; + } + + veml6070_address = VEML6070_ADDR_L; + Wire.beginTransmission(veml6070_address); + Wire.write((opmode << 0) | 0x02 | (itime << 2)); + uint8_t status = Wire.endTransmission(); + + if (!status) { + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070 opmode", veml6070_address); + AddLog(LOG_LEVEL_DEBUG); + } +} + +/********************************************************************************************/ + +uint16_t Veml6070ReadUv(void) { if (Wire.requestFrom(VEML6070_ADDR_H, 1) != 1) { return -1; @@ -50,45 +161,122 @@ uint16_t Veml6070ReadUv() /********************************************************************************************/ -void Veml6070Detect() +double Veml6070UvRiskLevel(uint16_t uv_level) { - if (veml6070_type) { - return; - } - - uint8_t itime = VEML6070_INTEGRATION_TIME; + double risk = 0; + double uv_risk_map[VEML6070_UV_MAX_INDEX] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + + // fill the uv-risk compare table based on the coefficient calculation + for (uint8_t i = 0; i < VEML6070_UV_MAX_INDEX; i++) { +#ifdef USE_VEML6070_RSET + if ( (USE_VEML6070_RSET >= 220000) && (USE_VEML6070_RSET <= 1000000) ) { + uv_risk_map[i] = ( (USE_VEML6070_RSET / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); + } else { + uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 resistor error %d"), USE_VEML6070_RSET); + AddLog(LOG_LEVEL_DEBUG); + } +#else + uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); +#endif + } - veml6070_address = VEML6070_ADDR_L; - Wire.beginTransmission(veml6070_address); - Wire.write((itime << 2) | 0x02); - uint8_t status = Wire.endTransmission(); - if (!status) { - veml6070_type = 1; - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", veml6070_address); + // get the uv-risk level + if (uv_level < uv_risk_map[VEML6070_UV_MAX_INDEX-1]) { + return ( uv_level / uv_risk_map[0] ); + } else { + return ( risk = 99 ); // out of range = much to high - it must be outerspace or sensor damaged + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 out of range %d"), risk); AddLog(LOG_LEVEL_DEBUG); } } +/********************************************************************************************/ + +double Veml6070UvPower(double uvrisk) +{ + // based on calculations for effective irradiation from Karel Vanicek + return ( VEML6070_POWER_COEFFCIENT * uvrisk ); +} + +/********************************************************************************************/ + #ifdef USE_WEBSERVER -const char HTTP_SNS_ULTRAVIOLET[] PROGMEM = - "%s{s}VEML6070 " D_UV_LEVEL "{m}%d{e}"; // {s} = , {m} = , {e} = + // {s} = , {m} = , {e} = +#ifdef USE_VEML6070_SHOW_RAW + const char HTTP_SNS_UV_LEVEL[] PROGMEM = "%s{s}VEML6070 " D_UV_LEVEL "{m}%d " D_UNIT_INCREMENTS "{e}"; +#endif // USE_VEML6070_SHOW_RAW + // different uv index level texts + const char HTTP_SNS_UV_INDEX1[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_1 "{e}"; + const char HTTP_SNS_UV_INDEX2[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_2 "{e}"; + const char HTTP_SNS_UV_INDEX3[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_3 "{e}"; + const char HTTP_SNS_UV_INDEX4[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_4 "{e}"; + const char HTTP_SNS_UV_INDEX5[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_5 "{e}"; + const char HTTP_SNS_UV_INDEX6[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_6 "{e}"; + const char HTTP_SNS_UV_INDEX7[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_7 "{e}"; + const char HTTP_SNS_UV_POWER[] PROGMEM = "%s{s}VEML6070 " D_UV_POWER "{m}%s " D_UNIT_WATT_METER_QUADRAT "{e}"; #endif // USE_WEBSERVER +/********************************************************************************************/ + void Veml6070Show(boolean json) { if (veml6070_type) { + // wakeup the sensor + Veml6070ModeCmd(1); + + // get values from functions uint16_t uvlevel = Veml6070ReadUv(); + double uvrisk = Veml6070UvRiskLevel(uvlevel); + double uvpower = Veml6070UvPower(uvrisk); + char str_uvrisk[10]; + char str_uvpower[5]; + + // convert double values to string + dtostrfd(uvrisk, 2, str_uvrisk); + dtostrfd(uvpower, 3, str_uvpower); if (json) { +#ifdef USE_VEML6070_SHOW_RAW snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_LEVEL "\":%d}"), mqtt_data, uvlevel); +#endif // USE_VEML6070_SHOW_RAW + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_INDEX "\":%s}"), mqtt_data, str_uvrisk); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_POWER "\":%s}"), mqtt_data, str_uvpower); #ifdef USE_DOMOTICZ - if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, uvlevel); + if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, uvlevel) }; #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ULTRAVIOLET, mqtt_data, uvlevel); +#ifdef USE_VEML6070_SHOW_RAW + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_LEVEL, mqtt_data, uvlevel); +#endif // USE_VEML6070_SHOW_RAW + if ( (uvrisk >= 0) && (uvrisk <= 2.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX1, mqtt_data, str_uvrisk); + } + else if ( (uvrisk >= 3.0) && (uvrisk <= 5.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX2, mqtt_data, str_uvrisk); + } + else if ( (uvrisk >= 6.0) && (uvrisk <= 7.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX3, mqtt_data, str_uvrisk); + } + else if ( (uvrisk >= 8.0) && (uvrisk <= 10.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX4, mqtt_data, str_uvrisk); + } + else if ( (uvrisk >= 11.0) && (uvrisk <= 12.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX5, mqtt_data, str_uvrisk); + } + else if ( (uvrisk >= 13.0) && (uvrisk <= 15.9) ) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX6, mqtt_data, str_uvrisk); + } else { + // else for Unknown or Out Of Range error = 99 + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX7, mqtt_data, str_uvrisk); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_POWER, mqtt_data, str_uvpower); #endif // USE_WEBSERVER } + // suspend the sensor + Veml6070ModeCmd(0); + // delay(2000); // used while messaurment of current drain } } @@ -105,7 +293,7 @@ boolean Xsns11(byte function) if (i2c_flg) { switch (function) { case FUNC_PREP_BEFORE_TELEPERIOD: - Veml6070Detect(); + Veml6070Detect(); // detect and init the sensor break; case FUNC_JSON_APPEND: Veml6070Show(1); From af5ee5a883384b243dc73f0e400e1577f137bfba Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:37:08 +0200 Subject: [PATCH 144/798] Added defines for text Added defines for uv text and one unit define --- sonoff/language/bg-BG.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 266714fe4320..a3ab3d53914a 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -163,7 +163,15 @@ #define D_USER "Потребител" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV индекс" +#define D_UV_INDEX_1 "Low" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Ниво на ултравиолетово излъчване" +#define D_UV_POWER "UV Power" #define D_VERSION "Версия" #define D_VOLTAGE "Напрежение" #define D_WARMLIGHT "Топла" @@ -514,6 +522,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From ee7acd849b67e8fbbebabbe9e702ce8e6b2ab0b0 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:40:55 +0200 Subject: [PATCH 145/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/cs-CZ.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index e90797725c4f..3886c1b4db91 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -163,7 +163,15 @@ #define D_USER "Uživatel" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "úroveň UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Verze" #define D_VOLTAGE "Napětí" #define D_WARMLIGHT "Teplé světlo" @@ -514,6 +522,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 1738f68247f31f41caded85aef4b5f3633365e53 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:42:28 +0200 Subject: [PATCH 146/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/de-DE.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index a6e62c557103..9bb14bfa5399 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -163,7 +163,14 @@ #define D_USER "Benutzer" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV-Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "UV-Level" +#define D_UV_POWER "UV Power" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" #define D_WARMLIGHT "warm" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From ef6cd4530d27e662be5d2046c4afe1a4cea477d8 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:44:04 +0200 Subject: [PATCH 147/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/el-GR.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 715b2a7cf05e..1b666ae1e4d2 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -163,7 +163,14 @@ #define D_USER "Χρήστης" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Επίπεδο UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Έκδοση" #define D_VOLTAGE "Τάση" #define D_WARMLIGHT "Ζεστό" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From c18a3cd7e0a140faf2158793de7fd02049629745 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:45:27 +0200 Subject: [PATCH 148/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/en-GB.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 9ac6c1fadd2d..5f6f0d76475d 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -163,7 +163,14 @@ #define D_USER "User" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "UV Level" +#define D_UV_POWER "UV Power" #define D_VERSION "Version" #define D_VOLTAGE "Voltage" #define D_WARMLIGHT "Warm" @@ -514,6 +521,7 @@ #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" #define D_UNIT_HERTZ "Hz" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 89e04dafb099652649c245caf2ef8657a488166a Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:46:43 +0200 Subject: [PATCH 149/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/es-AR.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 7d040808094a..dafa99900cf1 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -163,7 +163,14 @@ #define D_USER "Usuario" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Índice UV" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Nivel UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Versión" #define D_VOLTAGE "Tensión" #define D_WARMLIGHT "Cálida" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 651bdf03c0ee556f66b5a6d4535ee692ff66c802 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:49:51 +0200 Subject: [PATCH 150/798] Update fr-FR.h Added some new text UV defines and one unit define W/m2 --- sonoff/language/fr-FR.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 7e6ea07b969a..8cbf0ce7d241 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -163,7 +163,14 @@ #define D_USER "Utilisateur" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indice UV" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Niveau UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Version" #define D_VOLTAGE "Tension" #define D_WARMLIGHT "Chaud" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From e3f1d4ad9ae4256b25f321e2e12e1d20a55c6095 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:50:05 +0200 Subject: [PATCH 151/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/hu-HU.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index ef2c28f80032..3c9f23334ed7 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -163,7 +163,14 @@ #define D_USER "Felhasználó" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "UV Szint" +#define D_UV_POWER "UV Power" #define D_VERSION "Verzió" #define D_VOLTAGE "Feszültség" #define D_WARMLIGHT "Meleg" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 9182d02d0cf601ccfe0987fbbf2bcc7d1d8c8710 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:50:18 +0200 Subject: [PATCH 152/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/it-IT.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index ac818a9f29a1..b44f612f3935 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -163,7 +163,14 @@ #define D_USER "Utente" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indice UV" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Livello UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Versione" #define D_VOLTAGE "Tensione" #define D_WARMLIGHT "Calda" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 4c900eb0b720b2c2c8f69c4a392788a5568bb510 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:52:41 +0200 Subject: [PATCH 153/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/nl-NL.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 273699477ceb..4946dd94f8f9 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -163,7 +163,14 @@ #define D_USER "Gebruiker" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV-index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "UV niveau" +#define D_UV_POWER "UV Power" #define D_VERSION "Versie" #define D_VOLTAGE "Spanning" #define D_WARMLIGHT "Warm" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From f7c16f53881d18df0b4134195757ee00b4a4806a Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:53:03 +0200 Subject: [PATCH 154/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/pl-PL.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 199f7cce9316..fa118b1b131b 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -163,7 +163,14 @@ #define D_USER "Użytkownik" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Poziom UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Wersja" #define D_VOLTAGE "Napięcie" #define D_WARMLIGHT "Nagrzanie" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From a6cf1cde4fd1323d43fec33a789aefa3f0d05607 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:53:25 +0200 Subject: [PATCH 155/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/pt-BR.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 8770b9a4a661..bf1318864753 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -163,7 +163,14 @@ #define D_USER "Usuário" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Índice UV" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Nível UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Versão" #define D_VOLTAGE "Voltagem" #define D_WARMLIGHT "Luz quente" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "W/h" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 78df649fcae70e9c1e463ff41151d27fd0d9904a Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:56:38 +0200 Subject: [PATCH 156/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/pt-PT.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 0b7715583b9c..a3b67c3668bc 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -163,7 +163,14 @@ #define D_USER "Utilizador" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indíce UV" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "Nível UV" +#define D_UV_POWER "UV Power" #define D_VERSION "Versão" #define D_VOLTAGE "Voltagem" #define D_WARMLIGHT "Luz Quente" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From c8f51b68fdaf424a0392c7534a9d68072d983d34 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:57:01 +0200 Subject: [PATCH 157/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/ru-RU.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index e61cbb9c1336..a4e48067d010 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -163,7 +163,14 @@ #define D_USER "Пользователь" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "УФ уровень" +#define D_UV_POWER "UV Power" #define D_VERSION "Версия" #define D_VOLTAGE "Напряжение" #define D_WARMLIGHT "Тепло" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "В" #define D_UNIT_WATT "Вт" #define D_UNIT_WATTHOUR "ВтЧ" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 56e9e92655359c179377248676f6ba7f91c0462b Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 14:57:17 +0200 Subject: [PATCH 158/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/tr-TR.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 086c236aa725..62cec3eb09c8 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -163,7 +163,14 @@ #define D_USER "Kullanıcı" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Indeksi" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "UV Seviyesi" +#define D_UV_POWER "UV Power" #define D_VERSION "Versiyon" #define D_VOLTAGE "Voltaj" #define D_WARMLIGHT "Sıcak" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" #define D_UNIT_HERTZ "Hz" // Log message prefix From cf952f66377026cbcf6c6eba344e4476eb7389ee Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 15:00:34 +0200 Subject: [PATCH 159/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/uk-UK.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 19094d5742c2..7dccdb7db501 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -163,7 +163,14 @@ #define D_USER "Користувач" #define D_UTC_TIME "UTC" #define D_UV_INDEX "УФ індекс" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "УФ рівень" +#define D_UV_POWER "UV Power" #define D_VERSION "Версія" #define D_VOLTAGE "Напруга" #define D_WARMLIGHT "Тепло" @@ -515,6 +522,7 @@ #define D_UNIT_VOLT "В" #define D_UNIT_WATT "Вт" #define D_UNIT_WATTHOUR "ВтГод" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 044363dc00eccd9c6c0b6d58cf5c6b693509a6b1 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 15:00:57 +0200 Subject: [PATCH 160/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/zh-CN.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index ea15b6ccbc09..820cde18c928 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -163,7 +163,14 @@ #define D_USER "用户名" #define D_UTC_TIME "UTC" #define D_UV_INDEX "紫外线指数" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "紫外线水平" +#define D_UV_POWER "UV Power" #define D_VERSION "版本" #define D_VOLTAGE "电压" #define D_WARMLIGHT "暖" @@ -514,6 +521,7 @@ #define D_UNIT_WATT "瓦" #define D_UNIT_WATTHOUR "瓦时" #define D_UNIT_HERTZ "赫兹" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 13e0bcbd26c00e91866d8203ac5573626074eb0f Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 15:01:16 +0200 Subject: [PATCH 161/798] Added some text defines Added some new text UV defines and one unit define W/m2 --- sonoff/language/zh-TW.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index f4f439c8bfb8..14052d9f3818 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -163,7 +163,14 @@ #define D_USER "用戶名" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" #define D_UV_LEVEL "紫外線等級" +#define D_UV_POWER "UV Power" #define D_VERSION "版本" #define D_VOLTAGE "電壓" #define D_WARMLIGHT "暖" @@ -514,6 +521,7 @@ #define D_UNIT_VOLT "伏" #define D_UNIT_WATT "瓦" #define D_UNIT_WATTHOUR "瓦時" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application From 40052a343ffe94ad1ac4f077700acdb42eadb941 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Sep 2018 15:35:49 +0200 Subject: [PATCH 162/798] Add image sonoff-display Add define USE_DISPLAYS for selecting image sonoff-display --- platformio.ini | 15 +++++++++++++++ sonoff/_changelog.ino | 1 + sonoff/sonoff_post.h | 26 +++++++++++++++++++++++++- sonoff/user_config.h | 3 ++- 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/platformio.ini b/platformio.ini index d333fd187660..c01485f5a64b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -16,6 +16,7 @@ env_default = sonoff ;env_default = sonoff-classic ;env_default = sonoff-knx ;env_default = sonoff-sensors +;env_default = sonoff-display ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN @@ -167,6 +168,20 @@ upload_resetmethod = ${common.upload_resetmethod} upload_speed = ${common.upload_speed} extra_scripts = ${common.extra_scripts} +[env:sonoff-display] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_DISPLAYS +monitor_speed = ${common.monitor_speed} +upload_port = ${common.upload_port} +upload_resetmethod = ${common.upload_resetmethod} +upload_speed = ${common.upload_speed} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 333a524a60a1..f2525b2a77e7 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Remove restart after ntpserver change and force NTP re-sync (#3890) * Release full Shelly2 support * Released tools/decode-config.py by Norbert Richter to decode configuration data. See file for information + * Add define USE_DISPLAYS for selecting image sonoff-display * * 6.2.1.6 20180922 * Removed commands PowerCal, VoltageCal and CurrentCal as more functionality is provided by commands PowerSet, VoltageSet and CurrentSet diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 8622d0818846..423a75f3c755 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -51,7 +51,7 @@ void KNX_CB_Action(message_t const &msg, void *arg); #endif #define USE_DHT // Default DHT11 sensor needs no external library -#define USE_ENERGY_SENSOR // Use energy sensors +#define USE_ENERGY_SENSOR // Use energy sensors (+14k code) #define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz #define USE_CSE7766 // Use energy sensor for Sonoff S31 and Pow R2 @@ -167,6 +167,30 @@ void KNX_CB_Action(message_t const &msg, void *arg); #undef USE_EMULATION // Disable Belkin WeMo and Hue Bridge emulation for Alexa (-16k code, -2k mem) #endif // USE_KNX_NO_EMULATION +/*********************************************************************************************\ + * [sonoff-display.bin] + * Provide an image with display drivers enabled +\*********************************************************************************************/ + +#ifdef USE_DISPLAYS + +#undef USE_ENERGY_SENSOR // Disable energy sensors (-14k code) +#undef USE_EMULATION // Disable Belkin WeMo and Hue Bridge emulation for Alexa (-16k code, -2k mem) + +#define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) + #define USE_DISPLAY // Add I2C Display Support (+2k code) + #define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0 + #define USE_DISPLAY_LCD // [DisplayModel 1] Enable Lcd display (I2C addresses 0x27 and 0x3F) (+6k code) + #define USE_DISPLAY_SSD1306 // [DisplayModel 2] Enable SSD1306 Oled 128x64 display (I2C addresses 0x3C and 0x3D) (+16k code) + #define USE_DISPLAY_MATRIX // [DisplayModel 3] Enable 8x8 Matrix display (I2C adresseses see below) (+11k code) + +#define USE_SPI // Hardware SPI using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK) in addition to two user selectable GPIOs(CS and DC) + #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) + +#undef USE_ARILUX_RF // Remove support for Arilux RF remote controller (-0k8 code, 252 iram (non 2.3.0)) +#undef USE_RF_FLASH // Remove support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB (-3k code) +#endif // USE_DISPLAYS + /*********************************************************************************************\ * Mandatory define for DS18x20 if changed by above image selections \*********************************************************************************************/ diff --git a/sonoff/user_config.h b/sonoff/user_config.h index b93e4421115f..f86350334614 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -321,7 +321,7 @@ #endif // USE_I2C // -- SPI sensors --------------------------------- -//#define USE_SPI // SPI using library TasmotaTFT +//#define USE_SPI // Hardware SPI using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK) in addition to two user selectable GPIOs(CS and DC) #ifdef USE_SPI #ifndef USE_DISPLAY @@ -384,6 +384,7 @@ //#define USE_CLASSIC // Create sonoff-classic with initial configuration tools WPS, SmartConfig and WifiManager //#define USE_SENSORS // Create sonoff-sensors with useful sensors enabled //#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation +//#define USE_DISPLAYS // Create sonoff-display with display drivers enabled //#define BE_MINIMAL // Create sonoff-minimal as intermediate firmware for OTA-MAGIC /*********************************************************************************************\ From e9d6a5bc4677197a56a4885886ef11ebf2a43ebb Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:19:49 +0200 Subject: [PATCH 163/798] added define Forgot to add #define D_JSON_UV_POWER "UvPower" --- sonoff/i18n.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 80f757447f28..1c628b7b7e46 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -132,6 +132,7 @@ #define D_JSON_UTC_TIME "UTC" #define D_JSON_UVINDEX "UvIndex" #define D_JSON_UV_LEVEL "UvLevel" +#define D_JSON_UV_POWER "UvPower" #define D_JSON_VCC "Vcc" #define D_JSON_VERSION "Version" #define D_JSON_VOLTAGE "Voltage" From baf81daaa2c896fa3f6fa7ba6a89b49ff9053f31 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:23:38 +0200 Subject: [PATCH 164/798] added text forgot the #define D_UNIT_INCREMENTS "inc" --- sonoff/language/bg-BG.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index a3ab3d53914a..ff7801984c2a 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -502,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kΩ" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From e6ae87fd829c25dcb337777aaa6f3331ff99edd3 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:24:44 +0200 Subject: [PATCH 165/798] added text forgot the #define D_UNIT_INCREMENTS "inc" --- sonoff/language/cs-CZ.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 3886c1b4db91..570cfd4c8f88 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -502,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "hod" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From abd5cb23fe7ac46816d107b5ea2c2be463a05383 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:27:10 +0200 Subject: [PATCH 166/798] Added text forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/de-DE.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 9bb14bfa5399..6e90ae409ad2 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -163,6 +163,7 @@ #define D_USER "Benutzer" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV-Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From a7d59f03fa1cb0be7721e8ad4351523858ea44cd Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:28:34 +0200 Subject: [PATCH 167/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/en-GB.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 5f6f0d76475d..21d8edab79da 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -163,6 +163,7 @@ #define D_USER "User" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -500,6 +501,7 @@ #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From b15a29c046edd5d75351c2900fc84e6fb0f4f1bf Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:29:27 +0200 Subject: [PATCH 168/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/el-GR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 1b666ae1e4d2..23b5a2705fbc 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -163,6 +163,7 @@ #define D_USER "Χρήστης" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 3fd8b8f7f8a1b1cf4badbdef3af616216c10ad42 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:32:17 +0200 Subject: [PATCH 169/798] Added text #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/es-AR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index dafa99900cf1..b67e6e79f02d 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -163,6 +163,7 @@ #define D_USER "Usuario" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Índice UV" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From cdc7b90652601a73052a55b1167f92fdf9c68beb Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:32:36 +0200 Subject: [PATCH 170/798] Added text #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/fr-FR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 8cbf0ce7d241..c4c913fecd62 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -163,6 +163,7 @@ #define D_USER "Utilisateur" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indice UV" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kΩ" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 9ad0bc149f43c3ac45a239c686f557f2308b1ff4 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:32:46 +0200 Subject: [PATCH 171/798] Added text #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/hu-HU.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 3c9f23334ed7..ee6b8a66a670 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -163,6 +163,7 @@ #define D_USER "Felhasználó" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "ó" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From a1d5032993d65e463934632746f73a80dc35761b Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:35:17 +0200 Subject: [PATCH 172/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/it-IT.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index b44f612f3935..b0fe0767a441 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -163,6 +163,7 @@ #define D_USER "Utente" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indice UV" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 55db6530ec61d9cc7a5d6613ebfbc6e2d166362b Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:35:29 +0200 Subject: [PATCH 173/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/nl-NL.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 4946dd94f8f9..70e55cb878e5 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -163,6 +163,7 @@ #define D_USER "Gebruiker" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV-index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From a7495af9edb5c6f148d9f913ac6df6e27eee8682 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:35:48 +0200 Subject: [PATCH 174/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/pl-PL.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index fa118b1b131b..40383fb53e56 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -163,6 +163,7 @@ #define D_USER "Użytkownik" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Godz" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 6b070e08cf046ec95ca7e6f2ff3b443aeb19d4f8 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:38:04 +0200 Subject: [PATCH 175/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/pt-BR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index bf1318864753..49affdf2f0e6 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -163,6 +163,7 @@ #define D_USER "Usuário" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Índice UV" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "H" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From dc937ed792a0e27ef773632fa0565c91b382353b Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:38:27 +0200 Subject: [PATCH 176/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/pt-PT.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index a3b67c3668bc..fd2e984518bb 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -163,6 +163,7 @@ #define D_USER "Utilizador" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indíce UV" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 65dbf4c709a0a3042ed28247f90aa7168fecfaed Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:38:40 +0200 Subject: [PATCH 177/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/ru-RU.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index a4e48067d010..9c62666931d6 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -163,6 +163,7 @@ #define D_USER "Пользователь" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Ч" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "кОм" #define D_UNIT_KILOWATTHOUR "кВт" #define D_UNIT_LUX "лк" From e719cfbf43a63e66d07e08ad3db8be28c7ece159 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:41:51 +0200 Subject: [PATCH 178/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/tr-TR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 62cec3eb09c8..0c411868e7fb 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -163,6 +163,7 @@ #define D_USER "Kullanıcı" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Indeksi" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -501,6 +502,7 @@ #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 85692d6f386f7aca47e9ab8d83c8ab54cfd39d0b Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:42:01 +0200 Subject: [PATCH 179/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/zh-CN.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 820cde18c928..59271d20189a 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -163,6 +163,7 @@ #define D_USER "用户名" #define D_UTC_TIME "UTC" #define D_UV_INDEX "紫外线指数" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -500,6 +501,7 @@ #define D_UNIT_AMPERE "安" #define D_UNIT_CENTIMETER "厘米" #define D_UNIT_HOUR "时" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "千欧" #define D_UNIT_KILOWATTHOUR "千瓦时" #define D_UNIT_LUX "勒克斯" From a47467704e235e87370605074eaa7c9461a0b517 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:42:07 +0200 Subject: [PATCH 180/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/uk-UK.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 7dccdb7db501..3a9b44afacf4 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -163,6 +163,7 @@ #define D_USER "Користувач" #define D_UTC_TIME "UTC" #define D_UV_INDEX "УФ індекс" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -502,6 +503,7 @@ #define D_UNIT_CENTIMETER "cм" #define D_UNIT_HERTZ "Гц" #define D_UNIT_HOUR "Г" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "кОм" #define D_UNIT_KILOWATTHOUR "кВт" #define D_UNIT_LUX "лк" From 63dbd6d0c94b597be723467a83c4b19cbeb17055 Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 25 Sep 2018 16:42:09 +0200 Subject: [PATCH 181/798] Added text Forgot the #define D_UNIT_INCREMENTS "inc" and #define D_UV_INDEX_1 "Low" --- sonoff/language/zh-TW.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 14052d9f3818..5b275b925870 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -163,6 +163,7 @@ #define D_USER "用戶名" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" +#define D_UV_INDEX_1 "Low" #define D_UV_INDEX_2 "Mid" #define D_UV_INDEX_3 "High" #define D_UV_INDEX_4 "Danger" @@ -500,6 +501,7 @@ #define D_UNIT_AMPERE "安" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_HOUR "時" #define D_UNIT_KILOOHM "千歐" #define D_UNIT_KILOWATTHOUR "千瓦時" From eb53605fc1ee76f3fd893b0728ef8b9117183060 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Sep 2018 17:03:22 +0200 Subject: [PATCH 182/798] Fix VEML6070 compile errors --- sonoff/i18n.h | 2 +- sonoff/user_config.h | 6 +++--- sonoff/xsns_11_veml6070.ino | 30 +++++++++++++++--------------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 1c628b7b7e46..c8d3e219f746 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -130,7 +130,7 @@ #define D_JSON_TYPE "Type" #define D_JSON_UPTIME "Uptime" #define D_JSON_UTC_TIME "UTC" -#define D_JSON_UVINDEX "UvIndex" +#define D_JSON_UV_INDEX "UvIndex" #define D_JSON_UV_LEVEL "UvLevel" #define D_JSON_UV_POWER "UvPower" #define D_JSON_VCC "Vcc" diff --git a/sonoff/user_config.h b/sonoff/user_config.h index b864d7aa6ca6..eceadc68d87c 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -282,9 +282,9 @@ #define USE_BMP // Enable BMP085/BMP180/BMP280/BME280 sensor (I2C address 0x76 or 0x77) (+4k code) // #define USE_BME680 // Enable support for BME680 sensor using Bosch BME680 library (+4k code) #define USE_BH1750 // Enable BH1750 sensor (I2C address 0x23 or 0x5C) (+0k5 code) -// #define USE_VEML6070 // Enable VEML6070 sensor (I2C addresses 0x38 and 0x39) (+0k5 code) -// #define USE_VEML6070_RSET 270000 // VEML6070, Rset in Ohm used on PCB board, default 270K = 270000ohm, range for this sensor: 220K ... 1Meg -// #define USE_VEML6070_SHOW_RAW // VEML6070, shows the raw value of UV-A +// #define USE_VEML6070 // Enable VEML6070 sensor (I2C addresses 0x38 and 0x39) (+1k5 code) + #define USE_VEML6070_RSET 270000 // VEML6070, Rset in Ohm used on PCB board, default 270K = 270000ohm, range for this sensor: 220K ... 1Meg + #define USE_VEML6070_SHOW_RAW // VEML6070, shows the raw value of UV-A // #define USE_ADS1115 // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Enable ADS1115 16 bit A/D converter (I2C address 0x48, 0x49, 0x4A or 0x4B) using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Enable INA219 (I2C address 0x40, 0x41 0x44 or 0x45) Low voltage and current sensor (+1k code) diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index be7d3daa03a8..f60c0f00f955 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -30,7 +30,7 @@ -------------------------------------------------------------------------------------------- Version Date Action Description -------------------------------------------------------------------------------------------- - + 1.0.0.1 20180925 tests - all tests are done with 1x sonoff sv, 2x Wemos D1 (not the mini) - 3 different VEMl6070 sensors from 3 different online shops - all the last three test where good and all looks working so far @@ -43,7 +43,7 @@ cleaned - source code a little bit added - missing void in function calls: void name(void) added - UV Risk level now defined as UV Index, 0.00 based on NASA standard with text behind the value - added - UV Power level now named as UV Power, used W/m2 because official standards + added - UV Power level now named as UV Power, used W/m2 because official standards added - automatic fill of the uv-risk compare table based on the coefficient calculation added - suspend and wakeup mode for the uv seonsor - current drain in wake-up-ed mode was around 180uA incl. I2C bus @@ -51,7 +51,7 @@ changed - 2x the power calculation about some incorrent data sheet values changed - float to double calculation because a rare effect on uv compare map filling - in that case @andrethomas was a big help too (while(work){output=lot_of_fun};) - added - USE_VEML6070_RSET + added - USE_VEML6070_RSET - in user_config as possible input, different resistor values depending on PCB types added - USE_VEML6070_SHOW_RAW - in user_config, show or show-NOT the uv raw value @@ -62,12 +62,12 @@ safety - personal, please read this: http://www.segurancaetrabalho.com.br/download/uv_index_karel_vanicek.pdf next - possible i will add the calculation for LAT and LONG coordinates for much more precission - show not only the UV Power value in W/m2, possible a @define value to show it as joule value - - add a #define to select how many characters are shown benhind the decimal point for the UV Index + - add a #define to select how many characters are shown benhind the decimal point for the UV Index --- 1.0.0.0 20180912 started - further development by mike2nl - https://github.com/mike2nl/Sonoff-Tasmota forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota base - code base from arendst too - + */ #ifdef USE_I2C @@ -87,8 +87,8 @@ #define VEML6070_RSET_DEFAULT 270000 // 270K default resistor value 270000 ohm, range from 220K..1Meg #define VEML6070_UV_MAX_INDEX 15 // normal 11, internal on weather laboratories and NASA it's 15 so far the sensor is linear #define VEML6070_UV_MAX_DEFAULT 11 // 11 = public default table values -#define VEML6070_POWER_COEFFCIENT 0.025 // based on calculations from Karel Vanicek and reorder by hand -#define VEML6070_TABLE_COEFFCIENT 32.86270591 // calculated by hand with help from a friend of mine, a professor which works in aero space things +#define VEML6070_POWER_COEFFCIENT 0.025 // based on calculations from Karel Vanicek and reorder by hand +#define VEML6070_TABLE_COEFFCIENT 32.86270591 // calculated by hand with help from a friend of mine, a professor which works in aero space things // (resistor, differences, power coefficients and official UV index calculations (LAT & LONG will be added later) /********************************************************************************************/ @@ -110,7 +110,7 @@ void Veml6070Detect(void) Wire.beginTransmission(veml6070_address); Wire.write((itime << 2) | 0x02); uint8_t status = Wire.endTransmission(); - + if (!status) { veml6070_type = 1; snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", veml6070_address); @@ -130,7 +130,7 @@ void Veml6070ModeCmd(boolean mode_cmd) } else { opmode = VEML6070_DISABLE; } - + veml6070_address = VEML6070_ADDR_L; Wire.beginTransmission(veml6070_address); Wire.write((opmode << 0) | 0x02 | (itime << 2)); @@ -165,7 +165,7 @@ double Veml6070UvRiskLevel(uint16_t uv_level) { double risk = 0; double uv_risk_map[VEML6070_UV_MAX_INDEX] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - + // fill the uv-risk compare table based on the coefficient calculation for (uint8_t i = 0; i < VEML6070_UV_MAX_INDEX; i++) { #ifdef USE_VEML6070_RSET @@ -179,7 +179,7 @@ double Veml6070UvRiskLevel(uint16_t uv_level) #else uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); #endif - } + } // get the uv-risk level if (uv_level < uv_risk_map[VEML6070_UV_MAX_INDEX-1]) { @@ -223,8 +223,8 @@ void Veml6070Show(boolean json) { if (veml6070_type) { // wakeup the sensor - Veml6070ModeCmd(1); - + Veml6070ModeCmd(1); + // get values from functions uint16_t uvlevel = Veml6070ReadUv(); double uvrisk = Veml6070UvRiskLevel(uvlevel); @@ -243,7 +243,7 @@ void Veml6070Show(boolean json) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_INDEX "\":%s}"), mqtt_data, str_uvrisk); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_POWER "\":%s}"), mqtt_data, str_uvpower); #ifdef USE_DOMOTICZ - if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, uvlevel) }; + if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, uvlevel); }; #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { @@ -270,7 +270,7 @@ void Veml6070Show(boolean json) } else { // else for Unknown or Out Of Range error = 99 snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX7, mqtt_data, str_uvrisk); - } + } snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_POWER, mqtt_data, str_uvpower); #endif // USE_WEBSERVER } From b78626fd480e2b8254e39afd0ca7832e8087623e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 25 Sep 2018 17:08:16 +0200 Subject: [PATCH 183/798] Updated with Shelly --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3f695f66667e..498cd2f80b14 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ See [Community](https://groups.google.com/d/forum/sonoffusers) for forum.
See [Chat](https://discord.gg/Ks2Kzd4) for more user experience. The following devices are supported: -- [iTead Sonoff Basic](https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch-1.html) +- [iTead Sonoff Basic (R2)](https://www.itead.cc/smart-home/sonoff-wifi-wireless-switch-1.html) - [iTead Sonoff RF](https://www.itead.cc/smart-home/sonoff-rf.html) - [iTead Sonoff SV](https://www.itead.cc/smart-home/sonoff-sv.html) - [iTead Sonoff TH10/TH16 with temperature sensor](https://www.itead.cc/smart-home/sonoff-th.html) @@ -90,10 +90,15 @@ The following devices are supported: - [MagicHome PWM LED controller](https://github.com/arendst/Sonoff-Tasmota/wiki/MagicHome-LED-strip-controller) - AriLux AL-LC01, AL-LC06 and AL-LC11 PWM LED controller - [Supla device - Espablo-inCan mod. for electrical Installation box](https://forum.supla.org/viewtopic.php?f=33&t=2188) -- [BlitzWolf BW-SHP2 Smart Socket with Energy Monitoring](https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html) +- [BlitzWolf BW-SHP2 Smart Socket with Energy Monitoring](https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html) - [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/) -- Xiaomi-Phillips Bulbs -- Wemos D1 mini, NodeMcu and Ledunia +- [Wemos D1 mini](https://wiki.wemos.cc/products:d1:d1_mini) +- [HuaFan Smart Socket](HuaFan-Smart-Socket) +- [Hyleton-313 Smart Plug](Hyleton-313-Smart-Plug) +- [Allterco Shelly 1](https://shelly.cloud/shelly1-open-source/) +- [Allterco Shelly 2 with Energy Monitoring](https://shelly.cloud/shelly2/) +- NodeMcu and Ledunia +- [KS-602 based switches like GresaTek, Jesiya, NewRice, Lyasi etc](https://ucexperiment.wordpress.com/2017/11/14/reprogramming-a-lyasi-wifi-wall-switch-with-esp8285/) ### Contribute You can contribute to Sonoff-Tasmota by From 71964e0aa46e945b7fa7d958cf926fa276d69339 Mon Sep 17 00:00:00 2001 From: localhost61 Date: Wed, 26 Sep 2018 00:59:00 +0200 Subject: [PATCH 184/798] Update French localization --- sonoff/language/fr-FR.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index c4c913fecd62..9a479177a3a9 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1.7 + * Updated until v6.2.1.7 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -65,7 +65,7 @@ #define D_BY "par" // Written by me #define D_BYTES "Bytes" #define D_CELSIUS "Celsius" -#define D_CHANNEL "Channel" +#define D_CHANNEL "Canal" #define D_CO2 "Dioxyde de carbone" #define D_CODE "code" // Button code #define D_COLDLIGHT "Froid" @@ -163,15 +163,15 @@ #define D_USER "Utilisateur" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Indice UV" -#define D_UV_INDEX_1 "Low" -#define D_UV_INDEX_2 "Mid" -#define D_UV_INDEX_3 "High" -#define D_UV_INDEX_4 "Danger" -#define D_UV_INDEX_5 "BurnL1/2" -#define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" +#define D_UV_INDEX_1 "Faible" +#define D_UV_INDEX_2 "Modéré" +#define D_UV_INDEX_3 "Élevé" +#define D_UV_INDEX_4 "Très élevé" +#define D_UV_INDEX_5 "Brûlure niv.1/2" +#define D_UV_INDEX_6 "Brûlure niv.3" +#define D_UV_INDEX_7 "Extrême" #define D_UV_LEVEL "Niveau UV" -#define D_UV_POWER "UV Power" +#define D_UV_POWER "Puissance UV" #define D_VERSION "Version" #define D_VOLTAGE "Tension" #define D_WARMLIGHT "Chaud" From 6798eb585441e6cbceb241878dfc65a2f0dee59d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 25 Sep 2018 21:00:56 -0300 Subject: [PATCH 185/798] Updated Spanish Translation --- sonoff/language/es-AR.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index b67e6e79f02d..713e166aba28 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -163,13 +163,13 @@ #define D_USER "Usuario" #define D_UTC_TIME "UTC" #define D_UV_INDEX "Índice UV" -#define D_UV_INDEX_1 "Low" -#define D_UV_INDEX_2 "Mid" -#define D_UV_INDEX_3 "High" -#define D_UV_INDEX_4 "Danger" -#define D_UV_INDEX_5 "BurnL1/2" -#define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" +#define D_UV_INDEX_1 "Bajo" +#define D_UV_INDEX_2 "Medio" +#define D_UV_INDEX_3 "Alto" +#define D_UV_INDEX_4 "Peligroso" +#define D_UV_INDEX_5 "Quemaduras 1 a 2 grad" +#define D_UV_INDEX_6 "Quemaduras 3 grad" +#define D_UV_INDEX_7 "Fuera de Rango" #define D_UV_LEVEL "Nivel UV" #define D_UV_POWER "UV Power" #define D_VERSION "Versión" From 8ff696b34b19cc2fcefcf2bce64ab6cb701a90b8 Mon Sep 17 00:00:00 2001 From: localhost61 Date: Wed, 26 Sep 2018 02:37:27 +0200 Subject: [PATCH 186/798] Correct the OoR translation (thanks Adrian ;-) ) --- sonoff/language/fr-FR.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 9a479177a3a9..a7adaea39123 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -169,7 +169,7 @@ #define D_UV_INDEX_4 "Très élevé" #define D_UV_INDEX_5 "Brûlure niv.1/2" #define D_UV_INDEX_6 "Brûlure niv.3" -#define D_UV_INDEX_7 "Extrême" +#define D_UV_INDEX_7 "Hors échelle" #define D_UV_LEVEL "Niveau UV" #define D_UV_POWER "Puissance UV" #define D_VERSION "Version" @@ -184,7 +184,7 @@ #define D_SERIAL_LOGGING_DISABLED "Journalisation série désactivée" #define D_SYSLOG_LOGGING_REENABLED "Jounalisation syslog réactivée" -#define D_SET_BAUDRATE_TO "Définir baudrate à" +#define D_SET_BAUDRATE_TO "Définir le débit à" #define D_RECEIVED_TOPIC "Topic reçu" // Terme MQTT #define D_DATA_SIZE "Taille données" #define D_ANALOG_INPUT "Analogique" From bac33345a05e57fc3fb17f8c0f82ac2f406151a8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 26 Sep 2018 10:13:44 +0200 Subject: [PATCH 187/798] 6.2.1.8 Extent status JSON 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff.ino | 9 +++++++-- sonoff/sonoff_version.h | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index f2525b2a77e7..a442bf59ec76 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.7 20180925 +/* 6.2.1.8 20180926 + * Change status JSON message providing more switch and retain information + * + * 6.2.1.7 20180925 * Remove restart after ntpserver change and force NTP re-sync (#3890) * Release full Shelly2 support * Released tools/decode-config.py by Norbert Richter to decode configuration data. See file for information diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index f0619f36230f..5bcf5fa7c7e4 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1412,6 +1412,7 @@ void PublishStatus(uint8_t payload) { uint8_t option = STAT; char stemp[MAX_FRIENDLYNAMES * (sizeof(Settings.friendlyname[0]) +MAX_FRIENDLYNAMES)]; + char stemp2[MAX_SWITCHES * 3]; // Workaround MQTT - TCP/IP stack queueing when SUB_PREFIX = PUB_PREFIX if (!strcmp(Settings.mqtt_prefix[0],Settings.mqtt_prefix[1]) && (!payload)) option++; // TELE @@ -1426,8 +1427,12 @@ void PublishStatus(uint8_t payload) for (byte i = 0; i < maxfn; i++) { snprintf_P(stemp, sizeof(stemp), PSTR("%s%s\"%s\"" ), stemp, (i > 0 ? "," : ""), Settings.friendlyname[i]); } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":[%s],\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"), - Settings.module +1, stemp, mqtt_topic, Settings.button_topic, power, Settings.poweronstate, Settings.ledstate, Settings.save_data, Settings.flag.save_state, Settings.flag.mqtt_button_retain, Settings.flag.mqtt_power_retain); + stemp2[0] = '\0'; + for (byte i = 0; i < MAX_SWITCHES; i++) { + snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%s%d" ), stemp2, (i > 0 ? "," : ""), Settings.switchmode[i]); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":[%s],\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\"" D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"), + Settings.module +1, stemp, mqtt_topic, Settings.button_topic, power, Settings.poweronstate, Settings.ledstate, Settings.save_data, Settings.flag.save_state, Settings.switch_topic, stemp2, Settings.flag.mqtt_button_retain, Settings.flag.mqtt_switch_retain, Settings.flag.mqtt_sensor_retain, Settings.flag.mqtt_power_retain); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS)); } diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 16c5547834b8..915ce52d2398 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020107 +#define VERSION 0x06020108 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From 6939d6eead78d72dc2ffc104f8a6578711c5afe1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 26 Sep 2018 11:56:58 +0200 Subject: [PATCH 188/798] Fix Shelly Ghost and Rule sensors * Change pinmode for no-pullup defined switches to pullup when configured as switchmode PUSHBUTTON (=3 and up) (#3896) * Add delay after restart before processing rule sensor data (#3811) --- sonoff/_changelog.ino | 2 ++ sonoff/sonoff.ino | 18 ++++++++++++++++-- sonoff/sonoff_template.h | 22 ++++++++++++++++++++-- sonoff/xdrv_10_rules.ino | 2 +- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index a442bf59ec76..06ebd36c141e 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,7 @@ /* 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information + * Change pinmode for no-pullup defined switches to pullup when configured as switchmode PUSHBUTTON (=3 and up) (#3896) + * Add delay after restart before processing rule sensor data (#3811) * * 6.2.1.7 20180925 * Remove restart after ntpserver change and force NTP re-sync (#3890) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 5bcf5fa7c7e4..6b354bb2462c 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -147,6 +147,7 @@ uint16_t blink_counter = 0; // Number of blink cycles uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level uint16_t holdbutton[MAX_KEYS] = { 0 }; // Timer for button hold +uint16_t switch_no_pullup = 0; // Switch pull-up bitmask flags int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) uint8_t serial_local = 0; // Handle serial locally; @@ -1119,6 +1120,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) else if ((CMND_SWITCHMODE == command_code) && (index > 0) && (index <= MAX_SWITCHES)) { if ((payload >= 0) && (payload < MAX_SWITCH_OPTION)) { Settings.switchmode[index -1] = payload; + GpioSwitchPinMode(index -1); } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.switchmode[index-1]); } @@ -2296,11 +2298,23 @@ void SerialInput() /********************************************************************************************/ +void GpioSwitchPinMode(uint8_t index) +{ + if (pin[GPIO_SWT1 +index] < 99) { +// pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, index) ? INPUT : INPUT_PULLUP); + + uint8_t no_pullup = 0; + if (bitRead(switch_no_pullup, index)) { + no_pullup = (Settings.switchmode[index] < PUSHBUTTON); + } + pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : (no_pullup) ? INPUT : INPUT_PULLUP); + } +} + void GpioInit() { uint8_t mpin; uint8_t key_no_pullup = 0; - uint16_t switch_no_pullup = 0; mytmplt def_module; if (!Settings.module || (Settings.module >= MAXMODULE)) { @@ -2457,7 +2471,7 @@ void GpioInit() for (byte i = 0; i < MAX_SWITCHES; i++) { lastwallswitch[i] = 1; // Init global to virtual switch state; if (pin[GPIO_SWT1 +i] < 99) { - pinMode(pin[GPIO_SWT1 +i], (16 == pin[GPIO_SWT1 +i]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, i) ? INPUT : INPUT_PULLUP); + GpioSwitchPinMode(i); lastwallswitch[i] = digitalRead(pin[GPIO_SWT1 +i]); // Set global now so doesn't change the saved power state on first switch check } virtualswitch[i] = lastwallswitch[i]; diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 781b1004d416..f5e332531138 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -399,9 +399,9 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { HUAFAN_SS, KMC_70011, AILIGHT, - WEMOS, + PHILIPS, WITTY, - PHILIPS + WEMOS }; // Default module settings @@ -1060,6 +1060,24 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { /* Optionals + { "Arilux LC10", // Arilux LC10 (ESP8285), RGBW + RF + // https://github.com/arendst/Sonoff-Tasmota/wiki/MagicHome-with-ESP8285 + // https://www.aliexpress.com/item/DC5-24V-Wireless-WIFI-LED-RGB-Controller-RGBW-Controller-IR-RF-Remote-Control-IOS-Android-for/32827253255.html + // https://www.aliexpress.com/item/Wifi-LED-RGB-Controler-DC12V-MIni-Wifi-RGB-RGBW-LED-Controller-for-RGB-RGBW-LED-Strip/32673444047.html + GPIO_USER, // GPIO00 Optional Button + GPIO_USER, // GPIO01 Serial RXD and Optional sensor + 0, + GPIO_USER, // GPIO03 Serial TXD and Optional sensor0 + GPIO_ARIRFRCV, // GPIO04 RF receiver input + GPIO_PWM2, // GPIO05 RGB LED Green + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_PWM3, // GPIO12 RGB LED Blue + GPIO_PWM4, // GPIO13 RGBW LED White + GPIO_PWM1, // GPIO14 RGB LED Red + GPIO_LED2_INV, // GPIO15 RF receiver control + 0, 0 + } + { "Xenon 3CH", // Xenon 3CH (ESP8266) - (#1128) 0, 0, 0, GPIO_KEY2, // GPIO03 Serial TXD and Optional sensor diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 303207c10be3..060bf085ff2c 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -425,7 +425,7 @@ void RulesEvery50ms() void RulesEvery100ms() { - if (Settings.rule_enabled) { // Any rule enabled + if (Settings.rule_enabled && (uptime > 4)) { // Any rule enabled and allow 4 seconds start-up time for sensors (#3811) mqtt_data[0] = '\0'; int tele_period_save = tele_period; tele_period = 2; // Do not allow HA updates during next function call From 76d203d5aaed61bf4769aaa51bce6f30953b23c0 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Wed, 26 Sep 2018 15:18:01 +0200 Subject: [PATCH 189/798] 'decode-config.py' version bugfixes & json output enhancements - add new arguments '--json-indent' and '--json-compact' - fix poblem with invalid string chars when having garbadge in flash - fix errors using configs for Tasmota < v6.2.1 - fix setting definition for v5.13.1/v5.14.0 --- tools/decode-config.py | 127 +++++++++++++++++++++++++++-------------- 1 file changed, 83 insertions(+), 44 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index 299f152c46f7..dc51e0f4294f 100644 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -21,7 +21,7 @@ Requirements: - Python - - pip json pycurl urllib2 configargparse + - pip install json pycurl urllib2 configargparse Instructions: Execute command with option -d to retrieve config data from device or @@ -31,10 +31,11 @@ Usage: - decode-config.py [-h] [-f ] [-d ] - [-u ] [-p ] [--format ] - [--sort ] [--raw] [--unhide-pw] [-o ] - [-c ] [-V] + decode-config.py [-h] [-f ] [-d ] [-u ] + [-p ] [--format ] + [--json-indent ] [--json-compact] + [--sort ] [--raw] [--unhide-pw] [-o ] + [-c ] [-V] Decode configuration of Sonoff-Tasmota device. Args that start with '--' (eg. -f) can also be set in a config file (specified via -c). Config file syntax @@ -46,21 +47,27 @@ -h, --help show this help message and exit -c , --config Config file, can be used instead of command parameter - (defaults to None) + (default: None) source: -f , --file file to retrieve Tasmota configuration from (default: None) - -d , --device - device to retrieve configuration from (default: None) + -d , --device + hostname or IP address to retrieve Tasmota + configuration from (default: None) -u , --username - for -d usage: http access username (default: admin) + host http access username (default: admin) -p , --password - for -d usage: http access password (default: None) + host http access password (default: None) output: --format output format ("json" or "text", default: "json") + --json-indent + pretty-printed JSON output using indent level + (default: "None") + --json-compact compact JSON output by eliminate whitespace (default: + "not compact") --sort sort result - can be "none" or "name" (default: "name") --raw output raw values (default: processed) @@ -72,7 +79,7 @@ info: -V, --version show program's version number and exit - Note: Either argument -d or -f must be given. + Either argument -d or -f must be given. Examples: @@ -113,7 +120,7 @@ sys.exit(9) -VER = '1.5.0008' +VER = '1.5.0009' PROG='{} v{} by Norbert Richter'.format(os.path.basename(sys.argv[0]),VER) CONFIG_FILE_XOR = 0x5A @@ -135,6 +142,8 @@ 'output': { 'format': 'json', + 'jsonindent': None, + 'jsoncompact': False, 'sort': 'name', 'raw': False, 'unhide-pw': False, @@ -940,7 +949,7 @@ def fingerprintstr(value): 'knx_CB_addr': ('3: + if not raw and len(fielddef)>3: if isinstance(fielddef[3],str): # use a format string return fielddef[3].format(value) elif callable(fielddef[3]): # use a format function @@ -1685,7 +1696,7 @@ def ConvertFieldValue(value, fielddef): return value -def GetField(dobj, fieldname, fielddef): +def GetField(dobj, fieldname, fielddef, raw=False): """ Get field value from definition @@ -1695,6 +1706,8 @@ def GetField(dobj, fieldname, fielddef): name of the field @param fielddef: see Settings desc above + @param raw + return raw values (True) or converted values (False) @return: read field value """ @@ -1715,13 +1728,13 @@ def GetField(dobj, fieldname, fielddef): subfielddef = (fielddef[0], addr, None, None if len(fielddef)<4 else fielddef[3]) length = GetFieldLength(subfielddef) if length != 0: - result.append(GetField(dobj, fieldname, subfielddef)) + result.append(GetField(dobj, fieldname, subfielddef, raw)) addr += length # tuple 2 contains a list with dict elif isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], dict): d = {} value = struct.unpack_from(fielddef[0], dobj, fielddef[1])[0] - d['base'] = ConvertFieldValue(value, fielddef); + d['base'] = ConvertFieldValue(value, fielddef, raw); union = fielddef[2] i = 0 for l in union: @@ -1738,8 +1751,8 @@ def GetField(dobj, fieldname, fielddef): if ord(result[:1])==0x00 or ord(result[:1])==0xff: result = '' s = str(result).split('\0')[0] - result = s #unicode(s, errors='replace') - result = ConvertFieldValue(result, fielddef) + result = unicode(s, errors='replace') + result = ConvertFieldValue(result, fielddef, raw) return result @@ -1762,40 +1775,52 @@ def DeEncrypt(obj): def Decode(obj): """ - Decodes (already decrypted) binary data stream + Decodes binary data stream @param obj: - binary config data + binary config data (decrypted) """ # get header data - cfg_size = GetField(obj, 'cfg_size', Setting_6_2_1['cfg_size']) - version = GetField(obj, 'version', Setting_6_2_1['version']) + version = GetField(obj, 'version', Setting_6_2_1['version'], raw=True) # search setting definition - setting = None + template = None for cfg in Settings: - if version >= cfg[0] and cfg_size == cfg[1]: + if version >= cfg[0]: template = cfg break - setting = template[2] # if we did not found a mathching setting - if setting is None: - exit(2, "Can't handle Tasmota configuration data for version 0x{:x} with {} bytes".format(version, cfg_size) ) + if template is None: + exit(2, "Can't handle Tasmota configuration data for version 0x{:x}".format(version) ) - if GetField(obj, 'cfg_crc', setting['cfg_crc']) != GetSettingsCrc(obj): + setting = template[2] + + # check size if exists + if 'cfg_size' in setting: + cfg_size = GetField(obj, 'cfg_size', setting['cfg_size'], raw=True) + # if we did not found a mathching setting + if cfg_size != template[1]: + exit(2, "Data size does not match. Expected {} bytes, read {} bytes.".format(template[1], cfg_size) ) + + # check crc if exists + if 'cfg_crc' in setting: + cfg_crc = GetField(obj, 'cfg_crc', setting['cfg_crc'], raw=True) + else: + cfg_crc = GetSettingsCrc(obj) + if cfg_crc != GetSettingsCrc(obj): exit(3, 'Data crc error' ) config = {} config['version_template'] = '0x{:x}'.format(template[0]) for name in setting: - config[name] = GetField(obj, name, setting[name]) + config[name] = GetField(obj, name, setting[name], args.raw) if args.sort == 'name': config = collections.OrderedDict(sorted(config.items())) if args.format == 'json': - print json.dumps(config, sort_keys=args.sort=='name') + print json.dumps(config, sort_keys=args.sort=='name', indent=args.jsonindent, separators=(',', ':') if args.jsoncompact else (', ', ': ') ) else: for key,value in config.items(): print '{} = {}'.format(key, repr(value)) @@ -1804,7 +1829,7 @@ def Decode(obj): if __name__ == "__main__": parser = configargparse.ArgumentParser(description='Decode configuration of Sonoff-Tasmota device.', - epilog='Note: Either argument -d or -f must be given.') + epilog='Either argument -d or -f must be given.') source = parser.add_argument_group('source') source.add_argument('-f', '--file', @@ -1813,20 +1838,20 @@ def Decode(obj): default=DEFAULTS['source']['tasmotafile'], help='file to retrieve Tasmota configuration from (default: {})'.format(DEFAULTS['source']['tasmotafile'])) source.add_argument('-d', '--device', - metavar='', + metavar='', dest='device', default=DEFAULTS['source']['device'], - help='device to retrieve configuration from (default: {})'.format(DEFAULTS['source']['device']) ) + help='hostname or IP address to retrieve Tasmota configuration from (default: {})'.format(DEFAULTS['source']['device']) ) source.add_argument('-u', '--username', metavar='', dest='username', default=DEFAULTS['source']['username'], - help='for -d usage: http access username (default: {})'.format(DEFAULTS['source']['username'])) + help='host http access username (default: {})'.format(DEFAULTS['source']['username'])) source.add_argument('-p', '--password', metavar='', dest='password', default=DEFAULTS['source']['password'], - help='for -d usage: http access password (default: {})'.format(DEFAULTS['source']['password'])) + help='host http access password (default: {})'.format(DEFAULTS['source']['password'])) output = parser.add_argument_group('output') output.add_argument('--format', @@ -1835,6 +1860,17 @@ def Decode(obj): choices=['json', 'text'], default=DEFAULTS['output']['format'], help='output format ("json" or "text", default: "{}")'.format(DEFAULTS['output']['format']) ) + output.add_argument('--json-indent', + metavar='', + dest='jsonindent', + type=int, + default=DEFAULTS['output']['jsonindent'], + help='pretty-printed JSON output using indent level (default: "{}")'.format(DEFAULTS['output']['jsonindent']) ) + output.add_argument('--json-compact', + dest='jsoncompact', + action='store_true', + default=DEFAULTS['output']['jsoncompact'], + help='compact JSON output by eliminate whitespace (default: "{}")'.format('compact' if DEFAULTS['output']['jsoncompact'] else 'not compact') ) output.add_argument('--sort', metavar='', dest='sort', @@ -1862,7 +1898,7 @@ def Decode(obj): dest='configfile', default=DEFAULTS['DEFAULT']['configfile'], is_config_file=True, - help='Config file, can be used instead of command parameter (defaults to {})'.format(DEFAULTS['DEFAULT']['configfile']) ) + help='Config file, can be used instead of command parameter (default: {})'.format(DEFAULTS['DEFAULT']['configfile']) ) info = parser.add_argument_group('info') info.add_argument('-V', '--version', action='version', version=PROG) @@ -1921,4 +1957,7 @@ def Decode(obj): Decode(cfg) else: - exit(4, "Could not read configuration data from {} '{}'".format('device' if args.device is not None else 'file', args.device if args.device is not None else args.tasmotafile) ) \ No newline at end of file + exit(4, "Could not read configuration data from {} '{}'".format('device' if args.device is not None else 'file', \ + args.device if args.device is not None else args.tasmotafile) ) + + sys.exit(0) From 8022bca19cd49f63f8bfc7bf7fcb5b3d4b940090 Mon Sep 17 00:00:00 2001 From: znanev <20048364+znanev@users.noreply.github.com> Date: Wed, 26 Sep 2018 18:27:23 +0100 Subject: [PATCH 190/798] Update Bulgarian language file --- sonoff/language/bg-BG.h | 50 ++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index ff7801984c2a..d79eb5210f61 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.2.0.1 + * Updated until v6.2.1.8 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -82,7 +82,7 @@ #define D_DNS_SERVER "DNS Сървър" #define D_DONE "Изпълнено" #define D_DST_TIME "DST" -#define D_ECO2 "eCO2" +#define D_ECO2 "eCO₂" #define D_EMULATION "Емулация" #define D_ENABLED "Активиран" #define D_ERASE "Изтриване" @@ -163,15 +163,15 @@ #define D_USER "Потребител" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV индекс" -#define D_UV_INDEX_1 "Low" -#define D_UV_INDEX_2 "Mid" -#define D_UV_INDEX_3 "High" -#define D_UV_INDEX_4 "Danger" -#define D_UV_INDEX_5 "BurnL1/2" -#define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" -#define D_UV_LEVEL "Ниво на ултравиолетово излъчване" -#define D_UV_POWER "UV Power" +#define D_UV_INDEX_1 "Нисък" +#define D_UV_INDEX_2 "Среден" +#define D_UV_INDEX_3 "Висок" +#define D_UV_INDEX_4 "Много висок" +#define D_UV_INDEX_5 "Изгаряне 1/2 степен" +#define D_UV_INDEX_6 "Изгаряне 3-та степен" +#define D_UV_INDEX_7 "Извън обхват" +#define D_UV_LEVEL "UV ниво" +#define D_UV_POWER "UV мощност" #define D_VERSION "Версия" #define D_VOLTAGE "Напрежение" #define D_WARMLIGHT "Топла" @@ -181,8 +181,8 @@ #define D_WARNING_MINIMAL_VERSION "ПРЕДУПРЕЖДЕНИЕ Тази версия не поддържа постоянни настройки" #define D_LEVEL_10 "ниво 1-0" #define D_LEVEL_01 "ниво 0-1" -#define D_SERIAL_LOGGING_DISABLED "Серийния логинг изключен" -#define D_SYSLOG_LOGGING_REENABLED "Системния логинг активиран" +#define D_SERIAL_LOGGING_DISABLED "Серийният лог изключен" +#define D_SYSLOG_LOGGING_REENABLED "Системният лог активиран" #define D_SET_BAUDRATE_TO "Задаване скорост на предаване (Baudrate)" #define D_RECEIVED_TOPIC "Получен топик" @@ -194,7 +194,7 @@ #define D_BLOCKED_LOOP "Блокиран цикъл" #define D_WPS_FAILED_WITH_STATUS "WPS конфигурацията е НЕУСПЕШНА със статус" #define D_ACTIVE_FOR_3_MINUTES "активно в течение на 3 минути" -#define D_FAILED_TO_START "неуспешно стартиране" +#define D_FAILED_TO_START "Неуспешно стартиране" #define D_PATCH_ISSUE_2186 "Проблем с патч 2186" #define D_CONNECTING_TO_AP "Свързване към точка за достъп" #define D_IN_MODE "в режим" @@ -241,7 +241,7 @@ #define D_CONFIGURE_WIFI "Конфигурация на WiFi" #define D_CONFIGURE_MQTT "Конфигурация на MQTT" #define D_CONFIGURE_DOMOTICZ "Конфигурация на Domoticz" -#define D_CONFIGURE_LOGGING "Конфигурация на логинга" +#define D_CONFIGURE_LOGGING "Конфигурация на лога" #define D_CONFIGURE_OTHER "Драги конфигурации" #define D_CONFIRM_RESET_CONFIGURATION "Потвърдете изчистването" #define D_RESET_CONFIGURATION "Изчистване на конфигурацията" @@ -275,7 +275,7 @@ #define D_CLIENT "Клиент" #define D_FULL_TOPIC "Пълен топик" -#define D_LOGGING_PARAMETERS "Параметри на логинга" +#define D_LOGGING_PARAMETERS "Параметри на лога" #define D_SERIAL_LOG_LEVEL "Степен на серийния лог" #define D_WEB_LOG_LEVEL "Степен на Уеб лога" #define D_SYS_LOG_LEVEL "Степен на системния лог" @@ -379,13 +379,13 @@ #define D_DOMOTICZ_TEMP "Temp" #define D_DOMOTICZ_TEMP_HUM "Temp,Hum" #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" - #define D_DOMOTICZ_POWER_ENERGY "Power,Energy" - #define D_DOMOTICZ_ILLUMINANCE "Illuminance" - #define D_DOMOTICZ_COUNT "Count/PM1" - #define D_DOMOTICZ_VOLTAGE "Voltage/PM2,5" - #define D_DOMOTICZ_CURRENT "Current/PM10" - #define D_DOMOTICZ_AIRQUALITY "AirQuality" -#define D_DOMOTICZ_UPDATE_TIMER "Update timer" + #define D_DOMOTICZ_POWER_ENERGY "Мощност,Енергия" + #define D_DOMOTICZ_ILLUMINANCE "Осветеност" + #define D_DOMOTICZ_COUNT "Брояч/PM1" + #define D_DOMOTICZ_VOLTAGE "Напрежение/PM2,5" + #define D_DOMOTICZ_CURRENT "Ток/PM10" + #define D_DOMOTICZ_AIRQUALITY "Качество на въздуха" +#define D_DOMOTICZ_UPDATE_TIMER "Период на опресняване" // xdrv_09_timers.ino #define D_CONFIGURE_TIMER "Конфигуриране на таймер" @@ -464,7 +464,7 @@ #define D_SENSOR_I2C_SCL "I2C SCL" #define D_SENSOR_I2C_SDA "I2C SDA" #define D_SENSOR_WS2812 "WS2812" -#define D_SENSOR_DFR562 "MP3 Player" +#define D_SENSOR_DFR562 "MP3 плейър" #define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_SWITCH "Ключ" // Suffix "1" #define D_SENSOR_BUTTON "Бутон" // Suffix "1" @@ -506,7 +506,7 @@ #define D_UNIT_KILOOHM "kΩ" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" -#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m3" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "µg/m³" #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" From 9acbcc805f206dbbab0dde03d7666f6505e79e7b Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 26 Sep 2018 20:35:39 +0200 Subject: [PATCH 191/798] Fix logic for forced light discovery --- sonoff/xdrv_12_home_assistant.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index b085947ae723..c4e5d833b0d6 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -76,7 +76,7 @@ void HAssDiscoverRelay() for (int i = 1; i <= MAX_RELAYS; i++) { is_light = ((i == devices_present) && (light_type)); - is_topic_light = Settings.flag.hass_light; + is_topic_light = Settings.flag.hass_light || is_light; mqtt_data[0] = '\0'; // Clear retained message From 3bb8b2fe261d5c22dcce4f75dc017302bc2e0d92 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Wed, 26 Sep 2018 22:10:32 +0200 Subject: [PATCH 192/798] Update de-DE.h --- sonoff/language/de-DE.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 6e90ae409ad2..07dcc9bfd394 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -163,15 +163,15 @@ #define D_USER "Benutzer" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV-Index" -#define D_UV_INDEX_1 "Low" -#define D_UV_INDEX_2 "Mid" -#define D_UV_INDEX_3 "High" -#define D_UV_INDEX_4 "Danger" -#define D_UV_INDEX_5 "BurnL1/2" -#define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" -#define D_UV_LEVEL "UV-Level" -#define D_UV_POWER "UV Power" +#define D_UV_INDEX_1 "Niedrig" +#define D_UV_INDEX_2 "Mittel" +#define D_UV_INDEX_3 "Hoch" +#define D_UV_INDEX_4 "Intensiv" +#define D_UV_INDEX_5 "Gefährlich" +#define D_UV_INDEX_6 "Schädlich" +#define D_UV_INDEX_7 "Messwert!" +#define D_UV_LEVEL "UV-Index" +#define D_UV_POWER "UV Intensität" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" #define D_WARMLIGHT "warm" From 86b3ccf6099b85a7bd71961d737e2fd9b82a2210 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Wed, 26 Sep 2018 22:20:19 +0200 Subject: [PATCH 193/798] Update de-DE.h --- sonoff/language/de-DE.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 07dcc9bfd394..72f63f9c4ad6 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -170,7 +170,7 @@ #define D_UV_INDEX_5 "Gefährlich" #define D_UV_INDEX_6 "Schädlich" #define D_UV_INDEX_7 "Messwert!" -#define D_UV_LEVEL "UV-Index" +#define D_UV_LEVEL "UV-Level" #define D_UV_POWER "UV Intensität" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" From a67efa0ab2c36e4c94de31c13e93d6ccbfc382aa Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 26 Sep 2018 23:02:55 -0300 Subject: [PATCH 194/798] Added new triggers for rules on boot time To make it possible to trigger a rule at boot time with the state of the switches or relays (in order to take decisions), 2 new trigger types has been added: * SWITCH1#BOOT to be used like: ON SWITCH1#BOOT DO ... %value% ENDON ON SWITCH1#BOOT=0 DO .... ENDON ON SWITCH1#BOOT=1 DO .... ENDON and * POWER1#BOOT to be used like: ON POWER1#BOOT DO ... %value% ENDON ON POWER1#BOOT=0 DO .... ENDON ON POWER1#BOOT=1 DO .... ENDON --- sonoff/xdrv_10_rules.ino | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 060bf085ff2c..b13dfc771229 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -376,6 +376,25 @@ void RulesEvery50ms() RulesProcessEvent(json_event); } } + } else { + // Boot time POWER OUTPUTS (Relays) Status + for (byte i = 0; i < devices_present; i++) { + uint8_t new_state = (rules_new_power >> i) &1; + snprintf_P(json_event, sizeof(json_event), PSTR("{\"Power%d\":{\"Boot\":%d}}"), i +1, new_state); + RulesProcessEvent(json_event); + } + // Boot time SWITCHES Status + for (byte i = 0; i < MAX_SWITCHES; i++) { +#ifdef USE_TM1638 + if ((pin[GPIO_SWT1 +i] < 99) || ((pin[GPIO_TM16CLK] < 99) && (pin[GPIO_TM16DIO] < 99) && (pin[GPIO_TM16STB] < 99))) { +#else + if (pin[GPIO_SWT1 +i] < 99) { +#endif // USE_TM1638 + boolean swm = ((FOLLOW_INV == Settings.switchmode[i]) || (PUSHBUTTON_INV == Settings.switchmode[i]) || (PUSHBUTTONHOLD_INV == Settings.switchmode[i])); + snprintf_P(json_event, sizeof(json_event), PSTR("{\"" D_JSON_SWITCH "%d\":{\"Boot\":%d}}"), i +1, (swm ^ lastwallswitch[i])); + RulesProcessEvent(json_event); + } + } } rules_old_power = rules_new_power; } From a84b38dae2b542f5c0a596b05084d15e482a63ed Mon Sep 17 00:00:00 2001 From: Staars Date: Thu, 27 Sep 2018 08:34:12 +0200 Subject: [PATCH 195/798] intermediate version for aTime-adjustment --- sonoff/xsns_27_apds9960.ino | 91 +++++++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 20 deletions(-) diff --git a/sonoff/xsns_27_apds9960.ino b/sonoff/xsns_27_apds9960.ino index 2907bc0309c8..d2e5dbc8b9c5 100644 --- a/sonoff/xsns_27_apds9960.ino +++ b/sonoff/xsns_27_apds9960.ino @@ -39,7 +39,7 @@ * I2C Address: 0x39 \*********************************************************************************************/ -#if defined(USE_SHT) || defined(USE_VEML6070) +#if defined(USE_SHT) || defined(USE_VEML6070) || defined(USE_TSL2561) #warning **** Turned off conflicting drivers SHT and VEML6070 **** #ifdef USE_SHT #undef USE_SHT // SHT-Driver blocks gesture sensor @@ -47,6 +47,9 @@ #ifdef USE_VEML6070 #undef USE_VEML6070 // address conflict on the I2C-bus #endif + #ifdef USE_TSL2561 + #undef USE_TSL2561 // possible address conflict on the I2C-bus + #endif #endif #define APDS9960_I2C_ADDR 0x39 @@ -64,10 +67,11 @@ uint8_t APDS9960addr; uint8_t APDS9960type = 0; -char APDS9960stype[7]; +char APDS9960stype[9]; char currentGesture[6]; uint8_t gesture_mode = 1; + volatile uint8_t recovery_loop_counter = 0; //count number of stateloops to switch the sensor off, if needed #define APDS9960_LONG_RECOVERY 50 //long pause after sensor overload in loops #define APDS9960_MAX_GESTURE_CYCLES 50 //how many FIFO-reads are allowed to prevent crash @@ -78,8 +82,7 @@ const char HTTP_APDS_9960_SNS[] PROGMEM = "%s" "{s}" "Red" "{m}%s{e}" "{s}" "Green" "{m}%s{e}" "{s}" "Blue" "{m}%s{e}" - "{s}" "Ambient" "{m}%s{e}" - "{s}" "Illuminance" "{m}%s " D_UNIT_LUX "{e}" + "{s}" "Ambient" "{m}%s " D_UNIT_LUX "{e}" "{s}" "CCT" "{m}%s " "K" "{e}" // calculated color temperature in Kelvin "{s}" "Proximity" "{m}%s{e}"; // {s} = , {m} = , {e} = #endif // USE_WEBSERVER @@ -209,7 +212,7 @@ const char HTTP_APDS_9960_SNS[] PROGMEM = "%s" #define GWTIME_39_2MS 7 /* Default values */ -#define DEFAULT_ATIME 219 // 103ms +#define DEFAULT_ATIME 0xdb // 103ms = 0xdb #define DEFAULT_WTIME 246 // 27ms #define DEFAULT_PROX_PPULSE 0x87 // 16us, 8 pulses #define DEFAULT_GESTURE_PPULSE 0x89 // 16us, 10 pulses ---89 @@ -218,7 +221,7 @@ const char HTTP_APDS_9960_SNS[] PROGMEM = "%s" #define DEFAULT_CONFIG1 0x60 // No 12x wait (WTIME) factor #define DEFAULT_LDRIVE LED_DRIVE_100MA #define DEFAULT_PGAIN PGAIN_4X -#define DEFAULT_AGAIN AGAIN_4X +#define DEFAULT_AGAIN AGAIN_4X // we have to divide by the same facot at the end #define DEFAULT_PILT 0 // Low proximity threshold #define DEFAULT_PIHT 50 // High proximity threshold #define DEFAULT_AILT 0xFFFF // Force interrupt for calibration @@ -287,6 +290,7 @@ typedef struct gesture_data_type { } color_data_type; color_data_type color_data; + uint8_t APDS9960_aTime = DEFAULT_ATIME; /******************************************************************************* @@ -360,7 +364,7 @@ void calculateColorTemperature() /* and 60W incandescent values for a wide range. */ /* Note: Y = Illuminance or lux */ X = (-0.14282F * color_data.r) + (1.54924F * color_data.g) + (-0.95641F * color_data.b); - Y = (-0.32466F * color_data.r) + (1.57837F * color_data.g) + (-0.73191F * color_data.b); // this is Lux + Y = (-0.32466F * color_data.r) + (1.57837F * color_data.g) + (-0.73191F * color_data.b); // this is Lux ... under certain circumstances Z = (-0.68202F * color_data.r) + (0.77073F * color_data.g) + ( 0.56332F * color_data.b); /* 2. Calculate the chromaticity co-ordinates */ @@ -372,7 +376,6 @@ void calculateColorTemperature() /* Calculate the final CCT */ color_data.cct = (449.0F * powf(n, 3)) + (3525.0F * powf(n, 2)) + (6823.3F * n) + 5520.33F; - color_data.lux = Y; // according to Adafruit code comments this seems to be not a perfect solution return; } @@ -1611,7 +1614,7 @@ void readAllColorAndProximityData() if (I2cReadBuffer(APDS9960_I2C_ADDR, APDS9960_CDATAL, (uint8_t *) &color_data, (uint16_t)9)) { // not absolutely shure, if this is a correct way to do this, but it is very short - // we fill the struct byte by byte + // we fill the struct byte by byte } } @@ -1803,11 +1806,11 @@ void handleGesture() { break; case DIR_LEFT: snprintf_P(log, sizeof(log), PSTR("LEFT")); - snprintf_P(currentGesture, sizeof(currentGesture), PSTR("Left")); + snprintf_P(currentGesture, sizeof(currentGesture), PSTR("Left")); break; case DIR_RIGHT: snprintf_P(log, sizeof(log), PSTR("RIGHT")); - snprintf_P(currentGesture, sizeof(currentGesture), PSTR("Right")); + snprintf_P(currentGesture, sizeof(currentGesture), PSTR("Right")); break; default: if(APDS9960_overload) @@ -1832,6 +1835,41 @@ void handleGesture() { } } +void APDS9960_adjustATime(void) // not really used atm +{ + //readAllColorAndProximityData(); + I2cValidRead16LE(&color_data.a, APDS9960_I2C_ADDR, APDS9960_CDATAL); + //disablePower(); + + if (color_data.a < (uint16_t)20){ + APDS9960_aTime = 0x40; + } + else if (color_data.a < (uint16_t)40){ + APDS9960_aTime = 0x80; + } + else if (color_data.a < (uint16_t)50){ + APDS9960_aTime = DEFAULT_ATIME; + } + else if (color_data.a < (uint16_t)70){ + APDS9960_aTime = 0xc0; + } + if (color_data.a < 200){ + APDS9960_aTime = 0xe9; + } +/* if (color_data.a < 10000){ + APDS9960_aTime = 0xF0; + }*/ + else{ + APDS9960_aTime = 0xff; + } + + //disableLightSensor(); + I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, APDS9960_aTime); + enablePower(); + enableLightSensor(); + delay(20); +} + void APDS9960_loop() { @@ -1910,29 +1948,30 @@ void APDS9960_show(boolean json) char green_chr[10]; char blue_chr[10]; char ambient_chr[10]; - char illuminance_chr[10]; char cct_chr[10]; char prox_chr[10]; readAllColorAndProximityData(); - sprintf (ambient_chr, "%u", color_data.a); + + sprintf (ambient_chr, "%u", color_data.a/4); sprintf (red_chr, "%u", color_data.r); sprintf (green_chr, "%u", color_data.g); sprintf (blue_chr, "%u", color_data.b ); sprintf (prox_chr, "%u", color_data.p ); + /* disableLightSensor(); + I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, DEFAULT_ATIME); // reset to default + enableLightSensor();*/ + calculateColorTemperature(); // and calculate Lux sprintf (cct_chr, "%u", color_data.cct); - sprintf (illuminance_chr, "%u", color_data.lux); - - if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"Red\":%s,\"Green\":%s,\"Blue\":%s,\"Ambient\":%s,\"Illuminance\":%s,\"CCT\":%s,\"Proximity\":%s}"), - mqtt_data, APDS9960stype, red_chr, green_chr, blue_chr, ambient_chr, illuminance_chr, cct_chr, prox_chr); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"Red\":%s,\"Green\":%s,\"Blue\":%s,\"Ambient\":%s,\"CCT\":%s,\"Proximity\":%s}"), + mqtt_data, APDS9960stype, red_chr, green_chr, blue_chr, ambient_chr, cct_chr, prox_chr); #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_APDS_9960_SNS, mqtt_data, red_chr, green_chr, blue_chr, ambient_chr, illuminance_chr, cct_chr, prox_chr ); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_APDS_9960_SNS, mqtt_data, red_chr, green_chr, blue_chr, ambient_chr, cct_chr, prox_chr ); #endif // USE_WEBSERVER } } @@ -1952,6 +1991,7 @@ void APDS9960_show(boolean json) * Sensor27 | | Show current gesture mode * Sensor27 | 0 / Off | Disable gesture mode * Sensor27 | 1 / On | Enable gesture mode + * Sensor27 | 2 / On | Enable gesture mode with half gain \*********************************************************************************************/ bool APDS9960CommandSensor() @@ -1973,7 +2013,8 @@ bool APDS9960CommandSensor() enableGestureSensor(); gesture_mode = 1; } - case 2: + break; + case 2: // gain of 2x , needed for some models if (APDS9960type) { setGestureGain(GGAIN_2X); setProximityGain(PGAIN_2X); @@ -1981,6 +2022,16 @@ bool APDS9960CommandSensor() enableGestureSensor(); gesture_mode = 1; } + break; + default: + int temp_aTime = (uint8_t)XdrvMailbox.payload; + if (temp_aTime > 2 && temp_aTime < 256){ + disablePower(); + I2cWrite8(APDS9960_I2C_ADDR, APDS9960_ATIME, temp_aTime); + enablePower(); + enableLightSensor(); + } + break; } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_SENSOR_INDEX_SVALUE, XSNS_27, GetStateText(gesture_mode)); From 1a4458528e1f1269062d03ad45055779e8895959 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 27 Sep 2018 18:36:42 +0200 Subject: [PATCH 196/798] Add Neo Coolcam support Add support for Neo Coolcam Wifi Smart Power Plug --- sonoff/_changelog.ino | 3 +++ sonoff/sonoff_template.h | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 06ebd36c141e..ebf1b83cbfd4 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,9 @@ * Change status JSON message providing more switch and retain information * Change pinmode for no-pullup defined switches to pullup when configured as switchmode PUSHBUTTON (=3 and up) (#3896) * Add delay after restart before processing rule sensor data (#3811) + * Fix Home Assistant forced light discovery (#3908) + * Add rule triggers SWITCH1#BOOT and POWER1#BOOT (#3904, #3910) + * Add support for Neo Coolcam Wifi Smart Power Plug * * 6.2.1.7 20180925 * Remove restart after ntpserver change and force NTP re-sync (#3890) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f5e332531138..8374fa09da3a 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -231,6 +231,7 @@ enum SupportedModules { SHELLY1, SHELLY2, PHILIPS, + NEO_COOLCAM, MAXMODULE }; /********************************************************************************************/ @@ -390,6 +391,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { SHELLY1, SHELLY2, BLITZWOLF_BWSHP2, + NEO_COOLCAM, H801, MAGICHOME, ARILUX_LC01, @@ -1054,6 +1056,16 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0, GPIO_PWM1, // GPIO15 light intensity 0, 0 + }, + { "Neo Coolcam", // Neo Coolcam (ESP8266) + // https://www.banggood.com/NEO-COOLCAM-WiFi-Mini-Smart-Plug-APP-Remote-Control-Timing-Smart-Socket-EU-Plug-p-1288562.html?cur_warehouse=CN + 0, 0, 0, 0, + GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) + 0, + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPIO_KEY1, // GPIO13 Button + 0, 0, 0, 0 } }; From 1a0d630da214a180b77096f7f4129dc701562a4d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Sep 2018 11:48:55 +0200 Subject: [PATCH 197/798] Removed debug code Removed unavailable debug code (#3917) --- sonoff/settings.ino | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 0d8fa451a39e..95e6ce36726d 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -86,20 +86,12 @@ void RtcSettingsSave() RtcSettings.valid = RTC_MEM_VALID; ESP.rtcUserMemoryWrite(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); rtc_settings_crc = GetRtcSettingsCrc(); -#ifdef DEBUG_THEO - AddLog_P(LOG_LEVEL_DEBUG, PSTR("Dump: Save")); - RtcSettingsDump(); -#endif // DEBUG_THEO } } void RtcSettingsLoad() { ESP.rtcUserMemoryRead(100, (uint32_t*)&RtcSettings, sizeof(RTCMEM)); // 0x290 -#ifdef DEBUG_THEO - AddLog_P(LOG_LEVEL_DEBUG, PSTR("Dump: Load")); - RtcSettingsDump(); -#endif // DEBUG_THEO if (RtcSettings.valid != RTC_MEM_VALID) { memset(&RtcSettings, 0, sizeof(RTCMEM)); RtcSettings.valid = RTC_MEM_VALID; From 4b7c797fb76cf8e6ee1a5680b5af430705fbbf65 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Sep 2018 15:48:42 +0200 Subject: [PATCH 198/798] 6.2.1.9 Apparent/Reactive Power 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) --- sonoff/_changelog.ino | 5 +- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 26 ++++++ sonoff/xdrv_03_energy.ino | 148 +++++++++++++++++++++-------------- sonoff/xnrg_01_hlw8012.ino | 7 +- sonoff/xnrg_02_cse7766.ino | 15 ++-- sonoff/xnrg_03_pzem004t.ino | 3 +- sonoff/xnrg_04_mcp39f501.ino | 7 +- sonoff/xnrg_05_pzem2.ino | 6 +- 9 files changed, 138 insertions(+), 81 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index ebf1b83cbfd4..abf4572f687b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.8 20180926 +/* 6.2.1.9 20180928 + * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) + * + * 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information * Change pinmode for no-pullup defined switches to pullup when configured as switchmode PUSHBUTTON (=3 and up) (#3896) * Add delay after restart before processing rule sensor data (#3811) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 915ce52d2398..4f2b5c0ece53 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020108 +#define VERSION 0x06020109 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index fb2b5eae323e..fc73e726e79d 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -494,6 +494,32 @@ double FastPrecisePow(double a, double b) return r * u.d; } +uint32_t SqrtInt(uint32_t num) +{ + if (num <= 1) { + return num; + } + + uint32_t x = num / 2; + uint32_t y; + do { + y = (x + num / x) / 2; + if (y >= x) { + return x; + } + x = y; + } while (true); +} + +uint32_t RoundSqrtInt(uint32_t num) +{ + uint32_t s = SqrtInt(4 * num); + if (s & 1) { + s++; + } + return s / 2; +} + char* GetTextIndexed(char* destination, size_t destination_size, uint16_t index, const char* haystack) { // Returns empty string if not found diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 3ccad7df4ae3..13ab1cb624bb 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -41,23 +41,25 @@ const char kEnergyCommands[] PROGMEM = D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|" D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW ; -float energy_voltage = 0; // 123.1 V -float energy_current = 0; // 123.123 A -float energy_power = 0; // 123.1 W -float energy_power_factor = NAN; // 0.12 -int energy_calc_power_factor = 0; // Do not calculate power factor from data -float energy_frequency = NAN; // 123.1 Hz -float energy_start = 0; // 12345.12345 kWh total previous - -float energy_daily = 0; // 123.123 kWh -float energy_total = 0; // 12345.12345 kWh +float energy_voltage = 0; // 123.1 V +float energy_current = 0; // 123.123 A +float energy_active_power = 0; // 123.1 W +float energy_apparent_power = NAN; // 123.1 VA +float energy_reactive_power = NAN; // 123.1 VAr +float energy_power_factor = NAN; // 0.12 +float energy_frequency = NAN; // 123.1 Hz +float energy_start = 0; // 12345.12345 kWh total previous + +float energy_daily = 0; // 123.123 kWh +float energy_total = 0; // 12345.12345 kWh unsigned long energy_kWhtoday_delta = 0; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to energy_kWhtoday (HLW and CSE only) -unsigned long energy_kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily -unsigned long energy_period = 0; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily +unsigned long energy_kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily +unsigned long energy_period = 0; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = energy_daily float energy_power_last[3] = { 0 }; uint8_t energy_power_delta = 0; +bool energy_type_dc = false; bool energy_power_on = true; byte energy_min_power_flag = 0; @@ -124,15 +126,6 @@ void Energy200ms() } XnrgCall(FUNC_EVERY_200_MSECOND); - - if (energy_calc_power_factor) { - float power_factor = 0; - if (energy_voltage && energy_current && energy_power) { - power_factor = energy_power / (energy_voltage * energy_current); - if (power_factor > 1) power_factor = 1; - } - energy_power_factor = power_factor; - } } void EnergySaveState() @@ -178,21 +171,21 @@ void EnergyMarginCheck() } if (Settings.energy_power_delta) { - float delta = abs(energy_power_last[0] - energy_power); + float delta = abs(energy_power_last[0] - energy_active_power); // Any delta compared to minimal delta - float min_power = (energy_power_last[0] > energy_power) ? energy_power : energy_power_last[0]; + float min_power = (energy_power_last[0] > energy_active_power) ? energy_active_power : energy_power_last[0]; if (((delta / min_power) * 100) > Settings.energy_power_delta) { energy_power_delta = 1; - energy_power_last[1] = energy_power; // We only want one report so reset history - energy_power_last[2] = energy_power; + energy_power_last[1] = energy_active_power; // We only want one report so reset history + energy_power_last[2] = energy_active_power; } } energy_power_last[0] = energy_power_last[1]; // Shift in history every second allowing power changes to settle for up to three seconds energy_power_last[1] = energy_power_last[2]; - energy_power_last[2] = energy_power; + energy_power_last[2] = energy_active_power; if (energy_power_on && (Settings.energy_min_power || Settings.energy_max_power || Settings.energy_min_voltage || Settings.energy_max_voltage || Settings.energy_min_current || Settings.energy_max_current)) { - energy_power_u = (uint16_t)(energy_power); + energy_power_u = (uint16_t)(energy_active_power); energy_voltage_u = (uint16_t)(energy_voltage); energy_current_u = (uint16_t)(energy_current * 1000); @@ -235,7 +228,7 @@ void EnergyMarginCheck() #if FEATURE_POWER_LIMIT // Max Power if (Settings.energy_max_power_limit) { - if (energy_power > Settings.energy_max_power_limit) { + if (energy_active_power > Settings.energy_max_power_limit) { if (!energy_mplh_counter) { energy_mplh_counter = Settings.energy_max_power_limit_hold; } else { @@ -535,6 +528,8 @@ const char HTTP_ENERGY_SNS1[] PROGMEM = "%s" "{s}" D_POWERUSAGE "{m}%s " D_UNIT_WATT "{e}"; const char HTTP_ENERGY_SNS2[] PROGMEM = "%s" + "{s}" D_POWERUSAGE_APPARENT "{m}%s " D_UNIT_VA "{e}" + "{s}" D_POWERUSAGE_REACTIVE "{m}%s " D_UNIT_VAR "{e}" "{s}" D_POWER_FACTOR "{m}%s{e}"; const char HTTP_ENERGY_SNS3[] PROGMEM = "%s" @@ -548,27 +543,64 @@ const char HTTP_ENERGY_SNS4[] PROGMEM = "%s" void EnergyShow(boolean json) { - char energy_total_chr[10]; + char voltage_chr[10]; + char current_chr[10]; + char active_power_chr[10]; + char apparent_power_chr[10]; + char reactive_power_chr[10]; + char power_factor_chr[10]; + char frequency_chr[10]; char energy_daily_chr[10]; char energy_period_chr[10]; - char energy_power_chr[10]; - char energy_voltage_chr[10]; - char energy_current_chr[10]; - char energy_frequency_chr[10]; - char energy_power_factor_chr[10]; char energy_yesterday_chr[10]; + char energy_total_chr[10]; + char speriod[20]; - char spfactor[20]; char sfrequency[20]; bool show_energy_period = (0 == tele_period); - dtostrfd(energy_power, Settings.flag2.wattage_resolution, energy_power_chr); - dtostrfd(energy_voltage, Settings.flag2.voltage_resolution, energy_voltage_chr); - dtostrfd(energy_current, Settings.flag2.current_resolution, energy_current_chr); - dtostrfd(energy_total, Settings.flag2.energy_resolution, energy_total_chr); + if (!energy_type_dc) { + float apparent_power = energy_apparent_power; + if (isnan(apparent_power)) { + apparent_power = energy_voltage * energy_current; + } + if (apparent_power < energy_active_power) { // Should be impossible + energy_active_power = apparent_power; + } + + float power_factor = energy_power_factor; + if (isnan(power_factor)) { + power_factor = (energy_active_power && apparent_power) ? energy_active_power / apparent_power : 0; + if (power_factor > 1) power_factor = 1; + } + + float reactive_power = energy_reactive_power; + if (isnan(reactive_power)) { + reactive_power = 0; + uint32_t difference = ((uint32_t)(apparent_power * 100) - (uint32_t)(energy_active_power * 100)) / 10; + if ((energy_current > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power * 100 / 1000)))) { + // calculating reactive power only if current is greater than 0.005A and + // difference between active and apparent power is greater than 1.5W or 1% + reactive_power = (float)(RoundSqrtInt((uint32_t)(apparent_power * apparent_power * 100) - (uint32_t)(energy_active_power * energy_active_power * 100))) / 10; + } + } + + dtostrfd(apparent_power, Settings.flag2.wattage_resolution, apparent_power_chr); + dtostrfd(reactive_power, Settings.flag2.wattage_resolution, reactive_power_chr); + dtostrfd(power_factor, 2, power_factor_chr); + if (!isnan(energy_frequency)) { + dtostrfd(energy_frequency, Settings.flag2.frequency_resolution, frequency_chr); + snprintf_P(sfrequency, sizeof(sfrequency), PSTR(",\"" D_JSON_FREQUENCY "\":%s"), frequency_chr); + } + } + + dtostrfd(energy_voltage, Settings.flag2.voltage_resolution, voltage_chr); + dtostrfd(energy_current, Settings.flag2.current_resolution, current_chr); + dtostrfd(energy_active_power, Settings.flag2.wattage_resolution, active_power_chr); dtostrfd(energy_daily, Settings.flag2.energy_resolution, energy_daily_chr); dtostrfd((float)Settings.energy_kWhyesterday / 100000, Settings.flag2.energy_resolution, energy_yesterday_chr); + dtostrfd(energy_total, Settings.flag2.energy_resolution, energy_total_chr); float energy = 0; if (show_energy_period) { @@ -577,34 +609,30 @@ void EnergyShow(boolean json) dtostrfd(energy, Settings.flag2.wattage_resolution, energy_period_chr); snprintf_P(speriod, sizeof(speriod), PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); } - if (!isnan(energy_frequency)) { - dtostrfd(energy_frequency, Settings.flag2.frequency_resolution, energy_frequency_chr); - snprintf_P(sfrequency, sizeof(sfrequency), PSTR(",\"" D_JSON_FREQUENCY "\":%s"), energy_frequency_chr); - } - if (!isnan(energy_power_factor)) { - dtostrfd(energy_power_factor, 2, energy_power_factor_chr); - snprintf_P(spfactor, sizeof(spfactor), PSTR(",\"" D_JSON_POWERFACTOR "\":%s"), energy_power_factor_chr); - } if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" - D_JSON_POWERUSAGE "\":%s%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s%s}"), - mqtt_data, energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", - energy_power_chr, (!isnan(energy_power_factor)) ? spfactor : "", energy_voltage_chr, energy_current_chr, (!isnan(energy_frequency)) ? sfrequency : ""); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s"), + mqtt_data, energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", active_power_chr); + if (!energy_type_dc) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s%s"), + mqtt_data, apparent_power_chr, reactive_power_chr, power_factor_chr, (!isnan(energy_frequency)) ? sfrequency : ""); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"), mqtt_data, voltage_chr, current_chr); + #ifdef USE_DOMOTICZ if (show_energy_period) { // Only send if telemetry dtostrfd(energy_total * 1000, 1, energy_total_chr); - DomoticzSensorPowerEnergy((int)energy_power, energy_total_chr); // PowerUsage, EnergyToday - DomoticzSensor(DZ_VOLTAGE, energy_voltage_chr); // Voltage - DomoticzSensor(DZ_CURRENT, energy_current_chr); // Current + DomoticzSensorPowerEnergy((int)energy_active_power, energy_total_chr); // PowerUsage, EnergyToday + DomoticzSensor(DZ_VOLTAGE, voltage_chr); // Voltage + DomoticzSensor(DZ_CURRENT, current_chr); // Current } #endif // USE_DOMOTICZ #ifdef USE_KNX if (show_energy_period) { KnxSensor(KNX_ENERGY_VOLTAGE, energy_voltage); KnxSensor(KNX_ENERGY_CURRENT, energy_current); - KnxSensor(KNX_ENERGY_POWER, energy_power); - if (!isnan(energy_power_factor)) { KnxSensor(KNX_ENERGY_POWERFACTOR, energy_power_factor); } + KnxSensor(KNX_ENERGY_POWER, energy_active_power); + if (!energy_type_dc) { KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor); } KnxSensor(KNX_ENERGY_DAILY, energy_daily); KnxSensor(KNX_ENERGY_TOTAL, energy_total); KnxSensor(KNX_ENERGY_START, energy_start); @@ -612,9 +640,11 @@ void EnergyShow(boolean json) #endif // USE_KNX #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS1, mqtt_data, energy_voltage_chr, energy_current_chr, energy_power_chr); - if (!isnan(energy_power_factor)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS2, mqtt_data, energy_power_factor_chr); } - if (!isnan(energy_frequency)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS3, mqtt_data, energy_frequency_chr); } + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS1, mqtt_data, voltage_chr, current_chr, active_power_chr); + if (!energy_type_dc) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS2, mqtt_data, apparent_power_chr, reactive_power_chr, power_factor_chr); + if (!isnan(energy_frequency)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS3, mqtt_data, frequency_chr); } + } snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_ENERGY_SNS4, mqtt_data, energy_daily_chr, energy_yesterday_chr, energy_total_chr); #endif // USE_WEBSERVER } diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 5140d65969ec..025ccff442cc 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -111,9 +111,9 @@ void HlwEvery200ms() if (hlw_cf_pulse_length && energy_power_on && !hlw_load_off) { hlw_w = (hlw_power_ratio * Settings.energy_power_calibration) / hlw_cf_pulse_length; - energy_power = (float)hlw_w / 10; + energy_active_power = (float)hlw_w / 10; } else { - energy_power = 0; + energy_active_power = 0; } hlw_cf1_timer++; @@ -142,7 +142,7 @@ void HlwEvery200ms() hlw_cf1_current_pulse_length = hlw_cf1_pulse_length; hlw_cf1_current_max_pulse_counter = hlw_cf1_pulse_counter; - if (hlw_cf1_current_pulse_length && energy_power) { // No current if no power being consumed + if (hlw_cf1_current_pulse_length && energy_active_power) { // No current if no power being consumed hlw_i = (hlw_current_ratio * Settings.energy_current_calibration) / hlw_cf1_current_pulse_length; energy_current = (float)hlw_i / 1000; } else { @@ -217,7 +217,6 @@ void HlwDrvInit() { if (!energy_flg) { if ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // Sonoff Pow or any HLW8012 based device - energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_01; } } diff --git a/sonoff/xnrg_02_cse7766.ino b/sonoff/xnrg_02_cse7766.ino index 8ba1b146efcc..1be231192b88 100644 --- a/sonoff/xnrg_02_cse7766.ino +++ b/sonoff/xnrg_02_cse7766.ino @@ -95,14 +95,14 @@ void CseReceived() if (adjustement & 0x10) { // Power valid cse_power_invalid = 0; if ((header & 0xF2) == 0xF2) { // Power cycle exceeds range - energy_power = 0; + energy_active_power = 0; } else { if (0 == power_cycle_first) { power_cycle_first = power_cycle; } // Skip first incomplete power_cycle if (power_cycle_first != power_cycle) { power_cycle_first = -1; - energy_power = (float)(Settings.energy_power_calibration * CSE_PREF) / (float)power_cycle; + energy_active_power = (float)(Settings.energy_power_calibration * CSE_PREF) / (float)power_cycle; } else { - energy_power = 0; + energy_active_power = 0; } } } else { @@ -110,11 +110,11 @@ void CseReceived() cse_power_invalid++; } else { power_cycle_first = 0; - energy_power = 0; // Powered on but no load + energy_active_power = 0; // Powered on but no load } } if (adjustement & 0x20) { // Current valid - if (0 == energy_power) { + if (0 == energy_active_power) { energy_current = 0; } else { energy_current = (float)Settings.energy_current_calibration / (float)current_cycle; @@ -123,7 +123,7 @@ void CseReceived() } else { // Powered off power_cycle_first = 0; energy_voltage = 0; - energy_power = 0; + energy_active_power = 0; energy_current = 0; } } @@ -180,7 +180,7 @@ void CseEverySecond() } else { cf_frequency = cf_pulses - cf_pulses_last_time; } - if (cf_frequency && energy_power) { + if (cf_frequency && energy_active_power) { cf_pulses_last_time = cf_pulses; energy_kWhtoday_delta += (cf_frequency * Settings.energy_power_calibration) / 36; EnergyUpdateToday(); @@ -194,7 +194,6 @@ void CseDrvInit() if ((SONOFF_S31 == Settings.module) || (SONOFF_POW_R2 == Settings.module)) { // Sonoff S31 or Sonoff Pow R2 baudrate = 4800; serial_config = SERIAL_8E1; - energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_02; } } diff --git a/sonoff/xnrg_03_pzem004t.ino b/sonoff/xnrg_03_pzem004t.ino index 03581862c1ce..3dfbc3879db5 100644 --- a/sonoff/xnrg_03_pzem004t.ino +++ b/sonoff/xnrg_03_pzem004t.ino @@ -177,7 +177,7 @@ void PzemEvery200ms() energy_current = value; break; case 3: // Power as 20W - energy_power = value; + energy_active_power = value; break; case 4: // Total energy as 99999Wh if (!energy_start || (value < energy_start)) energy_start = value; // Init after restart and hanlde roll-over if any @@ -215,7 +215,6 @@ void PzemDrvInit() { if (!energy_flg) { if ((pin[GPIO_PZEM_RX] < 99) && (pin[GPIO_PZEM_TX] < 99)) { // Any device with a Pzem004T - energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_03; } } diff --git a/sonoff/xnrg_04_mcp39f501.ino b/sonoff/xnrg_04_mcp39f501.ino index f2ce321bc5d0..d962ef204339 100644 --- a/sonoff/xnrg_04_mcp39f501.ino +++ b/sonoff/xnrg_04_mcp39f501.ino @@ -448,8 +448,8 @@ void McpParseData(void) if (energy_power_on) { // Powered on energy_frequency = (float)mcp_line_frequency / 1000; energy_voltage = (float)mcp_voltage_rms / 10; - energy_power = (float)mcp_active_power / 100; - if (0 == energy_power) { + energy_active_power = (float)mcp_active_power / 100; + if (0 == energy_active_power) { energy_current = 0; } else { energy_current = (float)mcp_current_rms / 10000; @@ -457,7 +457,7 @@ void McpParseData(void) } else { // Powered off energy_frequency = 0; energy_voltage = 0; - energy_power = 0; + energy_active_power = 0; energy_current = 0; } } @@ -557,7 +557,6 @@ void McpDrvInit(void) mcp_calibrate = 0; mcp_timeout = 2; // Initial wait mcp_init = 2; // Initial setup steps - energy_calc_power_factor = 1; // Calculate power factor from data energy_flg = XNRG_04; } } diff --git a/sonoff/xnrg_05_pzem2.ino b/sonoff/xnrg_05_pzem2.ino index b7e1eab42a19..bb0f4864dd30 100644 --- a/sonoff/xnrg_05_pzem2.ino +++ b/sonoff/xnrg_05_pzem2.ino @@ -141,12 +141,13 @@ void Pzem2Every200ms() float energy = 0; if (PZEM2_TYPES_003_017 == pzem2_type) { + energy_type_dc = true; // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // FE 04 10 27 10 00 64 03 E8 00 00 00 00 00 00 00 00 00 00 HH LL = PZEM-017 // Id Cc Sz Volt- Curre Power------ Energy----- HiAlm LoAlm Crc-- energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 100.0; // 655.00 V energy_current = (float)((buffer[5] << 8) + buffer[6]) / 100.0; // 655.00 A - energy_power = (float)((uint32_t)buffer[9] << 24 + (uint32_t)buffer[10] << 16 + (uint32_t)buffer[7] << 8 + buffer[8]) / 10.0; // 429496729.0 W + energy_active_power = (float)((uint32_t)buffer[9] << 24 + (uint32_t)buffer[10] << 16 + (uint32_t)buffer[7] << 8 + buffer[8]) / 10.0; // 429496729.0 W energy = (float)((uint32_t)buffer[13] << 24 + (uint32_t)buffer[14] << 16 + (uint32_t)buffer[11] << 8 + buffer[12]); // 4294967295 Wh if (!energy_start || (energy < energy_start)) { energy_start = energy; } // Init after restart and hanlde roll-over if any energy_kWhtoday += (energy - energy_start) * 100; @@ -154,12 +155,13 @@ void Pzem2Every200ms() EnergyUpdateToday(); } else if (PZEM2_TYPES_014_016 == pzem2_type) { // PZEM-014,016 + energy_type_dc = false; // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 // FE 04 14 08 98 03 E8 00 00 08 98 00 00 00 00 00 00 01 F4 00 64 00 00 HH LL = PZEM-014 // Id Cc Sz Volt- Current---- Power------ Energy----- Frequ PFact Alarm Crc-- energy_voltage = (float)((buffer[3] << 8) + buffer[4]) / 10.0; // 6553.0 V energy_current = (float)((uint32_t)buffer[7] << 24 + (uint32_t)buffer[8] << 16 + (uint32_t)buffer[5] << 8 + buffer[6]) / 1000.0; // 4294967.000 A - energy_power = (float)((uint32_t)buffer[11] << 24 + (uint32_t)buffer[12] << 16 + (uint32_t)buffer[9] << 8 + buffer[10]) / 10.0; // 429496729.0 W + energy_active_power = (float)((uint32_t)buffer[11] << 24 + (uint32_t)buffer[12] << 16 + (uint32_t)buffer[9] << 8 + buffer[10]) / 10.0; // 429496729.0 W energy_frequency = (float)((buffer[17] << 8) + buffer[18]) / 10.0; // 50.0 Hz energy_power_factor = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00 energy = (float)((uint32_t)buffer[15] << 24 + (uint32_t)buffer[16] << 16 + (uint32_t)buffer[13] << 8 + buffer[14]); // 4294967295 Wh From f05a471e48bb0ae891df61cdde1679abab0f0f4c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Sep 2018 17:02:55 +0200 Subject: [PATCH 199/798] Fix KNX compile error --- sonoff/xdrv_03_energy.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 13ab1cb624bb..341fc71b5054 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -560,6 +560,8 @@ void EnergyShow(boolean json) bool show_energy_period = (0 == tele_period); + float power_factor = energy_power_factor; + if (!energy_type_dc) { float apparent_power = energy_apparent_power; if (isnan(apparent_power)) { @@ -569,7 +571,6 @@ void EnergyShow(boolean json) energy_active_power = apparent_power; } - float power_factor = energy_power_factor; if (isnan(power_factor)) { power_factor = (energy_active_power && apparent_power) ? energy_active_power / apparent_power : 0; if (power_factor > 1) power_factor = 1; From 8f95f07b518010a6c3bf37a2ac34a02b5309fd5e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 28 Sep 2018 17:26:08 +0200 Subject: [PATCH 200/798] Add RF to MagicHome / LC10 Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) --- sonoff/_changelog.ino | 1 + sonoff/sonoff_template.h | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index abf4572f687b..efd0944b7711 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) + * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) * * 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 8374fa09da3a..d083675d3d80 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -855,6 +855,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0, 0, 0, 0, 0, // Flash connection 0, 0, 0, 0, 0 }, +/* { "MagicHome", // Magic Home (aka Flux-light) (ESP8266) // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html 0, @@ -869,6 +870,22 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_PWM1, // GPIO14 RGB LED Red 0, 0, 0 }, +*/ + { "MagicHome", // Magic Home (aka Flux-light) (ESP8266) and Arilux LC10 (ESP8285) + // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html + 0, + GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPIO_LED1_INV, // GPIO02 Blue onboard LED + GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) + GPIO_PWM2, // GPIO05 RGB LED Green + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_PWM3, // GPIO12 RGB LED Blue + GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) + GPIO_PWM1, // GPIO14 RGB LED Red + GPIO_LED2_INV, // GPIO15 RF receiver control + 0, 0 + }, { "Luani HVIO", // ESP8266_HVIO // https://luani.de/projekte/esp8266-hvio/ 0, // GPIO00 Flash jumper From 36d6ae080368aac0987cc8279a365a29ff7a1cb5 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 28 Sep 2018 17:26:13 +0200 Subject: [PATCH 201/798] Added D_JSON_UV_INDEX_TEXT Added D_JSON_UV_INDEX_TEXT for more info on json output --- sonoff/i18n.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index c8d3e219f746..2090f4793cdc 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -131,6 +131,7 @@ #define D_JSON_UPTIME "Uptime" #define D_JSON_UTC_TIME "UTC" #define D_JSON_UV_INDEX "UvIndex" +#define D_JSON_UV_INDEX_TEXT "UvIndexText" #define D_JSON_UV_LEVEL "UvLevel" #define D_JSON_UV_POWER "UvPower" #define D_JSON_VCC "Vcc" From e8a56755d90226bf6e2f1840657dbcfb9d6106ff Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 28 Sep 2018 17:34:25 +0200 Subject: [PATCH 202/798] Updated the driver Updated the driver and changed a lot. - Starting with switch(function) and the end of it. - Changed the json output code a lot to more visibility and a better way of working. - Changed the web sever outout so that we need less code. In #ifdef USE_DOMOTICZ i have changed nothing because i don't have a domotica system. Therefor someone with a stable running system can build it further or we can work together on it. Dirver version changed to v1.0.0.2 Theo, i hope the if (11 == (uptime %100)) { .. part is ok. Please have a look on it. --- sonoff/xsns_11_veml6070.ino | 219 ++++++++++++++++++++---------------- 1 file changed, 120 insertions(+), 99 deletions(-) diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index f60c0f00f955..de4d903bde1d 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -31,6 +31,19 @@ Version Date Action Description -------------------------------------------------------------------------------------------- + 1.0.0.2 20180928 tests - same as in version 1.0.0.1 + cleaned - source code + changed - snprintf_P for json and web server output + - much more compressed and more professional code + added - uv_risk_text to json and web server output + changed - switch (function) to be 100% compatible + - added Veml6070EverySecond in thought of compatibile + added - Veml6070UvTableInit to do this only once to spare time + debugging - @Adrian helped me out in case of a %s%s in mqtt_data. Thank You Adrian + next - possible i will add the calculation for LAT and LONG coordinates for much more precission (TBD) + - show not only the UV Power value in W/m2, possible a @define value to show it as joule value (TBD) + - add a #define to select how many characters are shown benhind the decimal point for the UV Index (TBD) + --- 1.0.0.1 20180925 tests - all tests are done with 1x sonoff sv, 2x Wemos D1 (not the mini) - 3 different VEMl6070 sensors from 3 different online shops - all the last three test where good and all looks working so far @@ -80,7 +93,6 @@ #define VEML6070_ADDR_H 0x39 // on some PCB boards the address can be changed by a solder point, #define VEML6070_ADDR_L 0x38 // to have no address conflicts with other I2C sensors and/or hardware - #define VEML6070_INTEGRATION_TIME 3 // IT_4 = 500msec integration time, because the precission is 4 times higher then IT_0.5 #define VEML6070_ENABLE 1 // #define VEML6070_DISABLE 0 // @@ -94,8 +106,18 @@ /********************************************************************************************/ // globals -uint8_t veml6070_address; -uint8_t veml6070_type = 0; +const char kVemlTypes[] PROGMEM = "VEML6070"; // in preperation of veml6075 +double uv_risk_map[VEML6070_UV_MAX_INDEX] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +double uvrisk = 0; +double uvpower = 0; +uint16_t uvlevel = 0; +uint8_t veml6070_addr_low = VEML6070_ADDR_L; +uint8_t veml6070_addr_high = VEML6070_ADDR_H; +uint8_t itime = VEML6070_INTEGRATION_TIME; +uint8_t veml6070_type = 0; +uint8_t veml6070_valid = 0; +char veml6070_name[9]; +char str_uvrisk_text[10]; /********************************************************************************************/ @@ -104,40 +126,72 @@ void Veml6070Detect(void) if (veml6070_type) { return; } - - uint8_t itime = VEML6070_INTEGRATION_TIME; - veml6070_address = VEML6070_ADDR_L; - Wire.beginTransmission(veml6070_address); + // init the UV sensor + Wire.beginTransmission(VEML6070_ADDR_L); Wire.write((itime << 2) | 0x02); uint8_t status = Wire.endTransmission(); - + // action on status if (!status) { - veml6070_type = 1; - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", veml6070_address); + veml6070_type = 1; + uint8_t veml_model = 0; + GetTextIndexed(veml6070_name, sizeof(veml6070_name), veml_model, kVemlTypes); + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", VEML6070_ADDR_L); AddLog(LOG_LEVEL_DEBUG); } } /********************************************************************************************/ -void Veml6070ModeCmd(boolean mode_cmd) +void Veml6070UvTableInit(void) { - uint8_t itime = VEML6070_INTEGRATION_TIME; - uint8_t opmode = 0; + // fill the uv-risk compare table once, based on the coefficient calculation + for (uint8_t i = 0; i < VEML6070_UV_MAX_INDEX; i++) { +#ifdef USE_VEML6070_RSET + if ( (USE_VEML6070_RSET >= 220000) && (USE_VEML6070_RSET <= 1000000) ) { + uv_risk_map[i] = ( (USE_VEML6070_RSET / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); + } else { + uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 resistor error %d"), USE_VEML6070_RSET); + AddLog(LOG_LEVEL_DEBUG); + } +#else + uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 resistor default used %d"), VEML6070_RSET_DEFAULT); + AddLog(LOG_LEVEL_DEBUG); +#endif + } +} - if (mode_cmd) { - opmode = VEML6070_ENABLE; +/********************************************************************************************/ + +void Veml6070EverySecond(void) +{ + // all = 10..15[ms] + if (11 == (uptime %100)) { + Veml6070ModeCmd(1); // on = 1[ms], wakeup the UV sensor + Veml6070Detect(); // 1[ms], check for sensor and init with IT time + Veml6070ModeCmd(0); // off = 5[ms], suspend the UV sensor } else { - opmode = VEML6070_DISABLE; + Veml6070ModeCmd(1); // 1[ms], wakeup the UV sensor + uvlevel = Veml6070ReadUv(); // 1..2[ms], get UV raw values + uvrisk = Veml6070UvRiskLevel(uvlevel); // 0..1[ms], get UV risk level + uvpower = Veml6070UvPower(uvrisk); // 2[ms], get UV power in W/m2 + Veml6070ModeCmd(0); // off = 5[ms], suspend the UV sensor } +} - veml6070_address = VEML6070_ADDR_L; - Wire.beginTransmission(veml6070_address); - Wire.write((opmode << 0) | 0x02 | (itime << 2)); - uint8_t status = Wire.endTransmission(); +/********************************************************************************************/ +void Veml6070ModeCmd(boolean mode_cmd) +{ + // mode_cmd 1 = on = 1[ms] + // mode_cmd 0 = off = 2[ms] + Wire.beginTransmission(VEML6070_ADDR_L); + Wire.write((mode_cmd << 0) | 0x02 | (itime << 2)); + uint8_t status = Wire.endTransmission(); + // action on status if (!status) { - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070 opmode", veml6070_address); + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070 mode_cmd", VEML6070_ADDR_L); AddLog(LOG_LEVEL_DEBUG); } } @@ -146,17 +200,20 @@ void Veml6070ModeCmd(boolean mode_cmd) uint16_t Veml6070ReadUv(void) { + uint16_t uv_raw = 0; + // read high byte if (Wire.requestFrom(VEML6070_ADDR_H, 1) != 1) { return -1; } - uint16_t uvi = Wire.read(); - uvi <<= 8; + uv_raw = Wire.read(); + uv_raw <<= 8; + // read low byte if (Wire.requestFrom(VEML6070_ADDR_L, 1) != 1) { return -1; } - uvi |= Wire.read(); - - return uvi; + uv_raw |= Wire.read(); + // high and low done + return uv_raw; } /********************************************************************************************/ @@ -164,28 +221,21 @@ uint16_t Veml6070ReadUv(void) double Veml6070UvRiskLevel(uint16_t uv_level) { double risk = 0; - double uv_risk_map[VEML6070_UV_MAX_INDEX] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - - // fill the uv-risk compare table based on the coefficient calculation - for (uint8_t i = 0; i < VEML6070_UV_MAX_INDEX; i++) { -#ifdef USE_VEML6070_RSET - if ( (USE_VEML6070_RSET >= 220000) && (USE_VEML6070_RSET <= 1000000) ) { - uv_risk_map[i] = ( (USE_VEML6070_RSET / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); - } else { - uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 resistor error %d"), USE_VEML6070_RSET); - AddLog(LOG_LEVEL_DEBUG); - } -#else - uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT) * (i+1); -#endif - } - - // get the uv-risk level if (uv_level < uv_risk_map[VEML6070_UV_MAX_INDEX-1]) { - return ( uv_level / uv_risk_map[0] ); + risk = (double)uv_level / uv_risk_map[0]; + // generate uv-risk string + if ( (risk >= 0) && (risk <= 2.9) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_1); } + else if ( (risk >= 3.0) && (risk <= 5.9) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_2); } + else if ( (risk >= 6.0) && (risk <= 7.9) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_3); } + else if ( (risk >= 8.0) && (risk <= 10.9) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_4); } + else if ( (risk >= 11.0) && (risk <= 12.9) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_5); } + else if ( (risk >= 13.0) && (risk <= 25.0) ) { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_6); } + else { snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_7); } + return risk; } else { - return ( risk = 99 ); // out of range = much to high - it must be outerspace or sensor damaged + // out of range and much to high - it must be outerspace or sensor damaged + snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_7); + return ( risk = 99 ); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "VEML6070 out of range %d"), risk); AddLog(LOG_LEVEL_DEBUG); } @@ -196,25 +246,21 @@ double Veml6070UvRiskLevel(uint16_t uv_level) double Veml6070UvPower(double uvrisk) { // based on calculations for effective irradiation from Karel Vanicek - return ( VEML6070_POWER_COEFFCIENT * uvrisk ); + double power = 0; + return ( power = VEML6070_POWER_COEFFCIENT * uvrisk ); } /********************************************************************************************/ +// normaly in i18n.h, Line 520 .. 525 #ifdef USE_WEBSERVER // {s} = , {m} = , {e} = #ifdef USE_VEML6070_SHOW_RAW - const char HTTP_SNS_UV_LEVEL[] PROGMEM = "%s{s}VEML6070 " D_UV_LEVEL "{m}%d " D_UNIT_INCREMENTS "{e}"; + const char HTTP_SNS_UV_LEVEL[] PROGMEM = "%s{s}VEML6070 " D_UV_LEVEL "{m}%s " D_UNIT_INCREMENTS "{e}"; #endif // USE_VEML6070_SHOW_RAW // different uv index level texts - const char HTTP_SNS_UV_INDEX1[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_1 "{e}"; - const char HTTP_SNS_UV_INDEX2[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_2 "{e}"; - const char HTTP_SNS_UV_INDEX3[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_3 "{e}"; - const char HTTP_SNS_UV_INDEX4[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_4 "{e}"; - const char HTTP_SNS_UV_INDEX5[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_5 "{e}"; - const char HTTP_SNS_UV_INDEX6[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_6 "{e}"; - const char HTTP_SNS_UV_INDEX7[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX "{m}%s " D_UV_INDEX_7 "{e}"; - const char HTTP_SNS_UV_POWER[] PROGMEM = "%s{s}VEML6070 " D_UV_POWER "{m}%s " D_UNIT_WATT_METER_QUADRAT "{e}"; + const char HTTP_SNS_UV_INDEX[] PROGMEM = "%s{s}VEML6070 " D_UV_INDEX " {m}%s %s{e}"; + const char HTTP_SNS_UV_POWER[] PROGMEM = "%s{s}VEML6070 " D_UV_POWER "{m}%s " D_UNIT_WATT_METER_QUADRAT "{e}"; #endif // USE_WEBSERVER /********************************************************************************************/ @@ -222,61 +268,33 @@ double Veml6070UvPower(double uvrisk) void Veml6070Show(boolean json) { if (veml6070_type) { - // wakeup the sensor - Veml6070ModeCmd(1); - - // get values from functions - uint16_t uvlevel = Veml6070ReadUv(); - double uvrisk = Veml6070UvRiskLevel(uvlevel); - double uvpower = Veml6070UvPower(uvrisk); - char str_uvrisk[10]; - char str_uvpower[5]; - + char str_uvlevel[6]; // e.g. 99999 inc = UVLevel + char str_uvrisk[6]; // e.g. 25.99 text = UvIndex + char str_uvpower[6]; // e.g. 0.399 W/m² = UvPower // convert double values to string + dtostrfd((double)uvlevel, 0, str_uvlevel); dtostrfd(uvrisk, 2, str_uvrisk); dtostrfd(uvpower, 3, str_uvpower); - if (json) { #ifdef USE_VEML6070_SHOW_RAW - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_LEVEL "\":%d}"), mqtt_data, uvlevel); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_LEVEL "\":%s,\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":%s,\"" D_JSON_UV_POWER "\":%s}"), + mqtt_data, veml6070_name, str_uvlevel, str_uvrisk, str_uvrisk_text, str_uvpower); +#else + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":%s,\"" D_JSON_UV_POWER "\":%s}"), + mqtt_data, veml6070_name, str_uvrisk, str_uvrisk_text, str_uvpower); #endif // USE_VEML6070_SHOW_RAW - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_INDEX "\":%s}"), mqtt_data, str_uvrisk); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_POWER "\":%s}"), mqtt_data, str_uvpower); #ifdef USE_DOMOTICZ - if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, uvlevel); }; + if (0 == tele_period) { DomoticzSensor(DZ_ILLUMINANCE, uvlevel); } #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { #ifdef USE_VEML6070_SHOW_RAW - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_LEVEL, mqtt_data, uvlevel); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_LEVEL, mqtt_data, str_uvlevel); #endif // USE_VEML6070_SHOW_RAW - if ( (uvrisk >= 0) && (uvrisk <= 2.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX1, mqtt_data, str_uvrisk); - } - else if ( (uvrisk >= 3.0) && (uvrisk <= 5.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX2, mqtt_data, str_uvrisk); - } - else if ( (uvrisk >= 6.0) && (uvrisk <= 7.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX3, mqtt_data, str_uvrisk); - } - else if ( (uvrisk >= 8.0) && (uvrisk <= 10.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX4, mqtt_data, str_uvrisk); - } - else if ( (uvrisk >= 11.0) && (uvrisk <= 12.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX5, mqtt_data, str_uvrisk); - } - else if ( (uvrisk >= 13.0) && (uvrisk <= 15.9) ) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX6, mqtt_data, str_uvrisk); - } else { - // else for Unknown or Out Of Range error = 99 - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX7, mqtt_data, str_uvrisk); - } + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_INDEX, mqtt_data, str_uvrisk, str_uvrisk_text); snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_UV_POWER, mqtt_data, str_uvpower); #endif // USE_WEBSERVER } - // suspend the sensor - Veml6070ModeCmd(0); - // delay(2000); // used while messaurment of current drain } } @@ -292,8 +310,12 @@ boolean Xsns11(byte function) if (i2c_flg) { switch (function) { - case FUNC_PREP_BEFORE_TELEPERIOD: - Veml6070Detect(); // detect and init the sensor + case FUNC_INIT: + Veml6070Detect(); // 1[ms], detect and init the sensor + Veml6070UvTableInit(); // 1[ms], initalize the UV compare table only once + break; + case FUNC_EVERY_SECOND: + Veml6070EverySecond(); // 10..15[ms], tested with OLED display, do all the actions needed to get all sensor values break; case FUNC_JSON_APPEND: Veml6070Show(1); @@ -310,4 +332,3 @@ boolean Xsns11(byte function) #endif // USE_VEML6070 #endif // USE_I2C - From 41e6939a8150595520261718053eb9b13a96d058 Mon Sep 17 00:00:00 2001 From: Mike Date: Fri, 28 Sep 2018 17:38:06 +0200 Subject: [PATCH 203/798] outline corrections of // comments --- sonoff/xsns_11_veml6070.ino | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index de4d903bde1d..c06175584d1e 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -133,8 +133,8 @@ void Veml6070Detect(void) // action on status if (!status) { veml6070_type = 1; - uint8_t veml_model = 0; - GetTextIndexed(veml6070_name, sizeof(veml6070_name), veml_model, kVemlTypes); + uint8_t veml_model = 0; + GetTextIndexed(veml6070_name, sizeof(veml6070_name), veml_model, kVemlTypes); snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "VEML6070", VEML6070_ADDR_L); AddLog(LOG_LEVEL_DEBUG); } @@ -168,13 +168,13 @@ void Veml6070EverySecond(void) { // all = 10..15[ms] if (11 == (uptime %100)) { - Veml6070ModeCmd(1); // on = 1[ms], wakeup the UV sensor + Veml6070ModeCmd(1); // on = 1[ms], wakeup the UV sensor Veml6070Detect(); // 1[ms], check for sensor and init with IT time Veml6070ModeCmd(0); // off = 5[ms], suspend the UV sensor } else { - Veml6070ModeCmd(1); // 1[ms], wakeup the UV sensor - uvlevel = Veml6070ReadUv(); // 1..2[ms], get UV raw values - uvrisk = Veml6070UvRiskLevel(uvlevel); // 0..1[ms], get UV risk level + Veml6070ModeCmd(1); // 1[ms], wakeup the UV sensor + uvlevel = Veml6070ReadUv(); // 1..2[ms], get UV raw values + uvrisk = Veml6070UvRiskLevel(uvlevel); // 0..1[ms], get UV risk level uvpower = Veml6070UvPower(uvrisk); // 2[ms], get UV power in W/m2 Veml6070ModeCmd(0); // off = 5[ms], suspend the UV sensor } @@ -312,9 +312,9 @@ boolean Xsns11(byte function) switch (function) { case FUNC_INIT: Veml6070Detect(); // 1[ms], detect and init the sensor - Veml6070UvTableInit(); // 1[ms], initalize the UV compare table only once + Veml6070UvTableInit(); // 1[ms], initalize the UV compare table only once break; - case FUNC_EVERY_SECOND: + case FUNC_EVERY_SECOND: Veml6070EverySecond(); // 10..15[ms], tested with OLED display, do all the actions needed to get all sensor values break; case FUNC_JSON_APPEND: From aa0407493731ed841d9dfe3819247d9052dbb12c Mon Sep 17 00:00:00 2001 From: znanev <20048364+znanev@users.noreply.github.com> Date: Fri, 28 Sep 2018 23:21:17 +0100 Subject: [PATCH 204/798] Fix dead links to wiki pages --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 498cd2f80b14..524ad49ab833 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,8 @@ The following devices are supported: - [BlitzWolf BW-SHP2 Smart Socket with Energy Monitoring](https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html) - [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/) - [Wemos D1 mini](https://wiki.wemos.cc/products:d1:d1_mini) -- [HuaFan Smart Socket](HuaFan-Smart-Socket) -- [Hyleton-313 Smart Plug](Hyleton-313-Smart-Plug) +- [HuaFan Smart Socket](https://github.com/arendst/Sonoff-Tasmota/wiki/HuaFan-Smart-Socket) +- [Hyleton-313 Smart Plug](https://github.com/arendst/Sonoff-Tasmota/wiki/Hyleton-313-Smart-Plug) - [Allterco Shelly 1](https://shelly.cloud/shelly1-open-source/) - [Allterco Shelly 2 with Energy Monitoring](https://shelly.cloud/shelly2/) - NodeMcu and Ledunia From 8255c001b6ac687a6b5007846b194ca708c3fa23 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 29 Sep 2018 10:12:32 +0200 Subject: [PATCH 205/798] Use color2 command (HASS sends normalized RGB) --- sonoff/xdrv_12_home_assistant.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index b085947ae723..304d5fc2fc7e 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -50,7 +50,7 @@ const char HASS_DISCOVER_LIGHT_DIMMER[] PROGMEM = "\"brightness_value_template\":\"{{value_json." D_CMND_DIMMER "}}\""; const char HASS_DISCOVER_LIGHT_COLOR[] PROGMEM = - "%s,\"rgb_command_topic\":\"%s\"," // cmnd/led2/Color + "%s,\"rgb_command_topic\":\"%s2\"," // cmnd/led2/Color2 "\"rgb_state_topic\":\"%s\"," // stat/led2/RESULT "\"rgb_value_template\":\"{{value_json." D_CMND_COLOR "}}\""; // "\"rgb_value_template\":\"{{value_json." D_CMND_COLOR " | join(',')}}\""; From 2252be521ab58afed0bd65f0247ed2f3c445b74b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 29 Sep 2018 12:34:24 +0200 Subject: [PATCH 206/798] Fix I2CScan invalid JSON Fix I2CScan invalid JSON error message (#3925) --- sonoff/_changelog.ino | 1 + sonoff/sonoff_template.h | 34 ++++++++++++++++------------------ sonoff/support.ino | 24 ++++++++++++++++-------- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index efd0944b7711..2cc23ac4a738 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) + * Fix I2CScan invalid JSON error message (#3925) * * 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index d083675d3d80..55b1ce3aaa8e 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -855,35 +855,19 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0, 0, 0, 0, 0, // Flash connection 0, 0, 0, 0, 0 }, -/* - { "MagicHome", // Magic Home (aka Flux-light) (ESP8266) - // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html - 0, - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LED1_INV, // GPIO02 Blue onboard LED - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 IR receiver (optional) - GPIO_PWM2, // GPIO05 RGB LED Green - 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_PWM3, // GPIO12 RGB LED Blue - GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) - GPIO_PWM1, // GPIO14 RGB LED Red - 0, 0, 0 - }, -*/ { "MagicHome", // Magic Home (aka Flux-light) (ESP8266) and Arilux LC10 (ESP8285) // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html 0, GPIO_USER, // GPIO01 Serial RXD and Optional sensor GPIO_LED1_INV, // GPIO02 Blue onboard LED GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) + GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) (Arilux LC10) GPIO_PWM2, // GPIO05 RGB LED Green 0, 0, 0, 0, 0, 0, // Flash connection GPIO_PWM3, // GPIO12 RGB LED Blue GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) GPIO_PWM1, // GPIO14 RGB LED Red - GPIO_LED2_INV, // GPIO15 RF receiver control + GPIO_LED2_INV, // GPIO15 RF receiver control (Arilux LC10) 0, 0 }, { "Luani HVIO", // ESP8266_HVIO @@ -1089,6 +1073,20 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { /* Optionals + { "MagicHome", // Magic Home (aka Flux-light) (ESP8266) + // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html + 0, + GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPIO_LED1_INV, // GPIO02 Blue onboard LED + GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPIO_USER, // GPIO04 IR receiver (optional) + GPIO_PWM2, // GPIO05 RGB LED Green + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_PWM3, // GPIO12 RGB LED Blue + GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) + GPIO_PWM1, // GPIO14 RGB LED Red + 0, 0, 0 + }, { "Arilux LC10", // Arilux LC10 (ESP8285), RGBW + RF // https://github.com/arendst/Sonoff-Tasmota/wiki/MagicHome-with-ESP8285 // https://www.aliexpress.com/item/DC5-24V-Wireless-WIFI-LED-RGB-Controller-RGBW-Controller-IR-RF-Remote-Control-IOS-Android-for/32827253255.html diff --git a/sonoff/support.ino b/sonoff/support.ino index fc73e726e79d..3665650ddb95 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1775,27 +1775,35 @@ int8_t I2cWriteBuffer(uint8_t addr, uint8_t reg, uint8_t *reg_data, uint16_t len void I2cScan(char *devs, unsigned int devs_len) { - byte error; - byte address; + // Return error codes defined in twi.h and core_esp8266_si2c.c + // I2C_OK 0 + // I2C_SCL_HELD_LOW 1 = SCL held low by another device, no procedure available to recover + // I2C_SCL_HELD_LOW_AFTER_READ 2 = I2C bus error. SCL held low beyond slave clock stretch time + // I2C_SDA_HELD_LOW 3 = I2C bus error. SDA line held low by slave/another_master after n bits + // I2C_SDA_HELD_LOW_AFTER_INIT 4 = line busy. SDA again held low by another device. 2nd master? + + byte error = 0; + byte address = 0; byte any = 0; - char tstr[10]; snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_DEVICES_FOUND_AT)); for (address = 1; address <= 127; address++) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (0 == error) { - snprintf_P(tstr, sizeof(tstr), PSTR(" 0x%2x"), address); - strncat(devs, tstr, devs_len); any = 1; + snprintf_P(devs, devs_len, PSTR("%s 0x%02x"), devs, address); } - else if (4 == error) { - snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_UNKNOWN_ERROR_AT " 0x%2x\"}"), address); + else if (error != 2) { // Seems to happen anyway using this scan + any = 2; + snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"Error %d at 0x%02x"), error, address); + break; } } if (any) { strncat(devs, "\"}", devs_len); - } else { + } + else { snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_NO_DEVICES_FOUND "\"}")); } } From 3b3579f1db1c5e06fafa90050e2a3ef63f0b53e5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 29 Sep 2018 13:09:51 +0200 Subject: [PATCH 207/798] Fix config crc errors Fix invalid configuration restores and decode_config.py crc error when savedata = 0 (#3918) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_02_webserver.ino | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 2cc23ac4a738..0a113a04f809 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) * Fix I2CScan invalid JSON error message (#3925) + * Fix invalid configuration restores and decode_config.py crc error when savedata = 0 (#3918) * * 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 5182b7051808..6a939dc24b71 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -1013,6 +1013,10 @@ void HandleBackupConfiguration() WebServer->sendHeader(F("Content-Disposition"), attachment); WebServer->send(200, FPSTR(HDR_CTYPE_STREAM), ""); + + uint16_t cfg_crc = Settings.cfg_crc; + Settings.cfg_crc = GetSettingsCrc(); // Calculate crc (again) as it might be wrong when savedata = 0 (#3918) + memcpy(settings_buffer, &Settings, sizeof(Settings)); if (config_xor_on_set) { for (uint16_t i = 2; i < sizeof(Settings); i++) { @@ -1030,6 +1034,8 @@ void HandleBackupConfiguration() #endif SettingsBufferFree(); + + Settings.cfg_crc = cfg_crc; // Restore crc in case savedata = 0 to make sure settings will be noted as changed } void HandleSaveSettings() From 3997792429d92b24d441911952a93bc51fe51e9c Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Sat, 29 Sep 2018 13:37:42 +0200 Subject: [PATCH 208/798] v1.5.0011: 'decode-config.py' fixes & enhancements - add configuration data header to json and binary outputs --add template @v and @f for output filename - add output of crc values on crc error - add '--exit-on-error-only' arg make it possible to process partly valid data - replaced '--sort ' by '--unsort' - changed data size and data crc error into warnings - changed output always in json format - removed arg '--format' (obsolete) - removed collections module (obsolete) v1.5.0010: 'decode-config.py' add more detailed outputs - add bit structure for struct TimeRule, Timer, Mcp230xxCfg - add program return code desc - add error handling for additonal python modules - changed 'Settings' definition to handle array of struct - changed field conversion string to formular evaluation for values - fix and enhance output values --- tools/decode-config.py | 1637 ++++++++++++++++++++++++---------------- 1 file changed, 986 insertions(+), 651 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index dc51e0f4294f..284904fb992f 100644 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -19,23 +19,25 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . + Requirements: - Python - pip install json pycurl urllib2 configargparse + Instructions: - Execute command with option -d to retrieve config data from device or - use -f to read out a previously saved configuration file. + Execute command with option -d to retrieve config data from a host + or use -f to read out a configuration file saved using Tasmota Web-UI For help execute command with argument -h Usage: decode-config.py [-h] [-f ] [-d ] [-u ] - [-p ] [--format ] - [--json-indent ] [--json-compact] - [--sort ] [--raw] [--unhide-pw] [-o ] - [-c ] [-V] + [-p ] [--json-indent ] + [--json-compact] [--unsort] [--raw] [--unhide-pw] + [-o ] [--output-file-format ] + [-c ] [--exit-on-error-only] [-V] Decode configuration of Sonoff-Tasmota device. Args that start with '--' (eg. -f) can also be set in a config file (specified via -c). Config file syntax @@ -48,89 +50,84 @@ -c , --config Config file, can be used instead of command parameter (default: None) + --exit-on-error-only exit on error only (default: exit on ERROR and + WARNING). Not recommended, used by your own + responsibility! source: -f , --file file to retrieve Tasmota configuration from (default: - None) + None)' -d , --device hostname or IP address to retrieve Tasmota configuration from (default: None) -u , --username - host http access username (default: admin) + host HTTP access username (default: admin) -p , --password - host http access password (default: None) + host HTTP access password (default: None) output: - --format output format ("json" or "text", default: "json") --json-indent pretty-printed JSON output using indent level - (default: "None") + (default: 'None') --json-compact compact JSON output by eliminate whitespace (default: - "not compact") - --sort sort result - can be "none" or "name" (default: - "name") - --raw output raw values (default: processed) + normal) + --unsort do not sort results (default: sort) + --raw output raw values (default: process) --unhide-pw unhide passwords (default: hide) -o , --output-file - file to store decrypted raw binary configuration to - (default: None) + file to store configuration to (default: None) Macros: + @v=Tasmota version, @f=friendly name + --output-file-format + output format ('json' or 'binary', default: 'json') info: -V, --version show program's version number and exit Either argument -d or -f must be given. - -Examples: - Read configuration from hostname 'sonoff1' and output default json config - ./decode-config.py -d sonoff1 - - Read configuration from file 'Config__6.2.1.dmp' and output default json config - ./decode-config.py -f Config__6.2.1.dmp - - Read configuration from hostname 'sonoff1' using web login data - ./decode-config.py -d sonoff1 -u admin -p xxxx - - Read configuration from hostname 'sonoff1' using web login data and unhide passwords - ./decode-config.py -d sonoff1 -u admin -p xxxx --unhide-pw - - Read configuration from hostname 'sonoff1' using web login data, unhide passwords - and sort key names - ./decode-config.py -d sonoff1 -u admin -p xxxx --unhide-pw --sort name """ import os.path import io import sys -import configargparse -import collections import struct import re -import json +import math +from datetime import datetime +try: + import json +except ImportError: + print("module not found. Try 'pip install json' to install it") + sys.exit(9) +try: + import configargparse +except ImportError: + print("module not found. Try 'pip install configargparse' to install it") + sys.exit(9) try: import pycurl except ImportError: - print("module not found. Try 'pip pycurl' to install it") + print("module not found. Try 'pip install pycurl' to install it") sys.exit(9) try: import urllib2 except ImportError: - print("module not found. Try 'pip urllib2' to install it") + print("module not found. Try 'pip install urllib2' to install it") sys.exit(9) -VER = '1.5.0009' +VER = '1.5.0011' PROG='{} v{} by Norbert Richter'.format(os.path.basename(sys.argv[0]),VER) CONFIG_FILE_XOR = 0x5A - args = {} DEFAULTS = { 'DEFAULT': { 'configfile': None, + 'exitonwarning':True, }, 'source': { @@ -141,15 +138,16 @@ }, 'output': { - 'format': 'json', 'jsonindent': None, 'jsoncompact': False, - 'sort': 'name', + 'unsort': False, 'raw': False, 'unhide-pw': False, 'outputfile': None, + 'outputfileformat': 'json', }, } +exitcode = 0 """ @@ -163,11 +161,35 @@ format Define the data interpretation. - For details see struct module format string - https://docs.python.org/2.7/library/struct.html#format-strings + It is either a string or a tuple containing a string and a + sub-Settings dictionary. + 'xxx': + A string is used to interpret the data at + The string defines the format interpretion as described + in 'struct module format string', see + https://docs.python.org/2.7/library/struct.html#format-strings + In addition to this format string there is as special + meaning of a dot '.' - this means a bit with an optional + prefix length. If no prefix is given, 1 is assumed. + {}: + A dictionary describes itself a 'Settings' dictonary (recursive) baseaddr - The address (starting from 0) within config data + The address (starting from 0) within config data. + For bit fields must be a tuple. + n: + Defines a simple address within config data. + must be a positive integer. + (n, b, s): + A tuple defines a bit field: + + is the address within config data (integer) + + how many bits are used (positive integer) + + bit shift (integer) + positive shift the result right bits + negative shift the result left bits datadef Define the field interpretation different from simple @@ -182,91 +204,74 @@ Defines a one-dimensional array of size [n, n <,n...>] Defines a multi-dimensional array - [{} <,{}...] - Defines a bit struct. The items are simply dict - {'bitname', bitlen}, the dict order is important. convert (optional) Define an output/conversion methode, can be a simple string or a previously defined function name. - 'xxx': - a string defines a format specification of the string - formatter, see - https://docs.python.org/2.7/library/string.html#format-string-syntax + 'xxx?': + a string will be evaluate as is replacing all '?' chars + with the current value. This can also be contain pyhton + code. func: a function defines the name of a formating function """ # config data conversion function and helper -def baudrate(value): - return value * 1200 - def int2ip(value): return '{:d}.{:d}.{:d}.{:d}'.format(value & 0xff, value>>8 & 0xff, value>>16 & 0xff, value>>24 & 0xff) -def int2geo(value): - return float(value) / 1000000 - def password(value): if args.unhidepw: return value return '********' -def fingerprintstr(value): - s = list(value) - result = '' - for c in s: - if c in '0123456789abcdefABCDEF': - result += c - return result - - Setting_6_2_1 = { 'cfg_holder': (' from fielddef[0] """ + return fielddef[0] - length=0 - if fielddef[2] is not None: - # fielddef[2] contains a array or int - # calc size recursive by sum of all elements +def GetFieldBaseAddr(fielddef): + """ + Return the format item of field definition + + @param fielddef: + field format - see "Settings dictionary" above + + @return: ,, from fielddef[1] + + """ + baseaddr = fielddef[1] + if isinstance(baseaddr, tuple): + return baseaddr[0], baseaddr[1], baseaddr[2] + + return baseaddr, 0, 0 + + +def MakeFieldBaseAddr(baseaddr, bitlen, bitshift): + """ + Return a based on given arguments + + @param baseaddr: + baseaddr from Settings definition + @param bitlen: + 0 or bitlen + @param bitshift: + 0 or bitshift + + @return: (,,) if bitlen != 0 + baseaddr if bitlen == 0 + + """ + if bitlen!=0: + return (baseaddr, bitlen, bitshift) + return baseaddr - # tuple 2 contains a list with integer or an integer value - if (isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], int)) or isinstance(fielddef[2], int): - for i in range(0, fielddef[2][0] if isinstance(fielddef[2], list) else fielddef[2] ): - # multidimensional array - if isinstance(fielddef[2], list) and len(fielddef[2])>1: - length += GetFieldLength( (fielddef[0], fielddef[1], fielddef[2][1:]) ) - else: - length += GetFieldLength( (fielddef[0], fielddef[1], None) ) - else: - if fielddef[0][-1:].lower() in ['b','c','?']: - length=1 - elif fielddef[0][-1:].lower() in ['h']: - length=2 - elif fielddef[0][-1:].lower() in ['i','l','f']: - length=4 - elif fielddef[0][-1:].lower() in ['q','d']: - length=8 - elif fielddef[0][-1:].lower() in ['s','p']: - # s and p needs prefix as length - match = re.search("\s*(\d+)", fielddef[0]) - if match: - length=int(match.group(0)) - - # it's a single value - return length def ConvertFieldValue(value, fielddef, raw=False): """ @@ -1682,21 +1850,94 @@ def ConvertFieldValue(value, fielddef, raw=False): @param value: original value read from binary data @param fielddef - field definition (contains possible conversion defiinition) + field definition - see "Settings dictionary" above @param raw return raw values (True) or converted values (False) @return: (un)converted value """ if not raw and len(fielddef)>3: - if isinstance(fielddef[3],str): # use a format string - return fielddef[3].format(value) - elif callable(fielddef[3]): # use a format function - return fielddef[3](value) + convert = fielddef[3] + if isinstance(convert,str): # evaluate strings + try: + return eval(convert.replace('?','value')) + except: + return value + elif callable(convert): # use as format function + return convert(value) return value -def GetField(dobj, fieldname, fielddef, raw=False): +def GetFieldLength(fielddef): + """ + Return length of a field in bytes based on field format definition + + @param fielddef: + field format - see "Settings dictionary" above + + @return: length of field in bytes + + """ + + length=0 + format_ = GetFieldFormat(fielddef) + + # get datadef from field definition + datadef = None + if len(fielddef)>2: + datadef = fielddef[2] + + if datadef is not None: + # fielddef[2] contains a array or int + # calc size recursive by sum of all elements + + # contains a integer list or an single integer value + if (isinstance(datadef, list) \ + and len(datadef)>0 \ + and isinstance(datadef[0], int)) \ + or isinstance(datadef, int): + + for i in range(0, datadef[0] if isinstance(datadef, list) else datadef ): + + # multidimensional array + if isinstance(datadef, list) and len(datadef)>1: + length += GetFieldLength( (fielddef[0], fielddef[1], fielddef[2][1:]) ) + + # single array + else: + length += GetFieldLength( (fielddef[0], fielddef[1], None) ) + + else: + if isinstance(fielddef[0], dict): + # -> iterate through format_ + addr = -1 + setting = fielddef[0] + for name in setting: + baseaddr, bitlen, bitshift = GetFieldBaseAddr(setting[name]) + len_ = GetFieldLength(setting[name]) + if addr != baseaddr: + addr = baseaddr + length += len_ + + else: + if format_[-1:].lower() in ['b','c','?']: + length=1 + elif format_[-1:].lower() in ['h']: + length=2 + elif format_[-1:].lower() in ['i','l','f']: + length=4 + elif format_[-1:].lower() in ['q','d']: + length=8 + elif format_[-1:].lower() in ['s','p']: + # s and p may have a prefix as length + match = re.search("\s*(\d+)", format_) + if match: + length=int(match.group(0)) + + return length + + +def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): """ Get field value from definition @@ -1714,45 +1955,78 @@ def GetField(dobj, fieldname, fielddef, raw=False): result = None - if fielddef[2] is not None: + # get format from field definition + format_ = GetFieldFormat(fielddef) + + # get baseaddr from field definition + baseaddr, bitlen, bitshift = GetFieldBaseAddr(fielddef) + + # get datadef from field definition + datadef = None + if len(fielddef)>2: + datadef = fielddef[2] + + if datadef is not None: result = [] - # tuple 2 contains a list with integer or an integer value - if (isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], int)) or isinstance(fielddef[2], int): - addr = fielddef[1] - for i in range(0, fielddef[2][0] if isinstance(fielddef[2], list) else fielddef[2] ): + # contains a integer list or an single integer value + if (isinstance(datadef, list) \ + and len(datadef)>0 \ + and isinstance(datadef[0], int)) \ + or isinstance(datadef, int): + + offset = 0 + for i in range(0, datadef[0] if isinstance(datadef, list) else datadef): + # multidimensional array - if isinstance(fielddef[2], list) and len(fielddef[2])>1: - subfielddef = (fielddef[0], addr, fielddef[2][1:], None if len(fielddef)<4 else fielddef[3]) - else: # single array - subfielddef = (fielddef[0], addr, None, None if len(fielddef)<4 else fielddef[3]) + if isinstance(datadef, list) and len(datadef)>1: + if len(fielddef)<4: + subfielddef = (fielddef[0], MakeFieldBaseAddr(baseaddr, bitlen, bitshift), datadef[1:]) + else: + subfielddef = (fielddef[0], MakeFieldBaseAddr(baseaddr, bitlen, bitshift), datadef[1:], fielddef[3]) + + # single array + else: + if len(fielddef)<4: + subfielddef = (fielddef[0], MakeFieldBaseAddr(baseaddr, bitlen, bitshift), None) + else: + subfielddef = (fielddef[0], MakeFieldBaseAddr(baseaddr, bitlen, bitshift), None, fielddef[3]) + length = GetFieldLength(subfielddef) if length != 0: - result.append(GetField(dobj, fieldname, subfielddef, raw)) - addr += length - # tuple 2 contains a list with dict - elif isinstance(fielddef[2], list) and len(fielddef[2])>0 and isinstance(fielddef[2][0], dict): - d = {} - value = struct.unpack_from(fielddef[0], dobj, fielddef[1])[0] - d['base'] = ConvertFieldValue(value, fielddef, raw); - union = fielddef[2] - i = 0 - for l in union: - for name,bits in l.items(): - bitval = (value & ( ((1<> i - d[name] = bitval - i += bits - result = d + result.append(GetField(dobj, fieldname, subfielddef, raw=raw, addroffset=addroffset+offset)) + offset += length + else: - # it's a single value - if GetFieldLength(fielddef) != 0: - result = struct.unpack_from(fielddef[0], dobj, fielddef[1])[0] - if fielddef[0][-1:].lower() in ['s','p']: - if ord(result[:1])==0x00 or ord(result[:1])==0xff: - result = '' - s = str(result).split('\0')[0] - result = unicode(s, errors='replace') - result = ConvertFieldValue(result, fielddef, raw) + # contains a dict + if isinstance(fielddef[0], dict): + # -> iterate through format_ + setting = fielddef[0] + config = {} + for name in setting: + config[name] = GetField(dobj, name, setting[name], raw=args.raw, addroffset=addroffset) + result = config + else: + # a simple value + if GetFieldLength(fielddef) != 0: + result = struct.unpack_from(format_, dobj, baseaddr+addroffset)[0] + + if not format_[-1:].lower() in ['s','p']: + if bitshift>=0: + result >>= bitshift + else: + result <<= abs(bitshift) + if bitlen>0: + result &= (1< 127 + result = unicode(s, errors='ignore') + + result = ConvertFieldValue(result, fielddef, raw) return result @@ -1779,6 +2053,8 @@ def Decode(obj): @param obj: binary config data (decrypted) + + @return: configuration dictionary """ # get header data version = GetField(obj, 'version', Setting_6_2_1['version'], raw=True) @@ -1792,16 +2068,20 @@ def Decode(obj): # if we did not found a mathching setting if template is None: - exit(2, "Can't handle Tasmota configuration data for version 0x{:x}".format(version) ) - + exit(2, "Tasmota configuration version 0x{:x} not supported".format(version) ) + setting = template[2] # check size if exists if 'cfg_size' in setting: cfg_size = GetField(obj, 'cfg_size', setting['cfg_size'], raw=True) - # if we did not found a mathching setting - if cfg_size != template[1]: - exit(2, "Data size does not match. Expected {} bytes, read {} bytes.".format(template[1], cfg_size) ) + # read size should be same as definied in template + if cfg_size > template[1]: + # may be processed + exit(3, "Number of bytes read does ot match - read {}, expected {} byte".format(cfg_size, template[1]), typ='WARNING', doexit=args.exitonwarning) + elif cfg_size < template[1]: + # less number of bytes can not be processed + exit(3, "Number of bytes read to small to process - read {}, expected {} byte".format(cfg_size, template[1]), typ='ERROR') # check crc if exists if 'cfg_crc' in setting: @@ -1809,25 +2089,34 @@ def Decode(obj): else: cfg_crc = GetSettingsCrc(obj) if cfg_crc != GetSettingsCrc(obj): - exit(3, 'Data crc error' ) + exit(4, 'Data CRC error, read 0x{:x} should be 0x{:x}'.format(cfg_crc, GetSettingsCrc(obj)), typ='WARNING', doexit=args.exitonwarning) config = {} - config['version_template'] = '0x{:x}'.format(template[0]) for name in setting: - config[name] = GetField(obj, name, setting[name], args.raw) - - if args.sort == 'name': - config = collections.OrderedDict(sorted(config.items())) - - if args.format == 'json': - print json.dumps(config, sort_keys=args.sort=='name', indent=args.jsonindent, separators=(',', ':') if args.jsoncompact else (', ', ': ') ) - else: - for key,value in config.items(): - print '{} = {}'.format(key, repr(value)) - + config[name] = GetField(obj, name, setting[name], raw=args.raw) + + # add header info + timestamp = datetime.now() + config['header'] = { 'timestamp': timestamp.strftime("%Y-%m-%d %H:%M:%S"), + 'data': { + 'crc': hex(GetSettingsCrc(obj)), + 'size': len(obj), + 'template_version': hex(template[0]), + 'content': { + 'crc': hex(cfg_crc), + 'size': cfg_size, + 'version': hex(version), + }, + }, + 'scriptname': os.path.basename(__file__), + 'scriptversion': VER, + } + + return config if __name__ == "__main__": + # program argument processing parser = configargparse.ArgumentParser(description='Decode configuration of Sonoff-Tasmota device.', epilog='Either argument -d or -f must be given.') @@ -1836,80 +2125,89 @@ def Decode(obj): metavar='', dest='tasmotafile', default=DEFAULTS['source']['tasmotafile'], - help='file to retrieve Tasmota configuration from (default: {})'.format(DEFAULTS['source']['tasmotafile'])) + help="file to retrieve Tasmota configuration from (default: {})'".format(DEFAULTS['source']['tasmotafile'])) source.add_argument('-d', '--device', metavar='', dest='device', default=DEFAULTS['source']['device'], - help='hostname or IP address to retrieve Tasmota configuration from (default: {})'.format(DEFAULTS['source']['device']) ) + help="hostname or IP address to retrieve Tasmota configuration from (default: {})".format(DEFAULTS['source']['device']) ) source.add_argument('-u', '--username', metavar='', dest='username', default=DEFAULTS['source']['username'], - help='host http access username (default: {})'.format(DEFAULTS['source']['username'])) + help="host HTTP access username (default: {})".format(DEFAULTS['source']['username'])) source.add_argument('-p', '--password', metavar='', dest='password', default=DEFAULTS['source']['password'], - help='host http access password (default: {})'.format(DEFAULTS['source']['password'])) + help="host HTTP access password (default: {})".format(DEFAULTS['source']['password'])) output = parser.add_argument_group('output') - output.add_argument('--format', - metavar='', - dest='format', - choices=['json', 'text'], - default=DEFAULTS['output']['format'], - help='output format ("json" or "text", default: "{}")'.format(DEFAULTS['output']['format']) ) output.add_argument('--json-indent', metavar='', dest='jsonindent', type=int, default=DEFAULTS['output']['jsonindent'], - help='pretty-printed JSON output using indent level (default: "{}")'.format(DEFAULTS['output']['jsonindent']) ) + help="pretty-printed JSON output using indent level (default: '{}')".format(DEFAULTS['output']['jsonindent']) ) output.add_argument('--json-compact', dest='jsoncompact', action='store_true', default=DEFAULTS['output']['jsoncompact'], - help='compact JSON output by eliminate whitespace (default: "{}")'.format('compact' if DEFAULTS['output']['jsoncompact'] else 'not compact') ) - output.add_argument('--sort', - metavar='', - dest='sort', - choices=['none', 'name'], - default=DEFAULTS['output']['sort'], - help='sort result - can be "none" or "name" (default: "{}")'.format(DEFAULTS['output']['sort']) ) + help="compact JSON output by eliminate whitespace (default: {})".format('normal' if not DEFAULTS['output']['jsoncompact'] else 'compact') ) + output.add_argument('--unsort', + dest='unsort', + action='store_true', + default=DEFAULTS['output']['unsort'], + help="do not sort results (default: {})".format('sort' if not DEFAULTS['output']['unsort'] else 'unsort') ) output.add_argument('--raw', dest='raw', action='store_true', default=DEFAULTS['output']['raw'], - help='output raw values (default: {})'.format('raw' if DEFAULTS['output']['raw'] else 'processed') ) + help="output raw values (default: {})".format('raw' if DEFAULTS['output']['raw'] else 'process') ) output.add_argument('--unhide-pw', dest='unhidepw', action='store_true', default=DEFAULTS['output']['unhide-pw'], - help='unhide passwords (default: {})'.format('unhide' if DEFAULTS['output']['unhide-pw'] else 'hide') ) + help="unhide passwords (default: {})".format('unhide' if DEFAULTS['output']['unhide-pw'] else 'hide') ) output.add_argument('-o', '--output-file', metavar='', dest='outputfile', default=DEFAULTS['output']['outputfile'], - help='file to store decrypted raw binary configuration to (default: {})'.format(DEFAULTS['output']['outputfile'])) + help="file to store configuration to (default: {}) Macros: @v=Tasmota version, @f=friendly name".format(DEFAULTS['output']['outputfile'])) + output.add_argument('--output-file-format', + metavar='', + dest='outputfileformat', + choices=['json', 'binary'], + default=DEFAULTS['output']['outputfileformat'], + help="output format ('json' or 'binary', default: '{}')".format(DEFAULTS['output']['outputfileformat']) ) parser.add_argument('-c', '--config', metavar='', dest='configfile', default=DEFAULTS['DEFAULT']['configfile'], is_config_file=True, - help='Config file, can be used instead of command parameter (default: {})'.format(DEFAULTS['DEFAULT']['configfile']) ) + help="Config file, can be used instead of command parameter (default: {})".format(DEFAULTS['DEFAULT']['configfile']) ) + parser.add_argument('--exit-on-error-only', + dest='exitonwarning', + action='store_false', + default=DEFAULTS['DEFAULT']['exitonwarning'], + help="exit on error only (default: {}). Not recommended, used by your own responsibility!".format('exit on ERROR and WARNING' if DEFAULTS['DEFAULT']['exitonwarning'] else 'exit on ERROR') ) info = parser.add_argument_group('info') info.add_argument('-V', '--version', action='version', version=PROG) args = parser.parse_args() - + + # default no configuration available configobj = None - + + # check source args + if args.device is not None and args.tasmotafile is not None: + exit(6, "Only one source allowed. Do not use -d and -f together") + + # read config direct from device via http if args.device is not None: - # read config direct from device via http buffer = io.BytesIO() url = str("http://{}/dl".format(args.device)) c = pycurl.Curl() @@ -1930,11 +2228,11 @@ def Decode(obj): configobj = buffer.getvalue() + # read config from a file elif args.tasmotafile is not None: - # read config from a file if not os.path.isfile(args.tasmotafile): # check file exists - exit(1, "file '{}' not found".format(args.tasmotafile)) + exit(1, "File '{}' not found".format(args.tasmotafile)) try: tasmotafile = open(args.tasmotafile, "rb") configobj = tasmotafile.read() @@ -1942,22 +2240,59 @@ def Decode(obj): except Exception, e: exit(e[0], e[1]) + # no config source given else: parser.print_help() sys.exit(0) + if configobj is not None and len(configobj)>0: cfg = DeEncrypt(configobj) - if args.outputfile is not None: - outputfile = open(args.outputfile, "wb") - outputfile.write(cfg) - outputfile.close() + config = Decode(cfg) - Decode(cfg) + # output to file + if args.outputfile is not None: + outputfilename = args.outputfile + v = f1 = f2 = f3 = f4 = '' + if 'version' in config: + ver = int(str(config['version']), 0) + major = ((ver>>24) & 0xff) + minor = ((ver>>16) & 0xff) + release = ((ver>> 8) & 0xff) + subrelease = (ver & 0xff) + if major>=6: + if subrelease>0: + subreleasestr = str(subrelease) + else: + subreleasestr = '' + else: + if subrelease>0: + subreleasestr = str(chr(subrelease+ord('a')-1)) + else: + subreleasestr = '' + v = "{:d}.{:d}.{:d}{}{}".format( major, minor, release, '.' if major>=6 else '', subreleasestr) + outputfilename = outputfilename.replace('@v', v) + if 'friendlyname' in config: + outputfilename = outputfilename.replace('@f', config['friendlyname'][0] ) + + if args.outputfileformat == 'binary': + outputfile = open(outputfilename, "wb") + outputfile.write(struct.pack(' Date: Sat, 29 Sep 2018 16:55:53 +0200 Subject: [PATCH 209/798] Add basic support for color calibration --- sonoff/i18n.h | 1 + sonoff/settings.h | 4 +++- sonoff/settings.ino | 9 +++++++++ sonoff/sonoff_version.h | 2 +- sonoff/xdrv_04_light.ino | 34 +++++++++++++++++++++++++++++++--- 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 2090f4793cdc..bc161c078236 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -317,6 +317,7 @@ #define D_CMND_LEDTABLE "LedTable" #define D_CMND_FADE "Fade" #define D_CMND_PIXELS "Pixels" +#define D_CMND_RGBWWTABLE "RGBWWTable" #define D_CMND_ROTATION "Rotation" #define D_CMND_SCHEME "Scheme" #define D_CMND_SPEED "Speed" diff --git a/sonoff/settings.h b/sonoff/settings.h index bf862dd51f91..7dfb91089a84 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -322,7 +322,9 @@ struct SYSCFG { uint16_t mcp230xx_int_timer; // 718 - byte free_71A[174]; // 71A + uint8_t rgbwwTable[5]; // 71A + + byte free_71A[169]; // 71F unsigned long energy_frequency_calibration; // 7C8 diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 95e6ce36726d..4116a1c6d9d7 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -624,6 +624,10 @@ void SettingsDefaultSet2() Settings.button_debounce = KEY_DEBOUNCE_TIME; Settings.switch_debounce = SWITCH_DEBOUNCE_TIME; + + for (byte j = 0; j < 5; j++) { + Settings.rgbwwTable[j] = 255; + } } /********************************************************************************************/ @@ -827,6 +831,11 @@ void SettingsDelta() Settings.button_debounce = KEY_DEBOUNCE_TIME; Settings.switch_debounce = SWITCH_DEBOUNCE_TIME; } + if (Settings.version < 0x0602010A) { + for (byte j = 0; j < 5; j++) { + Settings.rgbwwTable[j] = 255; + } + } Settings.version = VERSION; SettingsSave(1); diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 4f2b5c0ece53..c5765ec386c1 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020109 +#define VERSION 0x0602010A #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 2a5a15b0c8ee..6c8aa938d0a5 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -55,11 +55,11 @@ enum LightCommands { CMND_COLOR, CMND_COLORTEMPERATURE, CMND_DIMMER, CMND_LED, CMND_LEDTABLE, CMND_FADE, - CMND_PIXELS, CMND_ROTATION, CMND_SCHEME, CMND_SPEED, CMND_WAKEUP, CMND_WAKEUPDURATION, + CMND_PIXELS, CMND_RGBWWTABLE, CMND_ROTATION, CMND_SCHEME, CMND_SPEED, CMND_WAKEUP, CMND_WAKEUPDURATION, CMND_WIDTH, CMND_CHANNEL, CMND_HSBCOLOR, CMND_UNDOCA }; const char kLightCommands[] PROGMEM = D_CMND_COLOR "|" D_CMND_COLORTEMPERATURE "|" D_CMND_DIMMER "|" D_CMND_LED "|" D_CMND_LEDTABLE "|" D_CMND_FADE "|" - D_CMND_PIXELS "|" D_CMND_ROTATION "|" D_CMND_SCHEME "|" D_CMND_SPEED "|" D_CMND_WAKEUP "|" D_CMND_WAKEUPDURATION "|" + D_CMND_PIXELS "|" D_CMND_RGBWWTABLE "|" D_CMND_ROTATION "|" D_CMND_SCHEME "|" D_CMND_SPEED "|" D_CMND_WAKEUP "|" D_CMND_WAKEUPDURATION "|" D_CMND_WIDTH "|" D_CMND_CHANNEL "|" D_CMND_HSBCOLOR "|UNDOCA" ; struct LRgbColor { @@ -799,7 +799,8 @@ void LightAnimate() light_update = 0; for (byte i = 0; i < light_subtype; i++) { light_last_color[i] = light_new_color[i]; - cur_col[i] = (Settings.light_correction) ? ledTable[light_last_color[i]] : light_last_color[i]; + cur_col[i] = light_last_color[i]*Settings.rgbwwTable[i]/255; + cur_col[i] = (Settings.light_correction) ? ledTable[cur_col[i]] : cur_col[i]; if (light_type < LT_PWM6) { if (pin[GPIO_PWM1 +i] < 99) { if (cur_col[i] > 0xFC) { @@ -1279,6 +1280,33 @@ boolean LightCommand() } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.light_correction)); } + else if (CMND_RGBWWTABLE == command_code) { + bool validtable = (XdrvMailbox.data_len > 0); + char scolor[25]; + if (validtable) { + uint16_t HSB[3]; + if (strstr(XdrvMailbox.data, ",")) { // Command with up to 5 comma separated parameters + for (int i = 0; i < LST_RGBWC; i++) { + char *substr; + + if (0 == i) { + substr = strtok(XdrvMailbox.data, ","); + } else { + substr = strtok(NULL, ","); + } + if (substr != NULL) { + Settings.rgbwwTable[i] = atoi(substr); + } + } + } + light_update = 1; + } + scolor[0] = '\0'; + for (byte i = 0; i < LST_RGBWC; i++) { + snprintf_P(scolor, 25, PSTR("%s%s%d"), scolor, (i > 0) ? "," : "", Settings.rgbwwTable[i]); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, scolor); + } else if (CMND_FADE == command_code) { switch (XdrvMailbox.payload) { case 0: // Off From cdc8a4d9ebc6043db47aaf7f79a5f8132ad68350 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Sep 2018 10:54:52 +0200 Subject: [PATCH 210/798] tiny change --- sonoff/settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 7dfb91089a84..978b72b24a5c 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -324,7 +324,7 @@ struct SYSCFG { uint8_t rgbwwTable[5]; // 71A - byte free_71A[169]; // 71F + byte free_71F[169]; // 71F unsigned long energy_frequency_calibration; // 7C8 From 6a1a21f03a1d9fcaab3bfe81162a8eb1b575c778 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Sep 2018 11:02:47 +0200 Subject: [PATCH 211/798] 6.2.1.10 Add RGBWWTable 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) --- sonoff/_changelog.ino | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 0a113a04f809..d4c609f14040 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,8 +1,11 @@ -/* 6.2.1.9 20180928 +/* 6.2.1.10 20180930 + * Add command RGBWWTable to support color calibration (#3933) + * + * 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) * Fix I2CScan invalid JSON error message (#3925) - * Fix invalid configuration restores and decode_config.py crc error when savedata = 0 (#3918) + * Fix invalid configuration restores and decode_config.py crc error when savedata = 0 (#3918) * * 6.2.1.8 20180926 * Change status JSON message providing more switch and retain information From 2fd42446e99b0582545521f875f044ad6345f435 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Sep 2018 14:33:26 +0200 Subject: [PATCH 212/798] Add ESP Switch support Add support for Michael Haustein ESP Switch --- sonoff/_changelog.ino | 3 ++- sonoff/sonoff_template.h | 43 +++++++++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index d4c609f14040..20cbded763d0 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) - * + * Add support for Michael Haustein ESP Switch + * * 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 55b1ce3aaa8e..e51e918fea99 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -232,6 +232,7 @@ enum SupportedModules { SHELLY2, PHILIPS, NEO_COOLCAM, + ESP_SWITCH, MAXMODULE }; /********************************************************************************************/ @@ -392,6 +393,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { SHELLY2, BLITZWOLF_BWSHP2, NEO_COOLCAM, + ESP_SWITCH, H801, MAGICHOME, ARILUX_LC01, @@ -598,21 +600,22 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) GPIO_ADC0 // ADC0 A0 Analog input }, - { "EXS Relay", // Latching relay (ESP8266) + { "EXS Relay(s)", // ES-Store Latching relay(s) (ESP8266) // https://ex-store.de/ESP8266-WiFi-Relay-V31 - // Module Pin 1 VCC 3V3, Module Pin 6 GND - GPIO_KEY1, // GPIO00 Module Pin 8 - Button (firmware flash) - GPIO_USER, // GPIO01 Module Pin 2 = UART0_TXD - GPIO_USER, // GPIO02 Module Pin 7 - GPIO_USER, // GPIO03 Module Pin 3 = UART0_RXD - GPIO_USER, // GPIO04 Module Pin 10 - GPIO_USER, // GPIO05 Module Pin 9 + // V3.1 Module Pin 1 VCC 3V3, Module Pin 6 GND + // https://ex-store.de/2-Kanal-WiFi-WLan-Relay-V5-Blackline-fuer-Unterputzmontage + GPIO_USER, // GPIO00 V3.1 Module Pin 8 - V5.0 Module Pin 4 + GPIO_USER, // GPIO01 UART0_TXD V3.1 Module Pin 2 - V5.0 Module Pin 3 + GPIO_USER, // GPIO02 V3.1 Module Pin 7 + GPIO_USER, // GPIO03 UART0_RXD V3.1 Module Pin 3 + GPIO_USER, // GPIO04 V3.1 Module Pin 10 - V5.0 Module Pin 2 + GPIO_USER, // GPIO05 V3.1 Module Pin 9 - V5.0 Module Pin 1 0, 0, 0, 0, 0, 0, // Flash connection GPIO_REL1, // GPIO12 Relay1 ( 1 = Off) GPIO_REL2, // GPIO13 Relay1 ( 1 = On) - GPIO_USER, // GPIO14 Module Pin 5 - 0, - GPIO_USER, // GPIO16 Module Pin 4 + GPIO_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 Relay2 ( 1 = Off) + GPIO_LED1, // GPIO15 V5.0 LED1 + GPIO_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 Relay2 ( 1 = On) 0 }, { "WiOn", // Indoor Tap (ESP8266) @@ -1061,12 +1064,28 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "Neo Coolcam", // Neo Coolcam (ESP8266) // https://www.banggood.com/NEO-COOLCAM-WiFi-Mini-Smart-Plug-APP-Remote-Control-Timing-Smart-Socket-EU-Plug-p-1288562.html?cur_warehouse=CN 0, 0, 0, 0, - GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) + GPIO_LED1_INV, // GPIO04 Red Led (0 = On, 1 = Off) 0, 0, 0, 0, 0, 0, 0, // Flash connection GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) GPIO_KEY1, // GPIO13 Button 0, 0, 0, 0 + }, + { "ESP Switch", // Michael Haustein 4 channel wall switch (ESP07 = ESP8266) + // Use rules for further actions like - rule on power1#state do publish cmnd/other_device/power %value% endon + GPIO_KEY2, // GPIO00 Button 2 + GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPIO_REL3_INV, // GPIO02 Yellow Led 3 (0 = On, 1 = Off) + GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPIO_KEY1, // GPIO04 Button 1 + GPIO_REL2_INV, // GPIO05 Red Led 2 (0 = On, 1 = Off) + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_REL4_INV, // GPIO12 Blue Led 4 (0 = On, 1 = Off) + GPIO_KEY4, // GPIO13 Button 4 + GPIO_KEY3, // GPIO14 Button 3 + GPIO_LED1, // GPIO15 Optional sensor + GPIO_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) + 0 } }; From 191df17b13fa4e3c1204421d68060c8bca4f61b6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Sep 2018 16:52:25 +0200 Subject: [PATCH 213/798] Add support for EXS Relay V5.0 Add support for EXS Relay V5.0 (#3810) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.ino | 35 +++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 20cbded763d0..da3db45702ac 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) * Add support for Michael Haustein ESP Switch + * Add support for EXS Relay V5.0 (#3810) * * 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 6b354bb2462c..b89ffe138342 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -296,20 +296,23 @@ char* GetStateText(byte state) /********************************************************************************************/ -void SetLatchingRelay(power_t power, uint8_t state) +void SetLatchingRelay(power_t lpower, uint8_t state) { - power &= 1; - if (2 == state) { // Reset relay - state = 0; - latching_power = power; - latching_relay_pulse = 0; - } - else if (state && !latching_relay_pulse) { // Set port power to On - latching_power = power; - latching_relay_pulse = 2; // max 200mS (initiated by stateloop()) + // power xx00 - toggle REL1 (Off) and REL3 (Off) - device 1 Off, device 2 Off + // power xx01 - toggle REL2 (On) and REL3 (Off) - device 1 On, device 2 Off + // power xx10 - toggle REL1 (Off) and REL4 (On) - device 1 Off, device 2 On + // power xx11 - toggle REL2 (On) and REL4 (On) - device 1 On, device 2 On + + if (state && !latching_relay_pulse) { // Set latching relay to power if previous pulse has finished + latching_power = lpower; + latching_relay_pulse = 2; // max 200mS (initiated by stateloop()) } - if (pin[GPIO_REL1 +latching_power] < 99) { - digitalWrite(pin[GPIO_REL1 +latching_power], bitRead(rel_inverted, latching_power) ? !state : state); + + for (byte i = 0; i < devices_present; i++) { + uint8_t port = (i << 1) + ((latching_power >> i) &1); + if (pin[GPIO_REL1 +port] < 99) { + digitalWrite(pin[GPIO_REL1 +port], bitRead(rel_inverted, port) ? !state : state); + } } } @@ -2453,6 +2456,10 @@ void GpioInit() if (pin[GPIO_REL1 +i] < 99) { pinMode(pin[GPIO_REL1 +i], OUTPUT); devices_present++; + if (EXS_RELAY == Settings.module) { + digitalWrite(pin[GPIO_REL1 +i], bitRead(rel_inverted, i) ? 1 : 0); + if (i &1) { devices_present--; } + } } } } @@ -2493,10 +2500,6 @@ void GpioInit() } } - if (EXS_RELAY == Settings.module) { - SetLatchingRelay(0,2); - SetLatchingRelay(1,2); - } SetLedPower(Settings.ledstate &8); XdrvCall(FUNC_PRE_INIT); From b9b6d132f53753987ef8a86e28aa104f03844512 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 30 Sep 2018 17:52:41 +0200 Subject: [PATCH 214/798] Fix timer offset -00:00 Fix timer offset -00:00 causing 12:00 hour offset (#3923) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_09_timers.ino | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index da3db45702ac..21e00702e88c 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Add command RGBWWTable to support color calibration (#3933) * Add support for Michael Haustein ESP Switch * Add support for EXS Relay V5.0 (#3810) + * Fix timer offset -00:00 causing 12:00 hour offset (#3923) * * 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 66bf9361493f..124b415340c0 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -194,7 +194,7 @@ void ApplyTimerOffsets(Timer *duskdawn) // apply offsets, check for over- and underflows uint16_t timeBuffer; - if ((uint16_t)stored.time > 720) { + if ((uint16_t)stored.time > 719) { // negative offset, time after 12:00 timeBuffer = (uint16_t)stored.time - 720; // check for underflow From 89825907d05b8e3816f22ad1194734b8bc9327da Mon Sep 17 00:00:00 2001 From: Florian Schroen Date: Sun, 30 Sep 2018 18:38:01 +0200 Subject: [PATCH 215/798] Add support for OBI smart socket Model tested: WFG-1 Models maybe working: WFF-1, WFE-1, WFI-1, WFD-1, WFR-1, WFA-1, WFU-1 Manufactured by: Cixi Yidong Electronics Co. Ltd - http://www.cn-yidong.com/ Sold by: OBI DIY market in Germany - https://www.obi.de/ --- sonoff/sonoff_template.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index e51e918fea99..0a4f98d35926 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -233,6 +233,7 @@ enum SupportedModules { PHILIPS, NEO_COOLCAM, ESP_SWITCH, + OBI, MAXMODULE }; /********************************************************************************************/ @@ -394,6 +395,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { BLITZWOLF_BWSHP2, NEO_COOLCAM, ESP_SWITCH, + OBI, H801, MAGICHOME, ARILUX_LC01, @@ -1085,7 +1087,21 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_KEY3, // GPIO14 Button 3 GPIO_LED1, // GPIO15 Optional sensor GPIO_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) - 0 + }, + { "OBI Socket", // OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko/p/2291706 + 0, // GPIO00 Flash jumper - not available + 0, // GPIO01 + 0, // GPIO02 + 0, // GPIO03 + GPIO_LED1, // GPIO04 LED on top and in switch button + GPIO_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_LED2, // GPIO12 + 0, // GPIO13 + GPIO_KEY1, // GPIO14 switch button + 0, // GPIO15 + 0, // GPIO16 + 0 // GPIO17 } }; From ee0ef227dcf6830ae5c4a53ed7bb95f5b29d3aee Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sun, 30 Sep 2018 23:07:46 +0200 Subject: [PATCH 216/798] Add ability to set default PWM Freq using #define #define USE_PCA9685_FREQ --- sonoff/user_config.h | 1 + sonoff/xdrv_15_pca9685.ino | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index eceadc68d87c..72aa97d53e7b 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -302,6 +302,7 @@ // #define USE_MCP230xx_DISPLAYOUTPUT // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code) // #define USE_PCA9685 // Enable PCA9685 I2C HW PWM Driver - Must define I2C Address in #define USE_PCA9685_ADDR below - range 0x40 - 0x47 (+1k4 code) // #define USE_PCA9685_ADDR 0x40 // Enable PCA9685 I2C Address to use (Must be within range 0x40 through 0x47 - set according to your wired setup) +// #define USE_PCA9685_FREQ 50 // Define default PWM frequency in Hz to be used (must be within 24 to 1526) - If other value is used, it will rever to 50Hz // #define USE_MPR121 // Enable MPR121 controller (I2C addresses 0x5A, 0x5B, 0x5C and 0x5D) in input mode for touch buttons (+1k3 code) // #define USE_CCS811 // Enable CCS811 sensor (I2C address 0x5A) (+2k2 code) // #define USE_MPU6050 // Enable MPU6050 sensor (I2C address 0x68 AD0 low or 0x69 AD0 high) (+2k6 code) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino index e53b8d17f542..c17ec3bee84e 100644 --- a/sonoff/xdrv_15_pca9685.ino +++ b/sonoff/xdrv_15_pca9685.ino @@ -27,7 +27,7 @@ #define PCA9685_REG_PRE_SCALE 0xFE uint8_t pca9685_detected = 0; -uint16_t pca9685_freq = 50; +uint16_t pca9685_freq = USE_PCA9685_FREQ; void PCA9685_Detect(void) { @@ -51,7 +51,7 @@ void PCA9685_Detect(void) void PCA9685_Reset(void) { I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, 0x80); - PCA9685_SetPWMfreq(50); + PCA9685_SetPWMfreq(USE_PCA9685_FREQ); for (uint8_t pin=0;pin<16;pin++) { PCA9685_SetPWM(pin,0,false); } @@ -63,9 +63,13 @@ void PCA9685_SetPWMfreq(double freq) { 7.3.5 from datasheet prescale value = round(25000000/(4096*freq))-1; */ - pca9685_freq=freq; - uint8_t pre_scale_osc = round(25000000/(4096*freq))-1; - if (1526 == freq) pre_scale_osc=0xFF; // force setting for 24hz because rounding causes 1526 to be 254 + if (freq > 23 && freq < 1527) { + pca9685_freq=freq; + } else { + pca9685_freq=50; + } + uint8_t pre_scale_osc = round(25000000/(4096*pca9685_freq))-1; + if (1526 == pca9685_freq) pre_scale_osc=0xFF; // force setting for 24hz because rounding causes 1526 to be 254 uint8_t current_mode1 = I2cRead8(USE_PCA9685_ADDR, PCA9685_REG_MODE1); // read current value of MODE1 register uint8_t sleep_mode1 = (current_mode1&0x7F) | 0x10; // Determine register value to put PCA to sleep I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, sleep_mode1); // Let's sleep a little From 068211cae9857bb93373690772f35b33b3f48c4d Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sun, 30 Sep 2018 23:33:14 +0200 Subject: [PATCH 217/798] Add #define USE_PCA9685_FREQ 50 if not defined Add #define USE_PCA9685_FREQ 50 if not defined in user_config.h --- sonoff/xdrv_15_pca9685.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino index c17ec3bee84e..3114aa461373 100644 --- a/sonoff/xdrv_15_pca9685.ino +++ b/sonoff/xdrv_15_pca9685.ino @@ -26,6 +26,10 @@ #define PCA9685_REG_LED0_ON_L 0x06 #define PCA9685_REG_PRE_SCALE 0xFE +#ifndef USE_PCA9685_FREQ + #define USE_PCA9685_FREQ 50 +#endif + uint8_t pca9685_detected = 0; uint16_t pca9685_freq = USE_PCA9685_FREQ; From da0b283fe7249e8b3b1c46f8808bb9a7251ff14f Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 1 Oct 2018 00:18:37 +0200 Subject: [PATCH 218/798] PCA9685 - Add telemetry output --- sonoff/xdrv_15_pca9685.ino | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino index 3114aa461373..841ae22ab1a6 100644 --- a/sonoff/xdrv_15_pca9685.ino +++ b/sonoff/xdrv_15_pca9685.ino @@ -32,6 +32,7 @@ uint8_t pca9685_detected = 0; uint16_t pca9685_freq = USE_PCA9685_FREQ; +uint16_t pca9685_pin_pwm_value[16]; void PCA9685_Detect(void) { @@ -57,7 +58,8 @@ void PCA9685_Reset(void) I2cWrite8(USE_PCA9685_ADDR, PCA9685_REG_MODE1, 0x80); PCA9685_SetPWMfreq(USE_PCA9685_FREQ); for (uint8_t pin=0;pin<16;pin++) { - PCA9685_SetPWM(pin,0,false); + PCA9685_SetPWM(pin,0,false); + pca9685_pin_pwm_value[pin] = 0; } snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"RESET\":\"OK\"}}")); } @@ -115,6 +117,7 @@ bool PCA9685_Command(void) if (',' == XdrvMailbox.data[ca]) { paramcount++; } } UpperCase(XdrvMailbox.data,XdrvMailbox.data); + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"RESET")) { PCA9685_Reset(); return serviced; } if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"PWMF")) { @@ -122,7 +125,7 @@ bool PCA9685_Command(void) uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); if ((new_freq >= 24) && (new_freq <= 1526)) { PCA9685_SetPWMfreq(new_freq); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}")); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}"),new_freq); return serviced; } } else { // No parameter was given for setfreq, so we return current setting @@ -159,6 +162,17 @@ bool PCA9685_Command(void) return serviced; } +void PCA9685_OutputTelemetry(void) { + if (0 == pca9685_detected) { return; } // We do not do this if the PCA9685 has not been detected + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"PCA9685\": {"), GetDateAndTime(DT_LOCAL).c_str()); + snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM_FREQ\":%i,"),mqtt_data,pca9685_freq); + for (uint8_t pin=0;pin<16;pin++) { + snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM%i\":%i,"),mqtt_data,pin,pca9685_pin_pwm_value[pin]); + } + snprintf_P(mqtt_data,sizeof(mqtt_data),PSTR("%s\"END\":1}}"),mqtt_data); + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); +} + boolean Xdrv15(byte function) { boolean result = false; @@ -169,6 +183,9 @@ boolean Xdrv15(byte function) break; case FUNC_EVERY_SECOND: PCA9685_Detect(); + if (tele_period == 0) { + PCA9685_OutputTelemetry(); + } break; case FUNC_EVERY_50_MSECOND: break; From 047f430ad8c8ae65e8a376928b7792a88074810e Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 1 Oct 2018 00:27:16 +0200 Subject: [PATCH 219/798] PCA9685 - Remove unused callbacks in Xdrv15() --- sonoff/xdrv_15_pca9685.ino | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino index 841ae22ab1a6..9cb9292a0c72 100644 --- a/sonoff/xdrv_15_pca9685.ino +++ b/sonoff/xdrv_15_pca9685.ino @@ -179,25 +179,17 @@ boolean Xdrv15(byte function) if (i2c_flg) { switch (function) { - case FUNC_MQTT_DATA: - break; case FUNC_EVERY_SECOND: PCA9685_Detect(); if (tele_period == 0) { PCA9685_OutputTelemetry(); } break; - case FUNC_EVERY_50_MSECOND: - break; - case FUNC_JSON_APPEND: - break; case FUNC_COMMAND: if (XDRV_15 == XdrvMailbox.index) { PCA9685_Command(); } break; - case FUNC_WEB_APPEND: - break; default: break; } From 9e5aaef51f9cdf2cca08bd23e08aead10c03c7d9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 1 Oct 2018 12:19:58 +0200 Subject: [PATCH 220/798] Add OBI/Teckin Socket support * Add support for OBI Power Socket (#1988, #3944) * Add support for Teckin Power Socket with Energy Monitoring (#3950) --- sonoff/_changelog.ino | 2 ++ sonoff/sonoff_template.h | 66 +++++++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 21e00702e88c..04f209e10d2c 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,6 +3,8 @@ * Add support for Michael Haustein ESP Switch * Add support for EXS Relay V5.0 (#3810) * Fix timer offset -00:00 causing 12:00 hour offset (#3923) + * Add support for OBI Power Socket (#1988, #3944) + * Add support for Teckin Power Socket with Energy Monitoring (#3950) * * 6.2.1.9 20180928 * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 0a4f98d35926..aad498f3baeb 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -234,6 +234,7 @@ enum SupportedModules { NEO_COOLCAM, ESP_SWITCH, OBI, + TECKIN, MAXMODULE }; /********************************************************************************************/ @@ -357,31 +358,31 @@ const uint8_t kGpioNiceList[GPIO_SENSOR_END] PROGMEM = { }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { - SONOFF_BASIC, + SONOFF_BASIC, // Sonoff Relay Devices SONOFF_RF, SONOFF_TH, SONOFF_DUAL, SONOFF_DUAL_R2, SONOFF_POW, SONOFF_POW_R2, - SONOFF_S31, SONOFF_4CH, SONOFF_4CHPRO, - SONOFF_SV, - SONOFF_DEV, - SONOFF_S2X, - SLAMPHER, - SONOFF_TOUCH, + SONOFF_S31, // Sonoff Socket Relay Devices with Energy Monitoring + SONOFF_S2X, // Sonoff Socket Relay Devices + SONOFF_TOUCH, // Sonoff Switch Devices SONOFF_T11, SONOFF_T12, SONOFF_T13, - SONOFF_SC, - SONOFF_B1, - SONOFF_LED, + SONOFF_LED, // Sonoff Light Devices SONOFF_BN, - SONOFF_IFAN02, - SONOFF_BRIDGE, - CH1, + SONOFF_B1, // Sonoff Light Bulbs + SLAMPHER, + SONOFF_SC, // Sonoff Environmemtal Sensor + SONOFF_IFAN02, // Sonoff Fan + SONOFF_BRIDGE, // Sonoff Bridge + SONOFF_SV, // Sonoff Development Devices + SONOFF_DEV, + CH1, // Relay Devices CH4, MOTOR, ELECTRODRAGON, @@ -392,11 +393,12 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WION, SHELLY1, SHELLY2, - BLITZWOLF_BWSHP2, - NEO_COOLCAM, - ESP_SWITCH, + BLITZWOLF_BWSHP2, // Socket Relay Devices with Energy Monitoring + TECKIN, + NEO_COOLCAM, // Socket Relay Devices OBI, - H801, + ESP_SWITCH, // Switch Devices + H801, // Light Devices MAGICHOME, ARILUX_LC01, ARILUX_LC06, @@ -404,9 +406,9 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { ZENGGE_ZF_WF017, HUAFAN_SS, KMC_70011, - AILIGHT, + AILIGHT, // Light Bulbs PHILIPS, - WITTY, + WITTY, // Development Devices WEMOS }; @@ -615,9 +617,9 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0, 0, 0, 0, 0, // Flash connection GPIO_REL1, // GPIO12 Relay1 ( 1 = Off) GPIO_REL2, // GPIO13 Relay1 ( 1 = On) - GPIO_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 Relay2 ( 1 = Off) + GPIO_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 GPIO_REL3_INV Relay2 ( 1 = Off) GPIO_LED1, // GPIO15 V5.0 LED1 - GPIO_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 Relay2 ( 1 = On) + GPIO_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 GPIO_REL4_INV Relay2 ( 1 = On) 0 }, { "WiOn", // Indoor Tap (ESP8266) @@ -1089,19 +1091,27 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) }, { "OBI Socket", // OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko/p/2291706 - 0, // GPIO00 Flash jumper - not available - 0, // GPIO01 - 0, // GPIO02 - 0, // GPIO03 + 0, 0, 0, 0, GPIO_LED1, // GPIO04 LED on top and in switch button GPIO_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) 0, 0, 0, 0, 0, 0, // Flash connection GPIO_LED2, // GPIO12 0, // GPIO13 GPIO_KEY1, // GPIO14 switch button - 0, // GPIO15 - 0, // GPIO16 - 0 // GPIO17 + 0, 0, 0 + }, + { "Teckin", // https://www.amazon.de/gp/product/B07D5V139R + 0, + GPIO_KEY1, // GPIO01 Serial TXD and Button + 0, + GPIO_LED2_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) + GPIO_HLW_CF, // GPIO04 BL0937 or HJL-01 CF power + GPIO_HLW_CF1, // GPIO05 BL0937 or HJL-01 CF1 voltage / current + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_HLW_SEL, // GPIO12 BL0937 or HJL-01 Sel output + GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) + GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + 0, 0, 0 } }; From 13d37a144aa83a6f8f2114b80f490bcb823707f7 Mon Sep 17 00:00:00 2001 From: Mike Date: Mon, 1 Oct 2018 18:06:25 +0200 Subject: [PATCH 221/798] Fixed wrong sensor name Fixed a wrong sensor name in line 23. It's not the SPG30, it's the CSS811 --- sonoff/xsns_31_ccs811.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xsns_31_ccs811.ino b/sonoff/xsns_31_ccs811.ino index 482572cdb22c..d57c9cb06e37 100644 --- a/sonoff/xsns_31_ccs811.ino +++ b/sonoff/xsns_31_ccs811.ino @@ -20,7 +20,7 @@ #ifdef USE_I2C #ifdef USE_CCS811 /*********************************************************************************************\ - * SGP30 - Gas (TVOC - Total Volatile Organic Compounds) and Air Quality (CO2) + * CCS811 - Gas (TVOC - Total Volatile Organic Compounds) and Air Quality (CO2) * * Source: Adafruit * From bcc9432214961fdd8dd4f8ab6daa44f6516bd6cb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 1 Oct 2018 13:13:47 -0300 Subject: [PATCH 222/798] Added Dimmer Trigger for Rules For example rule on Dimmer#state<30 do ... endon rule on Dimmer#boot<10 do ... endon --- sonoff/xdrv_10_rules.ino | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index b13dfc771229..54fcb3f08f3c 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -83,6 +83,7 @@ unsigned long rules_timer[MAX_RULE_TIMERS] = { 0 }; uint8_t rules_quota = 0; long rules_new_power = -1; long rules_old_power = -1; +long rules_old_dimm = -1; uint32_t rules_triggers[MAX_RULE_SETS] = { 0 }; uint16_t rules_last_minute = 60; @@ -398,6 +399,16 @@ void RulesEvery50ms() } rules_old_power = rules_new_power; } + else if (rules_old_dimm != Settings.light_dimmer) { + if (rules_old_dimm != -1) { + snprintf_P(json_event, sizeof(json_event), PSTR("{\"Dimmer\":{\"State\":%d}}"), Settings.light_dimmer); + } else { + // Boot time DIMMER VALUE + snprintf_P(json_event, sizeof(json_event), PSTR("{\"Dimmer\":{\"Boot\":%d}}"), Settings.light_dimmer); + } + RulesProcessEvent(json_event); + rules_old_dimm = Settings.light_dimmer; + } else if (event_data[0]) { char *event; char *parameter; From 2f85a4728b238fcc548d393ce04eb2c7aa8314f4 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 1 Oct 2018 19:32:55 +0200 Subject: [PATCH 223/798] PCA9685 - bugfix for telemetry + status command --- sonoff/xdrv_15_pca9685.ino | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sonoff/xdrv_15_pca9685.ino b/sonoff/xdrv_15_pca9685.ino index 9cb9292a0c72..b29e85a5b833 100644 --- a/sonoff/xdrv_15_pca9685.ino +++ b/sonoff/xdrv_15_pca9685.ino @@ -98,6 +98,7 @@ void PCA9685_SetPWM(uint8_t pin, uint16_t pwm, bool inverted) { } else { PCA9685_SetPWM_Reg(pin, 0, pwm); } + pca9685_pin_pwm_value[pin] = pwm; } bool PCA9685_Command(void) @@ -120,6 +121,8 @@ bool PCA9685_Command(void) if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"RESET")) { PCA9685_Reset(); return serviced; } + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"STATUS")) { PCA9685_OutputTelemetry(false); return serviced; } + if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"PWMF")) { if (paramcount > 1) { uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2)); @@ -162,7 +165,7 @@ bool PCA9685_Command(void) return serviced; } -void PCA9685_OutputTelemetry(void) { +void PCA9685_OutputTelemetry(bool telemetry) { if (0 == pca9685_detected) { return; } // We do not do this if the PCA9685 has not been detected snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"PCA9685\": {"), GetDateAndTime(DT_LOCAL).c_str()); snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM_FREQ\":%i,"),mqtt_data,pca9685_freq); @@ -170,7 +173,9 @@ void PCA9685_OutputTelemetry(void) { snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM%i\":%i,"),mqtt_data,pin,pca9685_pin_pwm_value[pin]); } snprintf_P(mqtt_data,sizeof(mqtt_data),PSTR("%s\"END\":1}}"),mqtt_data); - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); + if (telemetry) { + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); + } } boolean Xdrv15(byte function) @@ -182,7 +187,7 @@ boolean Xdrv15(byte function) case FUNC_EVERY_SECOND: PCA9685_Detect(); if (tele_period == 0) { - PCA9685_OutputTelemetry(); + PCA9685_OutputTelemetry(true); } break; case FUNC_COMMAND: From 3280c7d177f07282ecd72b9aa881325136b55569 Mon Sep 17 00:00:00 2001 From: "Christian W. Zuckschwerdt" Date: Mon, 1 Oct 2018 14:28:21 +0000 Subject: [PATCH 224/798] Add W1_PARASITE_POWER optimization for DS18X20 --- sonoff/user_config.h | 1 + sonoff/xsns_05_ds18x20.ino | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 72aa97d53e7b..ee77854bc393 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -271,6 +271,7 @@ // -- One wire sensors ---------------------------- // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors #define USE_DS18x20 // Optional for more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) +//#define W1_PARASITE_POWER // If using USE_DS18x20 then optimize for parasite powered sensors //#define USE_DS18x20_LEGACY // Optional for more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) // -- I2C sensors --------------------------------- diff --git a/sonoff/xsns_05_ds18x20.ino b/sonoff/xsns_05_ds18x20.ino index 869deac8e755..474f26e2e9c6 100644 --- a/sonoff/xsns_05_ds18x20.ino +++ b/sonoff/xsns_05_ds18x20.ino @@ -49,6 +49,10 @@ struct DS18X20STRUCT { uint8_t ds18x20_sensors = 0; uint8_t ds18x20_pin = 0; char ds18x20_types[12]; +#ifdef W1_PARASITE_POWER +uint8_t ds18x20_sensor_curr = 0; +unsigned long w1_power_until = 0; +#endif /*********************************************************************************************\ * Embedded tuned OneWire library @@ -285,7 +289,14 @@ void Ds18x20Init() void Ds18x20Convert() { OneWireReset(); +#ifdef W1_PARASITE_POWER + // With parasite power address one sensor at a time + if (++ds18x20_sensor_curr >= ds18x20_sensors) + ds18x20_sensor_curr = 0; + OneWireSelect(ds18x20_sensor[ds18x20_sensor_curr].address); +#else OneWireWrite(W1_SKIP_ROM); // Address all Sensors on Bus +#endif OneWireWrite(W1_CONVERT_TEMP); // start conversion, no parasite power on at the end // delay(750); // 750ms should be enough for 12bit conv } @@ -334,6 +345,9 @@ bool Ds18x20Read(uint8_t sensor) OneWireWrite(data[4]); // Configuration Register OneWireSelect(ds18x20_sensor[index].address); OneWireWrite(W1_WRITE_EEPROM); // Save scratchpad to EEPROM +#ifdef W1_PARASITE_POWER + w1_power_until = millis() + 10; // 10ms specified duration for EEPROM write +#endif } temp12 = (data[1] << 8) + data[0]; if (temp12 > 2047) { @@ -374,7 +388,18 @@ void Ds18x20Name(uint8_t sensor) void Ds18x20EverySecond() { - if (uptime &1) { +#ifdef W1_PARASITE_POWER + // skip access if there is still an eeprom write ongoing + unsigned long now = millis(); + if (now < w1_power_until) + return; +#endif + if (uptime & 1 +#ifdef W1_PARASITE_POWER + // if more than 1 sensor and only parasite power: convert every cycle + || ds18x20_sensors >= 2 +#endif + ) { // 2mS Ds18x20Convert(); // Start conversion, takes up to one second } else { From 3ed06695bade88e21778afa99d5609455e6e8427 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Oct 2018 09:38:36 +0200 Subject: [PATCH 225/798] Fix Teckin energy monitoring Fix Teckin energy monitoring (#3950) --- sonoff/xnrg_01_hlw8012.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 025ccff442cc..902df89ae47d 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -177,7 +177,7 @@ void HlwSnsInit() Settings.energy_current_calibration = HLW_IREF_PULSE; } - if (BLITZWOLF_BWSHP2 == Settings.module) { + if ((BLITZWOLF_BWSHP2 == Settings.module) || (TECKIN == Settings.module)) { hlw_power_ratio = HJL_PREF; hlw_voltage_ratio = HJL_UREF; hlw_current_ratio = HJL_IREF; From 7dcb10a91172d6b9391912a7d0a205e4cb898643 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Tue, 2 Oct 2018 13:42:21 +0200 Subject: [PATCH 226/798] v1.5.0012: 'decode-config.py' add args, add 6.2.1.x settings, fix filename with @ - add: developer version settings 6.2.1.2, 6.2.1.3, 6.2.1.6, 6.2.1.10 - add: args '--raw-keys', '--no-raw-keys', '--raw-values', '--no-raw-values', '--hide-pw' - add: value -1 for arg '--json-indent' to disable indent if default is enabled - changed: json output to file use always raw values - fix: add again removed return code desc - fix: needless dot . in filename for @v - fix: rule(123) none-raw outputs --- tools/decode-config.py | 1467 ++++++++++++++++++++++++++++++++++------ 1 file changed, 1252 insertions(+), 215 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index 284904fb992f..258a8accd178 100644 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +#!/usr/bin/env python # -*- coding: utf-8 -*- +VER = '1.5.0012' """ decode-config.py - Decode configuration of Sonoff-Tasmota device @@ -35,9 +37,11 @@ Usage: decode-config.py [-h] [-f ] [-d ] [-u ] [-p ] [--json-indent ] - [--json-compact] [--unsort] [--raw] [--unhide-pw] - [-o ] [--output-file-format ] - [-c ] [--exit-on-error-only] [-V] + [--json-compact] [--sort] [--unsort] [--raw-values] + [--no-raw-values] [--raw-keys] [--no-raw-keys] + [--hide-pw] [--unhide-pw] [-o ] + [--output-file-format ] [-c ] + [--exit-on-error-only] [-V] Decode configuration of Sonoff-Tasmota device. Args that start with '--' (eg. -f) can also be set in a config file (specified via -c). Config file syntax @@ -66,18 +70,23 @@ -p , --password host HTTP access password (default: None) - output: + config: --json-indent pretty-printed JSON output using indent level - (default: 'None') - --json-compact compact JSON output by eliminate whitespace (default: - normal) - --unsort do not sort results (default: sort) - --raw output raw values (default: process) - --unhide-pw unhide passwords (default: hide) + (default: 'None'). Use values greater equal 0 to + indent or -1 to disabled indent. + --json-compact compact JSON output by eliminate whitespace + --sort sort json keywords (default) + --unsort do not sort json keywords + --raw-values, --raw output raw values + --no-raw-values output human readable values (default) + --raw-keys output bitfield raw keys (default) + --no-raw-keys do not output bitfield raw keys + --hide-pw hide passwords (default) + --unhide-pw unhide passwords -o , --output-file - file to store configuration to (default: None) Macros: - @v=Tasmota version, @f=friendly name + file to store configuration to (default: None). + Replacements: @v=Tasmota version, @f=friendly name --output-file-format output format ('json' or 'binary', default: 'json') @@ -86,41 +95,44 @@ Either argument -d or -f must be given. + +Returns: + 0: successful + 1: file not found + 2: configuration version not supported + 3: data size mismatch + 4: data CRC error + 5: configuration file read error + 6: argument error + 9: python module is missing + 4xx, 5xx: HTTP error + """ import os.path import io import sys -import struct -import re -import math -from datetime import datetime -try: - import json -except ImportError: - print("module not found. Try 'pip install json' to install it") +def ModuleImportError(module): + er = str(module) + print("{}. Try 'pip install {}' to install it".format(er,er.split(' ')[len(er.split(' '))-1]) ) sys.exit(9) try: + import struct + import re + import math + from datetime import datetime + import json import configargparse -except ImportError: - print("module not found. Try 'pip install configargparse' to install it") - sys.exit(9) -try: import pycurl -except ImportError: - print("module not found. Try 'pip install pycurl' to install it") - sys.exit(9) -try: import urllib2 -except ImportError: - print("module not found. Try 'pip install urllib2' to install it") - sys.exit(9) +except ImportError, e: + ModuleImportError(e) -VER = '1.5.0011' PROG='{} v{} by Norbert Richter'.format(os.path.basename(sys.argv[0]),VER) CONFIG_FILE_XOR = 0x5A +BINARYFILE_MAGIC = 0x63576223 args = {} DEFAULTS = { @@ -136,95 +148,1058 @@ 'password': None, 'tasmotafile': None, }, - 'output': + 'config': { 'jsonindent': None, 'jsoncompact': False, - 'unsort': False, - 'raw': False, - 'unhide-pw': False, + 'sort': True, + 'rawvalues': False, + 'rawkeys': True, + 'hidepw': True, 'outputfile': None, 'outputfileformat': 'json', }, } -exitcode = 0 - - -""" -Settings dictionary describes the config file fields definition: - - Each setting name has a tuple containing the following items: - - (format, baseaddr, datadef, ) - - where - - format - Define the data interpretation. - It is either a string or a tuple containing a string and a - sub-Settings dictionary. - 'xxx': - A string is used to interpret the data at - The string defines the format interpretion as described - in 'struct module format string', see - https://docs.python.org/2.7/library/struct.html#format-strings - In addition to this format string there is as special - meaning of a dot '.' - this means a bit with an optional - prefix length. If no prefix is given, 1 is assumed. - {}: - A dictionary describes itself a 'Settings' dictonary (recursive) - - baseaddr - The address (starting from 0) within config data. - For bit fields must be a tuple. - n: - Defines a simple address within config data. - must be a positive integer. - (n, b, s): - A tuple defines a bit field: - - is the address within config data (integer) - - how many bits are used (positive integer) - - bit shift (integer) - positive shift the result right bits - negative shift the result left bits - - datadef - Define the field interpretation different from simple - standard types (like char, byte, int) e. g. lists or bit fields - Can be None, a single integer, a list or a dictionary - None: - None must be given if the field contains a simple value - desrcibed by the prefix - n: - Same as [n] below - [n]: - Defines a one-dimensional array of size - [n, n <,n...>] - Defines a multi-dimensional array - - convert (optional) - Define an output/conversion methode, can be a simple string - or a previously defined function name. - 'xxx?': - a string will be evaluate as is replacing all '?' chars - with the current value. This can also be contain pyhton - code. - func: - a function defines the name of a formating function - -""" -# config data conversion function and helper -def int2ip(value): - return '{:d}.{:d}.{:d}.{:d}'.format(value & 0xff, value>>8 & 0xff, value>>16 & 0xff, value>>24 & 0xff) - -def password(value): - if args.unhidepw: - return value - return '********' - +exitcode = 0 + + +""" +Settings dictionary describes the config file fields definition: + + Each setting name has a tuple containing the following items: + + (format, baseaddr, datadef, ) + + where + + format + Define the data interpretation. + It is either a string or a tuple containing a string and a + sub-Settings dictionary. + 'xxx': + A string is used to interpret the data at + The string defines the format interpretion as described + in 'struct module format string', see + https://docs.python.org/2.7/library/struct.html#format-strings + In addition to this format string there is as special + meaning of a dot '.' - this means a bit with an optional + prefix length. If no prefix is given, 1 is assumed. + {}: + A dictionary describes itself a 'Settings' dictonary (recursive) + + baseaddr + The address (starting from 0) within config data. + For bit fields must be a tuple. + n: + Defines a simple address within config data. + must be a positive integer. + (n, b, s): + A tuple defines a bit field: + + is the address within config data (integer) + + how many bits are used (positive integer) + + bit shift (integer) + positive shift the result right bits + negative shift the result left bits + + datadef + Define the field interpretation different from simple + standard types (like char, byte, int) e. g. lists or bit fields + Can be None, a single integer, a list or a dictionary + None: + None must be given if the field contains a simple value + desrcibed by the prefix + n: + Same as [n] below + [n]: + Defines a one-dimensional array of size + [n, n <,n...>] + Defines a multi-dimensional array + + convert (optional) + Define an output/conversion methode, can be a simple string + or a previously defined function name. + 'xxx?': + a string will be evaluate as is replacing all '?' chars + with the current value. This can also be contain pyhton + code. + func: + a function defines the name of a formating function + +""" +# config data conversion function and helper +def int2ip(value): + return '{:d}.{:d}.{:d}.{:d}'.format(value & 0xff, value>>8 & 0xff, value>>16 & 0xff, value>>24 & 0xff) + +def password(value): + if args.hidepw: + return '********' + return value + + +Setting_6_2_1_10 = { + 'cfg_holder': ('>24) & 0xff) + minor = ((ver>>16) & 0xff) + release = ((ver>> 8) & 0xff) + subrelease = (ver & 0xff) + if major>=6: + if subrelease>0: + subreleasestr = str(subrelease) + else: + subreleasestr = '' + else: + if subrelease>0: + subreleasestr = str(chr(subrelease+ord('a')-1)) + else: + subreleasestr = '' + v = "{:d}.{:d}.{:d}{}{}".format( major, minor, release, '.' if (major>=6 and subreleasestr!='') else '', subreleasestr) + filename = filename.replace('@v', v) + if 'friendlyname' in configuration: + filename = filename.replace('@f', configuration['friendlyname'][0] ) + + return filename + + def GetSettingsCrc(dobj): """ Return binary config data calclulated crc @param dobj: - uncrypted binary config data + decrypted binary config data @return: 2 byte unsigned integer crc value @@ -1918,7 +2928,7 @@ def GetFieldLength(fielddef): if addr != baseaddr: addr = baseaddr length += len_ - + else: if format_[-1:].lower() in ['b','c','?']: length=1 @@ -1942,13 +2952,15 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): Get field value from definition @param dobj: - uncrypted binary config data + decrypted binary config data @param fieldname: name of the field @param fielddef: see Settings desc above @param raw return raw values (True) or converted values (False) + @param addroffset + use offset for baseaddr (used for recursive calls) @return: read field value """ @@ -1963,7 +2975,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): # get datadef from field definition datadef = None - if len(fielddef)>2: + if fielddef is not None and len(fielddef)>2: datadef = fielddef[2] if datadef is not None: @@ -1993,7 +3005,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): subfielddef = (fielddef[0], MakeFieldBaseAddr(baseaddr, bitlen, bitshift), None, fielddef[3]) length = GetFieldLength(subfielddef) - if length != 0: + if length != 0 and (fieldname != 'raw' or args.rawkeys): result.append(GetField(dobj, fieldname, subfielddef, raw=raw, addroffset=addroffset+offset)) offset += length @@ -2004,7 +3016,8 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): setting = fielddef[0] config = {} for name in setting: - config[name] = GetField(dobj, name, setting[name], raw=args.raw, addroffset=addroffset) + if name != 'raw' or args.rawkeys: + config[name] = GetField(dobj, name, setting[name], raw=raw, addroffset=addroffset) result = config else: # a simple value @@ -2047,39 +3060,56 @@ def DeEncrypt(obj): return dobj -def Decode(obj): +def GetTemplateSetting(version): """ - Decodes binary data stream + Search for template, settings and size to be used depending on given version number - @param obj: - binary config data (decrypted) - - @return: configuration dictionary - """ - # get header data - version = GetField(obj, 'version', Setting_6_2_1['version'], raw=True) + @param version: + version number from read binary data to search for + @return: template, settings to use, None if version is invalid + """ # search setting definition template = None + setting = None + size = None for cfg in Settings: if version >= cfg[0]: template = cfg + size = template[1] + setting = template[2] break + return template, size, setting + + +def Decode(obj, raw=True): + """ + Decodes binary data stream + + @param obj: + binary config data (decrypted) + @param raw + decode raw values (True) or converted values (False) + + @return: configuration dictionary + """ + # get header data + version = GetField(obj, 'version', Setting_6_2_1['version'], raw=True) + + template, size, setting = GetTemplateSetting(version) # if we did not found a mathching setting if template is None: exit(2, "Tasmota configuration version 0x{:x} not supported".format(version) ) - - setting = template[2] # check size if exists if 'cfg_size' in setting: cfg_size = GetField(obj, 'cfg_size', setting['cfg_size'], raw=True) # read size should be same as definied in template - if cfg_size > template[1]: + if cfg_size > size: # may be processed exit(3, "Number of bytes read does ot match - read {}, expected {} byte".format(cfg_size, template[1]), typ='WARNING', doexit=args.exitonwarning) - elif cfg_size < template[1]: + elif cfg_size < size: # less number of bytes can not be processed exit(3, "Number of bytes read to small to process - read {}, expected {} byte".format(cfg_size, template[1]), typ='ERROR') @@ -2091,9 +3121,8 @@ def Decode(obj): if cfg_crc != GetSettingsCrc(obj): exit(4, 'Data CRC error, read 0x{:x} should be 0x{:x}'.format(cfg_crc, GetSettingsCrc(obj)), typ='WARNING', doexit=args.exitonwarning) - config = {} - for name in setting: - config[name] = GetField(obj, name, setting[name], raw=args.raw) + # get config + config = GetField(obj, None, (setting,None,None), raw=raw) # add header info timestamp = datetime.now() @@ -2142,44 +3171,74 @@ def Decode(obj): default=DEFAULTS['source']['password'], help="host HTTP access password (default: {})".format(DEFAULTS['source']['password'])) - output = parser.add_argument_group('output') - output.add_argument('--json-indent', + config = parser.add_argument_group('config') + config.add_argument('--json-indent', metavar='', dest='jsonindent', type=int, - default=DEFAULTS['output']['jsonindent'], - help="pretty-printed JSON output using indent level (default: '{}')".format(DEFAULTS['output']['jsonindent']) ) - output.add_argument('--json-compact', + default=DEFAULTS['config']['jsonindent'], + help="pretty-printed JSON output using indent level (default: '{}'). Use values greater equal 0 to indent or -1 to disabled indent.".format(DEFAULTS['config']['jsonindent']) ) + config.add_argument('--json-compact', dest='jsoncompact', action='store_true', - default=DEFAULTS['output']['jsoncompact'], - help="compact JSON output by eliminate whitespace (default: {})".format('normal' if not DEFAULTS['output']['jsoncompact'] else 'compact') ) - output.add_argument('--unsort', - dest='unsort', + default=DEFAULTS['config']['jsoncompact'], + help="compact JSON output by eliminate whitespace{}".format(' (default)' if DEFAULTS['config']['jsoncompact'] else '') ) + + config.add_argument('--sort', + dest='sort', + action='store_true', + default=DEFAULTS['config']['sort'], + help="sort json keywords{}".format(' (default)' if DEFAULTS['config']['sort'] else '') ) + config.add_argument('--unsort', + dest='sort', + action='store_false', + default=DEFAULTS['config']['sort'], + help="do not sort json keywords{}".format(' (default)' if not DEFAULTS['config']['sort'] else '') ) + + config.add_argument('--raw-values', '--raw', + dest='rawvalues', action='store_true', - default=DEFAULTS['output']['unsort'], - help="do not sort results (default: {})".format('sort' if not DEFAULTS['output']['unsort'] else 'unsort') ) - output.add_argument('--raw', - dest='raw', + default=DEFAULTS['config']['rawvalues'], + help="output raw values{}".format(' (default)' if DEFAULTS['config']['rawvalues'] else '') ) + config.add_argument('--no-raw-values', + dest='rawvalues', + action='store_false', + default=DEFAULTS['config']['rawvalues'], + help="output human readable values{}".format(' (default)' if not DEFAULTS['config']['rawvalues'] else '') ) + + config.add_argument('--raw-keys', + dest='rawkeys', action='store_true', - default=DEFAULTS['output']['raw'], - help="output raw values (default: {})".format('raw' if DEFAULTS['output']['raw'] else 'process') ) - output.add_argument('--unhide-pw', - dest='unhidepw', + default=DEFAULTS['config']['rawkeys'], + help="output bitfield raw keys{}".format(' (default)' if DEFAULTS['config']['rawkeys'] else '') ) + config.add_argument('--no-raw-keys', + dest='rawkeys', + action='store_false', + default=DEFAULTS['config']['rawkeys'], + help="do not output bitfield raw keys{}".format(' (default)' if not DEFAULTS['config']['rawkeys'] else '') ) + + config.add_argument('--hide-pw', + dest='hidepw', action='store_true', - default=DEFAULTS['output']['unhide-pw'], - help="unhide passwords (default: {})".format('unhide' if DEFAULTS['output']['unhide-pw'] else 'hide') ) - output.add_argument('-o', '--output-file', + default=DEFAULTS['config']['hidepw'], + help="hide passwords{}".format(' (default)' if DEFAULTS['config']['hidepw'] else '') ) + config.add_argument('--unhide-pw', + dest='hidepw', + action='store_false', + default=DEFAULTS['config']['hidepw'], + help="unhide passwords{}".format(' (default)' if not DEFAULTS['config']['hidepw'] else '') ) + + config.add_argument('-o', '--output-file', metavar='', dest='outputfile', - default=DEFAULTS['output']['outputfile'], - help="file to store configuration to (default: {}) Macros: @v=Tasmota version, @f=friendly name".format(DEFAULTS['output']['outputfile'])) - output.add_argument('--output-file-format', + default=DEFAULTS['config']['outputfile'], + help="file to store configuration to (default: {}). Replacements: @v=Tasmota version, @f=friendly name".format(DEFAULTS['config']['outputfile'])) + config.add_argument('--output-file-format', metavar='', dest='outputfileformat', choices=['json', 'binary'], - default=DEFAULTS['output']['outputfileformat'], - help="output format ('json' or 'binary', default: '{}')".format(DEFAULTS['output']['outputfileformat']) ) + default=DEFAULTS['config']['outputfileformat'], + help="output format ('json' or 'binary', default: '{}')".format(DEFAULTS['config']['outputfileformat']) ) parser.add_argument('-c', '--config', metavar='', @@ -2197,14 +3256,14 @@ def Decode(obj): info.add_argument('-V', '--version', action='version', version=PROG) args = parser.parse_args() - + # default no configuration available configobj = None - + # check source args if args.device is not None and args.tasmotafile is not None: exit(6, "Only one source allowed. Do not use -d and -f together") - + # read config direct from device via http if args.device is not None: @@ -2245,51 +3304,29 @@ def Decode(obj): parser.print_help() sys.exit(0) - if configobj is not None and len(configobj)>0: cfg = DeEncrypt(configobj) - config = Decode(cfg) + configuration = Decode(cfg, args.rawvalues) # output to file if args.outputfile is not None: - outputfilename = args.outputfile - v = f1 = f2 = f3 = f4 = '' - if 'version' in config: - ver = int(str(config['version']), 0) - major = ((ver>>24) & 0xff) - minor = ((ver>>16) & 0xff) - release = ((ver>> 8) & 0xff) - subrelease = (ver & 0xff) - if major>=6: - if subrelease>0: - subreleasestr = str(subrelease) - else: - subreleasestr = '' - else: - if subrelease>0: - subreleasestr = str(chr(subrelease+ord('a')-1)) - else: - subreleasestr = '' - v = "{:d}.{:d}.{:d}{}{}".format( major, minor, release, '.' if major>=6 else '', subreleasestr) - outputfilename = outputfilename.replace('@v', v) - if 'friendlyname' in config: - outputfilename = outputfilename.replace('@f', config['friendlyname'][0] ) - + outputfilename = GetFilenameReplaced(args.outputfile, configuration) if args.outputfileformat == 'binary': outputfile = open(outputfilename, "wb") outputfile.write(struct.pack(' Date: Tue, 2 Oct 2018 17:07:30 +0200 Subject: [PATCH 227/798] 6.2.1.11 Add MQTT Client 6.2.1.11 20191002 * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT --- sonoff/_changelog.ino | 6 ++- sonoff/sonoff.h | 7 +++- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 5 ++- sonoff/user_config.h | 8 ++-- sonoff/xdrv_01_mqtt.ino | 84 ++++++++++++++++++++++---------------- sonoff/xnrg_01_hlw8012.ino | 2 +- tools/decode-status.py | 2 +- 8 files changed, 71 insertions(+), 45 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 04f209e10d2c..217b665ff61e 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,8 @@ -/* 6.2.1.10 20180930 +/* 6.2.1.11 20191002 + * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO + * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT + * + * 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) * Add support for Michael Haustein ESP Switch * Add support for EXS Relay V5.0 (#3810) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 80356d475b27..f891e387ad76 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -20,6 +20,11 @@ #ifndef _SONOFF_H_ #define _SONOFF_H_ +#define USE_DHT // Default DHT11 sensor needs no external library +#define USE_ENERGY_SENSOR // Use energy sensors (+14k code) +#define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz +#define USE_CSE7766 // Use energy sensor for Sonoff S31 and Pow R2 + /*********************************************************************************************\ * Power Type \*********************************************************************************************/ @@ -136,7 +141,7 @@ typedef unsigned long power_t; // Power (Relay) type #define MQTT_PUBSUBCLIENT 1 // Mqtt PubSubClient library #define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino -#define MQTT_ESPMQTTARDUINO 3 // Mqtt esp-mqtt-arduino library by Ingo Randolf +#define MQTT_ARDUINOMQTT 3 // Mqtt arduino-mqtt library by Joel Gaehwiler (https://github.com/256dpi/arduino-mqtt) // Sunrise and Sunset DawnType #define DAWN_NORMAL -0.8333 diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index c5765ec386c1..60a04432697a 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010A +#define VERSION 0x0602010B #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index 3665650ddb95..d2b38bb0999d 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -876,7 +876,7 @@ void GetFeatures() #if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) feature_drv1 |= 0x00000800; // xdrv_01_mqtt.ino #endif -#if (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) +#if (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) // Obsolete since 6.2.1.11 feature_drv1 |= 0x00001000; // xdrv_01_mqtt.ino #endif #ifdef MQTT_HOST_DISCOVERY @@ -933,6 +933,9 @@ void GetFeatures() #ifdef USE_SMARTCONFIG feature_drv1 |= 0x40000000; // support.ino #endif +#if (MQTT_LIBRARY_TYPE == MQTT_ARDUINOMQTT) + feature_drv1 |= 0x80000000; // xdrv_01_mqtt.ino +#endif /*********************************************************************************************/ diff --git a/sonoff/user_config.h b/sonoff/user_config.h index ee77854bc393..11b8c1d61a9b 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -216,14 +216,14 @@ //#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+13k code) /*-------------------------------------------------------------------------------------------*\ - * Select ONE of possible three MQTT library types below + * Select ONE of possible MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. #define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only - // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 (core 2.3.0), +14k4 (core 2.4.2 lwip2) code, +4k mem) - non-TLS only + // Alternative MQTT driver does not block network when MQTT server is unavailable. TLS should work but needs to be tested. +//#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem) // -- MQTT ---------------------------------------- #define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on) diff --git a/sonoff/xdrv_01_mqtt.ino b/sonoff/xdrv_01_mqtt.ino index f3f33d69377e..42214216af44 100644 --- a/sonoff/xdrv_01_mqtt.ino +++ b/sonoff/xdrv_01_mqtt.ino @@ -23,19 +23,29 @@ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. //#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only -// Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 (core 2.3.0), +14k4 (core 2.4.2 lwip2) code, +4k mem) - non-TLS only +// Alternative MQTT driver does not block network when MQTT server is unavailable. TLS should work but needs to be tested. +//#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem) #ifdef USE_MQTT_TLS + +/* #ifdef MQTT_LIBRARY_TYPE #undef MQTT_LIBRARY_TYPE #endif #define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as it only supports TLS +*/ +#if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) +#undef MQTT_LIBRARY_TYPE +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as it only supports TLS +#endif + #else + #ifndef MQTT_LIBRARY_TYPE #define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as default #endif + #endif /*********************************************************************************************/ @@ -136,48 +146,48 @@ void MqttLoop() { } -#elif (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) /*******************************************/ +#elif (MQTT_LIBRARY_TYPE == MQTT_ARDUINOMQTT) /**********************************************/ -#include -MQTT *MqttClient = NULL; +#include +MQTTClient MqttClient(MQTT_MAX_PACKET_SIZE); bool MqttIsConnected() { - return mqtt_connected; + return MqttClient.connected(); } void MqttDisconnect() { - if (MqttClient) MqttClient->disconnect(); + MqttClient.disconnect(); } -void MqttDisconnectedCb() +/* +void MqttMyDataCb(MQTTClient* client, char* topic, char* data, int data_len) +//void MqttMyDataCb(MQTTClient *client, char topic[], char data[], int data_len) { - MqttDisconnected(MqttClient->getState()); // status codes are documented in file mqtt.h as tConnState +// MqttDataHandler((char*)topic, (byte*)data, data_len); } +*/ -void MqttMyDataCb(const char* topic, uint32_t topic_len, const char* data, uint32_t data_len) +void MqttMyDataCb(String &topic, String &data) { - char topic_copy[topic_len +1]; - - memcpy(topic_copy, topic, topic_len); - topic_copy[topic_len] = 0; - if (0 == data_len) data = (const char*)&topic_copy + topic_len; - MqttDataHandler((char*)topic_copy, (byte*)data, data_len); + MqttDataHandler((char*)topic.c_str(), (byte*)data.c_str(), data.length()); } void MqttSubscribeLib(char *topic) { - MqttClient->subscribe(topic); + MqttClient.subscribe(topic, 0); } bool MqttPublishLib(const char* topic, boolean retained) { - return MqttClient->publish(topic, mqtt_data, strlen(mqtt_data), 0, retained); + return MqttClient.publish(topic, mqtt_data, strlen(mqtt_data), retained, 0); } void MqttLoop() { + MqttClient.loop(); +// delay(10); } #endif // MQTT_LIBRARY_TYPE @@ -467,6 +477,14 @@ void MqttReconnect() GetTopic_P(stopic, TELE, mqtt_topic, S_LWT); snprintf_P(mqtt_data, sizeof(mqtt_data), S_OFFLINE); +//#ifdef ARDUINO_ESP8266_RELEASE_2_4_1 +#ifdef USE_MQTT_TLS + EspClient = WiFiClientSecure(); // Wifi Secure Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497) +#else + EspClient = WiFiClient(); // Wifi Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497) +#endif +//#endif + if (2 == mqtt_initial_connection_state) { // Executed once just after power on and wifi is connected #ifdef USE_MQTT_TLS if (!MqttCheckTls()) return; @@ -479,25 +497,17 @@ void MqttReconnect() MqttClient.OnConnected(MqttConnected); MqttClient.OnDisconnected(MqttDisconnectedCb); MqttClient.OnData(MqttDataHandler); -#elif (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) - MqttClient = new MQTT(mqtt_client, Settings.mqtt_host, Settings.mqtt_port, stopic, 1, true, mqtt_data); - MqttClient->setUserPwd(mqtt_user, mqtt_pwd); - MqttClient->onConnected(MqttConnected); - MqttClient->onDisconnected(MqttDisconnectedCb); - MqttClient->onData(MqttMyDataCb); +#elif (MQTT_LIBRARY_TYPE == MQTT_ARDUINOMQTT) + MqttClient.begin(Settings.mqtt_host, Settings.mqtt_port, EspClient); + MqttClient.setWill(stopic, mqtt_data, true, 1); + MqttClient.setOptions(MQTT_KEEPALIVE, true, 1000); +// MqttClient.onMessageAdvanced(MqttMyDataCb); + MqttClient.onMessage(MqttMyDataCb); #endif mqtt_initial_connection_state = 1; } -//#ifdef ARDUINO_ESP8266_RELEASE_2_4_1 -#ifdef USE_MQTT_TLS - EspClient = WiFiClientSecure(); // Wifi Secure Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497) -#else - EspClient = WiFiClient(); // Wifi Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497) -#endif -//#endif - #if (MQTT_LIBRARY_TYPE == MQTT_PUBSUBCLIENT) MqttClient.setCallback(MqttDataHandler); MqttClient.setServer(Settings.mqtt_host, Settings.mqtt_port); @@ -508,8 +518,12 @@ void MqttReconnect() } #elif (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) MqttClient.Connect(); -#elif (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) - MqttClient->connect(); +#elif (MQTT_LIBRARY_TYPE == MQTT_ARDUINOMQTT) + if (MqttClient.connect(mqtt_client, mqtt_user, mqtt_pwd)) { + MqttConnected(); + } else { + MqttDisconnected(MqttClient.lastError()); // status codes are documented here https://github.com/256dpi/lwmqtt/blob/master/include/lwmqtt.h#L11 + } #endif // MQTT_LIBRARY_TYPE } diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 902df89ae47d..0bcfa9060c35 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -33,7 +33,7 @@ #define HLW_IREF 4545 // 4.545A #define HLW_SEL_VOLTAGE 1 -// HJL-01 based (BlitzWolf, Homecube, Gosund) +// HJL-01 based (BlitzWolf, Homecube, Gosund, Teckin) #define HJL_PREF 1362 #define HJL_UREF 822 #define HJL_IREF 3300 diff --git a/tools/decode-status.py b/tools/decode-status.py index 74b10a57c61d..99c73af69b3d 100644 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -105,7 +105,7 @@ "USE_WS2812_DMA","USE_IR_REMOTE","USE_IR_HVAC","USE_IR_RECEIVE", "USE_DOMOTICZ","USE_DISPLAY","USE_HOME_ASSISTANT","USE_SERIAL_BRIDGE", "USE_TIMERS","USE_SUNRISE","USE_TIMERS_WEB","USE_RULES", - "USE_KNX","USE_WPS","USE_SMARTCONFIG","" + "USE_KNX","USE_WPS","USE_SMARTCONFIG","MQTT_ARDUINOMQTT" ],[ "USE_CONFIG_OVERRIDE","BE_MINIMAL","USE_SENSORS","USE_CLASSIC", "USE_KNX_NO_EMULATION","USE_DISPLAY_MODES1TO5","USE_DISPLAY_GRAPH","USE_DISPLAY_LCD", From 6cd59d2b3e3b983778532bf5d437dfba42b131f1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 2 Oct 2018 17:19:02 +0200 Subject: [PATCH 228/798] Forgot the library swap --- lib/arduino-mqtt-2.3.3.02/.editorconfig | 7 + lib/arduino-mqtt-2.3.3.02/.gitignore | 2 + lib/arduino-mqtt-2.3.3.02/.travis.yml | 46 + lib/arduino-mqtt-2.3.3.02/CMakeLists.txt | 40 + lib/arduino-mqtt-2.3.3.02/LICENSE.md | 21 + lib/arduino-mqtt-2.3.3.02/Makefile | 14 + lib/arduino-mqtt-2.3.3.02/README.md | 225 ++++ .../AdafruitHuzzahESP8266.ino | 69 ++ .../AdafruitHuzzahESP8266Secure.ino | 71 ++ .../ArduinoEthernetShield.ino | 62 + .../ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino | 84 ++ .../ArduinoMKRGSM1400Secure.ino | 86 ++ .../ArduinoWiFi101/ArduinoWiFi101.ino | 70 ++ .../ArduinoWiFi101Secure.ino | 75 ++ .../ArduinoWiFiShield/ArduinoWiFiShield.ino | 68 ++ .../examples/ArduinoYun/ArduinoYun.ino | 60 + .../ArduinoYunSecure/ArduinoYunSecure.ino | 62 + .../ESP32DevelopmentBoard.ino | 69 ++ .../ESP32DevelopmentBoardSecure.ino | 71 ++ lib/arduino-mqtt-2.3.3.02/library.properties | 9 + lib/arduino-mqtt-2.3.3.02/src/MQTTClient.h | 386 ++++++ lib/arduino-mqtt-2.3.3.02/src/MQTTlw.h | 6 + lib/arduino-mqtt-2.3.3.02/src/lwmqtt/client.c | 618 ++++++++++ .../src/lwmqtt/helpers.c | 249 ++++ .../src/lwmqtt/helpers.h | 137 +++ lib/arduino-mqtt-2.3.3.02/src/lwmqtt/lwmqtt.h | 381 ++++++ lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.c | 742 ++++++++++++ lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.h | 185 +++ lib/arduino-mqtt-2.3.3.02/src/lwmqtt/string.c | 38 + lib/arduino-mqtt-2.3.3.02/src/system.cpp | 48 + lib/arduino-mqtt-2.3.3.02/src/system.h | 26 + lib/esp-mqtt-arduino-1.0.1.02.1/.gitignore | 28 - lib/esp-mqtt-arduino-1.0.1.02.1/README.md | 15 - .../examples/mqtt_pub/mqtt_pub.ino | 102 -- .../examples/mqtt_sub/mqtt_sub.ino | 95 -- lib/esp-mqtt-arduino-1.0.1.02.1/keywords.txt | 43 - .../library.properties | 9 - lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.cpp | 269 ----- lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.h | 93 -- .../src/mqtt/debug.h | 19 - .../src/mqtt/mqtt.c | 1048 ----------------- .../src/mqtt/mqtt.h | 152 --- .../src/mqtt/mqtt_config.h | 19 - .../src/mqtt/mqtt_msg.c | 487 -------- .../src/mqtt/mqtt_msg.h | 141 --- .../src/mqtt/proto.c | 129 -- .../src/mqtt/proto.h | 32 - .../src/mqtt/queue.c | 75 -- .../src/mqtt/queue.h | 44 - .../src/mqtt/ringbuf.c | 67 -- .../src/mqtt/ringbuf.h | 19 - .../src/mqtt/typedef.h | 17 - .../src/mqtt/utils.c | 149 --- .../src/mqtt/utils.h | 9 - 54 files changed, 4027 insertions(+), 3061 deletions(-) create mode 100644 lib/arduino-mqtt-2.3.3.02/.editorconfig create mode 100644 lib/arduino-mqtt-2.3.3.02/.gitignore create mode 100644 lib/arduino-mqtt-2.3.3.02/.travis.yml create mode 100644 lib/arduino-mqtt-2.3.3.02/CMakeLists.txt create mode 100644 lib/arduino-mqtt-2.3.3.02/LICENSE.md create mode 100644 lib/arduino-mqtt-2.3.3.02/Makefile create mode 100644 lib/arduino-mqtt-2.3.3.02/README.md create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoEthernetShield/ArduinoEthernetShield.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101/ArduinoWiFi101.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFiShield/ArduinoWiFiShield.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoYun/ArduinoYun.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ArduinoYunSecure/ArduinoYunSecure.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino create mode 100644 lib/arduino-mqtt-2.3.3.02/library.properties create mode 100644 lib/arduino-mqtt-2.3.3.02/src/MQTTClient.h create mode 100644 lib/arduino-mqtt-2.3.3.02/src/MQTTlw.h create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/client.c create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.c create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.h create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/lwmqtt.h create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.c create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.h create mode 100644 lib/arduino-mqtt-2.3.3.02/src/lwmqtt/string.c create mode 100644 lib/arduino-mqtt-2.3.3.02/src/system.cpp create mode 100644 lib/arduino-mqtt-2.3.3.02/src/system.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/.gitignore delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/README.md delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_pub/mqtt_pub.ino delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_sub/mqtt_sub.ino delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/keywords.txt delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/library.properties delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.cpp delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/debug.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_config.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/typedef.h delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.c delete mode 100644 lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.h diff --git a/lib/arduino-mqtt-2.3.3.02/.editorconfig b/lib/arduino-mqtt-2.3.3.02/.editorconfig new file mode 100644 index 000000000000..3edae7b539af --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/.editorconfig @@ -0,0 +1,7 @@ +[Makefile] +indent_style = tab +indent_size = 4 + +[src/*.h,src/*.cpp,examples/**.ino] +indent_style = space +indent_size = 2 diff --git a/lib/arduino-mqtt-2.3.3.02/.gitignore b/lib/arduino-mqtt-2.3.3.02/.gitignore new file mode 100644 index 000000000000..0c4fe4711d3a --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +cmake-build-debug/ diff --git a/lib/arduino-mqtt-2.3.3.02/.travis.yml b/lib/arduino-mqtt-2.3.3.02/.travis.yml new file mode 100644 index 000000000000..b59599ceff60 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/.travis.yml @@ -0,0 +1,46 @@ +language: generic +env: + global: + - IDE_VERSION=1.8.5 + matrix: + - EXAMPLE="AdafruitHuzzahESP8266" BOARD="esp8266:esp8266:huzzah:FlashSize=4M3M,CpuFrequency=80" + - EXAMPLE="AdafruitHuzzahESP8266Secure" BOARD="esp8266:esp8266:huzzah:FlashSize=4M3M,CpuFrequency=80" + - EXAMPLE="ArduinoEthernetShield" BOARD="arduino:avr:uno" + - EXAMPLE="ArduinoMKRGSM1400" BOARD="arduino:samd:mkrgsm1400" + - EXAMPLE="ArduinoMKRGSM1400Secure" BOARD="arduino:samd:mkrgsm1400" + - EXAMPLE="ArduinoWiFi101Secure" BOARD="arduino:avr:uno" + - EXAMPLE="ArduinoWiFiShield" BOARD="arduino:avr:uno" + - EXAMPLE="ArduinoYun" BOARD="arduino:avr:yun" + - EXAMPLE="ArduinoYunSecure" BOARD="arduino:avr:yun" + - EXAMPLE="ESP32DevelopmentBoard" BOARD="espressif:esp32:esp32:FlashFreq=80" + - EXAMPLE="ESP32DevelopmentBoardSecure" BOARD="espressif:esp32:esp32:FlashFreq=80" +before_install: + - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 + - sleep 3 + - export DISPLAY=:1.0 + - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz + - tar xf arduino-$IDE_VERSION-linux64.tar.xz + - mv arduino-$IDE_VERSION ~/arduino-ide + - export PATH=$PATH:~/arduino-ide + - if [[ "$BOARD" =~ "esp8266:esp8266:" ]]; then + arduino --pref "boardsmanager.additional.urls=http://arduino.esp8266.com/stable/package_esp8266com_index.json" --install-boards esp8266:esp8266; + arduino --pref "boardsmanager.additional.urls=" --save-prefs; + fi + - if [[ "$BOARD" =~ "espressif:esp32:" ]]; then + mkdir -p ~/Arduino/hardware/espressif && + cd ~/Arduino/hardware/espressif && + git clone https://github.com/espressif/arduino-esp32.git esp32 && + cd esp32/tools/ && + python get.py && + cd $TRAVIS_BUILD_DIR; + fi + - if [[ "$BOARD" =~ "arduino:samd:mkrgsm1400" ]]; then + arduino --install-boards arduino:samd; + arduino --install-library MKRGSM; + fi + - arduino --install-library WiFi101 +install: + - mkdir -p ~/Arduino/libraries + - ln -s $PWD ~/Arduino/libraries/. +script: + - arduino --verbose-build --verify --board $BOARD $PWD/examples/$EXAMPLE/$EXAMPLE.ino; diff --git a/lib/arduino-mqtt-2.3.3.02/CMakeLists.txt b/lib/arduino-mqtt-2.3.3.02/CMakeLists.txt new file mode 100644 index 000000000000..58b0e31c9ef8 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/CMakeLists.txt @@ -0,0 +1,40 @@ +# Uncompilable CMake File to enable project editing with CLion IDE + +cmake_minimum_required(VERSION 2.8.4) +project(arduino-mqtt) + +include_directories( + /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/ + /Users/256dpi/Development/Arduino/libraries/Ethernet/src + /Users/256dpi/Development/Arduino/libraries/WiFi101/src + /Users/256dpi/Development/Arduino/libraries/MKRGSM/src + /Applications/Arduino.app/Contents/Java/libraries/Bridge/src + /Users/256dpi/Library/Arduino15/packages/esp8266/hardware/esp8266/2.3.0/libraries/ESP8266WiFi/src + /Users/256dpi/Development/Arduino/hardware/espressif/esp32/libraries/WiFi/src + /Users/256dpi/Development/Arduino/hardware/espressif/esp32/libraries/WiFiClientSecure/src + src/) + +include_directories(src/) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + +set(SOURCE_FILES + examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino + examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino + examples/ArduinoEthernetShield/ArduinoEthernetShield.ino + examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino + examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino + examples/ArduinoWiFi101/ArduinoWiFi101.ino + examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino + examples/ArduinoWiFiShield/ArduinoWiFiShield.ino + examples/ArduinoYun/ArduinoYun.ino + examples/ArduinoYunSecure/ArduinoYunSecure.ino + examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino + examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino + src/lwmqtt + src/MQTT.h + src/MQTTClient.h + src/system.cpp + src/system.h) + +add_executable(arduino-mqtt ${SOURCE_FILES}) diff --git a/lib/arduino-mqtt-2.3.3.02/LICENSE.md b/lib/arduino-mqtt-2.3.3.02/LICENSE.md new file mode 100644 index 000000000000..325e07cffe58 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Joël Gähwiler + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/lib/arduino-mqtt-2.3.3.02/Makefile b/lib/arduino-mqtt-2.3.3.02/Makefile new file mode 100644 index 000000000000..cfd69e49c1ee --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/Makefile @@ -0,0 +1,14 @@ +all: fmt + +fmt: + clang-format -i src/*.cpp src/*.h -style="{BasedOnStyle: Google, ColumnLimit: 120}" + +update: + rm -rf ./lwmqtt + git clone --branch v0.6.2 https://github.com/256dpi/lwmqtt.git ./lwmqtt + mkdir -p ./src/lwmqtt + cp -r ./lwmqtt/src/*.c ./src/lwmqtt/ + cp -r ./lwmqtt/src/*.h ./src/lwmqtt/ + cp -r ./lwmqtt/include/*.h ./src/lwmqtt/ + rm -rf ./lwmqtt + sed -i '' "s//\"lwmqtt.h\"/g" ./src/lwmqtt/* diff --git a/lib/arduino-mqtt-2.3.3.02/README.md b/lib/arduino-mqtt-2.3.3.02/README.md new file mode 100644 index 000000000000..470c4a58c2e5 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/README.md @@ -0,0 +1,225 @@ +# arduino-mqtt + +[![Build Status](https://travis-ci.org/256dpi/arduino-mqtt.svg?branch=master)](https://travis-ci.org/256dpi/arduino-mqtt) +[![GitHub release](https://img.shields.io/github/release/256dpi/arduino-mqtt.svg)](https://github.com/256dpi/arduino-mqtt/releases) + +This library bundles the [lwmqtt](https://github.com/256dpi/lwmqtt) MQTT 3.1.1 client and adds a thin wrapper to get an Arduino like API. + +Download the latest version from the [release](https://github.com/256dpi/arduino-mqtt/releases) section. Or even better use the builtin Library Manager in the Arduino IDE and search for "MQTT". + +The library is also available on [PlatformIO](https://platformio.org/lib/show/617/MQTT). You can install it by running: `pio lib install "MQTT"`. + +## Compatibility + +The following examples show how you can use the library with various Arduino compatible hardware: + +- [Arduino Yun & Yun-Shield](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoYun/ArduinoYun.ino) ([Secure](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoYunSecure/ArduinoYunSecure.ino)) +- [Arduino Ethernet Shield](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoEthernetShield/ArduinoEthernetShield.ino) +- [Arduino WiFi Shield](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoWiFiShield/ArduinoWiFiShield.ino) +- [Adafruit HUZZAH ESP8266](https://github.com/256dpi/arduino-mqtt/blob/master/examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino) ([Secure](https://github.com/256dpi/arduino-mqtt/blob/master/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino)) +- [Arduino/Genuino WiFi101 Shield](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoWiFi101/ArduinoWiFi101.ino) ([Secure](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino)) +- [Arduino MKR GSM 1400](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino) ([Secure](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino)) +- [ESP32 Development Board](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino) ([Secure](https://github.com/256dpi/arduino-mqtt/blob/master/examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino)) + +Other shields and boards should also work if they provide a [Client](https://www.arduino.cc/en/Reference/ClientConstructor) based network implementation. + +## Notes + +- The maximum size for packets being published and received is set by default to 128 bytes. To change the buffer sizes, you need to use `MQTTClient client(256)` instead of just `MQTTClient client` on the top of your sketch. The passed value denotes the read and write buffer size. + +- On the ESP8266 it has been reported that an additional `delay(10);` after `client.loop();` fixes many stability issues with WiFi connections. + +- To use the library with shiftr.io, you need to provide the token key (username) and token secret (password) as the second and third argument to `client.connect(name, key, secret)`. + +## Example + +The following example uses an Arduino MKR1000 to connect to shiftr.io. You can check on your device after a successful connection here: https://shiftr.io/try. + +```c++ +#include +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} +``` + +## API + +Initialize the object using the hostname of the broker, the brokers port (default: `1883`) and the underlying Client class for network transport: + +```c++ +void begin(const char hostname[], Client &client); +void begin(const char hostname[], int port, Client &client); +``` + +- Specify port `8883` when using secure clients for encrypted connections. +- Local domain names (e.g. `Computer.local` on OSX) are not supported by Arduino. You need to set the IP address directly. + +The hostname and port can also be changed after calling `begin()`: + +```c++ +void setHost(const char hostname[]); +void setHost(const char hostname[], int port); +``` + +Set a will message (last testament) that gets registered on the broker after connecting. `setWill()` has to be called before calling `connect()`: + +```c++ +void setWill(const char topic[]); +void setWill(const char topic[], const char payload[]); +void setWill(const char topic[], const char payload[], bool retained, int qos); +void clearWill(); +``` + +Register a callback to receive messages: + +```c++ +void onMessage(MQTTClientCallbackSimple); +// Callback signature: void messageReceived(String &topic, String &payload) {} + +void onMessageAdvanced(MQTTClientCallbackAdvanced); +// Callback signature: void messageReceived(MQTTClient *client, char topic[], char payload[], int payload_length) {} +``` + +- The set callback is mostly called during a call to `loop()` but may also be called during a call to `subscribe()`, `unsubscribe()` or `publish() // QoS > 0` if messages have been received before receiving the required acknowledgement. Therefore, it is strongly recommended to not call `subscribe()`, `unsubscribe()` or `publish() // QoS > 0` directly in the callback. + +Set more advanced options: + +```c++ +void setOptions(int keepAlive, bool cleanSession, int timeout); +``` + +- The `keepAlive` option controls the keep alive interval in seconds (default: 10). +- The `cleanSession` option controls the session retention on the broker side (default: true). +- The `timeout` option controls the default timeout for all commands in milliseconds (default: 1000). + +Connect to broker using the supplied client id and an optional username and password: + +```c++ +bool connect(const char clientId[]); +bool connect(const char clientId[], const char username[]); +bool connect(const char clientId[], const char username[], const char password[]); +``` + +- This functions returns a boolean that indicates if the connection has been established successfully. + +Publishes a message to the broker with an optional payload: + +```c++ +bool publish(const String &topic); +bool publish(const char topic[]); +bool publish(const String &topic, const String &payload); +bool publish(const String &topic, const String &payload, bool retained, int qos); +bool publish(const char topic[], const String &payload); +bool publish(const char topic[], const String &payload, bool retained, int qos); +bool publish(const char topic[], const char payload[]); +bool publish(const char topic[], const char payload[], bool retained, int qos); +bool publish(const char topic[], const char payload[], int length); +bool publish(const char topic[], const char payload[], int length, bool retained, int qos); +``` + +Subscribe to a topic: + +```c++ +bool subscribe(const String &topic); +bool subscribe(const String &topic, int qos); +bool subscribe(const char topic[]); +bool subscribe(const char topic[], int qos); +``` + +Unsubscribe from a topic: + +```c++ +bool unsubscribe(const String &topic); +bool unsubscribe(const char topic[]); +``` + +Sends and receives packets: + +```c++ +bool loop(); +``` + +- This function should be called in every `loop`. + +Check if the client is currently connected: + +```c++ +bool connected(); +``` + +Access low-level information for debugging: + +```c++ +lwmqtt_err_t lastError(); +lwmqtt_return_code_t returnCode(); +``` + +- The error codes can be found [here](https://github.com/256dpi/lwmqtt/blob/master/include/lwmqtt.h#L11). +- The return codes can be found [here](https://github.com/256dpi/lwmqtt/blob/master/include/lwmqtt.h#L243). + +Disconnect from the broker: + +```c++ +bool disconnect(); +``` + +## Release Management + +- Update version in `library.properties`. +- Create release on GitHub. diff --git a/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino b/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino new file mode 100644 index 000000000000..ca5a22607792 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266/AdafruitHuzzahESP8266.ino @@ -0,0 +1,69 @@ +// This example uses an Adafruit Huzzah ESP8266 +// to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + delay(10); // <- fixes some issues with WiFi stability + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino b/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino new file mode 100644 index 000000000000..1def5678dacf --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/AdafruitHuzzahESP8266Secure/AdafruitHuzzahESP8266Secure.ino @@ -0,0 +1,71 @@ +// This example uses an Adafruit Huzzah ESP8266 +// to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClientSecure net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + // + // MQTT brokers usually use port 8883 for secure connections. + client.begin("broker.shiftr.io", 8883, net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + delay(10); // <- fixes some issues with WiFi stability + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoEthernetShield/ArduinoEthernetShield.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoEthernetShield/ArduinoEthernetShield.ino new file mode 100644 index 000000000000..8386c77881a8 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoEthernetShield/ArduinoEthernetShield.ino @@ -0,0 +1,62 @@ +// This example uses an Arduino Uno together with +// an Ethernet Shield to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; +byte ip[] = {192, 168, 1, 177}; // <- change to match your network + +EthernetClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("connecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + Ethernet.begin(mac, ip); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino new file mode 100644 index 000000000000..dd56d5e21e7c --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400/ArduinoMKRGSM1400.ino @@ -0,0 +1,84 @@ +// This example uses an Arduino MKR GSM 1400 board +// to connect to shiftr.io. +// +// IMPORTANT: This example uses the new MKRGSM library. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Sandeep Mistry +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char pin[] = ""; +const char apn[] = "apn"; +const char login[] = "login"; +const char password[] = "password"; + +GSMClient net; +GPRS gprs; +GSM gsmAccess; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + // connection state + bool connected = false; + + Serial.print("connecting to cellular network ..."); + + // After starting the modem with gsmAccess.begin() + // attach to the GPRS network with the APN, login and password + while (!connected) { + if ((gsmAccess.begin(pin) == GSM_READY) && + (gprs.attachGPRS(apn, login, password) == GPRS_READY)) { + connected = true; + } else { + Serial.print("."); + delay(1000); + } + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino new file mode 100644 index 000000000000..1b172ab6eaf6 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoMKRGSM1400Secure/ArduinoMKRGSM1400Secure.ino @@ -0,0 +1,86 @@ +// This example uses an Arduino MKR GSM 1400 board +// to securely connect to shiftr.io. +// +// IMPORTANT: This example uses the new MKRGSM library. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Sandeep Mistry +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char pin[] = ""; +const char apn[] = "apn"; +const char login[] = "login"; +const char password[] = "password"; + +GSMSSLClient net; +GPRS gprs; +GSM gsmAccess; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + // connection state + bool connected = false; + + Serial.print("connecting to cellular network ..."); + + // After starting the modem with gsmAccess.begin() + // attach to the GPRS network with the APN, login and password + while (!connected) { + if ((gsmAccess.begin(pin) == GSM_READY) && + (gprs.attachGPRS(apn, login, password) == GPRS_READY)) { + connected = true; + } else { + Serial.print("."); + delay(1000); + } + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + // + // MQTT brokers usually use port 8883 for secure connections. + client.begin("broker.shiftr.io", 8883, net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101/ArduinoWiFi101.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101/ArduinoWiFi101.ino new file mode 100644 index 000000000000..a36bd65aa67f --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101/ArduinoWiFi101.ino @@ -0,0 +1,70 @@ +// This example uses an Arduino/Genuino Zero together with +// a WiFi101 Shield or a MKR1000 to connect to shiftr.io. +// +// IMPORTANT: This example uses the new WiFi101 library. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Gilberto Conti +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino new file mode 100644 index 000000000000..c21e7ae997ff --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFi101Secure/ArduinoWiFi101Secure.ino @@ -0,0 +1,75 @@ +// This example uses an Arduino/Genuino Zero together with +// a WiFi101 Shield or a MKR1000 to connect to shiftr.io. +// +// IMPORTANT: This example uses the new WiFi101 library. +// +// IMPORTANT: You need to install/update the SSL certificates first: +// https://github.com/arduino-libraries/WiFi101-FirmwareUpdater#to-update-ssl-certificates +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Gilberto Conti +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiSSLClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + // + // MQTT brokers usually use port 8883 for secure connections. + client.begin("broker.shiftr.io", 8883, net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFiShield/ArduinoWiFiShield.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFiShield/ArduinoWiFiShield.ino new file mode 100644 index 000000000000..4aff769f4d5e --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoWiFiShield/ArduinoWiFiShield.ino @@ -0,0 +1,68 @@ +// This example uses an Arduino Uno together with +// a WiFi Shield to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYun/ArduinoYun.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYun/ArduinoYun.ino new file mode 100644 index 000000000000..823bdff36602 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYun/ArduinoYun.ino @@ -0,0 +1,60 @@ +// This example uses an Arduino Yun or a Yun-Shield +// and the MQTTClient to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include +#include + +BridgeClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("connecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Bridge.begin(); + Serial.begin(115200); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYunSecure/ArduinoYunSecure.ino b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYunSecure/ArduinoYunSecure.ino new file mode 100644 index 000000000000..46c068ab2303 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ArduinoYunSecure/ArduinoYunSecure.ino @@ -0,0 +1,62 @@ +// This example uses an Arduino Yun or a Yun-Shield +// and the MQTTClient to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include +#include + +BridgeSSLClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("connecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Bridge.begin(); + Serial.begin(115200); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + // + // MQTT brokers usually use port 8883 for secure connections. + client.begin("broker.shiftr.io", 8883, net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino b/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino new file mode 100644 index 000000000000..c6919280df09 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoard/ESP32DevelopmentBoard.ino @@ -0,0 +1,69 @@ +// This example uses an ESP32 Development Board +// to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClient net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + client.begin("broker.shiftr.io", net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + delay(10); // <- fixes some issues with WiFi stability + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino b/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino new file mode 100644 index 000000000000..cff75379ec65 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/examples/ESP32DevelopmentBoardSecure/ESP32DevelopmentBoardSecure.ino @@ -0,0 +1,71 @@ +// This example uses an ESP32 Development Board +// to connect to shiftr.io. +// +// You can check on your device after a successful +// connection here: https://shiftr.io/try. +// +// by Joël Gähwiler +// https://github.com/256dpi/arduino-mqtt + +#include +#include + +const char ssid[] = "ssid"; +const char pass[] = "pass"; + +WiFiClientSecure net; +MQTTClient client; + +unsigned long lastMillis = 0; + +void connect() { + Serial.print("checking wifi..."); + while (WiFi.status() != WL_CONNECTED) { + Serial.print("."); + delay(1000); + } + + Serial.print("\nconnecting..."); + while (!client.connect("arduino", "try", "try")) { + Serial.print("."); + delay(1000); + } + + Serial.println("\nconnected!"); + + client.subscribe("/hello"); + // client.unsubscribe("/hello"); +} + +void messageReceived(String &topic, String &payload) { + Serial.println("incoming: " + topic + " - " + payload); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, pass); + + // Note: Local domain names (e.g. "Computer.local" on OSX) are not supported by Arduino. + // You need to set the IP address directly. + // + // MQTT brokers usually use port 8883 for secure connections. + client.begin("broker.shiftr.io", 8883, net); + client.onMessage(messageReceived); + + connect(); +} + +void loop() { + client.loop(); + delay(10); // <- fixes some issues with WiFi stability + + if (!client.connected()) { + connect(); + } + + // publish a message roughly every second. + if (millis() - lastMillis > 1000) { + lastMillis = millis(); + client.publish("/hello", "world"); + } +} diff --git a/lib/arduino-mqtt-2.3.3.02/library.properties b/lib/arduino-mqtt-2.3.3.02/library.properties new file mode 100644 index 000000000000..a5ce4138a7e0 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/library.properties @@ -0,0 +1,9 @@ +name=MQTT +version=2.3.3 +author=Joel Gaehwiler +maintainer=Joel Gaehwiler +sentence=MQTT library for Arduino +paragraph=This library bundles the lwmqtt client and adds a thin wrapper to get an Arduino like API. +category=Communication +url=https://github.com/256dpi/arduino-mqtt +architectures=* diff --git a/lib/arduino-mqtt-2.3.3.02/src/MQTTClient.h b/lib/arduino-mqtt-2.3.3.02/src/MQTTClient.h new file mode 100644 index 000000000000..ecb69ec1d2c1 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/MQTTClient.h @@ -0,0 +1,386 @@ +#ifndef MQTT_CLIENT_H +#define MQTT_CLIENT_H + +#include +#include +#include + +#include "system.h" + +class MQTTClient; + +typedef void (*MQTTClientCallbackSimple)(String &topic, String &payload); +typedef void (*MQTTClientCallbackAdvanced)(MQTTClient *client, char topic[], char bytes[], int length); + +typedef struct { + MQTTClient *client = nullptr; + MQTTClientCallbackSimple simple = nullptr; + MQTTClientCallbackAdvanced advanced = nullptr; +} MQTTClientCallback; + +static void MQTTClientHandler(lwmqtt_client_t * /*client*/, void *ref, lwmqtt_string_t topic, + lwmqtt_message_t message) { + // get callback + auto cb = (MQTTClientCallback *)ref; + + // null terminate topic + char terminated_topic[topic.len + 1]; + memcpy(terminated_topic, topic.data, topic.len); + terminated_topic[topic.len] = '\0'; + + // null terminate payload if available + if (message.payload != nullptr) { + message.payload[message.payload_len] = '\0'; + } + + // call the advanced callback and return if available + if (cb->advanced != nullptr) { + cb->advanced(cb->client, terminated_topic, (char *)message.payload, (int)message.payload_len); + return; + } + + // return if simple callback is not set + if (cb->simple == nullptr) { + return; + } + + // create topic string + String str_topic = String(terminated_topic); + + // create payload string + String str_payload; + if (message.payload != nullptr) { + str_payload = String((const char *)message.payload); + } + + // call simple callback + cb->simple(str_topic, str_payload); +} + +class MQTTClient { + private: + size_t bufSize = 0; + uint8_t *readBuf = nullptr; + uint8_t *writeBuf = nullptr; + + uint16_t keepAlive = 10; + bool cleanSession = true; + uint32_t timeout = 1000; + + Client *netClient = nullptr; + const char *hostname = nullptr; + int port = 0; + lwmqtt_will_t will = lwmqtt_default_will; + bool hasWill = false; + MQTTClientCallback callback; + + lwmqtt_arduino_network_t network = {nullptr}; + lwmqtt_arduino_timer_t timer1 = {0}; + lwmqtt_arduino_timer_t timer2 = {0}; + lwmqtt_client_t client; + + bool _connected = false; + lwmqtt_return_code_t _returnCode = (lwmqtt_return_code_t)0; + lwmqtt_err_t _lastError = (lwmqtt_err_t)0; + + public: + explicit MQTTClient(int bufSize = 128) { + memset(&client, 0, sizeof(client)); + this->bufSize = (size_t)bufSize; + this->readBuf = (uint8_t *)malloc((size_t)bufSize + 1); + this->writeBuf = (uint8_t *)malloc((size_t)bufSize); + } + + ~MQTTClient() { + free(this->readBuf); + free(this->writeBuf); + } + + void begin(const char hostname[], Client &client) { this->begin(hostname, 1883, client); } + + void begin(const char hostname[], int port, Client &client) { + // set hostname and port + this->setHost(hostname, port); + + // set client + this->netClient = &client; + + // initialize client + lwmqtt_init(&this->client, this->writeBuf, this->bufSize, this->readBuf, this->bufSize); + + // set timers + lwmqtt_set_timers(&this->client, &this->timer1, &this->timer2, lwmqtt_arduino_timer_set, lwmqtt_arduino_timer_get); + + // set network + lwmqtt_set_network(&this->client, &this->network, lwmqtt_arduino_network_read, lwmqtt_arduino_network_write); + + // set callback + lwmqtt_set_callback(&this->client, (void *)&this->callback, MQTTClientHandler); + } + + void onMessage(MQTTClientCallbackSimple cb) { + // set callback + this->callback.client = this; + this->callback.simple = cb; + this->callback.advanced = nullptr; + } + + void onMessageAdvanced(MQTTClientCallbackAdvanced cb) { + // set callback + this->callback.client = this; + this->callback.simple = nullptr; + this->callback.advanced = cb; + } + + void setHost(const char hostname[]) { this->setHost(hostname, 1883); } + + void setHost(const char hostname[], int port) { + // free hostname if set + if(this->hostname != nullptr) { + free((void *)this->hostname); + } + + // set hostname and port + this->hostname = strdup(hostname); + this->port = port; + } + + void setWill(const char topic[]) { this->setWill(topic, ""); } + + void setWill(const char topic[], const char payload[]) { this->setWill(topic, payload, false, 0); } + + void setWill(const char topic[], const char payload[], bool retained, int qos) { + this->hasWill = true; + this->will.topic = lwmqtt_string(topic); + this->will.payload = lwmqtt_string(payload); + this->will.retained = retained; + this->will.qos = (lwmqtt_qos_t)qos; + } + + void clearWill() { this->hasWill = false; } + + void setOptions(int keepAlive, bool cleanSession, int timeout) { + this->keepAlive = (uint16_t)keepAlive; + this->cleanSession = cleanSession; + this->timeout = (uint32_t)timeout; + } + + bool connect(const char clientId[]) { return this->connect(clientId, nullptr, nullptr); } + + bool connect(const char clientId[], const char username[]) { return this->connect(clientId, username, nullptr); } + + bool connect(const char clientId[], const char username[], const char password[]) { + // close left open connection if still connected + if (this->connected()) { + this->close(); + } + + // save client + this->network.client = this->netClient; + + // connect to host + if (this->netClient->connect(this->hostname, (uint16_t)this->port) < 0) { + return false; + } + + // prepare options + lwmqtt_options_t options = lwmqtt_default_options; + options.keep_alive = this->keepAlive; + options.clean_session = this->cleanSession; + options.client_id = lwmqtt_string(clientId); + + // set username and password if available + if (username != nullptr) { + options.username = lwmqtt_string(username); + + if (password != nullptr) { + options.password = lwmqtt_string(password); + } + } + + // prepare will reference + lwmqtt_will_t *will = nullptr; + if (this->hasWill) { + will = &this->will; + } + + // connect to broker + this->_lastError = lwmqtt_connect(&this->client, options, will, &this->_returnCode, this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + + // set flag + this->_connected = true; + + return true; + } + + bool publish(const String &topic) { return this->publish(topic.c_str(), ""); } + + bool publish(const char topic[]) { return this->publish(topic, ""); } + + bool publish(const String &topic, const String &payload) { return this->publish(topic.c_str(), payload.c_str()); } + + bool publish(const String &topic, const String &payload, bool retained, int qos) { + return this->publish(topic.c_str(), payload.c_str(), retained, qos); + } + + bool publish(const char topic[], const String &payload) { return this->publish(topic, payload.c_str()); } + + bool publish(const char topic[], const String &payload, bool retained, int qos) { + return this->publish(topic, payload.c_str(), retained, qos); + } + + bool publish(const char topic[], const char payload[]) { + return this->publish(topic, (char *)payload, (int)strlen(payload)); + } + + bool publish(const char topic[], const char payload[], bool retained, int qos) { + return this->publish(topic, (char *)payload, (int)strlen(payload), retained, qos); + } + + bool publish(const char topic[], const char payload[], int length) { + return this->publish(topic, payload, length, false, 0); + } + + bool publish(const char topic[], const char payload[], int length, bool retained, int qos) { + // return immediately if not connected + if (!this->connected()) { + return false; + } + + // prepare message + lwmqtt_message_t message = lwmqtt_default_message; + message.payload = (uint8_t *)payload; + message.payload_len = (size_t)length; + message.retained = retained; + message.qos = lwmqtt_qos_t(qos); + + // publish message + this->_lastError = lwmqtt_publish(&this->client, lwmqtt_string(topic), message, this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + + return true; + } + + bool subscribe(const String &topic) { return this->subscribe(topic.c_str()); } + + bool subscribe(const String &topic, int qos) { return this->subscribe(topic.c_str(), qos); } + + bool subscribe(const char topic[]) { return this->subscribe(topic, 0); } + + bool subscribe(const char topic[], int qos) { + // return immediately if not connected + if (!this->connected()) { + return false; + } + + // subscribe to topic + this->_lastError = lwmqtt_subscribe_one(&this->client, lwmqtt_string(topic), (lwmqtt_qos_t)qos, this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + + return true; + } + + bool unsubscribe(const String &topic) { return this->unsubscribe(topic.c_str()); } + + bool unsubscribe(const char topic[]) { + // return immediately if not connected + if (!this->connected()) { + return false; + } + + // unsubscribe from topic + this->_lastError = lwmqtt_unsubscribe_one(&this->client, lwmqtt_string(topic), this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + + return true; + } + + bool loop() { + // return immediately if not connected + if (!this->connected()) { + return false; + } + + // get available bytes on the network + auto available = (size_t)this->netClient->available(); + + // yield if data is available + if (available > 0) { + this->_lastError = lwmqtt_yield(&this->client, available, this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + } + + // keep the connection alive + this->_lastError = lwmqtt_keep_alive(&this->client, this->timeout); + if (this->_lastError != LWMQTT_SUCCESS) { + // close connection + this->close(); + + return false; + } + + return true; + } + + bool connected() { + // a client is connected if the network is connected, a client is available and + // the connection has been properly initiated + return this->netClient != nullptr && this->netClient->connected() == 1 && this->_connected; + } + + lwmqtt_err_t lastError() { return this->_lastError; } + + lwmqtt_return_code_t returnCode() { return this->_returnCode; } + + bool disconnect() { + // return immediately if not connected anymore + if (!this->connected()) { + return false; + } + + // cleanly disconnect + this->_lastError = lwmqtt_disconnect(&this->client, this->timeout); + + // close + this->close(); + + return this->_lastError == LWMQTT_SUCCESS; + } + + private: + void close() { + // set flag + this->_connected = false; + + // close network + this->netClient->stop(); + } +}; + +#endif diff --git a/lib/arduino-mqtt-2.3.3.02/src/MQTTlw.h b/lib/arduino-mqtt-2.3.3.02/src/MQTTlw.h new file mode 100644 index 000000000000..35652c45f9c8 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/MQTTlw.h @@ -0,0 +1,6 @@ +#ifndef MQTT_H +#define MQTT_H + +#include "MQTTClient.h" + +#endif diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/client.c b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/client.c new file mode 100644 index 000000000000..b1772b9f71c4 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/client.c @@ -0,0 +1,618 @@ +#include "packet.h" + +void lwmqtt_init(lwmqtt_client_t *client, uint8_t *write_buf, size_t write_buf_size, uint8_t *read_buf, + size_t read_buf_size) { + client->last_packet_id = 1; + client->keep_alive_interval = 0; + client->pong_pending = false; + + client->write_buf = write_buf; + client->write_buf_size = write_buf_size; + client->read_buf = read_buf; + client->read_buf_size = read_buf_size; + + client->callback = NULL; + client->callback_ref = NULL; + + client->network = NULL; + client->network_read = NULL; + client->network_write = NULL; + + client->keep_alive_timer = NULL; + client->command_timer = NULL; + client->timer_set = NULL; + client->timer_get = NULL; +} + +void lwmqtt_set_network(lwmqtt_client_t *client, void *ref, lwmqtt_network_read_t read, lwmqtt_network_write_t write) { + client->network = ref; + client->network_read = read; + client->network_write = write; +} + +void lwmqtt_set_timers(lwmqtt_client_t *client, void *keep_alive_timer, void *command_timer, lwmqtt_timer_set_t set, + lwmqtt_timer_get_t get) { + client->keep_alive_timer = keep_alive_timer; + client->command_timer = command_timer; + client->timer_set = set; + client->timer_get = get; + + client->timer_set(client->keep_alive_timer, 0); + client->timer_set(client->command_timer, 0); +} + +void lwmqtt_set_callback(lwmqtt_client_t *client, void *ref, lwmqtt_callback_t cb) { + client->callback_ref = ref; + client->callback = cb; +} + +static uint16_t lwmqtt_get_next_packet_id(lwmqtt_client_t *client) { + // check overflow + if (client->last_packet_id == 65535) { + client->last_packet_id = 1; + return 1; + } + + // increment packet id + client->last_packet_id++; + + return client->last_packet_id; +} + +static lwmqtt_err_t lwmqtt_read_from_network(lwmqtt_client_t *client, size_t offset, size_t len) { + // check read buffer capacity + if (client->read_buf_size < offset + len) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // prepare counter + size_t read = 0; + + // read while data is missing + while (read < len) { + // check remaining time + int32_t remaining_time = client->timer_get(client->command_timer); + if (remaining_time <= 0) { + return LWMQTT_NETWORK_TIMEOUT; + } + + // read + size_t partial_read = 0; + lwmqtt_err_t err = client->network_read(client->network, client->read_buf + offset + read, len - read, + &partial_read, (uint32_t)remaining_time); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // increment counter + read += partial_read; + } + + return LWMQTT_SUCCESS; +} + +static lwmqtt_err_t lwmqtt_write_to_network(lwmqtt_client_t *client, size_t offset, size_t len) { + // prepare counter + size_t written = 0; + + // write while data is left + while (written < len) { + // check remaining time + int32_t remaining_time = client->timer_get(client->command_timer); + if (remaining_time <= 0) { + return LWMQTT_NETWORK_TIMEOUT; + } + + // write + size_t partial_write = 0; + lwmqtt_err_t err = client->network_write(client->network, client->write_buf + offset + written, len - written, + &partial_write, (uint32_t)remaining_time); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // increment counter + written += partial_write; + } + + return LWMQTT_SUCCESS; +} + +static lwmqtt_err_t lwmqtt_read_packet_in_buffer(lwmqtt_client_t *client, size_t *read, + lwmqtt_packet_type_t *packet_type) { + // preset packet type + *packet_type = LWMQTT_NO_PACKET; + + // read or wait for header byte + lwmqtt_err_t err = lwmqtt_read_from_network(client, 0, 1); + if (err == LWMQTT_NETWORK_TIMEOUT) { + // this is ok as no data has been read at all + return LWMQTT_SUCCESS; + } else if (err != LWMQTT_SUCCESS) { + return err; + } + + // detect packet type + err = lwmqtt_detect_packet_type(client->read_buf, 1, packet_type); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // prepare variables + size_t len = 0; + uint32_t rem_len = 0; + + do { + // adjust len + len++; + + // read next byte + err = lwmqtt_read_from_network(client, len, 1); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // attempt to detect remaining length + err = lwmqtt_detect_remaining_length(client->read_buf + 1, len, &rem_len); + } while (err == LWMQTT_BUFFER_TOO_SHORT); + + // check final error + if (err != LWMQTT_SUCCESS) { + return err; + } + + // read the rest of the buffer if needed + if (rem_len > 0) { + err = lwmqtt_read_from_network(client, 1 + len, rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // adjust counter + *read += 1 + len + rem_len; + + return LWMQTT_SUCCESS; +} + +static lwmqtt_err_t lwmqtt_send_packet_in_buffer(lwmqtt_client_t *client, size_t length) { + // write to network + lwmqtt_err_t err = lwmqtt_write_to_network(client, 0, length); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // reset keep alive timer + client->timer_set(client->keep_alive_timer, client->keep_alive_interval); + + return LWMQTT_SUCCESS; +} + +static lwmqtt_err_t lwmqtt_cycle(lwmqtt_client_t *client, size_t *read, lwmqtt_packet_type_t *packet_type) { + // read next packet from the network + lwmqtt_err_t err = lwmqtt_read_packet_in_buffer(client, read, packet_type); + if (err != LWMQTT_SUCCESS) { + return err; + } else if (*packet_type == LWMQTT_NO_PACKET) { + return LWMQTT_SUCCESS; + } + + switch (*packet_type) { + // handle publish packets + case LWMQTT_PUBLISH_PACKET: { + // decode publish packet + bool dup; + uint16_t packet_id; + lwmqtt_string_t topic; + lwmqtt_message_t msg; + err = lwmqtt_decode_publish(client->read_buf, client->read_buf_size, &dup, &packet_id, &topic, &msg); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // call callback if set + if (client->callback != NULL) { + client->callback(client, client->callback_ref, topic, msg); + } + + // break early on qos zero + if (msg.qos == LWMQTT_QOS0) { + break; + } + + // define ack packet + lwmqtt_packet_type_t ack_type = LWMQTT_NO_PACKET; + if (msg.qos == LWMQTT_QOS1) { + ack_type = LWMQTT_PUBACK_PACKET; + } else if (msg.qos == LWMQTT_QOS2) { + ack_type = LWMQTT_PUBREC_PACKET; + } + + // encode ack packet + size_t len; + err = lwmqtt_encode_ack(client->write_buf, client->write_buf_size, &len, ack_type, false, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send ack packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + break; + } + + // handle pubrec packets + case LWMQTT_PUBREC_PACKET: { + // decode pubrec packet + bool dup; + uint16_t packet_id; + err = lwmqtt_decode_ack(client->read_buf, client->read_buf_size, LWMQTT_PUBREC_PACKET, &dup, &packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // encode pubrel packet + size_t len; + err = lwmqtt_encode_ack(client->write_buf, client->write_buf_size, &len, LWMQTT_PUBREL_PACKET, 0, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send pubrel packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + break; + } + + // handle pubrel packets + case LWMQTT_PUBREL_PACKET: { + // decode pubrec packet + bool dup; + uint16_t packet_id; + err = lwmqtt_decode_ack(client->read_buf, client->read_buf_size, LWMQTT_PUBREL_PACKET, &dup, &packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // encode pubcomp packet + size_t len; + err = lwmqtt_encode_ack(client->write_buf, client->write_buf_size, &len, LWMQTT_PUBCOMP_PACKET, 0, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send pubcomp packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + break; + } + + // handle pingresp packets + case LWMQTT_PINGRESP_PACKET: { + // set flag + client->pong_pending = false; + + break; + } + + // handle all other packets + default: { break; } + } + + return LWMQTT_SUCCESS; +} + +static lwmqtt_err_t lwmqtt_cycle_until(lwmqtt_client_t *client, lwmqtt_packet_type_t *packet_type, size_t available, + lwmqtt_packet_type_t needle) { + // prepare counter + size_t read = 0; + + // loop until timeout has been reached + do { + // do one cycle + lwmqtt_err_t err = lwmqtt_cycle(client, &read, packet_type); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // return when one packet has been successfully read when no availability has been given + if (needle == LWMQTT_NO_PACKET && available == 0) { + return LWMQTT_SUCCESS; + } + + // otherwise check if needle has been found + if (*packet_type == needle) { + return LWMQTT_SUCCESS; + } + } while (client->timer_get(client->command_timer) > 0 && (available == 0 || read < available)); + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_yield(lwmqtt_client_t *client, size_t available, uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // cycle until timeout has been reached + lwmqtt_packet_type_t packet_type = LWMQTT_NO_PACKET; + lwmqtt_err_t err = lwmqtt_cycle_until(client, &packet_type, available, LWMQTT_NO_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_connect(lwmqtt_client_t *client, lwmqtt_options_t options, lwmqtt_will_t *will, + lwmqtt_return_code_t *return_code, uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // save keep alive interval (take 75% to be a little earlier than actually needed) + client->keep_alive_interval = (uint32_t)(options.keep_alive * 750); + + // set keep alive timer + client->timer_set(client->keep_alive_timer, client->keep_alive_interval); + + // reset pong pending flag + client->pong_pending = false; + + // initialize return code + *return_code = LWMQTT_UNKNOWN_RETURN_CODE; + + // encode connect packet + size_t len; + lwmqtt_err_t err = lwmqtt_encode_connect(client->write_buf, client->write_buf_size, &len, options, will); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // wait for connack packet + lwmqtt_packet_type_t packet_type = LWMQTT_NO_PACKET; + err = lwmqtt_cycle_until(client, &packet_type, 0, LWMQTT_CONNACK_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } else if (packet_type != LWMQTT_CONNACK_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // decode connack packet + bool session_present; + err = lwmqtt_decode_connack(client->read_buf, client->read_buf_size, &session_present, return_code); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // return error if connection was not accepted + if (*return_code != LWMQTT_CONNECTION_ACCEPTED) { + return LWMQTT_CONNECTION_DENIED; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_subscribe(lwmqtt_client_t *client, int count, lwmqtt_string_t *topic_filter, lwmqtt_qos_t *qos, + uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // encode subscribe packet + size_t len; + lwmqtt_err_t err = lwmqtt_encode_subscribe(client->write_buf, client->write_buf_size, &len, + lwmqtt_get_next_packet_id(client), count, topic_filter, qos); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // wait for suback packet + lwmqtt_packet_type_t packet_type = LWMQTT_NO_PACKET; + err = lwmqtt_cycle_until(client, &packet_type, 0, LWMQTT_SUBACK_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } else if (packet_type != LWMQTT_SUBACK_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // decode packet + int suback_count = 0; + lwmqtt_qos_t granted_qos[count]; + uint16_t packet_id; + err = lwmqtt_decode_suback(client->read_buf, client->read_buf_size, &packet_id, count, &suback_count, granted_qos); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check suback codes + for (int i = 0; i < suback_count; i++) { + if (granted_qos[i] == LWMQTT_QOS_FAILURE) { + return LWMQTT_FAILED_SUBSCRIPTION; + } + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_subscribe_one(lwmqtt_client_t *client, lwmqtt_string_t topic_filter, lwmqtt_qos_t qos, + uint32_t timeout) { + return lwmqtt_subscribe(client, 1, &topic_filter, &qos, timeout); +} + +lwmqtt_err_t lwmqtt_unsubscribe(lwmqtt_client_t *client, int count, lwmqtt_string_t *topic_filter, uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // encode unsubscribe packet + size_t len; + lwmqtt_err_t err = lwmqtt_encode_unsubscribe(client->write_buf, client->write_buf_size, &len, + lwmqtt_get_next_packet_id(client), count, topic_filter); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send unsubscribe packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // wait for unsuback packet + lwmqtt_packet_type_t packet_type = LWMQTT_NO_PACKET; + err = lwmqtt_cycle_until(client, &packet_type, 0, LWMQTT_UNSUBACK_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } else if (packet_type != LWMQTT_UNSUBACK_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // decode unsuback packet + bool dup; + uint16_t packet_id; + err = lwmqtt_decode_ack(client->read_buf, client->read_buf_size, LWMQTT_UNSUBACK_PACKET, &dup, &packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_unsubscribe_one(lwmqtt_client_t *client, lwmqtt_string_t topic_filter, uint32_t timeout) { + return lwmqtt_unsubscribe(client, 1, &topic_filter, timeout); +} + +lwmqtt_err_t lwmqtt_publish(lwmqtt_client_t *client, lwmqtt_string_t topic, lwmqtt_message_t message, + uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // add packet id if at least qos 1 + uint16_t packet_id = 0; + if (message.qos == LWMQTT_QOS1 || message.qos == LWMQTT_QOS2) { + packet_id = lwmqtt_get_next_packet_id(client); + } + + // encode publish packet + size_t len = 0; + lwmqtt_err_t err = + lwmqtt_encode_publish(client->write_buf, client->write_buf_size, &len, 0, packet_id, topic, message); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // immediately return on qos zero + if (message.qos == LWMQTT_QOS0) { + return LWMQTT_SUCCESS; + } + + // define ack packet + lwmqtt_packet_type_t ack_type = LWMQTT_NO_PACKET; + if (message.qos == LWMQTT_QOS1) { + ack_type = LWMQTT_PUBACK_PACKET; + } else if (message.qos == LWMQTT_QOS2) { + ack_type = LWMQTT_PUBCOMP_PACKET; + } + + // wait for ack packet + lwmqtt_packet_type_t packet_type = LWMQTT_NO_PACKET; + err = lwmqtt_cycle_until(client, &packet_type, 0, ack_type); + if (err != LWMQTT_SUCCESS) { + return err; + } else if (packet_type != ack_type) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // decode ack packet + bool dup; + err = lwmqtt_decode_ack(client->read_buf, client->read_buf_size, ack_type, &dup, &packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_disconnect(lwmqtt_client_t *client, uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // encode disconnect packet + size_t len; + lwmqtt_err_t err = lwmqtt_encode_zero(client->write_buf, client->write_buf_size, &len, LWMQTT_DISCONNECT_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send disconnected packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_keep_alive(lwmqtt_client_t *client, uint32_t timeout) { + // set command timer + client->timer_set(client->command_timer, timeout); + + // return immediately if keep alive interval is zero + if (client->keep_alive_interval == 0) { + return LWMQTT_SUCCESS; + } + + // return immediately if no ping is due + if (client->timer_get(client->keep_alive_timer) > 0) { + return LWMQTT_SUCCESS; + } + + // a ping is due + + // fail immediately if a pong is already pending + if (client->pong_pending) { + return LWMQTT_PONG_TIMEOUT; + } + + // encode pingreq packet + size_t len; + lwmqtt_err_t err = lwmqtt_encode_zero(client->write_buf, client->write_buf_size, &len, LWMQTT_PINGREQ_PACKET); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // send packet + err = lwmqtt_send_packet_in_buffer(client, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set flag + client->pong_pending = true; + + return LWMQTT_SUCCESS; +} diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.c b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.c new file mode 100644 index 000000000000..9c78f4eaf1d2 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.c @@ -0,0 +1,249 @@ +#include + +#include "helpers.h" + +uint8_t lwmqtt_read_bits(uint8_t byte, int pos, int num) { return (byte & (uint8_t)((~(0xFF << num)) << pos)) >> pos; } + +void lwmqtt_write_bits(uint8_t *byte, uint8_t value, int pos, int num) { + *byte = (*byte & ~(uint8_t)((~(0xFF << num)) << pos)) | (value << pos); +} + +lwmqtt_err_t lwmqtt_read_data(uint8_t **buf, const uint8_t *buf_end, uint8_t **data, size_t len) { + // check zero length + if (len == 0) { + *data = NULL; + return LWMQTT_SUCCESS; + } + + // check buffer size + if ((size_t)(buf_end - (*buf)) < len) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // read data + *data = *buf; + + // advance pointer + *buf += len; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_write_data(uint8_t **buf, const uint8_t *buf_end, uint8_t *data, size_t len) { + // check zero length + if (len == 0) { + return LWMQTT_SUCCESS; + } + + // check buffer size + if ((size_t)(buf_end - (*buf)) < len) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // write data + memcpy(*buf, data, len); + + // advance pointer + *buf += len; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_read_num(uint8_t **buf, const uint8_t *buf_end, uint16_t *num) { + // check buffer size + if ((size_t)(buf_end - (*buf)) < 2) { + *num = 0; + return LWMQTT_BUFFER_TOO_SHORT; + } + + // read two byte integer + *num = (uint16_t)256 * (*buf)[0] + (*buf)[1]; + + // adjust pointer + *buf += 2; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_write_num(uint8_t **buf, const uint8_t *buf_end, uint16_t num) { + // check buffer size + if ((size_t)(buf_end - (*buf)) < 2) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // write bytes + (*buf)[0] = (uint8_t)(num / 256); + (*buf)[1] = (uint8_t)(num % 256); + + // adjust pointer + *buf += 2; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_read_string(uint8_t **buf, const uint8_t *buf_end, lwmqtt_string_t *str) { + // read length + uint16_t len; + lwmqtt_err_t err = lwmqtt_read_num(buf, buf_end, &len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // read data + err = lwmqtt_read_data(buf, buf_end, (uint8_t **)&str->data, len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set length + str->len = len; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_write_string(uint8_t **buf, const uint8_t *buf_end, lwmqtt_string_t str) { + // write string length + lwmqtt_err_t err = lwmqtt_write_num(buf, buf_end, str.len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write data + err = lwmqtt_write_data(buf, buf_end, (uint8_t *)str.data, str.len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_read_byte(uint8_t **buf, const uint8_t *buf_end, uint8_t *byte) { + // check buffer size + if ((size_t)(buf_end - (*buf)) < 1) { + *byte = 0; + return LWMQTT_BUFFER_TOO_SHORT; + } + + // read byte + *byte = (*buf)[0]; + + // adjust pointer + *buf += 1; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_write_byte(uint8_t **buf, const uint8_t *buf_end, uint8_t byte) { + // check buffer size + if ((size_t)(buf_end - (*buf)) < 1) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // write byte + (*buf)[0] = byte; + + // adjust pointer + *buf += 1; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_varnum_length(uint32_t varnum, int *len) { + if (varnum < 128) { + *len = 1; + return LWMQTT_SUCCESS; + } else if (varnum < 16384) { + *len = 2; + return LWMQTT_SUCCESS; + } else if (varnum < 2097151) { + *len = 3; + return LWMQTT_SUCCESS; + } else if (varnum < 268435455) { + *len = 4; + return LWMQTT_SUCCESS; + } else { + *len = 0; + return LWMQTT_VARNUM_OVERFLOW; + } +} + +lwmqtt_err_t lwmqtt_read_varnum(uint8_t **buf, const uint8_t *buf_end, uint32_t *varnum) { + // prepare last byte + uint8_t byte; + + // prepare multiplier + uint32_t multiplier = 1; + + // prepare length + size_t len = 0; + + // initialize number + *varnum = 0; + + // decode variadic number + do { + // increment length + len++; + + // return error if buffer is to small + if ((size_t)(buf_end - (*buf)) < len) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // return error if the length has overflowed + if (len > 4) { + return LWMQTT_VARNUM_OVERFLOW; + } + + // read byte + byte = (*buf)[len - 1]; + + // add byte to number + *varnum += (byte & 127) * multiplier; + + // increase multiplier + multiplier *= 128; + } while ((byte & 128) != 0); + + // adjust pointer + *buf += len; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_write_varnum(uint8_t **buf, const uint8_t *buf_end, uint32_t varnum) { + // init len counter + size_t len = 0; + + // encode variadic number + do { + // check overflow + if (len == 4) { + return LWMQTT_VARNUM_OVERFLOW; + } + + // return error if buffer is to small + if ((size_t)(buf_end - (*buf)) < len + 1) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // calculate current byte + uint8_t byte = (uint8_t)(varnum % 128); + + // change remaining length + varnum /= 128; + + // set the top bit of this byte if there are more to encode + if (varnum > 0) { + byte |= 0x80; + } + + // write byte + (*buf)[len++] = byte; + } while (varnum > 0); + + // adjust pointer + *buf += len; + + return LWMQTT_SUCCESS; +} diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.h b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.h new file mode 100644 index 000000000000..978eaf4a5ad2 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/helpers.h @@ -0,0 +1,137 @@ +#ifndef LWMQTT_HELPERS_H +#define LWMQTT_HELPERS_H + +#include "lwmqtt.h" + +/** + * Reads bits from a byte. + * + * @param byte - The byte to read from. + * @param pos - The position of the first bit. + * @param num - The number of bits to read. + * @return The read bits as a byte. + */ +uint8_t lwmqtt_read_bits(uint8_t byte, int pos, int num); + +/** + * Write bits to a byte. + * + * @param byte - The byte to write bits to. + * @param value - The bits to write as a byte. + * @param pos - The position of the first bit. + * @param num - The number of bits to write. + */ +void lwmqtt_write_bits(uint8_t *byte, uint8_t value, int pos, int num); + +/** + * Reads arbitrary data from the specified buffer. The pointer is incremented by bytes read. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param data - Pointer to beginning of data. + * @param len - The amount of data to read. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_read_data(uint8_t **buf, const uint8_t *buf_end, uint8_t **data, size_t len); + +/** + * Writes arbitrary data to the specified buffer. The pointer is incremented by the bytes written. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param data - Pointer to the to be written data. + * @param len - The amount of data to write. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_write_data(uint8_t **buf, const uint8_t *buf_end, uint8_t *data, size_t len); + +/** + * Reads two byte number from the specified buffer. The pointer is incremented by two. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param num - The read number. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_read_num(uint8_t **buf, const uint8_t *buf_end, uint16_t *num); + +/** + * Writes a two byte number to the specified buffer. The pointer is incremented by two. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param num - The number to write. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_write_num(uint8_t **buf, const uint8_t *buf_end, uint16_t num); + +/** + * Reads a string from the specified buffer into the passed object. The pointer is incremented by the bytes read. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param str - The object into which the data is to be read. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_read_string(uint8_t **buf, const uint8_t *buf_end, lwmqtt_string_t *str); + +/** + * Writes a string to the specified buffer. The pointer is incremented by the bytes written. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param str - The string to write. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_write_string(uint8_t **buf, const uint8_t *buf_end, lwmqtt_string_t str); + +/** + * Reads one byte from the buffer. The pointer is incremented by one. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param byte - The read byte. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_read_byte(uint8_t **buf, const uint8_t *buf_end, uint8_t *byte); + +/** + * Writes one byte to the specified buffer. The pointer is incremented by one. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param byte - The byte to write. + * @return LWMQTT_SUCCESS or LWMQTT_BUFFER_TOO_SHORT. + */ +lwmqtt_err_t lwmqtt_write_byte(uint8_t **buf, const uint8_t *buf_end, uint8_t byte); + +/** + * Returns the amount of bytes required by the variable number. + * + * @param varnum - The number to check. + * @param len - The required length; + * @return LWMQTT_SUCCESS or LWMQTT_VARNUM_OVERFLOW. + */ +lwmqtt_err_t lwmqtt_varnum_length(uint32_t varnum, int *len); + +/** + * Reads a variable number from the specified buffer. The pointer is incremented by the bytes read. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param varnum - The read varnum. + * @return LWMQTT_SUCCESS, LWMQTT_BUFFER_TOO_SHORT or LWMQTT_VARNUM_OVERFLOW. + */ +lwmqtt_err_t lwmqtt_read_varnum(uint8_t **buf, const uint8_t *buf_end, uint32_t *varnum); + +/** + * Writes a variable number to the specified buffer. The pointer is incremented by the bytes written. + * + * @param buf - Pointer to the buffer. + * @param buf_end - Pointer to the end of the buffer. + * @param varnum - The number to write. + * @return LWMQTT_SUCCESS, LWMQTT_BUFFER_TOO_SHORT or LWMQTT_VARNUM_OVERFLOW. + */ +lwmqtt_err_t lwmqtt_write_varnum(uint8_t **buf, const uint8_t *buf_end, uint32_t varnum); + +#endif diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/lwmqtt.h b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/lwmqtt.h new file mode 100644 index 000000000000..7a7f142ccec0 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/lwmqtt.h @@ -0,0 +1,381 @@ +#ifndef LWMQTT_H +#define LWMQTT_H + +#include +#include +#include + +/** + * The error type used by all exposed APIs. + * + * If a function returns an error that operates on a connected client (e.g publish, keep_alive, etc.) the caller should + * switch into a disconnected state, close and cleanup the current connection and start over by creating a new + * connection. + */ +typedef enum { + LWMQTT_SUCCESS = 0, + LWMQTT_BUFFER_TOO_SHORT = -1, + LWMQTT_VARNUM_OVERFLOW = -2, + LWMQTT_NETWORK_FAILED_CONNECT = -3, + LWMQTT_NETWORK_TIMEOUT = -4, + LWMQTT_NETWORK_FAILED_READ = -5, + LWMQTT_NETWORK_FAILED_WRITE = -6, + LWMQTT_REMAINING_LENGTH_OVERFLOW = -7, + LWMQTT_REMAINING_LENGTH_MISMATCH = -8, + LWMQTT_MISSING_OR_WRONG_PACKET = -9, + LWMQTT_CONNECTION_DENIED = -10, + LWMQTT_FAILED_SUBSCRIPTION = -11, + LWMQTT_SUBACK_ARRAY_OVERFLOW = -12, + LWMQTT_PONG_TIMEOUT = -13, +} lwmqtt_err_t; + +/** + * A common string object. + */ +typedef struct { + uint16_t len; + char *data; +} lwmqtt_string_t; + +/** + * The initializer for string objects. + */ +#define lwmqtt_default_string \ + { 0, NULL } + +/** + * Returns a string object for the passed C string. + * + * @param str - The C string. + * @return A string object. + */ +lwmqtt_string_t lwmqtt_string(const char *str); + +/** + * Compares a string object to a C string. + * + * @param a - The string object to compare. + * @param b - The C string to compare. + * @return Similarity e.g. strcmp(). + */ +int lwmqtt_strcmp(lwmqtt_string_t a, const char *b); + +/** + * The available QOS levels. + */ +typedef enum { LWMQTT_QOS0 = 0, LWMQTT_QOS1 = 1, LWMQTT_QOS2 = 2, LWMQTT_QOS_FAILURE = 128 } lwmqtt_qos_t; + +/** + * The message object used to publish and receive messages. + */ +typedef struct { + lwmqtt_qos_t qos; + bool retained; + uint8_t *payload; + size_t payload_len; +} lwmqtt_message_t; + +/** + * The initializer for message objects. + */ +#define lwmqtt_default_message \ + { LWMQTT_QOS0, false, NULL, 0 } + +/** + * Forward declaration of the client object. + */ +typedef struct lwmqtt_client_t lwmqtt_client_t; + +/** + * The callback used to read from a network object. + * + * The callbacks is expected to read up to the amount of bytes in to the passed buffer. It should block the specified + * timeout and wait for more incoming data. + * + * @param ref - A custom reference. + * @param buf - The buffer. + * @param len - The length of the buffer. + * @param read - Variable that must be set with the amount of read bytes. + * @param timeout - The timeout in milliseconds for the operation. + */ +typedef lwmqtt_err_t (*lwmqtt_network_read_t)(void *ref, uint8_t *buf, size_t len, size_t *read, uint32_t timeout); + +/** + * The callback used to write to a network object. + * + * The callback is expected to write up to the amount of bytes from the passed buffer. It should wait up to the + * specified timeout to write the specified data to the network. + * + * @param ref - A custom reference. + * @param buf - The buffer. + * @param len - The length of the buffer. + * @param sent - Variable that must be set with the amount of written bytes. + * @param timeout - The timeout in milliseconds for the operation. + */ +typedef lwmqtt_err_t (*lwmqtt_network_write_t)(void *ref, uint8_t *buf, size_t len, size_t *sent, uint32_t timeout); + +/** + * The callback used to set a timer. + * + * @param ref - A custom reference. + * @param timeout - The amount of milliseconds until the deadline. + */ +typedef void (*lwmqtt_timer_set_t)(void *ref, uint32_t timeout); + +/** + * The callback used to get a timers value. + * + * @param - A custom reference. + * @return The amount of milliseconds until the deadline. May return negative numbers if the deadline has been reached. + */ +typedef int32_t (*lwmqtt_timer_get_t)(void *ref); + +/** + * The callback used to forward incoming messages. + * + * Note: The callback is mostly executed because of a call to lwmqtt_yield() that processes incoming messages. However, + * it is possible that the callback is also executed during a call to lwmqtt_subscribe(), lwmqtt_publish() or + * lwmqtt_unsubscribe() if incoming messages are received between the required acknowledgements. It is therefore not + * recommended to call any further lwmqtt methods in the callback as this might result in weird call stacks. The + * callback should place the received messages in a queue and dispatch them after the caller has returned. + */ +typedef void (*lwmqtt_callback_t)(lwmqtt_client_t *client, void *ref, lwmqtt_string_t str, lwmqtt_message_t msg); + +/** + * The client object. + */ +struct lwmqtt_client_t { + uint16_t last_packet_id; + uint32_t keep_alive_interval; + bool pong_pending; + + size_t write_buf_size, read_buf_size; + uint8_t *write_buf, *read_buf; + + lwmqtt_callback_t callback; + void *callback_ref; + + void *network; + lwmqtt_network_read_t network_read; + lwmqtt_network_write_t network_write; + + void *keep_alive_timer; + void *command_timer; + lwmqtt_timer_set_t timer_set; + lwmqtt_timer_get_t timer_get; +}; + +/** + * Will initialize the specified client object. + * + * @param client - The client object. + * @param write_buf - The write buffer. + * @param write_buf_size - The write buffer size. + * @param read_buf - The read buffer. + * @param read_buf_size - The read buffer size. + */ +void lwmqtt_init(lwmqtt_client_t *client, uint8_t *write_buf, size_t write_buf_size, uint8_t *read_buf, + size_t read_buf_size); + +/** + * Will set the network reference and callbacks for this client object. + * + * @param client - The client object. + * @param ref - The reference to the network object. + * @param read - The read callback. + * @param write - The write callback. + */ +void lwmqtt_set_network(lwmqtt_client_t *client, void *ref, lwmqtt_network_read_t read, lwmqtt_network_write_t write); + +/** + * Will set the timer references and callbacks for this client object. + * + * @param client - The client object. + * @param keep_alive_timer - The reference to the keep alive timer. + * @param command_timer - The reference to the command timer. + * @param set - The set callback. + * @param get - The get callback. + */ +void lwmqtt_set_timers(lwmqtt_client_t *client, void *keep_alive_timer, void *command_timer, lwmqtt_timer_set_t set, + lwmqtt_timer_get_t get); + +/** + * Will set the callback used to receive incoming messages. + * + * @param client - The client object. + * @param ref - A custom reference that will passed to the callback. + * @param cb - The callback to be called. + */ +void lwmqtt_set_callback(lwmqtt_client_t *client, void *ref, lwmqtt_callback_t cb); + +/** + * The object defining the last will of a client. + */ +typedef struct { + lwmqtt_string_t topic; + lwmqtt_qos_t qos; + bool retained; + lwmqtt_string_t payload; +} lwmqtt_will_t; + +/** + * The default initializer for the will object. + */ +#define lwmqtt_default_will \ + { lwmqtt_default_string, LWMQTT_QOS0, false, lwmqtt_default_string } + +/** + * The object containing the connection options for a client. + */ +typedef struct { + lwmqtt_string_t client_id; + uint16_t keep_alive; + bool clean_session; + lwmqtt_string_t username; + lwmqtt_string_t password; +} lwmqtt_options_t; + +/** + * The default initializer for the options object. + */ +#define lwmqtt_default_options \ + { lwmqtt_default_string, 60, true, lwmqtt_default_string, lwmqtt_default_string } + +/** + * The available return codes transported by the connack packet. + */ +typedef enum { + LWMQTT_CONNECTION_ACCEPTED = 0, + LWMQTT_UNACCEPTABLE_PROTOCOL = 1, + LWMQTT_IDENTIFIER_REJECTED = 2, + LWMQTT_SERVER_UNAVAILABLE = 3, + LWMQTT_BAD_USERNAME_OR_PASSWORD = 4, + LWMQTT_NOT_AUTHORIZED = 5, + LWMQTT_UNKNOWN_RETURN_CODE = 6 +} lwmqtt_return_code_t; + +/** + * Will send a connect packet and wait for a connack response and set the return code. + * + * The network object must already be connected to the server. An error is returned if the broker rejects the + * connection. + * + * @param client - The client object. + * @param options - The options object. + * @param will - The will object. + * @param return_code - The variable that will receive the return code. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_connect(lwmqtt_client_t *client, lwmqtt_options_t options, lwmqtt_will_t *will, + lwmqtt_return_code_t *return_code, uint32_t timeout); + +/** + * Will send a publish packet and wait for all acks to complete. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param topic - The topic. + * @param message - The message. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_publish(lwmqtt_client_t *client, lwmqtt_string_t topic, lwmqtt_message_t msg, uint32_t timeout); + +/** + * Will send a subscribe packet with multiple topic filters plus QOS levels and wait for the suback to complete. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param count - The number of topic filters and QOS levels. + * @param topic_filter - The list of topic filters. + * @param qos - The list of QOS levels. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_subscribe(lwmqtt_client_t *client, int count, lwmqtt_string_t *topic_filter, lwmqtt_qos_t *qos, + uint32_t timeout); + +/** + * Will send a subscribe packet with a single topic filter plus QOS level and wait for the suback to complete. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param topic_filter - The topic filter. + * @param qos - The QOS level. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_subscribe_one(lwmqtt_client_t *client, lwmqtt_string_t topic_filter, lwmqtt_qos_t qos, + uint32_t timeout); + +/** + * Will send an unsubscribe packet with multiple topic filters and wait for the unsuback to complete. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param count - The number of topic filters. + * @param topic_filter - The topic filter. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_unsubscribe(lwmqtt_client_t *client, int count, lwmqtt_string_t *topic_filter, uint32_t timeout); + +/** + * Will send an unsubscribe packet with a single topic filter and wait for the unsuback to complete. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param topic_filter - The topic filter. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_unsubscribe_one(lwmqtt_client_t *client, lwmqtt_string_t topic_filter, uint32_t timeout); + +/** + * Will send a disconnect packet and finish the client. + * + * @param client - The client object. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_disconnect(lwmqtt_client_t *client, uint32_t timeout); + +/** + * Will yield control to the client and receive incoming packets from the network. + * + * Single-threaded applications may peek on the network and assess if data is available to read before calling yield and + * potentially block until the timeout is reached. Multi-threaded applications may select on the socket and block until + * data is available and then yield to the client if data is available. All applications may specify the amount of bytes + * available to read in order to constrain the yield to only receive packets that are already in-flight. + * + * If no availability info is given the yield will return after one packet has been successfully read or the deadline + * has been reached but no single bytes has been received. + * + * Note: The message callback might be called with incoming messages as part of this call. + * + * @param client - The client object. + * @param available - The available bytes to read. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_yield(lwmqtt_client_t *client, size_t available, uint32_t timeout); + +/** + * Will yield control to the client to keep the connection alive. + * + * This functions must be called at a rate slightly lower than 25% of the configured keep alive. If keep alive is zero, + * the function must not be called at all. + * + * @param client - The client object. + * @param timeout - The command timeout. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_keep_alive(lwmqtt_client_t *client, uint32_t timeout); + +#endif // LWMQTT_H diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.c b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.c new file mode 100644 index 000000000000..512b44d9468a --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.c @@ -0,0 +1,742 @@ +#include "packet.h" + +lwmqtt_err_t lwmqtt_detect_packet_type(uint8_t *buf, size_t buf_len, lwmqtt_packet_type_t *packet_type) { + // set default packet type + *packet_type = LWMQTT_NO_PACKET; + + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // prepare header + uint8_t header; + + // read header + lwmqtt_err_t err = lwmqtt_read_byte(&buf_ptr, buf_end, &header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // get packet type + *packet_type = (lwmqtt_packet_type_t)lwmqtt_read_bits(header, 4, 4); + + // check if packet type is correct and can be received + switch (*packet_type) { + case LWMQTT_CONNACK_PACKET: + case LWMQTT_PUBLISH_PACKET: + case LWMQTT_PUBACK_PACKET: + case LWMQTT_PUBREC_PACKET: + case LWMQTT_PUBREL_PACKET: + case LWMQTT_PUBCOMP_PACKET: + case LWMQTT_SUBACK_PACKET: + case LWMQTT_UNSUBACK_PACKET: + case LWMQTT_PINGRESP_PACKET: + return LWMQTT_SUCCESS; + default: + *packet_type = LWMQTT_NO_PACKET; + return LWMQTT_MISSING_OR_WRONG_PACKET; + } +} + +lwmqtt_err_t lwmqtt_detect_remaining_length(uint8_t *buf, size_t buf_len, uint32_t *rem_len) { + // prepare pointer + uint8_t *ptr = buf; + + // attempt to decode remaining length + lwmqtt_err_t err = lwmqtt_read_varnum(&ptr, buf + buf_len, rem_len); + if (err == LWMQTT_VARNUM_OVERFLOW) { + *rem_len = 0; + return LWMQTT_REMAINING_LENGTH_OVERFLOW; + } else if (err != LWMQTT_SUCCESS) { + *rem_len = 0; + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_connect(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_options_t options, + lwmqtt_will_t *will) { + // prepare pointers + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // fixed header is 10 + uint32_t rem_len = 10; + + // add client id to remaining length + rem_len += options.client_id.len + 2; + + // add will if present to remaining length + if (will != NULL) { + rem_len += will->topic.len + 2 + will->payload.len + 2; + } + + // add username if present to remaining length + if (options.username.len > 0) { + rem_len += options.username.len + 2; + + // add password if present to remaining length + if (options.password.len > 0) { + rem_len += options.password.len + 2; + } + } + + // check remaining length length + int rem_len_len; + lwmqtt_err_t err = lwmqtt_varnum_length(rem_len, &rem_len_len); + if (err == LWMQTT_VARNUM_OVERFLOW) { + return LWMQTT_REMAINING_LENGTH_OVERFLOW; + } + + // prepare header + uint8_t header = 0; + lwmqtt_write_bits(&header, LWMQTT_CONNECT_PACKET, 4, 4); + + // write header + err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write version string + err = lwmqtt_write_string(&buf_ptr, buf_end, lwmqtt_string("MQTT")); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write version number + err = lwmqtt_write_byte(&buf_ptr, buf_end, 4); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // prepare flags + uint8_t flags = 0; + + // set clean session + lwmqtt_write_bits(&flags, (uint8_t)(options.clean_session), 1, 1); + + // set will flags if present + if (will != NULL) { + lwmqtt_write_bits(&flags, 1, 2, 1); + lwmqtt_write_bits(&flags, will->qos, 3, 2); + lwmqtt_write_bits(&flags, (uint8_t)(will->retained), 5, 1); + } + + // set username flag if present + if (options.username.len > 0) { + lwmqtt_write_bits(&flags, 1, 7, 1); + + // set password flag if present + if (options.password.len > 0) { + lwmqtt_write_bits(&flags, 1, 6, 1); + } + } + + // write flags + err = lwmqtt_write_byte(&buf_ptr, buf_end, flags); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write keep alive + err = lwmqtt_write_num(&buf_ptr, buf_end, options.keep_alive); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write client id + err = lwmqtt_write_string(&buf_ptr, buf_end, options.client_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write will if present + if (will != NULL) { + // write topic + err = lwmqtt_write_string(&buf_ptr, buf_end, will->topic); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write payload length + err = lwmqtt_write_num(&buf_ptr, buf_end, (uint16_t)will->payload.len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write payload + err = lwmqtt_write_data(&buf_ptr, buf_end, (uint8_t *)will->payload.data, will->payload.len); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // write username if present + if (options.username.len > 0) { + err = lwmqtt_write_string(&buf_ptr, buf_end, options.username); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // write password if present + if (options.username.len > 0 && options.password.len > 0) { + err = lwmqtt_write_string(&buf_ptr, buf_end, options.password); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // set written length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_decode_connack(uint8_t *buf, size_t buf_len, bool *session_present, + lwmqtt_return_code_t *return_code) { + // prepare pointers + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // read header + uint8_t header; + lwmqtt_err_t err = lwmqtt_read_byte(&buf_ptr, buf_end, &header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check packet type + if (lwmqtt_read_bits(header, 4, 4) != LWMQTT_CONNACK_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // read remaining length + uint32_t rem_len; + err = lwmqtt_read_varnum(&buf_ptr, buf_end, &rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check remaining length + if (rem_len != 2) { + return LWMQTT_REMAINING_LENGTH_MISMATCH; + } + + // read flags + uint8_t flags; + err = lwmqtt_read_byte(&buf_ptr, buf_end, &flags); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // read return code + uint8_t raw_return_code; + err = lwmqtt_read_byte(&buf_ptr, buf_end, &raw_return_code); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // get session present + *session_present = lwmqtt_read_bits(flags, 7, 1) == 1; + + // get return code + switch (raw_return_code) { + case 0: + *return_code = LWMQTT_CONNECTION_ACCEPTED; + break; + case 1: + *return_code = LWMQTT_UNACCEPTABLE_PROTOCOL; + break; + case 2: + *return_code = LWMQTT_IDENTIFIER_REJECTED; + break; + case 3: + *return_code = LWMQTT_SERVER_UNAVAILABLE; + break; + case 4: + *return_code = LWMQTT_BAD_USERNAME_OR_PASSWORD; + break; + case 5: + *return_code = LWMQTT_NOT_AUTHORIZED; + break; + default: + *return_code = LWMQTT_UNKNOWN_RETURN_CODE; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_zero(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_packet_type_t packet_type) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // write header + uint8_t header = 0; + lwmqtt_write_bits(&header, packet_type, 4, 4); + lwmqtt_err_t err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, 0); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_decode_ack(uint8_t *buf, size_t buf_len, lwmqtt_packet_type_t packet_type, bool *dup, + uint16_t *packet_id) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // read header + uint8_t header = 0; + lwmqtt_err_t err = lwmqtt_read_byte(&buf_ptr, buf_end, &header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check packet type + if (lwmqtt_read_bits(header, 4, 4) != packet_type) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // get dup + *dup = lwmqtt_read_bits(header, 3, 1) == 1; + + // read remaining length + uint32_t rem_len; + err = lwmqtt_read_varnum(&buf_ptr, buf + buf_len, &rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check remaining length + if (rem_len != 2) { + return LWMQTT_REMAINING_LENGTH_MISMATCH; + } + + // read packet id + err = lwmqtt_read_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_ack(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_packet_type_t packet_type, bool dup, + uint16_t packet_id) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // prepare header + uint8_t header = 0; + + // set packet type + lwmqtt_write_bits(&header, packet_type, 4, 4); + + // set dup + lwmqtt_write_bits(&header, (uint8_t)(dup), 3, 1); + + // set qos + lwmqtt_write_bits(&header, (uint8_t)(packet_type == LWMQTT_PUBREL_PACKET ? LWMQTT_QOS1 : LWMQTT_QOS0), 1, 2); + + // write header + lwmqtt_err_t err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, 2); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write packet id + err = lwmqtt_write_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set written length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_decode_publish(uint8_t *buf, size_t buf_len, bool *dup, uint16_t *packet_id, lwmqtt_string_t *topic, + lwmqtt_message_t *msg) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // read header + uint8_t header; + lwmqtt_err_t err = lwmqtt_read_byte(&buf_ptr, buf_end, &header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check packet type + if (lwmqtt_read_bits(header, 4, 4) != LWMQTT_PUBLISH_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // get dup + *dup = lwmqtt_read_bits(header, 3, 1) == 1; + + // get retained + msg->retained = lwmqtt_read_bits(header, 0, 1) == 1; + + // get qos + switch (lwmqtt_read_bits(header, 1, 2)) { + case 0: + msg->qos = LWMQTT_QOS0; + break; + case 1: + msg->qos = LWMQTT_QOS1; + break; + case 2: + msg->qos = LWMQTT_QOS2; + break; + default: + msg->qos = LWMQTT_QOS0; + break; + } + + // read remaining length + uint32_t rem_len; + err = lwmqtt_read_varnum(&buf_ptr, buf_end, &rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check remaining length (topic length) + if (rem_len < 2) { + return LWMQTT_REMAINING_LENGTH_MISMATCH; + } + + // check buffer capacity + if ((uint32_t)(buf_end - buf_ptr) < rem_len) { + return LWMQTT_BUFFER_TOO_SHORT; + } + + // reset buf end + buf_end = buf_ptr + rem_len; + + // read topic + err = lwmqtt_read_string(&buf_ptr, buf_end, topic); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // read packet id if qos is at least 1 + if (msg->qos > 0) { + err = lwmqtt_read_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + } else { + *packet_id = 0; + } + + // set payload length + msg->payload_len = buf_end - buf_ptr; + + // read payload + err = lwmqtt_read_data(&buf_ptr, buf_end, &msg->payload, buf_end - buf_ptr); + if (err != LWMQTT_SUCCESS) { + return err; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_publish(uint8_t *buf, size_t buf_len, size_t *len, bool dup, uint16_t packet_id, + lwmqtt_string_t topic, lwmqtt_message_t msg) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // calculate remaining length + uint32_t rem_len = 2 + topic.len + (uint32_t)msg.payload_len; + if (msg.qos > 0) { + rem_len += 2; + } + + // check remaining length length + int rem_len_len; + lwmqtt_err_t err = lwmqtt_varnum_length(rem_len, &rem_len_len); + if (err == LWMQTT_VARNUM_OVERFLOW) { + return LWMQTT_REMAINING_LENGTH_OVERFLOW; + } + + // prepare header + uint8_t header = 0; + + // set packet type + lwmqtt_write_bits(&header, LWMQTT_PUBLISH_PACKET, 4, 4); + + // set dup + lwmqtt_write_bits(&header, (uint8_t)(dup), 3, 1); + + // set qos + lwmqtt_write_bits(&header, msg.qos, 1, 2); + + // set retained + lwmqtt_write_bits(&header, (uint8_t)(msg.retained), 0, 1); + + // write header + err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write topic + err = lwmqtt_write_string(&buf_ptr, buf_end, topic); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write packet id if qos is at least 1 + if (msg.qos > 0) { + err = lwmqtt_write_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // write payload + err = lwmqtt_write_data(&buf_ptr, buf_end, msg.payload, msg.payload_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_subscribe(uint8_t *buf, size_t buf_len, size_t *len, uint16_t packet_id, int count, + lwmqtt_string_t *topic_filters, lwmqtt_qos_t *qos_levels) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // calculate remaining length + uint32_t rem_len = 2; + for (int i = 0; i < count; i++) { + rem_len += 2 + topic_filters[i].len + 1; + } + + // check remaining length length + int rem_len_len; + lwmqtt_err_t err = lwmqtt_varnum_length(rem_len, &rem_len_len); + if (err == LWMQTT_VARNUM_OVERFLOW) { + return LWMQTT_REMAINING_LENGTH_OVERFLOW; + } + + // prepare header + uint8_t header = 0; + + // set packet type + lwmqtt_write_bits(&header, LWMQTT_SUBSCRIBE_PACKET, 4, 4); + + // set qos + lwmqtt_write_bits(&header, LWMQTT_QOS1, 1, 2); + + // write header + err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write packet id + err = lwmqtt_write_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write all subscriptions + for (int i = 0; i < count; i++) { + // write topic + err = lwmqtt_write_string(&buf_ptr, buf_end, topic_filters[i]); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write qos level + err = lwmqtt_write_byte(&buf_ptr, buf_end, (uint8_t)qos_levels[i]); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // set length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_decode_suback(uint8_t *buf, size_t buf_len, uint16_t *packet_id, int max_count, int *count, + lwmqtt_qos_t *granted_qos_levels) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // read header + uint8_t header; + lwmqtt_err_t err = lwmqtt_read_byte(&buf_ptr, buf_end, &header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check packet type + if (lwmqtt_read_bits(header, 4, 4) != LWMQTT_SUBACK_PACKET) { + return LWMQTT_MISSING_OR_WRONG_PACKET; + } + + // read remaining length + uint32_t rem_len; + err = lwmqtt_read_varnum(&buf_ptr, buf_end, &rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // check remaining length (packet id + min. one suback code) + if (rem_len < 3) { + return LWMQTT_REMAINING_LENGTH_MISMATCH; + } + + // read packet id + err = lwmqtt_read_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // read all suback codes + for (*count = 0; *count < (int)rem_len - 2; (*count)++) { + // check max count + if (*count > max_count) { + return LWMQTT_SUBACK_ARRAY_OVERFLOW; + } + + // read qos level + uint8_t raw_qos_level; + err = lwmqtt_read_byte(&buf_ptr, buf_end, &raw_qos_level); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // set qos level + switch (raw_qos_level) { + case 0: + granted_qos_levels[*count] = LWMQTT_QOS0; + break; + case 1: + granted_qos_levels[*count] = LWMQTT_QOS1; + break; + case 2: + granted_qos_levels[*count] = LWMQTT_QOS2; + break; + default: + granted_qos_levels[*count] = LWMQTT_QOS_FAILURE; + break; + } + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_encode_unsubscribe(uint8_t *buf, size_t buf_len, size_t *len, uint16_t packet_id, int count, + lwmqtt_string_t *topic_filters) { + // prepare pointer + uint8_t *buf_ptr = buf; + uint8_t *buf_end = buf + buf_len; + + // calculate remaining length + uint32_t rem_len = 2; + for (int i = 0; i < count; i++) { + rem_len += 2 + topic_filters[i].len; + } + + // check remaining length length + int rem_len_len; + lwmqtt_err_t err = lwmqtt_varnum_length(rem_len, &rem_len_len); + if (err == LWMQTT_VARNUM_OVERFLOW) { + return LWMQTT_REMAINING_LENGTH_OVERFLOW; + } + + // prepare header + uint8_t header = 0; + + // set packet type + lwmqtt_write_bits(&header, LWMQTT_UNSUBSCRIBE_PACKET, 4, 4); + + // set qos + lwmqtt_write_bits(&header, LWMQTT_QOS1, 1, 2); + + // write header + err = lwmqtt_write_byte(&buf_ptr, buf_end, header); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write remaining length + err = lwmqtt_write_varnum(&buf_ptr, buf_end, rem_len); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write packet id + err = lwmqtt_write_num(&buf_ptr, buf_end, packet_id); + if (err != LWMQTT_SUCCESS) { + return err; + } + + // write topics + for (int i = 0; i < count; i++) { + err = lwmqtt_write_string(&buf_ptr, buf_end, topic_filters[i]); + if (err != LWMQTT_SUCCESS) { + return err; + } + } + + // set length + *len = buf_ptr - buf; + + return LWMQTT_SUCCESS; +} diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.h b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.h new file mode 100644 index 000000000000..5fe9e50f1567 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/packet.h @@ -0,0 +1,185 @@ +#ifndef LWMQTT_PACKET_H +#define LWMQTT_PACKET_H + +#include "helpers.h" + +/** + * The available packet types. + */ +typedef enum { + LWMQTT_NO_PACKET = 0, + LWMQTT_CONNECT_PACKET = 1, + LWMQTT_CONNACK_PACKET, + LWMQTT_PUBLISH_PACKET, + LWMQTT_PUBACK_PACKET, + LWMQTT_PUBREC_PACKET, + LWMQTT_PUBREL_PACKET, + LWMQTT_PUBCOMP_PACKET, + LWMQTT_SUBSCRIBE_PACKET, + LWMQTT_SUBACK_PACKET, + LWMQTT_UNSUBSCRIBE_PACKET, + LWMQTT_UNSUBACK_PACKET, + LWMQTT_PINGREQ_PACKET, + LWMQTT_PINGRESP_PACKET, + LWMQTT_DISCONNECT_PACKET +} lwmqtt_packet_type_t; + +/** + * Will detect the packet type from the at least one byte long buffer. + * + * @param buf - The buffer from which the packet type will be detected. + * @param buf_len - The length of the specified buffer. + * @param packet_type - The packet type. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_detect_packet_type(uint8_t *buf, size_t buf_len, lwmqtt_packet_type_t *packet_type); + +/** + * Will detect the remaining length form the at least on byte long buffer. + * + * It will return LWMQTT_BUFFER_TOO_SHORT if the buffer is to short and an additional byte should be read from the + * network. In case the remaining length is overflowed it will return LWMQTT_REMAINING_LENGTH_OVERFLOW. + * + * @param buf - The buffer from which the remaining length will be detected. + * @param buf_len - The length of the specified buffer. + * @param rem_len - The detected remaining length. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_detect_remaining_length(uint8_t *buf, size_t buf_len, uint32_t *rem_len); + +/** + * Encodes a connect packet into the supplied buffer. + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param options - The options to be used to build the connect packet. + * @param will - The last will and testament. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_connect(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_options_t options, + lwmqtt_will_t *will); + +/** + * Decodes a connack packet from the supplied buffer. + * + * @param buf - The raw buffer data. + * @param buf_len - The length of the specified buffer. + * @param session_present - The session present flag. + * @param return_code - The return code. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_decode_connack(uint8_t *buf, size_t buf_len, bool *session_present, + lwmqtt_return_code_t *return_code); + +/** + * Encodes a zero (disconnect, pingreq) packet into the supplied buffer. + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param packet_type - The packets type. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_zero(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_packet_type_t packet_type); + +/** + * Decodes an ack (puback, pubrec, pubrel, pubcomp, unsuback) packet from the supplied buffer. + * + * @param buf - The raw buffer data. + * @param buf_len - The length of the specified buffer. + * @param packet_type - The packet type. + * @param dup - The dup flag. + * @param packet_id - The packet id. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_decode_ack(uint8_t *buf, size_t buf_len, lwmqtt_packet_type_t packet_type, bool *dup, + uint16_t *packet_id); + +/** + * Encodes an ack (puback, pubrec, pubrel, pubcomp) packet into the supplied buffer. + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param packet_type - The packets type. + * @param dup - The dup flag. + * @param packet_id - The packet id. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_ack(uint8_t *buf, size_t buf_len, size_t *len, lwmqtt_packet_type_t packet_type, bool dup, + uint16_t packet_id); + +/** + * Decodes a publish packet from the supplied buffer. + * + * @param buf - The raw buffer data. + * @param buf_len - The length of the specified buffer. + * @param dup - The dup flag. + * @param packet_id - The packet id. + * @param topic - The topic. + * @parma msg - The message. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_decode_publish(uint8_t *buf, size_t buf_len, bool *dup, uint16_t *packet_id, lwmqtt_string_t *topic, + lwmqtt_message_t *msg); + +/** + * Encodes a publish packet into the supplied buffer. + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param dup - The dup flag. + * @param packet_id - The packet id. + * @param topic - The topic. + * @param msg - The message. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_publish(uint8_t *buf, size_t buf_len, size_t *len, bool dup, uint16_t packet_id, + lwmqtt_string_t topic, lwmqtt_message_t msg); + +/** + * Encodes a subscribe packet into the supplied buffer. + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param packet_id - The packet id. + * @param count - The number of members in the topic_filters and qos_levels array. + * @param topic_filters - The array of topic filter. + * @param qos_levels - The array of requested QoS levels. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_subscribe(uint8_t *buf, size_t buf_len, size_t *len, uint16_t packet_id, int count, + lwmqtt_string_t *topic_filters, lwmqtt_qos_t *qos_levels); + +/** + * Decodes a suback packet from the supplied buffer. + * + * @param buf - The raw buffer data. + * @param buf_len - The length of the specified buffer. + * @param packet_id - The packet id. + * @param max_count - The maximum number of members allowed in the granted_qos_levels array. + * @param count - The number of members in the granted_qos_levels array. + * @param granted_qos_levels - The granted QoS levels. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_decode_suback(uint8_t *buf, size_t buf_len, uint16_t *packet_id, int max_count, int *count, + lwmqtt_qos_t *granted_qos_levels); + +/** + * Encodes the supplied unsubscribe data into the supplied buffer, ready for sending + * + * @param buf - The buffer into which the packet will be encoded. + * @param buf_len - The length of the specified buffer. + * @param len - The encoded length of the packet. + * @param packet_id - The packet id. + * @param count - The number of members in the topic_filters array. + * @param topic_filters - The array of topic filters. + * @return An error value. + */ +lwmqtt_err_t lwmqtt_encode_unsubscribe(uint8_t *buf, size_t buf_len, size_t *len, uint16_t packet_id, int count, + lwmqtt_string_t *topic_filters); + +#endif // LWMQTT_PACKET_H diff --git a/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/string.c b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/string.c new file mode 100644 index 000000000000..c27dc94e3d19 --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/lwmqtt/string.c @@ -0,0 +1,38 @@ +#include + +#include "lwmqtt.h" + +lwmqtt_string_t lwmqtt_string(const char *str) { + // check for null + if (str == NULL) { + return (lwmqtt_string_t){0, NULL}; + } + + // get length + uint16_t len = (uint16_t)strlen(str); + + // check zero length + if (len == 0) { + return (lwmqtt_string_t){0, NULL}; + } + + return (lwmqtt_string_t){len, (char *)str}; +} + +int lwmqtt_strcmp(lwmqtt_string_t a, const char *b) { + // get string of b + lwmqtt_string_t b_str = lwmqtt_string(b); + + // return if both are zero length + if (a.len == 0 && b_str.len == 0) { + return 0; + } + + // return if lengths are different + if (a.len != b_str.len) { + return -1; + } + + // compare memory of same length + return strncmp(a.data, b_str.data, a.len); +} diff --git a/lib/arduino-mqtt-2.3.3.02/src/system.cpp b/lib/arduino-mqtt-2.3.3.02/src/system.cpp new file mode 100644 index 000000000000..cfd8c47407de --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/system.cpp @@ -0,0 +1,48 @@ +#include + +#include "system.h" + +void lwmqtt_arduino_timer_set(void *ref, uint32_t timeout) { + // cast timer reference + auto t = (lwmqtt_arduino_timer_t *)ref; + + // set future end time + t->end = (uint32_t)(millis() + timeout); +} + +int32_t lwmqtt_arduino_timer_get(void *ref) { + // cast timer reference + auto t = (lwmqtt_arduino_timer_t *)ref; + + // get difference to end time + return (int32_t)t->end - (int32_t)millis(); +} + +lwmqtt_err_t lwmqtt_arduino_network_read(void *ref, uint8_t *buffer, size_t len, size_t *read, uint32_t timeout) { + // cast network reference + auto n = (lwmqtt_arduino_network_t *)ref; + + // set timeout + n->client->setTimeout(timeout); + + // read bytes + *read = n->client->readBytes(buffer, len); + if (*read <= 0) { + return LWMQTT_NETWORK_FAILED_READ; + } + + return LWMQTT_SUCCESS; +} + +lwmqtt_err_t lwmqtt_arduino_network_write(void *ref, uint8_t *buffer, size_t len, size_t *sent, uint32_t /*timeout*/) { + // cast network reference + auto n = (lwmqtt_arduino_network_t *)ref; + + // write bytes + *sent = n->client->write(buffer, len); + if (*sent <= 0) { + return LWMQTT_NETWORK_FAILED_WRITE; + }; + + return LWMQTT_SUCCESS; +} diff --git a/lib/arduino-mqtt-2.3.3.02/src/system.h b/lib/arduino-mqtt-2.3.3.02/src/system.h new file mode 100644 index 000000000000..e51739fb894f --- /dev/null +++ b/lib/arduino-mqtt-2.3.3.02/src/system.h @@ -0,0 +1,26 @@ +#ifndef LWMQTT_ARDUINO_H +#define LWMQTT_ARDUINO_H + +#include +#include + +extern "C" { +#include "lwmqtt/lwmqtt.h" +}; + +typedef struct { + uint32_t end; +} lwmqtt_arduino_timer_t; + +void lwmqtt_arduino_timer_set(void *ref, uint32_t timeout); + +int32_t lwmqtt_arduino_timer_get(void *ref); + +typedef struct { + Client *client; +} lwmqtt_arduino_network_t; + +lwmqtt_err_t lwmqtt_arduino_network_read(void *ref, uint8_t *buf, size_t len, size_t *read, uint32_t timeout); +lwmqtt_err_t lwmqtt_arduino_network_write(void *ref, uint8_t *buf, size_t len, size_t *sent, uint32_t timeout); + +#endif // LWMQTT_ARDUINO_H diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/.gitignore b/lib/esp-mqtt-arduino-1.0.1.02.1/.gitignore deleted file mode 100644 index 2ee75414c02e..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# C++ objects and libs - -*.slo -*.lo -*.o -#*.a -*.la -*.lai -*.so -*.dll -*.dylib - -#Makefile -*-build-* -build-* -*.autosave - -# .log files (usually created by QtTest - thanks to VestniK) -*.log - - -# Editors temporary files -*~ - - -#OSX -.DS_Store -._* diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/README.md b/lib/esp-mqtt-arduino-1.0.1.02.1/README.md deleted file mode 100644 index a7ddbecacf51..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/README.md +++ /dev/null @@ -1,15 +0,0 @@ -MQTT -==== - -A Wrapper around mqtt for Arduino to be used with esp8266 modules. - -It wraps a slightly modified version of mqtt for esp8266 ported by Tuan PM. -Original code for esp: https://github.com/tuanpmt/esp_mqtt -Original code for contiki: https://github.com/esar/contiki-mqtt - - -==== - -**secure libssl:** - -If you want to use secure communication, please use the `secure`-branch! diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_pub/mqtt_pub.ino b/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_pub/mqtt_pub.ino deleted file mode 100644 index 17b3be8db346..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_pub/mqtt_pub.ino +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include - -void myDataCb(String& topic, String& data); -void myPublishedCb(); -void myDisconnectedCb(); -void myConnectedCb(); - -#define CLIENT_ID "client1" - -// create MQTT object -MQTT myMqtt(CLIENT_ID, "192.168.0.1", 1883); - -// -const char* ssid = "ssid"; -const char* password = "ssid_password"; - - -// -void setup() { - Serial.begin(115200); - delay(1000); - - Serial.println(); - Serial.println(); - Serial.print("Connecting to "); - Serial.println(ssid); - - WiFi.begin(ssid, password); - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - - Serial.println(""); - Serial.println("WiFi connected"); - Serial.println("IP address: "); - Serial.println(WiFi.localIP()); - - Serial.println("Connecting to MQTT server"); - - // setup callbacks - myMqtt.onConnected(myConnectedCb); - myMqtt.onDisconnected(myDisconnectedCb); - myMqtt.onPublished(myPublishedCb); - myMqtt.onData(myDataCb); - - Serial.println("connect mqtt..."); - myMqtt.connect(); - - delay(10); -} - -// -void loop() { - - int value = analogRead(A0); - - String topic("/"); - topic += CLIENT_ID; - topic += "/value"; - - String valueStr(value); - - // publish value to topic - boolean result = myMqtt.publish(topic, valueStr); - - delay(1000); -} - - -/* - * - */ -void myConnectedCb() -{ - Serial.println("connected to MQTT server"); -} - -void myDisconnectedCb() -{ - Serial.println("disconnected. try to reconnect..."); - delay(500); - myMqtt.connect(); -} - -void myPublishedCb() -{ - //Serial.println("published."); -} - -void myDataCb(String& topic, String& data) -{ - - Serial.print(topic); - Serial.print(": "); - Serial.println(data); -} - - - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_sub/mqtt_sub.ino b/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_sub/mqtt_sub.ino deleted file mode 100644 index 1f759161712c..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/examples/mqtt_sub/mqtt_sub.ino +++ /dev/null @@ -1,95 +0,0 @@ -#include -#include - -void myDataCb(String& topic, String& data); -void myPublishedCb(); -void myDisconnectedCb(); -void myConnectedCb(); - -#define CLIENT_ID "client3" -#define TOPIC "/client1/value" - - -// create MQTT -MQTT myMqtt(CLIENT_ID, "192.168.0.1", 1883); - - -const char* ssid = "ssid"; -const char* password = "ssid_password"; - - -// -void setup() { - Serial.begin(115200); - delay(1000); - - Serial.println(); - Serial.println(); - Serial.print("Connecting to "); - Serial.println(ssid); - - WiFi.begin(ssid, password); - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - - Serial.println(""); - Serial.println("WiFi connected"); - Serial.println("IP address: "); - Serial.println(WiFi.localIP()); - - - Serial.println("Connecting to MQTT server"); - - // setup callbacks - myMqtt.onConnected(myConnectedCb); - myMqtt.onDisconnected(myDisconnectedCb); - myMqtt.onPublished(myPublishedCb); - myMqtt.onData(myDataCb); - - Serial.println("connect mqtt..."); - myMqtt.connect(); - - Serial.println("subscribe to topic..."); - myMqtt.subscribe(TOPIC); - - delay(10); -} - -// -void loop() { -} - - -/* - * - */ -void myConnectedCb() -{ - Serial.println("connected to MQTT server"); -} - -void myDisconnectedCb() -{ - Serial.println("disconnected. try to reconnect..."); - delay(500); - myMqtt.connect(); -} - -void myPublishedCb() -{ - //Serial.println("published."); -} - -void myDataCb(String& topic, String& data) -{ - - Serial.print(topic); - Serial.print(": "); - Serial.println(data); -} - - - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/keywords.txt b/lib/esp-mqtt-arduino-1.0.1.02.1/keywords.txt deleted file mode 100644 index 527b5bf0c40e..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/keywords.txt +++ /dev/null @@ -1,43 +0,0 @@ -####################################### -# Syntax Coloring Map For Test -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -MQTT.h KEYWORD1 - -MQTT KEYWORD1 - - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -setClientId KEYWORD2 -setUserPwd KEYWORD2 - -connect KEYWORD2 -disconnect KEYWORD2 -isConnected KEYWORD2 - -publish KEYWORD2 -subscribe KEYWORD2 - -getState KEYWORD2 - -#general -onConnected KEYWORD2 -onDisconnected KEYWORD2 -onPublished KEYWORD2 -onData KEYWORD2 - -####################################### -# Instances (KEYWORD2) -####################################### - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/library.properties b/lib/esp-mqtt-arduino-1.0.1.02.1/library.properties deleted file mode 100644 index 110da0ac4c5a..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=ESP MQTT -version=1.0.1 -author=Ingo Randolf -maintainer=Ingo Randolf -sentence=A Wrapper around mqtt for Arduino to be used with esp8266 modules. -paragraph=It wraps a slightly modified version of mqtt for esp8266 ported by Tuan PM. Original code for esp: https://github.com/tuanpmt/esp_mqtt (7ec2ef8e1df0422b77348fe1da7885568e0c9d01) Original code for contiki: https://github.com/esar/contiki-mqtt -category=Communication -url=https://github.com/i-n-g-o/esp-mqtt-arduino -architectures=esp8266 \ No newline at end of file diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.cpp b/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.cpp deleted file mode 100644 index b330bad4b697..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/*//------------------------------------------------------------------------------- - * MQTT.cpp - * - * Implementation file for MQTT Wrapper - * - * Wrapper for Arduino written by Ingo Randolf during - * eTextiles Summercamp 2015. - * - * This library is intended to be used with esp8266 modules. - * - * - * This class wraps a slightly modified version of mqtt - * for esp8266 written by Tuan PM. - * Original code: https://github.com/tuanpmt/esp_mqtt - * - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - //-------------------------------------------------------------------------------*/ -#include "MQTT.h" - -#include "user_interface.h" -#include "osapi.h" -#include "os_type.h" -#include "mqtt/debug.h" - - -//------------------------------------------------------------------------------------ -// mqtt internal callbacks -//------------------------------------------------------------------------------------ -static void mqttConnectedCb(uint32_t *args) -{ - MQTT_Client* client = (MQTT_Client*)args; - - MQTT* _this = (MQTT*)client->user_data; - - if (_this && _this->onMqttConnectedCb) { - _this->onMqttConnectedCb(); - } -} - -static void mqttDisconnectedCb(uint32_t *args) -{ - MQTT_Client* client = (MQTT_Client*)args; - - MQTT* _this = (MQTT*)client->user_data; - - if (_this && _this->onMqttDisconnectedCb) { - _this->onMqttDisconnectedCb(); - } -} - -static void mqttPublishedCb(uint32_t *args) -{ - MQTT_Client* client = (MQTT_Client*)args; - - MQTT* _this = (MQTT*)client->user_data; - - if (_this && _this->onMqttPublishedCb) { - _this->onMqttPublishedCb(); - } -} - -static void mqttDataCb(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t data_len) -{ - MQTT_Client* client = (MQTT_Client*)args; - - MQTT* _this = (MQTT*)client->user_data; - - if (_this) { - - _this->_onMqttDataCb(topic, topic_len, data, data_len); - } -} - -static void mqttTimeoutCb(uint32_t *args) -{ - MQTT_Client* client = (MQTT_Client*)args; - - MQTT* _this = (MQTT*)client->user_data; - -// if (_this && _this->onMqttTimeoutCb) { -// _this->onMqttTimeoutCb(); -// } -} - - -//------------------------------------------------------------------------------------ -// MQTT class implementation -//------------------------------------------------------------------------------------ - -//MQTT::MQTT(const char* client_id, const char* host, uint32_t port) : -MQTT::MQTT(const char* client_id, const char* host, uint32_t port, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage) : - onMqttConnectedCb(0) - ,onMqttDisconnectedCb(0) - ,onMqttPublishedCb(0) - ,onMqttDataCb(0) - ,onMqttDataRawCb(0) -{ - // init connections - MQTT_InitConnection(&mqttClient, (uint8_t*)host, port, 0); - - // init client - if ( !MQTT_InitClient(&mqttClient, (uint8_t*)client_id, (uint8_t*)"", (uint8_t*)"", 15, 1) ) { - MQTT_INFO("Failed to initialize properly. Check MQTT version.\r\n"); - } - - // init LWT -// MQTT_InitLWT(&mqttClient, (uint8_t*)"/lwt", (uint8_t*)"offline", 0, 0); - MQTT_InitLWT(&mqttClient, (uint8_t*)willTopic, (uint8_t*)willMessage, willQos, (uint8_t)willRetain); - - // set user data - mqttClient.user_data = (void*)this; - - // setup callbacks - MQTT_OnConnected(&mqttClient, mqttConnectedCb); - MQTT_OnDisconnected(&mqttClient, mqttDisconnectedCb); - MQTT_OnPublished(&mqttClient, mqttPublishedCb); - MQTT_OnData(&mqttClient, mqttDataCb); - - MQTT_OnTimeout(&mqttClient, mqttTimeoutCb); -} - - -MQTT::~MQTT() -{ - MQTT_DeleteClient(&mqttClient); -} - - -/* - */ -void MQTT::setClientId(const char* client_id) -{ - MQTT_SetUserId(&mqttClient, client_id); -} - -void MQTT::setUserPwd(const char* user, const char* pwd) -{ - MQTT_SetUserPwd(&mqttClient, user, pwd); -} - - -/* - */ -void MQTT::connect() -{ - MQTT_Connect(&mqttClient); -} - -void MQTT::disconnect() -{ - MQTT_Disconnect(&mqttClient); -} - -bool MQTT::isConnected() -{ - return (mqttClient.connState >= TCP_CONNECTED); -} - -/* - */ -bool MQTT::publish(const char* topic, const char* buf, uint32_t buf_len, int qos, int retain) -{ - return MQTT_Publish(&mqttClient, topic, buf, buf_len, qos, retain); -} - -bool MQTT::publish(String& topic, String& data, int qos, int retain) -{ - return publish(topic.c_str(), data.c_str(), data.length(), qos, retain); -} - -bool MQTT::publish(String& topic, const char* buf, uint32_t buf_len, int qos, int retain) -{ - return publish(topic.c_str(), buf, buf_len, qos, retain); -} - -bool MQTT::publish(const char* topic, String& data, int qos, int retain) -{ - return publish(topic, data.c_str(), data.length(), qos, retain); -} - - -/* - */ -bool MQTT::subscribe(const char* topic, uint8_t qos) -{ - return MQTT_Subscribe(&mqttClient, (char*)topic, qos); -} - -bool MQTT::subscribe(const String& topic, uint8_t qos) -{ - return MQTT_Subscribe(&mqttClient, (char*)topic.c_str(), qos); -} - - - -//------------------------------------------------------------------------------- -// set user callback functions -//------------------------------------------------------------------------------- -void MQTT::onConnected( void (*function)(void) ) -{ - onMqttConnectedCb = function; -} - -void MQTT::onDisconnected( void (*function)(void) ) -{ - onMqttDisconnectedCb = function; -} - -void MQTT::onPublished( void (*function)(void) ) -{ - onMqttPublishedCb = function; -} - -void MQTT::onData( void (*function)(String&, String&) ) -{ - onMqttDataCb = function; -} - -void MQTT::onData( void (*function)(const char*, uint32_t, const char*, uint32_t) ) -{ - onMqttDataRawCb = function; -} - - -// internal callback, calling user CB -void MQTT::_onMqttDataCb(const char* topic, uint32_t topic_len, const char* buf, uint32_t buf_len) -{ - if (onMqttDataRawCb) { - onMqttDataRawCb(topic, topic_len, buf, buf_len); - } - - if (onMqttDataCb) { - - char* topicCpy = (char*)malloc(topic_len+1); - memcpy(topicCpy, topic, topic_len); - topicCpy[topic_len] = 0; - // string it - String topicStr(topicCpy); - - char* bufCpy = (char*)malloc(buf_len+1); - memcpy(bufCpy, buf, buf_len); - bufCpy[buf_len] = 0; - // string it - String bufStr(bufCpy); - - onMqttDataCb(topicStr, bufStr); - - free(topicCpy); - free(bufCpy); - } -} - - - - - - - - - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.h deleted file mode 100644 index 8838ef482d9c..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/MQTT.h +++ /dev/null @@ -1,93 +0,0 @@ -/*//------------------------------------------------------------------------------- - * MQTT.h - * - * Header file for MQTT Wrapper - * - * Wrapper for Arduino written by Ingo Randolf during - * eTextiles Summercamp 2015. - * - * This library is intended to be used with esp8266 modules. - * - * - * This class wraps a slightly modified version of mqtt - * for esp8266 written by Tuan PM. - * Original code: https://github.com/tuanpmt/esp_mqtt - * - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - //-------------------------------------------------------------------------------*/ -#ifndef MQTT_WRAPPER_H -#define MQTT_WRAPPER_H - -#include - -#include -#include -#include -#include -#include - -extern "C" { - #include - #include "mqtt/mqtt.h" -} - -class MQTT -{ -public: -// MQTT(const char* client_id, const char* host, uint32_t port); - MQTT(const char* client_id, const char* host, uint32_t port, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage); - - ~MQTT(); - - void setClientId(const char* client_id); - void setUserPwd(const char* user, const char* pwd); - - void connect(); - void disconnect(); - bool isConnected(); - - bool publish(const char* topic, const char* buf, uint32_t buf_len, int qos = 0, int retain = 0); - bool publish(String& topic, String& data, int qos = 0, int retain = 0); - bool publish(String& topic, const char* buf, uint32_t buf_len, int qos = 0, int retain = 0); - bool publish(const char* topic, String& data, int qos = 0, int retain = 0); - - bool subscribe(const char* topic, uint8_t qos = 0); - bool subscribe(const String& topic, uint8_t qos = 0); - - int getState() { return mqttClient.connState; }; - - // set callbacks - void onConnected( void (*)(void) ); - void onDisconnected( void (*)(void) ); - void onPublished( void (*)(void) ); - void onData( void (*)(String&, String&) ); - void onData( void (*)(const char*, uint32_t, const char*, uint32_t) ); - - // user callbacks - void (*onMqttConnectedCb)(void); - void (*onMqttDisconnectedCb)(void); - void (*onMqttPublishedCb)(void); - void (*onMqttDataCb) (String&, String&); - void (*onMqttDataRawCb) (const char*, uint32_t, const char*, uint32_t); - - // internal callback - void _onMqttDataCb(const char*, uint32_t, const char*, uint32_t); - -private: - MQTT_Client mqttClient; - -}; - - - - -#endif \ No newline at end of file diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/debug.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/debug.h deleted file mode 100644 index f45dd6d8d868..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/debug.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * debug.h - * - * Created on: Dec 4, 2014 - * Author: Minh - */ - -#ifndef USER_DEBUG_H_ -#define USER_DEBUG_H_ - - -#if defined(MQTT_DEBUG_ON) -#define MQTT_INFO( format, ... ) os_printf( format, ## __VA_ARGS__ ) -#else -#define MQTT_INFO( format, ... ) -#endif - - -#endif /* USER_DEBUG_H_ */ diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.c deleted file mode 100644 index ed63d713a8ab..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.c +++ /dev/null @@ -1,1048 +0,0 @@ -/* mqtt.c -* Protocol: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html -* -* Copyright (c) 2014-2015, Tuan PM -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* -* * Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of Redis nor the names of its contributors may be used -* to endorse or promote products derived from this software without -* specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "user_interface.h" -#include "osapi.h" -#include "espconn.h" -#include "os_type.h" -#include "mem.h" -#include "mqtt_msg.h" -#include "debug.h" -#include "user_config.h" -#include "mqtt.h" -#include "queue.h" - -#define MQTT_TASK_PRIO 1 -#define MQTT_TASK_QUEUE_SIZE 1 -#define MQTT_SEND_TIMOUT 5 - -#ifndef MQTT_SSL_SIZE -#define MQTT_SSL_SIZE 5120 -#endif - -#ifndef QUEUE_BUFFER_SIZE -#define QUEUE_BUFFER_SIZE 2048 -#endif - - -os_event_t mqtt_procTaskQueue[MQTT_TASK_QUEUE_SIZE]; - -#ifdef PROTOCOL_NAMEv311 -LOCAL uint8_t zero_len_id[2] = { 0, 0 }; -#endif - -LOCAL void ICACHE_FLASH_ATTR -mqtt_dns_found(const char *name, ip_addr_t *ipaddr, void *arg) -{ - struct espconn *pConn = (struct espconn *)arg; - MQTT_Client* client = (MQTT_Client *)pConn->reverse; - - - if (ipaddr == NULL) - { - MQTT_INFO("DNS: Found, but got no ip, try to reconnect\r\n"); - client->connState = TCP_RECONNECT_REQ; - return; - } - - MQTT_INFO("DNS: found ip %d.%d.%d.%d\n", - *((uint8 *) &ipaddr->addr), - *((uint8 *) &ipaddr->addr + 1), - *((uint8 *) &ipaddr->addr + 2), - *((uint8 *) &ipaddr->addr + 3)); - - if (client->ip.addr == 0 && ipaddr->addr != 0) - { - os_memcpy(client->pCon->proto.tcp->remote_ip, &ipaddr->addr, 4); - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_set_size(ESPCONN_CLIENT, MQTT_SSL_SIZE); - espconn_secure_connect(client->pCon); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_connect(client->pCon); - } - - client->connState = TCP_CONNECTING; - MQTT_INFO("TCP: connecting...\r\n"); - } - - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); -} - - - -LOCAL void ICACHE_FLASH_ATTR -deliver_publish(MQTT_Client* client, uint8_t* message, int length) -{ - mqtt_event_data_t event_data; - - event_data.topic_length = length; - event_data.topic = mqtt_get_publish_topic(message, &event_data.topic_length); - event_data.data_length = length; - event_data.data = mqtt_get_publish_data(message, &event_data.data_length); - - if (client->dataCb) - client->dataCb((uint32_t*)client, event_data.topic, event_data.topic_length, event_data.data, event_data.data_length); - -} - -void ICACHE_FLASH_ATTR -mqtt_send_keepalive(MQTT_Client *client) -{ - MQTT_INFO("\r\nMQTT: Send keepalive packet to %s:%d!\r\n", client->host, client->port); - client->mqtt_state.outbound_message = mqtt_msg_pingreq(&client->mqtt_state.mqtt_connection); - client->mqtt_state.pending_msg_type = MQTT_MSG_TYPE_PINGREQ; - client->mqtt_state.pending_msg_type = mqtt_get_type(client->mqtt_state.outbound_message->data); - client->mqtt_state.pending_msg_id = mqtt_get_id(client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); - - - client->sendTimeout = MQTT_SEND_TIMOUT; - MQTT_INFO("MQTT: Sending, type: %d, id: %04X\r\n", client->mqtt_state.pending_msg_type, client->mqtt_state.pending_msg_id); - err_t result = ESPCONN_OK; - if (client->security) { -#ifdef MQTT_SSL_ENABLE - result = espconn_secure_send(client->pCon, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - result = espconn_send(client->pCon, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); - } - - client->mqtt_state.outbound_message = NULL; - if (ESPCONN_OK == result) { - client->keepAliveTick = 0; - client->connState = MQTT_DATA; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - } - else { - client->connState = TCP_RECONNECT_DISCONNECTING; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - } -} - -/** - * @brief Delete tcp client and free all memory - * @param mqttClient: The mqtt client which contain TCP client - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_tcpclient_delete(MQTT_Client *mqttClient) -{ - if (mqttClient->pCon != NULL) { - MQTT_INFO("TCP: Free memory\r\n"); - // Force abort connections - espconn_abort(mqttClient->pCon); - // Delete connections - espconn_delete(mqttClient->pCon); - - if (mqttClient->pCon->proto.tcp) { - os_free(mqttClient->pCon->proto.tcp); - mqttClient->pCon->proto.tcp = NULL; - } - os_free(mqttClient->pCon); - mqttClient->pCon = NULL; - } -} - -/** - * @brief Delete MQTT client and free all memory - * @param mqttClient: The mqtt client - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_client_delete(MQTT_Client *mqttClient) -{ - if (mqttClient == NULL) - return; - - if (mqttClient->pCon != NULL) { - mqtt_tcpclient_delete(mqttClient); - } - - if (mqttClient->host != NULL) { - os_free(mqttClient->host); - mqttClient->host = NULL; - } - - if (mqttClient->user_data != NULL) { - os_free(mqttClient->user_data); - mqttClient->user_data = NULL; - } - - if (mqttClient->mqtt_state.in_buffer != NULL) { - os_free(mqttClient->mqtt_state.in_buffer); - mqttClient->mqtt_state.in_buffer = NULL; - } - - if (mqttClient->mqtt_state.out_buffer != NULL) { - os_free(mqttClient->mqtt_state.out_buffer); - mqttClient->mqtt_state.out_buffer = NULL; - } - - if (mqttClient->mqtt_state.outbound_message != NULL) { - if (mqttClient->mqtt_state.outbound_message->data != NULL) - { - os_free(mqttClient->mqtt_state.outbound_message->data); - mqttClient->mqtt_state.outbound_message->data = NULL; - } - } - - if (mqttClient->mqtt_state.mqtt_connection.buffer != NULL) { - // Already freed but not NULL - mqttClient->mqtt_state.mqtt_connection.buffer = NULL; - } - - if (mqttClient->connect_info.client_id != NULL) { -#ifdef PROTOCOL_NAMEv311 - /* Don't attempt to free if it's the zero_len array */ - if ( ((uint8_t*)mqttClient->connect_info.client_id) != zero_len_id ) - os_free(mqttClient->connect_info.client_id); -#else - os_free(mqttClient->connect_info.client_id); -#endif - mqttClient->connect_info.client_id = NULL; - } - - if (mqttClient->connect_info.username != NULL) { - os_free(mqttClient->connect_info.username); - mqttClient->connect_info.username = NULL; - } - - if (mqttClient->connect_info.password != NULL) { - os_free(mqttClient->connect_info.password); - mqttClient->connect_info.password = NULL; - } - - if (mqttClient->connect_info.will_topic != NULL) { - os_free(mqttClient->connect_info.will_topic); - mqttClient->connect_info.will_topic = NULL; - } - - if (mqttClient->connect_info.will_message != NULL) { - os_free(mqttClient->connect_info.will_message); - mqttClient->connect_info.will_message = NULL; - } - - if (mqttClient->msgQueue.buf != NULL) { - os_free(mqttClient->msgQueue.buf); - mqttClient->msgQueue.buf = NULL; - } - - // Initialize state - mqttClient->connState = WIFI_INIT; - // Clear callback functions to avoid abnormal callback - mqttClient->connectedCb = NULL; - mqttClient->disconnectedCb = NULL; - mqttClient->publishedCb = NULL; - mqttClient->timeoutCb = NULL; - mqttClient->dataCb = NULL; - - MQTT_INFO("MQTT: client already deleted\r\n"); -} - - -/** - * @brief Client received callback function. - * @param arg: contain the ip link information - * @param pdata: received data - * @param len: the lenght of received data - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_tcpclient_recv(void *arg, char *pdata, unsigned short len) -{ - uint8_t msg_type; - uint8_t msg_qos; - uint16_t msg_id; - uint8_t msg_conn_ret; - - struct espconn *pCon = (struct espconn*)arg; - MQTT_Client *client = (MQTT_Client *)pCon->reverse; - -READPACKET: - MQTT_INFO("TCP: data received %d bytes\r\n", len); - // MQTT_INFO("STATE: %d\r\n", client->connState); - if (len < MQTT_BUF_SIZE && len > 0) { - os_memcpy(client->mqtt_state.in_buffer, pdata, len); - - msg_type = mqtt_get_type(client->mqtt_state.in_buffer); - msg_qos = mqtt_get_qos(client->mqtt_state.in_buffer); - msg_id = mqtt_get_id(client->mqtt_state.in_buffer, client->mqtt_state.in_buffer_length); - switch (client->connState) { - case MQTT_CONNECT_SENDING: - if (msg_type == MQTT_MSG_TYPE_CONNACK) { - if (client->mqtt_state.pending_msg_type != MQTT_MSG_TYPE_CONNECT) { - MQTT_INFO("MQTT: Invalid packet\r\n"); - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_disconnect(client->pCon); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_disconnect(client->pCon); - } - } else { - msg_conn_ret = mqtt_get_connect_return_code(client->mqtt_state.in_buffer); - switch (msg_conn_ret) { - case CONNECTION_ACCEPTED: - MQTT_INFO("MQTT: Connected to %s:%d\r\n", client->host, client->port); - client->connState = MQTT_DATA; - if (client->connectedCb) - client->connectedCb((uint32_t*)client); - break; - case CONNECTION_REFUSE_PROTOCOL: - case CONNECTION_REFUSE_SERVER_UNAVAILABLE: - case CONNECTION_REFUSE_BAD_USERNAME: - case CONNECTION_REFUSE_NOT_AUTHORIZED: - MQTT_INFO("MQTT: Connection refuse, reason code: %d\r\n", msg_conn_ret); - default: - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_disconnect(client->pCon); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_disconnect(client->pCon); - } - - } - - } - - } - break; - case MQTT_DATA: - case MQTT_KEEPALIVE_SEND: - client->mqtt_state.message_length_read = len; - client->mqtt_state.message_length = mqtt_get_total_length(client->mqtt_state.in_buffer, client->mqtt_state.message_length_read); - - - switch (msg_type) - { - - case MQTT_MSG_TYPE_SUBACK: - if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_SUBSCRIBE && client->mqtt_state.pending_msg_id == msg_id) - MQTT_INFO("MQTT: Subscribe successful\r\n"); - break; - case MQTT_MSG_TYPE_UNSUBACK: - if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_UNSUBSCRIBE && client->mqtt_state.pending_msg_id == msg_id) - MQTT_INFO("MQTT: UnSubscribe successful\r\n"); - break; - case MQTT_MSG_TYPE_PUBLISH: - if (msg_qos == 1) - client->mqtt_state.outbound_message = mqtt_msg_puback(&client->mqtt_state.mqtt_connection, msg_id); - else if (msg_qos == 2) - client->mqtt_state.outbound_message = mqtt_msg_pubrec(&client->mqtt_state.mqtt_connection, msg_id); - if (msg_qos == 1 || msg_qos == 2) { - MQTT_INFO("MQTT: Queue response QoS: %d\r\n", msg_qos); - if (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - } - } - - deliver_publish(client, client->mqtt_state.in_buffer, client->mqtt_state.message_length_read); - break; - case MQTT_MSG_TYPE_PUBACK: - if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_PUBLISH && client->mqtt_state.pending_msg_id == msg_id) { - MQTT_INFO("MQTT: received MQTT_MSG_TYPE_PUBACK, finish QoS1 publish\r\n"); - } - - break; - case MQTT_MSG_TYPE_PUBREC: - client->mqtt_state.outbound_message = mqtt_msg_pubrel(&client->mqtt_state.mqtt_connection, msg_id); - if (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - } - break; - case MQTT_MSG_TYPE_PUBREL: - client->mqtt_state.outbound_message = mqtt_msg_pubcomp(&client->mqtt_state.mqtt_connection, msg_id); - if (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - } - break; - case MQTT_MSG_TYPE_PUBCOMP: - if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_PUBLISH && client->mqtt_state.pending_msg_id == msg_id) { - MQTT_INFO("MQTT: receive MQTT_MSG_TYPE_PUBCOMP, finish QoS2 publish\r\n"); - } - break; - case MQTT_MSG_TYPE_PINGREQ: - client->mqtt_state.outbound_message = mqtt_msg_pingresp(&client->mqtt_state.mqtt_connection); - if (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - } - break; - case MQTT_MSG_TYPE_PINGRESP: - // Ignore - break; - } - // NOTE: this is done down here and not in the switch case above - // because the PSOCK_READBUF_LEN() won't work inside a switch - // statement due to the way protothreads resume. - if (msg_type == MQTT_MSG_TYPE_PUBLISH) - { - len = client->mqtt_state.message_length_read; - - if (client->mqtt_state.message_length < client->mqtt_state.message_length_read) - { - //client->connState = MQTT_PUBLISH_RECV; - //Not Implement yet - len -= client->mqtt_state.message_length; - pdata += client->mqtt_state.message_length; - - MQTT_INFO("Get another published message\r\n"); - goto READPACKET; - } - - } - break; - } - } else { - MQTT_INFO("ERROR: Message too long\r\n"); - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); -} - -/** - * @brief Client send over callback function. - * @param arg: contain the ip link information - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_tcpclient_sent_cb(void *arg) -{ - struct espconn *pCon = (struct espconn *)arg; - MQTT_Client* client = (MQTT_Client *)pCon->reverse; - MQTT_INFO("TCP: Sent\r\n"); - client->sendTimeout = 0; - client->keepAliveTick = 0; - - if ((client->connState == MQTT_DATA || client->connState == MQTT_KEEPALIVE_SEND) - && client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_PUBLISH) { - if (client->publishedCb) - client->publishedCb((uint32_t*)client); - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); -} - -void ICACHE_FLASH_ATTR mqtt_timer(void *arg) -{ - MQTT_Client* client = (MQTT_Client*)arg; - - if (client->connState == MQTT_DATA) { - client->keepAliveTick ++; - if (client->keepAliveTick > (client->mqtt_state.connect_info->keepalive / 2)) { - client->connState = MQTT_KEEPALIVE_SEND; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - } - - } else if (client->connState == TCP_RECONNECT_REQ) { - client->reconnectTick ++; - if (client->reconnectTick > MQTT_RECONNECT_TIMEOUT) { - client->reconnectTick = 0; - client->connState = TCP_RECONNECT; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - if (client->timeoutCb) - client->timeoutCb((uint32_t*)client); - } - } - if (client->sendTimeout > 0) - client->sendTimeout --; -} - -void ICACHE_FLASH_ATTR -mqtt_tcpclient_discon_cb(void *arg) -{ - - struct espconn *pespconn = (struct espconn *)arg; - MQTT_Client* client = (MQTT_Client *)pespconn->reverse; - MQTT_INFO("TCP: Disconnected callback\r\n"); - if (TCP_DISCONNECTING == client->connState) { - client->connState = TCP_DISCONNECTED; - } - else if (MQTT_DELETING == client->connState) { - client->connState = MQTT_DELETED; - } - else { - client->connState = TCP_RECONNECT_REQ; - } - if (client->disconnectedCb) - client->disconnectedCb((uint32_t*)client); - - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); -} - - - -/** - * @brief Tcp client connect success callback function. - * @param arg: contain the ip link information - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_tcpclient_connect_cb(void *arg) -{ - struct espconn *pCon = (struct espconn *)arg; - MQTT_Client* client = (MQTT_Client *)pCon->reverse; - - espconn_regist_disconcb(client->pCon, mqtt_tcpclient_discon_cb); - espconn_regist_recvcb(client->pCon, mqtt_tcpclient_recv);//////// - espconn_regist_sentcb(client->pCon, mqtt_tcpclient_sent_cb);/////// - MQTT_INFO("MQTT: Connected to broker %s:%d\r\n", client->host, client->port); - - mqtt_msg_init(&client->mqtt_state.mqtt_connection, client->mqtt_state.out_buffer, client->mqtt_state.out_buffer_length); - client->mqtt_state.outbound_message = mqtt_msg_connect(&client->mqtt_state.mqtt_connection, client->mqtt_state.connect_info); - client->mqtt_state.pending_msg_type = mqtt_get_type(client->mqtt_state.outbound_message->data); - client->mqtt_state.pending_msg_id = mqtt_get_id(client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); - - - client->sendTimeout = MQTT_SEND_TIMOUT; - MQTT_INFO("MQTT: Sending, type: %d, id: %04X\r\n", client->mqtt_state.pending_msg_type, client->mqtt_state.pending_msg_id); - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_send(client->pCon, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_send(client->pCon, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length); - } - - client->mqtt_state.outbound_message = NULL; - client->connState = MQTT_CONNECT_SENDING; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); -} - -/** - * @brief Tcp client connect repeat callback function. - * @param arg: contain the ip link information - * @retval None - */ -void ICACHE_FLASH_ATTR -mqtt_tcpclient_recon_cb(void *arg, sint8 errType) -{ - struct espconn *pCon = (struct espconn *)arg; - MQTT_Client* client = (MQTT_Client *)pCon->reverse; - - MQTT_INFO("TCP: Reconnect to %s:%d\r\n", client->host, client->port); - - client->connState = TCP_RECONNECT_REQ; - - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - -} - -/** - * @brief MQTT publish function. - * @param client: MQTT_Client reference - * @param topic: string topic will publish to - * @param data: buffer data send point to - * @param data_length: length of data - * @param qos: qos - * @param retain: retain - * @retval TRUE if success queue - */ -BOOL ICACHE_FLASH_ATTR -MQTT_Publish(MQTT_Client *client, const char* topic, const char* data, int data_length, int qos, int retain) -{ - uint8_t dataBuffer[MQTT_BUF_SIZE]; - uint16_t dataLen; - client->mqtt_state.outbound_message = mqtt_msg_publish(&client->mqtt_state.mqtt_connection, - topic, data, data_length, - qos, retain, - &client->mqtt_state.pending_msg_id); - if (client->mqtt_state.outbound_message->length == 0) { - MQTT_INFO("MQTT: Queuing publish failed\r\n"); - return FALSE; - } - MQTT_INFO("MQTT: queuing publish, length: %d, queue size(%d/%d)\r\n", client->mqtt_state.outbound_message->length, client->msgQueue.rb.fill_cnt, client->msgQueue.rb.size); - while (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - if (QUEUE_Gets(&client->msgQueue, dataBuffer, &dataLen, MQTT_BUF_SIZE) == -1) { - MQTT_INFO("MQTT: Serious buffer error\r\n"); - return FALSE; - } - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - return TRUE; -} - -/** - * @brief MQTT subscibe function. - * @param client: MQTT_Client reference - * @param topic: string topic will subscribe - * @param qos: qos - * @retval TRUE if success queue - */ -BOOL ICACHE_FLASH_ATTR -MQTT_Subscribe(MQTT_Client *client, char* topic, uint8_t qos) -{ - uint8_t dataBuffer[MQTT_BUF_SIZE]; - uint16_t dataLen; - - client->mqtt_state.outbound_message = mqtt_msg_subscribe(&client->mqtt_state.mqtt_connection, - topic, qos, - &client->mqtt_state.pending_msg_id); - MQTT_INFO("MQTT: queue subscribe, topic\"%s\", id: %d\r\n", topic, client->mqtt_state.pending_msg_id); - while (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - if (QUEUE_Gets(&client->msgQueue, dataBuffer, &dataLen, MQTT_BUF_SIZE) == -1) { - MQTT_INFO("MQTT: Serious buffer error\r\n"); - return FALSE; - } - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - - return TRUE; -} - -/** - * @brief MQTT un-subscibe function. - * @param client: MQTT_Client reference - * @param topic: String topic will un-subscribe - * @retval TRUE if success queue - */ -BOOL ICACHE_FLASH_ATTR -MQTT_UnSubscribe(MQTT_Client *client, char* topic) -{ - uint8_t dataBuffer[MQTT_BUF_SIZE]; - uint16_t dataLen; - client->mqtt_state.outbound_message = mqtt_msg_unsubscribe(&client->mqtt_state.mqtt_connection, - topic, - &client->mqtt_state.pending_msg_id); - MQTT_INFO("MQTT: queue un-subscribe, topic\"%s\", id: %d\r\n", topic, client->mqtt_state.pending_msg_id); - while (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - if (QUEUE_Gets(&client->msgQueue, dataBuffer, &dataLen, MQTT_BUF_SIZE) == -1) { - MQTT_INFO("MQTT: Serious buffer error\r\n"); - return FALSE; - } - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - return TRUE; -} - -/** - * @brief MQTT ping function. - * @param client: MQTT_Client reference - * @retval TRUE if success queue - */ -BOOL ICACHE_FLASH_ATTR -MQTT_Ping(MQTT_Client *client) -{ - uint8_t dataBuffer[MQTT_BUF_SIZE]; - uint16_t dataLen; - client->mqtt_state.outbound_message = mqtt_msg_pingreq(&client->mqtt_state.mqtt_connection); - if (client->mqtt_state.outbound_message->length == 0) { - MQTT_INFO("MQTT: Queuing publish failed\r\n"); - return FALSE; - } - MQTT_INFO("MQTT: queuing publish, length: %d, queue size(%d/%d)\r\n", client->mqtt_state.outbound_message->length, client->msgQueue.rb.fill_cnt, client->msgQueue.rb.size); - while (QUEUE_Puts(&client->msgQueue, client->mqtt_state.outbound_message->data, client->mqtt_state.outbound_message->length) == -1) { - MQTT_INFO("MQTT: Queue full\r\n"); - if (QUEUE_Gets(&client->msgQueue, dataBuffer, &dataLen, MQTT_BUF_SIZE) == -1) { - MQTT_INFO("MQTT: Serious buffer error\r\n"); - return FALSE; - } - } - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)client); - return TRUE; -} - -void ICACHE_FLASH_ATTR -MQTT_Task(os_event_t *e) -{ - MQTT_Client* client = (MQTT_Client*)e->par; - uint8_t dataBuffer[MQTT_BUF_SIZE]; - uint16_t dataLen; - if (e->par == 0) - return; - switch (client->connState) { - - case TCP_RECONNECT_REQ: - break; - case TCP_RECONNECT: - mqtt_tcpclient_delete(client); - MQTT_Connect(client); - MQTT_INFO("TCP: Reconnect to: %s:%d\r\n", client->host, client->port); - client->connState = TCP_CONNECTING; - break; - case MQTT_DELETING: - case TCP_DISCONNECTING: - case TCP_RECONNECT_DISCONNECTING: - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_disconnect(client->pCon); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_disconnect(client->pCon); - } - break; - case TCP_DISCONNECTED: - MQTT_INFO("MQTT: Disconnected\r\n"); - mqtt_tcpclient_delete(client); - break; - case MQTT_DELETED: - MQTT_INFO("MQTT: Deleted client\r\n"); - mqtt_client_delete(client); - break; - case MQTT_KEEPALIVE_SEND: - mqtt_send_keepalive(client); - break; - case MQTT_DATA: - if (QUEUE_IsEmpty(&client->msgQueue) || client->sendTimeout != 0) { - break; - } - if (QUEUE_Gets(&client->msgQueue, dataBuffer, &dataLen, MQTT_BUF_SIZE) == 0) { - client->mqtt_state.pending_msg_type = mqtt_get_type(dataBuffer); - client->mqtt_state.pending_msg_id = mqtt_get_id(dataBuffer, dataLen); - - - client->sendTimeout = MQTT_SEND_TIMOUT; - MQTT_INFO("MQTT: Sending, type: %d, id: %04X\r\n", client->mqtt_state.pending_msg_type, client->mqtt_state.pending_msg_id); - client->keepAliveTick = 0; - if (client->security) { -#ifdef MQTT_SSL_ENABLE - espconn_secure_send(client->pCon, dataBuffer, dataLen); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else { - espconn_send(client->pCon, dataBuffer, dataLen); - } - - client->mqtt_state.outbound_message = NULL; - break; - } - break; - } -} - -/** - * @brief MQTT initialization connection function - * @param client: MQTT_Client reference - * @param host: Domain or IP string - * @param port: Port to connect - * @param security: 1 for ssl, 0 for none - * @retval None - */ -void ICACHE_FLASH_ATTR -MQTT_InitConnection(MQTT_Client *mqttClient, uint8_t* host, uint32_t port, uint8_t security) -{ - uint32_t temp; - MQTT_INFO("MQTT:InitConnection\r\n"); - os_memset(mqttClient, 0, sizeof(MQTT_Client)); - temp = os_strlen(host); - mqttClient->host = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->host, host); - mqttClient->host[temp] = 0; - mqttClient->port = port; - mqttClient->security = security; - -} - -/** - * @brief MQTT initialization mqtt client function - * @param client: MQTT_Client reference - * @param clientid: MQTT client id - * @param client_user:MQTT client user - * @param client_pass:MQTT client password - * @param client_pass:MQTT keep alive timer, in second - * @retval None - */ -BOOL ICACHE_FLASH_ATTR -MQTT_InitClient(MQTT_Client *mqttClient, uint8_t* client_id, uint8_t* client_user, uint8_t* client_pass, uint32_t keepAliveTime, uint8_t cleanSession) -{ - uint32_t temp; - MQTT_INFO("MQTT:InitClient\r\n"); - - os_memset(&mqttClient->connect_info, 0, sizeof(mqtt_connect_info_t)); - - if ( !client_id ) - { - /* Should be allowed by broker, but clean session flag must be set. */ - #ifdef PROTOCOL_NAMEv311 - if (cleanSession) - { - mqttClient->connect_info.client_id = zero_len_id; - } else { - MQTT_INFO("cleanSession must be set to use 0 length client_id\r\n"); - return false; - } - /* Not supported. Return. */ - #else - MQTT_INFO("Client ID required for MQTT < 3.1.1!\r\n"); - return false; - #endif - } - - /* If connect_info's client_id is still NULL and we get here, we can * - * assume the passed client_id is non-NULL. */ - if ( !(mqttClient->connect_info.client_id) ) - { - temp = os_strlen(client_id); - mqttClient->connect_info.client_id = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->connect_info.client_id, client_id); - mqttClient->connect_info.client_id[temp] = 0; - } - - if (client_user) - { - temp = os_strlen(client_user); - mqttClient->connect_info.username = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->connect_info.username, client_user); - mqttClient->connect_info.username[temp] = 0; - } - - if (client_pass) - { - temp = os_strlen(client_pass); - mqttClient->connect_info.password = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->connect_info.password, client_pass); - mqttClient->connect_info.password[temp] = 0; - } - - - mqttClient->connect_info.keepalive = keepAliveTime; - mqttClient->connect_info.clean_session = cleanSession; - - mqttClient->mqtt_state.in_buffer = (uint8_t *)os_zalloc(MQTT_BUF_SIZE); - mqttClient->mqtt_state.in_buffer_length = MQTT_BUF_SIZE; - mqttClient->mqtt_state.out_buffer = (uint8_t *)os_zalloc(MQTT_BUF_SIZE); - mqttClient->mqtt_state.out_buffer_length = MQTT_BUF_SIZE; - mqttClient->mqtt_state.connect_info = &mqttClient->connect_info; - - mqtt_msg_init(&mqttClient->mqtt_state.mqtt_connection, mqttClient->mqtt_state.out_buffer, mqttClient->mqtt_state.out_buffer_length); - - QUEUE_Init(&mqttClient->msgQueue, QUEUE_BUFFER_SIZE); - - system_os_task(MQTT_Task, MQTT_TASK_PRIO, mqtt_procTaskQueue, MQTT_TASK_QUEUE_SIZE); - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)mqttClient); - return true; -} -void ICACHE_FLASH_ATTR -MQTT_InitLWT(MQTT_Client *mqttClient, uint8_t* will_topic, uint8_t* will_msg, uint8_t will_qos, uint8_t will_retain) -{ - uint32_t temp; - temp = os_strlen(will_topic); - mqttClient->connect_info.will_topic = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->connect_info.will_topic, will_topic); - mqttClient->connect_info.will_topic[temp] = 0; - - temp = os_strlen(will_msg); - mqttClient->connect_info.will_message = (uint8_t*)os_zalloc(temp + 1); - os_strcpy(mqttClient->connect_info.will_message, will_msg); - mqttClient->connect_info.will_message[temp] = 0; - - - mqttClient->connect_info.will_qos = will_qos; - mqttClient->connect_info.will_retain = will_retain; -} -/** - * @brief Begin connect to MQTT broker - * @param client: MQTT_Client reference - * @retval None - */ -void ICACHE_FLASH_ATTR -MQTT_Connect(MQTT_Client *mqttClient) -{ - if (mqttClient->pCon) { - // Clean up the old connection forcefully - using MQTT_Disconnect - // does not actually release the old connection until the - // disconnection callback is invoked. - mqtt_tcpclient_delete(mqttClient); - } - mqttClient->pCon = (struct espconn *)os_zalloc(sizeof(struct espconn)); - mqttClient->pCon->type = ESPCONN_TCP; - mqttClient->pCon->state = ESPCONN_NONE; - mqttClient->pCon->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp)); - mqttClient->pCon->proto.tcp->local_port = espconn_port(); - mqttClient->pCon->proto.tcp->remote_port = mqttClient->port; - mqttClient->pCon->reverse = mqttClient; - espconn_regist_connectcb(mqttClient->pCon, mqtt_tcpclient_connect_cb); - espconn_regist_reconcb(mqttClient->pCon, mqtt_tcpclient_recon_cb); - - mqttClient->keepAliveTick = 0; - mqttClient->reconnectTick = 0; - - - os_timer_disarm(&mqttClient->mqttTimer); - os_timer_setfn(&mqttClient->mqttTimer, (os_timer_func_t *)mqtt_timer, mqttClient); - os_timer_arm(&mqttClient->mqttTimer, 1000, 1); - - if (UTILS_StrToIP(mqttClient->host, &mqttClient->pCon->proto.tcp->remote_ip)) { - MQTT_INFO("TCP: Connect to ip %s:%d\r\n", mqttClient->host, mqttClient->port); - if (mqttClient->security) - { -#ifdef MQTT_SSL_ENABLE - espconn_secure_set_size(ESPCONN_CLIENT, MQTT_SSL_SIZE); - espconn_secure_connect(mqttClient->pCon); -#else - MQTT_INFO("TCP: Do not support SSL\r\n"); -#endif - } - else - { - espconn_connect(mqttClient->pCon); - } - } - else { - MQTT_INFO("TCP: Connect to domain %s:%d\r\n", mqttClient->host, mqttClient->port); - espconn_gethostbyname(mqttClient->pCon, mqttClient->host, &mqttClient->ip, mqtt_dns_found); - } - mqttClient->connState = TCP_CONNECTING; -} - -void ICACHE_FLASH_ATTR -MQTT_Disconnect(MQTT_Client *mqttClient) -{ - mqttClient->connState = TCP_DISCONNECTING; - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)mqttClient); - os_timer_disarm(&mqttClient->mqttTimer); -} - -void ICACHE_FLASH_ATTR -MQTT_DeleteClient(MQTT_Client *mqttClient) -{ - if (NULL == mqttClient) - return; - - mqttClient->connState = MQTT_DELETED; - // if(TCP_DISCONNECTED == mqttClient->connState) { - // mqttClient->connState = MQTT_DELETED; - // } else if(MQTT_DELETED != mqttClient->connState) { - // mqttClient->connState = MQTT_DELETING; - // } - - system_os_post(MQTT_TASK_PRIO, 0, (os_param_t)mqttClient); - os_timer_disarm(&mqttClient->mqttTimer); -} - -void ICACHE_FLASH_ATTR -MQTT_OnConnected(MQTT_Client *mqttClient, MqttCallback connectedCb) -{ - mqttClient->connectedCb = connectedCb; -} - -void ICACHE_FLASH_ATTR -MQTT_OnDisconnected(MQTT_Client *mqttClient, MqttCallback disconnectedCb) -{ - mqttClient->disconnectedCb = disconnectedCb; -} - -void ICACHE_FLASH_ATTR -MQTT_OnData(MQTT_Client *mqttClient, MqttDataCallback dataCb) -{ - mqttClient->dataCb = dataCb; -} - -void ICACHE_FLASH_ATTR -MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb) -{ - mqttClient->publishedCb = publishedCb; -} - -void ICACHE_FLASH_ATTR -MQTT_OnTimeout(MQTT_Client *mqttClient, MqttCallback timeoutCb) -{ - mqttClient->timeoutCb = timeoutCb; -} - - - -void ICACHE_FLASH_ATTR -MQTT_SetUserId(MQTT_Client *mqttClient, const char* client_id) -{ - if (mqttClient->connect_info.client_id != 0) { - os_free(mqttClient->connect_info.client_id); - mqttClient->connect_info.client_id = 0; - } - - - uint32_t len = os_strlen(client_id); - - mqttClient->connect_info.client_id = (uint8_t*)os_zalloc(len + 1); - if (len) { - os_strcpy(mqttClient->connect_info.client_id, client_id); - } - mqttClient->connect_info.client_id[len] = 0; -} - -void ICACHE_FLASH_ATTR -MQTT_SetUserPwd(MQTT_Client *mqttClient, const char* user, const char* pwd) -{ - uint32_t len; - - // free username - if (mqttClient->connect_info.username != 0) { - os_free(mqttClient->connect_info.username); - mqttClient->connect_info.username = 0; - } - // free password - if (mqttClient->connect_info.password != 0) { - os_free(mqttClient->connect_info.password); - mqttClient->connect_info.password = 0; - } - - - // copy username - len = os_strlen(user); - mqttClient->connect_info.username = (uint8_t*)os_zalloc(len + 1); - if (len) { - os_strcpy(mqttClient->connect_info.username, user); - } - mqttClient->connect_info.username[len] = 0; - - - // copy password - len = os_strlen(pwd); - mqttClient->connect_info.password = (uint8_t*)os_zalloc(len + 1); - if (len) { - os_strcpy(mqttClient->connect_info.password, pwd); - } - mqttClient->connect_info.password[len] = 0; - -} - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.h deleted file mode 100644 index 6ef619433344..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt.h +++ /dev/null @@ -1,152 +0,0 @@ -/* mqtt.h -* -* Copyright (c) 2014-2015, Tuan PM -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* -* * Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of Redis nor the names of its contributors may be used -* to endorse or promote products derived from this software without -* specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef USER_AT_MQTT_H_ -#define USER_AT_MQTT_H_ -#include "mqtt_config.h" -#include "mqtt_msg.h" -#include "user_interface.h" - -#include "queue.h" -typedef struct mqtt_event_data_t -{ - uint8_t type; - const char* topic; - const char* data; - uint16_t topic_length; - uint16_t data_length; - uint16_t data_offset; -} mqtt_event_data_t; - -typedef struct mqtt_state_t -{ - uint16_t port; - int auto_reconnect; - mqtt_connect_info_t* connect_info; - uint8_t* in_buffer; - uint8_t* out_buffer; - int in_buffer_length; - int out_buffer_length; - uint16_t message_length; - uint16_t message_length_read; - mqtt_message_t* outbound_message; - mqtt_connection_t mqtt_connection; - uint16_t pending_msg_id; - int pending_msg_type; - int pending_publish_qos; -} mqtt_state_t; - -typedef enum { - WIFI_INIT, - WIFI_CONNECTING, - WIFI_CONNECTING_ERROR, - WIFI_CONNECTED, - DNS_RESOLVE, - TCP_DISCONNECTING, - TCP_DISCONNECTED, - TCP_RECONNECT_DISCONNECTING, - TCP_RECONNECT_REQ, - TCP_RECONNECT, - TCP_CONNECTING, - TCP_CONNECTING_ERROR, - TCP_CONNECTED, - MQTT_CONNECT_SEND, - MQTT_CONNECT_SENDING, - MQTT_SUBSCIBE_SEND, - MQTT_SUBSCIBE_SENDING, - MQTT_DATA, - MQTT_KEEPALIVE_SEND, - MQTT_PUBLISH_RECV, - MQTT_PUBLISHING, - MQTT_DELETING, - MQTT_DELETED, -} tConnState; - -typedef void (*MqttCallback)(uint32_t *args); -typedef void (*MqttDataCallback)(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t lengh); - -typedef struct { - struct espconn *pCon; - uint8_t security; - uint8_t* host; - uint32_t port; - ip_addr_t ip; - mqtt_state_t mqtt_state; - mqtt_connect_info_t connect_info; - MqttCallback connectedCb; - MqttCallback disconnectedCb; - MqttCallback publishedCb; - MqttCallback timeoutCb; - MqttDataCallback dataCb; - ETSTimer mqttTimer; - uint32_t keepAliveTick; - uint32_t reconnectTick; - uint32_t sendTimeout; - tConnState connState; - QUEUE msgQueue; - void* user_data; -} MQTT_Client; - -#define SEC_NONSSL 0 -#define SEC_SSL 1 - -#define MQTT_FLAG_CONNECTED 1 -#define MQTT_FLAG_READY 2 -#define MQTT_FLAG_EXIT 4 - -#define MQTT_EVENT_TYPE_NONE 0 -#define MQTT_EVENT_TYPE_CONNECTED 1 -#define MQTT_EVENT_TYPE_DISCONNECTED 2 -#define MQTT_EVENT_TYPE_SUBSCRIBED 3 -#define MQTT_EVENT_TYPE_UNSUBSCRIBED 4 -#define MQTT_EVENT_TYPE_PUBLISH 5 -#define MQTT_EVENT_TYPE_PUBLISHED 6 -#define MQTT_EVENT_TYPE_EXITED 7 -#define MQTT_EVENT_TYPE_PUBLISH_CONTINUATION 8 - -void ICACHE_FLASH_ATTR MQTT_InitConnection(MQTT_Client *mqttClient, uint8_t* host, uint32_t port, uint8_t security); -bool ICACHE_FLASH_ATTR MQTT_InitClient(MQTT_Client *mqttClient, uint8_t* client_id, uint8_t* client_user, uint8_t* client_pass, uint32_t keepAliveTime, uint8_t cleanSession); -void ICACHE_FLASH_ATTR MQTT_DeleteClient(MQTT_Client *mqttClient); -void ICACHE_FLASH_ATTR MQTT_InitLWT(MQTT_Client *mqttClient, uint8_t* will_topic, uint8_t* will_msg, uint8_t will_qos, uint8_t will_retain); - -void ICACHE_FLASH_ATTR MQTT_SetUserId(MQTT_Client *mqttClient, const char* client_id); -void ICACHE_FLASH_ATTR MQTT_SetUserPwd(MQTT_Client *mqttClient, const char* user_id, const char* pwd); - -void ICACHE_FLASH_ATTR MQTT_OnConnected(MQTT_Client *mqttClient, MqttCallback connectedCb); -void ICACHE_FLASH_ATTR MQTT_OnDisconnected(MQTT_Client *mqttClient, MqttCallback disconnectedCb); -void ICACHE_FLASH_ATTR MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb); -void ICACHE_FLASH_ATTR MQTT_OnTimeout(MQTT_Client *mqttClient, MqttCallback timeoutCb); -void ICACHE_FLASH_ATTR MQTT_OnData(MQTT_Client *mqttClient, MqttDataCallback dataCb); -bool ICACHE_FLASH_ATTR MQTT_Subscribe(MQTT_Client *client, char* topic, uint8_t qos); -bool ICACHE_FLASH_ATTR MQTT_UnSubscribe(MQTT_Client *client, char* topic); -void ICACHE_FLASH_ATTR MQTT_Connect(MQTT_Client *mqttClient); -void ICACHE_FLASH_ATTR MQTT_Disconnect(MQTT_Client *mqttClient); -bool ICACHE_FLASH_ATTR MQTT_Publish(MQTT_Client *client, const char* topic, const char* data, int data_length, int qos, int retain); - -#endif /* USER_AT_MQTT_H_ */ diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_config.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_config.h deleted file mode 100644 index 5332f82ee955..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_config.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __MQTT_CONFIG_H__ -#define __MQTT_CONFIG_H__ - -//#define MQTT_SSL_ENABLE - -/*DEFAULT CONFIGURATIONS*/ - -#define MQTT_BUF_SIZE 1024 -//#define MQTT_KEEPALIVE 120 /*second*/ -#define MQTT_KEEPALIVE 15 /*second*/ - -#define MQTT_RECONNECT_TIMEOUT 5 /*second*/ - -#define QUEUE_BUFFER_SIZE 2048 - -//#define PROTOCOL_NAMEv31 /*MQTT version 3.1 compatible with Mosquitto v0.15*/ -#define PROTOCOL_NAMEv311 /*MQTT version 3.11 compatible with https://eclipse.org/paho/clients/testing/*/ - -#endif // __MQTT_CONFIG_H__ \ No newline at end of file diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.c deleted file mode 100644 index c2b3203117d0..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.c +++ /dev/null @@ -1,487 +0,0 @@ -/* -* Copyright (c) 2014, Stephen Robinson -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* 1. Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* 2. Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* 3. Neither the name of the copyright holder nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -*/ - -#include -#include "mqtt_msg.h" -#include "mqtt_config.h" -#define MQTT_MAX_FIXED_HEADER_SIZE 3 - -enum mqtt_connect_flag -{ - MQTT_CONNECT_FLAG_USERNAME = 1 << 7, - MQTT_CONNECT_FLAG_PASSWORD = 1 << 6, - MQTT_CONNECT_FLAG_WILL_RETAIN = 1 << 5, - MQTT_CONNECT_FLAG_WILL = 1 << 2, - MQTT_CONNECT_FLAG_CLEAN_SESSION = 1 << 1 -}; - -struct __attribute((__packed__)) mqtt_connect_variable_header -{ - uint8_t lengthMsb; - uint8_t lengthLsb; -#if defined(PROTOCOL_NAMEv31) - uint8_t magic[6]; -#elif defined(PROTOCOL_NAMEv311) - uint8_t magic[4]; -#else -#error "Please define protocol name" -#endif - uint8_t version; - uint8_t flags; - uint8_t keepaliveMsb; - uint8_t keepaliveLsb; -}; - -static int ICACHE_FLASH_ATTR append_string(mqtt_connection_t* connection, const char* string, int len) -{ - if (connection->message.length + len + 2 > connection->buffer_length) - return -1; - - connection->buffer[connection->message.length++] = len >> 8; - connection->buffer[connection->message.length++] = len & 0xff; - memcpy(connection->buffer + connection->message.length, string, len); - connection->message.length += len; - - return len + 2; -} - -static uint16_t ICACHE_FLASH_ATTR append_message_id(mqtt_connection_t* connection, uint16_t message_id) -{ - // If message_id is zero then we should assign one, otherwise - // we'll use the one supplied by the caller - while (message_id == 0) - message_id = ++connection->message_id; - - if (connection->message.length + 2 > connection->buffer_length) - return 0; - - connection->buffer[connection->message.length++] = message_id >> 8; - connection->buffer[connection->message.length++] = message_id & 0xff; - - return message_id; -} - -static int ICACHE_FLASH_ATTR init_message(mqtt_connection_t* connection) -{ - connection->message.length = MQTT_MAX_FIXED_HEADER_SIZE; - return MQTT_MAX_FIXED_HEADER_SIZE; -} - -static mqtt_message_t* ICACHE_FLASH_ATTR fail_message(mqtt_connection_t* connection) -{ - connection->message.data = connection->buffer; - connection->message.length = 0; - return &connection->message; -} - -static mqtt_message_t* ICACHE_FLASH_ATTR fini_message(mqtt_connection_t* connection, int type, int dup, int qos, int retain) -{ - int remaining_length = connection->message.length - MQTT_MAX_FIXED_HEADER_SIZE; - - if (remaining_length > 127) - { - connection->buffer[0] = ((type & 0x0f) << 4) | ((dup & 1) << 3) | ((qos & 3) << 1) | (retain & 1); - connection->buffer[1] = 0x80 | (remaining_length % 128); - connection->buffer[2] = remaining_length / 128; - connection->message.length = remaining_length + 3; - connection->message.data = connection->buffer; - } - else - { - connection->buffer[1] = ((type & 0x0f) << 4) | ((dup & 1) << 3) | ((qos & 3) << 1) | (retain & 1); - connection->buffer[2] = remaining_length; - connection->message.length = remaining_length + 2; - connection->message.data = connection->buffer + 1; - } - - return &connection->message; -} - -void ICACHE_FLASH_ATTR mqtt_msg_init(mqtt_connection_t* connection, uint8_t* buffer, uint16_t buffer_length) -{ - memset(connection, 0, sizeof(mqtt_connection_t)); - connection->buffer = buffer; - connection->buffer_length = buffer_length; -} - -int ICACHE_FLASH_ATTR mqtt_get_total_length(uint8_t* buffer, uint16_t length) -{ - int i; - int totlen = 0; - - for (i = 1; i < length; ++i) - { - totlen += (buffer[i] & 0x7f) << (7 * (i - 1)); - if ((buffer[i] & 0x80) == 0) - { - ++i; - break; - } - } - totlen += i; - - return totlen; -} - -const char* ICACHE_FLASH_ATTR mqtt_get_publish_topic(uint8_t* buffer, uint16_t* length) -{ - int i; - int totlen = 0; - int topiclen; - - for (i = 1; i < *length; ++i) - { - totlen += (buffer[i] & 0x7f) << (7 * (i - 1)); - if ((buffer[i] & 0x80) == 0) - { - ++i; - break; - } - } - totlen += i; - - if (i + 2 >= *length) - return NULL; - topiclen = buffer[i++] << 8; - topiclen |= buffer[i++]; - - if (i + topiclen > *length) - return NULL; - - *length = topiclen; - return (const char*)(buffer + i); -} - -const char* ICACHE_FLASH_ATTR mqtt_get_publish_data(uint8_t* buffer, uint16_t* length) -{ - int i; - int totlen = 0; - int topiclen; - int blength = *length; - *length = 0; - - for (i = 1; i < blength; ++i) - { - totlen += (buffer[i] & 0x7f) << (7 * (i - 1)); - if ((buffer[i] & 0x80) == 0) - { - ++i; - break; - } - } - totlen += i; - - if (i + 2 >= blength) - return NULL; - topiclen = buffer[i++] << 8; - topiclen |= buffer[i++]; - - if (i + topiclen >= blength) - return NULL; - - i += topiclen; - - if (mqtt_get_qos(buffer) > 0) - { - if (i + 2 >= blength) - return NULL; - i += 2; - } - - if (totlen < i) - return NULL; - - if (totlen <= blength) - *length = totlen - i; - else - *length = blength - i; - return (const char*)(buffer + i); -} - -uint16_t ICACHE_FLASH_ATTR mqtt_get_id(uint8_t* buffer, uint16_t length) -{ - if (length < 1) - return 0; - - switch (mqtt_get_type(buffer)) - { - case MQTT_MSG_TYPE_PUBLISH: - { - int i; - int topiclen; - - for (i = 1; i < length; ++i) - { - if ((buffer[i] & 0x80) == 0) - { - ++i; - break; - } - } - - if (i + 2 >= length) - return 0; - topiclen = buffer[i++] << 8; - topiclen |= buffer[i++]; - - if (i + topiclen >= length) - return 0; - i += topiclen; - - if (mqtt_get_qos(buffer) > 0) - { - if (i + 2 >= length) - return 0; - //i += 2; - } else { - return 0; - } - - return (buffer[i] << 8) | buffer[i + 1]; - } - case MQTT_MSG_TYPE_PUBACK: - case MQTT_MSG_TYPE_PUBREC: - case MQTT_MSG_TYPE_PUBREL: - case MQTT_MSG_TYPE_PUBCOMP: - case MQTT_MSG_TYPE_SUBACK: - case MQTT_MSG_TYPE_UNSUBACK: - case MQTT_MSG_TYPE_SUBSCRIBE: - { - // This requires the remaining length to be encoded in 1 byte, - // which it should be. - if (length >= 4 && (buffer[1] & 0x80) == 0) - return (buffer[2] << 8) | buffer[3]; - else - return 0; - } - - default: - return 0; - } -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_connect(mqtt_connection_t* connection, mqtt_connect_info_t* info) -{ - struct mqtt_connect_variable_header* variable_header; - - init_message(connection); - - if (connection->message.length + sizeof(*variable_header) > connection->buffer_length) - return fail_message(connection); - variable_header = (void*)(connection->buffer + connection->message.length); - connection->message.length += sizeof(*variable_header); - - variable_header->lengthMsb = 0; -#if defined(PROTOCOL_NAMEv31) - variable_header->lengthLsb = 6; - memcpy(variable_header->magic, "MQIsdp", 6); - variable_header->version = 3; -#elif defined(PROTOCOL_NAMEv311) - variable_header->lengthLsb = 4; - memcpy(variable_header->magic, "MQTT", 4); - variable_header->version = 4; -#else -#error "Please define protocol name" -#endif - - variable_header->flags = 0; - variable_header->keepaliveMsb = info->keepalive >> 8; - variable_header->keepaliveLsb = info->keepalive & 0xff; - - if (info->clean_session) - variable_header->flags |= MQTT_CONNECT_FLAG_CLEAN_SESSION; - - if (info->client_id == NULL) - { - /* Never allowed */ - return fail_message(connection); - } - else if (info->client_id[0] == '\0') - { -#ifdef PROTOCOL_NAMEv311 - /* Allowed. Format 0 Length ID */ - append_string(connection, info->client_id, 2) ; -#else - /* 0 Length not allowed */ - return fail_message(connection); -#endif - } - else - { - /* No 0 data and at least 1 long. Good to go. */ - if(append_string(connection, info->client_id, strlen(info->client_id)) < 0) - return fail_message(connection); - } - - if (info->will_topic != NULL && info->will_topic[0] != '\0') - { - if (append_string(connection, info->will_topic, strlen(info->will_topic)) < 0) - return fail_message(connection); - - if (append_string(connection, info->will_message, strlen(info->will_message)) < 0) - return fail_message(connection); - - variable_header->flags |= MQTT_CONNECT_FLAG_WILL; - if (info->will_retain) - variable_header->flags |= MQTT_CONNECT_FLAG_WILL_RETAIN; - variable_header->flags |= (info->will_qos & 3) << 3; - } - - if (info->username != NULL && info->username[0] != '\0') - { - if (append_string(connection, info->username, strlen(info->username)) < 0) - return fail_message(connection); - - variable_header->flags |= MQTT_CONNECT_FLAG_USERNAME; - } - - if (info->password != NULL && info->password[0] != '\0') - { - if (append_string(connection, info->password, strlen(info->password)) < 0) - return fail_message(connection); - - variable_header->flags |= MQTT_CONNECT_FLAG_PASSWORD; - } - - return fini_message(connection, MQTT_MSG_TYPE_CONNECT, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_publish(mqtt_connection_t* connection, const char* topic, const char* data, int data_length, int qos, int retain, uint16_t* message_id) -{ - init_message(connection); - - if (topic == NULL || topic[0] == '\0') - return fail_message(connection); - - if (append_string(connection, topic, strlen(topic)) < 0) - return fail_message(connection); - - if (qos > 0) - { - if ((*message_id = append_message_id(connection, 0)) == 0) - return fail_message(connection); - } - else - *message_id = 0; - - if (connection->message.length + data_length > connection->buffer_length) - return fail_message(connection); - memcpy(connection->buffer + connection->message.length, data, data_length); - connection->message.length += data_length; - - return fini_message(connection, MQTT_MSG_TYPE_PUBLISH, 0, qos, retain); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_puback(mqtt_connection_t* connection, uint16_t message_id) -{ - init_message(connection); - if (append_message_id(connection, message_id) == 0) - return fail_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PUBACK, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubrec(mqtt_connection_t* connection, uint16_t message_id) -{ - init_message(connection); - if (append_message_id(connection, message_id) == 0) - return fail_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PUBREC, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubrel(mqtt_connection_t* connection, uint16_t message_id) -{ - init_message(connection); - if (append_message_id(connection, message_id) == 0) - return fail_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PUBREL, 0, 1, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubcomp(mqtt_connection_t* connection, uint16_t message_id) -{ - init_message(connection); - if (append_message_id(connection, message_id) == 0) - return fail_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PUBCOMP, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_subscribe(mqtt_connection_t* connection, const char* topic, int qos, uint16_t* message_id) -{ - init_message(connection); - - if (topic == NULL || topic[0] == '\0') - return fail_message(connection); - - if ((*message_id = append_message_id(connection, 0)) == 0) - return fail_message(connection); - - if (append_string(connection, topic, strlen(topic)) < 0) - return fail_message(connection); - - if (connection->message.length + 1 > connection->buffer_length) - return fail_message(connection); - connection->buffer[connection->message.length++] = qos; - - return fini_message(connection, MQTT_MSG_TYPE_SUBSCRIBE, 0, 1, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_unsubscribe(mqtt_connection_t* connection, const char* topic, uint16_t* message_id) -{ - init_message(connection); - - if (topic == NULL || topic[0] == '\0') - return fail_message(connection); - - if ((*message_id = append_message_id(connection, 0)) == 0) - return fail_message(connection); - - if (append_string(connection, topic, strlen(topic)) < 0) - return fail_message(connection); - - return fini_message(connection, MQTT_MSG_TYPE_UNSUBSCRIBE, 0, 1, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pingreq(mqtt_connection_t* connection) -{ - init_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PINGREQ, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pingresp(mqtt_connection_t* connection) -{ - init_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_PINGRESP, 0, 0, 0); -} - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_disconnect(mqtt_connection_t* connection) -{ - init_message(connection); - return fini_message(connection, MQTT_MSG_TYPE_DISCONNECT, 0, 0, 0); -} diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.h deleted file mode 100644 index be3cc55cb289..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/mqtt_msg.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * File: mqtt_msg.h - * Author: Minh Tuan - * - * Created on July 12, 2014, 1:05 PM - */ - -#ifndef MQTT_MSG_H -#define MQTT_MSG_H -#include "user_config.h" -#include "c_types.h" -#ifdef __cplusplus -extern "C" { -#endif - -/* -* Copyright (c) 2014, Stephen Robinson -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* 1. Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* 2. Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* 3. Neither the name of the copyright holder nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -*/ -/* 7 6 5 4 3 2 1 0*/ -/*| --- Message Type---- | DUP Flag | QoS Level | Retain | -/* Remaining Length */ - - -enum mqtt_message_type -{ - MQTT_MSG_TYPE_CONNECT = 1, - MQTT_MSG_TYPE_CONNACK = 2, - MQTT_MSG_TYPE_PUBLISH = 3, - MQTT_MSG_TYPE_PUBACK = 4, - MQTT_MSG_TYPE_PUBREC = 5, - MQTT_MSG_TYPE_PUBREL = 6, - MQTT_MSG_TYPE_PUBCOMP = 7, - MQTT_MSG_TYPE_SUBSCRIBE = 8, - MQTT_MSG_TYPE_SUBACK = 9, - MQTT_MSG_TYPE_UNSUBSCRIBE = 10, - MQTT_MSG_TYPE_UNSUBACK = 11, - MQTT_MSG_TYPE_PINGREQ = 12, - MQTT_MSG_TYPE_PINGRESP = 13, - MQTT_MSG_TYPE_DISCONNECT = 14 -}; - -enum mqtt_connect_return_code -{ - CONNECTION_ACCEPTED = 0, - CONNECTION_REFUSE_PROTOCOL, - CONNECTION_REFUSE_ID_REJECTED, - CONNECTION_REFUSE_SERVER_UNAVAILABLE, - CONNECTION_REFUSE_BAD_USERNAME, - CONNECTION_REFUSE_NOT_AUTHORIZED -}; - -typedef struct mqtt_message -{ - uint8_t* data; - uint16_t length; - -} mqtt_message_t; - -typedef struct mqtt_connection -{ - mqtt_message_t message; - - uint16_t message_id; - uint8_t* buffer; - uint16_t buffer_length; - -} mqtt_connection_t; - -typedef struct mqtt_connect_info -{ - char* client_id; - char* username; - char* password; - char* will_topic; - char* will_message; - uint32_t keepalive; - int will_qos; - int will_retain; - int clean_session; - -} mqtt_connect_info_t; - - -static inline int ICACHE_FLASH_ATTR mqtt_get_type(uint8_t* buffer) { return (buffer[0] & 0xf0) >> 4; } -static inline int ICACHE_FLASH_ATTR mqtt_get_connect_return_code(uint8_t* buffer) { return buffer[3]; } -static inline int ICACHE_FLASH_ATTR mqtt_get_dup(uint8_t* buffer) { return (buffer[0] & 0x08) >> 3; } -static inline int ICACHE_FLASH_ATTR mqtt_get_qos(uint8_t* buffer) { return (buffer[0] & 0x06) >> 1; } -static inline int ICACHE_FLASH_ATTR mqtt_get_retain(uint8_t* buffer) { return (buffer[0] & 0x01); } - -void ICACHE_FLASH_ATTR mqtt_msg_init(mqtt_connection_t* connection, uint8_t* buffer, uint16_t buffer_length); -int ICACHE_FLASH_ATTR mqtt_get_total_length(uint8_t* buffer, uint16_t length); -const char* ICACHE_FLASH_ATTR mqtt_get_publish_topic(uint8_t* buffer, uint16_t* length); -const char* ICACHE_FLASH_ATTR mqtt_get_publish_data(uint8_t* buffer, uint16_t* length); -uint16_t ICACHE_FLASH_ATTR mqtt_get_id(uint8_t* buffer, uint16_t length); - -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_connect(mqtt_connection_t* connection, mqtt_connect_info_t* info); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_publish(mqtt_connection_t* connection, const char* topic, const char* data, int data_length, int qos, int retain, uint16_t* message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_puback(mqtt_connection_t* connection, uint16_t message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubrec(mqtt_connection_t* connection, uint16_t message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubrel(mqtt_connection_t* connection, uint16_t message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pubcomp(mqtt_connection_t* connection, uint16_t message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_subscribe(mqtt_connection_t* connection, const char* topic, int qos, uint16_t* message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_unsubscribe(mqtt_connection_t* connection, const char* topic, uint16_t* message_id); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pingreq(mqtt_connection_t* connection); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_pingresp(mqtt_connection_t* connection); -mqtt_message_t* ICACHE_FLASH_ATTR mqtt_msg_disconnect(mqtt_connection_t* connection); - - -#ifdef __cplusplus -} -#endif - -#endif /* MQTT_MSG_H */ - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.c deleted file mode 100644 index 84078b233bdb..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.c +++ /dev/null @@ -1,129 +0,0 @@ -#include "proto.h" -#include "ringbuf.h" -I8 ICACHE_FLASH_ATTR PROTO_Init(PROTO_PARSER *parser, PROTO_PARSE_CALLBACK *completeCallback, U8 *buf, U16 bufSize) -{ - parser->buf = buf; - parser->bufSize = bufSize; - parser->dataLen = 0; - parser->callback = completeCallback; - parser->isEsc = 0; - return 0; -} - -I8 ICACHE_FLASH_ATTR PROTO_ParseByte(PROTO_PARSER *parser, U8 value) -{ - switch (value) { - case 0x7D: - parser->isEsc = 1; - break; - - case 0x7E: - parser->dataLen = 0; - parser->isEsc = 0; - parser->isBegin = 1; - break; - - case 0x7F: - if (parser->callback != NULL) - parser->callback(); - parser->isBegin = 0; - return 0; - break; - - default: - if (parser->isBegin == 0) break; - - if (parser->isEsc) { - value ^= 0x20; - parser->isEsc = 0; - } - - if (parser->dataLen < parser->bufSize) - parser->buf[parser->dataLen++] = value; - - break; - } - return -1; -} - -I8 ICACHE_FLASH_ATTR PROTO_Parse(PROTO_PARSER *parser, U8 *buf, U16 len) -{ - while (len--) - PROTO_ParseByte(parser, *buf++); - - return 0; -} -I16 ICACHE_FLASH_ATTR PROTO_ParseRb(RINGBUF* rb, U8 *bufOut, U16* len, U16 maxBufLen) -{ - U8 c; - - PROTO_PARSER proto; - PROTO_Init(&proto, NULL, bufOut, maxBufLen); - while (RINGBUF_Get(rb, &c) == 0) { - if (PROTO_ParseByte(&proto, c) == 0) { - *len = proto.dataLen; - return 0; - } - } - return -1; -} -I16 ICACHE_FLASH_ATTR PROTO_Add(U8 *buf, const U8 *packet, I16 bufSize) -{ - U16 i = 2; - U16 len = *(U16*) packet; - - if (bufSize < 1) return -1; - - *buf++ = 0x7E; - bufSize--; - - while (len--) { - switch (*packet) { - case 0x7D: - case 0x7E: - case 0x7F: - if (bufSize < 2) return -1; - *buf++ = 0x7D; - *buf++ = *packet++ ^ 0x20; - i += 2; - bufSize -= 2; - break; - default: - if (bufSize < 1) return -1; - *buf++ = *packet++; - i++; - bufSize--; - break; - } - } - - if (bufSize < 1) return -1; - *buf++ = 0x7F; - - return i; -} - -I16 ICACHE_FLASH_ATTR PROTO_AddRb(RINGBUF *rb, const U8 *packet, I16 len) -{ - U16 i = 2; - if (RINGBUF_Put(rb, 0x7E) == -1) return -1; - while (len--) { - switch (*packet) { - case 0x7D: - case 0x7E: - case 0x7F: - if (RINGBUF_Put(rb, 0x7D) == -1) return -1; - if (RINGBUF_Put(rb, *packet++ ^ 0x20) == -1) return -1; - i += 2; - break; - default: - if (RINGBUF_Put(rb, *packet++) == -1) return -1; - i++; - break; - } - } - if (RINGBUF_Put(rb, 0x7F) == -1) return -1; - - return i; -} - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.h deleted file mode 100644 index a405bcb950d6..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/proto.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * File: proto.h - * Author: ThuHien - * - * Created on November 23, 2012, 8:57 AM - */ - -#ifndef _PROTO_H_ -#define _PROTO_H_ -#include -#include "typedef.h" -#include "ringbuf.h" - -typedef void(PROTO_PARSE_CALLBACK)(); - -typedef struct { - U8 *buf; - U16 bufSize; - U16 dataLen; - U8 isEsc; - U8 isBegin; - PROTO_PARSE_CALLBACK* callback; -} PROTO_PARSER; - -I8 ICACHE_FLASH_ATTR PROTO_Init(PROTO_PARSER *parser, PROTO_PARSE_CALLBACK *completeCallback, U8 *buf, U16 bufSize); -I8 ICACHE_FLASH_ATTR PROTO_Parse(PROTO_PARSER *parser, U8 *buf, U16 len); -I16 ICACHE_FLASH_ATTR PROTO_Add(U8 *buf, const U8 *packet, I16 bufSize); -I16 ICACHE_FLASH_ATTR PROTO_AddRb(RINGBUF *rb, const U8 *packet, I16 len); -I8 ICACHE_FLASH_ATTR PROTO_ParseByte(PROTO_PARSER *parser, U8 value); -I16 ICACHE_FLASH_ATTR PROTO_ParseRb(RINGBUF *rb, U8 *bufOut, U16* len, U16 maxBufLen); -#endif - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.c deleted file mode 100644 index 95bbec0cd57c..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.c +++ /dev/null @@ -1,75 +0,0 @@ -/* str_queue.c -* -* Copyright (c) 2014-2015, Tuan PM -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* -* * Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of Redis nor the names of its contributors may be used -* to endorse or promote products derived from this software without -* specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -*/ -#include "queue.h" - -#include "user_interface.h" -#include "osapi.h" -#include "os_type.h" -#include "mem.h" -#include "proto.h" - -uint8_t *last_rb_p_r; -uint8_t *last_rb_p_w; -uint32_t last_fill_cnt; - -void ICACHE_FLASH_ATTR QUEUE_Init(QUEUE *queue, int bufferSize) -{ - queue->buf = (uint8_t*)os_zalloc(bufferSize); - RINGBUF_Init(&queue->rb, queue->buf, bufferSize); -} -int32_t ICACHE_FLASH_ATTR QUEUE_Puts(QUEUE *queue, uint8_t* buffer, uint16_t len) -{ - uint32_t ret; - - last_rb_p_r = queue->rb.p_r; - last_rb_p_w = queue->rb.p_w; - last_fill_cnt = queue->rb.fill_cnt; - - ret = PROTO_AddRb(&queue->rb, buffer, len); - if (ret == -1) { - // rolling ring buffer back - queue->rb.p_r = last_rb_p_r; - queue->rb.p_w = last_rb_p_w; - queue->rb.fill_cnt = last_fill_cnt; - } - return ret; -} -int32_t ICACHE_FLASH_ATTR QUEUE_Gets(QUEUE *queue, uint8_t* buffer, uint16_t* len, uint16_t maxLen) -{ - - return PROTO_ParseRb(&queue->rb, buffer, len, maxLen); -} - -BOOL ICACHE_FLASH_ATTR QUEUE_IsEmpty(QUEUE *queue) -{ - if (queue->rb.fill_cnt <= 0) - return TRUE; - return FALSE; -} diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.h deleted file mode 100644 index 79107f2d5290..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/queue.h +++ /dev/null @@ -1,44 +0,0 @@ -/* str_queue.h -- -* -* Copyright (c) 2014-2015, Tuan PM -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* -* * Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of Redis nor the names of its contributors may be used -* to endorse or promote products derived from this software without -* specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef USER_QUEUE_H_ -#define USER_QUEUE_H_ -#include "os_type.h" -#include "ringbuf.h" -typedef struct { - uint8_t *buf; - RINGBUF rb; -} QUEUE; - -void ICACHE_FLASH_ATTR QUEUE_Init(QUEUE *queue, int bufferSize); -int32_t ICACHE_FLASH_ATTR QUEUE_Puts(QUEUE *queue, uint8_t* buffer, uint16_t len); -int32_t ICACHE_FLASH_ATTR QUEUE_Gets(QUEUE *queue, uint8_t* buffer, uint16_t* len, uint16_t maxLen); -bool ICACHE_FLASH_ATTR QUEUE_IsEmpty(QUEUE *queue); -#endif /* USER_QUEUE_H_ */ diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.c deleted file mode 100644 index fc882fd5c19b..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.c +++ /dev/null @@ -1,67 +0,0 @@ -/** -* \file -* Ring Buffer library -*/ - -#include "ringbuf.h" - - -/** -* \brief init a RINGBUF object -* \param r pointer to a RINGBUF object -* \param buf pointer to a byte array -* \param size size of buf -* \return 0 if successfull, otherwise failed -*/ -I16 ICACHE_FLASH_ATTR RINGBUF_Init(RINGBUF *r, U8* buf, I32 size) -{ - if (r == NULL || buf == NULL || size < 2) return -1; - - r->p_o = r->p_r = r->p_w = buf; - r->fill_cnt = 0; - r->size = size; - - return 0; -} -/** -* \brief put a character into ring buffer -* \param r pointer to a ringbuf object -* \param c character to be put -* \return 0 if successfull, otherwise failed -*/ -I16 ICACHE_FLASH_ATTR RINGBUF_Put(RINGBUF *r, U8 c) -{ - if (r->fill_cnt >= r->size)return -1; // ring buffer is full, this should be atomic operation - - - r->fill_cnt++; // increase filled slots count, this should be atomic operation - - - *r->p_w++ = c; // put character into buffer - - if (r->p_w >= r->p_o + r->size) // rollback if write pointer go pass - r->p_w = r->p_o; // the physical boundary - - return 0; -} -/** -* \brief get a character from ring buffer -* \param r pointer to a ringbuf object -* \param c read character -* \return 0 if successfull, otherwise failed -*/ -I16 ICACHE_FLASH_ATTR RINGBUF_Get(RINGBUF *r, U8* c) -{ - if (r->fill_cnt <= 0)return -1; // ring buffer is empty, this should be atomic operation - - - r->fill_cnt--; // decrease filled slots count - - - *c = *r->p_r++; // get the character out - - if (r->p_r >= r->p_o + r->size) // rollback if write pointer go pass - r->p_r = r->p_o; // the physical boundary - - return 0; -} diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.h deleted file mode 100644 index f1a4f7e8bd50..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/ringbuf.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _RING_BUF_H_ -#define _RING_BUF_H_ - -#include -#include -#include "typedef.h" - -typedef struct { - U8* p_o; /**< Original pointer */ - U8* volatile p_r; /**< Read pointer */ - U8* volatile p_w; /**< Write pointer */ - volatile I32 fill_cnt; /**< Number of filled slots */ - I32 size; /**< Buffer size */ -} RINGBUF; - -I16 ICACHE_FLASH_ATTR RINGBUF_Init(RINGBUF *r, U8* buf, I32 size); -I16 ICACHE_FLASH_ATTR RINGBUF_Put(RINGBUF *r, U8 c); -I16 ICACHE_FLASH_ATTR RINGBUF_Get(RINGBUF *r, U8* c); -#endif diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/typedef.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/typedef.h deleted file mode 100644 index 887001ace049..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/typedef.h +++ /dev/null @@ -1,17 +0,0 @@ -/** -* \file -* Standard Types definition -*/ - -#ifndef _TYPE_DEF_H_ -#define _TYPE_DEF_H_ - -typedef char I8; -typedef unsigned char U8; -typedef short I16; -typedef unsigned short U16; -typedef long I32; -typedef unsigned long U32; -typedef unsigned long long U64; - -#endif diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.c b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.c deleted file mode 100644 index ac4c9272b4ff..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.c +++ /dev/null @@ -1,149 +0,0 @@ -/* -* Copyright (c) 2014, Tuan PM -* Email: tuanpm@live.com -* -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* 1. Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* 2. Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* 3. Neither the name of the copyright holder nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -*/ -#include -#include -#include -#include -#include -#include "utils.h" - - -uint8_t ICACHE_FLASH_ATTR UTILS_IsIPV4 (int8_t *str) -{ - uint8_t segs = 0; /* Segment count. */ - uint8_t chcnt = 0; /* Character count within segment. */ - uint8_t accum = 0; /* Accumulator for segment. */ - /* Catch NULL pointer. */ - if (str == 0) - return 0; - /* Process every character in string. */ - - while (*str != '\0') { - /* Segment changeover. */ - - if (*str == '.') { - /* Must have some digits in segment. */ - if (chcnt == 0) - return 0; - /* Limit number of segments. */ - if (++segs == 4) - return 0; - /* Reset segment values and restart loop. */ - chcnt = accum = 0; - str++; - continue; - } - - /* Check numeric. */ - if ((*str < '0') || (*str > '9')) - return 0; - - /* Accumulate and check segment. */ - - if ((accum = accum * 10 + *str - '0') > 255) - return 0; - /* Advance other segment specific stuff and continue loop. */ - - chcnt++; - str++; - } - - /* Check enough segments and enough characters in last segment. */ - - if (segs != 3) - return 0; - if (chcnt == 0) - return 0; - /* Address okay. */ - - return 1; -} -uint8_t ICACHE_FLASH_ATTR UTILS_StrToIP(const int8_t* str, void *ip) -{ - - /* The count of the number of bytes processed. */ - int i; - /* A pointer to the next digit to process. */ - const char * start; - - start = str; - for (i = 0; i < 4; i++) { - /* The digit being processed. */ - char c; - /* The value of this byte. */ - int n = 0; - while (1) { - c = * start; - start++; - if (c >= '0' && c <= '9') { - n *= 10; - n += c - '0'; - } - /* We insist on stopping at "." if we are still parsing - the first, second, or third numbers. If we have reached - the end of the numbers, we will allow any character. */ - else if ((i < 3 && c == '.') || i == 3) { - break; - } - else { - return 0; - } - } - if (n >= 256) { - return 0; - } - ((uint8_t*)ip)[i] = n; - } - return 1; - -} -uint32_t ICACHE_FLASH_ATTR UTILS_Atoh(const int8_t *s) -{ - uint32_t value = 0, digit; - int8_t c; - - while ((c = *s++)) { - if ('0' <= c && c <= '9') - digit = c - '0'; - else if ('A' <= c && c <= 'F') - digit = c - 'A' + 10; - else if ('a' <= c && c <= 'f') - digit = c - 'a' + 10; - else break; - - value = (value << 4) | digit; - } - - return value; -} - diff --git a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.h b/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.h deleted file mode 100644 index fe2874803ad3..000000000000 --- a/lib/esp-mqtt-arduino-1.0.1.02.1/src/mqtt/utils.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _UTILS_H_ -#define _UTILS_H_ - -#include "c_types.h" - -uint32_t ICACHE_FLASH_ATTR UTILS_Atoh(const int8_t *s); -uint8_t ICACHE_FLASH_ATTR UTILS_StrToIP(const int8_t* str, void *ip); -uint8_t ICACHE_FLASH_ATTR UTILS_IsIPV4 (int8_t *str); -#endif From 0826249cff5c7c4419cf24c452b22a524c7506e5 Mon Sep 17 00:00:00 2001 From: Yuval <38878996+rt400@users.noreply.github.com> Date: Tue, 2 Oct 2018 19:25:18 +0300 Subject: [PATCH 229/798] Create Hebrew Language File --- sonoff/language/he-HE.h | 543 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 543 insertions(+) create mode 100644 sonoff/language/he-HE.h diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h new file mode 100644 index 000000000000..be6094233778 --- /dev/null +++ b/sonoff/language/he-HE.h @@ -0,0 +1,543 @@ +/* + he-HE.h - localization for Hebrew - Israel for Sonoff-Tasmota + + Copyright (C) 2018 Yuval Mejahez + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _LANGUAGE_HE_HE_H_ +#define _LANGUAGE_HE_HE_H_ + +/*************************** ATTENTION *******************************\ + * + * Due to memory constraints only UTF-8 is supported. + * To save code space keep text as short as possible. + * Time and Date provided by SDK can not be localized (yet). + * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. + * Use online command Prefix to translate cmnd, stat and tele. + * + * Updated until v5.14.0b +\*********************************************************************/ + +//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) + +#define LANGUAGE_LCID 1037 +// HTML (ISO 639-1) Language Code +#define D_HTML_LANGUAGE "he" + +// "2017-03-07T11:08:02" - ISO8601:2004 +#define D_YEAR_MONTH_SEPARATOR "-" +#define D_MONTH_DAY_SEPARATOR "-" +#define D_DATE_TIME_SEPARATOR "T" +#define D_HOUR_MINUTE_SEPARATOR ":" +#define D_MINUTE_SECOND_SEPARATOR ":" + +#define D_DAY3LIST "SunMonTueWedThuFriSat" +#define D_MONTH3LIST "JanFebMarAprMayJunJulAugSepOctNovDec" + +// Non JSON decimal separator +#define D_DECIMAL_SEPARATOR "." + +// Common +#define D_ADMIN "מנהל" +#define D_AIR_QUALITY "איכות אוויר" +#define D_AP "AP" // Access Point +#define D_AS "as" +#define D_AUTO "AUTO" +#define D_BLINK "מהבהב" +#define D_BLINKOFF "כיבוי היבהוב" +#define D_BOOT_COUNT "מונה הפעלה מחדש" +#define D_BRIGHTLIGHT "בהירות" +#define D_BSSID "BSSId" +#define D_BUTTON "לחצן" +#define D_BY "by" // Written by me +#define D_BYTES "בייט" +#define D_CELSIUS "צלזיוס" +#define D_CHANNEL "ערוץ" +#define D_CO2 "Carbon dioxide" +#define D_CODE "קוד" // Button code +#define D_COLDLIGHT "קור" +#define D_COMMAND "פקודה" +#define D_CONNECTED "מחובר" +#define D_COUNT "סופר" +#define D_COUNTER "מונה" +#define D_CURRENT "נוכחי" // As in Voltage and Current +#define D_DATA "נתונים" +#define D_DARKLIGHT "חושך" +#define D_DEBUG "באגים" +#define D_DISABLED "מבוטל" +#define D_DISTANCE "מרחק" +#define D_DNS_SERVER "DNS שרת" +#define D_DONE "סיים" +#define D_DST_TIME "DST" +#define D_ECO2 "eCO2" +#define D_EMULATION "הדמיה" +#define D_ENABLED "מאופשר" +#define D_ERASE "מחיקה" +#define D_ERROR "שגיאה" +#define D_FAHRENHEIT "פרנהייט" +#define D_FAILED "נכשל" +#define D_FALLBACK "חזרה" +#define D_FALLBACK_TOPIC "נושא לחזרה" +#define D_FALSE "שגוי" +#define D_FILE "קובץ" +#define D_FREE_MEMORY "זכרון פנוי" +#define D_FREQUENCY "תדר" +#define D_GAS "גז" +#define D_GATEWAY "שער" +#define D_GROUP "קבוצה" +#define D_HOST "מארח" +#define D_HOSTNAME "שם מארח" +#define D_HUMIDITY "לחות" +#define D_ILLUMINANCE "רמת חשיפה" +#define D_IMMEDIATE "מידי" // Button immediate +#define D_INDEX "אינדקס" +#define D_INFO "מידע" +#define D_INFRARED "אינפרא" +#define D_INITIALIZED "מאותחל" +#define D_IP_ADDRESS "IP כתובת" +#define D_LIGHT "אור" +#define D_LWT "LWT" +#define D_MODULE "מודול" +#define D_MQTT "MQTT" +#define D_MULTI_PRESS "multi-press" +#define D_NOISE "רעש" +#define D_NONE "כלום" +#define D_OFF "כבוי" +#define D_OFFLINE "מנותק" +#define D_OK "אוקיי" +#define D_ON "פועל" +#define D_ONLINE "מחובר" +#define D_PASSWORD "סיסמא" +#define D_PORT "פורט" +#define D_POWER_FACTOR "גורם כוח" +#define D_POWERUSAGE "כוח" +#define D_POWERUSAGE_ACTIVE "כוח פעיל" +#define D_POWERUSAGE_APPARENT "כוח לכאורה" +#define D_POWERUSAGE_REACTIVE "כוח תגובתי" +#define D_PRESSURE "לחץ" +#define D_PRESSUREATSEALEVEL "לחץ ימי" +#define D_PROGRAM_FLASH_SIZE "גודל תוכנית פלאש" +#define D_PROGRAM_SIZE "גודל תוכנית" +#define D_PROJECT "פרויקט" +#define D_RECEIVED "התקבל" +#define D_RESTART "איתחול" +#define D_RESTARTING "הפעלה מחדש" +#define D_RESTART_REASON "סיבת הפעלה מחדש" +#define D_RESTORE "שחזור" +#define D_RETAINED "שמור" +#define D_RULE "חוק" +#define D_SAVE "שמירה" +#define D_SENSOR "חיישן" +#define D_SSID "SSId" +#define D_START "התחלה" +#define D_STD_TIME "STD" +#define D_STOP "עצירה" +#define D_SUBNET_MASK "רשת מסכת משנה" +#define D_SUBSCRIBE_TO "הרשם ל" +#define D_SUCCESSFUL "הצליח" +#define D_SUNRISE "זריחה" +#define D_SUNSET "שקיעה" +#define D_TEMPERATURE "טמפרטורה" +#define D_TO "ל" +#define D_TOGGLE "מתג" +#define D_TOPIC "נושא" +#define D_TRANSMIT "עבר" +#define D_TRUE "נכון" +#define D_TVOC "TVOC" +#define D_UPGRADE "שדרוג" +#define D_UPLOAD "העלאה" +#define D_UPTIME "זמן עליה" +#define D_USER "משתמש" +#define D_UTC_TIME "UTC" +#define D_UV_INDEX "UV אינדקס" +#define D_UV_LEVEL "UV רמת" +#define D_VERSION "גרסה" +#define D_VOLTAGE "מתח" +#define D_WARMLIGHT "חום" +#define D_WEB_SERVER "Web שרת" + +// sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" +#define D_LEVEL_10 "level 1-0" +#define D_LEVEL_01 "level 0-1" +#define D_SERIAL_LOGGING_DISABLED "Serial logging disabled" +#define D_SYSLOG_LOGGING_REENABLED "Syslog logging re-enabled" + +#define D_SET_BAUDRATE_TO "Set Baudrate to" +#define D_RECEIVED_TOPIC "Received Topic" +#define D_DATA_SIZE "Data Size" +#define D_ANALOG_INPUT "אנלוגי" + +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Blocked Loop" +#define D_WPS_FAILED_WITH_STATUS "WPSconfig FAILED with status" +#define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" +#define D_FAILED_TO_START "failed to start" +#define D_PATCH_ISSUE_2186 "Patch issue 2186" +#define D_CONNECTING_TO_AP "Connecting to AP" +#define D_IN_MODE "in mode" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "Connect failed as no IP address received" +#define D_CONNECT_FAILED_AP_NOT_REACHED "Connect failed as AP cannot be reached" +#define D_CONNECT_FAILED_WRONG_PASSWORD "Connect failed with AP incorrect password" +#define D_CONNECT_FAILED_AP_TIMEOUT "Connect failed with AP timeout" +#define D_ATTEMPTING_CONNECTION "Attempting connection..." +#define D_CHECKING_CONNECTION "Checking connection..." +#define D_QUERY_DONE "Query done. MQTT services found" +#define D_MQTT_SERVICE_FOUND "MQTT service found on" +#define D_FOUND_AT "found at" +#define D_SYSLOG_HOST_NOT_FOUND "Syslog Host not found" + +// settings.ino +#define D_SAVED_TO_FLASH_AT "Saved to flash at" +#define D_LOADED_FROM_FLASH_AT "Loaded from flash at" +#define D_USE_DEFAULTS "השתמש בהגדרות ברירת המחדל" +#define D_ERASED_SECTOR "סקטור מחוק" + +// xdrv_02_webserver.ino +#define D_NOSCRIPT "JavaScript - כדי להשתמש ב קושחה אסמוטה אנא הפעל" +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "קושחה מינימלית - בבקשה אנא שדרג" +#define D_WEBSERVER_ACTIVE_ON "Web server active on" +#define D_WITH_IP_ADDRESS "with IP address" +#define D_WEBSERVER_STOPPED "Web server stopped" +#define D_FILE_NOT_FOUND "File Not Found" +#define D_REDIRECTED "Redirected to captive portal" +#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager set AccessPoint and keep Station" +#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager set AccessPoint" +#define D_TRYING_TO_CONNECT "מנסה לחבר את ההתקן לרשת" + +#define D_RESTART_IN "הפעלה מחדש תןך" +#define D_SECONDS "שניות" +#define D_DEVICE_WILL_RESTART "ההתקן יופעל מחדש בעוד מס' שניות" +#define D_BUTTON_TOGGLE "מצב" +#define D_CONFIGURATION "הגדרות" +#define D_INFORMATION "מידע" +#define D_FIRMWARE_UPGRADE "שדרוג קושחה" +#define D_CONSOLE "קונסול" +#define D_CONFIRM_RESTART "אישור הפעלה מחדש" + +#define D_CONFIGURE_MODULE "הגדרות מודול" +#define D_CONFIGURE_WIFI "WIFI הגדרות" +#define D_CONFIGURE_MQTT "MQTT הגדרות" +#define D_CONFIGURE_DOMOTICZ "Domoticz הגדרות" +#define D_CONFIGURE_LOGGING "הגדרת לוגים" +#define D_CONFIGURE_OTHER "הגדרות שונות" +#define D_CONFIRM_RESET_CONFIGURATION "אישור שינוי הגדרות" +#define D_RESET_CONFIGURATION "אתחול הגדרות" +#define D_BACKUP_CONFIGURATION "גיבוי הגדרות" +#define D_RESTORE_CONFIGURATION "שחזור הגדרות" +#define D_MAIN_MENU "תפריט ראשי" + +#define D_MODULE_PARAMETERS "מודול פרמטרים" +#define D_MODULE_TYPE "סוג מודול" +#define D_GPIO " רגל " +#define D_SERIAL_IN "כניסת סריאל" +#define D_SERIAL_OUT "יציאת סריאל" + +#define D_WIFI_PARAMETERS "Wifi פרמטרים" +#define D_SCAN_FOR_WIFI_NETWORKS "סורק עבור רשתות אלחוטיות" +#define D_SCAN_DONE "סריקה הושלמה" +#define D_NO_NETWORKS_FOUND "לא נמצאו רשתות אלחוטיות" +#define D_REFRESH_TO_SCAN_AGAIN "רענן כדי לסרוק שוב" +#define D_DUPLICATE_ACCESSPOINT "נקודות גישה משוכפלות" +#define D_SKIPPING_LOW_QUALITY "מדלג עקב איכות רשת נמוכה" +#define D_RSSI "RSSI" +#define D_WEP "WEP" +#define D_WPA_PSK "WPA PSK" +#define D_WPA2_PSK "WPA2 PSK" +#define D_AP1_SSID "AP1 SSId" +#define D_AP1_PASSWORD "AP1 Password" +#define D_AP2_SSID "AP2 SSId" +#define D_AP2_PASSWORD "AP2 Password" + +#define D_MQTT_PARAMETERS "MQTT פרמטרים" +#define D_CLIENT "לקוח" +#define D_FULL_TOPIC "זיהוי מלא" + +#define D_LOGGING_PARAMETERS "פרמטרי לוגים" +#define D_SERIAL_LOG_LEVEL "רמת לוג עבור סריאל" +#define D_WEB_LOG_LEVEL "רמת לוג עבור אתר" +#define D_SYS_LOG_LEVEL "Syslog רמת לוג עבור שרת" +#define D_MORE_DEBUG "מיפוי נוסף" +#define D_SYSLOG_HOST "Syslog מארח" +#define D_SYSLOG_PORT "Syslog פורט" +#define D_TELEMETRY_PERIOD "Telemetry period" + +#define D_OTHER_PARAMETERS "פרמטרים שונים" +#define D_WEB_ADMIN_PASSWORD "סיסמת מנהל - אתר" +#define D_MQTT_ENABLE "MQTT אפשר" +#define D_FRIENDLY_NAME "שם ידידותי" +#define D_BELKIN_WEMO "Belkin WeMo" +#define D_HUE_BRIDGE "Hue Bridge" +#define D_SINGLE_DEVICE "התקן בודד" +#define D_MULTI_DEVICE "התקנים" + +#define D_SAVE_CONFIGURATION "שמירת הגדרות" +#define D_CONFIGURATION_SAVED "הגדרות נשמרו" +#define D_CONFIGURATION_RESET "איפוס הגדרות" + +#define D_PROGRAM_VERSION "גירסת תוכנה" +#define D_BUILD_DATE_AND_TIME "Build Date & Time" +#define D_CORE_AND_SDK_VERSION "Core/SDK Version" +#define D_FLASH_WRITE_COUNT "מונה צריבות" +#define D_MAC_ADDRESS "MAC כתובת" +#define D_MQTT_HOST "MQTT מארח" +#define D_MQTT_PORT "MQTT פורט" +#define D_MQTT_CLIENT "MQTT לקוח" +#define D_MQTT_USER "MQTT שם משתמש" +#define D_MQTT_TOPIC "MQTT נושא" +#define D_MQTT_GROUP_TOPIC "MQTT נושא קבוצת" +#define D_MQTT_FULL_TOPIC "MQTT נושא מלא" +#define D_MDNS_DISCOVERY "mDNS זיהוי" +#define D_MDNS_ADVERTISE "mDNS פרסום" +#define D_ESP_CHIP_ID "ESP מס' רכיב" +#define D_FLASH_CHIP_ID "מס' רכיב פלאש" +#define D_FLASH_CHIP_SIZE "גודל זיכרון פלאש" +#define D_FREE_PROGRAM_SPACE "מקום פנוי - תוכנה" + +#define D_UPGRADE_BY_WEBSERVER "שדרוג קושחה" +#define D_OTA_URL "OTA כתובת" +#define D_START_UPGRADE "התחל בשדרוג" +#define D_UPGRADE_BY_FILE_UPLOAD "שדרוג דרך קובץ נכשל" +#define D_UPLOAD_STARTED "העלאה מתחילה" +#define D_UPGRADE_STARTED "שדרוג מתחיל" +#define D_UPLOAD_DONE "העלאה הסתיימה" +#define D_UPLOAD_ERR_1 "לא נבחר קובץ" +#define D_UPLOAD_ERR_2 "אין מספיק מקום" +#define D_UPLOAD_ERR_3 "Magic byte is not 0xE9" +#define D_UPLOAD_ERR_4 "גודל קובץ השדרוג גדול מנפח האחסון של הפלאש" +#define D_UPLOAD_ERR_5 "מאגר העלאה לא תקין" +#define D_UPLOAD_ERR_6 "העלאה נכשלה. אפשר רישום 3" +#define D_UPLOAD_ERR_7 "ההעלאה בוטלה" +#define D_UPLOAD_ERR_8 "קובץ שגוי" +#define D_UPLOAD_ERR_9 "קובץ גדול מדי" +#define D_UPLOAD_ERR_10 "נכשלה RF הפעלת שבב" +#define D_UPLOAD_ERR_11 "נכשלה RF מחיקת שבב" +#define D_UPLOAD_ERR_12 "נכשלה RF כתיבת שבב" +#define D_UPLOAD_ERR_13 "נכשלה RF קידוד קושחת שבב" +#define D_UPLOAD_ERROR_CODE "שגיאת קוד העלאה" + +#define D_ENTER_COMMAND "הקש פקודה" +#define D_ENABLE_WEBLOG_FOR_RESPONSE "Enable weblog 2 if response expected" +#define D_NEED_USER_AND_PASSWORD "Need user=&password=" + +// xdrv_01_mqtt.ino +#define D_FINGERPRINT "Verify TLS fingerprint..." +#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" +#define D_RETRY_IN "Retry in" +#define D_VERIFIED "Verified using Fingerprint" +#define D_INSECURE "Insecure connection due to invalid Fingerprint" +#define D_CONNECT_FAILED_TO "Connect failed to" + +// xplg_wemohue.ino +#define D_MULTICAST_DISABLED "Multicast disabled" +#define D_MULTICAST_REJOINED "Multicast (re)joined" +#define D_MULTICAST_JOIN_FAILED "Multicast join failed" +#define D_FAILED_TO_SEND_RESPONSE "Failed to send response" + +#define D_WEMO "WeMo" +#define D_WEMO_BASIC_EVENT "WeMo basic event" +#define D_WEMO_EVENT_SERVICE "WeMo event service" +#define D_WEMO_META_SERVICE "WeMo meta service" +#define D_WEMO_SETUP "WeMo setup" +#define D_RESPONSE_SENT "Response sent" + +#define D_HUE "Hue" +#define D_HUE_BRIDGE_SETUP "Hue setup" +#define D_HUE_API_NOT_IMPLEMENTED "Hue API not implemented" +#define D_HUE_API "Hue API" +#define D_HUE_POST_ARGS "Hue POST args" +#define D_3_RESPONSE_PACKETS_SENT "3 response packets sent" + +// xdrv_07_domoticz.ino +#define D_DOMOTICZ_PARAMETERS "Domoticz parameters" +#define D_DOMOTICZ_IDX "Idx" +#define D_DOMOTICZ_KEY_IDX "Key idx" +#define D_DOMOTICZ_SWITCH_IDX "Switch idx" +#define D_DOMOTICZ_SENSOR_IDX "Sensor idx" + #define D_DOMOTICZ_TEMP "Temp" + #define D_DOMOTICZ_TEMP_HUM "Temp,Hum" + #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" + #define D_DOMOTICZ_POWER_ENERGY "Power,Energy" + #define D_DOMOTICZ_ILLUMINANCE "Illuminance" + #define D_DOMOTICZ_COUNT "Count/PM1" + #define D_DOMOTICZ_VOLTAGE "Voltage/PM2.5" + #define D_DOMOTICZ_CURRENT "Current/PM10" + #define D_DOMOTICZ_AIRQUALITY "AirQuality" +#define D_DOMOTICZ_UPDATE_TIMER "Update timer" + +// xdrv_09_timers.ino +#define D_CONFIGURE_TIMER "הגדרות תזמון" +#define D_TIMER_PARAMETERS "פרמטרים עבור תזמון" +#define D_TIMER_ENABLE "אפשר תזמון" +#define D_TIMER_ARM "חמש" +#define D_TIMER_TIME "זמן" +#define D_TIMER_DAYS "ימים" +#define D_TIMER_REPEAT "חזרות" +#define D_TIMER_OUTPUT "פלט" +#define D_TIMER_ACTION "פעולה" + +// xdrv_10_knx.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX Parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" +#define D_KNX_TX_SLOT "KNX TX" +#define D_KNX_RX_SLOT "KNX RX" + +// xdrv_03_energy.ino +#define D_ENERGY_TODAY "צריכה יומית" +#define D_ENERGY_YESTERDAY "צריכה בעבר" +#define D_ENERGY_TOTAL "צריכה כללית" + +// xsns_05_ds18b20.ino +#define D_SENSOR_BUSY "Sensor busy" +#define D_SENSOR_CRC_ERROR "Sensor CRC error" +#define D_SENSORS_FOUND "Sensors found" + +// xsns_06_dht.ino +#define D_TIMEOUT_WAITING_FOR "Timeout waiting for" +#define D_START_SIGNAL_LOW "start signal low" +#define D_START_SIGNAL_HIGH "start signal high" +#define D_PULSE "pulse" +#define D_CHECKSUM_FAILURE "Checksum failure" + +// xsns_07_sht1x.ino +#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor did not ACK command" +#define D_SHT1X_FOUND "SHT1X found" + +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter +#define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter +#define D_PARTICALS_BEYOND "Particals" + +// xsns_32_mpu6050.ino +#define D_AX_AXIS "Accel. X-Axis" +#define D_AY_AXIS "Accel. Y-Axis" +#define D_AZ_AXIS "Accel. Z-Axis" +#define D_GX_AXIS "Gyro X-Axis" +#define D_GY_AXIS "Gyro Y-Axis" +#define D_GZ_AXIS "Gyro Z-Axis" + +// sonoff_template.h +#define D_SENSOR_NONE "None" +#define D_SENSOR_DHT11 "DHT11" +#define D_SENSOR_AM2301 "AM2301" +#define D_SENSOR_SI7021 "SI7021" +#define D_SENSOR_DS18X20 "DS18x20" +#define D_SENSOR_I2C_SCL "I2C SCL" +#define D_SENSOR_I2C_SDA "I2C SDA" +#define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_DFR562 "MP3 Player" +#define D_SENSOR_IRSEND "IRsend" +#define D_SENSOR_SWITCH "מתג" // Suffix "1" +#define D_SENSOR_BUTTON "לחצן" // Suffix "1" +#define D_SENSOR_RELAY "ממסר" // Suffix "1i" +#define D_SENSOR_LED "לד" // Suffix "1i" +#define D_SENSOR_PWM "PWM" // Suffix "1" +#define D_SENSOR_COUNTER "מונה" // Suffix "1" +#define D_SENSOR_IRRECV "IRrecv" +#define D_SENSOR_MHZ_RX "MHZ Rx" +#define D_SENSOR_MHZ_TX "MHZ Tx" +#define D_SENSOR_PZEM_RX "PZEM Rx" +#define D_SENSOR_PZEM_TX "PZEM Tx" +#define D_SENSOR_SAIR_RX "SAir Rx" +#define D_SENSOR_SAIR_TX "SAir Tx" +#define D_SENSOR_SPI_CS "SPI CS" +#define D_SENSOR_SPI_DC "SPI DC" +#define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" +#define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" +#define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" +#define D_SENSOR_SBR_RX "SerBr Rx" +#define D_SENSOR_SBR_TX "SerBr Tx" +#define D_SENSOR_SR04_TRIG "SR04 Tri" +#define D_SENSOR_SR04_ECHO "SR04 Ech" +#define D_SENSOR_SDM120_TX "SDM120 Tx" +#define D_SENSOR_SDM120_RX "SDM120 Rx" +#define D_SENSOR_SDM630_TX "SDM630 Tx" +#define D_SENSOR_SDM630_RX "SDM630 Rx" +#define D_SENSOR_TM1638_CLK "TM16 CLK" +#define D_SENSOR_TM1638_DIO "TM16 DIO" +#define D_SENSOR_TM1638_STB "TM16 STB" + +// Units +#define D_UNIT_AMPERE "A" +#define D_UNIT_CENTIMETER "cm" +#define D_UNIT_HOUR "Hr" +#define D_UNIT_KILOOHM "kOhm" +#define D_UNIT_KILOWATTHOUR "kWh" +#define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" +#define D_UNIT_MICROSECOND "us" +#define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLISECOND "ms" +#define D_UNIT_MINUTE "Min" +#define D_UNIT_PARTS_PER_BILLION "ppb" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_PRESSURE "hPa" +#define D_UNIT_SECOND "sec" +#define D_UNIT_SECTORS "sectors" +#define D_UNIT_VA "VA" +#define D_UNIT_VAR "VAr" +#define D_UNIT_VOLT "V" +#define D_UNIT_WATT "W" +#define D_UNIT_WATTHOUR "Wh" +#define D_UNIT_HERTZ "Hz" + +// Log message prefix +#define D_LOG_APPLICATION "APP: " // Application +#define D_LOG_BRIDGE "BRG: " // Bridge +#define D_LOG_CONFIG "CFG: " // Settings +#define D_LOG_COMMAND "CMD: " // Command +#define D_LOG_DEBUG "DBG: " // Debug +#define D_LOG_DHT "DHT: " // DHT sensor +#define D_LOG_DOMOTICZ "DOM: " // Domoticz +#define D_LOG_DSB "DSB: " // DS18xB20 sensor +#define D_LOG_HTTP "HTP: " // HTTP webserver +#define D_LOG_I2C "I2C: " // I2C +#define D_LOG_IRR "IRR: " // Infra Red Received +#define D_LOG_LOG "LOG: " // Logging +#define D_LOG_MODULE "MOD: " // Module +#define D_LOG_MDNS "DNS: " // mDNS +#define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_OTHER "OTH: " // Other +#define D_LOG_RESULT "RSL: " // Result +#define D_LOG_RFR "RFR: " // RF Received +#define D_LOG_SERIAL "SER: " // Serial +#define D_LOG_SHT1 "SHT: " // SHT1x sensor +#define D_LOG_UPLOAD "UPL: " // Upload +#define D_LOG_UPNP "UPP: " // UPnP +#define D_LOG_WIFI "WIF: " // Wifi + +#endif // _LANGUAGE_HE_HE_H_ From ee9f609ed3fd5c39f2fc715c0d8d4c042fe68523 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Tue, 2 Oct 2018 19:33:31 +0200 Subject: [PATCH 230/798] Update README.md Update README to include link and information about newly proposed MQTT library and the availability of pre-compiled binaries for same. --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 524ad49ab833..fae7f5d5213b 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,16 @@ See [RELEASENOTES.md](https://github.com/arendst/Sonoff-Tasmota/blob/development The development codebase is checked hourly for changes and if new commits have been merged and compile successfuly they will be posted at http://thehackbox.org/tasmota/ (this web address can be used for OTA too). It is important to note that these are based on the current development codebase and it is not recommended to flash it to devices used in production or which are hard to reach in the event that you need to manually flash the device if OTA failed. The last compiled commit number is also posted on the same page along with the current build status (if a firmware rebuild is in progress). +The current development codebase also stages a new experimental MQTT library that is not enabled by default. This may be enabled by commenting out: + +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT + +and uncommenting: + +//#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT + +For those interested in pre-compiled binaries based on this proposed MQTT library these may be downloaded from http://thehackbox.org/mqtt/ (This URL is also OTA friendly) but please do not under any circumstances use binaries from this link on devices used for day to day purposes as the testing of this newly proposed library still needs to follow its course of testing and possible debugging - Only use it on devices that you would normally use for testing purposes as to not inconvenience yourself when having to revert back to previous firmware versions by cable upload. + ### Disclaimer :warning: **DANGER OF ELECTROCUTION** :warning: From 93460c6498652cb5563d71d41ad1d5416719a683 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Oct 2018 10:00:46 +0200 Subject: [PATCH 231/798] Change MQTT timeout Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds --- sonoff/_changelog.ino | 1 + sonoff/sonoff_post.h | 12 +++++------- sonoff/xdrv_01_mqtt.ino | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 217b665ff61e..c0eea6fdef72 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.2.1.11 20191002 * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT + * Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds * * 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 423a75f3c755..bc747155eb86 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -50,11 +50,6 @@ void KNX_CB_Action(message_t const &msg, void *arg); #define MODULE SONOFF_BASIC // [Module] Select default model #endif -#define USE_DHT // Default DHT11 sensor needs no external library -#define USE_ENERGY_SENSOR // Use energy sensors (+14k code) -#define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz -#define USE_CSE7766 // Use energy sensor for Sonoff S31 and Pow R2 - /*********************************************************************************************\ * [sonoff-sensors.bin] * Provide an image with useful supported sensors enabled @@ -272,10 +267,13 @@ void KNX_CB_Action(message_t const &msg, void *arg); #endif #ifndef MQTT_MAX_PACKET_SIZE -#define MQTT_MAX_PACKET_SIZE 1000 +#define MQTT_MAX_PACKET_SIZE 1000 // Bytes #endif #ifndef MQTT_KEEPALIVE -#define MQTT_KEEPALIVE 15 +#define MQTT_KEEPALIVE 15 // Seconds +#endif +#ifndef MQTT_TIMEOUT +#define MQTT_TIMEOUT 10000 // milli seconds #endif #ifndef MESSZ diff --git a/sonoff/xdrv_01_mqtt.ino b/sonoff/xdrv_01_mqtt.ino index 42214216af44..3a7d16990bed 100644 --- a/sonoff/xdrv_01_mqtt.ino +++ b/sonoff/xdrv_01_mqtt.ino @@ -500,7 +500,7 @@ void MqttReconnect() #elif (MQTT_LIBRARY_TYPE == MQTT_ARDUINOMQTT) MqttClient.begin(Settings.mqtt_host, Settings.mqtt_port, EspClient); MqttClient.setWill(stopic, mqtt_data, true, 1); - MqttClient.setOptions(MQTT_KEEPALIVE, true, 1000); + MqttClient.setOptions(MQTT_KEEPALIVE, true, MQTT_TIMEOUT); // MqttClient.onMessageAdvanced(MqttMyDataCb); MqttClient.onMessage(MqttMyDataCb); #endif From 1707c73264a1bf40c97abdfa458163bb4ad2fc3a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 3 Oct 2018 13:55:07 +0200 Subject: [PATCH 232/798] Update Hebrew language file Add Hebrew language file (#3960) --- platformio.ini | 15 +++++++++++++++ sonoff/_changelog.ino | 3 ++- sonoff/language/en-GB.h | 4 ++-- sonoff/language/he-HE.h | 12 +++++++++++- sonoff/user_config.h | 1 + 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index c01485f5a64b..5dfd0a44224b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -25,6 +25,7 @@ env_default = sonoff ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR +;env_default = sonoff-HE ;env_default = sonoff-HU ;env_default = sonoff-IT ;env_default = sonoff-NL @@ -294,6 +295,20 @@ upload_resetmethod = ${common.upload_resetmethod} upload_speed = ${common.upload_speed} extra_scripts = ${common.extra_scripts} +[env:sonoff-HE] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=he-HE +monitor_speed = ${common.monitor_speed} +upload_port = ${common.upload_port} +upload_resetmethod = ${common.upload_resetmethod} +upload_speed = ${common.upload_speed} +extra_scripts = ${common.extra_scripts} + [env:sonoff-HU] platform = ${common.platform} framework = ${common.framework} diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c0eea6fdef72..5fb481c67c4a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,7 +2,8 @@ * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT * Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds - * + * Add Hebrew language file (#3960) + * * 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) * Add support for Michael Haustein ESP Switch diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 21d8edab79da..043545d65a87 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -32,7 +32,7 @@ \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) - +// https://www.science.co.il/language/Locale-codes.php #define LANGUAGE_LCID 2057 // HTML (ISO 639-1) Language Code #define D_HTML_LANGUAGE "en" @@ -169,7 +169,7 @@ #define D_UV_INDEX_4 "Danger" #define D_UV_INDEX_5 "BurnL1/2" #define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" +#define D_UV_INDEX_7 "OoR" // Out of Range #define D_UV_LEVEL "UV Level" #define D_UV_POWER "UV Power" #define D_VERSION "Version" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index be6094233778..a8afee86a2dc 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -1,7 +1,7 @@ /* he-HE.h - localization for Hebrew - Israel for Sonoff-Tasmota - Copyright (C) 2018 Yuval Mejahez + Copyright (C) 2018 Yuval Mejahez This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -163,7 +163,15 @@ #define D_USER "משתמש" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV אינדקס" +#define D_UV_INDEX_1 "Low" +#define D_UV_INDEX_2 "Mid" +#define D_UV_INDEX_3 "High" +#define D_UV_INDEX_4 "Danger" +#define D_UV_INDEX_5 "BurnL1/2" +#define D_UV_INDEX_6 "BurnL3" +#define D_UV_INDEX_7 "OoR" // Out of Range #define D_UV_LEVEL "UV רמת" +#define D_UV_POWER "UV Power" #define D_VERSION "גרסה" #define D_VOLTAGE "מתח" #define D_WARMLIGHT "חום" @@ -493,6 +501,7 @@ #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HOUR "Hr" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" @@ -514,6 +523,7 @@ #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" #define D_UNIT_HERTZ "Hz" +#define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 11b8c1d61a9b..161b84fa1a66 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -196,6 +196,7 @@ //#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default //#define MY_LANGUAGE es-AR // Spanish in Argentina //#define MY_LANGUAGE fr-FR // French in France +//#define MY_LANGUAGE he-HE // Hebrew in Israel //#define MY_LANGUAGE hu-HU // Hungarian in Hungary //#define MY_LANGUAGE it-IT // Italian in Italy //#define MY_LANGUAGE nl-NL // Dutch in the Netherlands From cea848dec4489c13376a00d5573c11129e7c3733 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 3 Oct 2018 19:29:46 +0200 Subject: [PATCH 233/798] Fix XSS-Vulnerability in configuration page Add HTML entity encoding to the SSID of networks that can be found using the "Scan for wifi networks" function of the configuration page. --- sonoff/xdrv_02_webserver.ino | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 6a939dc24b71..86472b27c7c4 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -789,6 +789,17 @@ void HandleWifiConfiguration() HandleWifi(false); } +String htmlEscape(String s) +{ + s.replace("&", "&"); + s.replace("<", "<"); + s.replace(">", ">"); + s.replace("\"", """); + s.replace("'", "'"); + s.replace("/", "/"); + return s; +} + void HandleWifi(boolean scan) { if (HttpUser()) { return; } @@ -854,7 +865,7 @@ void HandleWifi(boolean scan) String item = FPSTR(HTTP_LNK_ITEM); String rssiQ; rssiQ += quality; - item.replace(F("{v}"), WiFi.SSID(indices[i])); + item.replace(F("{v}"), htmlEscape(WiFi.SSID(indices[i]))); item.replace(F("{w}"), String(WiFi.channel(indices[i]))); item.replace(F("{r}"), rssiQ); uint8_t auth = WiFi.encryptionType(indices[i]); From dbb7b279056a876a3a13f4bd8ff792546212aa6e Mon Sep 17 00:00:00 2001 From: Frank Maas Date: Thu, 4 Oct 2018 00:19:32 +0200 Subject: [PATCH 234/798] Update _changelog.ino It's not 2019 yet... --- sonoff/_changelog.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 5fb481c67c4a..00c59c3a56d1 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,4 @@ -/* 6.2.1.11 20191002 +/* 6.2.1.11 20181002 * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT * Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds From 4ebcbf084adb4a3b48a88ee1837d4c0f7ad19640 Mon Sep 17 00:00:00 2001 From: Mike Date: Thu, 4 Oct 2018 08:25:32 +0200 Subject: [PATCH 235/798] Driver update 1.0.0.4 20181003 added - MP3Reset command in case that the player do rare things and needs a reset, the default volume will be set again too - MP3_CMD_RESET_VALUE for the player reset function - MP3_CMD_DAC command to switch off/on the dac outputs cleaned - some comments and added function text header fixed - missing void's in function calls tested - works with MP3Device 1 = USB STick, or MP3Device 2 = SD-Card - DAC looks working too on a headset. Had no amplifier for test --- sonoff/xdrv_14_mp3.ino | 102 ++++++++++++++++++++++++++++++----------- 1 file changed, 75 insertions(+), 27 deletions(-) diff --git a/sonoff/xdrv_14_mp3.ino b/sonoff/xdrv_14_mp3.ino index d799aa1f0822..3bbf32bd0442 100644 --- a/sonoff/xdrv_14_mp3.ino +++ b/sonoff/xdrv_14_mp3.ino @@ -19,6 +19,16 @@ -------------------------------------------------------------------------------------------- Version yyyymmdd Action Description -------------------------------------------------------------------------------------------- + 1.0.0.4 20181003 added - MP3Reset command in case that the player do rare things + - and needs a reset, the default volume will be set again too + added - MP3_CMD_RESET_VALUE for the player reset function + cleaned - some comments and added function text header + fixed - missing void's in function calls + added - MP3_CMD_DAC command to switch off/on the dac outputs + tested - works with MP3Device 1 = USB STick, or MP3Device 2 = SD-Card + - after power and/or reset the SD-Card(2) is the default device + - DAC looks working too on a headset. Had no amplifier for test + --- 1.0.0.3 20180915 added - select device for SD-Card or USB Stick, default will be SD-Card tested - works by MP3Device 1 = USB STick, or MP3Device 2 = SD-Card - after power and/or reset the SD-Card(2) is the default device @@ -61,13 +71,20 @@ TasmotaSerial *MP3Player; +/*********************************************************************************************\ + * constants +\*********************************************************************************************/ + #define D_CMND_MP3 "MP3" const char S_JSON_MP3_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_MP3 "%s\":%d}"; const char S_JSON_MP3_COMMAND[] PROGMEM = "{\"" D_CMND_MP3 "%s\"}"; -const char kMP3_Commands[] PROGMEM = "Track|Play|Pause|Stop|Volume|EQ|Device"; +const char kMP3_Commands[] PROGMEM = "Track|Play|Pause|Stop|Volume|EQ|Device|Reset|DAC"; + +/*********************************************************************************************\ + * enumerationsines +\*********************************************************************************************/ -// enumerations enum MP3_Commands { // commands useable in console or rules CMND_MP3_TRACK, // MP3Track 001...255 CMND_MP3_PLAY, // MP3Play, after pause or normal start to play @@ -75,9 +92,17 @@ enum MP3_Commands { // commands useable in conso CMND_MP3_STOP, // MP3Stop, real stop, original version was pause function CMND_MP3_VOLUME, // MP3Volume 0..100 CMND_MP3_EQ, // MP3EQ 0..5 - CMND_MP3_DEVICE }; // sd-card: 02, usb-stick: 01 + CMND_MP3_DEVICE, // sd-card: 02, usb-stick: 01 + CMND_MP3_RESET, // MP3Reset, a fresh and default restart + CMND_MP3_DAC }; // set dac, 1=off, 0=on, DAC is turned on (0) by default + + +/*********************************************************************************************\ + * command defines +\*********************************************************************************************/ -// defines +#define MP3_CMD_RESET_VALUE 0 // mp3 reset command value +// player commands #define MP3_CMD_TRACK 0x03 // specify playback of a track, e.g. MP3Track 003 #define MP3_CMD_PLAY 0x0d // Play, works as a normal play on a real MP3 Player, starts at 001.mp3 file on the selected device #define MP3_CMD_PAUSE 0x0e // Pause, was original designed as stop, see data sheet @@ -85,10 +110,14 @@ enum MP3_Commands { // commands useable in conso #define MP3_CMD_VOLUME 0x06 // specifies the volume and means a console input as 0..100 #define MP3_CMD_EQ 0x07 // specify EQ(0/1/2/3/4/5), 0:Normal, 1:Pop, 2:Rock, 3:Jazz, 4:Classic, 5:Bass #define MP3_CMD_DEVICE 0x09 // specify playback device, USB=1, SD-Card=2, default is 2 also after reset or power down/up +#define MP3_CMD_RESET 0x0C // send a reset command to start fresh +#define MP3_CMD_DAC 0x1A // activate or deactivate the DAC output for an external amplifier, DAC is turned on by default + +/*********************************************************************************************\ + * calculate the checksum + * starts with cmd[1] with a length of 6 bytes +\*********************************************************************************************/ -// calculate the checksum -// starts with cmd[1] with a length of 6 bytes -// uint16_t MP3_Checksum(uint8_t *array) { uint16_t checksum = 0; @@ -96,43 +125,58 @@ uint16_t MP3_Checksum(uint8_t *array) checksum += array[i]; } checksum = checksum^0xffff; - return checksum+1; + return (checksum+1); } -// init player, define serial tx port -// fixed with 9600 baud -// -void MP3PlayerInit() { +/*********************************************************************************************\ + * init player + * define serial tx port fixed with 9600 baud +\*********************************************************************************************/ + +void MP3PlayerInit(void) { MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3_DFR562]); // start serial communication fixed to 9600 baud if (MP3Player->begin(9600)) { MP3Player->flush(); - delay(1000); // set delay - // volume setting - MP3_CMD(MP3_CMD_VOLUME, MP3_VOLUME); // set volume depending on the entry in the user_config.h + delay(1000); + MP3_CMD(MP3_CMD_RESET, MP3_CMD_RESET_VALUE); // reset the player to defaults + delay(3000); + MP3_CMD(MP3_CMD_VOLUME, MP3_VOLUME); // after reset set volume depending on the entry in the user_config.h } + return; } -// create mp3 command payload and send it via serail interface to the MP3 player -// {start byte, version, length, command, feedback, para MSB, para LSB, chks MSB, chks LSB, end byte}; -// {cmd[0] , cmd[1] , cmd[2], cmd[3] , cmd[4] , cmd[5] , cmd[6] , cmd[7] , cmd[8] , cmd[9] }; -// {0x7e , 0xff , 6 , 0 , 0/1 , 0 , 0 , 0 , 0 , 0xef }; -// +/*********************************************************************************************\ + * create the MP3 commands payload, and send it via serial interface to the MP3 player + * data length is 6 = 6 bytes [FF 06 09 00 00 00] but not counting the start, end, and verification. + * {start byte, version, length, command, feedback, para MSB, para LSB, chks MSB, chks LSB, end byte}; + * {cmd[0] , cmd[1] , cmd[2], cmd[3] , cmd[4] , cmd[5] , cmd[6] , cmd[7] , cmd[8] , cmd[9] }; + * {0x7e , 0xff , 6 , 0 , 0/1 , 0 , 0 , 0 , 0 , 0xef }; +\*********************************************************************************************/ + void MP3_CMD(uint8_t mp3cmd,uint16_t val) { + uint8_t i = 0; uint8_t cmd[10] = {0x7e,0xff,6,0,0,0,0,0,0,0xef}; // fill array cmd[3] = mp3cmd; // mp3 command value - //cmd[4] = ; // feedback, yet not use + cmd[4] = 0; // feedback, 1=yes, 0=no, yet not use cmd[5] = val>>8; // data value, shift 8 byte right cmd[6] = val; // data value low byte - uint16_t chks = MP3_Checksum(&cmd[1]); // see calculate the checksum, line 62..72 + uint16_t chks = MP3_Checksum(&cmd[1]); // see calculate the checksum cmd[7] = chks>>8; // checksum. shift 8 byte right cmd[8] = chks; // checksum low byte MP3Player->write(cmd, sizeof(cmd)); // write mp3 data array to player + delay(1000); + if (mp3cmd == MP3_CMD_RESET) { + MP3_CMD(MP3_CMD_VOLUME, MP3_VOLUME); // after reset set volume depending on the entry in the user_config.h + } + return; } -// check the MP3 commands -// -boolean MP3PlayerCmd() { +/*********************************************************************************************\ + * check the MP3 commands +\*********************************************************************************************/ + +boolean MP3PlayerCmd(void) { char command[CMDSZ]; boolean serviced = true; uint8_t disp_len = strlen(D_CMND_MP3); @@ -145,27 +189,31 @@ boolean MP3PlayerCmd() { case CMND_MP3_VOLUME: case CMND_MP3_EQ: case CMND_MP3_DEVICE: + case CMND_MP3_DAC: // play a track, set volume, select EQ, sepcify file device if (XdrvMailbox.data_len > 0) { if (command_code == CMND_MP3_TRACK) { MP3_CMD(MP3_CMD_TRACK, XdrvMailbox.payload); } if (command_code == CMND_MP3_VOLUME) { MP3_CMD(MP3_CMD_VOLUME, XdrvMailbox.payload * 30 / 100); } if (command_code == CMND_MP3_EQ) { MP3_CMD(MP3_CMD_EQ, XdrvMailbox.payload); } if (command_code == CMND_MP3_DEVICE) { MP3_CMD(MP3_CMD_DEVICE, XdrvMailbox.payload); } + if (command_code == CMND_MP3_DAC) { MP3_CMD(MP3_CMD_DAC, XdrvMailbox.payload); } } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload); break; case CMND_MP3_PLAY: case CMND_MP3_PAUSE: case CMND_MP3_STOP: + case CMND_MP3_RESET: // play or re-play after pause, pause, stop, if (command_code == CMND_MP3_PLAY) { MP3_CMD(MP3_CMD_PLAY, 0); } if (command_code == CMND_MP3_PAUSE) { MP3_CMD(MP3_CMD_PAUSE, 0); } if (command_code == CMND_MP3_STOP) { MP3_CMD(MP3_CMD_STOP, 0); } + if (command_code == CMND_MP3_RESET) { MP3_CMD(MP3_CMD_RESET, 0); } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload); break; default: - // else for Unknown command - serviced = false; + // else for Unknown command + serviced = false; break; } } From 52d88439ffe0f4fbc6ccbda235f512cb7045ad62 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 4 Oct 2018 11:01:50 +0200 Subject: [PATCH 236/798] Fix Domoticz exception Fix exception when wrong Domoticz JSON message is received (#3963) --- sonoff/_changelog.ino | 3 ++- sonoff/xdrv_07_domoticz.ino | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 00c59c3a56d1..2af5885dbf01 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,7 +3,8 @@ * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT * Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds * Add Hebrew language file (#3960) - * + * Fix exception when wrong Domoticz JSON message is received (#3963) + * * 6.2.1.10 20180930 * Add command RGBWWTable to support color calibration (#3933) * Add support for Michael Haustein ESP Switch diff --git a/sonoff/xdrv_07_domoticz.ino b/sonoff/xdrv_07_domoticz.ino index a30f79439063..7710cad13c01 100644 --- a/sonoff/xdrv_07_domoticz.ino +++ b/sonoff/xdrv_07_domoticz.ino @@ -150,6 +150,15 @@ void DomoticzMqttSubscribe() "svalue1" : "0", "switchType" : "Dimmer", "unit" : 1 +} + * Fail on this one +{ + "LastUpdate" : "2018-10-02 20:39:45", + "Name" : "Sfeerverlichting", + "Status" : "Off", + "Timers" : "true", + "Type" : "Group", + "idx" : "2" } */ @@ -157,7 +166,7 @@ boolean DomoticzMqttData() { char stemp1[10]; unsigned long idx = 0; - int16_t nvalue; + int16_t nvalue = -1; int16_t found = 0; domoticz_update_flag = 1; @@ -174,7 +183,9 @@ boolean DomoticzMqttData() // return 1; // } idx = domoticz["idx"]; - nvalue = domoticz["nvalue"]; + if (domoticz.containsKey("nvalue")) { + nvalue = domoticz["nvalue"]; + } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DOMOTICZ "idx %d, nvalue %d"), idx, nvalue); AddLog(LOG_LEVEL_DEBUG_MORE); @@ -198,7 +209,11 @@ boolean DomoticzMqttData() found = 1; } else if ((!iscolordimmer && 2 == nvalue) || // gswitch_sSetLevel (iscolordimmer && 15 == nvalue)) { // Color_SetBrightnessLevel - nvalue = domoticz["svalue1"]; + if (domoticz.containsKey("svalue1")) { + nvalue = domoticz["svalue1"]; + } else { + return 1; + } if (light_type && (Settings.light_dimmer == nvalue) && ((power >> i) &1)) { return 1; } From 4ba10206091f0ec873beceea4f84417bfd19adbc Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Thu, 4 Oct 2018 13:41:15 +0200 Subject: [PATCH 237/798] Update de-DE.h --- sonoff/language/de-DE.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 72f63f9c4ad6..f035235c70ae 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -124,9 +124,9 @@ #define D_PORT "Port" #define D_POWER_FACTOR "Leistungsfaktor" #define D_POWERUSAGE "Leistung" -#define D_POWERUSAGE_ACTIVE "Active Power" -#define D_POWERUSAGE_APPARENT "Apparent Power" -#define D_POWERUSAGE_REACTIVE "Reactive Power" +#define D_POWERUSAGE_ACTIVE "Wirkleistung" +#define D_POWERUSAGE_APPARENT "Scheinleistung" +#define D_POWERUSAGE_REACTIVE "Blindleistung" #define D_PRESSURE "Luftdruck" #define D_PRESSUREATSEALEVEL "Luftdruck auf Meereshöhe" #define D_PROGRAM_FLASH_SIZE "Ges. Flash Speicher" From 4208baddac848a423e35d219e971808b234c11d8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 5 Oct 2018 17:54:12 +0200 Subject: [PATCH 238/798] Update language files Update language files --- sonoff/language/bg-BG.h | 4 ++++ sonoff/language/cs-CZ.h | 4 ++++ sonoff/language/de-DE.h | 4 ++++ sonoff/language/el-GR.h | 4 ++++ sonoff/language/en-GB.h | 8 ++++++-- sonoff/language/es-AR.h | 4 ++++ sonoff/language/fr-FR.h | 4 ++++ sonoff/language/he-HE.h | 6 +++++- sonoff/language/hu-HU.h | 4 ++++ sonoff/language/it-IT.h | 4 ++++ sonoff/language/nl-NL.h | 4 ++++ sonoff/language/pl-PL.h | 4 ++++ sonoff/language/pt-BR.h | 4 ++++ sonoff/language/pt-PT.h | 4 ++++ sonoff/language/ru-RU.h | 4 ++++ sonoff/language/tr-TR.h | 4 ++++ sonoff/language/uk-UK.h | 5 ++++- sonoff/language/zh-CN.h | 4 ++++ sonoff/language/zh-TW.h | 6 +++++- 19 files changed, 80 insertions(+), 5 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index d79eb5210f61..177bc69abe50 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV мощност" #define D_VERSION "Версия" #define D_VOLTAGE "Напрежение" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Топла" #define D_WEB_SERVER "Уеб сървър" @@ -496,12 +497,15 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kΩ" #define D_UNIT_KILOWATTHOUR "kWh" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 570cfd4c8f88..498287457794 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Verze" #define D_VOLTAGE "Napětí" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Teplé světlo" #define D_WEB_SERVER "Web Server" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "hod" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index f035235c70ae..dec1e472330a 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Intensität" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "warm" #define D_WEB_SERVER "Web-Server" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 23b5a2705fbc..e0a1cca7ab7c 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Έκδοση" #define D_VOLTAGE "Τάση" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Ζεστό" #define D_WEB_SERVER "Web διακομιστής" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 043545d65a87..6478d5bde320 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.14.0b + * Updated until v6.2.1.11 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Version" #define D_VOLTAGE "Voltage" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Warm" #define D_WEB_SERVER "Web Server" @@ -496,12 +497,16 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" +#define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" @@ -522,7 +527,6 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" -#define D_UNIT_HERTZ "Hz" #define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 713e166aba28..843dd3dd8950 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versión" #define D_VOLTAGE "Tensión" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Cálida" #define D_WEB_SERVER "Servidor Web" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index a7adaea39123..6f0c2960abaa 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -174,6 +174,7 @@ #define D_UV_POWER "Puissance UV" #define D_VERSION "Version" #define D_VOLTAGE "Tension" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Chaud" #define D_WEB_SERVER "Serveur web" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kΩ" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index a8afee86a2dc..b81cbd355d5c 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "גרסה" #define D_VOLTAGE "מתח" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "חום" #define D_WEB_SERVER "Web שרת" @@ -496,12 +497,16 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" +#define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" @@ -522,7 +527,6 @@ #define D_UNIT_VOLT "V" #define D_UNIT_WATT "W" #define D_UNIT_WATTHOUR "Wh" -#define D_UNIT_HERTZ "Hz" #define D_UNIT_WATT_METER_QUADRAT "W/m²" // Log message prefix diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index ee6b8a66a670..88ddb273a409 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Verzió" #define D_VOLTAGE "Feszültség" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Meleg" #define D_WEB_SERVER "Web Szerver" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "ó" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index b0fe0767a441..62deadea53b9 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versione" #define D_VOLTAGE "Tensione" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Calda" #define D_WEB_SERVER "Web Server" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 70e55cb878e5..921e3b483d81 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versie" #define D_VOLTAGE "Spanning" +#define D_WEIGHT "Gewicht" #define D_WARMLIGHT "Warm" #define D_WEB_SERVER "Webserver" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "h" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 40383fb53e56..85e141c29a6a 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Wersja" #define D_VOLTAGE "Napięcie" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Nagrzanie" #define D_WEB_SERVER "Web Server" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Godz" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 49affdf2f0e6..96874a2c0144 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versão" #define D_VOLTAGE "Voltagem" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Luz quente" #define D_WEB_SERVER "Servidor WEB" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "H" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index fd2e984518bb..51b40d248ebd 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versão" #define D_VOLTAGE "Voltagem" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Luz Quente" #define D_WEB_SERVER "servidor WEB" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 9c62666931d6..1bcf140d6787 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Версия" #define D_VOLTAGE "Напряжение" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Тепло" #define D_WEB_SERVER "Web сервер" @@ -496,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "А" @@ -503,6 +506,7 @@ #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "Ч" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "кОм" #define D_UNIT_KILOWATTHOUR "кВт" #define D_UNIT_LUX "лк" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 0c411868e7fb..f28764d507d2 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versiyon" #define D_VOLTAGE "Voltaj" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Sıcak" #define D_WEB_SERVER "Web Sunucusu" @@ -497,12 +498,15 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "A" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HOUR "Hr" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 3a9b44afacf4..f6a2d39c772a 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Версія" #define D_VOLTAGE "Напруга" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "Тепло" #define D_WEB_SERVER "Web сервер" @@ -483,7 +484,6 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -#define D_SENSOR_SDS0X1 "SDS0X1" #define D_SENSOR_SDS0X1_RX "SDS0X1 Rx" #define D_SENSOR_SDS0X1_TX "SDS0X1 Tx" #define D_SENSOR_SBR_RX "SerBr Rx" @@ -497,6 +497,8 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "А" @@ -504,6 +506,7 @@ #define D_UNIT_HERTZ "Гц" #define D_UNIT_HOUR "Г" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "кОм" #define D_UNIT_KILOWATTHOUR "кВт" #define D_UNIT_LUX "лк" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 59271d20189a..763601964216 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "版本" #define D_VOLTAGE "电压" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "暖" #define D_WEB_SERVER "Web Server" @@ -496,12 +497,15 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "安" #define D_UNIT_CENTIMETER "厘米" #define D_UNIT_HOUR "时" #define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "千欧" #define D_UNIT_KILOWATTHOUR "千瓦时" #define D_UNIT_LUX "勒克斯" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 5b275b925870..59791b776340 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -174,6 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "版本" #define D_VOLTAGE "電壓" +#define D_WEIGHT "Weight" #define D_WARMLIGHT "暖" #define D_WEB_SERVER "Web Server" @@ -496,13 +497,16 @@ #define D_SENSOR_TM1638_CLK "TM16 CLK" #define D_SENSOR_TM1638_DIO "TM16 DIO" #define D_SENSOR_TM1638_STB "TM16 STB" +#define D_SENSOR_HX711_SCK "HX711 SCK" +#define D_SENSOR_HX711_DAT "HX711 DAT" // Units #define D_UNIT_AMPERE "安" #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" -#define D_UNIT_INCREMENTS "inc" #define D_UNIT_HOUR "時" +#define D_UNIT_INCREMENTS "inc" +#define D_UNIT_KILOGRAM "kg" #define D_UNIT_KILOOHM "千歐" #define D_UNIT_KILOWATTHOUR "千瓦時" #define D_UNIT_LUX "勒克斯" From f8b93ad3ea5ff5940b0c1892dccab7f9f65f88f8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 5 Oct 2018 21:59:39 -0300 Subject: [PATCH 239/798] Updated Spanish Translation --- sonoff/language/es-AR.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 843dd3dd8950..ddf191b19299 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.2.0.1 + * Updated until v6.2.1.11 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -174,7 +174,7 @@ #define D_UV_POWER "UV Power" #define D_VERSION "Versión" #define D_VOLTAGE "Tensión" -#define D_WEIGHT "Weight" +#define D_WEIGHT "Peso" #define D_WARMLIGHT "Cálida" #define D_WEB_SERVER "Servidor Web" From d3d40a160907443acc76d590fe60efbddcfb1d59 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 6 Oct 2018 16:46:25 +0200 Subject: [PATCH 240/798] Update cs-CZ language --- sonoff/language/cs-CZ.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 498287457794..9d3cbf1600b6 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -124,9 +124,9 @@ #define D_PORT "Port" #define D_POWER_FACTOR "Účiník" #define D_POWERUSAGE "Příkon" -#define D_POWERUSAGE_ACTIVE "Active Power" -#define D_POWERUSAGE_APPARENT "Apparent Power" -#define D_POWERUSAGE_REACTIVE "Reactive Power" +#define D_POWERUSAGE_ACTIVE "Činný příkon" +#define D_POWERUSAGE_APPARENT "Zdánlivý příkon" +#define D_POWERUSAGE_REACTIVE "Jalový příkon" #define D_PRESSURE "Tlak" #define D_PRESSUREATSEALEVEL "Tlak na hladině moře" #define D_PROGRAM_FLASH_SIZE "Velikost paměti flash" @@ -163,18 +163,18 @@ #define D_USER "Uživatel" #define D_UTC_TIME "UTC" #define D_UV_INDEX "UV Index" -#define D_UV_INDEX_1 "Low" -#define D_UV_INDEX_2 "Mid" -#define D_UV_INDEX_3 "High" -#define D_UV_INDEX_4 "Danger" -#define D_UV_INDEX_5 "BurnL1/2" -#define D_UV_INDEX_6 "BurnL3" -#define D_UV_INDEX_7 "OoR" +#define D_UV_INDEX_1 "Nízký" +#define D_UV_INDEX_2 "Střední" +#define D_UV_INDEX_3 "Vysoký" +#define D_UV_INDEX_4 "Nebezpečný" +#define D_UV_INDEX_5 "Popál1/2" +#define D_UV_INDEX_6 "Popál3" +#define D_UV_INDEX_7 "MimoRozsah" #define D_UV_LEVEL "úroveň UV" #define D_UV_POWER "UV Power" #define D_VERSION "Verze" #define D_VOLTAGE "Napětí" -#define D_WEIGHT "Weight" +#define D_WEIGHT "Hmotnost" #define D_WARMLIGHT "Teplé světlo" #define D_WEB_SERVER "Web Server" @@ -333,10 +333,10 @@ #define D_UPLOAD_ERR_7 "Nahrávání přerušeno" #define D_UPLOAD_ERR_8 "Špatný soubor" #define D_UPLOAD_ERR_9 "Soubor je příliš velký" -#define D_UPLOAD_ERR_10 "Failed to init RF chip" -#define D_UPLOAD_ERR_11 "Failed to erase RF chip" -#define D_UPLOAD_ERR_12 "Failed to write to RF chip" -#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" +#define D_UPLOAD_ERR_10 "Chyba inicializace RF chipu" +#define D_UPLOAD_ERR_11 "Chyba smazání RF chipu" +#define D_UPLOAD_ERR_12 "Chyba při zápisu do RF chipu" +#define D_UPLOAD_ERR_13 "Chyba dekódování RF firmwaru" #define D_UPLOAD_ERROR_CODE "Chyba nahrávání" #define D_ENTER_COMMAND "Vlož příkaz" @@ -505,8 +505,8 @@ #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" #define D_UNIT_HOUR "hod" -#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOGRAM "kg" +#define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From 174f2736dccbd5307c6d33bc46e8d73e24786399 Mon Sep 17 00:00:00 2001 From: synekvl <42292671+synekvl@users.noreply.github.com> Date: Sat, 6 Oct 2018 18:46:29 +0200 Subject: [PATCH 241/798] Update cs-CZ.h --- sonoff/language/cs-CZ.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 9d3cbf1600b6..e4fb5c66db46 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v6.1.1c + * Updated until v6.2.1.11 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) From 461fed62909b6da85451c1d49aa6827a80a4479b Mon Sep 17 00:00:00 2001 From: Mike Date: Sat, 6 Oct 2018 20:48:26 +0200 Subject: [PATCH 242/798] missing "" around UV Index test in json Fixed the missing "" around the UV Index test in json Old one: "VEML6070":{"UvLevel":6212,"UvIndex":8.32,"UvIndexText":Danger,"UvPower":0.208}} New one: "VEML6070":{"UvLevel":6212,"UvIndex":8.32,"UvIndexText":"Danger","UvPower":0.208}} Now it works. I have no mqtt system running so i did not know that this would happen. Possible i have to build up one system. --- sonoff/xsns_11_veml6070.ino | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index c06175584d1e..68d25234ad24 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -31,6 +31,9 @@ Version Date Action Description -------------------------------------------------------------------------------------------- + 1.0.0.3 20181006 fixed - missing "" around the UV Index text + - thanks to Lisa she had tested it on here mqtt system. + -- 1.0.0.2 20180928 tests - same as in version 1.0.0.1 cleaned - source code changed - snprintf_P for json and web server output @@ -77,9 +80,9 @@ - show not only the UV Power value in W/m2, possible a @define value to show it as joule value - add a #define to select how many characters are shown benhind the decimal point for the UV Index --- - 1.0.0.0 20180912 started - further development by mike2nl - https://github.com/mike2nl/Sonoff-Tasmota - forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota - base - code base from arendst too + 1.0.0.0 20180912 started - further development by mike2nl - https://github.com/mike2nl/Sonoff-Tasmota + forked - from arendst/tasmota - https://github.com/arendst/Sonoff-Tasmota + base - code base from arendst too */ @@ -168,11 +171,11 @@ void Veml6070EverySecond(void) { // all = 10..15[ms] if (11 == (uptime %100)) { - Veml6070ModeCmd(1); // on = 1[ms], wakeup the UV sensor + Veml6070ModeCmd(1); // on = 1[ms], wakeup the UV sensor Veml6070Detect(); // 1[ms], check for sensor and init with IT time Veml6070ModeCmd(0); // off = 5[ms], suspend the UV sensor } else { - Veml6070ModeCmd(1); // 1[ms], wakeup the UV sensor + Veml6070ModeCmd(1); // 1[ms], wakeup the UV sensor uvlevel = Veml6070ReadUv(); // 1..2[ms], get UV raw values uvrisk = Veml6070UvRiskLevel(uvlevel); // 0..1[ms], get UV risk level uvpower = Veml6070UvPower(uvrisk); // 2[ms], get UV power in W/m2 @@ -277,10 +280,10 @@ void Veml6070Show(boolean json) dtostrfd(uvpower, 3, str_uvpower); if (json) { #ifdef USE_VEML6070_SHOW_RAW - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_LEVEL "\":%s,\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":%s,\"" D_JSON_UV_POWER "\":%s}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_LEVEL "\":%s,\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":\"%s\",\"" D_JSON_UV_POWER "\":%s}"), mqtt_data, veml6070_name, str_uvlevel, str_uvrisk, str_uvrisk_text, str_uvpower); #else - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":%s,\"" D_JSON_UV_POWER "\":%s}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_UV_INDEX "\":%s,\"" D_JSON_UV_INDEX_TEXT "\":\"%s\",\"" D_JSON_UV_POWER "\":%s}"), mqtt_data, veml6070_name, str_uvrisk, str_uvrisk_text, str_uvpower); #endif // USE_VEML6070_SHOW_RAW #ifdef USE_DOMOTICZ From adc3d4ebaa0be33a9184307c5b6c489395eeb94b Mon Sep 17 00:00:00 2001 From: phelagor Date: Sat, 6 Oct 2018 22:05:15 +0200 Subject: [PATCH 243/798] Added support for CSL Aplic WDP303075 - Added template for Module. - Added support for HLW8012 (HLW_SEL is different to sonoff POW, needs different level to read voltage) --- sonoff/sonoff_template.h | 19 ++++++++++++++++++- sonoff/xnrg_01_hlw8012.ino | 9 +++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index aad498f3baeb..f997eb555165 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -235,6 +235,7 @@ enum SupportedModules { ESP_SWITCH, OBI, TECKIN, + APLIC_WDP303075, MAXMODULE }; /********************************************************************************************/ @@ -409,7 +410,8 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { AILIGHT, // Light Bulbs PHILIPS, WITTY, // Development Devices - WEMOS + WEMOS, + APLIC_WDP303075 }; // Default module settings @@ -1112,6 +1114,21 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 + }, + { "AplicWDP303075", // Aplic WDP 303075 (ESP8285 - HLW8012 Energy Monitoring) + // https://www.amazon.de/dp/B07CNWVNJ2 + 0, // GPIO00 + 0, // GPIO01 + 0, // GPIO02 + GPIO_KEY1, // GPIO03 Button + GPIO_HLW_CF, // GPIO04 HLW8012 CF (power) + GPIO_HLW_CF1, // GPIO05 HLW8012 CF1 (current/voltage) + 0, 0, 0, 0, 0, 0, // ? + GPIO_HLW_SEL, // GPIO12 HLW8012 CF Sel output (CF) + GPIO_LED1_INV, // GPIO13 LED + GPIO_REL1, // GPIO14 Relay SRU 5VDC SDA (0= Off, 1 = On ) + 0, // GPIO15 + 0, 0 } }; diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 0bcfa9060c35..5c63b48265b6 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -33,6 +33,10 @@ #define HLW_IREF 4545 // 4.545A #define HLW_SEL_VOLTAGE 1 + +// HLW8012 based (APLIC_WDP303075) +#define A_HLW_SEL_VOLTAGE 0 + // HJL-01 based (BlitzWolf, Homecube, Gosund, Teckin) #define HJL_PREF 1362 #define HJL_UREF 822 @@ -182,6 +186,11 @@ void HlwSnsInit() hlw_voltage_ratio = HJL_UREF; hlw_current_ratio = HJL_IREF; hlw_ui_flag = HJL_SEL_VOLTAGE; + } else if (APLIC_WDP303075 == Settings.module){ + hlw_power_ratio = HLW_PREF; + hlw_voltage_ratio = HLW_UREF; + hlw_current_ratio = HLW_IREF; + hlw_ui_flag = A_HLW_SEL_VOLTAGE; } else { hlw_power_ratio = HLW_PREF; hlw_voltage_ratio = HLW_UREF; From 5bbec2617fab2520d9acd547f324d3d8fa7fc66f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 7 Oct 2018 12:37:03 +0200 Subject: [PATCH 244/798] 6.2.1.12 - Fixes Shelly1 and CSL 6.2.1.12 20181007 * Fix Shelly1 switchmode 3 and 4 when using pushbutton (#3989) * Add support for CSL Aplic WDP 303075 Power Socket with Energy Monitoring (#3991, #3996) --- sonoff/_changelog.ino | 6 +++- sonoff/sonoff.ino | 8 +++-- sonoff/sonoff_template.h | 61 +++++++++++++++++++------------------- sonoff/sonoff_version.h | 2 +- sonoff/xnrg_01_hlw8012.ino | 46 ++++++++++++++-------------- 5 files changed, 65 insertions(+), 58 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 2af5885dbf01..e04c9c7276fb 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,8 @@ -/* 6.2.1.11 20181002 +/* 6.2.1.12 20181007 + * Fix Shelly1 switchmode 3 and 4 when using pushbutton (#3989) + * Add support for CSL Aplic WDP 303075 Power Socket with Energy Monitoring (#3991, #3996) + * + * 6.2.1.11 20181002 * Remove support for MQTT Client based on esp-mqtt-arduino by #define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO * Add support for MQTT Client based on lwmqtt to be selected by #define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT * Change MQTT_ARDUINOMQTT command timeout from 1 to 10 seconds diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index b89ffe138342..958c7879b839 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2306,9 +2306,11 @@ void GpioSwitchPinMode(uint8_t index) if (pin[GPIO_SWT1 +index] < 99) { // pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, index) ? INPUT : INPUT_PULLUP); - uint8_t no_pullup = 0; - if (bitRead(switch_no_pullup, index)) { - no_pullup = (Settings.switchmode[index] < PUSHBUTTON); + uint8_t no_pullup = bitRead(switch_no_pullup, index); + if (no_pullup) { + if (SHELLY2 == Settings.module) { + no_pullup = (Settings.switchmode[index] < PUSHBUTTON); + } } pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : (no_pullup) ? INPUT : INPUT_PULLUP); } diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f997eb555165..ca352149d9ed 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -135,9 +135,11 @@ enum ProgramSelectablePins { GPIO_SPI_MISO, // SPI MISO library fixed pin GPIO12 GPIO_SPI_MOSI, // SPI MOSI library fixed pin GPIO13 GPIO_SPI_CLK, // SPI Clk library fixed pin GPIO14 - GPIO_HLW_SEL, // HLW8012 Sel output (Sonoff Pow) - GPIO_HLW_CF1, // HLW8012 CF1 voltage / current (Sonoff Pow) - GPIO_HLW_CF, // HLW8012 CF power (Sonoff Pow) + GPIO_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) + GPIO_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) + GPIO_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current + GPIO_HLW_CF, // HLW8012 CF power + GPIO_HJL_CF, // HJL-01/BL0937 CF power GPIO_ADC0, // ADC GPIO_DI, // my92x1 PWM input GPIO_DCKI, // my92x1 CLK input @@ -396,6 +398,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { SHELLY2, BLITZWOLF_BWSHP2, // Socket Relay Devices with Energy Monitoring TECKIN, + APLIC_WDP303075, NEO_COOLCAM, // Socket Relay Devices OBI, ESP_SWITCH, // Switch Devices @@ -410,8 +413,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { AILIGHT, // Light Bulbs PHILIPS, WITTY, // Development Devices - WEMOS, - APLIC_WDP303075 + WEMOS }; // Default module settings @@ -492,10 +494,10 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "Sonoff Pow", // Sonoff Pow (ESP8266 - HLW8012) GPIO_KEY1, // GPIO00 Button 0, 0, 0, 0, - GPIO_HLW_SEL, // GPIO05 HLW8012 Sel output + GPIO_NRG_SEL, // GPIO05 HLW8012 Sel output (1 = Voltage) 0, 0, 0, 0, 0, 0, // Flash connection GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_HLW_CF1, // GPIO13 HLW8012 CF1 voltage / current + GPIO_NRG_CF1, // GPIO13 HLW8012 CF1 voltage / current GPIO_HLW_CF, // GPIO14 HLW8012 CF power GPIO_LED1, // GPIO15 Blue Led (0 = On, 1 = Off) 0, 0 @@ -729,8 +731,8 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_KEY1, // GPIO4 Button GPIO_REL1_INV, // GPIO5 Relay (0 = On, 1 = Off) 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_HLW_CF1, // GPIO12 HLW8012 CF1 voltage / current - GPIO_HLW_SEL, // GPIO13 HLW8012 Sel output + GPIO_NRG_CF1, // GPIO12 HLW8012 CF1 voltage / current + GPIO_NRG_SEL, // GPIO13 HLW8012 Sel output (1 = Voltage) GPIO_HLW_CF, // GPIO14 HLW8012 CF power 0, 0, 0 }, @@ -899,10 +901,10 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { // https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ GPIO_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF - GPIO_HLW_CF1, // GPIO05 HLW8012 CF1 + GPIO_HLW_CF, // GPIO04 HLW8012 CF power + GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_HLW_SEL, // GPIO12 HLW8012 SEL + GPIO_NRG_SEL, // GPIO12 HLW8012 SEL (1 = Voltage) GPIO_LED1_INV, // GPIO13 Green Led GPIO_REL1, // GPIO14 Relay 0, 0, 0 @@ -1030,11 +1032,11 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_LED1_INV, // GPIO02 Blue Led (1 = On, 0 = Off) GPIO_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_HLW_CF, // GPIO05 BL0937 or HJL-01 CF power + GPIO_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_HLW_SEL, // GPIO12 BL0937 or HJL-01 Sel output + GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) GPIO_KEY1, // GPIO13 Button - GPIO_HLW_CF1, // GPIO14 BL0937 or HJL-01 CF1 voltage / current + GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, @@ -1107,28 +1109,25 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_KEY1, // GPIO01 Serial TXD and Button 0, GPIO_LED2_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) - GPIO_HLW_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_HLW_CF1, // GPIO05 BL0937 or HJL-01 CF1 voltage / current + GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_HLW_SEL, // GPIO12 BL0937 or HJL-01 Sel output + GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 }, - { "AplicWDP303075", // Aplic WDP 303075 (ESP8285 - HLW8012 Energy Monitoring) + { "AplicWDP303075", // Aplic WDP 303075 (ESP8285 - HLW8012 Energy Monitoring) // https://www.amazon.de/dp/B07CNWVNJ2 - 0, // GPIO00 - 0, // GPIO01 - 0, // GPIO02 - GPIO_KEY1, // GPIO03 Button - GPIO_HLW_CF, // GPIO04 HLW8012 CF (power) - GPIO_HLW_CF1, // GPIO05 HLW8012 CF1 (current/voltage) - 0, 0, 0, 0, 0, 0, // ? - GPIO_HLW_SEL, // GPIO12 HLW8012 CF Sel output (CF) - GPIO_LED1_INV, // GPIO13 LED - GPIO_REL1, // GPIO14 Relay SRU 5VDC SDA (0= Off, 1 = On ) - 0, // GPIO15 - 0, 0 + 0, 0, 0, + GPIO_KEY1, // GPIO03 Button + GPIO_HLW_CF, // GPIO04 HLW8012 CF power + GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) + GPIO_LED1_INV, // GPIO13 LED (0 = On, 1 = Off) + GPIO_REL1, // GPIO14 Relay SRU 5VDC SDA (0 = Off, 1 = On ) + 0, 0, 0 } }; diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 60a04432697a..df02100d3cd7 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010B +#define VERSION 0x0602010C #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index 5c63b48265b6..0a7a074e7d27 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -27,26 +27,21 @@ #define XNRG_01 1 -// HLW8012 based (Sonoff Pow, KMC70011, HuaFan) +// Energy model type 0 (GPIO_HLW_CF) - HLW8012 based (Sonoff Pow, KMC70011, HuaFan, AplicWDP303075) #define HLW_PREF 10000 // 1000.0W #define HLW_UREF 2200 // 220.0V #define HLW_IREF 4545 // 4.545A -#define HLW_SEL_VOLTAGE 1 - -// HLW8012 based (APLIC_WDP303075) -#define A_HLW_SEL_VOLTAGE 0 - -// HJL-01 based (BlitzWolf, Homecube, Gosund, Teckin) +// Energy model type 1 (GPIO_HJL_CF) - HJL-01/BL0937 based (BlitzWolf, Homecube, Gosund, Teckin) #define HJL_PREF 1362 #define HJL_UREF 822 #define HJL_IREF 3300 -#define HJL_SEL_VOLTAGE 0 #define HLW_POWER_PROBE_TIME 10 // Number of seconds to probe for power before deciding none used byte hlw_select_ui_flag; byte hlw_ui_flag = 1; +byte hlw_model_type = 0; byte hlw_load_off; byte hlw_cf1_timer; unsigned long hlw_cf_pulse_length; @@ -124,7 +119,7 @@ void HlwEvery200ms() if (hlw_cf1_timer >= 8) { hlw_cf1_timer = 0; hlw_select_ui_flag = (hlw_select_ui_flag) ? 0 : 1; - digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); + digitalWrite(pin[GPIO_NRG_SEL], hlw_select_ui_flag); if (hlw_cf1_pulse_counter) { hlw_cf1_pulse_length = hlw_cf1_summed_pulse_length / hlw_cf1_pulse_counter; @@ -181,21 +176,14 @@ void HlwSnsInit() Settings.energy_current_calibration = HLW_IREF_PULSE; } - if ((BLITZWOLF_BWSHP2 == Settings.module) || (TECKIN == Settings.module)) { + if (hlw_model_type) { hlw_power_ratio = HJL_PREF; hlw_voltage_ratio = HJL_UREF; hlw_current_ratio = HJL_IREF; - hlw_ui_flag = HJL_SEL_VOLTAGE; - } else if (APLIC_WDP303075 == Settings.module){ - hlw_power_ratio = HLW_PREF; - hlw_voltage_ratio = HLW_UREF; - hlw_current_ratio = HLW_IREF; - hlw_ui_flag = A_HLW_SEL_VOLTAGE; } else { hlw_power_ratio = HLW_PREF; hlw_voltage_ratio = HLW_UREF; hlw_current_ratio = HLW_IREF; - hlw_ui_flag = HLW_SEL_VOLTAGE; } hlw_cf_pulse_length = 0; @@ -212,10 +200,10 @@ void HlwSnsInit() hlw_select_ui_flag = 0; // Voltage; - pinMode(pin[GPIO_HLW_SEL], OUTPUT); - digitalWrite(pin[GPIO_HLW_SEL], hlw_select_ui_flag); - pinMode(pin[GPIO_HLW_CF1], INPUT_PULLUP); - attachInterrupt(pin[GPIO_HLW_CF1], HlwCf1Interrupt, FALLING); + pinMode(pin[GPIO_NRG_SEL], OUTPUT); + digitalWrite(pin[GPIO_NRG_SEL], hlw_select_ui_flag); + pinMode(pin[GPIO_NRG_CF1], INPUT_PULLUP); + attachInterrupt(pin[GPIO_NRG_CF1], HlwCf1Interrupt, FALLING); pinMode(pin[GPIO_HLW_CF], INPUT_PULLUP); attachInterrupt(pin[GPIO_HLW_CF], HlwCfInterrupt, FALLING); @@ -225,7 +213,21 @@ void HlwSnsInit() void HlwDrvInit() { if (!energy_flg) { - if ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // Sonoff Pow or any HLW8012 based device + hlw_model_type = 0; + if (pin[GPIO_HJL_CF] < 99) { + pin[GPIO_HLW_CF] = pin[GPIO_HJL_CF]; + pin[GPIO_HJL_CF] = 99; + hlw_model_type = 1; + } + + hlw_ui_flag = 1; + if (pin[GPIO_NRG_SEL_INV] < 99) { + pin[GPIO_NRG_SEL] = pin[GPIO_NRG_SEL_INV]; + pin[GPIO_NRG_SEL_INV] = 99; + hlw_ui_flag = 0; + } + + if ((pin[GPIO_NRG_SEL] < 99) && (pin[GPIO_NRG_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // HLW8012 or HJL-01 based device energy_flg = XNRG_01; } } From dfce7a280acf4371f6627404e0adbf57f991ec62 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 7 Oct 2018 14:24:52 -0300 Subject: [PATCH 245/798] Add PWM Freq Limits Config at Compile time PWM_MAX and PWM_MIN are added with explanation comments in order to let a user, who wants to use a Servo, to config these values. Not added at runtime in order to avoid issues with dimmers. --- sonoff/sonoff.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index f891e387ad76..9a84fabd640d 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -80,6 +80,10 @@ typedef unsigned long power_t; // Power (Relay) type //#define PWM_FREQ 1000 // 100..1000 Hz led refresh //#define PWM_FREQ 910 // 100..1000 Hz led refresh (iTead value) #define PWM_FREQ 880 // 100..1000 Hz led refresh (BN-SZ01 value) +#define PWM_MAX 4000 // [PWM_MAX] Maximum frequency - Default: 4000 +#define PWM_MIN 100 // [PWM_MIN] Minimum frequency - Default: 100 + // For Dimmers use double of your mains AC frequecy (100 for 50Hz and 120 for 60Hz) + // For Controlling Servos use 50 and also set PWM_FREQ as 50 (DO NOT USE THESE VALUES FOR DIMMERS) #define DEFAULT_POWER_DELTA 80 // Power change percentage #define MAX_POWER_HOLD 10 // Time in SECONDS to allow max agreed power From efb328de099e6e486494b4f49efbd26dd22f4529 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 7 Oct 2018 14:27:09 -0300 Subject: [PATCH 246/798] Add PWM Freq Limits Config at Compile time --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 958c7879b839..89badfbe13f6 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -914,7 +914,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); } else if (CMND_PWMFREQUENCY == command_code) { - if ((1 == payload) || ((payload >= 100) && (payload <= 4000))) { + if ((1 == payload) || ((payload >= PWM_MIN) && (payload <= PWM_MAX))) { Settings.pwm_frequency = (1 == payload) ? PWM_FREQ : payload; analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) } From 30154e23352faddbffbf8b9a75212970895cce8b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 8 Oct 2018 10:30:24 +0200 Subject: [PATCH 247/798] 6.2.1.13 Change to ArduinoMqtt 6.2.1.13 20181008 * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff.h | 5 +++-- sonoff/sonoff_version.h | 2 +- sonoff/user_config.h | 4 ++-- sonoff/xdrv_01_mqtt.ino | 17 ++++++++++------- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index e04c9c7276fb..2f3a38392de0 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.12 20181007 +/* 6.2.1.13 20181008 + * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler + * + * 6.2.1.12 20181007 * Fix Shelly1 switchmode 3 and 4 when using pushbutton (#3989) * Add support for CSL Aplic WDP 303075 Power Socket with Energy Monitoring (#3991, #3996) * diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 9a84fabd640d..2e16b59b05f9 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -144,8 +144,9 @@ typedef unsigned long power_t; // Power (Relay) type #define NEO_GRBW 6 // Neopixel GRBW leds #define MQTT_PUBSUBCLIENT 1 // Mqtt PubSubClient library -#define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino -#define MQTT_ARDUINOMQTT 3 // Mqtt arduino-mqtt library by Joel Gaehwiler (https://github.com/256dpi/arduino-mqtt) +#define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino - soon obsolete +#define MQTT_ESPMQTTARDUINO 3 // Mqtt esp-mqtt-arduino library by Ingo Randolf - obsolete +#define MQTT_ARDUINOMQTT 4 // Mqtt arduino-mqtt library by Joel Gaehwiler (https://github.com/256dpi/arduino-mqtt) // Sunrise and Sunset DawnType #define DAWN_NORMAL -0.8333 diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index df02100d3cd7..eba7ddc21502 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010C +#define VERSION 0x0602010D #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 161b84fa1a66..0ed7eba3539c 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -220,11 +220,11 @@ * Select ONE of possible MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 (core 2.3.0), +14k4 (core 2.4.2 lwip2) code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. TLS should work but needs to be tested. -//#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem) +#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem) // -- MQTT ---------------------------------------- #define MQTT_TELE_RETAIN 0 // Tele messages may send retain flag (0 = off, 1 = on) diff --git a/sonoff/xdrv_01_mqtt.ino b/sonoff/xdrv_01_mqtt.ino index 3a7d16990bed..3cb76e86d6b9 100644 --- a/sonoff/xdrv_01_mqtt.ino +++ b/sonoff/xdrv_01_mqtt.ino @@ -27,23 +27,26 @@ // Alternative MQTT driver does not block network when MQTT server is unavailable. TLS should work but needs to be tested. //#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Use arduino-mqtt (lwmqtt) library (+3k3 code, +2k mem) -#ifdef USE_MQTT_TLS +#if (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) // Obsolete as of v6.2.1.11 +#undef MQTT_LIBRARY_TYPE +#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT +#endif /* -#ifdef MQTT_LIBRARY_TYPE +#if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) #undef MQTT_LIBRARY_TYPE +#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT // Obsolete in near future #endif -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as it only supports TLS */ + +#ifdef USE_MQTT_TLS + #if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) #undef MQTT_LIBRARY_TYPE -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as it only supports TLS #endif -#else - #ifndef MQTT_LIBRARY_TYPE -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as default +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library as it only supports TLS #endif #endif From 641005ebbc6dbece43a87a75d04b2597cdc466c8 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 8 Oct 2018 12:01:38 +0200 Subject: [PATCH 248/798] Remove note on new MQTT build --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index fae7f5d5213b..524ad49ab833 100644 --- a/README.md +++ b/README.md @@ -21,16 +21,6 @@ See [RELEASENOTES.md](https://github.com/arendst/Sonoff-Tasmota/blob/development The development codebase is checked hourly for changes and if new commits have been merged and compile successfuly they will be posted at http://thehackbox.org/tasmota/ (this web address can be used for OTA too). It is important to note that these are based on the current development codebase and it is not recommended to flash it to devices used in production or which are hard to reach in the event that you need to manually flash the device if OTA failed. The last compiled commit number is also posted on the same page along with the current build status (if a firmware rebuild is in progress). -The current development codebase also stages a new experimental MQTT library that is not enabled by default. This may be enabled by commenting out: - -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT - -and uncommenting: - -//#define MQTT_LIBRARY_TYPE MQTT_ARDUINOMQTT - -For those interested in pre-compiled binaries based on this proposed MQTT library these may be downloaded from http://thehackbox.org/mqtt/ (This URL is also OTA friendly) but please do not under any circumstances use binaries from this link on devices used for day to day purposes as the testing of this newly proposed library still needs to follow its course of testing and possible debugging - Only use it on devices that you would normally use for testing purposes as to not inconvenience yourself when having to revert back to previous firmware versions by cable upload. - ### Disclaimer :warning: **DANGER OF ELECTROCUTION** :warning: From ba16e00e3645e4ca7d35addbd721e7df13fe606e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 8 Oct 2018 14:39:36 +0200 Subject: [PATCH 249/798] Add command WebRefresh Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 --- sonoff/_changelog.ino | 1 + sonoff/i18n.h | 4 ++++ sonoff/settings.h | 17 +++++++---------- sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 10 ++++++++-- sonoff/xdrv_02_webserver.ino | 16 ++++++++++++---- 6 files changed, 33 insertions(+), 17 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 2f3a38392de0..b2210c830130 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.2.1.13 20181008 * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler + * Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 * * 6.2.1.12 20181007 * Fix Shelly1 switchmode 3 and 4 when using pushbutton (#3989) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index bc161c078236..ab1f0a1d2c52 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -46,6 +46,7 @@ #define D_JSON_COMMAND "Command" #define D_JSON_CONNECT_FAILED "Connect failed" #define D_JSON_COREVERSION "Core" +#define D_JSON_COUNT "Count" #define D_JSON_COUNTER "Counter" #define D_JSON_CURRENT "Current" // As in Voltage and Current #define D_JSON_DATA "Data" @@ -137,6 +138,7 @@ #define D_JSON_VCC "Vcc" #define D_JSON_VERSION "Version" #define D_JSON_VOLTAGE "Voltage" +#define D_JSON_WEIGHT "Weight" #define D_JSON_WIFI "Wifi" #define D_JSON_WRONG "Wrong" #define D_JSON_WRONG_PARAMETERS "Wrong parameters" @@ -187,6 +189,7 @@ #define D_CMND_FREQUENCY_RESOLUTION "FreqRes" #define D_CMND_CURRENT_RESOLUTION "AmpRes" #define D_CMND_ENERGY_RESOLUTION "EnergyRes" +#define D_CMND_WEIGHT_RESOLUTION "WeightRes" #define D_CMND_MODULE "Module" #define D_CMND_MODULES "Modules" #define D_CMND_GPIO "GPIO" @@ -277,6 +280,7 @@ #define D_JSON_WITH_IP_ADDRESS "with IP address" #define D_CMND_WEBPASSWORD "WebPassword" #define D_CMND_WEBLOG "WebLog" +#define D_CMND_WEBREFRESH "WebRefresh" #define D_CMND_WEBSEND "WebSend" #define D_CMND_EMULATION "Emulation" diff --git a/sonoff/settings.h b/sonoff/settings.h index 978b72b24a5c..26f4f28657ed 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -110,8 +110,7 @@ typedef union { uint32_t spare06 : 1; uint32_t spare07 : 1; uint32_t spare08 : 1; - uint32_t spare09 : 1; - uint32_t spare10 : 1; + uint32_t weight_resolution : 2; uint32_t frequency_resolution : 2; uint32_t axis_resolution : 2; uint32_t current_resolution : 2; @@ -321,20 +320,18 @@ struct SYSCFG { byte free_717[1]; // 717 uint16_t mcp230xx_int_timer; // 718 - uint8_t rgbwwTable[5]; // 71A - byte free_71F[169]; // 71F + byte free_71F[157]; // 71F + uint16_t weight_item; // 7BC Weight of one item in gram * 10 + uint16_t weight_max; // 7BE Total max weight in kilogram + unsigned long weight_reference; // 7C0 Reference weight in gram + unsigned long weight_calibration; // 7C4 unsigned long energy_frequency_calibration; // 7C8 - - byte free_7CC[2]; // 7CC - + uint16_t web_refresh; // 7CC char mems[MAX_RULE_MEMS][10]; // 7CE - // 800 Full - no more free locations - char rules[MAX_RULE_SETS][MAX_RULE_SIZE]; // 800 uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b - // E00 - FFF free locations } Settings; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 2e16b59b05f9..5d41aa18df27 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -145,7 +145,7 @@ typedef unsigned long power_t; // Power (Relay) type #define MQTT_PUBSUBCLIENT 1 // Mqtt PubSubClient library #define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino - soon obsolete -#define MQTT_ESPMQTTARDUINO 3 // Mqtt esp-mqtt-arduino library by Ingo Randolf - obsolete +#define MQTT_ESPMQTTARDUINO 3 // Mqtt esp-mqtt-arduino library by Ingo Randolf - obsolete but define is present for debugging purposes #define MQTT_ARDUINOMQTT 4 // Mqtt arduino-mqtt library by Joel Gaehwiler (https://github.com/256dpi/arduino-mqtt) // Sunrise and Sunset DawnType diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 89badfbe13f6..23ee2a27db13 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -77,7 +77,7 @@ enum TasmotaCommands { CMND_BACKLOG, CMND_DELAY, CMND_POWER, CMND_FANSPEED, CMND_STATUS, CMND_STATE, CMND_POWERONSTATE, CMND_PULSETIME, CMND_BLINKTIME, CMND_BLINKCOUNT, CMND_SENSOR, CMND_SAVEDATA, CMND_SETOPTION, CMND_TEMPERATURE_RESOLUTION, CMND_HUMIDITY_RESOLUTION, - CMND_PRESSURE_RESOLUTION, CMND_POWER_RESOLUTION, CMND_VOLTAGE_RESOLUTION, CMND_FREQUENCY_RESOLUTION, CMND_CURRENT_RESOLUTION, CMND_ENERGY_RESOLUTION, + CMND_PRESSURE_RESOLUTION, CMND_POWER_RESOLUTION, CMND_VOLTAGE_RESOLUTION, CMND_FREQUENCY_RESOLUTION, CMND_CURRENT_RESOLUTION, CMND_ENERGY_RESOLUTION, CMND_WEIGHT_RESOLUTION, CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, @@ -87,7 +87,7 @@ enum TasmotaCommands { const char kTasmotaCommands[] PROGMEM = D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_FANSPEED "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|" D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SENSOR "|" D_CMND_SAVEDATA "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|" - D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" + D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_WEIGHT_RESOLUTION "|" D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" @@ -821,6 +821,12 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.energy_resolution); } + else if (CMND_WEIGHT_RESOLUTION == command_code) { + if ((payload >= 0) && (payload <= 3)) { + Settings.flag2.weight_resolution = payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.weight_resolution); + } else if (CMND_MODULE == command_code) { if ((payload > 0) && (payload <= MAXMODULE)) { payload--; diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 86472b27c7c4..099411eba25d 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -25,6 +25,8 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ +#define HTTP_REFRESH_TIME 2345 // milliseconds + #ifdef USE_RF_FLASH uint8_t *efm8bb1_update = NULL; #endif // USE_RF_FLASH @@ -72,7 +74,7 @@ const char HTTP_HEAD[] PROGMEM = "};" "x.open('GET','ay'+a,true);" "x.send();" - "lt=setTimeout(la,2345);" + "lt=setTimeout(la,{a});" // Settings.web_refresh "}" "function lb(p){" "la('?d='+p);" @@ -147,7 +149,7 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM = "x.open('GET','ax?c2='+id+o,true);" "x.send();" "}" - "lt=setTimeout(l,2345);" + "lt=setTimeout(l,{a});" "return false;" "}" ""; @@ -367,6 +369,7 @@ void ExecuteWebCommand(char* svalue, int source) void StartWebserver(int type, IPAddress ipweb) { + if (!Settings.web_refresh) { Settings.web_refresh = HTTP_REFRESH_TIME; } if (!webserver_state) { if (!WebServer) { WebServer = new ESP8266WebServer((HTTP_MANAGER==type) ? 80 : WEB_PORT); @@ -497,6 +500,7 @@ void ShowPage(String &page, bool auth) return WebServer->requestAuthentication(); } + page.replace(F("{a}"), String(Settings.web_refresh)); page.replace(F("{ha"), my_module.name); page.replace(F("{h}"), Settings.friendlyname[0]); if (HTTP_MANAGER == webserver_state) { @@ -1994,8 +1998,8 @@ int WebSend(char *buffer) /*********************************************************************************************/ -enum WebCommands { CMND_WEBSERVER, CMND_WEBPASSWORD, CMND_WEBLOG, CMND_WEBSEND, CMND_EMULATION }; -const char kWebCommands[] PROGMEM = D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBSEND "|" D_CMND_EMULATION ; +enum WebCommands { CMND_WEBSERVER, CMND_WEBPASSWORD, CMND_WEBLOG, CMND_WEBREFRESH, CMND_WEBSEND, CMND_EMULATION }; +const char kWebCommands[] PROGMEM = D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBREFRESH "|" D_CMND_WEBSEND "|" D_CMND_EMULATION ; const char kWebSendStatus[] PROGMEM = D_JSON_DONE "|" D_JSON_WRONG_PARAMETERS "|" D_JSON_CONNECT_FAILED "|" D_JSON_HOST_NOT_FOUND ; bool WebCommand() @@ -2028,6 +2032,10 @@ bool WebCommand() if ((XdrvMailbox.payload >= LOG_LEVEL_NONE) && (XdrvMailbox.payload <= LOG_LEVEL_ALL)) { Settings.weblog_level = XdrvMailbox.payload; } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.weblog_level); } + else if (CMND_WEBREFRESH == command_code) { + if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload <= 10000)) { Settings.web_refresh = XdrvMailbox.payload; } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.web_refresh); + } else if (CMND_WEBSEND == command_code) { if (XdrvMailbox.data_len > 0) { uint8_t result = WebSend(XdrvMailbox.data); From 3bc3e7e3323b30eeb6bfe46a2cd666e7cbf11d28 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 8 Oct 2018 17:25:42 -0300 Subject: [PATCH 250/798] Add comment for sleep command (datasheet) --- sonoff/support.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index d2b38bb0999d..d5cf005ba298 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1298,13 +1298,13 @@ void WiFiSetSleepMode() * See https://github.com/arendst/Sonoff-Tasmota/issues/2559 */ -//#ifdef ARDUINO_ESP8266_RELEASE_2_4_1 +// Sleep explanation: https://github.com/esp8266/Arduino/blob/3f0c601cfe81439ce17e9bd5d28994a7ed144482/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp#L255 #if defined(ARDUINO_ESP8266_RELEASE_2_4_1) || defined(ARDUINO_ESP8266_RELEASE_2_4_2) #else // Enabled in 2.3.0, 2.4.0 and stage if (sleep) { WiFi.setSleepMode(WIFI_LIGHT_SLEEP); // Allow light sleep during idle times } else { - WiFi.setSleepMode(WIFI_MODEM_SLEEP); // Diable sleep (Esp8288/Arduino core and sdk default) + WiFi.setSleepMode(WIFI_MODEM_SLEEP); // Disable sleep (Esp8288/Arduino core and sdk default) } #endif } From 077b8a79e15be9446c3a7f796e895a87628de0cc Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 10 Oct 2018 16:40:54 +0200 Subject: [PATCH 251/798] 6.2.1.14 Webserver rewrite 6.2.1.14 20181010 * Rewrite Webserver page handler for easier extension (thx to Adrian Scillato) --- sonoff/_changelog.ino | 5 +- sonoff/i18n.h | 1 - sonoff/sonoff.h | 2 +- sonoff/sonoff_version.h | 2 +- ...02_webserver.ino => xdrv_01_webserver.ino} | 466 ++++++++---------- sonoff/{xdrv_01_mqtt.ino => xdrv_02_mqtt.ino} | 103 +++- sonoff/xdrv_07_domoticz.ino | 49 +- sonoff/xdrv_09_timers.ino | 33 +- sonoff/xdrv_11_knx.ino | 18 +- sonoff/xplg_wemohue.ino | 14 + 10 files changed, 389 insertions(+), 304 deletions(-) rename sonoff/{xdrv_02_webserver.ino => xdrv_01_webserver.ino} (84%) rename sonoff/{xdrv_01_mqtt.ino => xdrv_02_mqtt.ino} (86%) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b2210c830130..def41834ac1a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.13 20181008 +/* 6.2.1.14 20181010 + * Rewrite Webserver page handler for easier extension (thx to Adrian Scillato) + * + * 6.2.1.13 20181008 * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler * Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 * diff --git a/sonoff/i18n.h b/sonoff/i18n.h index ab1f0a1d2c52..62226f91fcfe 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -539,7 +539,6 @@ const char S_CONFIGURATION[] PROGMEM = D_CONFIGURATION; const char S_CONFIGURE_MODULE[] PROGMEM = D_CONFIGURE_MODULE; const char S_CONFIGURE_WIFI[] PROGMEM = D_CONFIGURE_WIFI; const char S_NO_NETWORKS_FOUND[] PROGMEM = D_NO_NETWORKS_FOUND; -const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT; const char S_CONFIGURE_LOGGING[] PROGMEM = D_CONFIGURE_LOGGING; const char S_CONFIGURE_OTHER[] PROGMEM = D_CONFIGURE_OTHER; const char S_SAVE_CONFIGURATION[] PROGMEM = D_SAVE_CONFIGURATION; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 5d41aa18df27..5bc744157042 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -214,7 +214,7 @@ enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MA enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_HANDLER}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index eba7ddc21502..080c76fa443b 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010D +#define VERSION 0x0602010E #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_01_webserver.ino similarity index 84% rename from sonoff/xdrv_02_webserver.ino rename to sonoff/xdrv_01_webserver.ino index 099411eba25d..50345145f8b1 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1,5 +1,5 @@ /* - xdrv_02_webserver.ino - webserver for Sonoff-Tasmota + xdrv_01_webserver.ino - webserver for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -193,25 +193,9 @@ const char HTTP_BTN_MENU1[] PROGMEM = const char HTTP_BTN_RSTRT[] PROGMEM = "
"; const char HTTP_BTN_MENU_MODULE[] PROGMEM = - "
"; -#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) -const char HTTP_BTN_MENU_TIMER[] PROGMEM = - "
"; -#endif // USE_TIMERS and USE_TIMERS_WEB -const char HTTP_BTN_MENU_WIFI[] PROGMEM = - "
"; -const char HTTP_BTN_MENU_MQTT[] PROGMEM = - "
" -#ifdef USE_DOMOTICZ - "
" -#endif // USE_DOMOTICZ - ""; + "
" + "
"; const char HTTP_BTN_MENU4[] PROGMEM = -#ifdef USE_KNX -#ifdef USE_KNX_WEB_MENU - "
" -#endif // USE_KNX_WEB_MENU -#endif // USE_KNX "
" "
" "
" @@ -229,34 +213,21 @@ const char HTTP_FORM_LOGIN[] PROGMEM = const char HTTP_BTN_CONF[] PROGMEM = "

"; const char HTTP_FORM_MODULE[] PROGMEM = - "
 " D_MODULE_PARAMETERS " 
" - "" + "
 " D_MODULE_PARAMETERS " " "
" D_MODULE_TYPE " ({mt)

"; const char HTTP_LNK_ITEM[] PROGMEM = "
{v} ({w}) {i} {r}%
"; const char HTTP_LNK_SCAN[] PROGMEM = - "
"; + "
"; const char HTTP_FORM_WIFI[] PROGMEM = - "
 " D_WIFI_PARAMETERS " " - "" + "
 " D_WIFI_PARAMETERS " " "
" D_AP1_SSID " (" STA_SSID1 ")

" "
" D_AP1_PASSWORD "

" "
" D_AP2_SSID " (" STA_SSID2 ")

" "
" D_AP2_PASSWORD "

" "
" D_HOSTNAME " (" WIFI_HOSTNAME ")

"; -const char HTTP_FORM_MQTT[] PROGMEM = - "
 " D_MQTT_PARAMETERS " " - "" - "
" D_HOST " (" MQTT_HOST ")

" - "
" D_PORT " (" STR(MQTT_PORT) ")

" - "
" D_CLIENT " ({m0)

" - "
" D_USER " (" MQTT_USER ")

" - "
" D_PASSWORD "

" - "
" D_TOPIC " = %topic% (" MQTT_TOPIC ")

" - "
" D_FULL_TOPIC " (" MQTT_FULLTOPIC ")

"; const char HTTP_FORM_LOG1[] PROGMEM = - "
 " D_LOGGING_PARAMETERS " " - ""; + "
 " D_LOGGING_PARAMETERS " "; const char HTTP_FORM_LOG2[] PROGMEM = "
{b0 ({b1)

" "
" D_TELEMETRY_PERIOD " (" STR(TELE_PERIOD) ")

"; const char HTTP_FORM_OTHER[] PROGMEM = - "
 " D_OTHER_PARAMETERS " " - "" + "
 " D_OTHER_PARAMETERS " " +// "" "
" D_WEB_ADMIN_PASSWORD "

" "
" D_MQTT_ENABLE "
"; const char HTTP_FORM_OTHER2[] PROGMEM = @@ -283,7 +254,7 @@ const char HTTP_FORM_OTHER3b[] PROGMEM = "
{3{4"; // Different id only used for labels #endif // USE_EMULATION const char HTTP_FORM_END[] PROGMEM = - "
"; + "
"; const char HTTP_FORM_RST[] PROGMEM = "
" "
 " D_RESTORE_CONFIGURATION " "; @@ -383,46 +354,23 @@ void StartWebserver(int type, IPAddress ipweb) WebServer->on("/ay", HandleAjaxStatusRefresh); WebServer->on("/cm", HandleHttpCommand); WebServer->on("/rb", HandleRestart); +// WebServer->on("/fwlink", HandleRoot); // Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + WebServer->onNotFound(HandleNotFound); #ifndef BE_MINIMAL WebServer->on("/cn", HandleConfiguration); WebServer->on("/md", HandleModuleConfiguration); -#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) - WebServer->on("/tm", HandleTimerConfiguration); -#endif // USE_TIMERS and USE_TIMERS_WEB - WebServer->on("/w1", HandleWifiConfigurationWithScan); - WebServer->on("/w0", HandleWifiConfiguration); - if (Settings.flag.mqtt_enabled) { - WebServer->on("/mq", HandleMqttConfiguration); -#ifdef USE_DOMOTICZ - WebServer->on("/dm", HandleDomoticzConfiguration); -#endif // USE_DOMOTICZ - } -#ifdef USE_KNX -#ifdef USE_KNX_WEB_MENU - WebServer->on("/kn", HandleKNXConfiguration); -#endif // USE_KNX_WEB_MENU -#endif // USE_KNX + WebServer->on("/wi", HandleWifiConfiguration); WebServer->on("/lg", HandleLoggingConfiguration); WebServer->on("/co", HandleOtherConfiguration); WebServer->on("/dl", HandleBackupConfiguration); - WebServer->on("/sv", HandleSaveSettings); WebServer->on("/rs", HandleRestoreConfiguration); WebServer->on("/rt", HandleResetConfiguration); WebServer->on("/in", HandleInformation); #ifdef USE_EMULATION - if (EMUL_WEMO == Settings.flag2.emulation) { - WebServer->on("/upnp/control/basicevent1", HTTP_POST, HandleUpnpEvent); - WebServer->on("/eventservice.xml", HandleUpnpService); - WebServer->on("/metainfoservice.xml", HandleUpnpMetaService); - WebServer->on("/setup.xml", HandleUpnpSetupWemo); - } - if (EMUL_HUE == Settings.flag2.emulation) { - WebServer->on("/description.xml", HandleUpnpSetupHue); - } + HueWemoAddHandlers(); #endif // USE_EMULATION + XdrvCall(FUNC_WEB_ADD_HANDLER); #endif // Not BE_MINIMAL - WebServer->on("/fwlink", HandleRoot); // Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. - WebServer->onNotFound(HandleNotFound); } reset_web_log_flag = 0; WebServer->begin(); // Web server start @@ -697,7 +645,30 @@ boolean HttpUser() return status; } +/*-------------------------------------------------------------------------------------------*/ + #ifndef BE_MINIMAL + +void WaitForRestart(String result) +{ + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_SAVE_CONFIGURATION)); + page += FPSTR(HTTP_HEAD_STYLE); + page += F("
" D_CONFIGURATION_SAVED "
"); + page += result; + page += F("
"); + page += FPSTR(HTTP_MSG_RSTRT); + if (HTTP_MANAGER == webserver_state) { + webserver_state = HTTP_ADMIN; + } else { + page += FPSTR(HTTP_BTN_MAIN); + } + ShowPage(page); + + ShowWebSource(SRC_WEBGUI); + restart_flag = 2; +} + void HandleConfiguration() { if (HttpUser()) { return; } @@ -708,29 +679,34 @@ void HandleConfiguration() page.replace(F("{v}"), FPSTR(S_CONFIGURATION)); page += FPSTR(HTTP_HEAD_STYLE); page += FPSTR(HTTP_BTN_MENU_MODULE); -#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) -#ifdef USE_RULES - page += FPSTR(HTTP_BTN_MENU_TIMER); -#else - if (devices_present) { page += FPSTR(HTTP_BTN_MENU_TIMER); } -#endif // USE_RULES -#endif // USE_TIMERS and USE_TIMERS_WEB - page += FPSTR(HTTP_BTN_MENU_WIFI); - if (Settings.flag.mqtt_enabled) { page += FPSTR(HTTP_BTN_MENU_MQTT); } + + mqtt_data[0] = '\0'; + XdrvCall(FUNC_WEB_ADD_BUTTON); + page += String(mqtt_data); + page += FPSTR(HTTP_BTN_MENU4); page += FPSTR(HTTP_BTN_MAIN); ShowPage(page); } +/*-------------------------------------------------------------------------------------------*/ + void HandleModuleConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } - char stemp[20]; - uint8_t midx; AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MODULE); + if (WebServer->hasArg("save")) { + ModuleSaveSettings(); + WaitForRestart(""); + return; + } + + char stemp[20]; + uint8_t midx; + String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_MODULE)); page += FPSTR(HTTP_SCRIPT_MODULE1); @@ -783,16 +759,37 @@ void HandleModuleConfiguration() ShowPage(page); } -void HandleWifiConfigurationWithScan() +void ModuleSaveSettings() { - HandleWifi(true); -} + char tmp[100]; + char stemp[TOPSZ]; -void HandleWifiConfiguration() -{ - HandleWifi(false); + WebGetArg("g99", tmp, sizeof(tmp)); + byte new_module = (!strlen(tmp)) ? MODULE : atoi(tmp); + Settings.last_module = Settings.module; + Settings.module = new_module; + mytmplt cmodule; + memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); + String gpios = ""; + for (byte i = 0; i < MAX_GPIO_PIN; i++) { + if (Settings.last_module != new_module) { + Settings.my_gp.io[i] = 0; + } else { + if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { + snprintf_P(stemp, sizeof(stemp), PSTR("g%d"), i); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.my_gp.io[i] = (!strlen(tmp)) ? 0 : atoi(tmp); + gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(Settings.my_gp.io[i]); + } + } + } + snprintf_P(stemp, sizeof(stemp), kModules[Settings.module].name); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), stemp, gpios.c_str()); + AddLog(LOG_LEVEL_INFO); } +/*-------------------------------------------------------------------------------------------*/ + String htmlEscape(String s) { s.replace("&", "&"); @@ -804,18 +801,25 @@ String htmlEscape(String s) return s; } -void HandleWifi(boolean scan) +void HandleWifiConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_WIFI); + if (WebServer->hasArg("save")) { + WifiSaveSettings(); + String result = F("
" D_TRYING_TO_CONNECT "
"); + WaitForRestart(result); + return; + } + String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_WIFI)); page += FPSTR(HTTP_HEAD_STYLE); - if (scan) { + if (WebServer->hasArg("scan")) { #ifdef USE_EMULATION UdpDisconnect(); #endif // USE_EMULATION @@ -901,39 +905,46 @@ void HandleWifi(boolean scan) ShowPage(page, !(HTTP_MANAGER == webserver_state)); } -void HandleMqttConfiguration() +void WifiSaveSettings() { - if (HttpUser()) { return; } - if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); + char tmp[100]; - String page = FPSTR(HTTP_HEAD); - page.replace(F("{v}"), FPSTR(S_CONFIGURE_MQTT)); - page += FPSTR(HTTP_HEAD_STYLE); - page += FPSTR(HTTP_FORM_MQTT); - char str[sizeof(Settings.mqtt_client)]; - page.replace(F("{m0"), Format(str, MQTT_CLIENT_ID, sizeof(Settings.mqtt_client))); - page.replace(F("{m1"), Settings.mqtt_host); - page.replace(F("{m2"), String(Settings.mqtt_port)); - page.replace(F("{m3"), Settings.mqtt_client); - page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); - page.replace(F("{m6"), Settings.mqtt_topic); - page.replace(F("{m7"), Settings.mqtt_fulltopic); - page += FPSTR(HTTP_FORM_END); - page += FPSTR(HTTP_BTN_CONF); - ShowPage(page); + WebGetArg("h", tmp, sizeof(tmp)); + strlcpy(Settings.hostname, (!strlen(tmp)) ? WIFI_HOSTNAME : tmp, sizeof(Settings.hostname)); + if (strstr(Settings.hostname,"%")) { + strlcpy(Settings.hostname, WIFI_HOSTNAME, sizeof(Settings.hostname)); + } + WebGetArg("s1", tmp, sizeof(tmp)); + strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? STA_SSID1 : tmp, sizeof(Settings.sta_ssid[0])); + WebGetArg("s2", tmp, sizeof(tmp)); + strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? STA_SSID2 : tmp, sizeof(Settings.sta_ssid[1])); + WebGetArg("p1", tmp, sizeof(tmp)); + strlcpy(Settings.sta_pwd[0], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[0] : tmp, sizeof(Settings.sta_pwd[0])); + WebGetArg("p2", tmp, sizeof(tmp)); + strlcpy(Settings.sta_pwd[1], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[1] : tmp, sizeof(Settings.sta_pwd[1])); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s"), + Settings.hostname, Settings.sta_ssid[0], Settings.sta_ssid[1]); + AddLog(LOG_LEVEL_INFO); } +/*-------------------------------------------------------------------------------------------*/ + void HandleLoggingConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_LOGGING); + if (WebServer->hasArg("save")) { + LoggingSaveSettings(); + HandleConfiguration(); + return; + } + String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_LOGGING)); page += FPSTR(HTTP_HEAD_STYLE); + page += FPSTR(HTTP_FORM_LOG1); for (byte idx = 0; idx < 3; idx++) { page += FPSTR(HTTP_FORM_LOG2); @@ -973,11 +984,46 @@ void HandleLoggingConfiguration() ShowPage(page); } +void LoggingSaveSettings() +{ + char tmp[100]; + + WebGetArg("ls", tmp, sizeof(tmp)); + Settings.seriallog_level = (!strlen(tmp)) ? SERIAL_LOG_LEVEL : atoi(tmp); + WebGetArg("lw", tmp, sizeof(tmp)); + Settings.weblog_level = (!strlen(tmp)) ? WEB_LOG_LEVEL : atoi(tmp); + WebGetArg("ll", tmp, sizeof(tmp)); + Settings.syslog_level = (!strlen(tmp)) ? SYS_LOG_LEVEL : atoi(tmp); + syslog_level = Settings.syslog_level; + syslog_timer = 0; + WebGetArg("lh", tmp, sizeof(tmp)); + strlcpy(Settings.syslog_host, (!strlen(tmp)) ? SYS_LOG_HOST : tmp, sizeof(Settings.syslog_host)); + WebGetArg("lp", tmp, sizeof(tmp)); + Settings.syslog_port = (!strlen(tmp)) ? SYS_LOG_PORT : atoi(tmp); + WebGetArg("lt", tmp, sizeof(tmp)); + Settings.tele_period = (!strlen(tmp)) ? TELE_PERIOD : atoi(tmp); + if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) { + Settings.tele_period = 10; // Do not allow periods < 10 seconds + } + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), + Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); + AddLog(LOG_LEVEL_INFO); +} + +/*-------------------------------------------------------------------------------------------*/ + void HandleOtherConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_OTHER); + + if (WebServer->hasArg("save")) { + OtherSaveSettings(); + WaitForRestart(""); + return; + } + char stemp[40]; String page = FPSTR(HTTP_HEAD); @@ -1011,6 +1057,32 @@ void HandleOtherConfiguration() ShowPage(page); } +void OtherSaveSettings() +{ + char tmp[100]; + char stemp[TOPSZ]; + char stemp2[TOPSZ]; + + WebGetArg("p1", tmp, sizeof(tmp)); + strlcpy(Settings.web_password, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.web_password : tmp, sizeof(Settings.web_password)); + Settings.flag.mqtt_enabled = WebServer->hasArg("b1"); +#ifdef USE_EMULATION + WebGetArg("b2", tmp, sizeof(tmp)); + Settings.flag2.emulation = (!strlen(tmp)) ? 0 : atoi(tmp); +#endif // USE_EMULATION + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation); + for (byte i = 0; i < MAX_FRIENDLYNAMES; i++) { + snprintf_P(stemp, sizeof(stemp), PSTR("a%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + snprintf_P(stemp2, sizeof(stemp2), PSTR(FRIENDLY_NAME"%d"), i +1); + strlcpy(Settings.friendlyname[i], (!strlen(tmp)) ? (i) ? stemp2 : FRIENDLY_NAME : tmp, sizeof(Settings.friendlyname[i])); + snprintf_P(log_data, sizeof(log_data), PSTR("%s%s %s"), log_data, (i) ? "," : "", Settings.friendlyname[i]); + } + AddLog(LOG_LEVEL_INFO); +} + +/*-------------------------------------------------------------------------------------------*/ + void HandleBackupConfiguration() { if (HttpUser()) { return; } @@ -1053,171 +1125,7 @@ void HandleBackupConfiguration() Settings.cfg_crc = cfg_crc; // Restore crc in case savedata = 0 to make sure settings will be noted as changed } -void HandleSaveSettings() -{ - if (HttpUser()) { return; } - if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } - - char stemp[TOPSZ]; - char stemp2[TOPSZ]; - String result = ""; - - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_SAVE_CONFIGURATION); - - char tmp[100]; - WebGetArg("w", tmp, sizeof(tmp)); // Returns "5,1" where 5 is config type and 1 is restart flag - char *p = tmp; - uint8_t what = strtol(p, &p, 10); - p++; // Skip comma - uint8_t restart = strtol(p, &p, 10); - switch (what) { - case 1: - WebGetArg("h", tmp, sizeof(tmp)); - strlcpy(Settings.hostname, (!strlen(tmp)) ? WIFI_HOSTNAME : tmp, sizeof(Settings.hostname)); - if (strstr(Settings.hostname,"%")) { - strlcpy(Settings.hostname, WIFI_HOSTNAME, sizeof(Settings.hostname)); - } - WebGetArg("s1", tmp, sizeof(tmp)); - strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? STA_SSID1 : tmp, sizeof(Settings.sta_ssid[0])); - WebGetArg("s2", tmp, sizeof(tmp)); - strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? STA_SSID2 : tmp, sizeof(Settings.sta_ssid[1])); -// WebGetArg("s1", tmp, sizeof(tmp)); -// strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? "" : tmp, sizeof(Settings.sta_ssid[0])); -// WebGetArg("s2", tmp, sizeof(tmp)); -// strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? "" : tmp, sizeof(Settings.sta_ssid[1])); - WebGetArg("p1", tmp, sizeof(tmp)); - strlcpy(Settings.sta_pwd[0], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[0] : tmp, sizeof(Settings.sta_pwd[0])); - WebGetArg("p2", tmp, sizeof(tmp)); - strlcpy(Settings.sta_pwd[1], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[1] : tmp, sizeof(Settings.sta_pwd[1])); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s"), - Settings.hostname, Settings.sta_ssid[0], Settings.sta_ssid[1]); - AddLog(LOG_LEVEL_INFO); - result += F("
" D_TRYING_TO_CONNECT "
"); - break; - case 2: - WebGetArg("mt", tmp, sizeof(tmp)); - strlcpy(stemp, (!strlen(tmp)) ? MQTT_TOPIC : tmp, sizeof(stemp)); - MakeValidMqtt(0, stemp); - WebGetArg("mf", tmp, sizeof(tmp)); - strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2)); - MakeValidMqtt(1,stemp2); - if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) { - snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : ""); - MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic - } - strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic)); - strlcpy(Settings.mqtt_fulltopic, stemp2, sizeof(Settings.mqtt_fulltopic)); - WebGetArg("mh", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_host, (!strlen(tmp)) ? MQTT_HOST : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_host)); - WebGetArg("ml", tmp, sizeof(tmp)); - Settings.mqtt_port = (!strlen(tmp)) ? MQTT_PORT : atoi(tmp); - WebGetArg("mc", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_client, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp, sizeof(Settings.mqtt_client)); - WebGetArg("mu", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); - WebGetArg("mp", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), - Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); - AddLog(LOG_LEVEL_INFO); - break; - case 3: - WebGetArg("ls", tmp, sizeof(tmp)); - Settings.seriallog_level = (!strlen(tmp)) ? SERIAL_LOG_LEVEL : atoi(tmp); - WebGetArg("lw", tmp, sizeof(tmp)); - Settings.weblog_level = (!strlen(tmp)) ? WEB_LOG_LEVEL : atoi(tmp); - WebGetArg("ll", tmp, sizeof(tmp)); - Settings.syslog_level = (!strlen(tmp)) ? SYS_LOG_LEVEL : atoi(tmp); - syslog_level = Settings.syslog_level; - syslog_timer = 0; - WebGetArg("lh", tmp, sizeof(tmp)); - strlcpy(Settings.syslog_host, (!strlen(tmp)) ? SYS_LOG_HOST : tmp, sizeof(Settings.syslog_host)); - WebGetArg("lp", tmp, sizeof(tmp)); - Settings.syslog_port = (!strlen(tmp)) ? SYS_LOG_PORT : atoi(tmp); - WebGetArg("lt", tmp, sizeof(tmp)); - Settings.tele_period = (!strlen(tmp)) ? TELE_PERIOD : atoi(tmp); - if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) { - Settings.tele_period = 10; // Do not allow periods < 10 seconds - } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), - Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); - AddLog(LOG_LEVEL_INFO); - break; -#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) - case 7: - TimerSaveSettings(); - break; -#endif // USE_TIMERS and USE_TIMERS_WEB -#ifdef USE_DOMOTICZ - case 4: - DomoticzSaveSettings(); - break; -#endif // USE_DOMOTICZ - case 5: - WebGetArg("p1", tmp, sizeof(tmp)); - strlcpy(Settings.web_password, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.web_password : tmp, sizeof(Settings.web_password)); - Settings.flag.mqtt_enabled = WebServer->hasArg("b1"); -#ifdef USE_EMULATION - WebGetArg("b2", tmp, sizeof(tmp)); - Settings.flag2.emulation = (!strlen(tmp)) ? 0 : atoi(tmp); -#endif // USE_EMULATION - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation); - for (byte i = 0; i < MAX_FRIENDLYNAMES; i++) { - snprintf_P(stemp, sizeof(stemp), PSTR("a%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - snprintf_P(stemp2, sizeof(stemp2), PSTR(FRIENDLY_NAME"%d"), i +1); - strlcpy(Settings.friendlyname[i], (!strlen(tmp)) ? (i) ? stemp2 : FRIENDLY_NAME : tmp, sizeof(Settings.friendlyname[i])); - snprintf_P(log_data, sizeof(log_data), PSTR("%s%s %s"), log_data, (i) ? "," : "", Settings.friendlyname[i]); - } - AddLog(LOG_LEVEL_INFO); - break; - case 6: - WebGetArg("g99", tmp, sizeof(tmp)); - byte new_module = (!strlen(tmp)) ? MODULE : atoi(tmp); - Settings.last_module = Settings.module; - Settings.module = new_module; - mytmplt cmodule; - memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - String gpios = ""; - for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if (Settings.last_module != new_module) { - Settings.my_gp.io[i] = 0; - } else { - if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { - snprintf_P(stemp, sizeof(stemp), PSTR("g%d"), i); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.my_gp.io[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(Settings.my_gp.io[i]); - } - } - } - snprintf_P(stemp, sizeof(stemp), kModules[Settings.module].name); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), stemp, gpios.c_str()); - AddLog(LOG_LEVEL_INFO); - break; - } - - if (restart) { - String page = FPSTR(HTTP_HEAD); - page.replace(F("{v}"), FPSTR(S_SAVE_CONFIGURATION)); - page += FPSTR(HTTP_HEAD_STYLE); - page += F("
" D_CONFIGURATION_SAVED "
"); - page += result; - page += F("
"); - page += FPSTR(HTTP_MSG_RSTRT); - if (HTTP_MANAGER == webserver_state) { - webserver_state = HTTP_ADMIN; - } else { - page += FPSTR(HTTP_BTN_MAIN); - } - ShowPage(page); - - ShowWebSource(SRC_WEBGUI); - restart_flag = 2; - } else { - HandleConfiguration(); - } -} +/*-------------------------------------------------------------------------------------------*/ void HandleResetConfiguration() { @@ -1259,6 +1167,8 @@ void HandleRestoreConfiguration() upload_file_type = UPL_SETTINGS; } +/*-------------------------------------------------------------------------------------------*/ + void HandleInformation() { if (HttpUser()) { return; } @@ -1376,6 +1286,8 @@ void HandleInformation() } #endif // Not BE_MINIMAL +/*-------------------------------------------------------------------------------------------*/ + void HandleUpgradeFirmware() { if (HttpUser()) { return; } @@ -1669,6 +1581,8 @@ void HandleUploadLoop() delay(0); } +/*-------------------------------------------------------------------------------------------*/ + void HandlePreflightRequest() { WebServer->sendHeader(F("Access-Control-Allow-Origin"), F("*")); @@ -1677,6 +1591,8 @@ void HandlePreflightRequest() WebServer->send(200, FPSTR(HDR_CTYPE_HTML), ""); } +/*-------------------------------------------------------------------------------------------*/ + void HandleHttpCommand() { if (HttpUser()) { return; } @@ -1735,6 +1651,8 @@ void HandleHttpCommand() WebServer->send(200, FPSTR(HDR_CTYPE_JSON), message); } +/*-------------------------------------------------------------------------------------------*/ + void HandleConsole() { if (HttpUser()) { return; } @@ -1808,6 +1726,8 @@ void HandleAjaxConsoleRefresh() WebServer->send(200, FPSTR(HDR_CTYPE_XML), message); } +/*-------------------------------------------------------------------------------------------*/ + void HandleRestart() { if (HttpUser()) { return; } @@ -2061,9 +1981,9 @@ bool WebCommand() * Interface \*********************************************************************************************/ -#define XDRV_02 +#define XDRV_01 -boolean Xdrv02(byte function) +boolean Xdrv01(byte function) { boolean result = false; diff --git a/sonoff/xdrv_01_mqtt.ino b/sonoff/xdrv_02_mqtt.ino similarity index 86% rename from sonoff/xdrv_01_mqtt.ino rename to sonoff/xdrv_02_mqtt.ino index 3cb76e86d6b9..1cd6d9afffd8 100644 --- a/sonoff/xdrv_01_mqtt.ino +++ b/sonoff/xdrv_02_mqtt.ino @@ -1,5 +1,5 @@ /* - xdrv_01_mqtt.ino - mqtt support for Sonoff-Tasmota + xdrv_02_mqtt.ino - mqtt support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -782,18 +782,115 @@ bool MqttCommand() return serviced; } +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ + +#ifdef USE_WEBSERVER + +#define WEB_HANDLE_MQTT "mq" + +const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT; + +const char HTTP_BTN_MENU_MQTT[] PROGMEM = + "
"; + +const char HTTP_FORM_MQTT[] PROGMEM = + "
 " D_MQTT_PARAMETERS " 
" + "
" D_HOST " (" MQTT_HOST ")

" + "
" D_PORT " (" STR(MQTT_PORT) ")

" + "
" D_CLIENT " ({m0)

" + "
" D_USER " (" MQTT_USER ")

" + "
" D_PASSWORD "

" + "
" D_TOPIC " = %topic% (" MQTT_TOPIC ")

" + "
" D_FULL_TOPIC " (" MQTT_FULLTOPIC ")

"; + +void HandleMqttConfiguration() +{ + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); + + if (WebServer->hasArg("save")) { + MqttSaveSettings(); + WaitForRestart(""); + return; + } + + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_CONFIGURE_MQTT)); + page += FPSTR(HTTP_HEAD_STYLE); + + page += FPSTR(HTTP_FORM_MQTT); + char str[sizeof(Settings.mqtt_client)]; + page.replace(F("{m0"), Format(str, MQTT_CLIENT_ID, sizeof(Settings.mqtt_client))); + page.replace(F("{m1"), Settings.mqtt_host); + page.replace(F("{m2"), String(Settings.mqtt_port)); + page.replace(F("{m3"), Settings.mqtt_client); + page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); + page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + page.replace(F("{m6"), Settings.mqtt_topic); + page.replace(F("{m7"), Settings.mqtt_fulltopic); + + page += FPSTR(HTTP_FORM_END); + page += FPSTR(HTTP_BTN_CONF); + ShowPage(page); +} + +void MqttSaveSettings() +{ + char tmp[100]; + char stemp[TOPSZ]; + char stemp2[TOPSZ]; + + WebGetArg("mt", tmp, sizeof(tmp)); + strlcpy(stemp, (!strlen(tmp)) ? MQTT_TOPIC : tmp, sizeof(stemp)); + MakeValidMqtt(0, stemp); + WebGetArg("mf", tmp, sizeof(tmp)); + strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2)); + MakeValidMqtt(1,stemp2); + if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) { + snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : ""); + MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic + } + strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic)); + strlcpy(Settings.mqtt_fulltopic, stemp2, sizeof(Settings.mqtt_fulltopic)); + WebGetArg("mh", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_host, (!strlen(tmp)) ? MQTT_HOST : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_host)); + WebGetArg("ml", tmp, sizeof(tmp)); + Settings.mqtt_port = (!strlen(tmp)) ? MQTT_PORT : atoi(tmp); + WebGetArg("mc", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_client, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp, sizeof(Settings.mqtt_client)); + WebGetArg("mu", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); + WebGetArg("mp", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), + Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); + AddLog(LOG_LEVEL_INFO); +} +#endif // USE_WEBSERVER + /*********************************************************************************************\ * Interface \*********************************************************************************************/ -#define XDRV_01 +#define XDRV_02 -boolean Xdrv01(byte function) +boolean Xdrv02(byte function) { boolean result = false; if (Settings.flag.mqtt_enabled) { switch (function) { +#ifdef USE_WEBSERVER + case FUNC_WEB_ADD_BUTTON: + strncat_P(mqtt_data, HTTP_BTN_MENU_MQTT, sizeof(mqtt_data)); + break; + case FUNC_WEB_ADD_HANDLER: + WebServer->on("/" WEB_HANDLE_MQTT, HandleMqttConfiguration); + break; +#endif // USE_WEBSERVER case FUNC_LOOP: MqttLoop(); break; diff --git a/sonoff/xdrv_07_domoticz.ino b/sonoff/xdrv_07_domoticz.ino index 7710cad13c01..d40bae88f1e2 100644 --- a/sonoff/xdrv_07_domoticz.ino +++ b/sonoff/xdrv_07_domoticz.ino @@ -19,22 +19,6 @@ #ifdef USE_DOMOTICZ -#ifdef USE_WEBSERVER -const char HTTP_FORM_DOMOTICZ[] PROGMEM = - "
 " D_DOMOTICZ_PARAMETERS " " - "" - "
"; -const char HTTP_FORM_DOMOTICZ_RELAY[] PROGMEM = - "" - ""; - const char HTTP_FORM_DOMOTICZ_SWITCH[] PROGMEM = - ""; -const char HTTP_FORM_DOMOTICZ_SENSOR[] PROGMEM = - ""; -const char HTTP_FORM_DOMOTICZ_TIMER[] PROGMEM = - ""; -#endif // USE_WEBSERVER - const char DOMOTICZ_MESSAGE[] PROGMEM = "{\"idx\":%d,\"nvalue\":%d,\"svalue\":\"%s\",\"Battery\":%d,\"RSSI\":%d}"; enum DomoticzCommands { CMND_IDX, CMND_KEYIDX, CMND_SWITCHIDX, CMND_SENSORIDX, CMND_UPDATETIMER }; @@ -386,14 +370,39 @@ void DomoticzSensorPowerEnergy(int power, char *energy) \*********************************************************************************************/ #ifdef USE_WEBSERVER + +#define WEB_HANDLE_DOMOTICZ "dm" + const char S_CONFIGURE_DOMOTICZ[] PROGMEM = D_CONFIGURE_DOMOTICZ; +const char HTTP_BTN_MENU_DOMOTICZ[] PROGMEM = + "
"; + +const char HTTP_FORM_DOMOTICZ[] PROGMEM = + "
 " D_DOMOTICZ_PARAMETERS " 
" + "
" D_DOMOTICZ_IDX " {1
" D_DOMOTICZ_KEY_IDX " {1
" D_DOMOTICZ_SWITCH_IDX " {1
" D_DOMOTICZ_SENSOR_IDX " {1 {2
" D_DOMOTICZ_UPDATE_TIMER " (" STR(DOMOTICZ_UPDATE_TIMER) ")
"; +const char HTTP_FORM_DOMOTICZ_RELAY[] PROGMEM = + "" + ""; + const char HTTP_FORM_DOMOTICZ_SWITCH[] PROGMEM = + ""; +const char HTTP_FORM_DOMOTICZ_SENSOR[] PROGMEM = + ""; +const char HTTP_FORM_DOMOTICZ_TIMER[] PROGMEM = + ""; + void HandleDomoticzConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_DOMOTICZ); + if (WebServer->hasArg("save")) { + DomoticzSaveSettings(); + WaitForRestart(""); + return; + } + char stemp[32]; String page = FPSTR(HTTP_HEAD); @@ -474,6 +483,14 @@ boolean Xdrv07(byte function) if (Settings.flag.mqtt_enabled) { switch (function) { +#ifdef USE_WEBSERVER + case FUNC_WEB_ADD_BUTTON: + strncat_P(mqtt_data, HTTP_BTN_MENU_DOMOTICZ, sizeof(mqtt_data)); + break; + case FUNC_WEB_ADD_HANDLER: + WebServer->on("/" WEB_HANDLE_DOMOTICZ, HandleDomoticzConfiguration); + break; +#endif // USE_WEBSERVER case FUNC_COMMAND: result = DomoticzCommand(); break; diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 124b415340c0..338a8ddc0a3d 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -510,6 +510,14 @@ boolean TimerCommand() #ifdef USE_WEBSERVER #ifdef USE_TIMERS_WEB + +#define WEB_HANDLE_TIMER "tm" + +const char S_CONFIGURE_TIMER[] PROGMEM = D_CONFIGURE_TIMER; + +const char HTTP_BTN_MENU_TIMER[] PROGMEM = + "
"; + const char HTTP_TIMER_SCRIPT[] PROGMEM = "var pt=[],ct=99;" "function qs(s){" // Alias to save code space @@ -639,8 +647,7 @@ const char HTTP_TIMER_STYLE[] PROGMEM = #endif ""; const char HTTP_FORM_TIMER[] PROGMEM = - "
 " D_TIMER_PARAMETERS " 
" - "" + "
 " D_TIMER_PARAMETERS " " "
" D_TIMER_ENABLE "


" "requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TIMER); + if (WebServer->hasArg("save")) { + TimerSaveSettings(); + HandleConfiguration(); + return; + } + String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_TIMER)); page += FPSTR(HTTP_TIMER_SCRIPT); @@ -743,6 +754,20 @@ boolean Xdrv09(byte function) case FUNC_PRE_INIT: TimerSetRandomWindows(); break; +#ifdef USE_WEBSERVER +#ifdef USE_TIMERS_WEB + case FUNC_WEB_ADD_BUTTON: +#ifdef USE_RULES + strncat_P(mqtt_data, HTTP_BTN_MENU_TIMER, sizeof(mqtt_data)); +#else + if (devices_present) { strncat_P(mqtt_data, HTTP_BTN_MENU_TIMER, sizeof(mqtt_data)); } +#endif // USE_RULES + break; + case FUNC_WEB_ADD_HANDLER: + WebServer->on("/" WEB_HANDLE_TIMER, HandleTimerConfiguration); + break; +#endif // USE_TIMERS_WEB +#endif // USE_WEBSERVER case FUNC_EVERY_SECOND: TimerEverySecond(); break; diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 88260b23ce1f..6132133ae2ad 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -749,6 +749,9 @@ void KnxSensor(byte sensor_type, float value) #ifdef USE_KNX_WEB_MENU const char S_CONFIGURE_KNX[] PROGMEM = D_CONFIGURE_KNX; +const char HTTP_BTN_MENU_KNX[] PROGMEM = + "
"; + const char HTTP_FORM_KNX[] PROGMEM = "
 " D_KNX_PARAMETERS " 
" "
" @@ -784,7 +787,6 @@ const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = "
" -// ""; ""; const char HTTP_FORM_KNX3[] PROGMEM = @@ -797,10 +799,8 @@ const char HTTP_FORM_KNX4[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = "" -// ""; ""; - void HandleKNXConfiguration() { if (HttpUser()) { return; } @@ -971,7 +971,7 @@ void HandleKNXConfiguration() } } page += F("
" D_DOMOTICZ_IDX " {1
" D_DOMOTICZ_KEY_IDX " {1
" D_DOMOTICZ_SWITCH_IDX " {1
" D_DOMOTICZ_SENSOR_IDX " {1 {2
" D_DOMOTICZ_UPDATE_TIMER " (" STR(DOMOTICZ_UPDATE_TIMER) ")
{optex} -> GAfnum / GAarea / GAfdef
GAfnum / GAarea / GAfdef -> {optex}
"); - page += F("
"); + page += F("
"); page += FPSTR(HTTP_BTN_CONF); page.replace( F(""), @@ -1295,6 +1295,16 @@ boolean Xdrv11(byte function) case FUNC_PRE_INIT: KNX_INIT(); break; +#ifdef USE_WEBSERVER +#ifdef USE_KNX_WEB_MENU + case FUNC_WEB_ADD_BUTTON: + strncat_P(mqtt_data, HTTP_BTN_MENU_KNX, sizeof(mqtt_data)); + break; + case FUNC_WEB_ADD_HANDLER: + WebServer->on("/kn", HandleKNXConfiguration); + break; +#endif // USE_KNX_WEB_MENU +#endif // USE_WEBSERVER case FUNC_LOOP: knx.loop(); // Process knx events break; diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index f0b20ef59bbf..d43ca90b18fe 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -835,4 +835,18 @@ void HandleHueApi(String *path) else if (path->endsWith("/rules")) HueNotImplemented(path); else HueGlobalConfig(path); } + +void HueWemoAddHandlers() +{ + if (EMUL_WEMO == Settings.flag2.emulation) { + WebServer->on("/upnp/control/basicevent1", HTTP_POST, HandleUpnpEvent); + WebServer->on("/eventservice.xml", HandleUpnpService); + WebServer->on("/metainfoservice.xml", HandleUpnpMetaService); + WebServer->on("/setup.xml", HandleUpnpSetupWemo); + } + if (EMUL_HUE == Settings.flag2.emulation) { + WebServer->on("/description.xml", HandleUpnpSetupHue); + } +} + #endif // USE_WEBSERVER && USE_EMULATION From 8aabe10711d9cbfff479d47358d13d684412f797 Mon Sep 17 00:00:00 2001 From: guyelg Date: Wed, 10 Oct 2018 20:25:04 +0300 Subject: [PATCH 252/798] Add support for DS3231-external I2C RTC --- sonoff/xsns_33_ds3231.ino | 191 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 sonoff/xsns_33_ds3231.ino diff --git a/sonoff/xsns_33_ds3231.ino b/sonoff/xsns_33_ds3231.ino new file mode 100644 index 000000000000..df18c73db13d --- /dev/null +++ b/sonoff/xsns_33_ds3231.ino @@ -0,0 +1,191 @@ +/* + xsns_33_ds3231.ino - ds3231 RTC chip, act like sensor support for Sonoff-Tasmota + + Copyright (C) 2018 Guy Elgabsi (guy.elg AT gmail.com) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_I2C +#ifdef USE_DS3231 +/*********************************************************************************************\ + DS3231 - its a accurate RTC that used in the SONOFF for get time when you not have internet connection + This is minimal library that use only for read/write time ! + We store UTC time in the DS3231 , so we can use the standart functions. + HOWTO Use : first time, you must to have internet connection (use your mobile phone or try in other location). + once you have ntp connection , the DS3231 internal clock will be updated automatically. + you can now power off the device, from now and on the time is stored in the module and will + be restored when the is no connection to NTP. + Source: Guy Elgabsi with special thanks to Jack Christensen + + I2C Address: 0x68 + \*********************************************************************************************/ + +//DS3232 I2C Address +#ifndef USE_RTC_ADDR + #define USE_RTC_ADDR 0x68 +#endif + +//DS3232 Register Addresses +#define RTC_SECONDS 0x00 +#define RTC_MINUTES 0x01 +#define RTC_HOURS 0x02 +#define RTC_DAY 0x03 +#define RTC_DATE 0x04 +#define RTC_MONTH 0x05 +#define RTC_YEAR 0x06 +#define RTC_CONTROL 0x0E +#define RTC_STATUS 0x0F +//Control register bits +#define OSF 7 +#define EOSC 7 +#define BBSQW 6 +#define CONV 5 +#define RS2 4 +#define RS1 3 +#define INTCN 2 + +//Other +#define HR1224 6 //Hours register 12 or 24 hour mode (24 hour mode==0) +#define CENTURY 7 //Century bit in Month register +#define DYDT 6 //Day/Date flag bit in alarm Day/Date registers +boolean ds3231ReadStatus = false , ds3231WriteStatus = false; //flag, we want to wriet/write to DS3231 onlu once +boolean DS3231chipDetected; + + +/*----------------------------------------------------------------------* + Detect the DS3231 Chip + ----------------------------------------------------------------------*/ +boolean DS3231Detect() +{ + if (I2cValidRead(USE_RTC_ADDR, RTC_STATUS, 1)) + { + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "DS3231", USE_RTC_ADDR); + AddLog(LOG_LEVEL_INFO); + return true; + } + else + { + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_I2C "%s *NOT* " D_FOUND_AT " 0x%x"), "DS3231", USE_RTC_ADDR); + AddLog(LOG_LEVEL_INFO); + return false; + } +} + +/*----------------------------------------------------------------------* + BCD-to-Decimal conversion + ----------------------------------------------------------------------*/ +uint8_t bcd2dec(uint8_t n) +{ + return n - 6 * (n >> 4); +} + +/*----------------------------------------------------------------------* + Decimal-to-BCD conversion + ----------------------------------------------------------------------*/ +uint8_t dec2bcd(uint8_t n) +{ + return n + 6 * (n / 10); +} + +/*----------------------------------------------------------------------* + Read time from DS3231 and return the epoch time (second since 1-1-1970 00:00) + ----------------------------------------------------------------------*/ +uint32_t ReadFromDS3231() +{ + TIME_T tm; + tm.second = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_SECONDS)); + tm.minute = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_MINUTES)); + tm.hour = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_HOURS) & ~_BV(HR1224)); //assumes 24hr clock + tm.day_of_week = I2cRead8(USE_RTC_ADDR, RTC_DAY); + tm.day_of_month = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_DATE)); + tm.month = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_MONTH) & ~_BV(CENTURY)); //don't use the Century bit + tm.year = bcd2dec(I2cRead8(USE_RTC_ADDR, RTC_YEAR)); + return MakeTime(tm); +} +/*----------------------------------------------------------------------* + Get time as TIME_T and set the DS3231 time to this value + ----------------------------------------------------------------------*/ +void SetDS3231Time (uint32_t epoch_time) { + TIME_T tm; + BreakTime(epoch_time, tm); + I2cWrite8(USE_RTC_ADDR, RTC_SECONDS, dec2bcd(tm.second)); + I2cWrite8(USE_RTC_ADDR, RTC_MINUTES, dec2bcd(tm.minute)); + I2cWrite8(USE_RTC_ADDR, RTC_HOURS, dec2bcd(tm.hour)); + I2cWrite8(USE_RTC_ADDR, RTC_DAY, tm.day_of_week); + I2cWrite8(USE_RTC_ADDR, RTC_DATE, dec2bcd(tm.day_of_month)); + I2cWrite8(USE_RTC_ADDR, RTC_MONTH, dec2bcd(tm.month)); + I2cWrite8(USE_RTC_ADDR, RTC_YEAR, dec2bcd(tm.year)); + I2cWrite8(USE_RTC_ADDR, RTC_STATUS, I2cRead8(USE_RTC_ADDR, RTC_STATUS) & ~_BV(OSF)); //clear the Oscillator Stop Flag +} + +/*********************************************************************************************\ + Interface + \*********************************************************************************************/ + +#define XSNS_33 + +boolean Xsns33(byte function) +{ + boolean result = false; + + if (i2c_flg) { + switch (function) { + case FUNC_INIT: + DS3231chipDetected = DS3231Detect(); + result = DS3231chipDetected; + break; + + case FUNC_EVERY_SECOND: + TIME_T tmpTime; + if (!ds3231ReadStatus && DS3231chipDetected && utc_time < 1451602800 ) { // We still did not sync with NTP (time not valid) , so, read time from DS3231 + ntp_force_sync = 1; //force to sync with ntp + utc_time = ReadFromDS3231(); //we read UTC TIME from DS3231 + // from this line, we just copy the function from "void RtcSecond()" at the support.ino ,line 2143 and above + // We need it to set rules etc. + BreakTime(utc_time, tmpTime); + if (utc_time < 1451602800 ) { + ds3231ReadStatus = true; //if time in DS3231 is valid, do not update again + } + RtcTime.year = tmpTime.year + 1970; + daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); + standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); + snprintf_P(log_data, sizeof(log_data), PSTR("Set time from DS3231 to RTC (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), + GetTime(0).c_str(), GetTime(2).c_str(), GetTime(3).c_str()); + AddLog(LOG_LEVEL_INFO); + if (local_time < 1451602800) { // 2016-01-01 + rules_flag.time_init = 1; + } else { + rules_flag.time_set = 1; + } + result = true; + } + else if (!ds3231WriteStatus && DS3231chipDetected && utc_time > 1451602800 && abs(utc_time - ReadFromDS3231()) > 60) {//if time is valid and is drift from RTC in more that 60 second + snprintf_P(log_data, sizeof(log_data), PSTR("Write Time TO DS3231 from NTP (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), + GetTime(0).c_str(), GetTime(2).c_str(), GetTime(3).c_str()); + AddLog(LOG_LEVEL_INFO); + SetDS3231Time (utc_time); //update the DS3231 time + ds3231WriteStatus = true; + } + else { + result = false; + } + break; + } + } + return result; +} + +#endif // USE_DS3231 +#endif // USE_I2C From f98b4cf69d5e9f418d250de965bae1759bf3c03b Mon Sep 17 00:00:00 2001 From: guyelg Date: Wed, 10 Oct 2018 20:31:21 +0300 Subject: [PATCH 253/798] add support for DS3231 - I2C RTC --- sonoff/user_config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 0ed7eba3539c..46a98c4e3da6 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -322,6 +322,8 @@ #define MTX_ADDRESS6 0x76 // [DisplayAddress6] I2C address of sixth 8x8 matrix module #define MTX_ADDRESS7 0x00 // [DisplayAddress7] I2C address of seventh 8x8 matrix module #define MTX_ADDRESS8 0x00 // [DisplayAddress8] I2C address of eigth 8x8 matrix module + #define USE_DS3231 // Enable use DS3231 external RTC , usefall when you don't have avaliable WIFI. see docs in the source file (+1k2 code) +// #define USE_RTC_ADDR //you can change the addrsss of the DS3231 RTC, default is 0x68, not mandatory fieled #endif // USE_I2C From 633a45f964d0dbf4d29b7dbc418d5d2a4504f91f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 10 Oct 2018 19:41:08 +0200 Subject: [PATCH 254/798] Revert "6.2.1.14 Webserver rewrite" This reverts commit 077b8a79e15be9446c3a7f796e895a87628de0cc. --- sonoff/_changelog.ino | 5 +- sonoff/i18n.h | 1 + sonoff/sonoff.h | 2 +- sonoff/sonoff_version.h | 2 +- sonoff/{xdrv_02_mqtt.ino => xdrv_01_mqtt.ino} | 103 +--- ...01_webserver.ino => xdrv_02_webserver.ino} | 466 ++++++++++-------- sonoff/xdrv_07_domoticz.ino | 49 +- sonoff/xdrv_09_timers.ino | 33 +- sonoff/xdrv_11_knx.ino | 18 +- sonoff/xplg_wemohue.ino | 14 - 10 files changed, 304 insertions(+), 389 deletions(-) rename sonoff/{xdrv_02_mqtt.ino => xdrv_01_mqtt.ino} (86%) rename sonoff/{xdrv_01_webserver.ino => xdrv_02_webserver.ino} (84%) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index def41834ac1a..b2210c830130 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,7 +1,4 @@ -/* 6.2.1.14 20181010 - * Rewrite Webserver page handler for easier extension (thx to Adrian Scillato) - * - * 6.2.1.13 20181008 +/* 6.2.1.13 20181008 * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler * Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 * diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 62226f91fcfe..ab1f0a1d2c52 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -539,6 +539,7 @@ const char S_CONFIGURATION[] PROGMEM = D_CONFIGURATION; const char S_CONFIGURE_MODULE[] PROGMEM = D_CONFIGURE_MODULE; const char S_CONFIGURE_WIFI[] PROGMEM = D_CONFIGURE_WIFI; const char S_NO_NETWORKS_FOUND[] PROGMEM = D_NO_NETWORKS_FOUND; +const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT; const char S_CONFIGURE_LOGGING[] PROGMEM = D_CONFIGURE_LOGGING; const char S_CONFIGURE_OTHER[] PROGMEM = D_CONFIGURE_OTHER; const char S_SAVE_CONFIGURATION[] PROGMEM = D_SAVE_CONFIGURATION; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 5bc744157042..5d41aa18df27 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -214,7 +214,7 @@ enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MA enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_HANDLER}; + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 080c76fa443b..eba7ddc21502 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010E +#define VERSION 0x0602010D #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_02_mqtt.ino b/sonoff/xdrv_01_mqtt.ino similarity index 86% rename from sonoff/xdrv_02_mqtt.ino rename to sonoff/xdrv_01_mqtt.ino index 1cd6d9afffd8..3cb76e86d6b9 100644 --- a/sonoff/xdrv_02_mqtt.ino +++ b/sonoff/xdrv_01_mqtt.ino @@ -1,5 +1,5 @@ /* - xdrv_02_mqtt.ino - mqtt support for Sonoff-Tasmota + xdrv_01_mqtt.ino - mqtt support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -782,115 +782,18 @@ bool MqttCommand() return serviced; } -/*********************************************************************************************\ - * Presentation -\*********************************************************************************************/ - -#ifdef USE_WEBSERVER - -#define WEB_HANDLE_MQTT "mq" - -const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT; - -const char HTTP_BTN_MENU_MQTT[] PROGMEM = - "
"; - -const char HTTP_FORM_MQTT[] PROGMEM = - "
 " D_MQTT_PARAMETERS " 
" - "
" D_HOST " (" MQTT_HOST ")

" - "
" D_PORT " (" STR(MQTT_PORT) ")

" - "
" D_CLIENT " ({m0)

" - "
" D_USER " (" MQTT_USER ")

" - "
" D_PASSWORD "

" - "
" D_TOPIC " = %topic% (" MQTT_TOPIC ")

" - "
" D_FULL_TOPIC " (" MQTT_FULLTOPIC ")

"; - -void HandleMqttConfiguration() -{ - if (HttpUser()) { return; } - if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); - - if (WebServer->hasArg("save")) { - MqttSaveSettings(); - WaitForRestart(""); - return; - } - - String page = FPSTR(HTTP_HEAD); - page.replace(F("{v}"), FPSTR(S_CONFIGURE_MQTT)); - page += FPSTR(HTTP_HEAD_STYLE); - - page += FPSTR(HTTP_FORM_MQTT); - char str[sizeof(Settings.mqtt_client)]; - page.replace(F("{m0"), Format(str, MQTT_CLIENT_ID, sizeof(Settings.mqtt_client))); - page.replace(F("{m1"), Settings.mqtt_host); - page.replace(F("{m2"), String(Settings.mqtt_port)); - page.replace(F("{m3"), Settings.mqtt_client); - page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); - page.replace(F("{m6"), Settings.mqtt_topic); - page.replace(F("{m7"), Settings.mqtt_fulltopic); - - page += FPSTR(HTTP_FORM_END); - page += FPSTR(HTTP_BTN_CONF); - ShowPage(page); -} - -void MqttSaveSettings() -{ - char tmp[100]; - char stemp[TOPSZ]; - char stemp2[TOPSZ]; - - WebGetArg("mt", tmp, sizeof(tmp)); - strlcpy(stemp, (!strlen(tmp)) ? MQTT_TOPIC : tmp, sizeof(stemp)); - MakeValidMqtt(0, stemp); - WebGetArg("mf", tmp, sizeof(tmp)); - strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2)); - MakeValidMqtt(1,stemp2); - if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) { - snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : ""); - MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic - } - strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic)); - strlcpy(Settings.mqtt_fulltopic, stemp2, sizeof(Settings.mqtt_fulltopic)); - WebGetArg("mh", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_host, (!strlen(tmp)) ? MQTT_HOST : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_host)); - WebGetArg("ml", tmp, sizeof(tmp)); - Settings.mqtt_port = (!strlen(tmp)) ? MQTT_PORT : atoi(tmp); - WebGetArg("mc", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_client, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp, sizeof(Settings.mqtt_client)); - WebGetArg("mu", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); - WebGetArg("mp", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), - Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); - AddLog(LOG_LEVEL_INFO); -} -#endif // USE_WEBSERVER - /*********************************************************************************************\ * Interface \*********************************************************************************************/ -#define XDRV_02 +#define XDRV_01 -boolean Xdrv02(byte function) +boolean Xdrv01(byte function) { boolean result = false; if (Settings.flag.mqtt_enabled) { switch (function) { -#ifdef USE_WEBSERVER - case FUNC_WEB_ADD_BUTTON: - strncat_P(mqtt_data, HTTP_BTN_MENU_MQTT, sizeof(mqtt_data)); - break; - case FUNC_WEB_ADD_HANDLER: - WebServer->on("/" WEB_HANDLE_MQTT, HandleMqttConfiguration); - break; -#endif // USE_WEBSERVER case FUNC_LOOP: MqttLoop(); break; diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_02_webserver.ino similarity index 84% rename from sonoff/xdrv_01_webserver.ino rename to sonoff/xdrv_02_webserver.ino index 50345145f8b1..099411eba25d 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -1,5 +1,5 @@ /* - xdrv_01_webserver.ino - webserver for Sonoff-Tasmota + xdrv_02_webserver.ino - webserver for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -193,9 +193,25 @@ const char HTTP_BTN_MENU1[] PROGMEM = const char HTTP_BTN_RSTRT[] PROGMEM = "
"; const char HTTP_BTN_MENU_MODULE[] PROGMEM = - "
" - "
"; + "
"; +#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) +const char HTTP_BTN_MENU_TIMER[] PROGMEM = + "
"; +#endif // USE_TIMERS and USE_TIMERS_WEB +const char HTTP_BTN_MENU_WIFI[] PROGMEM = + "
"; +const char HTTP_BTN_MENU_MQTT[] PROGMEM = + "
" +#ifdef USE_DOMOTICZ + "
" +#endif // USE_DOMOTICZ + ""; const char HTTP_BTN_MENU4[] PROGMEM = +#ifdef USE_KNX +#ifdef USE_KNX_WEB_MENU + "
" +#endif // USE_KNX_WEB_MENU +#endif // USE_KNX "
" "
" "
" @@ -213,21 +229,34 @@ const char HTTP_FORM_LOGIN[] PROGMEM = const char HTTP_BTN_CONF[] PROGMEM = "

"; const char HTTP_FORM_MODULE[] PROGMEM = - "
 " D_MODULE_PARAMETERS " 
" + "
 " D_MODULE_PARAMETERS " " + "" "
" D_MODULE_TYPE " ({mt)

"; const char HTTP_LNK_ITEM[] PROGMEM = "
{v} ({w}) {i} {r}%
"; const char HTTP_LNK_SCAN[] PROGMEM = - "
"; + "
"; const char HTTP_FORM_WIFI[] PROGMEM = - "
 " D_WIFI_PARAMETERS " " + "
 " D_WIFI_PARAMETERS " " + "" "
" D_AP1_SSID " (" STA_SSID1 ")

" "
" D_AP1_PASSWORD "

" "
" D_AP2_SSID " (" STA_SSID2 ")

" "
" D_AP2_PASSWORD "

" "
" D_HOSTNAME " (" WIFI_HOSTNAME ")

"; +const char HTTP_FORM_MQTT[] PROGMEM = + "
 " D_MQTT_PARAMETERS " " + "" + "
" D_HOST " (" MQTT_HOST ")

" + "
" D_PORT " (" STR(MQTT_PORT) ")

" + "
" D_CLIENT " ({m0)

" + "
" D_USER " (" MQTT_USER ")

" + "
" D_PASSWORD "

" + "
" D_TOPIC " = %topic% (" MQTT_TOPIC ")

" + "
" D_FULL_TOPIC " (" MQTT_FULLTOPIC ")

"; const char HTTP_FORM_LOG1[] PROGMEM = - "
 " D_LOGGING_PARAMETERS " "; + "
 " D_LOGGING_PARAMETERS " " + ""; const char HTTP_FORM_LOG2[] PROGMEM = "
{b0 ({b1)

" "
" D_TELEMETRY_PERIOD " (" STR(TELE_PERIOD) ")

"; const char HTTP_FORM_OTHER[] PROGMEM = - "
 " D_OTHER_PARAMETERS " " -// "" + "
 " D_OTHER_PARAMETERS " " + "" "
" D_WEB_ADMIN_PASSWORD "

" "
" D_MQTT_ENABLE "
"; const char HTTP_FORM_OTHER2[] PROGMEM = @@ -254,7 +283,7 @@ const char HTTP_FORM_OTHER3b[] PROGMEM = "
{3{4"; // Different id only used for labels #endif // USE_EMULATION const char HTTP_FORM_END[] PROGMEM = - "
"; + "
"; const char HTTP_FORM_RST[] PROGMEM = "
" "
 " D_RESTORE_CONFIGURATION " "; @@ -354,23 +383,46 @@ void StartWebserver(int type, IPAddress ipweb) WebServer->on("/ay", HandleAjaxStatusRefresh); WebServer->on("/cm", HandleHttpCommand); WebServer->on("/rb", HandleRestart); -// WebServer->on("/fwlink", HandleRoot); // Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. - WebServer->onNotFound(HandleNotFound); #ifndef BE_MINIMAL WebServer->on("/cn", HandleConfiguration); WebServer->on("/md", HandleModuleConfiguration); - WebServer->on("/wi", HandleWifiConfiguration); +#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) + WebServer->on("/tm", HandleTimerConfiguration); +#endif // USE_TIMERS and USE_TIMERS_WEB + WebServer->on("/w1", HandleWifiConfigurationWithScan); + WebServer->on("/w0", HandleWifiConfiguration); + if (Settings.flag.mqtt_enabled) { + WebServer->on("/mq", HandleMqttConfiguration); +#ifdef USE_DOMOTICZ + WebServer->on("/dm", HandleDomoticzConfiguration); +#endif // USE_DOMOTICZ + } +#ifdef USE_KNX +#ifdef USE_KNX_WEB_MENU + WebServer->on("/kn", HandleKNXConfiguration); +#endif // USE_KNX_WEB_MENU +#endif // USE_KNX WebServer->on("/lg", HandleLoggingConfiguration); WebServer->on("/co", HandleOtherConfiguration); WebServer->on("/dl", HandleBackupConfiguration); + WebServer->on("/sv", HandleSaveSettings); WebServer->on("/rs", HandleRestoreConfiguration); WebServer->on("/rt", HandleResetConfiguration); WebServer->on("/in", HandleInformation); #ifdef USE_EMULATION - HueWemoAddHandlers(); + if (EMUL_WEMO == Settings.flag2.emulation) { + WebServer->on("/upnp/control/basicevent1", HTTP_POST, HandleUpnpEvent); + WebServer->on("/eventservice.xml", HandleUpnpService); + WebServer->on("/metainfoservice.xml", HandleUpnpMetaService); + WebServer->on("/setup.xml", HandleUpnpSetupWemo); + } + if (EMUL_HUE == Settings.flag2.emulation) { + WebServer->on("/description.xml", HandleUpnpSetupHue); + } #endif // USE_EMULATION - XdrvCall(FUNC_WEB_ADD_HANDLER); #endif // Not BE_MINIMAL + WebServer->on("/fwlink", HandleRoot); // Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + WebServer->onNotFound(HandleNotFound); } reset_web_log_flag = 0; WebServer->begin(); // Web server start @@ -645,30 +697,7 @@ boolean HttpUser() return status; } -/*-------------------------------------------------------------------------------------------*/ - #ifndef BE_MINIMAL - -void WaitForRestart(String result) -{ - String page = FPSTR(HTTP_HEAD); - page.replace(F("{v}"), FPSTR(S_SAVE_CONFIGURATION)); - page += FPSTR(HTTP_HEAD_STYLE); - page += F("
" D_CONFIGURATION_SAVED "
"); - page += result; - page += F("
"); - page += FPSTR(HTTP_MSG_RSTRT); - if (HTTP_MANAGER == webserver_state) { - webserver_state = HTTP_ADMIN; - } else { - page += FPSTR(HTTP_BTN_MAIN); - } - ShowPage(page); - - ShowWebSource(SRC_WEBGUI); - restart_flag = 2; -} - void HandleConfiguration() { if (HttpUser()) { return; } @@ -679,34 +708,29 @@ void HandleConfiguration() page.replace(F("{v}"), FPSTR(S_CONFIGURATION)); page += FPSTR(HTTP_HEAD_STYLE); page += FPSTR(HTTP_BTN_MENU_MODULE); - - mqtt_data[0] = '\0'; - XdrvCall(FUNC_WEB_ADD_BUTTON); - page += String(mqtt_data); - +#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) +#ifdef USE_RULES + page += FPSTR(HTTP_BTN_MENU_TIMER); +#else + if (devices_present) { page += FPSTR(HTTP_BTN_MENU_TIMER); } +#endif // USE_RULES +#endif // USE_TIMERS and USE_TIMERS_WEB + page += FPSTR(HTTP_BTN_MENU_WIFI); + if (Settings.flag.mqtt_enabled) { page += FPSTR(HTTP_BTN_MENU_MQTT); } page += FPSTR(HTTP_BTN_MENU4); page += FPSTR(HTTP_BTN_MAIN); ShowPage(page); } -/*-------------------------------------------------------------------------------------------*/ - void HandleModuleConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } - - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MODULE); - - if (WebServer->hasArg("save")) { - ModuleSaveSettings(); - WaitForRestart(""); - return; - } - char stemp[20]; uint8_t midx; + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MODULE); + String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_MODULE)); page += FPSTR(HTTP_SCRIPT_MODULE1); @@ -759,36 +783,15 @@ void HandleModuleConfiguration() ShowPage(page); } -void ModuleSaveSettings() +void HandleWifiConfigurationWithScan() { - char tmp[100]; - char stemp[TOPSZ]; - - WebGetArg("g99", tmp, sizeof(tmp)); - byte new_module = (!strlen(tmp)) ? MODULE : atoi(tmp); - Settings.last_module = Settings.module; - Settings.module = new_module; - mytmplt cmodule; - memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - String gpios = ""; - for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if (Settings.last_module != new_module) { - Settings.my_gp.io[i] = 0; - } else { - if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { - snprintf_P(stemp, sizeof(stemp), PSTR("g%d"), i); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.my_gp.io[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(Settings.my_gp.io[i]); - } - } - } - snprintf_P(stemp, sizeof(stemp), kModules[Settings.module].name); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), stemp, gpios.c_str()); - AddLog(LOG_LEVEL_INFO); + HandleWifi(true); } -/*-------------------------------------------------------------------------------------------*/ +void HandleWifiConfiguration() +{ + HandleWifi(false); +} String htmlEscape(String s) { @@ -801,25 +804,18 @@ String htmlEscape(String s) return s; } -void HandleWifiConfiguration() +void HandleWifi(boolean scan) { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_WIFI); - if (WebServer->hasArg("save")) { - WifiSaveSettings(); - String result = F("
" D_TRYING_TO_CONNECT "
"); - WaitForRestart(result); - return; - } - String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_WIFI)); page += FPSTR(HTTP_HEAD_STYLE); - if (WebServer->hasArg("scan")) { + if (scan) { #ifdef USE_EMULATION UdpDisconnect(); #endif // USE_EMULATION @@ -905,46 +901,39 @@ void HandleWifiConfiguration() ShowPage(page, !(HTTP_MANAGER == webserver_state)); } -void WifiSaveSettings() +void HandleMqttConfiguration() { - char tmp[100]; + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); - WebGetArg("h", tmp, sizeof(tmp)); - strlcpy(Settings.hostname, (!strlen(tmp)) ? WIFI_HOSTNAME : tmp, sizeof(Settings.hostname)); - if (strstr(Settings.hostname,"%")) { - strlcpy(Settings.hostname, WIFI_HOSTNAME, sizeof(Settings.hostname)); - } - WebGetArg("s1", tmp, sizeof(tmp)); - strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? STA_SSID1 : tmp, sizeof(Settings.sta_ssid[0])); - WebGetArg("s2", tmp, sizeof(tmp)); - strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? STA_SSID2 : tmp, sizeof(Settings.sta_ssid[1])); - WebGetArg("p1", tmp, sizeof(tmp)); - strlcpy(Settings.sta_pwd[0], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[0] : tmp, sizeof(Settings.sta_pwd[0])); - WebGetArg("p2", tmp, sizeof(tmp)); - strlcpy(Settings.sta_pwd[1], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[1] : tmp, sizeof(Settings.sta_pwd[1])); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s"), - Settings.hostname, Settings.sta_ssid[0], Settings.sta_ssid[1]); - AddLog(LOG_LEVEL_INFO); + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_CONFIGURE_MQTT)); + page += FPSTR(HTTP_HEAD_STYLE); + page += FPSTR(HTTP_FORM_MQTT); + char str[sizeof(Settings.mqtt_client)]; + page.replace(F("{m0"), Format(str, MQTT_CLIENT_ID, sizeof(Settings.mqtt_client))); + page.replace(F("{m1"), Settings.mqtt_host); + page.replace(F("{m2"), String(Settings.mqtt_port)); + page.replace(F("{m3"), Settings.mqtt_client); + page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); + page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + page.replace(F("{m6"), Settings.mqtt_topic); + page.replace(F("{m7"), Settings.mqtt_fulltopic); + page += FPSTR(HTTP_FORM_END); + page += FPSTR(HTTP_BTN_CONF); + ShowPage(page); } -/*-------------------------------------------------------------------------------------------*/ - void HandleLoggingConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_LOGGING); - if (WebServer->hasArg("save")) { - LoggingSaveSettings(); - HandleConfiguration(); - return; - } - String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_LOGGING)); page += FPSTR(HTTP_HEAD_STYLE); - page += FPSTR(HTTP_FORM_LOG1); for (byte idx = 0; idx < 3; idx++) { page += FPSTR(HTTP_FORM_LOG2); @@ -984,46 +973,11 @@ void HandleLoggingConfiguration() ShowPage(page); } -void LoggingSaveSettings() -{ - char tmp[100]; - - WebGetArg("ls", tmp, sizeof(tmp)); - Settings.seriallog_level = (!strlen(tmp)) ? SERIAL_LOG_LEVEL : atoi(tmp); - WebGetArg("lw", tmp, sizeof(tmp)); - Settings.weblog_level = (!strlen(tmp)) ? WEB_LOG_LEVEL : atoi(tmp); - WebGetArg("ll", tmp, sizeof(tmp)); - Settings.syslog_level = (!strlen(tmp)) ? SYS_LOG_LEVEL : atoi(tmp); - syslog_level = Settings.syslog_level; - syslog_timer = 0; - WebGetArg("lh", tmp, sizeof(tmp)); - strlcpy(Settings.syslog_host, (!strlen(tmp)) ? SYS_LOG_HOST : tmp, sizeof(Settings.syslog_host)); - WebGetArg("lp", tmp, sizeof(tmp)); - Settings.syslog_port = (!strlen(tmp)) ? SYS_LOG_PORT : atoi(tmp); - WebGetArg("lt", tmp, sizeof(tmp)); - Settings.tele_period = (!strlen(tmp)) ? TELE_PERIOD : atoi(tmp); - if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) { - Settings.tele_period = 10; // Do not allow periods < 10 seconds - } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), - Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); - AddLog(LOG_LEVEL_INFO); -} - -/*-------------------------------------------------------------------------------------------*/ - void HandleOtherConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_OTHER); - - if (WebServer->hasArg("save")) { - OtherSaveSettings(); - WaitForRestart(""); - return; - } - char stemp[40]; String page = FPSTR(HTTP_HEAD); @@ -1057,32 +1011,6 @@ void HandleOtherConfiguration() ShowPage(page); } -void OtherSaveSettings() -{ - char tmp[100]; - char stemp[TOPSZ]; - char stemp2[TOPSZ]; - - WebGetArg("p1", tmp, sizeof(tmp)); - strlcpy(Settings.web_password, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.web_password : tmp, sizeof(Settings.web_password)); - Settings.flag.mqtt_enabled = WebServer->hasArg("b1"); -#ifdef USE_EMULATION - WebGetArg("b2", tmp, sizeof(tmp)); - Settings.flag2.emulation = (!strlen(tmp)) ? 0 : atoi(tmp); -#endif // USE_EMULATION - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation); - for (byte i = 0; i < MAX_FRIENDLYNAMES; i++) { - snprintf_P(stemp, sizeof(stemp), PSTR("a%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - snprintf_P(stemp2, sizeof(stemp2), PSTR(FRIENDLY_NAME"%d"), i +1); - strlcpy(Settings.friendlyname[i], (!strlen(tmp)) ? (i) ? stemp2 : FRIENDLY_NAME : tmp, sizeof(Settings.friendlyname[i])); - snprintf_P(log_data, sizeof(log_data), PSTR("%s%s %s"), log_data, (i) ? "," : "", Settings.friendlyname[i]); - } - AddLog(LOG_LEVEL_INFO); -} - -/*-------------------------------------------------------------------------------------------*/ - void HandleBackupConfiguration() { if (HttpUser()) { return; } @@ -1125,7 +1053,171 @@ void HandleBackupConfiguration() Settings.cfg_crc = cfg_crc; // Restore crc in case savedata = 0 to make sure settings will be noted as changed } -/*-------------------------------------------------------------------------------------------*/ +void HandleSaveSettings() +{ + if (HttpUser()) { return; } + if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } + + char stemp[TOPSZ]; + char stemp2[TOPSZ]; + String result = ""; + + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_SAVE_CONFIGURATION); + + char tmp[100]; + WebGetArg("w", tmp, sizeof(tmp)); // Returns "5,1" where 5 is config type and 1 is restart flag + char *p = tmp; + uint8_t what = strtol(p, &p, 10); + p++; // Skip comma + uint8_t restart = strtol(p, &p, 10); + switch (what) { + case 1: + WebGetArg("h", tmp, sizeof(tmp)); + strlcpy(Settings.hostname, (!strlen(tmp)) ? WIFI_HOSTNAME : tmp, sizeof(Settings.hostname)); + if (strstr(Settings.hostname,"%")) { + strlcpy(Settings.hostname, WIFI_HOSTNAME, sizeof(Settings.hostname)); + } + WebGetArg("s1", tmp, sizeof(tmp)); + strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? STA_SSID1 : tmp, sizeof(Settings.sta_ssid[0])); + WebGetArg("s2", tmp, sizeof(tmp)); + strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? STA_SSID2 : tmp, sizeof(Settings.sta_ssid[1])); +// WebGetArg("s1", tmp, sizeof(tmp)); +// strlcpy(Settings.sta_ssid[0], (!strlen(tmp)) ? "" : tmp, sizeof(Settings.sta_ssid[0])); +// WebGetArg("s2", tmp, sizeof(tmp)); +// strlcpy(Settings.sta_ssid[1], (!strlen(tmp)) ? "" : tmp, sizeof(Settings.sta_ssid[1])); + WebGetArg("p1", tmp, sizeof(tmp)); + strlcpy(Settings.sta_pwd[0], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[0] : tmp, sizeof(Settings.sta_pwd[0])); + WebGetArg("p2", tmp, sizeof(tmp)); + strlcpy(Settings.sta_pwd[1], (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.sta_pwd[1] : tmp, sizeof(Settings.sta_pwd[1])); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s"), + Settings.hostname, Settings.sta_ssid[0], Settings.sta_ssid[1]); + AddLog(LOG_LEVEL_INFO); + result += F("
" D_TRYING_TO_CONNECT "
"); + break; + case 2: + WebGetArg("mt", tmp, sizeof(tmp)); + strlcpy(stemp, (!strlen(tmp)) ? MQTT_TOPIC : tmp, sizeof(stemp)); + MakeValidMqtt(0, stemp); + WebGetArg("mf", tmp, sizeof(tmp)); + strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2)); + MakeValidMqtt(1,stemp2); + if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) { + snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : ""); + MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic + } + strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic)); + strlcpy(Settings.mqtt_fulltopic, stemp2, sizeof(Settings.mqtt_fulltopic)); + WebGetArg("mh", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_host, (!strlen(tmp)) ? MQTT_HOST : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_host)); + WebGetArg("ml", tmp, sizeof(tmp)); + Settings.mqtt_port = (!strlen(tmp)) ? MQTT_PORT : atoi(tmp); + WebGetArg("mc", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_client, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp, sizeof(Settings.mqtt_client)); + WebGetArg("mu", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); + WebGetArg("mp", tmp, sizeof(tmp)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), + Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); + AddLog(LOG_LEVEL_INFO); + break; + case 3: + WebGetArg("ls", tmp, sizeof(tmp)); + Settings.seriallog_level = (!strlen(tmp)) ? SERIAL_LOG_LEVEL : atoi(tmp); + WebGetArg("lw", tmp, sizeof(tmp)); + Settings.weblog_level = (!strlen(tmp)) ? WEB_LOG_LEVEL : atoi(tmp); + WebGetArg("ll", tmp, sizeof(tmp)); + Settings.syslog_level = (!strlen(tmp)) ? SYS_LOG_LEVEL : atoi(tmp); + syslog_level = Settings.syslog_level; + syslog_timer = 0; + WebGetArg("lh", tmp, sizeof(tmp)); + strlcpy(Settings.syslog_host, (!strlen(tmp)) ? SYS_LOG_HOST : tmp, sizeof(Settings.syslog_host)); + WebGetArg("lp", tmp, sizeof(tmp)); + Settings.syslog_port = (!strlen(tmp)) ? SYS_LOG_PORT : atoi(tmp); + WebGetArg("lt", tmp, sizeof(tmp)); + Settings.tele_period = (!strlen(tmp)) ? TELE_PERIOD : atoi(tmp); + if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) { + Settings.tele_period = 10; // Do not allow periods < 10 seconds + } + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), + Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); + AddLog(LOG_LEVEL_INFO); + break; +#if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) + case 7: + TimerSaveSettings(); + break; +#endif // USE_TIMERS and USE_TIMERS_WEB +#ifdef USE_DOMOTICZ + case 4: + DomoticzSaveSettings(); + break; +#endif // USE_DOMOTICZ + case 5: + WebGetArg("p1", tmp, sizeof(tmp)); + strlcpy(Settings.web_password, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.web_password : tmp, sizeof(Settings.web_password)); + Settings.flag.mqtt_enabled = WebServer->hasArg("b1"); +#ifdef USE_EMULATION + WebGetArg("b2", tmp, sizeof(tmp)); + Settings.flag2.emulation = (!strlen(tmp)) ? 0 : atoi(tmp); +#endif // USE_EMULATION + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_OTHER D_MQTT_ENABLE " %s, " D_CMND_EMULATION " %d, " D_CMND_FRIENDLYNAME), GetStateText(Settings.flag.mqtt_enabled), Settings.flag2.emulation); + for (byte i = 0; i < MAX_FRIENDLYNAMES; i++) { + snprintf_P(stemp, sizeof(stemp), PSTR("a%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + snprintf_P(stemp2, sizeof(stemp2), PSTR(FRIENDLY_NAME"%d"), i +1); + strlcpy(Settings.friendlyname[i], (!strlen(tmp)) ? (i) ? stemp2 : FRIENDLY_NAME : tmp, sizeof(Settings.friendlyname[i])); + snprintf_P(log_data, sizeof(log_data), PSTR("%s%s %s"), log_data, (i) ? "," : "", Settings.friendlyname[i]); + } + AddLog(LOG_LEVEL_INFO); + break; + case 6: + WebGetArg("g99", tmp, sizeof(tmp)); + byte new_module = (!strlen(tmp)) ? MODULE : atoi(tmp); + Settings.last_module = Settings.module; + Settings.module = new_module; + mytmplt cmodule; + memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); + String gpios = ""; + for (byte i = 0; i < MAX_GPIO_PIN; i++) { + if (Settings.last_module != new_module) { + Settings.my_gp.io[i] = 0; + } else { + if (GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) { + snprintf_P(stemp, sizeof(stemp), PSTR("g%d"), i); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.my_gp.io[i] = (!strlen(tmp)) ? 0 : atoi(tmp); + gpios += F(", " D_GPIO ); gpios += String(i); gpios += F(" "); gpios += String(Settings.my_gp.io[i]); + } + } + } + snprintf_P(stemp, sizeof(stemp), kModules[Settings.module].name); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), stemp, gpios.c_str()); + AddLog(LOG_LEVEL_INFO); + break; + } + + if (restart) { + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_SAVE_CONFIGURATION)); + page += FPSTR(HTTP_HEAD_STYLE); + page += F("
" D_CONFIGURATION_SAVED "
"); + page += result; + page += F("
"); + page += FPSTR(HTTP_MSG_RSTRT); + if (HTTP_MANAGER == webserver_state) { + webserver_state = HTTP_ADMIN; + } else { + page += FPSTR(HTTP_BTN_MAIN); + } + ShowPage(page); + + ShowWebSource(SRC_WEBGUI); + restart_flag = 2; + } else { + HandleConfiguration(); + } +} void HandleResetConfiguration() { @@ -1167,8 +1259,6 @@ void HandleRestoreConfiguration() upload_file_type = UPL_SETTINGS; } -/*-------------------------------------------------------------------------------------------*/ - void HandleInformation() { if (HttpUser()) { return; } @@ -1286,8 +1376,6 @@ void HandleInformation() } #endif // Not BE_MINIMAL -/*-------------------------------------------------------------------------------------------*/ - void HandleUpgradeFirmware() { if (HttpUser()) { return; } @@ -1581,8 +1669,6 @@ void HandleUploadLoop() delay(0); } -/*-------------------------------------------------------------------------------------------*/ - void HandlePreflightRequest() { WebServer->sendHeader(F("Access-Control-Allow-Origin"), F("*")); @@ -1591,8 +1677,6 @@ void HandlePreflightRequest() WebServer->send(200, FPSTR(HDR_CTYPE_HTML), ""); } -/*-------------------------------------------------------------------------------------------*/ - void HandleHttpCommand() { if (HttpUser()) { return; } @@ -1651,8 +1735,6 @@ void HandleHttpCommand() WebServer->send(200, FPSTR(HDR_CTYPE_JSON), message); } -/*-------------------------------------------------------------------------------------------*/ - void HandleConsole() { if (HttpUser()) { return; } @@ -1726,8 +1808,6 @@ void HandleAjaxConsoleRefresh() WebServer->send(200, FPSTR(HDR_CTYPE_XML), message); } -/*-------------------------------------------------------------------------------------------*/ - void HandleRestart() { if (HttpUser()) { return; } @@ -1981,9 +2061,9 @@ bool WebCommand() * Interface \*********************************************************************************************/ -#define XDRV_01 +#define XDRV_02 -boolean Xdrv01(byte function) +boolean Xdrv02(byte function) { boolean result = false; diff --git a/sonoff/xdrv_07_domoticz.ino b/sonoff/xdrv_07_domoticz.ino index d40bae88f1e2..7710cad13c01 100644 --- a/sonoff/xdrv_07_domoticz.ino +++ b/sonoff/xdrv_07_domoticz.ino @@ -19,6 +19,22 @@ #ifdef USE_DOMOTICZ +#ifdef USE_WEBSERVER +const char HTTP_FORM_DOMOTICZ[] PROGMEM = + "
 " D_DOMOTICZ_PARAMETERS " 
" + "" + "
"; +const char HTTP_FORM_DOMOTICZ_RELAY[] PROGMEM = + "" + ""; + const char HTTP_FORM_DOMOTICZ_SWITCH[] PROGMEM = + ""; +const char HTTP_FORM_DOMOTICZ_SENSOR[] PROGMEM = + ""; +const char HTTP_FORM_DOMOTICZ_TIMER[] PROGMEM = + ""; +#endif // USE_WEBSERVER + const char DOMOTICZ_MESSAGE[] PROGMEM = "{\"idx\":%d,\"nvalue\":%d,\"svalue\":\"%s\",\"Battery\":%d,\"RSSI\":%d}"; enum DomoticzCommands { CMND_IDX, CMND_KEYIDX, CMND_SWITCHIDX, CMND_SENSORIDX, CMND_UPDATETIMER }; @@ -370,39 +386,14 @@ void DomoticzSensorPowerEnergy(int power, char *energy) \*********************************************************************************************/ #ifdef USE_WEBSERVER - -#define WEB_HANDLE_DOMOTICZ "dm" - const char S_CONFIGURE_DOMOTICZ[] PROGMEM = D_CONFIGURE_DOMOTICZ; -const char HTTP_BTN_MENU_DOMOTICZ[] PROGMEM = - "
"; - -const char HTTP_FORM_DOMOTICZ[] PROGMEM = - "
 " D_DOMOTICZ_PARAMETERS " 
" - "
" D_DOMOTICZ_IDX " {1
" D_DOMOTICZ_KEY_IDX " {1
" D_DOMOTICZ_SWITCH_IDX " {1
" D_DOMOTICZ_SENSOR_IDX " {1 {2
" D_DOMOTICZ_UPDATE_TIMER " (" STR(DOMOTICZ_UPDATE_TIMER) ")
"; -const char HTTP_FORM_DOMOTICZ_RELAY[] PROGMEM = - "" - ""; - const char HTTP_FORM_DOMOTICZ_SWITCH[] PROGMEM = - ""; -const char HTTP_FORM_DOMOTICZ_SENSOR[] PROGMEM = - ""; -const char HTTP_FORM_DOMOTICZ_TIMER[] PROGMEM = - ""; - void HandleDomoticzConfiguration() { if (HttpUser()) { return; } if (!WebAuthenticate()) { return WebServer->requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_DOMOTICZ); - if (WebServer->hasArg("save")) { - DomoticzSaveSettings(); - WaitForRestart(""); - return; - } - char stemp[32]; String page = FPSTR(HTTP_HEAD); @@ -483,14 +474,6 @@ boolean Xdrv07(byte function) if (Settings.flag.mqtt_enabled) { switch (function) { -#ifdef USE_WEBSERVER - case FUNC_WEB_ADD_BUTTON: - strncat_P(mqtt_data, HTTP_BTN_MENU_DOMOTICZ, sizeof(mqtt_data)); - break; - case FUNC_WEB_ADD_HANDLER: - WebServer->on("/" WEB_HANDLE_DOMOTICZ, HandleDomoticzConfiguration); - break; -#endif // USE_WEBSERVER case FUNC_COMMAND: result = DomoticzCommand(); break; diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 338a8ddc0a3d..124b415340c0 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -510,14 +510,6 @@ boolean TimerCommand() #ifdef USE_WEBSERVER #ifdef USE_TIMERS_WEB - -#define WEB_HANDLE_TIMER "tm" - -const char S_CONFIGURE_TIMER[] PROGMEM = D_CONFIGURE_TIMER; - -const char HTTP_BTN_MENU_TIMER[] PROGMEM = - "
"; - const char HTTP_TIMER_SCRIPT[] PROGMEM = "var pt=[],ct=99;" "function qs(s){" // Alias to save code space @@ -647,7 +639,8 @@ const char HTTP_TIMER_STYLE[] PROGMEM = #endif ""; const char HTTP_FORM_TIMER[] PROGMEM = - "
 " D_TIMER_PARAMETERS " 
" + "
 " D_TIMER_PARAMETERS " " + "" "
" D_TIMER_ENABLE "


" "requestAuthentication(); } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TIMER); - if (WebServer->hasArg("save")) { - TimerSaveSettings(); - HandleConfiguration(); - return; - } - String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_TIMER)); page += FPSTR(HTTP_TIMER_SCRIPT); @@ -754,20 +743,6 @@ boolean Xdrv09(byte function) case FUNC_PRE_INIT: TimerSetRandomWindows(); break; -#ifdef USE_WEBSERVER -#ifdef USE_TIMERS_WEB - case FUNC_WEB_ADD_BUTTON: -#ifdef USE_RULES - strncat_P(mqtt_data, HTTP_BTN_MENU_TIMER, sizeof(mqtt_data)); -#else - if (devices_present) { strncat_P(mqtt_data, HTTP_BTN_MENU_TIMER, sizeof(mqtt_data)); } -#endif // USE_RULES - break; - case FUNC_WEB_ADD_HANDLER: - WebServer->on("/" WEB_HANDLE_TIMER, HandleTimerConfiguration); - break; -#endif // USE_TIMERS_WEB -#endif // USE_WEBSERVER case FUNC_EVERY_SECOND: TimerEverySecond(); break; diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 6132133ae2ad..88260b23ce1f 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -749,9 +749,6 @@ void KnxSensor(byte sensor_type, float value) #ifdef USE_KNX_WEB_MENU const char S_CONFIGURE_KNX[] PROGMEM = D_CONFIGURE_KNX; -const char HTTP_BTN_MENU_KNX[] PROGMEM = - "
"; - const char HTTP_FORM_KNX[] PROGMEM = "
 " D_KNX_PARAMETERS " 
" "
" @@ -787,6 +784,7 @@ const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = "
" +// ""; ""; const char HTTP_FORM_KNX3[] PROGMEM = @@ -799,8 +797,10 @@ const char HTTP_FORM_KNX4[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = "" +// ""; ""; + void HandleKNXConfiguration() { if (HttpUser()) { return; } @@ -971,7 +971,7 @@ void HandleKNXConfiguration() } } page += F("
" D_DOMOTICZ_IDX " {1
" D_DOMOTICZ_KEY_IDX " {1
" D_DOMOTICZ_SWITCH_IDX " {1
" D_DOMOTICZ_SENSOR_IDX " {1 {2
" D_DOMOTICZ_UPDATE_TIMER " (" STR(DOMOTICZ_UPDATE_TIMER) ")
{optex} -> GAfnum / GAarea / GAfdef
GAfnum / GAarea / GAfdef -> {optex}
"); - page += F("
"); + page += F("
"); page += FPSTR(HTTP_BTN_CONF); page.replace( F(""), @@ -1295,16 +1295,6 @@ boolean Xdrv11(byte function) case FUNC_PRE_INIT: KNX_INIT(); break; -#ifdef USE_WEBSERVER -#ifdef USE_KNX_WEB_MENU - case FUNC_WEB_ADD_BUTTON: - strncat_P(mqtt_data, HTTP_BTN_MENU_KNX, sizeof(mqtt_data)); - break; - case FUNC_WEB_ADD_HANDLER: - WebServer->on("/kn", HandleKNXConfiguration); - break; -#endif // USE_KNX_WEB_MENU -#endif // USE_WEBSERVER case FUNC_LOOP: knx.loop(); // Process knx events break; diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index d43ca90b18fe..f0b20ef59bbf 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -835,18 +835,4 @@ void HandleHueApi(String *path) else if (path->endsWith("/rules")) HueNotImplemented(path); else HueGlobalConfig(path); } - -void HueWemoAddHandlers() -{ - if (EMUL_WEMO == Settings.flag2.emulation) { - WebServer->on("/upnp/control/basicevent1", HTTP_POST, HandleUpnpEvent); - WebServer->on("/eventservice.xml", HandleUpnpService); - WebServer->on("/metainfoservice.xml", HandleUpnpMetaService); - WebServer->on("/setup.xml", HandleUpnpSetupWemo); - } - if (EMUL_HUE == Settings.flag2.emulation) { - WebServer->on("/description.xml", HandleUpnpSetupHue); - } -} - #endif // USE_WEBSERVER && USE_EMULATION From 5684c844aa3b6a6f77a6a1b22d07137cd0c8c469 Mon Sep 17 00:00:00 2001 From: guyelg Date: Wed, 10 Oct 2018 20:54:26 +0300 Subject: [PATCH 255/798] fix address in user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 46a98c4e3da6..d2f89d9b9658 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -323,7 +323,7 @@ #define MTX_ADDRESS7 0x00 // [DisplayAddress7] I2C address of seventh 8x8 matrix module #define MTX_ADDRESS8 0x00 // [DisplayAddress8] I2C address of eigth 8x8 matrix module #define USE_DS3231 // Enable use DS3231 external RTC , usefall when you don't have avaliable WIFI. see docs in the source file (+1k2 code) -// #define USE_RTC_ADDR //you can change the addrsss of the DS3231 RTC, default is 0x68, not mandatory fieled +// #define USE_RTC_ADDR 0x68 //you can change the addrsss of the DS3231 RTC, default is 0x68, not mandatory fieled #endif // USE_I2C From 9c77d1d7610e2118927021f09119ac64cb5f88a4 Mon Sep 17 00:00:00 2001 From: guyelg Date: Wed, 10 Oct 2018 21:01:07 +0300 Subject: [PATCH 256/798] disable the sensor by default --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d2f89d9b9658..f37f8dc636ce 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -322,7 +322,7 @@ #define MTX_ADDRESS6 0x76 // [DisplayAddress6] I2C address of sixth 8x8 matrix module #define MTX_ADDRESS7 0x00 // [DisplayAddress7] I2C address of seventh 8x8 matrix module #define MTX_ADDRESS8 0x00 // [DisplayAddress8] I2C address of eigth 8x8 matrix module - #define USE_DS3231 // Enable use DS3231 external RTC , usefall when you don't have avaliable WIFI. see docs in the source file (+1k2 code) +// #define USE_DS3231 // Enable use DS3231 external RTC , usefall when you don't have avaliable WIFI. see docs in the source file (+1k2 code) // #define USE_RTC_ADDR 0x68 //you can change the addrsss of the DS3231 RTC, default is 0x68, not mandatory fieled #endif // USE_I2C From b3039de1b6b844ff5987e23ebf27ad5a06b6763c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 10 Oct 2018 22:21:44 +0200 Subject: [PATCH 257/798] 6.2.1.14 Rewrite Webserver 6.2.1.14 20181010 * Rewrite Webserver page handler for easier extension (thx to Adrian Scillato) --- sonoff/_changelog.ino | 5 +- sonoff/i18n.h | 1 - sonoff/sonoff.h | 2 +- sonoff/sonoff_version.h | 2 +- sonoff/xdrv_01_webserver.ino | 2003 ++++++++++++++++++++++++++++++++++ sonoff/xdrv_02_mqtt.ino | 903 +++++++++++++++ sonoff/xdrv_07_domoticz.ino | 49 +- sonoff/xdrv_09_timers.ino | 33 +- sonoff/xdrv_11_knx.ino | 18 +- sonoff/xplg_wemohue.ino | 14 + 10 files changed, 3002 insertions(+), 28 deletions(-) create mode 100644 sonoff/xdrv_01_webserver.ino create mode 100644 sonoff/xdrv_02_mqtt.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b2210c830130..def41834ac1a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.13 20181008 +/* 6.2.1.14 20181010 + * Rewrite Webserver page handler for easier extension (thx to Adrian Scillato) + * + * 6.2.1.13 20181008 * Change default Mqtt client library from PubSubClient to non-blocking ArduinoMqtt by Joel Gaehwiler * Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 * diff --git a/sonoff/i18n.h b/sonoff/i18n.h index ab1f0a1d2c52..62226f91fcfe 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -539,7 +539,6 @@ const char S_CONFIGURATION[] PROGMEM = D_CONFIGURATION; const char S_CONFIGURE_MODULE[] PROGMEM = D_CONFIGURE_MODULE; const char S_CONFIGURE_WIFI[] PROGMEM = D_CONFIGURE_WIFI; const char S_NO_NETWORKS_FOUND[] PROGMEM = D_NO_NETWORKS_FOUND; -const char S_CONFIGURE_MQTT[] PROGMEM = D_CONFIGURE_MQTT; const char S_CONFIGURE_LOGGING[] PROGMEM = D_CONFIGURE_LOGGING; const char S_CONFIGURE_OTHER[] PROGMEM = D_CONFIGURE_OTHER; const char S_SAVE_CONFIGURATION[] PROGMEM = D_SAVE_CONFIGURATION; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 5d41aa18df27..5bc744157042 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -214,7 +214,7 @@ enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MA enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_100_MSECOND, FUNC_EVERY_200_MSECOND, FUNC_EVERY_250_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, - FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM}; + FUNC_RULES_PROCESS, FUNC_SERIAL, FUNC_FREE_MEM, FUNC_WEB_ADD_BUTTON, FUNC_WEB_ADD_HANDLER}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index eba7ddc21502..080c76fa443b 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x0602010D +#define VERSION 0x0602010E #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino new file mode 100644 index 000000000000..50345145f8b1 --- /dev/null +++ b/sonoff/xdrv_01_webserver.ino @@ -0,0 +1,2003 @@ +/* + xdrv_01_webserver.ino - webserver for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_WEBSERVER +/*********************************************************************************************\ + * Web server and WiFi Manager + * + * Enables configuration and reconfiguration of WiFi credentials using a Captive Portal + * Based on source by AlexT (https://github.com/tzapu) +\*********************************************************************************************/ + +#define HTTP_REFRESH_TIME 2345 // milliseconds + +#ifdef USE_RF_FLASH +uint8_t *efm8bb1_update = NULL; +#endif // USE_RF_FLASH + +enum UploadTypes { UPL_TASMOTA, UPL_SETTINGS, UPL_EFM8BB1 }; + +const char HTTP_HEAD[] PROGMEM = + "" + "" + "" + "" + "{h} - {v}" + + "" + + "" + + "" + "" + "
" +#ifdef BE_MINIMAL + "

" D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "

" +#endif + "
" +#ifdef LANGUAGE_MODULE_NAME + "

" D_MODULE " {ha

" +#else + "

{ha " D_MODULE "

" +#endif + "

{h}

"; +const char HTTP_SCRIPT_CONSOL[] PROGMEM = + "var sn=0;" // Scroll position + "var id=0;" // Get most of weblog initially + "function l(p){" // Console log and command service + "var c,o,t;" + "clearTimeout(lt);" + "o='';" + "t=eb('t1');" + "if(p==1){" + "c=eb('c1');" + "o='&c1='+encodeURIComponent(c.value);" + "c.value='';" + "t.scrollTop=sn;" + "}" + "if(t.scrollTop>=sn){" // User scrolled back so no updates + "if(x!=null){x.abort();}" // Abort if no response within 2 seconds (happens on restart 1) + "x=new XMLHttpRequest();" + "x.onreadystatechange=function(){" + "if(x.readyState==4&&x.status==200){" + "var z,d;" + "d=x.responseXML;" + "id=d.getElementsByTagName('i')[0].childNodes[0].nodeValue;" + "if(d.getElementsByTagName('j')[0].childNodes[0].nodeValue==0){t.value='';}" + "z=d.getElementsByTagName('l')[0].childNodes;" + "if(z.length>0){t.value+=decodeURIComponent(z[0].nodeValue);}" + "t.scrollTop=99999;" + "sn=t.scrollTop;" + "}" + "};" + "x.open('GET','ax?c2='+id+o,true);" + "x.send();" + "}" + "lt=setTimeout(l,{a});" + "return false;" + "}" + ""; +const char HTTP_SCRIPT_MODULE1[] PROGMEM = + "var os;" + "function sk(s,g){" + "var o=os.replace(\"value='\"+s+\"'\",\"selected value='\"+s+\"'\");" + "eb('g'+g).innerHTML=o;" + "}" + "function sl(){" + "var o0=\""; +const char HTTP_SCRIPT_MODULE2[] PROGMEM = + "}1'%d'>%02d %s}2"; // "}1" and "}2" means do not use "}x" in Module name and Sensor name +const char HTTP_SCRIPT_MODULE3[] PROGMEM = + "\";" + "os=o0.replace(/}1/g,\"
"; + "

{h}

{j}
"; const char HTTP_SCRIPT_CONSOL[] PROGMEM = "var sn=0;" // Scroll position "var id=0;" // Get most of weblog initially @@ -453,6 +453,25 @@ void ShowPage(String &page, bool auth) page.replace(F("{a}"), String(Settings.web_refresh)); page.replace(F("{ha"), my_module.name); page.replace(F("{h}"), Settings.friendlyname[0]); + + String info = ""; + if (Settings.flag3.gui_hostname_ip) { + uint8_t more_ips = 0; + info += F("

"); info += my_hostname; + if (mdns_begun) { info += F(".local"); } + info += F(" ("); + if (static_cast(WiFi.localIP()) != 0) { + info += WiFi.localIP().toString(); + more_ips++; + } + if (static_cast(WiFi.softAPIP()) != 0) { + if (more_ips) { info += F(", "); } + info += WiFi.softAPIP().toString(); + } + info += F(")

"); + } + page.replace(F("{j}"), info); + if (HTTP_MANAGER == webserver_state) { if (WifiConfigCounter()) { page.replace(F(""), F("")); @@ -1241,6 +1260,7 @@ void HandleInformation() func += F("}1" D_AP); func += String(Settings.sta_active +1); func += F(" " D_SSID " (" D_RSSI ")}2"); func += Settings.sta_ssid[Settings.sta_active]; func += F(" ("); func += WifiGetRssiAsQuality(WiFi.RSSI()); func += F("%)"); func += F("}1" D_HOSTNAME "}2"); func += my_hostname; + if (mdns_begun) { func += F(".local"); } if (static_cast(WiFi.localIP()) != 0) { func += F("}1" D_IP_ADDRESS "}2"); func += WiFi.localIP().toString(); func += F("}1" D_GATEWAY "}2"); func += IPAddress(Settings.ip_address[1]).toString(); diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 341fc71b5054..717ff234c7dd 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -393,6 +393,7 @@ boolean EnergyCommand() RtcSettings.energy_kWhtotal = lnum *100; Settings.energy_kWhtotal = RtcSettings.energy_kWhtotal; energy_total = (float)(RtcSettings.energy_kWhtotal + energy_kWhtoday) / 100000; + if (!energy_total) { Settings.energy_kWhtotal_time = LocalTime(); } break; } } @@ -612,8 +613,8 @@ void EnergyShow(boolean json) } if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s"), - mqtt_data, energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", active_power_chr); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s"), + mqtt_data, GetDateAndTime(DT_ENERGY).c_str(), energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", active_power_chr); if (!energy_type_dc) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s%s"), mqtt_data, apparent_power_chr, reactive_power_chr, power_factor_chr, (!isnan(energy_frequency)) ? sfrequency : ""); diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index eb700c322a9e..bfc4fc903d2d 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -33,6 +33,7 @@ boolean tuya_ignore_dim = false; // Flag to skip serial send to preve uint8_t tuya_cmd_status = 0; // Current status of serial-read uint8_t tuya_cmd_checksum = 0; // Checksum of tuya command uint8_t tuya_data_len = 0; // Data lenght of command +bool tuya_wifi_state = false; char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer int tuya_byte_counter = 0; // Index in serial receive buffer @@ -142,12 +143,15 @@ void TuyaPacketProcess() ExecuteCommand(scmnd, SRC_SWITCH); } } - else if (tuya_byte_counter == 8 && tuya_buffer[3] == 5 && tuya_buffer[5] == 1 && tuya_buffer[7] == 5 ) { // reset WiFi settings packet - to do: reset red MCU LED after WiFi is up + else if (tuya_byte_counter == 8 && tuya_buffer[3] == 5 && tuya_buffer[5] == 1 && tuya_buffer[7] == 5 ) { // reset WiFi settings packet AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi Reset Rcvd")); + TuyaResetWifi(); + } + else if (tuya_byte_counter == 7 && tuya_buffer[3] == 3 && tuya_buffer[6] == 2) { // WiFi LED has been sucessfully reset. - snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " 2"); - ExecuteCommand(scmnd, SRC_BUTTON); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi LED reset ACK")); + tuya_wifi_state = true; } } @@ -221,6 +225,21 @@ boolean TuyaModuleSelected() return true; } +void TuyaResetWifiLed(){ + snprintf_P(log_data, sizeof(log_data), "TYA: Reset WiFi LED"); + AddLog(LOG_LEVEL_DEBUG); + + TuyaSerial->write((uint8_t)0x55); // header 55AA + TuyaSerial->write((uint8_t)0xAA); + TuyaSerial->write((uint8_t)0x00); // version 00 + TuyaSerial->write((uint8_t)0x03); // command 03 - set wifi state + TuyaSerial->write((uint8_t)0x00); + TuyaSerial->write((uint8_t)0x01); // following data length 0x01 + TuyaSerial->write((uint8_t)0x03); // wifi state 4 (configured and connected) + TuyaSerial->write((uint8_t)0x06); // checksum:sum of all bytes in packet mod 256 + TuyaSerial->flush(); +} + void TuyaInit() { if (!Settings.param[P_TUYA_DIMMER_ID]) { @@ -245,18 +264,24 @@ void TuyaInit() } } +void TuyaResetWifi() +{ + if (!Settings.flag.button_restrict) { + char scmnd[20]; + snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); + ExecuteCommand(scmnd, SRC_BUTTON); + tuya_wifi_state = false; + } +} + boolean TuyaButtonPressed() { if ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index])) { snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_10), XdrvMailbox.index +1); AddLog(LOG_LEVEL_DEBUG); + TuyaResetWifi(); - if (!Settings.flag.button_restrict) { - char scmnd[20]; - snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); - ExecuteCommand(scmnd, SRC_BUTTON); - } } return true; // Serviced here } @@ -288,6 +313,9 @@ boolean Xdrv16(byte function) case FUNC_BUTTON_PRESSED: result = TuyaButtonPressed(); break; + case FUNC_EVERY_SECOND: + if(TuyaSerial && !tuya_wifi_state) { TuyaResetWifiLed(); } + break; } } return result; diff --git a/sonoff/xdrv_17_rcswitch.ino b/sonoff/xdrv_17_rcswitch.ino index e4cccb27385c..137bd82b1ebe 100644 --- a/sonoff/xdrv_17_rcswitch.ino +++ b/sonoff/xdrv_17_rcswitch.ino @@ -1,7 +1,7 @@ /* xdrv_17_rcswitch.ino - RF transceiver using RcSwitch library for Sonoff-Tasmota - Copyright (C) 2017 Theo Arends + Copyright (C) 2018 Theo Arends This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index 8a50b8ae6352..23ddf7da95d5 100755 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -27,8 +27,8 @@ * I2C Address: 0x76 or 0x77 \*********************************************************************************************/ -#define BMP_ADDR1 0x77 -#define BMP_ADDR2 0x76 +#define BMP_ADDR1 0x76 +#define BMP_ADDR2 0x77 #define BMP180_CHIPID 0x55 #define BMP280_CHIPID 0x58 @@ -37,18 +37,28 @@ #define BMP_REGISTER_CHIPID 0xD0 -const char kBmpTypes[] PROGMEM = "BMP180|BMP280|BME280|BME680"; +#define BMP_MAX_SENSORS 2 -uint8_t bmp_address; +const char kBmpTypes[] PROGMEM = "BMP180|BMP280|BME280|BME680"; uint8_t bmp_addresses[] = { BMP_ADDR1, BMP_ADDR2 }; -uint8_t bmp_type = 0; -uint8_t bmp_model = 0; -char bmp_name[7]; +uint8_t bmp_count = 0; +uint8_t bmp_once = 1; + +struct BMPSTRUCT { + uint8_t bmp_address; // I2C bus address + char bmp_name[7]; // Sensor name - "BMPXXX" + uint8_t bmp_type = 0; + uint8_t bmp_model = 0; -uint8_t bmp_valid = 0; -float bmp_temperature = 0.0; -float bmp_pressure = 0.0; -float bmp_humidity = 0.0; + uint8_t bmp_valid = 0; +#ifdef USE_BME680 + uint8_t bme680_state = 0; + float bmp_gas_resistance = 0.0; +#endif // USE_BME680 + float bmp_temperature = 0.0; + float bmp_pressure = 0.0; + float bmp_humidity = 0.0; +} bmp_sensors[BMP_MAX_SENSORS]; /*********************************************************************************************\ * BMP085 and BME180 @@ -73,75 +83,86 @@ float bmp_humidity = 0.0; #define BMP180_OSS 3 -int16_t cal_ac1; -int16_t cal_ac2; -int16_t cal_ac3; -int16_t cal_b1; -int16_t cal_b2; -int16_t cal_mc; -int16_t cal_md; -uint16_t cal_ac4; -uint16_t cal_ac5; -uint16_t cal_ac6; - -boolean Bmp180Calibration() +struct BMP180CALIBDATA { + int16_t cal_ac1; + int16_t cal_ac2; + int16_t cal_ac3; + int16_t cal_b1; + int16_t cal_b2; + int16_t cal_mc; + int16_t cal_md; + uint16_t cal_ac4; + uint16_t cal_ac5; + uint16_t cal_ac6; +} bmp180_cal_data[BMP_MAX_SENSORS]; + +boolean Bmp180Calibration(uint8_t bmp_idx) { - cal_ac1 = I2cRead16(bmp_address, BMP180_AC1); - cal_ac2 = I2cRead16(bmp_address, BMP180_AC2); - cal_ac3 = I2cRead16(bmp_address, BMP180_AC3); - cal_ac4 = I2cRead16(bmp_address, BMP180_AC4); - cal_ac5 = I2cRead16(bmp_address, BMP180_AC5); - cal_ac6 = I2cRead16(bmp_address, BMP180_AC6); - cal_b1 = I2cRead16(bmp_address, BMP180_VB1); - cal_b2 = I2cRead16(bmp_address, BMP180_VB2); - cal_mc = I2cRead16(bmp_address, BMP180_MC); - cal_md = I2cRead16(bmp_address, BMP180_MD); + bmp180_cal_data[bmp_idx].cal_ac1 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC1); + bmp180_cal_data[bmp_idx].cal_ac2 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC2); + bmp180_cal_data[bmp_idx].cal_ac3 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC3); + bmp180_cal_data[bmp_idx].cal_ac4 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC4); + bmp180_cal_data[bmp_idx].cal_ac5 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC5); + bmp180_cal_data[bmp_idx].cal_ac6 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_AC6); + bmp180_cal_data[bmp_idx].cal_b1 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_VB1); + bmp180_cal_data[bmp_idx].cal_b2 = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_VB2); + bmp180_cal_data[bmp_idx].cal_mc = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_MC); + bmp180_cal_data[bmp_idx].cal_md = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_MD); // Check for Errors in calibration data. Value never is 0x0000 or 0xFFFF - if (!cal_ac1 | !cal_ac2 | !cal_ac3 | !cal_ac4 | !cal_ac5 | !cal_ac6 | !cal_b1 | !cal_b2 | !cal_mc | !cal_md) { + if (!bmp180_cal_data[bmp_idx].cal_ac1 | + !bmp180_cal_data[bmp_idx].cal_ac2 | + !bmp180_cal_data[bmp_idx].cal_ac3 | + !bmp180_cal_data[bmp_idx].cal_ac4 | + !bmp180_cal_data[bmp_idx].cal_ac5 | + !bmp180_cal_data[bmp_idx].cal_ac6 | + !bmp180_cal_data[bmp_idx].cal_b1 | + !bmp180_cal_data[bmp_idx].cal_b2 | + !bmp180_cal_data[bmp_idx].cal_mc | + !bmp180_cal_data[bmp_idx].cal_md) { return false; } - if ((cal_ac1 == (int16_t)0xFFFF) | - (cal_ac2 == (int16_t)0xFFFF) | - (cal_ac3 == (int16_t)0xFFFF) | - (cal_ac4 == 0xFFFF) | - (cal_ac5 == 0xFFFF) | - (cal_ac6 == 0xFFFF) | - (cal_b1 == (int16_t)0xFFFF) | - (cal_b2 == (int16_t)0xFFFF) | - (cal_mc == (int16_t)0xFFFF) | - (cal_md == (int16_t)0xFFFF)) { + if ((bmp180_cal_data[bmp_idx].cal_ac1 == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_ac2 == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_ac3 == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_ac4 == 0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_ac5 == 0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_ac6 == 0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_b1 == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_b2 == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_mc == (int16_t)0xFFFF) | + (bmp180_cal_data[bmp_idx].cal_md == (int16_t)0xFFFF)) { return false; } return true; } -void Bmp180Read() +void Bmp180Read(uint8_t bmp_idx) { - I2cWrite8(bmp_address, BMP180_REG_CONTROL, BMP180_TEMPERATURE); + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BMP180_REG_CONTROL, BMP180_TEMPERATURE); delay(5); // 5ms conversion time - int ut = I2cRead16(bmp_address, BMP180_REG_RESULT); - int32_t xt1 = (ut - (int32_t)cal_ac6) * ((int32_t)cal_ac5) >> 15; - int32_t xt2 = ((int32_t)cal_mc << 11) / (xt1 + (int32_t)cal_md); + int ut = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BMP180_REG_RESULT); + int32_t xt1 = (ut - (int32_t)bmp180_cal_data[bmp_idx].cal_ac6) * ((int32_t)bmp180_cal_data[bmp_idx].cal_ac5) >> 15; + int32_t xt2 = ((int32_t)bmp180_cal_data[bmp_idx].cal_mc << 11) / (xt1 + (int32_t)bmp180_cal_data[bmp_idx].cal_md); int32_t bmp180_b5 = xt1 + xt2; - bmp_temperature = ((bmp180_b5 + 8) >> 4) / 10.0; + bmp_sensors[bmp_idx].bmp_temperature = ((bmp180_b5 + 8) >> 4) / 10.0; - I2cWrite8(bmp_address, BMP180_REG_CONTROL, BMP180_PRESSURE3); // Highest resolution + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BMP180_REG_CONTROL, BMP180_PRESSURE3); // Highest resolution delay(2 + (4 << BMP180_OSS)); // 26ms conversion time at ultra high resolution - uint32_t up = I2cRead24(bmp_address, BMP180_REG_RESULT); + uint32_t up = I2cRead24(bmp_sensors[bmp_idx].bmp_address, BMP180_REG_RESULT); up >>= (8 - BMP180_OSS); int32_t b6 = bmp180_b5 - 4000; - int32_t x1 = ((int32_t)cal_b2 * ((b6 * b6) >> 12)) >> 11; - int32_t x2 = ((int32_t)cal_ac2 * b6) >> 11; + int32_t x1 = ((int32_t)bmp180_cal_data[bmp_idx].cal_b2 * ((b6 * b6) >> 12)) >> 11; + int32_t x2 = ((int32_t)bmp180_cal_data[bmp_idx].cal_ac2 * b6) >> 11; int32_t x3 = x1 + x2; - int32_t b3 = ((((int32_t)cal_ac1 * 4 + x3) << BMP180_OSS) + 2) >> 2; + int32_t b3 = ((((int32_t)bmp180_cal_data[bmp_idx].cal_ac1 * 4 + x3) << BMP180_OSS) + 2) >> 2; - x1 = ((int32_t)cal_ac3 * b6) >> 13; - x2 = ((int32_t)cal_b1 * ((b6 * b6) >> 12)) >> 16; + x1 = ((int32_t)bmp180_cal_data[bmp_idx].cal_ac3 * b6) >> 13; + x2 = ((int32_t)bmp180_cal_data[bmp_idx].cal_b1 * ((b6 * b6) >> 12)) >> 16; x3 = ((x1 + x2) + 2) >> 2; - uint32_t b4 = ((uint32_t)cal_ac4 * (uint32_t)(x3 + 32768)) >> 15; + uint32_t b4 = ((uint32_t)bmp180_cal_data[bmp_idx].cal_ac4 * (uint32_t)(x3 + 32768)) >> 15; uint32_t b7 = ((uint32_t)up - b3) * (uint32_t)(50000UL >> BMP180_OSS); int32_t p; @@ -155,7 +176,7 @@ void Bmp180Read() x1 = (x1 * 3038) >> 16; x2 = (-7357 * p) >> 16; p += ((x1 + x2 + (int32_t)3791) >> 4); - bmp_pressure = (float)p / 100.0; // convert to mbar + bmp_sensors[bmp_idx].bmp_pressure = (float)p / 100.0; // convert to mbar } /*********************************************************************************************\ @@ -204,97 +225,96 @@ struct BME280CALIBDATA int16_t dig_P7; int16_t dig_P8; int16_t dig_P9; - uint8_t dig_H1; int16_t dig_H2; - uint8_t dig_H3; int16_t dig_H4; int16_t dig_H5; + uint8_t dig_H1; + uint8_t dig_H3; int8_t dig_H6; -} Bme280CalibrationData; +} Bme280CalibrationData[BMP_MAX_SENSORS]; -boolean Bmx280Calibrate() +boolean Bmx280Calibrate(uint8_t bmp_idx) { // if (I2cRead8(bmp_address, BMP_REGISTER_CHIPID) != BME280_CHIPID) return false; - Bme280CalibrationData.dig_T1 = I2cRead16LE(bmp_address, BME280_REGISTER_DIG_T1); - Bme280CalibrationData.dig_T2 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_T2); - Bme280CalibrationData.dig_T3 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_T3); - Bme280CalibrationData.dig_P1 = I2cRead16LE(bmp_address, BME280_REGISTER_DIG_P1); - Bme280CalibrationData.dig_P2 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P2); - Bme280CalibrationData.dig_P3 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P3); - Bme280CalibrationData.dig_P4 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P4); - Bme280CalibrationData.dig_P5 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P5); - Bme280CalibrationData.dig_P6 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P6); - Bme280CalibrationData.dig_P7 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P7); - Bme280CalibrationData.dig_P8 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P8); - Bme280CalibrationData.dig_P9 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_P9); - if (BME280_CHIPID == bmp_type) { // #1051 - Bme280CalibrationData.dig_H1 = I2cRead8(bmp_address, BME280_REGISTER_DIG_H1); - Bme280CalibrationData.dig_H2 = I2cReadS16_LE(bmp_address, BME280_REGISTER_DIG_H2); - Bme280CalibrationData.dig_H3 = I2cRead8(bmp_address, BME280_REGISTER_DIG_H3); - Bme280CalibrationData.dig_H4 = (I2cRead8(bmp_address, BME280_REGISTER_DIG_H4) << 4) | (I2cRead8(bmp_address, BME280_REGISTER_DIG_H4 + 1) & 0xF); - Bme280CalibrationData.dig_H5 = (I2cRead8(bmp_address, BME280_REGISTER_DIG_H5 + 1) << 4) | (I2cRead8(bmp_address, BME280_REGISTER_DIG_H5) >> 4); - Bme280CalibrationData.dig_H6 = (int8_t)I2cRead8(bmp_address, BME280_REGISTER_DIG_H6); - - I2cWrite8(bmp_address, BME280_REGISTER_CONTROL, 0x00); // sleep mode since writes to config can be ignored in normal mode (Datasheet 5.4.5/6 page 27) + Bme280CalibrationData[bmp_idx].dig_T1 = I2cRead16LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_T1); + Bme280CalibrationData[bmp_idx].dig_T2 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_T2); + Bme280CalibrationData[bmp_idx].dig_T3 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_T3); + Bme280CalibrationData[bmp_idx].dig_P1 = I2cRead16LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P1); + Bme280CalibrationData[bmp_idx].dig_P2 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P2); + Bme280CalibrationData[bmp_idx].dig_P3 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P3); + Bme280CalibrationData[bmp_idx].dig_P4 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P4); + Bme280CalibrationData[bmp_idx].dig_P5 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P5); + Bme280CalibrationData[bmp_idx].dig_P6 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P6); + Bme280CalibrationData[bmp_idx].dig_P7 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P7); + Bme280CalibrationData[bmp_idx].dig_P8 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P8); + Bme280CalibrationData[bmp_idx].dig_P9 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_P9); + if (BME280_CHIPID == bmp_sensors[bmp_idx].bmp_type) { // #1051 + Bme280CalibrationData[bmp_idx].dig_H1 = I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H1); + Bme280CalibrationData[bmp_idx].dig_H2 = I2cReadS16_LE(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H2); + Bme280CalibrationData[bmp_idx].dig_H3 = I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H3); + Bme280CalibrationData[bmp_idx].dig_H4 = (I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H4) << 4) | (I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H4 + 1) & 0xF); + Bme280CalibrationData[bmp_idx].dig_H5 = (I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H5 + 1) << 4) | (I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H5) >> 4); + Bme280CalibrationData[bmp_idx].dig_H6 = (int8_t)I2cRead8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_DIG_H6); + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_CONTROL, 0x00); // sleep mode since writes to config can be ignored in normal mode (Datasheet 5.4.5/6 page 27) // Set before CONTROL_meas (DS 5.4.3) - I2cWrite8(bmp_address, BME280_REGISTER_CONTROLHUMID, 0x01); // 1x oversampling - I2cWrite8(bmp_address, BME280_REGISTER_CONFIG, 0xA0); // 1sec standby between measurements (to limit self heating), IIR filter off - I2cWrite8(bmp_address, BME280_REGISTER_CONTROL, 0x27); // 1x oversampling, normal mode + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_CONTROLHUMID, 0x01); // 1x oversampling + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_CONFIG, 0xA0); // 1sec standby between measurements (to limit self heating), IIR filter off + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_CONTROL, 0x27); // 1x oversampling, normal mode } else { - I2cWrite8(bmp_address, BME280_REGISTER_CONTROL, 0xB7); // 16x oversampling, normal mode (Adafruit) + I2cWrite8(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_CONTROL, 0xB7); // 16x oversampling, normal mode (Adafruit) } return true; } -void Bme280Read(void) +void Bme280Read(uint8_t bmp_idx) { - int32_t adc_T = I2cRead24(bmp_address, BME280_REGISTER_TEMPDATA); + int32_t adc_T = I2cRead24(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_TEMPDATA); adc_T >>= 4; - int32_t vart1 = ((((adc_T >> 3) - ((int32_t)Bme280CalibrationData.dig_T1 << 1))) * ((int32_t)Bme280CalibrationData.dig_T2)) >> 11; - int32_t vart2 = (((((adc_T >> 4) - ((int32_t)Bme280CalibrationData.dig_T1)) * ((adc_T >> 4) - ((int32_t)Bme280CalibrationData.dig_T1))) >> 12) * - ((int32_t)Bme280CalibrationData.dig_T3)) >> 14; + int32_t vart1 = ((((adc_T >> 3) - ((int32_t)Bme280CalibrationData[bmp_idx].dig_T1 << 1))) * ((int32_t)Bme280CalibrationData[bmp_idx].dig_T2)) >> 11; + int32_t vart2 = (((((adc_T >> 4) - ((int32_t)Bme280CalibrationData[bmp_idx].dig_T1)) * ((adc_T >> 4) - ((int32_t)Bme280CalibrationData[bmp_idx].dig_T1))) >> 12) * + ((int32_t)Bme280CalibrationData[bmp_idx].dig_T3)) >> 14; int32_t t_fine = vart1 + vart2; float T = (t_fine * 5 + 128) >> 8; - bmp_temperature = T / 100.0; + bmp_sensors[bmp_idx].bmp_temperature = T / 100.0; - int32_t adc_P = I2cRead24(bmp_address, BME280_REGISTER_PRESSUREDATA); + int32_t adc_P = I2cRead24(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_PRESSUREDATA); adc_P >>= 4; int64_t var1 = ((int64_t)t_fine) - 128000; - int64_t var2 = var1 * var1 * (int64_t)Bme280CalibrationData.dig_P6; - var2 = var2 + ((var1 * (int64_t)Bme280CalibrationData.dig_P5) << 17); - var2 = var2 + (((int64_t)Bme280CalibrationData.dig_P4) << 35); - var1 = ((var1 * var1 * (int64_t)Bme280CalibrationData.dig_P3) >> 8) + ((var1 * (int64_t)Bme280CalibrationData.dig_P2) << 12); - var1 = (((((int64_t)1) << 47) + var1)) * ((int64_t)Bme280CalibrationData.dig_P1) >> 33; + int64_t var2 = var1 * var1 * (int64_t)Bme280CalibrationData[bmp_idx].dig_P6; + var2 = var2 + ((var1 * (int64_t)Bme280CalibrationData[bmp_idx].dig_P5) << 17); + var2 = var2 + (((int64_t)Bme280CalibrationData[bmp_idx].dig_P4) << 35); + var1 = ((var1 * var1 * (int64_t)Bme280CalibrationData[bmp_idx].dig_P3) >> 8) + ((var1 * (int64_t)Bme280CalibrationData[bmp_idx].dig_P2) << 12); + var1 = (((((int64_t)1) << 47) + var1)) * ((int64_t)Bme280CalibrationData[bmp_idx].dig_P1) >> 33; if (0 == var1) { return; // avoid exception caused by division by zero } int64_t p = 1048576 - adc_P; p = (((p << 31) - var2) * 3125) / var1; - var1 = (((int64_t)Bme280CalibrationData.dig_P9) * (p >> 13) * (p >> 13)) >> 25; - var2 = (((int64_t)Bme280CalibrationData.dig_P8) * p) >> 19; - p = ((p + var1 + var2) >> 8) + (((int64_t)Bme280CalibrationData.dig_P7) << 4); - bmp_pressure = (float)p / 25600.0; + var1 = (((int64_t)Bme280CalibrationData[bmp_idx].dig_P9) * (p >> 13) * (p >> 13)) >> 25; + var2 = (((int64_t)Bme280CalibrationData[bmp_idx].dig_P8) * p) >> 19; + p = ((p + var1 + var2) >> 8) + (((int64_t)Bme280CalibrationData[bmp_idx].dig_P7) << 4); + bmp_sensors[bmp_idx].bmp_pressure = (float)p / 25600.0; - if (BMP280_CHIPID == bmp_type) { return; } + if (BMP280_CHIPID == bmp_sensors[bmp_idx].bmp_type) { return; } - int32_t adc_H = I2cRead16(bmp_address, BME280_REGISTER_HUMIDDATA); + int32_t adc_H = I2cRead16(bmp_sensors[bmp_idx].bmp_address, BME280_REGISTER_HUMIDDATA); int32_t v_x1_u32r = (t_fine - ((int32_t)76800)); - v_x1_u32r = (((((adc_H << 14) - (((int32_t)Bme280CalibrationData.dig_H4) << 20) - - (((int32_t)Bme280CalibrationData.dig_H5) * v_x1_u32r)) + ((int32_t)16384)) >> 15) * - (((((((v_x1_u32r * ((int32_t)Bme280CalibrationData.dig_H6)) >> 10) * - (((v_x1_u32r * ((int32_t)Bme280CalibrationData.dig_H3)) >> 11) + ((int32_t)32768))) >> 10) + - ((int32_t)2097152)) * ((int32_t)Bme280CalibrationData.dig_H2) + 8192) >> 14)); + v_x1_u32r = (((((adc_H << 14) - (((int32_t)Bme280CalibrationData[bmp_idx].dig_H4) << 20) - + (((int32_t)Bme280CalibrationData[bmp_idx].dig_H5) * v_x1_u32r)) + ((int32_t)16384)) >> 15) * + (((((((v_x1_u32r * ((int32_t)Bme280CalibrationData[bmp_idx].dig_H6)) >> 10) * + (((v_x1_u32r * ((int32_t)Bme280CalibrationData[bmp_idx].dig_H3)) >> 11) + ((int32_t)32768))) >> 10) + + ((int32_t)2097152)) * ((int32_t)Bme280CalibrationData[bmp_idx].dig_H2) + 8192) >> 14)); v_x1_u32r = (v_x1_u32r - (((((v_x1_u32r >> 15) * (v_x1_u32r >> 15)) >> 7) * - ((int32_t)Bme280CalibrationData.dig_H1)) >> 4)); + ((int32_t)Bme280CalibrationData[bmp_idx].dig_H1)) >> 4)); v_x1_u32r = (v_x1_u32r < 0) ? 0 : v_x1_u32r; v_x1_u32r = (v_x1_u32r > 419430400) ? 419430400 : v_x1_u32r; float h = (v_x1_u32r >> 12); - bmp_humidity = h / 1024.0; + bmp_sensors[bmp_idx].bmp_humidity = h / 1024.0; } #ifdef USE_BME680 @@ -304,92 +324,89 @@ void Bme280Read(void) #include -struct bme680_dev gas_sensor; - -float bmp_gas_resistance = 0.0; -uint8_t bme680_state = 0; +struct bme680_dev gas_sensor[BMP_MAX_SENSORS]; static void BmeDelayMs(uint32_t ms) { delay(ms); } -boolean Bme680Init() +boolean Bme680Init(uint8_t bmp_idx) { - gas_sensor.dev_id = bmp_address; - gas_sensor.intf = BME680_I2C_INTF; - gas_sensor.read = &I2cReadBuffer; - gas_sensor.write = &I2cWriteBuffer; - gas_sensor.delay_ms = BmeDelayMs; + gas_sensor[bmp_idx].dev_id = bmp_sensors[bmp_idx].bmp_address; + gas_sensor[bmp_idx].intf = BME680_I2C_INTF; + gas_sensor[bmp_idx].read = &I2cReadBuffer; + gas_sensor[bmp_idx].write = &I2cWriteBuffer; + gas_sensor[bmp_idx].delay_ms = BmeDelayMs; /* amb_temp can be set to 25 prior to configuring the gas sensor * or by performing a few temperature readings without operating the gas sensor. */ - gas_sensor.amb_temp = 25; + gas_sensor[bmp_idx].amb_temp = 25; int8_t rslt = BME680_OK; - rslt = bme680_init(&gas_sensor); + rslt = bme680_init(&gas_sensor[bmp_idx]); if (rslt != BME680_OK) { return false; } /* Set the temperature, pressure and humidity settings */ - gas_sensor.tph_sett.os_hum = BME680_OS_2X; - gas_sensor.tph_sett.os_pres = BME680_OS_4X; - gas_sensor.tph_sett.os_temp = BME680_OS_8X; - gas_sensor.tph_sett.filter = BME680_FILTER_SIZE_3; + gas_sensor[bmp_idx].tph_sett.os_hum = BME680_OS_2X; + gas_sensor[bmp_idx].tph_sett.os_pres = BME680_OS_4X; + gas_sensor[bmp_idx].tph_sett.os_temp = BME680_OS_8X; + gas_sensor[bmp_idx].tph_sett.filter = BME680_FILTER_SIZE_3; /* Set the remaining gas sensor settings and link the heating profile */ - gas_sensor.gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; + gas_sensor[bmp_idx].gas_sett.run_gas = BME680_ENABLE_GAS_MEAS; /* Create a ramp heat waveform in 3 steps */ - gas_sensor.gas_sett.heatr_temp = 320; /* degree Celsius */ - gas_sensor.gas_sett.heatr_dur = 150; /* milliseconds */ + gas_sensor[bmp_idx].gas_sett.heatr_temp = 320; /* degree Celsius */ + gas_sensor[bmp_idx].gas_sett.heatr_dur = 150; /* milliseconds */ /* Select the power mode */ /* Must be set before writing the sensor configuration */ - gas_sensor.power_mode = BME680_FORCED_MODE; + gas_sensor[bmp_idx].power_mode = BME680_FORCED_MODE; /* Set the required sensor settings needed */ uint8_t set_required_settings = BME680_OST_SEL | BME680_OSP_SEL | BME680_OSH_SEL | BME680_FILTER_SEL | BME680_GAS_SENSOR_SEL; /* Set the desired sensor configuration */ - rslt = bme680_set_sensor_settings(set_required_settings,&gas_sensor); + rslt = bme680_set_sensor_settings(set_required_settings,&gas_sensor[bmp_idx]); if (rslt != BME680_OK) { return false; } - bme680_state = 0; + bmp_sensors[bmp_idx].bme680_state = 0; return true; } -void Bme680Read() +void Bme680Read(uint8_t bmp_idx) { int8_t rslt = BME680_OK; - if (BME680_CHIPID == bmp_type) { - if (0 == bme680_state) { + if (BME680_CHIPID == bmp_sensors[bmp_idx].bmp_type) { + if (0 == bmp_sensors[bmp_idx].bme680_state) { /* Trigger the next measurement if you would like to read data out continuously */ - rslt = bme680_set_sensor_mode(&gas_sensor); + rslt = bme680_set_sensor_mode(&gas_sensor[bmp_idx]); if (rslt != BME680_OK) { return; } /* Get the total measurement duration so as to sleep or wait till the * measurement is complete */ // uint16_t meas_period; -// bme680_get_profile_dur(&meas_period, &gas_sensor); +// bme680_get_profile_dur(&meas_period, &gas_sensor[bmp_idx]); // delay(meas_period); /* Delay till the measurement is ready */ // 183 mSec - we'll wait a second - bme680_state = 1; + bmp_sensors[bmp_idx].bme680_state = 1; } else { - bme680_state = 0; + bmp_sensors[bmp_idx].bme680_state = 0; struct bme680_field_data data; - rslt = bme680_get_sensor_data(&data, &gas_sensor); + rslt = bme680_get_sensor_data(&data, &gas_sensor[bmp_idx]); if (rslt != BME680_OK) { return; } - bmp_temperature = data.temperature / 100.0; - bmp_humidity = data.humidity / 1000.0; - bmp_pressure = data.pressure / 100.0; + bmp_sensors[bmp_idx].bmp_temperature = data.temperature / 100.0; + bmp_sensors[bmp_idx].bmp_humidity = data.humidity / 1000.0; + bmp_sensors[bmp_idx].bmp_pressure = data.pressure / 100.0; /* Avoid using measurements from an unstable heating setup */ if (data.status & BME680_GASM_VALID_MSK) { - bmp_gas_resistance = data.gas_resistance / 1000.0; + bmp_sensors[bmp_idx].bmp_gas_resistance = data.gas_resistance / 1000.0; } else { - bmp_gas_resistance = 0; + bmp_sensors[bmp_idx].bmp_gas_resistance = 0; } } } @@ -402,65 +419,66 @@ void Bme680Read() void BmpDetect() { - if (bmp_type) { return; } + if (bmp_count) return; - for (byte i = 0; i < sizeof(bmp_addresses); i++) { - bmp_address = bmp_addresses[i]; - bmp_type = I2cRead8(bmp_address, BMP_REGISTER_CHIPID); + for (byte i = 0; i < BMP_MAX_SENSORS; i++) { + uint8_t bmp_type = I2cRead8(bmp_addresses[i], BMP_REGISTER_CHIPID); if (bmp_type) { - break; + bmp_sensors[bmp_count].bmp_address = bmp_addresses[i]; + bmp_sensors[bmp_count].bmp_type = bmp_type; + bmp_sensors[bmp_count].bmp_model = 0; + + boolean success = false; + switch (bmp_type) { + case BMP180_CHIPID: + success = Bmp180Calibration(bmp_count); + break; + case BME280_CHIPID: + bmp_sensors[bmp_count].bmp_model++; // 2 + case BMP280_CHIPID: + bmp_sensors[bmp_count].bmp_model++; // 1 + success = Bmx280Calibrate(bmp_count); + break; +#ifdef USE_BME680 + case BME680_CHIPID: + bmp_sensors[bmp_count].bmp_model = 3; // 3 + success = Bme680Init(bmp_count); + break; +#endif // USE_BME680 + } + if (success) { + GetTextIndexed(bmp_sensors[bmp_count].bmp_name, sizeof(bmp_sensors[bmp_count].bmp_name), bmp_sensors[bmp_count].bmp_model, kBmpTypes); + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, bmp_sensors[bmp_count].bmp_name, bmp_sensors[bmp_count].bmp_address); + AddLog(LOG_LEVEL_DEBUG); + bmp_count++; + } } } - if (bmp_type) { - bmp_model = 0; - boolean success = false; - switch (bmp_type) { +} + +void BmpRead() +{ + for (byte bmp_idx = 0; bmp_idx < bmp_count; bmp_idx++) { + switch (bmp_sensors[bmp_idx].bmp_type) { case BMP180_CHIPID: - success = Bmp180Calibration(); + Bmp180Read(bmp_idx); break; - case BME280_CHIPID: - bmp_model++; // 2 case BMP280_CHIPID: - bmp_model++; // 1 - success = Bmx280Calibrate(); + case BME280_CHIPID: + Bme280Read(bmp_idx); break; #ifdef USE_BME680 case BME680_CHIPID: - bmp_model = 3; // 3 - success = Bme680Init(); + Bme680Read(bmp_idx); break; #endif // USE_BME680 } - if (success) { - GetTextIndexed(bmp_name, sizeof(bmp_name), bmp_model, kBmpTypes); - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, bmp_name, bmp_address); - AddLog(LOG_LEVEL_DEBUG); - } - else { - bmp_type = 0; + if (bmp_sensors[bmp_idx].bmp_temperature != 0.0) { + bmp_sensors[bmp_idx].bmp_temperature = ConvertTemp(bmp_sensors[bmp_idx].bmp_temperature); } } -} - -void BmpRead() -{ - switch (bmp_type) { - case BMP180_CHIPID: - Bmp180Read(); - break; - case BMP280_CHIPID: - case BME280_CHIPID: - Bme280Read(); - break; -#ifdef USE_BME680 - case BME680_CHIPID: - Bme680Read(); - break; -#endif // USE_BME680 - } - if (bmp_temperature != 0.0) { bmp_temperature = ConvertTemp(bmp_temperature); } - SetGlobalValues(bmp_temperature, bmp_humidity); + SetGlobalValues(bmp_sensors[0].bmp_temperature, bmp_sensors[0].bmp_humidity); } void BmpEverySecond() @@ -477,72 +495,91 @@ void BmpEverySecond() void BmpShow(boolean json) { - if (bmp_type) { - float bmp_sealevel = 0.0; - char temperature[10]; - char pressure[10]; - char sea_pressure[10]; - char humidity[10]; - - if (bmp_pressure != 0.0) { - bmp_sealevel = (bmp_pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0), 5.255)) - 21.6; - } + for (byte bmp_idx = 0; bmp_idx < bmp_count; bmp_idx++) { + if (bmp_sensors[bmp_idx].bmp_type) { + float bmp_sealevel = 0.0; + char temperature[10]; + char pressure[10]; + char sea_pressure[10]; + char humidity[10]; + char name[10]; + + if (bmp_sensors[bmp_idx].bmp_pressure != 0.0) { + bmp_sealevel = (bmp_sensors[bmp_idx].bmp_pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0), 5.255)) - 21.6; + } + + snprintf(name, sizeof(name), bmp_sensors[bmp_idx].bmp_name); + if (bmp_count > 1) { + snprintf_P(name, sizeof(name), PSTR("%s-%02X"), name, bmp_sensors[bmp_idx].bmp_address); // BMXXXX-XX + } - dtostrfd(bmp_temperature, Settings.flag2.temperature_resolution, temperature); - dtostrfd(bmp_pressure, Settings.flag2.pressure_resolution, pressure); - dtostrfd(bmp_sealevel, Settings.flag2.pressure_resolution, sea_pressure); - dtostrfd(bmp_humidity, Settings.flag2.humidity_resolution, humidity); + dtostrfd(bmp_sensors[bmp_idx].bmp_temperature, Settings.flag2.temperature_resolution, temperature); + dtostrfd(bmp_sensors[bmp_idx].bmp_pressure, Settings.flag2.pressure_resolution, pressure); + dtostrfd(bmp_sealevel, Settings.flag2.pressure_resolution, sea_pressure); + dtostrfd(bmp_sensors[bmp_idx].bmp_humidity, Settings.flag2.humidity_resolution, humidity); #ifdef USE_BME680 - char gas_resistance[10]; - dtostrfd(bmp_gas_resistance, 2, gas_resistance); + char gas_resistance[10]; + dtostrfd(bmp_sensors[bmp_idx].bmp_gas_resistance, 2, gas_resistance); #endif // USE_BME680 - if (json) { - char json_humidity[40]; - snprintf_P(json_humidity, sizeof(json_humidity), PSTR(",\"" D_JSON_HUMIDITY "\":%s"), humidity); - char json_sealevel[40]; - snprintf_P(json_sealevel, sizeof(json_sealevel), PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sea_pressure); + if (json) { + char json_humidity[40]; + snprintf_P(json_humidity, sizeof(json_humidity), PSTR(",\"" D_JSON_HUMIDITY "\":%s"), humidity); + char json_sealevel[40]; + snprintf_P(json_sealevel, sizeof(json_sealevel), PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sea_pressure); #ifdef USE_BME680 - char json_gas[40]; - snprintf_P(json_gas, sizeof(json_gas), PSTR(",\"" D_JSON_GAS "\":%s"), gas_resistance); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s%s,\"" D_JSON_PRESSURE "\":%s%s%s}"), - mqtt_data, bmp_name, temperature, (bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : "", (bmp_model >= 3) ? json_gas : ""); + char json_gas[40]; + snprintf_P(json_gas, sizeof(json_gas), PSTR(",\"" D_JSON_GAS "\":%s"), gas_resistance); + + snprintf_P(mqtt_data, + sizeof(mqtt_data), + PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s%s,\"" D_JSON_PRESSURE "\":%s%s%s}"), + mqtt_data, + name, + temperature, + (bmp_sensors[bmp_idx].bmp_model >= 2) ? json_humidity : "", + pressure, + (Settings.altitude != 0) ? json_sealevel : "", + (bmp_sensors[bmp_idx].bmp_model >= 3) ? json_gas : "" + ); #else - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s%s,\"" D_JSON_PRESSURE "\":%s%s}"), - mqtt_data, bmp_name, temperature, (bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : ""); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s%s,\"" D_JSON_PRESSURE "\":%s%s}"), + mqtt_data, name, temperature, (bmp_sensors[bmp_idx].bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : ""); #endif // USE_BME680 + #ifdef USE_DOMOTICZ - if (0 == tele_period) { - DomoticzTempHumPressureSensor(temperature, humidity, pressure); + if ((0 == tele_period) && (0 == bmp_idx)) { // We want the same first sensor to report to Domoticz in case a read is missed + DomoticzTempHumPressureSensor(temperature, humidity, pressure); #ifdef USE_BME680 - if (bmp_model >= 3) { DomoticzSensor(DZ_AIRQUALITY, (uint32_t)bmp_gas_resistance); } + if (bmp_sensors[bmp_idx].bmp_model >= 3) { DomoticzSensor(DZ_AIRQUALITY, (uint32_t)bmp_sensors[bmp_idx].bmp_gas_resistance); } #endif // USE_BME680 - } -#endif // USE_DOMOTICZ + } +#endif // USE_DOMOTICZ #ifdef USE_KNX - if (0 == tele_period) { - KnxSensor(KNX_TEMPERATURE, bmp_temperature); - KnxSensor(KNX_HUMIDITY, bmp_humidity); - } + if (0 == tele_period) { + KnxSensor(KNX_TEMPERATURE, bmp_sensors[bmp_idx].bmp_temperature); + KnxSensor(KNX_HUMIDITY, bmp_sensors[bmp_idx].bmp_humidity); + } #endif // USE_KNX #ifdef USE_WEBSERVER - } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, bmp_name, temperature, TempUnit()); - if (bmp_model >= 2) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_HUM, mqtt_data, bmp_name, humidity); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_PRESSURE, mqtt_data, bmp_name, pressure); - if (Settings.altitude != 0) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SEAPRESSURE, mqtt_data, bmp_name, sea_pressure); - } + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, name, temperature, TempUnit()); + if (bmp_sensors[bmp_idx].bmp_model >= 2) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_HUM, mqtt_data, name, humidity); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_PRESSURE, mqtt_data, name, pressure); + if (Settings.altitude != 0) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SEAPRESSURE, mqtt_data, name, sea_pressure); + } #ifdef USE_BME680 - if (bmp_model >= 3) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{s}%s " D_GAS "{m}%s " D_UNIT_KILOOHM "{e}"), mqtt_data, bmp_name, gas_resistance); - } + if (bmp_sensors[bmp_idx].bmp_model >= 3) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{s}%s " D_GAS "{m}%s " D_UNIT_KILOOHM "{e}"), mqtt_data, name, gas_resistance); + } #endif // USE_BME680 -#endif // USE_WEBSERVER +#endif // USE_WEBSERVER + } } } } @@ -572,11 +609,11 @@ boolean Xsns09(byte function) case FUNC_WEB_APPEND: BmpShow(0); break; -#endif // USE_WEBSERVER +#endif // USE_WEBSERVER } } return result; } -#endif // USE_BMP -#endif // USE_I2C +#endif // USE_BMP +#endif // USE_I2C From 332b657e777bc832e7673ef5bc61fe6db48a4aa2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 30 Oct 2018 18:15:31 +0100 Subject: [PATCH 376/798] 6.3.0 Released 6.3.0 Released --- RELEASENOTES.md | 182 +++++++++++++++++++++------------------- sonoff/_changelog.ino | 5 +- sonoff/sonoff_version.h | 2 +- 3 files changed, 99 insertions(+), 90 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b7a1537bb5e4..1688baa357df 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -32,91 +32,91 @@ See [Tasmota ESP/Arduino library version related issues](https://github.com/aren ### Available Features and Sensors -| Feature or Sensor | minimal | classic | sonoff | knx | sensors | Remarks -|--------------------------------|---------|---------|--------|------|---------|-------- -| ESP/Arduino lib v2.3.0 | 344k | 485k | 491k | 510k | 516k | -| ESP/Arduino lib v2.4.2 | 363k | 499k | 509k | 526k | 532k | No sleep +| Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | Remarks +|--------------------------------|---------|-------|---------|--------|------|---------|-------- +| ESP/Arduino lib v2.3.0 | 343k | 425k | 484k | 490k | 508k | 517k | +| ESP/Arduino lib v2.4.2 | 372k | 451k | 497k | 517k | 533k | 541k | No sleep +| | | | | | | | +| MY_LANGUAGE en-GB | x | x | x | x | x | x | +| MQTT_LIBRARY_TYPE PUBSUBCLIENT | x | x | x | x | x | x | +| USE_WPS | - | - | x | - | - | - | WPS +| USE_SMARTCONFIG | - | - | x | - | - | - | SmartConfig +| USE_ARDUINO_OTA | - | - | - | - | - | - | +| USE_DOMOTICZ | - | - | x | x | x | x | +| USE_HOME_ASSISTANT | - | - | x | x | x | x | +| USE_MQTT_TLS | - | - | - | - | - | - | +| USE_KNX | - | - | - | - | x | - | +| USE_WEBSERVER | x | x | x | x | x | x | WifiManager +| USE_EMULATION | - | x | x | x | - | x | +| USE_DISCOVERY | - | - | x | x | x | x | +| WEBSERVER_ADVERTISE | - | - | x | x | x | x | +| MQTT_HOST_DISCOVERY | - | - | x | x | x | x | +| USE_TIMERS | - | x | - | x | x | x | +| USE_TIMERS_WEB | - | x | - | x | x | x | +| USE_SUNRISE | - | x | - | x | x | x | +| USE_RULES | - | x | - | x | x | x | | | | | | | | -| MY_LANGUAGE en-GB | x | x | x | x | x | -| USE_WPS | - | x | - | - | - | WPS -| USE_SMARTCONFIG | - | x | - | - | - | SmartConfig -| USE_ARDUINO_OTA | - | - | - | - | - | -| MQTT_LIBRARY_TYPE PUBSUBCLIENT | x | x | x | x | x | -| USE_DOMOTICZ | - | x | x | x | x | -| USE_HOME_ASSISTANT | - | x | x | x | x | -| USE_MQTT_TLS | - | - | - | - | - | -| USE_KNX | - | - | - | x | - | -| USE_WEBSERVER | x | x | x | x | x | WifiManager -| USE_EMULATION | - | x | x | - | x | -| USE_DISCOVERY | - | x | x | x | x | -| WEBSERVER_ADVERTISE | - | x | x | x | x | -| MQTT_HOST_DISCOVERY | - | x | x | x | x | -| USE_TIMERS | - | - | x | x | x | -| USE_TIMERS_WEB | - | - | x | x | x | -| USE_SUNRISE | - | - | x | x | x | -| USE_RULES | - | - | x | x | x | -| | | | | | | -| USE_ADC_VCC | x | x | x | x | - | -| USE_DS18B20 | - | - | - | - | - | Single sensor -| USE_DS18x20 | - | x | x | x | x | Multiple sensors -| USE_DS18x20_LEGACY | - | - | - | - | - | Multiple sensors -| | | | | | | -| Feature or Sensor | minimal | classic | sonoff | knx | sensors | -| USE_I2C | - | - | x | x | x | -| USE_SHT | - | - | x | x | x | -| USE_HTU | - | - | x | x | x | -| USE_BMP | - | - | x | x | x | -| USE_BME680 | - | - | - | - | x | -| USE_BH1750 | - | - | x | x | x | -| USE_VEML6070 | - | - | - | - | x | -| USE_ADS1115 | - | - | - | - | x | -| USE_ADS1115_I2CDEV | - | - | - | - | - | -| USE_INA219 | - | - | - | - | x | -| USE_SHT3X | - | - | x | x | x | -| USE_TSL2561 | - | - | - | - | x | -| USE_MGS | - | - | - | - | x | -| USE_SGP30 | - | - | x | x | x | -| USE_SI1145 | - | - | - | - | x | -| USE_LM75AD | - | - | x | x | x | -| USE_APDS9960 | - | - | - | - | - | -| USE_MCP230xx | - | - | - | - | - | -| USE_PCA9685 | - | - | - | - | - | -| USE_MPR121 | - | - | - | - | - | -| USE_CCS811 | - | - | - | - | - | -| USE_MPU6050 | - | - | - | - | - | -| USE_DS3231 | - | - | - | - | - | -| | | | | | | -| Feature or Sensor | minimal | classic | sonoff | knx | sensors | -| USE_SPI | - | - | - | - | - | -| USE_MHZ19 | - | - | x | x | x | -| USE_SENSEAIR | - | - | x | x | x | -| USE_PMS5003 | - | - | x | x | x | -| USE_NOVA_SDS | - | - | x | x | x | -| USE_PZEM004T | - | - | x | x | x | -| USE_PZEM_AC | - | - | x | x | x | -| USE_PZEM_DC | - | - | x | x | x | -| USE_MCP39F501 | - | - | x | x | x | -| USE_SERIAL_BRIDGE | - | - | x | x | x | -| USE_SDM120 | - | - | - | - | x | -| USE_SDM630 | - | - | - | - | x | -| USE_MP3_PLAYER | - | - | - | - | - | -| USE_IR_REMOTE | - | - | x | x | x | -| USE_IR_HVAC | - | - | - | - | x | -| USE_IR_RECEIVE | - | - | x | x | x | -| USE_WS2812 | - | x | x | x | x | -| USE_WS2812_DMA | - | - | - | - | - | -| USE_ARILUX_RF | - | - | x | x | x | -| USE_SR04 | - | - | x | x | x | -| USE_TM1638 | - | - | - | - | - | -| USE_HX711 | - | - | x | x | x | -| USE_RF_FLASH | - | - | x | x | x | -| USE_TUYA_DIMMER | - | - | x | x | x | -| USE_TX20_WIND_SENSOR | - | - | x | x | x | -| USE_RC_SWITCH | - | - | x | x | x | -| USE_DISPLAY | - | - | - | - | - | +| USE_ADC_VCC | x | x | x | x | x | - | +| USE_DS18B20 | - | - | - | - | - | - | Single sensor +| USE_DS18x20 | - | - | x | x | x | x | Multiple sensors +| USE_DS18x20_LEGACY | - | - | - | - | - | - | Multiple sensors +| | | | | | | | +| Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | +| USE_I2C | - | - | - | x | x | x | +| USE_SHT | - | - | - | x | x | x | +| USE_HTU | - | - | - | x | x | x | +| USE_BMP | - | - | - | x | x | x | +| USE_BME680 | - | - | - | - | - | x | +| USE_BH1750 | - | - | - | x | x | x | +| USE_VEML6070 | - | - | - | - | - | x | +| USE_ADS1115 | - | - | - | - | - | x | +| USE_ADS1115_I2CDEV | - | - | - | - | - | - | +| USE_INA219 | - | - | - | - | - | x | +| USE_SHT3X | - | - | - | x | x | x | +| USE_TSL2561 | - | - | - | - | - | x | +| USE_MGS | - | - | - | - | - | x | +| USE_SGP30 | - | - | - | x | x | x | +| USE_SI1145 | - | - | - | - | - | x | +| USE_LM75AD | - | - | - | x | x | x | +| USE_APDS9960 | - | - | - | - | - | - | +| USE_MCP230xx | - | - | - | - | - | - | +| USE_PCA9685 | - | - | - | - | - | - | +| USE_MPR121 | - | - | - | - | - | - | +| USE_CCS811 | - | - | - | - | - | - | +| USE_MPU6050 | - | - | - | - | - | - | +| USE_DS3231 | - | - | - | - | - | - | +| | | | | | | | +| Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | +| USE_SPI | - | - | - | - | - | - | +| USE_MHZ19 | - | - | - | x | x | x | +| USE_SENSEAIR | - | - | - | x | x | x | +| USE_PMS5003 | - | - | - | x | x | x | +| USE_NOVA_SDS | - | - | - | x | x | x | +| USE_PZEM004T | - | - | - | x | x | x | +| USE_PZEM_AC | - | - | - | x | x | x | +| USE_PZEM_DC | - | - | - | x | x | x | +| USE_MCP39F501 | - | x | - | x | x | x | +| USE_SERIAL_BRIDGE | - | - | - | x | x | x | +| USE_SDM120 | - | - | - | - | - | x | +| USE_SDM630 | - | - | - | - | - | x | +| USE_MP3_PLAYER | - | - | - | - | - | x | +| USE_TUYA_DIMMER | - | x | - | x | x | x | +| USE_IR_REMOTE | - | - | - | x | x | x | +| USE_IR_HVAC | - | - | - | - | - | x | +| USE_IR_RECEIVE | - | - | - | x | x | x | +| USE_WS2812 | - | - | x | x | x | x | +| USE_WS2812_DMA | - | - | - | - | - | - | +| USE_ARILUX_RF | - | - | - | x | x | x | +| USE_SR04 | - | - | - | x | x | x | +| USE_TM1638 | - | - | - | - | - | x | +| USE_HX711 | - | - | - | x | x | x | +| USE_RF_FLASH | - | - | - | x | x | x | +| USE_TX20_WIND_SENSOR | - | - | - | x | x | x | +| USE_RC_SWITCH | - | - | - | x | x | x | +| USE_DISPLAY | - | - | - | - | - | - | ## Changelog -Version 6.3.0 soon +Version 6.3.0 20181030 * Change web Configure Module GPIO drop down list order for better readability * Change status JSON message providing more switch and retain information * Change xsns_17_senseair.ino to use TasmotaModbus library @@ -173,28 +173,34 @@ Version 6.3.0 soon * Add command SerialSend5 to send raw serial data like "A5074100545293" * Add command WebRefresh 1000..10000 to control web page refresh in milliseconds. Default is 2345 * Add command WeightRes 0..3 to control display of decimals for kilogram - * Add command SetOption52 to control display of optional time offset from UTC in JSON messages (#3629, #3711) * Add command RGBWWTable to support color calibration (#3933) * Add command Reset 4 (reset to defaults but keep wifi params) and Reset 5 (as reset 4 and also erase flash) (#4061) + * Add command SetOption35 0..255 (seconds) to delay mDNS initialization to control possible Wifi connect problems + * Add command SetOption52 0/1 to control display of optional time offset from UTC in JSON messages (#3629, #3711) + * Add command SetOption53 0/1 to toggle gui display of Hostname and IP address (#1006, #2091) * Add authentication to HTTP web pages * Add decimals as input to commands PowerSet, VoltageSet and CurrentSet * Add tools/decode-config.py by Norbert Richter to decode configuration data. See file for information * Add define USE_DISPLAYS for selecting image sonoff-display + * Add define USE_BASIC for selecting image sonoff-basic without most sensors * Add auto reload of main web page to some web restarts * Add TasmotaModbus library as very basic modbus wrapper for TasmotaSerial * Add more API callbacks and document API.md + * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) + * Add token %hostname% to command FullTopic (#3018) * Add Wifi channel number to state message (#3664) * Add user configurable GPIO02 and GPIO03 on H801 devices (#3692) - * Add network information to display start screen (#3704) * Add toggle function RGBW lights (#3695, #3697) + * Add network information to display start screen (#3704) * Add sleep to Nova Fitness SDS01X sensor (#2841, #3724, #3749) * Add Analog input AD0 enabled to sonoff-sensors.bin (#3756, #3757) - * Add userid/password option to decode-status.py (#3796) * Add power value below 5W to Sonoff Pow R2 and S31 (#3745) - * Add force_update to Home Assistant discovery (#3873) + * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) + * Add userid/password option to decode-status.py (#3796) * Add delay after restart before processing rule sensor data (#3811) + * Add force_update to Home Assistant discovery (#3873) * Add rule triggers SWITCH1#BOOT and POWER1#BOOT (#3904, #3910) - * Add Apparent Power and Reactive Power to Energy Monitoring devices (#251) - * Add RF Receiver control to module MagicHome to be used on Arilux LC10 (#3792) * Add Hebrew language file (#3960) + * Add TotalStartTime to Energy JSON message (#3971) * Add whitespace removal from RfRaw and SerialSend5 (#4020) + * Add support for two BMP/BME sensors (#4195) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c4ac20a7f69c..df78f6354930 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.2.1.20 20181028 +/* 6.3.0 20181030 + * Release of v6.3.0 + * + * 6.2.1.20 20181028 * Add command SetOption35 0..255 (seconds) to delay mDNS initialization to control possible Wifi connect problems * Add command SetOption53 0/1 to toggle gui display of Hostname and IP address (#1006, #2091) * Add token %hostname% to command FullTopic (#3018) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 4a1b9ac5db7a..44aa85be404d 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06020114 +#define VERSION 0x06030000 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From 954ed0ea3cf7b364184679ec7ff4bda341f05921 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Tue, 30 Oct 2018 19:26:24 +0200 Subject: [PATCH 377/798] sonoff-basic.bin - Enable sleep = 1 by default --- sonoff/sonoff_post.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 186d0a349750..b6fea83a28c8 100755 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -229,6 +229,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_BASIC +#undef APP_SLEEP +#define APP_SLEEP 1 // Default to sleep = 1 for USE_BASIC + //#undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_ARDUINO_OTA // Disable support for Arduino OTA #undef USE_WPS // Disable support for WPS as initial wifi configuration tool From 119480e0063c338706ff037a41393643ab1dfaf8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <39969427+ascillato2@users.noreply.github.com> Date: Tue, 30 Oct 2018 14:41:41 -0300 Subject: [PATCH 378/798] Updated to Readme Development Version to 6.3.0.x --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf9d79d5a405..0bbf1acf1dba 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ See [RELEASENOTES.md](https://github.com/arendst/Sonoff-Tasmota/blob/development In addition to the [release webpage](https://github.com/arendst/Sonoff-Tasmota/releases/latest) the binaries can also be OTA downloaded from http://thehackbox.org/tasmota/release/ ### Development -[![Dev Version](https://img.shields.io/badge/development%20version-6.2.1.x-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) +[![Dev Version](https://img.shields.io/badge/development%20version-6.3.0.x-blue.svg)](https://github.com/arendst/Sonoff-Tasmota) [![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/tasmota/) [![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) From c3f303876f139b8563333b622f43ce5b336f0325 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Wed, 31 Oct 2018 07:45:19 +0100 Subject: [PATCH 379/798] decode-config.py v2.0.0002: add release v6.3.0 config changes --- tools/decode-config.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index 8e160f751f29..a09fbfb5d92d 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -VER = '2.0.0001' +VER = '2.0.0002' """ decode-config.py - Backup/Restore Sonoff-Tasmota configuration data @@ -862,7 +862,13 @@ def passwordwrite(value): }, 0x3A0, None), }) +Setting_6_3_0 = Setting_6_2_1_20 +Setting_6_3_0.update({ + 'energy_kWhtotal_time': (' Date: Wed, 31 Oct 2018 11:10:44 +0100 Subject: [PATCH 380/798] add release v6.3.0 config changes add release v6.3.0 config changes --- tools/decode-config.py | 87 ++++++++++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 28 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index 1eb991d11df3..a09fbfb5d92d 100644 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -VER = '2.0.0000' +VER = '2.0.0002' """ decode-config.py - Backup/Restore Sonoff-Tasmota configuration data @@ -201,7 +201,7 @@ def ModuleImportError(module): 'jsonsort': True, 'jsonrawvalues':False, 'jsonrawkeys': False, - 'jsonhidepw': True, + 'jsonhidepw': False, }, } args = {} @@ -250,21 +250,27 @@ def ModuleImportError(module): negative shift the result left bits datadef - Define the field interpretation different from simple - standard types (like char, byte, int) e. g. lists or bit fields - Can be None, a single integer, a list or a dictionary - None: - None must be given if the field contains a simple value - desrcibed by the prefix - n: - Same as [n] below - [n]: - Defines a one-dimensional array of size - [n, n <,n...>] - Defines a multi-dimensional array + Data definition, is either a array definition or a + tuple containing an array definition and min/max values + Format: arraydef|(arraydef, min, max) + arraydef: + None: + None must be given if the field contains a + simple value desrcibed by the prefix + n: + [n]: + Defines a one-dimensional array of size + [n, m <,o...>] + Defines a multi-dimensional array + min: + defines a minimum valid value or None if all values + for this format is allowed. + max: + defines a maximum valid value or None if all values + for this format is allowed. converter (optional) - Conversion methode(s): ()|'xxx'|func + Conversion methode(s): 'xxx'|func or ('xxx'|func, 'xxx'|func) Read conversion is used if args.jsonrawvalues is False Write conversion is used if jsonrawvalues from restore json file is False or args.jsonrawvalues is False. @@ -845,7 +851,25 @@ def passwordwrite(value): 'weight_max': ('= cfg[0]: + template = cfg + size = template[1] + setting = template[2] + break except: - return None,None,None,None - - # search setting definition - template = None - setting = None - size = None - for cfg in Settings: - if version >= cfg[0]: - template = cfg - size = template[1] - setting = template[2] - break + pass return version, template, size, setting @@ -1652,6 +1677,9 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): result = None + if fieldname == 'raw' and not args.jsonrawkeys: + return result + # get field definition _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) @@ -1662,7 +1690,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): for i in range(0, datadef[0]): subfielddef = GetSubfieldDef(fielddef) length = GetFieldLength(subfielddef) - if length != 0 and (fieldname != 'raw' or args.jsonrawkeys): + if length != 0: result.append(GetField(dobj, fieldname, subfielddef, raw=raw, addroffset=addroffset+offset)) offset += length @@ -1722,6 +1750,9 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) fieldname = str(fieldname) + if fieldname == 'raw' and not args.jsonrawkeys: + return dobj + # do not write readonly values if isinstance(convert, (list,tuple)) and len(convert)>1 and convert[1]==None: if args.debug: From d87d74157f68a4bc355689be72b3a238bd8886da Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 11:14:27 +0100 Subject: [PATCH 381/798] Add latest Portisch firmware Add latest Portisch firmware --- .../fw_efm8bb1/RF-Bridge-EFM8BB1-20181023.hex | 492 ++++++++++++++++++ 1 file changed, 492 insertions(+) create mode 100644 tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181023.hex diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181023.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181023.hex new file mode 100644 index 000000000000..e193e8efec28 --- /dev/null +++ b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181023.hex @@ -0,0 +1,492 @@ +:020000040000FA +:1000000002142AED24F8FEEFD39E4015ED2408FDDE +:10001000E433FCC3EF9DEC6480F874809850028058 +:1000200001C32202139A7597A522220218387EFF77 +:10003000EFD394004022EF9480501DE4FDED75F065 +:1000400005A4240CF582E4341EF583E493B507047B +:10005000AE0580040DBD06E5AF06220215CD121DCA +:100060004053D87853DBFE121D04E4900085F02243 +:10007000D2DE2202188BD202121ABAC290C296D2D3 +:1000800080E4FBFD7F10121CEB1206CE74A4F0D2AC +:10009000AFE4F53BF53CD296053CE53C7002053BF0 +:1000A000B410F3E53BB427EEC296120026300209E5 +:1000B0001219F48E3E8F3F8006753E01753F00E5B4 +:1000C0003F7004E53E640170409000CCE07007F59D +:1000D0003BF53C02028D053CE53C7002053BD394A8 +:1000E00010E53B94274002D296D3E53C9430E53BA3 +:1000F0009475500302028DE4F53BF53C9000CCF082 +:100100009000CBF0C29602028DE4F53BF53C9000E6 +:10011000CCE014602A14700302025F147003020220 +:100120001D1470030202332404600302028DE53FB4 +:1001300064AA600302028D9000CC04F002028DE5F7 +:100140003F9000CBF0A37402F0E53F120C3902059A +:10015000A00173A10185A501A9A601BDA701C6A89B +:1001600001E2A901C9B001D2B1019AC0028DFF001C +:100170000002141206879000A87401F0E490007544 +:10018000F07FA1806E12005E9000CC7404F0753D8B +:1001900008E4F54175400902028D9000CC7404F02A +:1001A000E4F54175400202028DE49000A8F0900051 +:1001B00075F07FA612071174A6F002028D1206CE0A +:1001C00074A4F002028D753D089000CC7403F00217 +:1001D000028D9000757401F07FB1120711EFF002EB +:1001E000028D1206879000A8E0F53AE4F0900075C1 +:1001F000F07FA91219B790007CEFF07D307C75126A +:10020000070002028D1206EE90007CEFF0E49000F1 +:10021000CCF08079E49000CBF0A3F08070E4F5415D +:10022000E53FF540E540D394009000CC402C7404A9 +:10023000F0805A74042541F582E43400F583E53FEB +:10024000F00541E541B540059000CC800DE541C386 +:10025000947040397540709000CC7402F0802EE5A7 +:100260003F645570289000CCF0C2029000CBE0248F +:1002700060601824FC600F24FE600B14600824F6F4 +:100280006004241070077FA0121CB8D2029000CB2B +:10029000E0120C3902B6A102E0A402F2A503DAA62C +:1002A00003F6A805C0A905FDB00670B103A6C003FA +:1002B000C8FF000000AA900084E030E70F7DC87CF2 +:1002C000001206B77FA312192E0205DA121CFC4099 +:1002D000030200AA7DE87C031206B77FA20205F59F +:1002E000900084E020E7030200AA7FA412192E02E6 +:1002F00003EE9000CCE060030200AA900085E024A9 +:10030000FC6070240460030200AA153D900008E020 +:10031000FEA3E0FF7C007D64120C5FC006C00712E4 +:100320001573D007D006120BA78F4B900006E0FE86 +:10033000A3E0FF8E4CF54D7C007D64120C5FC0067F +:10034000C007121573D007D006120BA78F4E754F3A +:1003500018900008E0FAA3E0FB900004E0FCA3E0A2 +:10036000FDA3E0FEA3E0FF1217569000747406F0A0 +:100370000204B97F0112002E12159960030200AA2F +:10038000E53D601A7F0112002EEF12154912158DFE +:1003900050030205B81206E2121D2E0205B812061D +:1003A000EE7FA00205F59000CCE060030200AA9069 +:1003B0000004E0FCA3E0FD120700D296121D2EC23D +:1003C000967FA0121CB8800A7F01121CB8E490002E +:1003D000CCF0D2021206F70200AA900084E020E7D7 +:1003E000030200AA547FF543FD7FA61214B9E490DE +:1003F0000084F00200AA9000CCE060030200AA9002 +:100400000085E024FC7003020569240460030200F7 +:10041000AA900004E0FF2480600804700DE4F51D3C +:100420008003751D017542FF800F12002E8F42E57B +:1004300042F46005121599F51D153D12005EE51D8B +:1004400014607C0460030200AA900004E0647F70E2 +:1004500024A31215BAA3E0FAA3E0FBA3E0F54BA393 +:10046000E0F54CA3E0F54DA3E0F54EA3E01207083C +:10047000740CF0803BE542F46031121547F5828E32 +:10048000831215AA740593FA740693FB740993F505 +:100490004B740793F54C740893F54D740A93F54E1D +:1004A000740B931207087401F08005E49000CBF000 +:1004B0009000CBE070030200AA121BF00200AA9089 +:1004C0000004E06480704E900074740CF090000B97 +:1004D000E0FF7E00900009E0FCA3E0FD120A47C0A7 +:1004E00006C00790000C1215C6C007C00690000D8C +:1004F0001215C6AA06AB0790000E1215C68E4F8FB6 +:10050000508A4D8B4ED04BD04C9000051215BA90AE +:10051000000FE08048E542F4700302062F121547F1 +:100520009000747401F08544828E83740612156401 +:10053000C006C0077407121564C007C0067408120D +:100540001564AA06AB0774091215648E4F8F508A82 +:100550004D8B4ED04BD04C1215AA740A93F551D046 +:1005600003D0021217D00200AAE53D70101206F760 +:100570007FA0121CB8D202E4F51D0200AAE51D14EA +:10058000601B0460030200AAE542F4600E121547E6 +:1005900012158D40061206E2121D2E801BE542F454 +:1005A000601612154712158D400EEFFD7C007F017D +:1005B0007E00121B0D121D2EE4900085F00200AA91 +:1005C000900084E0FF30E71C547FF5437DC87C0039 +:1005D00012069AAD437FAB1214B9E4900084F0D2B6 +:1005E000020200AA121CFC40030200AA7DE87C0360 +:1005F00012069A7FAA121CB8D2020200AA90000426 +:10060000E025E0F5439000CCE060030200AA9000F2 +:1006100085E0700512005E800B900085E064046048 +:10062000030200AAE5436007E540C394045008E4D0 +:100630009000CBF00200AA74062543F9E43400755B +:100640004801F549894AC3E540954324FEF54B909E +:100650000005E0F54C7B017A0079061216527FA066 +:10066000121CB890007CE0FF1219B7D2020200AA57 +:10067000900084E020E7030200AA7FB11216D4E4C0 +:10068000900084F00200AA7D327C007F017E00127F +:100690001B0DD296121D2EC296227F017E00121BC8 +:1006A0000DD296121D2EC2969000A8E53AF0900049 +:1006B0007CE0FF1219B7227F017E00121B0DD2963B +:1006C000121D2EC29690007CE0FF1219B7229000F6 +:1006D000A87401F0E4900075F07FA41219B790009F +:1006E0007C22EFFD7C007F017E00121B0D2290001A +:1006F0007CE0FF1219B72290007CE0FF1219B722AC +:100700007F017E00121B0D22F54F121756900074C8 +:10071000221219B790007C22AFE9AEEA120DB68E14 +:10072000088F092093030209A285080A85090BC3D3 +:10073000E509950DF511E508950CF510900075E0AB +:1007400014700302099C0460030209C3900085E051 +:100750001460650460030209C3900084E060030232 +:1007600009C39000A8E0FFAB11AA10AD0FAC0E12A8 +:1007700010558F1AE51A648070030209C390007F38 +:10078000120E6B900002E510F0A3E511120DC1E40A +:10079000900074F0900077F090007EF0F51BF51C4F +:1007A000FE7F70FD7B017A007904120C8CE49000CE +:1007B0007DF090008504F022E51A120D998E23F544 +:1007C00024E51A120DFA70030208D004600302092E +:1007D000C3900004120CBBFFD39400400B90007E2A +:1007E000E09F5004E004F022120E13AE10AF11ABE4 +:1007F00007AA06E50F2BFFE50E3AFEE433FDE433CE +:10080000FCC004A905AA06AB07AE0EAF0F120E730B +:10081000D000120BA78F22120D80FD120003401989 +:1008200090000A120D83FDAF22120003400B120C40 +:10083000B8120E646003020954120D80FDAF22123B +:1008400000035009120CB8C3120E444013D3E50F35 +:10085000951CE50E951B402B120CB8120E647023EC +:10086000900086120E6B120CC4C083C082120E0B55 +:100870007401A806088002C333D8FC4FD082D0830D +:10088000F0801790007A120E6BC290D3951CE50E83 +:10089000951B4006850E1B850F1C900088E0700D8F +:1008A000120CC6120D78FF121C4D120DBD120CB8A1 +:1008B000120E6460030209C3121CF45005E4900098 +:1008C00083F0120D7570030209941209D70209947E +:1008D000120CB8FF7E00900004120AE4FDACF01286 +:1008E0000A47120DE18E258F26120E13E4850F158F +:1008F000850E14F513F512851119851018F517F5E5 +:1009000016900006120CF81209C4500F900007123E +:100910000CF21209F55004C2908043900008120CAA +:10092000F21209C4502EAA23A9247BFF90000912B9 +:100930000CF81209F5501D120CC4C083C082120EAF +:100940000B7401A806088002C333D8FC4FD082D0B4 +:1009500083F0800AE4900084F0C290A3F02290001B +:1009600088E0700D120CC6120D78FF121C4D120D8E +:10097000BDAA23A9247BFF90000A120A08120E6464 +:100980007041121CF45005E4900083F0120D756064 +:10099000031209D7C290E4900085F022AF11AE1087 +:1009A000801E85080C85090DC3E509950BF50FE53B +:1009B00008950AF50E900075E0147007AF0FAE0EA3 +:1009C000120E9B22E5159FFFE5149EFE121CACC380 +:1009D000EF9526EE952522121D047D207C037F01D4 +:1009E0007E00121AE490007DE0900083F0A3E51AE7 +:1009F000F04480F022E5199FFFE5189EFE121CAC22 +:100A0000C3EF9526EE952522BB010CE58229F582E0 +:100A1000E5833AF583E0225006E92582F8E622BB19 +:100A2000FE06E92582F8E222E58229F582E5833A8D +:100A3000F583E49322BB010689828A83F022500267 +:100A4000F722BBFE01F322EF8DF0A4A8F0CF8CF0CB +:100A5000A428CE8DF0A42EFE22BC000BBE0029EFF0 +:100A60008DF084FFADF022E4CCF875F008EF2FFF95 +:100A7000EE33FEEC33FCEE9DEC984005FCEE9DFE63 +:100A80000FD5F0E9E4CEFD22EDF8F5F0EE8420D2AA +:100A90001CFEADF075F008EF2FFFED33FD40079819 +:100AA0005006D5F0F222C398FD0FD5F0EA22C2D548 +:100AB000EC30E709B2D5E4C39DFDE49CFCEE30E7E1 +:100AC00015B2D5E4C39FFFE49EFE120A59C3E49D0C +:100AD000FDE49CFC8003120A5930D507C3E49FFF54 +:100AE000E49EFE22BB0110E58229F582E5833AF5FA +:100AF00083E0F5F0A3E0225009E92582F886F008AA +:100B0000E622BBFE0AE92582F8E2F5F008E222E5DA +:100B1000832AF583E993F5F0A3E99322E88FF0A403 +:100B2000CC8BF0A42CFCE98EF0A42CFC8AF0EDA474 +:100B30002CFCEA8EF0A4CDA8F08BF0A42DCC3825A7 +:100B4000F0FDE98FF0A42CCD35F0FCEB8EF0A4FE87 +:100B5000A9F0EB8FF0A4CFC5F02ECD39FEE43CFC1C +:100B6000EAA42DCE35F0FDE43CFC2275F008758238 +:100B700000EF2FFFEE33FECD33CDCC33CCC5823327 +:100B8000C5829BED9AEC99E58298400CF582EE9B2C +:100B9000FEED9AFDEC99FC0FD5F0D6E4CEFBE4CD4A +:100BA000FAE4CCF9A88222B800C1B90059BA002DE4 +:100BB000EC8BF084CFCECDFCE5F0CBF97818EF2F9D +:100BC000FFEE33FEED33FDEC33FCEB33FB10D703CC +:100BD000994004EB99FB0FD8E5E4F9FA227818EF75 +:100BE0002FFFEE33FEED33FDEC33FCC933C910D7D4 +:100BF000059BE99A4007EC9BFCE99AF90FD8E0E4E1 +:100C0000C9FAE4CCFB2275F010EF2FFFEE33FEEDB6 +:100C100033FDCC33CCC833C810D7079BEC9AE89986 +:100C2000400AED9BFDEC9AFCE899F80FD5F0DAE468 +:100C3000CDFBE4CCFAE4C8F922D083D082F8E49367 +:100C40007012740193700DA3A393F8740193F5824D +:100C50008883E4737402936860EFA3A3A380DFEC3E +:100C60008EF0A4CCC5F0CCCDF8EFA4CEC5F02DFD10 +:100C7000E43CFCE8A42EC8C5F03DFDE43CFCEFA438 +:100C8000FFE5F028FEE43DFDE43CFC22EF4E60125F +:100C9000EF60010EEDBB010B89828A83F0A3DFFCBC +:100CA000DEFA2289F05007F709DFFCA9F022BBFE2B +:100CB000FCF309DFFCA9F02290000BAA23A9247BF6 +:100CC000FF020A08D290900077E024FFFFE434FF8F +:100CD000FE7C007D08120AAE74042FF58274003E7B +:100CE000F58322FF900074E02404F582E43400F5DB +:100CF0008322AA23A9247BFF120A08FD7C0090000E +:100D000004120AE4FFAEF0120A47C322120BA7AB8B +:100D100007AA06E4F9F87F407E427D0FFC120BA77C +:100D2000E47BFFFAF9F8120B1CA804A905AA06AB8C +:100D3000077F207ED77D757C01120BA7EFF404227C +:100D4000E53725E0248AF582E43400F58322AE2AD3 +:100D5000AF2B7C007D1F120A598E2E8F2F7C007DB9 +:100D600005120A59C3E52F9FFDE52E9EFCD3E52908 +:100D70009DE5289C22900083E0FF90007DE06F229B +:100D8000900009AA23A9247BFF020A0853DBFE5323 +:100D9000DAFE53F7DF53F7BF2275F005A4240EF5F2 +:100DA00082E4341EF583E4740193FA740293AE0274 +:100DB000227D64120A597C007D0A020A4790007D58 +:100DC000EFF09000887408F022C3E5379FFDE53608 +:100DD0009ED3FCE5339DE5329C2275F0FFA4FFAE67 +:100DE000F07C007D64020A59AA2EA92F7BFF900097 +:100DF00002120AE4F53785F0362275F005A4240DB9 +:100E0000F582E4341EF583E4931422E0FF90008819 +:100E1000E0FE22900088E014F0900077E004F022D9 +:100E2000E52F2FFFE52E3EFEC3E5299FE5289E22F4 +:100E3000AB48AA49A94A854D82758300020A0890E9 +:100E40000081E0D3FF900077E09F22900078E527B3 +:100E5000F0A3E528F022852F82852E83E493FA748F +:100E60000193FB22FF900077E06F22E50EF0A3E5EF +:100E70000FF0227C007D64020C5F540F75F002A419 +:100E8000F58285F083227B007A007929AF28AE278E +:100E900022D3E52B9494E52A9411228E278F289053 +:100EA0000085E0146035147003020F802402600393 +:100EB000021054C290900084E06003021054AF28E6 +:100EC000AE27121C7A4003021054E4900001F01285 +:100ED0000E4B9000857401F0D29022900078E0FCD7 +:100EE000A3E0FDAE047802CEC313CE13D8F92DFFD4 +:100EF000EC3EFED3E5289FE5279E4009120E4BE409 +:100F0000900001F022AF28AE271218DE501F90008B +:100F100001E094004017E4900074F090008874049D +:100F2000F0E490007DF09000857402F022C3E52883 +:100F30009464E52794005003020FE6120E86121106 +:100F4000BE5020E529120D42E0FEA3E02528FFE572 +:100F5000273EC313FEEF13FFE529120D42EEF0A367 +:100F6000EFF022900001E0120D42120E4E900001AF +:100F7000E004F0E0D3940F5003021054E402104553 +:100F8000B290AF28AE271218DE505E121CF4500546 +:100F9000E4900083F0120D75604A121D047DF47C0C +:100FA000017F017E00121AE490007DE0900083F042 +:100FB000900088E07019120CE4C083C082E0FF90BA +:100FC0000001E0540FFEEF4ED082D083F0800E90EF +:100FD0000001E0C454F0440F120CE3EFF0900084E1 +:100FE000E04480F0C290E48067120E8612126450D2 +:100FF00057900088E0B40410E529C454F0120CE3C3 +:10100000EFF0E4900088F022900074E0FF120CE80A +:10101000E0FEE529540FFDEE4DF074042F120CEAAA +:10102000120D78FF121C4DEFF0900074E004F09068 +:1010300000887404F0900074E0D394704016121D80 +:1010400004E4900001F08008121D04E4900001F017 +:10105000900085F0228F278C288D298A2A8B2B756A +:101060002C80E5277071E4F52D7F0112002EEF65CD +:101070002D701B120E914054E52B9450E52A944696 +:10108000504A120D4E4045120E2050408073E52DFF +:10109000120D998E2EF52FE52D120DFA60180470A1 +:1010A0002B120E56C002C003120DE8D003D002125C +:1010B000110750188013120E56C002C003120DE81B +:1010C000D003D0021211075003852D2C052DE52DDC +:1010D000C394064094802DAF2712002E8F2D7F01E0 +:1010E00012002EEF652D701C120E914017E52B9407 +:1010F00050E52A9446500D120D4E4008120E205015 +:1011000003852D2CAF2C22AD2BAC2AAF29AE281293 +:101110001113228E308F318C328D33C2007C007DD2 +:1011200064AF03AE02120DB38F828E83AE36AF373B +:10113000120DB1D3E58294F4E583940140050C7D52 +:10114000F48004AC83AD828C838D82D3EF94F4EE73 +:10115000940140067C017DF48004AC06AD07AE042A +:10116000AF05D3EB9400EA94004038EB9582FDEA9A +:101170009583FCD3E5319DE5309C403FEB2582FD16 +:10118000EA3583FCC3E5319DE5309C502E120DC934 +:101190004029E5372FFDE5363EC3120DD2501CD253 +:1011A000008018120DC94013E5372FFFE5363EFECB +:1011B000C3E5339FE5329E5002D200A200228E2A60 +:1011C0008F2B8B2C8A2D892EC2001212645005D2CF +:1011D00000021261E52BAE2A7803CEC313CE13D8DA +:1011E000F9FDAC06E52BAE2A7802CEC313CE13D898 +:1011F000F92DFDEE3CFCE52AC4F854F0C868FEE584 +:101200002BC4540F482DF531EC3EF530E4F52F900A +:101210000001E0FFE52FC39F5047C3E52B9531FF49 +:10122000E52A9530FEE52F120D42E0FCA3E0FDD348 +:101230009FEC9E4028E52B2531FFE52A3530FEC383 +:10124000ED9FEC9E5017E52E452D452C600BAB2CE9 +:10125000AA2DA92EE52F120A35D2008004052F8071 +:10126000AEA200228E328F338B348A358936C2018A +:10127000E4F537900001E0FFE537C39F4003021318 +:1012800005E533AE327803CEC313CE13D8F9FDACE7 +:1012900006E533AE327802CEC313CE13D8F92DF55E +:1012A00039EE3CF538120D40E0FEA3E0FFC395395E +:1012B000EE953850028004AE38AF398E388F39122F +:1012C0000D40E0FEA3E0FFC39539FDEE9538FCC369 +:1012D000ED9533EC95325028E5392FFFE5383EFE89 +:1012E000C3E5339FE5329E5017E5364535453460FA +:1012F0000BAB34AA35A936E537120A35D201800581 +:101300000537021273A201224200C700004200C347 +:1013100000004200C900004200C500004100CC00AE +:101320004100CB00011D00410084004100850041C7 +:1013300000A8004100750041007C00410076564144 +:101340000089AB410000004100820042007F0000A4 +:101350004200020000420086000042007A00004184 +:10136000008100410088004100770041007E00417B +:101370000074004100830041007D004100010041F4 +:1013800000C0004100C1004100BE004100BF00415B +:1013900000C2004100BD00C10300C0E0C0F0C08336 +:1013A000C082C0D075D000C000C001C002C003C060 +:1013B00004C005C006C007E5985403F55AF45298D6 +:1013C000E55A30E017121D499000C0121A52EFF092 +:1013D0009000C0E004F0E0B41402E4F0E55A30E11B +:1013E0002E9000C2E0D39400401A9000BFE0245B2E +:1013F000F8E6FF121D469000BFE004F09000C2E046 +:1014000014F08002D2039000BFE0B42002E4F0D0D8 +:1014100007D006D005D004D003D002D001D000D030 +:10142000D0D082D083D0F0D0E032121D4F787FE44C +:10143000F6D8FD75817A021474020076E493A3F85D +:10144000E493A34003F68001F208DFF48029E493DB +:10145000A3F85407240CC8C333C4540F4420C883D2 +:101460004004F456800146F6DFE4800B01020408D4 +:1014700010204080901308E47E019360BCA3FF54C9 +:101480003F30E509541FFEE493A360010ECF54C022 +:1014900025E060A840B8E493A3FAE493A3F8E493AA +:1014A000A3C8C582C8CAC583CAF0A3C8C582C8CAB2 +:1014B000C583CADFE9DEE780BE8F458D46E4FEFDC9 +:1014C000F547121A3F247AF582E4341EF58374013D +:1014D00093FA7402938A48F5497FAA121BB0AF456C +:1014E000121A3C2479F582E4341EF583E4931460E7 +:1014F0000E047019AA48A9497BFF90000B8009AA25 +:1015000048A9497BFF90000A120A08F547EEC395E7 +:1015100047500774082EFE0D80F3ED04FF121A3CAD +:101520002478F582E4341EF583E493FF121BB0E4C3 +:10153000FEEEC39D500974042E121A2A0E80F27F0B +:1015400055121BB0021D43E54275F005A424A2F517 +:1015500082E4341DF583740193FA740293AE028E13 +:1015600043F5442293FF7E00740493FC740593FDBD +:10157000020A47900006E0FEA3E0FF900009E02F7A +:10158000FF900008E03EAB07FAE4F9F822F5828EFE +:1015900083740C93FFD3940022EF75F005A424A16B +:1015A000F582E4341DF583E49322E493FE74019301 +:1015B000FF740293FC740393FD22E0FEA3E0FFA3FB +:1015C000E0FCA3E0FD22E0FF7E00020A47C0E0C08D +:1015D000F0C083C082C0D075D000C000C001C0027E +:1015E000C003C004C005C006C007E5D85487F52174 +:1015F000F452D8E5F730E508E5F730E603121A5D56 +:1016000053F7DFE52130E708E5D930E003121D503C +:10161000E52130E008E5DA30E003121B5DE521301A +:10162000E108E5DB30E003120718E52130E208E5C8 +:10163000DC30E003121D51D007D006D005D004D015 +:1016400003D002D001D000D0D0D082D083D0F0D04F +:10165000E0328B458A468947120D8C53E2FDE4F552 +:101660004DE54DC3954B504FAB45AA46A947C00326 +:10167000C002C001120E30C4120E7AD001D002D0C6 +:1016800003120AE4F54F85F04ED2801216C6AB4520 +:10169000AA46A947C003C002C001120E30120E7A3A +:1016A000D001D002D003120AE4F54F85F04EC2807B +:1016B0001216C6054D80AAB290AF4C154CEF709E25 +:1016C00043E202C29022FDAC4E7F0A7E00121A8EC7 +:1016D000121D2E22AE07E4F545121BA9900001E071 +:1016E00004FF121BB012174F900001E0FFE545C345 +:1016F0009F5012121A46121A2F121A46F583121A06 +:1017000036054580E3900078E0FF121BB09000782A +:10171000121A3612174FE4F545900074E02401FFC9 +:10172000E433FEC3E5459FEE6480F874809850175B +:1017300074042545121A2A0545E545541F70DA122E +:101740001D43121D3C80D27F55121BB0021D431257 +:101750001D43121D3C228E458F468C478D48AE029C +:10176000AF03120E73C007AF4BAB07E4FAF9F8D022 +:1017700007120D0C900000F0AE4CAF4D120E73C06E +:1017800007AF4EAB07E4FAF9F8D007120D0C900042 +:1017900082F0E54B120DDA900076EFF0E54E120D77 +:1017A000DA900089EFF090007FE545F0A3E546F080 +:1017B000900002E547F0A3E548F0900081E54FF086 +:1017C00043DA0153F7DF43F74053DBFE75F9FF229D +:1017D0008A498B4A755380120D8C53E2FD90007F2D +:1017E000EEF0A3EFF0900002ECF0A3EDF0121B3648 +:1017F000E4F552E552C395515032120CE4E05553D2 +:10180000600AAD50AC4FAF4EAE4D8008AD4CAC4B06 +:10181000AF4AAE49121BCCE553C313F55370099080 +:101820000074E004F0755380055280C743E202C2A1 +:10183000909000857404F022C0E0C083C082C0D0C4 +:1018400075D000C004C005C006C00753C87F900013 +:10185000C7E0FEA3E0FF4E700353C8FB9000C31225 +:1018600019AC50099000C7E4F0A3F0800DC39000BC +:10187000C8E09DF09000C7E09CF0D007D006D005EE +:10188000D004D0D0D082D083D0E032C0E0C083C0BA +:1018900082C0D075D000C004C005C006C0075391F7 +:1018A0007F9000C9E0FEA3E0FF4E70035391FB90D0 +:1018B00000C51219AC50099000C9E4F0A3F0800DE6 +:1018C000C39000CAE09DF09000C9E09CF0D007D022 +:1018D00006D005D004D0D0D082D083D0E032AB0780 +:1018E000AA06900078E0FEA3E0FF7C00120DB1D3C1 +:1018F000EF94F4EE940140050C7DF48004AC06AD49 +:1019000007AE04AF05C3900079E09FFD900078E03A +:101910009EFCC3ED9BEC9A5013A3E02FFF90007840 +:10192000E03EFEC3EB9FEA9E50028001C322AE0759 +:10193000E4FDF545121BA9900002E0FF121BB090D8 +:101940000002121A3690007AE0FF121BB090007A63 +:10195000121A36900086E0FF121BB0900086121A11 +:101960003674042D121A2A0DBD03F67F55121BB0D2 +:10197000021D43AB07AA06E4F9F87F407E427D0FC3 +:10198000FC120BA7A804A905AA06AB077F207ED7E7 +:101990007D757C01120BA7C3E49FFFE49EFE22AB82 +:1019A00007AA06E4F9F87FE87E03FD22E0FCA3E045 +:1019B000FDC3EF9DEE9C228F4590007CE0F5467FB5 +:1019C0000B121D4C43DB01120D8F1200707D0A7C3F +:1019D000007F017E00121B0D121D2E43E202E490D7 +:1019E0000085F0900084F09000CBE545F090007CFD +:1019F000F0AF46229000C0E0FF9000BEE0B50705C2 +:101A00007E017F00229000BE121A52E0FD7C009001 +:101A100000BEE004F0E0B41402E4F09000BDE0FE8B +:101A2000EE4204E4F0AE04AF0522F582E43400F5A2 +:101A300083E0FF021BB0A3E0FF021BB0121BB0E566 +:101A40004675F005A422E54525E0248AF582E434B4 +:101A50000022E024A9F582E43400F58322120E3F2F +:101A60004003021C2F120CE4120E0BEFA806088094 +:101A700002C313D8FC30E00B900000E0FF121D4CB5 +:101A8000D29022900082E0FF121D4CC290228E560E +:101A90008F578C588D59121973121C94E55924BF15 +:101AA0009000CAF0E55834FF9000C9F09000C5E5F9 +:101AB00056F0A3E557F04391042212002A121D0BA1 +:101AC000121D12121CC3121D34121C64121CE112CE +:101AD0001CCD121CD7121CA0121D19121D20121D84 +:101AE00038021D278E2A8F2B8C2C8D2D12199F12B8 +:101AF0001980121C889000C7E52CF0A3E52DF0900A +:101B000000C3E52AF0A3E52BF043C804228E478FDB +:101B1000488C498D4A12199F121980121C9490000A +:101B2000C9E549F0A3E54AF09000C5E547F0A3E513 +:101B300048F043910422D290D28090007F121B5033 +:101B4000121D2EC290C280900002121B50021D2E48 +:101B5000E0FCA3E0FD7F0A7E00121A8E229000882E +:101B6000E07008900074E004120DC1120E1990008C +:101B700088E014F0120E3F5003021B8253E2FDC2B4 +:101B80008022120CE4120E0BEFA806088002C31389 +:101B9000D8FC30E0059000768003900089E07D005D +:101BA000FCE4FF121C1122AE077FAA121BB0AF0685 +:101BB000C2039000C1E0B42002E4F09000C1E02430 +:101BC0005BF8A607E004F0A3E004F0228C548D55E6 +:101BD000D280AD07AC067F0A7E00121A8E121D2E2F +:101BE000C280AD55AC547F0A7E00121A8E021D2EA3 +:101BF000120DC2E014F09000777401F0900085742B +:101C000003F0121B8253E2FD121B3643E202020074 +:101C100070AB07AF04EB14600C14600E2402700E5E +:101C20008DFB8FFC228DE98FEA228DEB8FEC22E475 +:101C3000FDFCFF121C11120D8F121D4053D878535A +:101C4000E2FDC280C2909000857404F0227E1DE403 +:101C5000FDEF30E70625E06EFF8004EF25E0FF0D85 +:101C6000BD08EE22AF885388AF758CA0758DCBEF81 +:101C70005440FEEF54104E428822C3EF94ACEE94D1 +:101C80000D4003D38001C322AD07AC06ECF5CBAF0A +:101C9000058FCA22AD07AC06ECF593AF058F9222F3 +:101CA000C2DE75D90575F9FF75960122EE30E7079A +:101CB000C3E49FFFE49EFE22121BA77F55121BB0B8 +:101CC000021D4375E34075E10175E20222E591547E +:101CD000045391FB429122758E547589224388509A +:101CE00022E5C8540453C8FB42C82253984FEB4F17 +:101CF0004DF59822E5C8C320E201D322E591C32027 +:101D0000E201D32253C8FB53C87F2275A41175D4B6 +:101D1000CE2275A54175D5772253F77F75DA4A2211 +:101D200053F77F75DB302275E69075A8B022E591F8 +:101D300020E2FB22E4F5A922439810223003FD2281 +:101D4000C2DE22D299228F9922AF99228F8C222231 +:101D500022220190307000064001904B19180012A9 +:101D6000C005DC0002BC012C461E28080BB8232845 +:101D700000044C01904B191800251C0BB80003847B +:101D80000140461E1800000072D80702BC012C2634 +:101D90004040000BB81C520190010303011846009B +:101DA0000100FF1D520200FF1D5F0300FF1D6C04B8 +:101DB00000FF1D790500FF1D860601FF1D930190A0 +:101DC000307000064001904B19180012C005DC006D +:101DD00002BC012C461E28080BB8232800044C0125 +:101DE000904B191800251C0BB80003840140461EB7 +:101DF0001800000072D80702BC012C264040000BDE +:101E0000B81C520190010303011846000100FF1D98 +:101E1000BE0200FF1DCB0300FF1DD80400FF1DE51F +:101E20000500FF1DF20601FF1DFF01903070000646 +:101E30004001904B19180012C005DC0002BC012CB7 +:101E4000461E28080BB8232800044C01904B191893 +:101E500000251C0BB80003840140461E180000003A +:101E600072D80702BC012C264040000BB81C52015E +:101E700090010303011846000100FF1E2A0200FF23 +:101E80001E370300FF1E440400FF1E510500FF1E05 +:061E90005E0601FF1E6B5F +:00000001FF From cb4c2764fdc8a0080901bc32ffc00779015fc549 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 11:22:18 +0100 Subject: [PATCH 382/798] 6.3.0.1 Tuya and sonoff-basic changes 6.3.0.1 20181031 * Add wifi status to Tuya (#4221) * Add default sleep 1 to sonoff-basic to lower enrgy consumption (#4217) --- sonoff/_changelog.ino | 8 ++++++-- sonoff/sonoff_version.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index df78f6354930..eab55e9bc4fc 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,10 @@ -/* 6.3.0 20181030 +/* 6.3.0.1 20181031 + * Add wifi status to Tuya (#4221) + * Add default sleep 1 to sonoff-basic to lower enrgy consumption (#4217) + * + * 6.3.0 20181030 * Release of v6.3.0 - * + * * 6.2.1.20 20181028 * Add command SetOption35 0..255 (seconds) to delay mDNS initialization to control possible Wifi connect problems * Add command SetOption53 0/1 to toggle gui display of Hostname and IP address (#1006, #2091) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 44aa85be404d..bdaee2f86795 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030000 +#define VERSION 0x06030001 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From 7d4312f3464a6fc0030dc5f3a4637d516762de44 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 11:27:40 +0100 Subject: [PATCH 383/798] Fix unintended function overload Fix unintended function overload of WifiState --- sonoff/_changelog.ino | 1 + sonoff/support.ino | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index eab55e9bc4fc..648b1faad2aa 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.3.0.1 20181031 * Add wifi status to Tuya (#4221) * Add default sleep 1 to sonoff-basic to lower enrgy consumption (#4217) + * Fix unintended function overload of WifiState * * 6.3.0 20181030 * Release of v6.3.0 diff --git a/sonoff/support.ino b/sonoff/support.ino index 8831473fa2e6..dcaa64274dd1 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1412,7 +1412,7 @@ void WifiBegin(uint8_t flag) AddLog(LOG_LEVEL_INFO); } -void WifiState(uint8_t state) +void WifiSetState(uint8_t state) { if (state == global_state.wifi_down) { if (state) { @@ -1427,7 +1427,7 @@ void WifiState(uint8_t state) void WifiCheckIp() { if ((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0)) { - WifiState(1); + WifiSetState(1); wifi_counter = WIFI_CHECK_SEC; wifi_retry = wifi_retry_init; AddLog_P((wifi_status != WL_CONNECTED) ? LOG_LEVEL_INFO : LOG_LEVEL_DEBUG_MORE, S_LOG_WIFI, PSTR(D_CONNECTED)); @@ -1439,7 +1439,7 @@ void WifiCheckIp() } wifi_status = WL_CONNECTED; } else { - WifiState(0); + WifiSetState(0); uint8_t wifi_config_tool = Settings.sta_config; wifi_status = WiFi.status(); switch (wifi_status) { @@ -1550,7 +1550,7 @@ void WifiCheck(uint8_t param) WifiCheckIp(); } if ((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0) && !wifi_config_type) { - WifiState(1); + WifiSetState(1); #ifdef BE_MINIMAL if (1 == RtcSettings.ota_loader) { RtcSettings.ota_loader = 0; @@ -1598,7 +1598,7 @@ void WifiCheck(uint8_t param) #endif // USE_KNX } else { - WifiState(0); + WifiSetState(0); #if defined(USE_WEBSERVER) && defined(USE_EMULATION) UdpDisconnect(); #endif // USE_EMULATION From 59ac981785cf9ce7604914ab006f220c4870864e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 31 Oct 2018 09:25:11 -0300 Subject: [PATCH 384/798] New Portish RF Firmware released for Sonoff Bridge RF chip --- tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex | 1 + 1 file changed, 1 insertion(+) create mode 100644 tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex @@ -0,0 +1 @@ + From 6683077c3064b74d2624217bc6d7f83e3bb40896 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 31 Oct 2018 09:26:56 -0300 Subject: [PATCH 385/798] New Portish RF Firmware released for Sonoff Bridge RF chip --- .../fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex | 463 +++++++++++++++++- 1 file changed, 462 insertions(+), 1 deletion(-) diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex index 8b137891791f..d302400aba2a 100644 --- a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex +++ b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex @@ -1 +1,462 @@ - +:020000040000FA +:100000000214007E1DE4FDEF30E70625E06EFF8060 +:1000100004EF25E0FF0DBD08EE2253984FEB4F4D46 +:10002000F598220213707597A522220216DF8E5BC7 +:100030008F5C8C5D8D5E12185D121ACAE55E24BF5E +:100040009000D6F0E55D34FF9000D5F09000D1E54A +:100050005BF0A3E55CF0439104222202148F121B93 +:100060006653D87853DAFE121B31E4900080F022F8 +:10007000D2DE22021732D202121A32C290C296C2C5 +:1000800080E4FBFD7F1012001A12067174A4F0D2F6 +:10009000AFE4F53EF53FD296053FE53F7002053EE1 +:1000A000B410F3E53EB427EEC296120026300209E2 +:1000B0001219598E418F428006754101754200E543 +:1000C000427004E541640170409000D8E07007F58B +:1000D0003EF53F020293053FE53F7002053ED39493 +:1000E00010E53E94274002D296D3E53F9430E53E9A +:1000F00094755003020293E4F53EF53F9000D8F06A +:100100009000D7F0C296020293E4F53EF53F9000CE +:10011000D8E014602A14700302026514700302020E +:100120002314700302023924046003020293E5429F +:1001300064AA60030202939000D804F0020293E5DF +:10014000429000D7F0A37402F0E542120B52020B6A +:10015000A00173A10183A501A7A601BDA701C6A89F +:1001600001E2A901C9B001D2B10198C00293FF0018 +:1001700000021A12062AE49000A2F0900074F07FA8 +:10018000A1807212005E9000D87404F0754008E4FB +:10019000F5447543090202939000D87404F0E4F525 +:1001A000447543020202939000A27480F0E4900030 +:1001B00074F07FA61206A174A6F0020293120671D3 +:1001C00074A4F00202937540089000D87403F00202 +:1001D00002939000747401F07FB11206A1EFF00257 +:1001E000029312062A9000A2E0F53D7480F0E4909C +:1001F0000074F07FA912192290007AEFF07D307C14 +:10020000757F017E001219B80202931206839000D6 +:100210007AEFF0E49000D8F08079E49000D7F0A372 +:10022000F08070E4F544E542F543E543D394009053 +:1002300000D8402C7404F0805A74032544F582E4FD +:100240003400F583E542F00544E544B543059000EC +:10025000D8800DE544C3947040397543709000D840 +:100260007402F0802EE542645570289000D8F0C2E8 +:10027000029000D7E02460601824FC600F24FE6028 +:100280000B14600824F66004241070077FA0121A73 +:10029000EED2029000D7E0120B5202BCA102E6A4FB +:1002A00002F8A5039CA603B6A80563A905A0B0069D +:1002B00013B10369C0038AFF000000AA90007FE029 +:1002C00030E70F7DC87C0012065A7FA3121818026F +:1002D000057D121B2940030200AA7DE87C0312065B +:1002E0005A7FA202059890007FE020E7030200AA4F +:1002F0007FA41218180203AE9000D8E06003020039 +:10030000AA900080E024FC6043240460030200AA59 +:10031000154012005E900005E0FAA3E0FBFFAE027C +:100320001218CF900007E0F8A3E0888385834DF58D +:100330004E85834FF550900005E0F551A3E0F5524E +:10034000E4F55375541875550602053AE5406011F9 +:100350001218D8500302055412068C121B540205C1 +:10036000541206837FA00205989000D8E060030233 +:1003700000AA1218CF7F017E001219B8D296121B64 +:1003800054C2967FA0121AEE800A7F02121AEEE47F +:100390009000D8F0D2021206980200AA90007FE0E6 +:1003A00020E7030200AA547FFD7FA6121785E49080 +:1003B000007FF00200AA9000D8E060030200AA903B +:1003C0000080E024FC700302054024046003020066 +:1003D000AA900003E0FF248070057545FF80028F1E +:1003E00045154012005E900003E064806003020443 +:1003F00074A3E0FCA3E0FD900008E0FAA3E0FBFF9B +:10040000AE021209A3C006C007900006E0FCA3E0FC +:10041000FDAF03AE021209A3C006C00790000AE0B8 +:10042000FF7E00900008E0FCA3E0FD1209A3C006D7 +:10043000C00790000B1218C8C007C00690000C122D +:1004400018C8AA06AB0790000D1218C88E518F521B +:100450008A4F8B50D04DD04E90000EE0F553A3E064 +:10046000F55475550DD003D002D005D004D007D077 +:100470000602053AE545F470030205D21218C124BC +:1004800079F582E4341BF583E493FF7E001218C1F2 +:10049000247CF582E4341BF583E493FA740193FD24 +:1004A000AC021209A3C006C0071218C1247AF58253 +:1004B000E4341BF583E4931218C9C006C007121870 +:1004C000C1247EF582E4341B1218A1C006C00712B5 +:1004D00018C1247FF582E4341B1218A1C007C0069E +:1004E0001218C12480F582E4341B1218A1AA06ABAD +:1004F000071218C12481F582E4341B1218A11218C6 +:10050000C1247BF582E4341BF583E493FD1218C10A +:100510002482F582E4341BF583E493F5548D538EE5 +:10052000518F528A4F8B50D04DD04E755501D0030C +:10053000D002D005D004D007D0061216100200AAAF +:10054000E5406018E545F4600B1218D84006120625 +:100550008C121B54E4900080F00200AA1206987FCF +:10056000A0803590007FE030E71D7DC87C0012063A +:100570003D90007FE0547FFD7FAB121785E4900033 +:100580007FF0D2020200AA121B2940030200AA7DBA +:10059000E87C0312063D7FAA121AEED2020200AADC +:1005A000900003E025E0F5469000D8E060030200EB +:1005B000AA900080E0700512005E800B900080E041 +:1005C000640460030200AAE5466007E543C394049F +:1005D0005008E49000D7F00200AA74052546F9E41B +:1005E0003400754A01F54B894CC3E543954624FE1A +:1005F000F54D900004E0F54E7B017A007905121666 +:10060000827FA0121AEE90007AE0FF121922D20225 +:100610000200AA90007FE020E7030200AA7FB11247 +:100620001514E490007FF00200AA7D327C007F0167 +:100630007E001219B8D296121B54C296227F017EF8 +:10064000001219B8D296121B54C2969000A2E53D32 +:10065000F090007AE0FF121922227F017E00121929 +:10066000B8D296121B54C29690007AE0FF1219225B +:1006700022E49000A2F0900074F07FA4121922905E +:10068000007A2290007AE0FF12192222EFFD7C000E +:100690007F017E001219B82290007AE0FF12192221 +:1006A0002212192290007A228C228D238A248B25F3 +:1006B000AE07900080E014607F046003020933906D +:1006C000007FE06003020933C3E5239414E522941C +:1006D00005500EC3E5259414E52494055003020942 +:1006E000339000A2E0FFAD0685242C85252DAB2399 +:1006F000AA221218E290007DEFF0648070030209D4 +:1007000033900001E524F0A3E525F0900083740800 +:10071000F0E4900075F090007CF0F508F509FE7F9C +:1007200070FD7B017A007903120B78E490007BF076 +:10073000D29090008004F02290007DE0FD75F00DD5 +:10074000A424EBF582E4341B120D89FC740193128E +:100750000E7990007DE075F00DA424E3F582E43479 +:100760001BF583E493FFD39400400B90007CE09F43 +:100770005004E004F02290007DE0F96053FD120E79 +:10078000B8120D89120EED9000BF120E3724E7F556 +:1007900082E4341B120E421209A39000C1120E37DC +:1007A00024E8F582E4341BF583E493FFE9120D8F0E +:1007B000120EED9000C3120E3724E9F582E4341BCB +:1007C000120E421209A39000C5EEF0A3EFF0803E96 +:1007D000900078E0FEA3E0FF9000BFEEF0A3EFF002 +:1007E000900081E0FCA3E0FD9000C1ECF0A3EDF0EF +:1007F000A3ECF0A3EDF0A3120E3724EBF582E43462 +:100800001B120E42900078E0FCA3E0120E799000DB +:1008100083E014F0900075E004F0AE22AF23E4FC16 +:10082000FD9000C7120B46AE24AF25E4FCFD9000FE +:10083000CB120B46120E899000BF120934500E9055 +:1008400000CB120E8C9000C1120934400CC3120E62 +:10085000C45020120DD0B5071A900078E522F0A3FD +:10086000E523F0C290D3120EC6406A852208852384 +:10087000098062120E899000C312094C500E90003C +:10088000CB120E8C9000C512094C400CD3120EC432 +:100890004033120DD06F702D900081E522F0A3E55A +:1008A00023F0D290120E08C083C082E0FF90008334 +:1008B000E0FE7401A806088002C333D8FC4FD08242 +:1008C000D083F08010E490007FF0C290A3F09000FD +:1008D0007D7480F022900083E07015120E08120ED5 +:1008E0004DFF12000390007BEFF09000837408F03E +:1008F000120DD06F703D121B215005E490007EF068 +:10090000120E4A6027121B317D207C037F017E007E +:1009100012198F90007BE090007EF090007DE090B7 +:10092000007FF04480F090007D7480F0C290E490ED +:100930000080F022FFE0FCA3E0FDC3EF9DFFEE9CF2 +:10094000FE121AE2C3EF9527EE952622FFE0FCA3E4 +:10095000E0FDC3EF9DFFEE9CFE121AE2C3EF952768 +:10096000EE952622BB010CE58229F582E5833AF556 +:1009700083E0225006E92582F8E622BBFE06E9253F +:1009800082F8E222E58229F582E5833AF583E49351 +:1009900022BB010689828A83F0225002F722BBFE25 +:1009A00001F322EF8DF0A4A8F0CF8CF0A428CE8D17 +:1009B000F0A42EFE22BC000BBE0029EF8DF084FFB8 +:1009C000ADF022E4CCF875F008EF2FFFEE33FEEC2B +:1009D00033FCEE9DEC984005FCEE9DFE0FD5F0E952 +:1009E000E4CEFD22EDF8F5F0EE8420D21CFEADF051 +:1009F00075F008EF2FFFED33FD4007985006D5F056 +:100A0000F222C398FD0FD5F0EA22C2D5EC30E709F7 +:100A1000B2D5E4C39DFDE49CFCEE30E715B2D5E40D +:100A2000C39FFFE49EFE1209B5C3E49DFDE49CFC58 +:100A300080031209B530D507C3E49FFFE49EFE2270 +:100A4000BB0110E58229F582E5833AF583E0F5F0F4 +:100A5000A3E0225009E92582F886F008E622BBFED1 +:100A60000AE92582F8E2F5F008E222E5832AF58317 +:100A7000E993F5F0A3E9932275F008758200EF2F52 +:100A8000FFEE33FECD33CDCC33CCC58233C5829B54 +:100A9000ED9AEC99E58298400CF582EE9BFEED9A7A +:100AA000FDEC99FC0FD5F0D6E4CEFBE4CDFAE4CC16 +:100AB000F9A88222B800C1B90059BA002DEC8BF018 +:100AC00084CFCECDFCE5F0CBF97818EF2FFFEE33D5 +:100AD000FEED33FDEC33FCEB33FB10D70399400400 +:100AE000EB99FB0FD8E5E4F9FA227818EF2FFFEE27 +:100AF00033FEED33FDEC33FCC933C910D7059BE958 +:100B00009A4007EC9BFCE99AF90FD8E0E4C9FAE4B3 +:100B1000CCFB2275F010EF2FFFEE33FEED33FDCC52 +:100B200033CCC833C810D7079BEC9AE899400AED3C +:100B30009BFDEC9AFCE899F80FD5F0DAE4CDFBE4E4 +:100B4000CCFAE4C8F922ECF0A3EDF0A3EEF0A3EFA9 +:100B5000F022D083D082F8E4937012740193700D68 +:100B6000A3A393F8740193F5828883E473740293CA +:100B70006860EFA3A3A380DFEF4E6012EF60010E69 +:100B8000EDBB010B89828A83F0A3DFFCDEFA2289A8 +:100B9000F05007F709DFFCA9F022BBFEFCF309DFE8 +:100BA000FCA9F0228E228F23900080E014604A146A +:100BB0007003020C8124026003020D5FC29090005A +:100BC0007FE06003020D5FAF23AE22121AB0400334 +:100BD000020D5FE4F524E524120D63E4F0A3F005B3 +:100BE00024E524B40FF0E4900000F0F524120E93F5 +:100BF0009000807401F0D29022900076E0FCA3E097 +:100C0000FDAE047802CEC313CE13D8F92DFFEC3E0F +:100C1000FED3E5239FE5229E4009120E93E4900047 +:100C200000F022AF23AE221217D1501F900000E037 +:100C300094004017E4900073F09000837404F0E493 +:100C400090007BF09000807402F022C3E52394644E +:100C5000E52294005003020D50120EF71211845039 +:100C600003020D5F900000E0120D63120E969000DB +:100C700000E004F0E0D3940F5003020D5FE4020D96 +:100C80005AB290120EF71212CE5059900083E0B46F +:100C90000410E524C454F0120DA1EFF0E490008399 +:100CA000F022900073E0FF120DA6E0FEE524540F41 +:100CB000FDEE4DF074032F120DA8120E4DFF120021 +:100CC00003EFF0900073E004F09000837404F09060 +:100CD0000073E0D394705003020D5F121B31E49057 +:100CE00000008076AF23AE221217D15066121B216E +:100CF0005005E490007EF0120E4A6052121B317DC6 +:100D0000F47C017F017E0012198F90007BE090003F +:100D10007EF0900083E07019120DA2C083C082E0C3 +:100D2000FF900000E0540FFEEF4ED082D083F080A1 +:100D30000E900000E0C454F0440F120DA1EFF090AB +:100D40000073E0FF12105F90007FE04480F0C290DB +:100D5000E48008121B31E4900000F0900080F02243 +:100D6000FCE52A25E02484F582E43400F58322AEF4 +:100D700032AF337C007D641209B57C007D0A120914 +:100D8000A3D3EF94F4EE940122F583E493FFED7E78 +:100D90000075F00DA424E4F582E4341BF583E4939C +:100DA00022FF900073E02403F582E43400F58322EF +:100DB000E53075F00DA424E1F582E4341BF583E4FD +:100DC00093FF7E00AC37AD381209A3AC06AD072205 +:100DD00090007DE075F00DA424EAF582E4341BF563 +:100DE00083E493FF900075E022E53075F00DA424B4 +:100DF000E2F582E4341B22EF75F00DA424EDF582B8 +:100E0000E4341BF583E49322900075E024FFFFE4B3 +:100E100034FFFE7C007D08120A0A74032FF58274E9 +:100E2000003EF58322E53075F00DA424E1F582E45F +:100E3000341BF583E49322EEF0A3EFF0E975F00D97 +:100E4000A422F583E493FF7E002290007EE0FF90D1 +:100E5000007BE06F22E4F9C3ED9BF582EC9AF58309 +:100E6000D3EF9582EE958322E0FCA3E0FDEC547F66 +:100E7000FAD3ED9400EA940022FD1209A37C007DD0 +:100E8000641209B58E268F27229000C7A3A3E0FE27 +:100E9000A3E022900076E522F0A3E523F022AB3C0C +:100EA000AA3BAF35AE34121AA2EF22852C34852D21 +:100EB00035AB2BAA2AAD292275F00DA424E6F582C4 +:100EC000E4341B22E5239509E522950822ED2BFD4C +:100ED000EC3AFCC3EF9DEE9C22F537740193F53894 +:100EE00022540F75F002A4F58285F08322FA740172 +:100EF00093FDAC020209A37B007A007924AF23AEF4 +:100F00002222E0FEA3E0FFC322EC4480AF05F0A361 +:100F1000EFF0228F308A328B33E4F536120DF76D05 +:100F20006003AF3622120E25FFD394005003020F48 +:100F3000C1120DE9F583E493FED394005003020F30 +:100F4000C1E530702DEFD39EE53075F00D400C12E9 +:100F50000E2AFD7C00AE32AF33800E120DEEF5830B +:100F6000E493FD7C00AE34AF351209B58E378F386F +:100F70008008E530120D91120ED9120D6F40067ED9 +:100F8000017FF480008E398F3AAE34AF35120D7385 +:100F900040070C7E017FF480008E3B8F3C120DB029 +:100FA000AB3AAA39AF33AE32121A94EF7003021083 +:100FB0005C120DE9120DBD120E9E700302105C80D2 +:100FC00066120DE9F583E493D394004029E53012CD +:100FD0000D91120ED9AE34AF35120D7340070C7E51 +:100FE000017FF480008E3B8F3C120DE9120DBD1283 +:100FF0000E9E60688031120E25D39400405EE5306D +:10100000120D91120ED9120D6F40070C7E017FF464 +:1010100080008E398F3A120DB0AB3AAA39AF33AE99 +:1010200032121AA2EF6035E530120EB8120E42AC41 +:1010300037AD381209A3900078EEF0A3EFF0E53059 +:1010400075F00DA424E8F582E4341B120E42120957 +:10105000A3900081EEF0A3EFF0753601AF36228F3A +:1010600025E4F527F526E5252401FFE433FEC3E555 +:10107000269FEE6480F874809850397403252612F8 +:101080000DA8E0C4540FFF120D63120E684007EF65 +:10109000120D63120F0974032526120DA8E0540FD8 +:1010A000FF120D63120E684007EF120D63120F0955 +:1010B000052680B2E4F526900000E0FFE526C39FF8 +:1010C000400302117BE526120D63E030E7030211B5 +:1010D0006DAF26900000E0FEEFC39E400302116951 +:1010E000EF25E02486F582E43400F583E0FCA3E0FC +:1010F000FDEF120D63ECF0A3EDF0E4FEE525240115 +:10110000FDE433FCEEC39DEC6480F8748098505588 +:1011100074032E120DA8E0F9C4540FFDEF2401FB57 +:10112000E433FAEDB50316E4B50212E9540FFDEF0E +:10113000C454F04DFD74032E120DA8EDF0EF240100 +:10114000FDE433FC74032E120DA8E0F9540FB5052D +:1011500011E4B5040DE954F04FFD74032E120DA8EF +:10116000EDF00E80970F0210D305278009E52612B7 +:101170000D63E0547FF005260210B7900000E0C335 +:101180009527F0228E258F268B278A288929C20051 +:101190001212CE5005D200021228E4F52A90000067 +:1011A000E0FFE52AC39F4003021228120D61E0FC14 +:1011B000A3E0FDAE047803CEC313CE13D8F9FBAA87 +:1011C00006EDAE047802CEC313CE13D8F92BFDEE94 +:1011D0003A120D60E0C4F854F0C868FEA3E0C454AD +:1011E0000F482DFFEC3EFEC3E5269FFDE5259E1230 +:1011F0000D60E0FAA3E0FBD39DEA9C4026E5262F94 +:10120000FFE5253EFEC3EB9FEA9E5017E5294528E2 +:101210004527600BAB27AA28A929E52A120991D2F4 +:10122000008005052A02119DA20022AFFBAEFC7CC6 +:10123000007D0A1209A39000BDEEF0A3EFF090002C +:10124000BD120F029464EE940050030212CD30934D +:101250003B8E0A8F0BC3EF950DF511EE950CF51033 +:10126000900074E014601F04706390007DE0FF64E0 +:10127000806007120DF764016053AB11AA10AD0F27 +:10128000AC0EE4FF803DAF11AE10803E9000BDE09B +:10129000FEA3E08E0CF50DC3950BF50FEE950AF548 +:1012A0000E900074E014601E04702290007DE0FF38 +:1012B00064806005120DF76014AB0FAA0EAD11AC7F +:1012C000107F010206A8AF0FAE0E120BA4228E2BC8 +:1012D0008F2C8B2D8A2E892FC201E4F530900000CF +:1012E000E0FFE530C39F400302136DE52CAE2B7881 +:1012F00003CEC313CE13D8F9FDAC06E52CAE2B7884 +:1013000002CEC313CE13D8F92DF532EE3CF531E5FC +:1013100030120D63120F029532EE953150028004A7 +:10132000AE31AF328E318F32E530120D63120F02C3 +:101330009532FDEE9531FCC3ED952CEC952B5028A4 +:10134000E5322FFFE5313EFEC3E52C9FE52B9E5095 +:1013500017E52F452E452D600BAB2DAA2EA92FE5A5 +:1013600030120991D201800505300212DDA201225E +:10137000C0E0C0F0C083C082C0D075D000C000C043 +:1013800001C002C003C004C005C006C007E59854F0 +:1013900003F55FF45298E55F30E017121B6F900081 +:1013A000BA1219FFEFF09000BAE004F0E0B41402B2 +:1013B000E4F0E55F30E12E9000BCE0D39400401AE9 +:1013C0009000B9E02460F8E6FF121B6C9000B9E0D1 +:1013D00004F09000BCE014F08002D2039000B9E069 +:1013E000B42002E4F0D007D006D005D004D003D05A +:1013F00002D001D000D0D0D082D083D0F0D0E03263 +:1014000012005A787FE4F6D8FD75817F02144A02F3 +:101410000076E493A3F8E493A34003F68001F20876 +:10142000DFF48029E493A3F85407240CC8C333C421 +:10143000540F4420C8834004F456800146F6DFE48C +:10144000800B0102040810204080901596E47E0174 +:101450009360BCA3FF543F30E509541FFEE493A3FF +:1014600060010ECF54C025E060A840B8E493A3FA11 +:10147000E493A3F8E493A3C8C582C8CAC583CAF09D +:10148000A3C8C582C8CAC583CADFE9DEE780BEC07B +:10149000E0C0F0C083C082C0D075D000C000C001E1 +:1014A000C002C003C004C005C006C007E5D8548709 +:1014B000F521F452D8E5F730E508E5F730E60312F8 +:1014C0001B7653F7DFE52130E708E5D930E003125A +:1014D0001B75E52130E008E5DA30E00312122BE558 +:1014E0002130E108E5DB30E003121B77E52130E233 +:1014F00008E5DC30E003121B78D007D006D005D019 +:1015000004D003D002D001D000D0D0D082D083D07C +:10151000F0D0E032AE07E4F547121A5B900000E02D +:1015200004FF121A6212158F900000E0FFE547C316 +:101530009F50121219F31219E61219F3F5831219BA +:10154000ED054780E3900076E0FF121A6290007686 +:101550001219ED12158FE4F547900073E02401FF96 +:10156000E433FEC3E5479FEE6480F874809850171B +:10157000740325471219E10547E547541F70DA1235 +:101580001B69121B6280D27F55121A62021B6912FC +:101590001B69121B62224200D300004200CF0000F0 +:1015A0004200D500004200D100004100D8004100B7 +:1015B000D70041007F00410080004100A28041002F +:1015C000740041007D8041007A0042000100004229 +:1015D0000081000042007800004100830041007556 +:1015E0000041007C004100730041007E0041007B0F +:1015F00000410000004100BA004100BB004100B8BA +:10160000004100B9004100BC004100B700C1030027 +:101610008A4B8B4C855557755880121A0AE553D35F +:1016200094004019E4F556E556C39553500FAD525A +:10163000AC51AF50AE4F121A0A055680EAE4F55687 +:10164000E556C39554503274032557120DA8E05542 +:1016500058600AAD52AC51AF50AE4F8008AD4EACA1 +:101660004DAF4CAE4B121A0AE558C313F55870052E +:101670000557755880055680C7C290900080740445 +:10168000F0228B478A488949E4F54FE54FC3954DD1 +:101690005043AB47AA48A949C003C002C001AB4AA6 +:1016A000AA4BA94C854F82758300120964FDC412B0 +:1016B0000EE1D001D002D003120A40FFAEF0AB47DA +:1016C000AA48A949ED120EE1120A40FDACF0121A27 +:1016D0000A054F80B6AF4E154EEF70ACC29022C0D7 +:1016E000E0C083C082C0D075D000C004C005C00671 +:1016F000C00753C87F9000D3E0FEA3E0FF4E700305 +:1017000053C8FB9000CF12189650099000D3E4F014 +:10171000A3F0800DC39000D4E09DF09000D3E09C36 +:10172000F0D007D006D005D004D0D0D082D083D05E +:10173000E032C0E0C083C082C0D075D000C004C019 +:1017400005C006C00753917F9000D5E0FEA3E0FFDF +:101750004E70035391FB9000D112189650099000DF +:10176000D5E4F0A3F0800DC39000D6E09DF090008A +:10177000D5E09CF0D007D006D005D004D0D0D082E0 +:10178000D083D0E032AE05AD07E4FCFB7FAA121A8D +:1017900062AF05121A62EE75F00DA42452F582E4D0 +:1017A000341CF583E493FFECC39F500774082CFCB2 +:1017B0000B80F4EB04FF121A5DE4FCECC39B5009B0 +:1017C00074032C1219E10C80F27F55121A62021B6D +:1017D00069AB07AA06900076E0FEA3E0FF120D7346 +:1017E00040050C7DF48004AC06AD07AE04AF05C324 +:1017F000900077E09FFD900076E09EFCC3ED9BECAF +:101800009A5013A3E02FFF900076E03EFEC3EB9FBB +:10181000EA9E50028001C322AE07E4FDF547121A8A +:101820005B900001E0FF121A629000011219ED9026 +:101830000078E0FF121A629000781219ED90008192 +:10184000E0FF121A629000811219ED74032D121933 +:10185000E10DBD03F67F55121A62021B69AB07AAA0 +:1018600006E4F9F87F407E427D0FFC120AB4A8041A +:10187000A905AA06AB077F207ED77D757C01120AD9 +:10188000B4C3E49FFFE49EFE22AB07AA06E4F9F886 +:101890007FE87E03FD22E0FCA3E0FDC3EF9DEE9C0C +:1018A00022F583E493FF7E00E54575F00DA4247CCA +:1018B000F582E4341BF583E493FC740193FD020983 +:1018C000A3E54575F00DA422E0FF7E000209A39078 +:1018D0000003E0FCA3E0FD22901B84E493FFD3947B +:1018E00000228F288D298A2A8B2B752E80E52824AB +:1018F00080701EE4F52F120EABAF2F120F13EF60A6 +:1019000005852F2E8019052FE52FC3940840E78009 +:101910000E120EABAF28120F13EF600385282EAF07 +:101920002E228F4790007AE0F5487F0B121B7243FE +:10193000DA011200707D0A7C007F017E001219B866 +:10194000121B54E4900080F090007FF09000D7E5E7 +:1019500047F090007AF0AF48229000BAE0FF900084 +:10196000B8E0B507057E017F00229000B81219FF8C +:10197000E0FD7C009000B8E004F0E0B41402E4F074 +:101980009000B7E0FEEE4204E4F0AE04AF05228E14 +:10199000288F298C2A8D2B12188912186A121ABEC8 +:1019A0009000D3E52AF0A3E52BF09000CFE528F0D6 +:1019B000A3E529F043C804228E498F4A8C4B8D4CF5 +:1019C00012188912186A121ACA9000D5E54BF0A3B2 +:1019D000E54CF09000D1E549F0A3E54AF0439104CD +:1019E00022F582E43400F583E0FF021A62A3E0FFEF +:1019F000021A62E54725E02484F582E4340022E0FF +:101A000024A3F582E43400F583228C598D5AD290B8 +:101A1000D280AD07AC067F0A7E0012002E121B5446 +:101A2000C290C280AD5AAC597F0A7E0012002E02CD +:101A30001B5412002A121B38121B3F121AF9121BD8 +:101A40005A121A7E121B17121B03121B0D121AD6E2 +:101A5000121B46121B5E021B4DAE077FAA121A62B2 +:101A6000AF06C2039000BBE0B42002E4F09000BBDC +:101A7000E02460F8A607E004F0A3E004F022AF88B9 +:101A80005388AF758CA0758DCBEF5440FEEF54108A +:101A90004E428822120E554006120ECD500109AF5B +:101AA0000122120E554006120ECD500109AF01223F +:101AB000C3EF9414EE94054003D38001C322AD0715 +:101AC000AC06ECF5CBAF058FCA22AD07AC06ECF542 +:101AD00093AF058F9222C2DE75D90575F9FF759611 +:101AE0000122EE30E707C3E49FFFE49EFE22121AB4 +:101AF000597F55121A62021B6975E34075E1017541 +:101B0000E20122E59154045391FB429122758E54D7 +:101B100075892243885022E5C8540453C8FB42C843 +:101B200022E5C8C320E201D322E591C320E201D31C +:101B30002253C8FB53C87F2275A41175D4CF2275D8 +:101B4000A54175D5772253F77F75DA302275E69077 +:101B500075A8B022E59120E2FB22E4F5A922439882 +:101B600010223003FD22C2DE22D299228F9922AFA9 +:101B700099228F8C2222222222011F00015E010362 +:101B80000301183C00000D0400017201020201284B +:101B90003C0800081700018601030301183C0000FF +:101BA0001F0A00012C01030301183C0000003B0741 +:101BB00001F401020302403C000007120001900101 +:101BC000030301183C000017010001C201020201D9 +:101BD000183C000124010000D2010202010C3C006B +:101BE00001011F00015E01030301183C00000D0408 +:101BF00000017201020201283C080008170001865A +:101C000001030301183C00001F0A00012C0103031B +:101C100001183C0000003B0701F401020302403CB4 +:101C20000000071200019001030301183C00001797 +:101C3000010001C201020201183C00012401000060 +:101C4000D2010202010C3C0001011F00015E0103F0 +:101C50000301183C00000D0400017201020201287A +:101C60003C0800081700018601030301183C00002E +:101C70001F0A00012C01030301183C0000003B0770 +:101C800001F401020302403C000007120001900130 +:101C9000030301183C000017010001C20102020108 +:101CA000183C000124010000D2010202010C3C009A +:011CB0000132 +:00000001FF From df57ccca6cefedd3c08d3f73bb04403dc358e9bd Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 14:29:51 +0100 Subject: [PATCH 386/798] Updated RELEASENOTES Updated RELEASENOTES --- RELEASENOTES.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1688baa357df..c5bf016835bf 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,65 @@ The following binary downloads have been compiled with ESP8266/Arduino library v See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. +### Supported hardware Modules + +Module | Description +------------------|----------------------- +01 Sonoff Basic | Sonoff Basic Wifi Smart Switch +02 Sonoff RF | Sonoff RF Wifi Smart Switch with RF (434MHz) receiver +03 Sonoff SV | Sonoff SV Safe Voltage Wifi Smart Switch +04 Sonoff TH | Sonoff TH10/TH16 Wifi Smart Switch with Sensor connection +05 Sonoff Dual | Sonoff Dual Wifi Smart Switch +06 Sonoff Pow | Sonoff Pow Wifi Smart Switch with Energy Monitoring +07 Sonoff 4CH | Sonoff 4CH 4-gang Wifi Smart Switch +08 Sonoff S2X | Sonoff S20/S26 Wifi Smart Socket +09 Slampher | Sonoff Slampher Wifi Smart Light Bulb Socket with RF (434MHz) receiver +10 Sonoff Touch | Sonoff Touch Wifi Light Switch +11 Sonoff LED | Sonoff Led Wifi Led Pack (Retired) +12 1 Channel | 1 Channel Inching/Self Locking Wifi Switch 5V/12V +13 4 Channel | 4 Channel Inching/Self Locking Wifi Switch (Retired) +14 Motor C/AC | Motor Clockwise/Antoclockwise Wifi Switch (Retired) +15 ElectroDragon | Electrodragon Wifi IoT Board +16 EXS Relay(s) | Electronic Experience Store 1 or 2-gang Wifi Module +17 WiOn | WiOn Wifi Smart Socket +18 Generic | Any ESP8266/ESP8285 device like WeMos and NodeMCU +19 Sonoff Dev | Sonoff Dev Wifi Development Board +20 H801 | H801 Wifi RGBWW Led Controller +21 Sonoff SC | Sonoff SC Wifi Environmental Monitor +22 Sonoff BN-SZ | Sonoff BN-SZ01 Wifi Ceiling Led (Retired) +23 Sonoff 4CH Pro | Sonoff 4CH Pro 4-gang Wifi Smart Switch +24 Huafan SS | HuaFan Wifi Smart Socket +25 Sonoff Bridge | Sonoff RF (434MHz) transceive to Wifi Bridge +26 Sonoff B1 | Sonoff B1 Wifi RGBWW Led Bulb +27 AiLight | Ai-Thinker RGBW Led Bulb +28 Sonoff T1 1CH | Sonoff T1 1-gang Wifi Light Switch +29 Sonoff T1 2CH | Sonoff T1 2-gang Wifi Light Switch +30 Sonoff T1 3CH | Sonoff T1 3-gang Wifi Light Switch +31 Supla Espablo | 2-gang Wifi Module +32 Witty Cloud | Witty Cloud ESP8266 Wifi Development Board +33 Yunshan Relay | ESP8266 Wifi Network Relay Module +34 MagicHome | MagicHome, Flux-light and some Arilux LC10 RGB(W) Led Controller +35 Luani HVIO | Luani ESP8266 Wifi I/O Module +36 KMC 70011 | KMC Wifi Smart Socket with Energy Monitoring +37 Arilux LC01 | Arilux AL-LC01 RGB Led Controller +38 Arilux LC11 | Arilux AL-LC11 RGBWW Led Controller +39 Sonoff Dual R2 | Sonoff Dual R2 Wifi Smart Switch +40 Arilux LC06 | Arilux AL-LC06 RGB(WW) Led Controller +41 Sonoff S31 | Sonoff S31 Wifi Smart Socket with Energy Monitoring +42 Zengge WF017 | Zengge WF017 Wifi RGB(W) Led Controller +43 Sonoff Pow R2 | Sonoff Pow R2 Wifi Smart Switch with Energy Monitoring +44 Sonoff iFan02 | Sonoff iFan02 Wifi Smart Ceiling Fan with Light +45 BlitzWolf SHP2 | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111 Wifi Smart Switch with Energy Monitoring +46 Shelly 1 | Shelly 1 Open Source Wifi Relay Module +47 Shelly 2 | Shelly 2 Wifi 2-gang Relay Module with Energy Monitoring +48 Xiaomi Philips | Xiaomi Philips Wifi WW Led Bulb +49 Neo Coolcam | Neo Coolcam Wifi Smart Socket +50 ESP Switch | ESP Switch 4-gang Wifi Switch with Leds +51 OBI Socket | OBI Wifi Smart Socket +52 Teckin | Teckin SP20, SP22 Wifi Smart Switch with Energy Monitoring +53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring +54 Tuya Dimmer | MIUO (and other Tuya based) Wifi Dimmer for Incandescent Lights and Led + ### Available Features and Sensors | Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | Remarks From 22d9375665da4efa482cc92232bbd333b1e77fde Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 14:31:51 +0100 Subject: [PATCH 387/798] Updated RELEASENOTES Updated RELEASENOTES --- RELEASENOTES.md | 59 +++ .../fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex | 462 ++++++++++++++++++ 2 files changed, 521 insertions(+) create mode 100644 tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1688baa357df..c5bf016835bf 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,65 @@ The following binary downloads have been compiled with ESP8266/Arduino library v See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. +### Supported hardware Modules + +Module | Description +------------------|----------------------- +01 Sonoff Basic | Sonoff Basic Wifi Smart Switch +02 Sonoff RF | Sonoff RF Wifi Smart Switch with RF (434MHz) receiver +03 Sonoff SV | Sonoff SV Safe Voltage Wifi Smart Switch +04 Sonoff TH | Sonoff TH10/TH16 Wifi Smart Switch with Sensor connection +05 Sonoff Dual | Sonoff Dual Wifi Smart Switch +06 Sonoff Pow | Sonoff Pow Wifi Smart Switch with Energy Monitoring +07 Sonoff 4CH | Sonoff 4CH 4-gang Wifi Smart Switch +08 Sonoff S2X | Sonoff S20/S26 Wifi Smart Socket +09 Slampher | Sonoff Slampher Wifi Smart Light Bulb Socket with RF (434MHz) receiver +10 Sonoff Touch | Sonoff Touch Wifi Light Switch +11 Sonoff LED | Sonoff Led Wifi Led Pack (Retired) +12 1 Channel | 1 Channel Inching/Self Locking Wifi Switch 5V/12V +13 4 Channel | 4 Channel Inching/Self Locking Wifi Switch (Retired) +14 Motor C/AC | Motor Clockwise/Antoclockwise Wifi Switch (Retired) +15 ElectroDragon | Electrodragon Wifi IoT Board +16 EXS Relay(s) | Electronic Experience Store 1 or 2-gang Wifi Module +17 WiOn | WiOn Wifi Smart Socket +18 Generic | Any ESP8266/ESP8285 device like WeMos and NodeMCU +19 Sonoff Dev | Sonoff Dev Wifi Development Board +20 H801 | H801 Wifi RGBWW Led Controller +21 Sonoff SC | Sonoff SC Wifi Environmental Monitor +22 Sonoff BN-SZ | Sonoff BN-SZ01 Wifi Ceiling Led (Retired) +23 Sonoff 4CH Pro | Sonoff 4CH Pro 4-gang Wifi Smart Switch +24 Huafan SS | HuaFan Wifi Smart Socket +25 Sonoff Bridge | Sonoff RF (434MHz) transceive to Wifi Bridge +26 Sonoff B1 | Sonoff B1 Wifi RGBWW Led Bulb +27 AiLight | Ai-Thinker RGBW Led Bulb +28 Sonoff T1 1CH | Sonoff T1 1-gang Wifi Light Switch +29 Sonoff T1 2CH | Sonoff T1 2-gang Wifi Light Switch +30 Sonoff T1 3CH | Sonoff T1 3-gang Wifi Light Switch +31 Supla Espablo | 2-gang Wifi Module +32 Witty Cloud | Witty Cloud ESP8266 Wifi Development Board +33 Yunshan Relay | ESP8266 Wifi Network Relay Module +34 MagicHome | MagicHome, Flux-light and some Arilux LC10 RGB(W) Led Controller +35 Luani HVIO | Luani ESP8266 Wifi I/O Module +36 KMC 70011 | KMC Wifi Smart Socket with Energy Monitoring +37 Arilux LC01 | Arilux AL-LC01 RGB Led Controller +38 Arilux LC11 | Arilux AL-LC11 RGBWW Led Controller +39 Sonoff Dual R2 | Sonoff Dual R2 Wifi Smart Switch +40 Arilux LC06 | Arilux AL-LC06 RGB(WW) Led Controller +41 Sonoff S31 | Sonoff S31 Wifi Smart Socket with Energy Monitoring +42 Zengge WF017 | Zengge WF017 Wifi RGB(W) Led Controller +43 Sonoff Pow R2 | Sonoff Pow R2 Wifi Smart Switch with Energy Monitoring +44 Sonoff iFan02 | Sonoff iFan02 Wifi Smart Ceiling Fan with Light +45 BlitzWolf SHP2 | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111 Wifi Smart Switch with Energy Monitoring +46 Shelly 1 | Shelly 1 Open Source Wifi Relay Module +47 Shelly 2 | Shelly 2 Wifi 2-gang Relay Module with Energy Monitoring +48 Xiaomi Philips | Xiaomi Philips Wifi WW Led Bulb +49 Neo Coolcam | Neo Coolcam Wifi Smart Socket +50 ESP Switch | ESP Switch 4-gang Wifi Switch with Leds +51 OBI Socket | OBI Wifi Smart Socket +52 Teckin | Teckin SP20, SP22 Wifi Smart Switch with Energy Monitoring +53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring +54 Tuya Dimmer | MIUO (and other Tuya based) Wifi Dimmer for Incandescent Lights and Led + ### Available Features and Sensors | Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | Remarks diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex new file mode 100644 index 000000000000..22ff54543e11 --- /dev/null +++ b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex @@ -0,0 +1,462 @@ +:020000040000FA +:100000000214007E1DE4FDEF30E70625E06EFF8060 +:1000100004EF25E0FF0DBD08EE2253984FEB4F4D46 +:10002000F598220213707597A522220216DF8E5BC7 +:100030008F5C8C5D8D5E12185D121ACAE55E24BF5E +:100040009000D6F0E55D34FF9000D5F09000D1E54A +:100050005BF0A3E55CF0439104222202148F121B93 +:100060006653D87853DAFE121B31E4900080F022F8 +:10007000D2DE22021732D202121A32C290C296C2C5 +:1000800080E4FBFD7F1012001A12067174A4F0D2F6 +:10009000AFE4F53EF53FD296053FE53F7002053EE1 +:1000A000B410F3E53EB427EEC296120026300209E2 +:1000B0001219598E418F428006754101754200E543 +:1000C000427004E541640170409000D8E07007F58B +:1000D0003EF53F020293053FE53F7002053ED39493 +:1000E00010E53E94274002D296D3E53F9430E53E9A +:1000F00094755003020293E4F53EF53F9000D8F06A +:100100009000D7F0C296020293E4F53EF53F9000CE +:10011000D8E014602A14700302026514700302020E +:100120002314700302023924046003020293E5429F +:1001300064AA60030202939000D804F0020293E5DF +:10014000429000D7F0A37402F0E542120B52020B6A +:10015000A00173A10183A501A7A601BDA701C6A89F +:1001600001E2A901C9B001D2B10198C00293FF0018 +:1001700000021A12062AE49000A2F0900074F07FA8 +:10018000A1807212005E9000D87404F0754008E4FB +:10019000F5447543090202939000D87404F0E4F525 +:1001A000447543020202939000A27480F0E4900030 +:1001B00074F07FA61206A174A6F0020293120671D3 +:1001C00074A4F00202937540089000D87403F00202 +:1001D00002939000747401F07FB11206A1EFF00257 +:1001E000029312062A9000A2E0F53D7480F0E4909C +:1001F0000074F07FA912192290007AEFF07D307C14 +:10020000757F017E001219B80202931206839000D6 +:100210007AEFF0E49000D8F08079E49000D7F0A372 +:10022000F08070E4F544E542F543E543D394009053 +:1002300000D8402C7404F0805A74032544F582E4FD +:100240003400F583E542F00544E544B543059000EC +:10025000D8800DE544C3947040397543709000D840 +:100260007402F0802EE542645570289000D8F0C2E8 +:10027000029000D7E02460601824FC600F24FE6028 +:100280000B14600824F66004241070077FA0121A73 +:10029000EED2029000D7E0120B5202BCA102E6A4FB +:1002A00002F8A5039CA603B6A80563A905A0B0069D +:1002B00013B10369C0038AFF000000AA90007FE029 +:1002C00030E70F7DC87C0012065A7FA3121818026F +:1002D000057D121B2940030200AA7DE87C0312065B +:1002E0005A7FA202059890007FE020E7030200AA4F +:1002F0007FA41218180203AE9000D8E06003020039 +:10030000AA900080E024FC6043240460030200AA59 +:10031000154012005E900005E0FAA3E0FBFFAE027C +:100320001218CF900007E0F8A3E0888385834DF58D +:100330004E85834FF550900005E0F551A3E0F5524E +:10034000E4F55375541875550602053AE5406011F9 +:100350001218D8500302055412068C121B540205C1 +:10036000541206837FA00205989000D8E060030233 +:1003700000AA1218CF7F017E001219B8D296121B64 +:1003800054C2967FA0121AEE800A7F02121AEEE47F +:100390009000D8F0D2021206980200AA90007FE0E6 +:1003A00020E7030200AA547FFD7FA6121785E49080 +:1003B000007FF00200AA9000D8E060030200AA903B +:1003C0000080E024FC700302054024046003020066 +:1003D000AA900003E0FF248070057545FF80028F1E +:1003E00045154012005E900003E064806003020443 +:1003F00074A3E0FCA3E0FD900008E0FAA3E0FBFF9B +:10040000AE021209A3C006C007900006E0FCA3E0FC +:10041000FDAF03AE021209A3C006C00790000AE0B8 +:10042000FF7E00900008E0FCA3E0FD1209A3C006D7 +:10043000C00790000B1218C8C007C00690000C122D +:1004400018C8AA06AB0790000D1218C88E518F521B +:100450008A4F8B50D04DD04E90000EE0F553A3E064 +:10046000F55475550DD003D002D005D004D007D077 +:100470000602053AE545F470030205D21218C124BC +:1004800079F582E4341BF583E493FF7E001218C1F2 +:10049000247CF582E4341BF583E493FA740193FD24 +:1004A000AC021209A3C006C0071218C1247AF58253 +:1004B000E4341BF583E4931218C9C006C007121870 +:1004C000C1247EF582E4341B1218A1C006C00712B5 +:1004D00018C1247FF582E4341B1218A1C007C0069E +:1004E0001218C12480F582E4341B1218A1AA06ABAD +:1004F000071218C12481F582E4341B1218A11218C6 +:10050000C1247BF582E4341BF583E493FD1218C10A +:100510002482F582E4341BF583E493F5548D538EE5 +:10052000518F528A4F8B50D04DD04E755501D0030C +:10053000D002D005D004D007D0061216100200AAAF +:10054000E5406018E545F4600B1218D84006120625 +:100550008C121B54E4900080F00200AA1206987FCF +:10056000A0803590007FE030E71D7DC87C0012063A +:100570003D90007FE0547FFD7FAB121785E4900033 +:100580007FF0D2020200AA121B2940030200AA7DBA +:10059000E87C0312063D7FAA121AEED2020200AADC +:1005A000900003E025E0F5469000D8E060030200EB +:1005B000AA900080E0700512005E800B900080E041 +:1005C000640460030200AAE5466007E543C394049F +:1005D0005008E49000D7F00200AA74052546F9E41B +:1005E0003400754A01F54B894CC3E543954624FE1A +:1005F000F54D900004E0F54E7B017A007905121666 +:10060000827FA0121AEE90007AE0FF121922D20225 +:100610000200AA90007FE020E7030200AA7FB11247 +:100620001514E490007FF00200AA7D327C007F0167 +:100630007E001219B8D296121B54C296227F017EF8 +:10064000001219B8D296121B54C2969000A2E53D32 +:10065000F090007AE0FF121922227F017E00121929 +:10066000B8D296121B54C29690007AE0FF1219225B +:1006700022E49000A2F0900074F07FA4121922905E +:10068000007A2290007AE0FF12192222EFFD7C000E +:100690007F017E001219B82290007AE0FF12192221 +:1006A0002212192290007A228C228D238A248B25F3 +:1006B000AE07900080E014607F046003020933906D +:1006C000007FE06003020933C3E5239414E522941C +:1006D00005500EC3E5259414E52494055003020942 +:1006E000339000A2E0FFAD0685242C85252DAB2399 +:1006F000AA221218E290007DEFF0648070030209D4 +:1007000033900001E524F0A3E525F0900083740800 +:10071000F0E4900075F090007CF0F508F509FE7F9C +:1007200070FD7B017A007903120B78E490007BF076 +:10073000D29090008004F02290007DE0FD75F00DD5 +:10074000A424EBF582E4341B120D89FC740193128E +:100750000E7990007DE075F00DA424E3F582E43479 +:100760001BF583E493FFD39400400B90007CE09F43 +:100770005004E004F02290007DE0F96053FD120E79 +:10078000B8120D89120EED9000BF120E3724E7F556 +:1007900082E4341B120E421209A39000C1120E37DC +:1007A00024E8F582E4341BF583E493FFE9120D8F0E +:1007B000120EED9000C3120E3724E9F582E4341BCB +:1007C000120E421209A39000C5EEF0A3EFF0803E96 +:1007D000900078E0FEA3E0FF9000BFEEF0A3EFF002 +:1007E000900081E0FCA3E0FD9000C1ECF0A3EDF0EF +:1007F000A3ECF0A3EDF0A3120E3724EBF582E43462 +:100800001B120E42900078E0FCA3E0120E799000DB +:1008100083E014F0900075E004F0AE22AF23E4FC16 +:10082000FD9000C7120B46AE24AF25E4FCFD9000FE +:10083000CB120B46120E899000BF120934500E9055 +:1008400000CB120E8C9000C1120934400CC3120E62 +:10085000C45020120DD0B5071A900078E522F0A3FD +:10086000E523F0C290D3120EC6406A852208852384 +:10087000098062120E899000C312094C500E90003C +:10088000CB120E8C9000C512094C400CD3120EC432 +:100890004033120DD06F702D900081E522F0A3E55A +:1008A00023F0D290120E08C083C082E0FF90008334 +:1008B000E0FE7401A806088002C333D8FC4FD08242 +:1008C000D083F08010E490007FF0C290A3F09000FD +:1008D0007D7480F022900083E07015120E08120ED5 +:1008E0004DFF12000390007BEFF09000837408F03E +:1008F000120DD06F703D121B215005E490007EF068 +:10090000120E4A6027121B317D207C037F017E007E +:1009100012198F90007BE090007EF090007DE090B7 +:10092000007FF04480F090007D7480F0C290E490ED +:100930000080F022FFE0FCA3E0FDC3EF9DFFEE9CF2 +:10094000FE121AE2C3EF9527EE952622FFE0FCA3E4 +:10095000E0FDC3EF9DFFEE9CFE121AE2C3EF952768 +:10096000EE952622BB010CE58229F582E5833AF556 +:1009700083E0225006E92582F8E622BBFE06E9253F +:1009800082F8E222E58229F582E5833AF583E49351 +:1009900022BB010689828A83F0225002F722BBFE25 +:1009A00001F322EF8DF0A4A8F0CF8CF0A428CE8D17 +:1009B000F0A42EFE22BC000BBE0029EF8DF084FFB8 +:1009C000ADF022E4CCF875F008EF2FFFEE33FEEC2B +:1009D00033FCEE9DEC984005FCEE9DFE0FD5F0E952 +:1009E000E4CEFD22EDF8F5F0EE8420D21CFEADF051 +:1009F00075F008EF2FFFED33FD4007985006D5F056 +:100A0000F222C398FD0FD5F0EA22C2D5EC30E709F7 +:100A1000B2D5E4C39DFDE49CFCEE30E715B2D5E40D +:100A2000C39FFFE49EFE1209B5C3E49DFDE49CFC58 +:100A300080031209B530D507C3E49FFFE49EFE2270 +:100A4000BB0110E58229F582E5833AF583E0F5F0F4 +:100A5000A3E0225009E92582F886F008E622BBFED1 +:100A60000AE92582F8E2F5F008E222E5832AF58317 +:100A7000E993F5F0A3E9932275F008758200EF2F52 +:100A8000FFEE33FECD33CDCC33CCC58233C5829B54 +:100A9000ED9AEC99E58298400CF582EE9BFEED9A7A +:100AA000FDEC99FC0FD5F0D6E4CEFBE4CDFAE4CC16 +:100AB000F9A88222B800C1B90059BA002DEC8BF018 +:100AC00084CFCECDFCE5F0CBF97818EF2FFFEE33D5 +:100AD000FEED33FDEC33FCEB33FB10D70399400400 +:100AE000EB99FB0FD8E5E4F9FA227818EF2FFFEE27 +:100AF00033FEED33FDEC33FCC933C910D7059BE958 +:100B00009A4007EC9BFCE99AF90FD8E0E4C9FAE4B3 +:100B1000CCFB2275F010EF2FFFEE33FEED33FDCC52 +:100B200033CCC833C810D7079BEC9AE899400AED3C +:100B30009BFDEC9AFCE899F80FD5F0DAE4CDFBE4E4 +:100B4000CCFAE4C8F922ECF0A3EDF0A3EEF0A3EFA9 +:100B5000F022D083D082F8E4937012740193700D68 +:100B6000A3A393F8740193F5828883E473740293CA +:100B70006860EFA3A3A380DFEF4E6012EF60010E69 +:100B8000EDBB010B89828A83F0A3DFFCDEFA2289A8 +:100B9000F05007F709DFFCA9F022BBFEFCF309DFE8 +:100BA000FCA9F0228E228F23900080E014604A146A +:100BB0007003020C8124026003020D5FC29090005A +:100BC0007FE06003020D5FAF23AE22121AB0400334 +:100BD000020D5FE4F524E524120D63E4F0A3F005B3 +:100BE00024E524B40FF0E4900000F0F524120E93F5 +:100BF0009000807401F0D29022900076E0FCA3E097 +:100C0000FDAE047802CEC313CE13D8F92DFFEC3E0F +:100C1000FED3E5239FE5229E4009120E93E4900047 +:100C200000F022AF23AE221217D1501F900000E037 +:100C300094004017E4900073F09000837404F0E493 +:100C400090007BF09000807402F022C3E52394644E +:100C5000E52294005003020D50120EF71211845039 +:100C600003020D5F900000E0120D63120E969000DB +:100C700000E004F0E0D3940F5003020D5FE4020D96 +:100C80005AB290120EF71212CE5059900083E0B46F +:100C90000410E524C454F0120DA1EFF0E490008399 +:100CA000F022900073E0FF120DA6E0FEE524540F41 +:100CB000FDEE4DF074032F120DA8120E4DFF120021 +:100CC00003EFF0900073E004F09000837404F09060 +:100CD0000073E0D394705003020D5F121B31E49057 +:100CE00000008076AF23AE221217D15066121B216E +:100CF0005005E490007EF0120E4A6052121B317DC6 +:100D0000F47C017F017E0012198F90007BE090003F +:100D10007EF0900083E07019120DA2C083C082E0C3 +:100D2000FF900000E0540FFEEF4ED082D083F080A1 +:100D30000E900000E0C454F0440F120DA1EFF090AB +:100D40000073E0FF12105F90007FE04480F0C290DB +:100D5000E48008121B31E4900000F0900080F02243 +:100D6000FCE52A25E02484F582E43400F58322AEF4 +:100D700032AF337C007D641209B57C007D0A120914 +:100D8000A3D3EF94F4EE940122F583E493FFED7E78 +:100D90000075F00DA424E4F582E4341BF583E4939C +:100DA00022FF900073E02403F582E43400F58322EF +:100DB000E53075F00DA424E1F582E4341BF583E4FD +:100DC00093FF7E00AC37AD381209A3AC06AD072205 +:100DD00090007DE075F00DA424EAF582E4341BF563 +:100DE00083E493FF900075E022E53075F00DA424B4 +:100DF000E2F582E4341B22EF75F00DA424EDF582B8 +:100E0000E4341BF583E49322900075E024FFFFE4B3 +:100E100034FFFE7C007D08120A0A74032FF58274E9 +:100E2000003EF58322E53075F00DA424E1F582E45F +:100E3000341BF583E49322EEF0A3EFF0E975F00D97 +:100E4000A422F583E493FF7E002290007EE0FF90D1 +:100E5000007BE06F22E4F9C3ED9BF582EC9AF58309 +:100E6000D3EF9582EE958322E0FCA3E0FDEC547F66 +:100E7000FAD3ED9400EA940022FD1209A37C007DD0 +:100E8000641209B58E268F27229000C7A3A3E0FE27 +:100E9000A3E022900076E522F0A3E523F022AB3C0C +:100EA000AA3BAF35AE34121AA2EF22852C34852D21 +:100EB00035AB2BAA2AAD292275F00DA424E6F582C4 +:100EC000E4341B22E5239509E522950822ED2BFD4C +:100ED000EC3AFCC3EF9DEE9C22F537740193F53894 +:100EE00022540F75F002A4F58285F08322FA740172 +:100EF00093FDAC020209A37B007A007924AF23AEF4 +:100F00002222E0FEA3E0FFC322EC4480AF05F0A361 +:100F1000EFF0228F308A328B33E4F536120DF76D05 +:100F20006003AF3622120E25FFD394005003020F48 +:100F3000C1120DE9F583E493FED394005003020F30 +:100F4000C1E530702DEFD39EE53075F00D400C12E9 +:100F50000E2AFD7C00AE32AF33800E120DEEF5830B +:100F6000E493FD7C00AE34AF351209B58E378F386F +:100F70008008E530120D91120ED9120D6F40067ED9 +:100F8000017FF480008E398F3AAE34AF35120D7385 +:100F900040070C7E017FF480008E3B8F3C120DB029 +:100FA000AB3AAA39AF33AE32121A94EF7003021083 +:100FB0005C120DE9120DBD120E9E700302105C80D2 +:100FC00066120DE9F583E493D394004029E53012CD +:100FD0000D91120ED9AE34AF35120D7340070C7E51 +:100FE000017FF480008E3B8F3C120DE9120DBD1283 +:100FF0000E9E60688031120E25D39400405EE5306D +:10100000120D91120ED9120D6F40070C7E017FF464 +:1010100080008E398F3A120DB0AB3AAA39AF33AE99 +:1010200032121AA2EF6035E530120EB8120E42AC41 +:1010300037AD381209A3900078EEF0A3EFF0E53059 +:1010400075F00DA424E8F582E4341B120E42120957 +:10105000A3900081EEF0A3EFF0753601AF36228F3A +:1010600025E4F527F526E5252401FFE433FEC3E555 +:10107000269FEE6480F874809850397403252612F8 +:101080000DA8E0C4540FFF120D63120E684007EF65 +:10109000120D63120F0974032526120DA8E0540FD8 +:1010A000FF120D63120E684007EF120D63120F0955 +:1010B000052680B2E4F526900000E0FFE526C39FF8 +:1010C000400302117BE526120D63E030E7030211B5 +:1010D0006DAF26900000E0FEEFC39E400302116951 +:1010E000EF25E02486F582E43400F583E0FCA3E0FC +:1010F000FDEF120D63ECF0A3EDF0E4FEE525240115 +:10110000FDE433FCEEC39DEC6480F8748098505588 +:1011100074032E120DA8E0F9C4540FFDEF2401FB57 +:10112000E433FAEDB50316E4B50212E9540FFDEF0E +:10113000C454F04DFD74032E120DA8EDF0EF240100 +:10114000FDE433FC74032E120DA8E0F9540FB5052D +:1011500011E4B5040DE954F04FFD74032E120DA8EF +:10116000EDF00E80970F0210D305278009E52612B7 +:101170000D63E0547FF005260210B7900000E0C335 +:101180009527F0228E258F268B278A288929C20051 +:101190001212CE5005D200021228E4F52A90000067 +:1011A000E0FFE52AC39F4003021228120D61E0FC14 +:1011B000A3E0FDAE047803CEC313CE13D8F9FBAA87 +:1011C00006EDAE047802CEC313CE13D8F92BFDEE94 +:1011D0003A120D60E0C4F854F0C868FEA3E0C454AD +:1011E0000F482DFFEC3EFEC3E5269FFDE5259E1230 +:1011F0000D60E0FAA3E0FBD39DEA9C4026E5262F94 +:10120000FFE5253EFEC3EB9FEA9E5017E5294528E2 +:101210004527600BAB27AA28A929E52A120991D2F4 +:10122000008005052A02119DA20022AFFBAEFC7CC6 +:10123000007D0A1209A39000BDEEF0A3EFF090002C +:10124000BD120F029464EE940050030212CD30934D +:101250003B8E0A8F0BC3EF950DF511EE950CF51033 +:10126000900074E014601F04706390007DE0FF64E0 +:10127000806007120DF764016053AB11AA10AD0F27 +:10128000AC0EE4FF803DAF11AE10803E9000BDE09B +:10129000FEA3E08E0CF50DC3950BF50FEE950AF548 +:1012A0000E900074E014601E04702290007DE0FF38 +:1012B00064806005120DF76014AB0FAA0EAD11AC7F +:1012C000107F010206A8AF0FAE0E120BA4228E2BC8 +:1012D0008F2C8B2D8A2E892FC201E4F530900000CF +:1012E000E0FFE530C39F400302136DE52CAE2B7881 +:1012F00003CEC313CE13D8F9FDAC06E52CAE2B7884 +:1013000002CEC313CE13D8F92DF532EE3CF531E5FC +:1013100030120D63120F029532EE953150028004A7 +:10132000AE31AF328E318F32E530120D63120F02C3 +:101330009532FDEE9531FCC3ED952CEC952B5028A4 +:10134000E5322FFFE5313EFEC3E52C9FE52B9E5095 +:1013500017E52F452E452D600BAB2DAA2EA92FE5A5 +:1013600030120991D201800505300212DDA201225E +:10137000C0E0C0F0C083C082C0D075D000C000C043 +:1013800001C002C003C004C005C006C007E59854F0 +:1013900003F55FF45298E55F30E017121B6F900081 +:1013A000BA1219FFEFF09000BAE004F0E0B41402B2 +:1013B000E4F0E55F30E12E9000BCE0D39400401AE9 +:1013C0009000B9E02460F8E6FF121B6C9000B9E0D1 +:1013D00004F09000BCE014F08002D2039000B9E069 +:1013E000B42002E4F0D007D006D005D004D003D05A +:1013F00002D001D000D0D0D082D083D0F0D0E03263 +:1014000012005A787FE4F6D8FD75817F02144A02F3 +:101410000076E493A3F8E493A34003F68001F20876 +:10142000DFF48029E493A3F85407240CC8C333C421 +:10143000540F4420C8834004F456800146F6DFE48C +:10144000800B0102040810204080901596E47E0174 +:101450009360BCA3FF543F30E509541FFEE493A3FF +:1014600060010ECF54C025E060A840B8E493A3FA11 +:10147000E493A3F8E493A3C8C582C8CAC583CAF09D +:10148000A3C8C582C8CAC583CADFE9DEE780BEC07B +:10149000E0C0F0C083C082C0D075D000C000C001E1 +:1014A000C002C003C004C005C006C007E5D8548709 +:1014B000F521F452D8E5F730E508E5F730E60312F8 +:1014C0001B7653F7DFE52130E708E5D930E003125A +:1014D0001B75E52130E008E5DA30E00312122BE558 +:1014E0002130E108E5DB30E003121B77E52130E233 +:1014F00008E5DC30E003121B78D007D006D005D019 +:1015000004D003D002D001D000D0D0D082D083D07C +:10151000F0D0E032AE07E4F547121A5B900000E02D +:1015200004FF121A6212158F900000E0FFE547C316 +:101530009F50121219F31219E61219F3F5831219BA +:10154000ED054780E3900076E0FF121A6290007686 +:101550001219ED12158FE4F547900073E02401FF96 +:10156000E433FEC3E5479FEE6480F874809850171B +:10157000740325471219E10547E547541F70DA1235 +:101580001B69121B6280D27F55121A62021B6912FC +:101590001B69121B62224200D300004200CF0000F0 +:1015A0004200D500004200D100004100D8004100B7 +:1015B000D70041007F00410080004100A28041002F +:1015C000740041007D8041007A0042000100004229 +:1015D0000081000042007800004100830041007556 +:1015E0000041007C004100730041007E0041007B0F +:1015F00000410000004100BA004100BB004100B8BA +:10160000004100B9004100BC004100B700C1030027 +:101610008A4B8B4C855557755880121A0AE553D35F +:1016200094004019E4F556E556C39553500FAD525A +:10163000AC51AF50AE4F121A0A055680EAE4F55687 +:10164000E556C39554503274032557120DA8E05542 +:1016500058600AAD52AC51AF50AE4F8008AD4EACA1 +:101660004DAF4CAE4B121A0AE558C313F55870052E +:101670000557755880055680C7C290900080740445 +:10168000F0228B478A488949E4F54FE54FC3954DD1 +:101690005043AB47AA48A949C003C002C001AB4AA6 +:1016A000AA4BA94C854F82758300120964FDC412B0 +:1016B0000EE1D001D002D003120A40FFAEF0AB47DA +:1016C000AA48A949ED120EE1120A40FDACF0121A27 +:1016D0000A054F80B6AF4E154EEF70ACC29022C0D7 +:1016E000E0C083C082C0D075D000C004C005C00671 +:1016F000C00753C87F9000D3E0FEA3E0FF4E700305 +:1017000053C8FB9000CF12189650099000D3E4F014 +:10171000A3F0800DC39000D4E09DF09000D3E09C36 +:10172000F0D007D006D005D004D0D0D082D083D05E +:10173000E032C0E0C083C082C0D075D000C004C019 +:1017400005C006C00753917F9000D5E0FEA3E0FFDF +:101750004E70035391FB9000D112189650099000DF +:10176000D5E4F0A3F0800DC39000D6E09DF090008A +:10177000D5E09CF0D007D006D005D004D0D0D082E0 +:10178000D083D0E032AE05AD07E4FCFB7FAA121A8D +:1017900062AF05121A62EE75F00DA42452F582E4D0 +:1017A000341CF583E493FFECC39F500774082CFCB2 +:1017B0000B80F4EB04FF121A5DE4FCECC39B5009B0 +:1017C00074032C1219E10C80F27F55121A62021B6D +:1017D00069AB07AA06900076E0FEA3E0FF120D7346 +:1017E00040050C7DF48004AC06AD07AE04AF05C324 +:1017F000900077E09FFD900076E09EFCC3ED9BECAF +:101800009A5013A3E02FFF900076E03EFEC3EB9FBB +:10181000EA9E50028001C322AE07E4FDF547121A8A +:101820005B900001E0FF121A629000011219ED9026 +:101830000078E0FF121A629000781219ED90008192 +:10184000E0FF121A629000811219ED74032D121933 +:10185000E10DBD03F67F55121A62021B69AB07AAA0 +:1018600006E4F9F87F407E427D0FFC120AB4A8041A +:10187000A905AA06AB077F207ED77D757C01120AD9 +:10188000B4C3E49FFFE49EFE22AB07AA06E4F9F886 +:101890007FE87E03FD22E0FCA3E0FDC3EF9DEE9C0C +:1018A00022F583E493FF7E00E54575F00DA4247CCA +:1018B000F582E4341BF583E493FC740193FD020983 +:1018C000A3E54575F00DA422E0FF7E000209A39078 +:1018D0000003E0FCA3E0FD22901B84E493FFD3947B +:1018E00000228F288D298A2A8B2B752E80E52824AB +:1018F00080701EE4F52F120EABAF2F120F13EF60A6 +:1019000005852F2E8019052FE52FC3940840E78009 +:101910000E120EABAF28120F13EF600385282EAF07 +:101920002E228F4790007AE0F5487F0B121B7243FE +:10193000DA011200707D0A7C007F017E001219B866 +:10194000121B54E4900080F090007FF09000D7E5E7 +:1019500047F090007AF0AF48229000BAE0FF900084 +:10196000B8E0B507057E017F00229000B81219FF8C +:10197000E0FD7C009000B8E004F0E0B41402E4F074 +:101980009000B7E0FEEE4204E4F0AE04AF05228E14 +:10199000288F298C2A8D2B12188912186A121ABEC8 +:1019A0009000D3E52AF0A3E52BF09000CFE528F0D6 +:1019B000A3E529F043C804228E498F4A8C4B8D4CF5 +:1019C00012188912186A121ACA9000D5E54BF0A3B2 +:1019D000E54CF09000D1E549F0A3E54AF0439104CD +:1019E00022F582E43400F583E0FF021A62A3E0FFEF +:1019F000021A62E54725E02484F582E4340022E0FF +:101A000024A3F582E43400F583228C598D5AD290B8 +:101A1000D280AD07AC067F0A7E0012002E121B5446 +:101A2000C290C280AD5AAC597F0A7E0012002E02CD +:101A30001B5412002A121B38121B3F121AF9121BD8 +:101A40005A121A7E121B17121B03121B0D121AD6E2 +:101A5000121B46121B5E021B4DAE077FAA121A62B2 +:101A6000AF06C2039000BBE0B42002E4F09000BBDC +:101A7000E02460F8A607E004F0A3E004F022AF88B9 +:101A80005388AF758CA0758DCBEF5440FEEF54108A +:101A90004E428822120E554006120ECD500109AF5B +:101AA0000122120E554006120ECD500109AF01223F +:101AB000C3EF9414EE94054003D38001C322AD0715 +:101AC000AC06ECF5CBAF058FCA22AD07AC06ECF542 +:101AD00093AF058F9222C2DE75D90575F9FF759611 +:101AE0000122EE30E707C3E49FFFE49EFE22121AB4 +:101AF000597F55121A62021B6975E34075E1017541 +:101B0000E20122E59154045391FB429122758E54D7 +:101B100075892243885022E5C8540453C8FB42C843 +:101B200022E5C8C320E201D322E591C320E201D31C +:101B30002253C8FB53C87F2275A41175D4CF2275D8 +:101B4000A54175D5772253F77F75DA302275E69077 +:101B500075A8B022E59120E2FB22E4F5A922439882 +:101B600010223003FD22C2DE22D299228F9922AFA9 +:101B700099228F8C2222222222011F00015E010362 +:101B80000301183C00000D0400017201020201284B +:101B90003C0800081700018601030301183C0000FF +:101BA0001F0A00012C01030301183C0000003B0741 +:101BB00001F401020302403C000007120001900101 +:101BC000030301183C000017010001C201020201D9 +:101BD000183C000124010000D2010202010C3C006B +:101BE00001011F00015E01030301183C00000D0408 +:101BF00000017201020201283C080008170001865A +:101C000001030301183C00001F0A00012C0103031B +:101C100001183C0000003B0701F401020302403CB4 +:101C20000000071200019001030301183C00001797 +:101C3000010001C201020201183C00012401000060 +:101C4000D2010202010C3C0001011F00015E0103F0 +:101C50000301183C00000D0400017201020201287A +:101C60003C0800081700018601030301183C00002E +:101C70001F0A00012C01030301183C0000003B0770 +:101C800001F401020302403C000007120001900130 +:101C9000030301183C000017010001C20102020108 +:101CA000183C000124010000D2010202010C3C009A +:011CB0000132 +:00000001FF From 66bf3ad3f2a6991543200a94ee67726b420e2c36 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 14:36:28 +0100 Subject: [PATCH 388/798] Updated RELEASENOTES Updated RELEASENOTES --- RELEASENOTES.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c5bf016835bf..2c987308c691 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,20 +17,8 @@ See _changelog.ino how to enable them again. - If no SSID is configured making a wifi connection impossible the new define WIFI_CONFIG_NO_SSID will be used. - While define WIFI_CONFIG_NO_SSID is set to WIFI_WPSCONFIG in my_user_config.h the compiler will check for define USE_WPS and if not enabled WIFI_CONFIG_NO_SSID will default to WIFI_MANAGER using the webserver. If define USE_WEBSERVER is also not enabled WIFI_CONFIG_NO_SSID will default to WIFI_SMARTCONFIG. If define USE_SMARTCONFIG is also not enabled WIFI_CONFIG_NO_SSID will default to a new option WIFI_SERIAL allowing to enter wifi parameters to serial which is always possible. -## Provided Binary Downloads -The following binary downloads have been compiled with ESP8266/Arduino library version **2.3.0** - -- **sonoff-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**. -- **sonoff-classic.bin** = The Classic version allows **initial installation** using either WifiManager, Wps or SmartConfig. -- **sonoff.bin** = The Sonoff version without Wps and SmartConfig configuration but adds more sensors. -- **sonoff-BG.bin** to **sonoff-TW.bin** = The Sonoff version without Wps and SmartConfig configuration in different languages. -- **sonoff-sensors.bin** = The Sensors version without Wps and SmartConfig configuration but adds even more useful sensors. -- **sonoff-display.bin** = The Display version without Wps and SmartConfig configuration but adds display support. -- **sonoff-knx.bin** = The Knx version without Wps and SmartConfig configuration and some other features but adds KNX support. - -See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. - -### Supported hardware Modules +## Supported Modules +The following hardware modules are supported. Module | Description ------------------|----------------------- @@ -89,6 +77,19 @@ Module | Description 53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring 54 Tuya Dimmer | MIUO (and other Tuya based) Wifi Dimmer for Incandescent Lights and Led +## Provided Binary Downloads +The following binary downloads have been compiled with ESP8266/Arduino library version **2.3.0** + +- **sonoff-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**. +- **sonoff-classic.bin** = The Classic version allows **initial installation** using either WifiManager, Wps or SmartConfig. +- **sonoff.bin** = The Sonoff version without Wps and SmartConfig configuration but adds more sensors. +- **sonoff-BG.bin** to **sonoff-TW.bin** = The Sonoff version without Wps and SmartConfig configuration in different languages. +- **sonoff-sensors.bin** = The Sensors version without Wps and SmartConfig configuration but adds even more useful sensors. +- **sonoff-display.bin** = The Display version without Wps and SmartConfig configuration but adds display support. +- **sonoff-knx.bin** = The Knx version without Wps and SmartConfig configuration and some other features but adds KNX support. + +See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. + ### Available Features and Sensors | Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | Remarks From 9e2df8f38ca4ecc8ec22d010f0d307ea488cadf5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 31 Oct 2018 14:37:04 +0100 Subject: [PATCH 389/798] Updated RELEASENOTES Updated RELEASENOTES --- RELEASENOTES.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c5bf016835bf..2c987308c691 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -17,20 +17,8 @@ See _changelog.ino how to enable them again. - If no SSID is configured making a wifi connection impossible the new define WIFI_CONFIG_NO_SSID will be used. - While define WIFI_CONFIG_NO_SSID is set to WIFI_WPSCONFIG in my_user_config.h the compiler will check for define USE_WPS and if not enabled WIFI_CONFIG_NO_SSID will default to WIFI_MANAGER using the webserver. If define USE_WEBSERVER is also not enabled WIFI_CONFIG_NO_SSID will default to WIFI_SMARTCONFIG. If define USE_SMARTCONFIG is also not enabled WIFI_CONFIG_NO_SSID will default to a new option WIFI_SERIAL allowing to enter wifi parameters to serial which is always possible. -## Provided Binary Downloads -The following binary downloads have been compiled with ESP8266/Arduino library version **2.3.0** - -- **sonoff-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**. -- **sonoff-classic.bin** = The Classic version allows **initial installation** using either WifiManager, Wps or SmartConfig. -- **sonoff.bin** = The Sonoff version without Wps and SmartConfig configuration but adds more sensors. -- **sonoff-BG.bin** to **sonoff-TW.bin** = The Sonoff version without Wps and SmartConfig configuration in different languages. -- **sonoff-sensors.bin** = The Sensors version without Wps and SmartConfig configuration but adds even more useful sensors. -- **sonoff-display.bin** = The Display version without Wps and SmartConfig configuration but adds display support. -- **sonoff-knx.bin** = The Knx version without Wps and SmartConfig configuration and some other features but adds KNX support. - -See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. - -### Supported hardware Modules +## Supported Modules +The following hardware modules are supported. Module | Description ------------------|----------------------- @@ -89,6 +77,19 @@ Module | Description 53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring 54 Tuya Dimmer | MIUO (and other Tuya based) Wifi Dimmer for Incandescent Lights and Led +## Provided Binary Downloads +The following binary downloads have been compiled with ESP8266/Arduino library version **2.3.0** + +- **sonoff-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**. +- **sonoff-classic.bin** = The Classic version allows **initial installation** using either WifiManager, Wps or SmartConfig. +- **sonoff.bin** = The Sonoff version without Wps and SmartConfig configuration but adds more sensors. +- **sonoff-BG.bin** to **sonoff-TW.bin** = The Sonoff version without Wps and SmartConfig configuration in different languages. +- **sonoff-sensors.bin** = The Sensors version without Wps and SmartConfig configuration but adds even more useful sensors. +- **sonoff-display.bin** = The Display version without Wps and SmartConfig configuration but adds display support. +- **sonoff-knx.bin** = The Knx version without Wps and SmartConfig configuration and some other features but adds KNX support. + +See [Tasmota ESP/Arduino library version related issues](https://github.com/arendst/Sonoff-Tasmota/wiki/Theo's-Tasmota-Tips#20180523---relation-tasmota-and-esp8266arduino-core-version) why these files are still released using ESP/Arduino library version v2.3.0. + ### Available Features and Sensors | Feature or Sensor | minimal | basic | classic | sonoff | knx | sensors | Remarks From 5d1f5a40a1a52144ad481aa597a8db4d431c7774 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 31 Oct 2018 15:03:47 -0300 Subject: [PATCH 390/798] Reduce CPU usage at boot time If many drivers has been enabled, there is a peak of CPU usage at boot time that it is translated as a peak in power consumption. This address to a wifi connection issue in poor power regulated devices like Sonoff Basic R2. This fix reduces cpu usage making the wifi connection to establish faster. --- sonoff/xdrv_interface.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index c80bb27d49ca..a6e917a83061 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -249,6 +249,9 @@ boolean XdrvCall(byte Function) boolean result = false; for (byte x = 0; x < xdrv_present; x++) { + if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { + delay(1); + } result = xdrv_func_ptr[x](Function); if (result) break; } From 1fc19ccf5ff6c64c275befcbe5aed88a1e2c29bd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 31 Oct 2018 15:07:27 -0300 Subject: [PATCH 391/798] Reduce CPU usage at boot time --- sonoff/xsns_interface.ino | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index 408e68af9fe8..ee3d545da363 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -284,6 +284,9 @@ boolean XsnsNextCall(byte Function) { xsns_index++; if (xsns_index == xsns_present) xsns_index = 0; + if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { + delay(1); + } return xsns_func_ptr[xsns_index](Function); } @@ -298,19 +301,21 @@ boolean XsnsCall(byte Function) for (byte x = 0; x < xsns_present; x++) { #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND - uint32_t profile_start_millis = millis(); + uint32_t profile_start_millis = millis(); #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - + if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { + delay(1); + } result = xsns_func_ptr[x](Function); #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND - uint32_t profile_millis = millis() - profile_start_millis; - if (profile_millis) { - if (FUNC_EVERY_SECOND == Function) { - snprintf_P(log_data, sizeof(log_data), PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), uptime, Function, x, profile_millis); - AddLog(LOG_LEVEL_DEBUG); + uint32_t profile_millis = millis() - profile_start_millis; + if (profile_millis) { + if (FUNC_EVERY_SECOND == Function) { + snprintf_P(log_data, sizeof(log_data), PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), uptime, Function, x, profile_millis); + AddLog(LOG_LEVEL_DEBUG); + } } - } #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND if (result) break; From b89b9c19175ebc919b7fc11f7ab9aea181929a00 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Wed, 31 Oct 2018 22:44:56 +0100 Subject: [PATCH 392/798] Remove faulty Arduino cores Cores 2.4.0 and 2.4.1 are know to be faulty. Not needed for Tasmota anymore --- platformio.ini | 4 ---- 1 file changed, 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index e685cf34f0f6..bb68e981fc3c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -40,10 +40,6 @@ env_default = sonoff [common] ; ************************************************************ ; *** Esp8266 core for Arduino version 2.3.0 platform = espressif8266@1.5.0 -; *** Esp8266 core for Arduino version 2.4.0 -;platform = espressif8266@1.6.0 -; *** Esp8266 core for Arduino version 2.4.1 -;platform = espressif8266@1.7.3 ; *** Esp8266 core for Arduino version 2.4.2 ;platform = espressif8266@1.8.0 ; *** Esp8266 core for Arduino version Core 2.5.0 beta tested for Tasmota From 2d94b7cc7c81129cdabd06087f4bbccc38f9d92e Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Thu, 1 Nov 2018 00:13:46 +0100 Subject: [PATCH 393/798] tuya: Autoconfigure Dimmer ID when SetOption34 == 0, use 0 as default for TUYA_DIMMER_ID --- sonoff/my_user_config.h | 2 +- sonoff/sonoff_post.h | 2 +- sonoff/xdrv_16_tuyadimmer.ino | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) mode change 100755 => 100644 sonoff/sonoff_post.h diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 5b721af2a485..3c946f7ad7f2 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -354,7 +354,7 @@ //#define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) #define USE_TUYA_DIMMER // Add support for Tuya Serial Dimmer - #define TUYA_DIMMER_ID 3 // Default dimmer Id + #define TUYA_DIMMER_ID 0 // Default dimmer Id // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h old mode 100755 new mode 100644 index b6fea83a28c8..7498d40e93cb --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -104,7 +104,7 @@ void KNX_CB_Action(message_t const &msg, void *arg); #define USE_MP3_PLAYER // Use of the DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) #define USE_TUYA_DIMMER // Add support for Tuya Serial Dimmer - #define TUYA_DIMMER_ID 3 // Default dimmer Id + #define TUYA_DIMMER_ID 0 // Default dimmer Id #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_PZEM_AC // Add support for PZEM014,016 Energy monitor (+1k1 code) #define USE_PZEM_DC // Add support for PZEM003,017 Energy monitor (+1k1 code) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 91fe1758146e..896db72ed504 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -20,7 +20,7 @@ #ifdef USE_TUYA_DIMMER #ifndef TUYA_DIMMER_ID -#define TUYA_DIMMER_ID 3 +#define TUYA_DIMMER_ID 0 #endif #define TUYA_BUFFER_SIZE 256 @@ -128,6 +128,12 @@ void TuyaPacketProcess() snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Dim State=%d"), tuya_buffer[13]); AddLog(LOG_LEVEL_DEBUG); + if (!Settings.param[P_TUYA_DIMMER_ID]) { + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Autoconfiguring Dimmer ID %d"), tuya_buffer[6]); + AddLog(LOG_LEVEL_DEBUG); + Settings.param[P_TUYA_DIMMER_ID] = tuya_buffer[6]; + } + tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); if((power) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 2)) { From 7f9f1f2f6634443310c773e11555d5511e84e32d Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Thu, 1 Nov 2018 02:55:16 +0100 Subject: [PATCH 394/798] tuya: autoconfigure gpios --- sonoff/sonoff_template.h | 4 +-- sonoff/xdrv_16_tuyadimmer.ino | 68 ++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f3712672f64c..036e2400d9fe 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -1154,7 +1154,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { }, { "Tuya Dimmer", // Tuya Dimmer (ESP8266 w/ separate MCU dimmer) // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 - GPIO_KEY1, // Virtual Button (controlled by MCU) + GPIO_USER, // Virtual Button (controlled by MCU) GPIO_USER, // GPIO01 MCU serial control GPIO_USER, GPIO_USER, // GPIO03 MCU serial control @@ -1163,7 +1163,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { 0, 0, 0, 0, 0, 0, // Flash connection GPIO_USER, GPIO_USER, - GPIO_LED1, // GPIO14 Green Led + GPIO_USER, // GPIO14 Green Led GPIO_USER, GPIO_USER, 0 diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 896db72ed504..78c7ab7f97b3 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -33,7 +33,7 @@ boolean tuya_ignore_dim = false; // Flag to skip serial send to preve uint8_t tuya_cmd_status = 0; // Current status of serial-read uint8_t tuya_cmd_checksum = 0; // Checksum of tuya command uint8_t tuya_data_len = 0; // Data lenght of command -int8_t tuya_wifi_state = -2; +int8_t tuya_wifi_state = -2; // Keep MCU wifi-status in sync with WifiState() char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer int tuya_byte_counter = 0; // Index in serial receive buffer @@ -113,6 +113,10 @@ void TuyaPacketProcess() if (tuya_byte_counter == 7 && tuya_buffer[3] == 14 ) { // heartbeat packet AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Heartbeat")); + if(tuya_buffer[6] == 0){ + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Detected MCU restart")); + tuya_wifi_state = -2; + } } else if (tuya_byte_counter == 12 && tuya_buffer[3] == 7 && tuya_buffer[5] == 5) { // on/off packet @@ -156,9 +160,33 @@ void TuyaPacketProcess() } else if (tuya_byte_counter == 7 && tuya_buffer[3] == 3 && tuya_buffer[6] == 2) { // WiFi LED has been sucessfully set. - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi LED set ACK")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi LED set ACK Rcvd")); tuya_wifi_state = WifiState(); } + else if (tuya_buffer[3] == 2) { // MCU configuration packet + + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: MCU configuration Rcvd")); + + if (tuya_buffer[5] == 2) { + uint8_t led1_gpio = tuya_buffer[6]; + uint8_t key1_gpio = tuya_buffer[7]; + boolean key1_set = false; + boolean led1_set = false; + for (byte i = 0; i < MAX_GPIO_PIN; i++) { + if (Settings.my_gp.io[i] == GPIO_LED1) led1_set = true; + else if (Settings.my_gp.io[i] == GPIO_KEY1) key1_set = true; + } + if(!Settings.my_gp.io[led1_gpio] && !led1_set){ + Settings.my_gp.io[led1_gpio] = GPIO_LED1; + restart_flag = 2; + } + if(!Settings.my_gp.io[key1_gpio] && !key1_set){ + Settings.my_gp.io[key1_gpio] = GPIO_KEY1; + restart_flag = 2; + } + } + TuyaRequestState(); + } } void TuyaSerialInput() @@ -224,8 +252,11 @@ void TuyaSerialInput() boolean TuyaModuleSelected() { if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected - pin[GPIO_TUYA_RX] = 1; - pin[GPIO_TUYA_TX] = 3; + pin[GPIO_TUYA_TX] = 1; + pin[GPIO_TUYA_RX] = 3; + Settings.my_gp.io[1] = GPIO_TUYA_TX; + Settings.my_gp.io[3] = GPIO_TUYA_RX; + restart_flag = 2; } light_type = LT_SERIAL; return true; @@ -260,26 +291,39 @@ void TuyaSetWifiLed(){ TuyaSerial->flush(); } +void TuyaRequestState(){ + if(TuyaSerial) { + // Get current status of MCU + snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); + AddLog(LOG_LEVEL_DEBUG); + + TuyaSerial->write((uint8_t)0x55); // header 55AA + TuyaSerial->write((uint8_t)0xAA); + TuyaSerial->write((uint8_t)0x00); // version 00 + TuyaSerial->write((uint8_t)0x08); // command 08 - get status + TuyaSerial->write((uint8_t)0x00); + TuyaSerial->write((uint8_t)0x00); // following data length 0x00 + TuyaSerial->write((uint8_t)0x07); // checksum:sum of all bytes in packet mod 256 + TuyaSerial->flush(); + } +} + void TuyaInit() { - if (!Settings.param[P_TUYA_DIMMER_ID]) { - Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; - } TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1); if (TuyaSerial->begin(9600)) { if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } - - // Get current status of MCU - snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); + // Get MCU Configuration + snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration"); AddLog(LOG_LEVEL_DEBUG); TuyaSerial->write((uint8_t)0x55); // header 55AA TuyaSerial->write((uint8_t)0xAA); TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x08); // command 08 - get status + TuyaSerial->write((uint8_t)0x02); // command 02 - get configuration TuyaSerial->write((uint8_t)0x00); TuyaSerial->write((uint8_t)0x00); // following data length 0x00 - TuyaSerial->write((uint8_t)0x07); // checksum:sum of all bytes in packet mod 256 + TuyaSerial->write((uint8_t)0x01); // checksum:sum of all bytes in packet mod 256 TuyaSerial->flush(); } } From 9723d6de5653c0706ca0e1e1e2962fe89f2d8393 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Thu, 1 Nov 2018 03:39:54 +0100 Subject: [PATCH 395/798] tuya: keep option to set dimmer-id at compile-time --- sonoff/xdrv_16_tuyadimmer.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 78c7ab7f97b3..e47e3a922386 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -310,6 +310,9 @@ void TuyaRequestState(){ void TuyaInit() { + if (!Settings.param[P_TUYA_DIMMER_ID]) { + Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; + } TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1); if (TuyaSerial->begin(9600)) { if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } From f4c80b5ed07420f04a035c6b5b48acadab892870 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Thu, 1 Nov 2018 04:30:02 +0100 Subject: [PATCH 396/798] tuya: accept any wifi-reset packet --- sonoff/xdrv_16_tuyadimmer.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index e47e3a922386..813879b976f0 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -153,7 +153,7 @@ void TuyaPacketProcess() ExecuteCommand(scmnd, SRC_SWITCH); } } - else if (tuya_byte_counter == 8 && tuya_buffer[3] == 5 && tuya_buffer[5] == 1 && tuya_buffer[7] == 5 ) { // reset WiFi settings packet + else if (tuya_byte_counter == 8 && tuya_buffer[3] == 5 && tuya_buffer[5] == 1) { // reset WiFi settings packet AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi Reset Rcvd")); TuyaResetWifi(); From a56832073b726ea8516f74bd51d0e477ee9c6ce9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 1 Nov 2018 12:56:13 +0100 Subject: [PATCH 397/798] Remove unsupported cores Remove unsupported cores --- arduino/version 2.4.0/boards.txt | 3341 ------------------------ arduino/version 2.4.0/platform.txt | 133 - arduino/version 2.4.1/boards.txt | 3796 ---------------------------- arduino/version 2.4.1/platform.txt | 137 - 4 files changed, 7407 deletions(-) delete mode 100644 arduino/version 2.4.0/boards.txt delete mode 100644 arduino/version 2.4.0/platform.txt delete mode 100644 arduino/version 2.4.1/boards.txt delete mode 100644 arduino/version 2.4.1/platform.txt diff --git a/arduino/version 2.4.0/boards.txt b/arduino/version 2.4.0/boards.txt deleted file mode 100644 index 1f6d47cc69e4..000000000000 --- a/arduino/version 2.4.0/boards.txt +++ /dev/null @@ -1,3341 +0,0 @@ -# -# this file is script-generated and is likely to be overwritten by ./tools/boards.txt.py -# - -menu.BoardModel=Model -menu.UploadSpeed=Upload Speed -menu.UploadTool=Upload Using -menu.CpuFrequency=CPU Frequency -menu.CrystalFreq=Crystal Frequency -menu.FlashSize=Flash Size -menu.FlashMode=Flash Mode -menu.FlashFreq=Flash Frequency -menu.ResetMethod=Reset Method -menu.ESPModule=Module -menu.Debug=Debug port -menu.DebugLevel=Debug Level -menu.LwIPVariant=lwIP Variant -menu.led=Builtin Led - -############################################################## -generic.name=Generic ESP8266 Module -generic.build.board=ESP8266_GENERIC -generic.upload.tool=esptool -generic.upload.maximum_data_size=81920 -generic.upload.wait_for_upload_port=true -generic.serial.disableDTR=true -generic.serial.disableRTS=true -generic.build.mcu=esp8266 -generic.build.core=esp8266 -generic.build.variant=generic -generic.build.spiffs_pagesize=256 -generic.build.debug_port= -generic.build.debug_level= - -generic.menu.UploadTool.esptool=Serial -generic.menu.UploadTool.esptool.upload.tool=esptool -generic.menu.UploadTool.esptool.upload.verbose=-vv -generic.menu.UploadTool.espupload=OTA_upload -generic.menu.UploadTool.espupload.upload.tool=espupload - -generic.menu.CpuFrequency.80=80 MHz -generic.menu.CpuFrequency.80.build.f_cpu=80000000L -generic.menu.CpuFrequency.160=160 MHz -generic.menu.CpuFrequency.160.build.f_cpu=160000000L -generic.menu.ResetMethod.ck=ck -generic.menu.ResetMethod.ck.upload.resetmethod=ck -generic.menu.ResetMethod.nodemcu=nodemcu -generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -generic.menu.CrystalFreq.26=26 MHz -generic.menu.CrystalFreq.40=40 MHz -generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -generic.menu.FlashFreq.40=40MHz -generic.menu.FlashFreq.40.build.flash_freq=40 -generic.menu.FlashFreq.80=80MHz -generic.menu.FlashFreq.80.build.flash_freq=80 -generic.menu.FlashMode.qio=QIO -generic.menu.FlashMode.qio.build.flash_mode=qio -generic.menu.FlashMode.qout=QOUT -generic.menu.FlashMode.qout.build.flash_mode=qout -generic.menu.FlashMode.dio=DIO -generic.menu.FlashMode.dio.build.flash_mode=dio -generic.menu.FlashMode.dout=DOUT -generic.menu.FlashMode.dout.build.flash_mode=dout -generic.menu.FlashSize.512K0=512K (no SPIFFS) -generic.menu.FlashSize.512K0.build.flash_size=512K -generic.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -generic.menu.FlashSize.512K0.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K0.upload.maximum_size=499696 -generic.menu.FlashSize.512K64=512K (64K SPIFFS) -generic.menu.FlashSize.512K64.build.flash_size=512K -generic.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -generic.menu.FlashSize.512K64.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K64.upload.maximum_size=434160 -generic.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -generic.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.512K128=512K (128K SPIFFS) -generic.menu.FlashSize.512K128.build.flash_size=512K -generic.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -generic.menu.FlashSize.512K128.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K128.upload.maximum_size=368624 -generic.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -generic.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M0=1M (no SPIFFS) -generic.menu.FlashSize.1M0.build.flash_size=1M -generic.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -generic.menu.FlashSize.1M0.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M0.upload.maximum_size=1023984 -generic.menu.FlashSize.1M64=1M (64K SPIFFS) -generic.menu.FlashSize.1M64.build.flash_size=1M -generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -generic.menu.FlashSize.1M64.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M64.upload.maximum_size=958448 -generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M128=1M (128K SPIFFS) -generic.menu.FlashSize.1M128.build.flash_size=1M -generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -generic.menu.FlashSize.1M128.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M128.upload.maximum_size=892912 -generic.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M144=1M (144K SPIFFS) -generic.menu.FlashSize.1M144.build.flash_size=1M -generic.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -generic.menu.FlashSize.1M144.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M144.upload.maximum_size=876528 -generic.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -generic.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M160=1M (160K SPIFFS) -generic.menu.FlashSize.1M160.build.flash_size=1M -generic.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -generic.menu.FlashSize.1M160.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M160.upload.maximum_size=860144 -generic.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -generic.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M192=1M (192K SPIFFS) -generic.menu.FlashSize.1M192.build.flash_size=1M -generic.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -generic.menu.FlashSize.1M192.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M192.upload.maximum_size=827376 -generic.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -generic.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M256=1M (256K SPIFFS) -generic.menu.FlashSize.1M256.build.flash_size=1M -generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -generic.menu.FlashSize.1M256.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M256.upload.maximum_size=761840 -generic.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M512=1M (512K SPIFFS) -generic.menu.FlashSize.1M512.build.flash_size=1M -generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -generic.menu.FlashSize.1M512.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M512.upload.maximum_size=499696 -generic.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -generic.menu.FlashSize.2M=2M (1M SPIFFS) -generic.menu.FlashSize.2M.build.flash_size=2M -generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -generic.menu.FlashSize.2M.build.spiffs_pagesize=256 -generic.menu.FlashSize.2M.upload.maximum_size=1044464 -generic.menu.FlashSize.2M.build.spiffs_start=0x100000 -generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -generic.menu.FlashSize.2M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M1M=4M (1M SPIFFS) -generic.menu.FlashSize.4M1M.build.flash_size=4M -generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -generic.menu.FlashSize.4M1M.upload.maximum_size=1044464 -generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M3M=4M (3M SPIFFS) -generic.menu.FlashSize.4M3M.build.flash_size=4M -generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -generic.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 -generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.8M7M=8M (7M SPIFFS) -generic.menu.FlashSize.8M7M.build.flash_size=8M -generic.menu.FlashSize.8M7M.build.flash_ld=eagle.flash.8m.ld -generic.menu.FlashSize.8M7M.build.spiffs_pagesize=256 -generic.menu.FlashSize.8M7M.upload.maximum_size=1044464 -generic.menu.FlashSize.8M7M.build.spiffs_start=0x100000 -generic.menu.FlashSize.8M7M.build.spiffs_end=0x7FB000 -generic.menu.FlashSize.8M7M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.16M15M=16M (15M SPIFFS) -generic.menu.FlashSize.16M15M.build.flash_size=16M -generic.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld -generic.menu.FlashSize.16M15M.build.spiffs_pagesize=256 -generic.menu.FlashSize.16M15M.upload.maximum_size=1044464 -generic.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -generic.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 -generic.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -generic.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -generic.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -generic.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -generic.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -generic.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -generic.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -generic.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -generic.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -generic.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -generic.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -generic.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -generic.menu.LwIPVariant.OpenSource=v1.4 Open Source -generic.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -generic.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -generic.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -generic.menu.Debug.Disabled=Disabled -generic.menu.Debug.Disabled.build.debug_port= -generic.menu.Debug.Serial=Serial -generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -generic.menu.Debug.Serial1=Serial1 -generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -generic.menu.DebugLevel.None____=None -generic.menu.DebugLevel.None____.build.debug_level= -generic.menu.DebugLevel.SSL=SSL -generic.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -generic.menu.DebugLevel.TLS_MEM=TLS_MEM -generic.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -generic.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -generic.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -generic.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -generic.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -generic.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -generic.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.CORE=CORE -generic.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -generic.menu.DebugLevel.WIFI=WIFI -generic.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -generic.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -generic.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -generic.menu.DebugLevel.UPDATER=UPDATER -generic.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -generic.menu.DebugLevel.OTA=OTA -generic.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -generic.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -generic.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -generic.menu.UploadSpeed.115200=115200 -generic.menu.UploadSpeed.115200.upload.speed=115200 -generic.menu.UploadSpeed.9600=9600 -generic.menu.UploadSpeed.9600.upload.speed=9600 -generic.menu.UploadSpeed.57600=57600 -generic.menu.UploadSpeed.57600.upload.speed=57600 -generic.menu.UploadSpeed.230400.linux=230400 -generic.menu.UploadSpeed.230400.macosx=230400 -generic.menu.UploadSpeed.230400.upload.speed=230400 -generic.menu.UploadSpeed.256000.windows=256000 -generic.menu.UploadSpeed.256000.upload.speed=256000 -generic.menu.UploadSpeed.460800.linux=460800 -generic.menu.UploadSpeed.460800.macosx=460800 -generic.menu.UploadSpeed.460800.upload.speed=460800 -generic.menu.UploadSpeed.512000.windows=512000 -generic.menu.UploadSpeed.512000.upload.speed=512000 -generic.menu.UploadSpeed.921600=921600 -generic.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -esp8285.name=Generic ESP8285 Module -esp8285.build.board=ESP8266_ESP01 -esp8285.upload.tool=esptool -esp8285.upload.maximum_data_size=81920 -esp8285.upload.wait_for_upload_port=true -esp8285.serial.disableDTR=true -esp8285.serial.disableRTS=true -esp8285.build.mcu=esp8266 -esp8285.build.core=esp8266 -esp8285.build.variant=generic -esp8285.build.spiffs_pagesize=256 -esp8285.build.debug_port= -esp8285.build.debug_level= -esp8285.menu.CpuFrequency.80=80 MHz -esp8285.menu.CpuFrequency.80.build.f_cpu=80000000L -esp8285.menu.CpuFrequency.160=160 MHz -esp8285.menu.CpuFrequency.160.build.f_cpu=160000000L -esp8285.menu.ResetMethod.ck=ck -esp8285.menu.ResetMethod.ck.upload.resetmethod=ck -esp8285.menu.ResetMethod.nodemcu=nodemcu -esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -esp8285.menu.CrystalFreq.26=26 MHz -esp8285.menu.CrystalFreq.40=40 MHz -esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -esp8285.build.flash_mode=dout -esp8285.build.flash_freq=40 -esp8285.menu.FlashSize.1M0=1M (no SPIFFS) -esp8285.menu.FlashSize.1M0.build.flash_size=1M -esp8285.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -esp8285.menu.FlashSize.1M0.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M0.upload.maximum_size=1023984 -esp8285.menu.FlashSize.1M64=1M (64K SPIFFS) -esp8285.menu.FlashSize.1M64.build.flash_size=1M -esp8285.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -esp8285.menu.FlashSize.1M64.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M64.upload.maximum_size=958448 -esp8285.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -esp8285.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M128=1M (128K SPIFFS) -esp8285.menu.FlashSize.1M128.build.flash_size=1M -esp8285.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -esp8285.menu.FlashSize.1M128.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M128.upload.maximum_size=892912 -esp8285.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -esp8285.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M144=1M (144K SPIFFS) -esp8285.menu.FlashSize.1M144.build.flash_size=1M -esp8285.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -esp8285.menu.FlashSize.1M144.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M144.upload.maximum_size=876528 -esp8285.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -esp8285.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M160=1M (160K SPIFFS) -esp8285.menu.FlashSize.1M160.build.flash_size=1M -esp8285.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -esp8285.menu.FlashSize.1M160.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M160.upload.maximum_size=860144 -esp8285.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -esp8285.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M192=1M (192K SPIFFS) -esp8285.menu.FlashSize.1M192.build.flash_size=1M -esp8285.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -esp8285.menu.FlashSize.1M192.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M192.upload.maximum_size=827376 -esp8285.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -esp8285.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M256=1M (256K SPIFFS) -esp8285.menu.FlashSize.1M256.build.flash_size=1M -esp8285.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -esp8285.menu.FlashSize.1M256.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M256.upload.maximum_size=761840 -esp8285.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -esp8285.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M512=1M (512K SPIFFS) -esp8285.menu.FlashSize.1M512.build.flash_size=1M -esp8285.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -esp8285.menu.FlashSize.1M512.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 -esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -esp8285.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -esp8285.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -esp8285.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -esp8285.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -esp8285.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -esp8285.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -esp8285.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -esp8285.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp8285.menu.LwIPVariant.OpenSource=v1.4 Open Source -esp8285.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -esp8285.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -esp8285.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -esp8285.menu.Debug.Disabled=Disabled -esp8285.menu.Debug.Disabled.build.debug_port= -esp8285.menu.Debug.Serial=Serial -esp8285.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -esp8285.menu.Debug.Serial1=Serial1 -esp8285.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -esp8285.menu.DebugLevel.None____=None -esp8285.menu.DebugLevel.None____.build.debug_level= -esp8285.menu.DebugLevel.SSL=SSL -esp8285.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -esp8285.menu.DebugLevel.TLS_MEM=TLS_MEM -esp8285.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -esp8285.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -esp8285.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -esp8285.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -esp8285.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -esp8285.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.CORE=CORE -esp8285.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -esp8285.menu.DebugLevel.WIFI=WIFI -esp8285.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -esp8285.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -esp8285.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -esp8285.menu.DebugLevel.UPDATER=UPDATER -esp8285.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -esp8285.menu.DebugLevel.OTA=OTA -esp8285.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -esp8285.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -esp8285.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -esp8285.menu.UploadSpeed.115200=115200 -esp8285.menu.UploadSpeed.115200.upload.speed=115200 -esp8285.menu.UploadSpeed.9600=9600 -esp8285.menu.UploadSpeed.9600.upload.speed=9600 -esp8285.menu.UploadSpeed.57600=57600 -esp8285.menu.UploadSpeed.57600.upload.speed=57600 -esp8285.menu.UploadSpeed.230400.linux=230400 -esp8285.menu.UploadSpeed.230400.macosx=230400 -esp8285.menu.UploadSpeed.230400.upload.speed=230400 -esp8285.menu.UploadSpeed.256000.windows=256000 -esp8285.menu.UploadSpeed.256000.upload.speed=256000 -esp8285.menu.UploadSpeed.460800.linux=460800 -esp8285.menu.UploadSpeed.460800.macosx=460800 -esp8285.menu.UploadSpeed.460800.upload.speed=460800 -esp8285.menu.UploadSpeed.512000.windows=512000 -esp8285.menu.UploadSpeed.512000.upload.speed=512000 -esp8285.menu.UploadSpeed.921600=921600 -esp8285.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espduino.name=ESPDuino (ESP-13 Module) -espduino.build.board=ESP8266_ESP13 -espduino.build.variant=ESPDuino -espduino.menu.ResetMethod.v2=ESPduino-V2 -espduino.menu.ResetMethod.v2.upload.resetmethod=nodemcu -espduino.menu.ResetMethod.v1=ESPduino-V1 -espduino.menu.ResetMethod.v1.upload.resetmethod=ck -espduino.menu.UploadTool.esptool=Serial -espduino.menu.UploadTool.esptool.upload.tool=esptool -espduino.menu.UploadTool.esptool.upload.verbose=-vv -espduino.menu.UploadTool.espota=OTA -espduino.menu.UploadTool.espota.upload.tool=espota -espduino.upload.tool=esptool -espduino.upload.maximum_data_size=81920 -espduino.upload.wait_for_upload_port=true -espduino.serial.disableDTR=true -espduino.serial.disableRTS=true -espduino.build.mcu=esp8266 -espduino.build.core=esp8266 -espduino.build.spiffs_pagesize=256 -espduino.build.debug_port= -espduino.build.debug_level= -espduino.menu.CpuFrequency.80=80 MHz -espduino.menu.CpuFrequency.80.build.f_cpu=80000000L -espduino.menu.CpuFrequency.160=160 MHz -espduino.menu.CpuFrequency.160.build.f_cpu=160000000L -espduino.build.flash_mode=dio -espduino.build.flash_freq=40 -espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espduino.menu.FlashSize.4M1M.build.flash_size=4M -espduino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espduino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espduino.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espduino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espduino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espduino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espduino.menu.FlashSize.4M3M.build.flash_size=4M -espduino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espduino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espduino.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espduino.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -espduino.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espduino.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espduino.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espduino.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -espduino.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espduino.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espduino.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espduino.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -espduino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espduino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espduino.menu.LwIPVariant.OpenSource=v1.4 Open Source -espduino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espduino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espduino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espduino.menu.Debug.Disabled=Disabled -espduino.menu.Debug.Disabled.build.debug_port= -espduino.menu.Debug.Serial=Serial -espduino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espduino.menu.Debug.Serial1=Serial1 -espduino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espduino.menu.DebugLevel.None____=None -espduino.menu.DebugLevel.None____.build.debug_level= -espduino.menu.DebugLevel.SSL=SSL -espduino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espduino.menu.DebugLevel.TLS_MEM=TLS_MEM -espduino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espduino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espduino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espduino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espduino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espduino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espduino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.CORE=CORE -espduino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espduino.menu.DebugLevel.WIFI=WIFI -espduino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espduino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espduino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espduino.menu.DebugLevel.UPDATER=UPDATER -espduino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espduino.menu.DebugLevel.OTA=OTA -espduino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espduino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espduino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espduino.menu.UploadSpeed.115200=115200 -espduino.menu.UploadSpeed.115200.upload.speed=115200 -espduino.menu.UploadSpeed.9600=9600 -espduino.menu.UploadSpeed.9600.upload.speed=9600 -espduino.menu.UploadSpeed.57600=57600 -espduino.menu.UploadSpeed.57600.upload.speed=57600 -espduino.menu.UploadSpeed.230400.linux=230400 -espduino.menu.UploadSpeed.230400.macosx=230400 -espduino.menu.UploadSpeed.230400.upload.speed=230400 -espduino.menu.UploadSpeed.256000.windows=256000 -espduino.menu.UploadSpeed.256000.upload.speed=256000 -espduino.menu.UploadSpeed.460800.linux=460800 -espduino.menu.UploadSpeed.460800.macosx=460800 -espduino.menu.UploadSpeed.460800.upload.speed=460800 -espduino.menu.UploadSpeed.512000.windows=512000 -espduino.menu.UploadSpeed.512000.upload.speed=512000 -espduino.menu.UploadSpeed.921600=921600 -espduino.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -huzzah.name=Adafruit HUZZAH ESP8266 -huzzah.build.board=ESP8266_ESP12 -huzzah.build.variant=adafruit -huzzah.upload.tool=esptool -huzzah.upload.maximum_data_size=81920 -huzzah.upload.wait_for_upload_port=true -huzzah.serial.disableDTR=true -huzzah.serial.disableRTS=true -huzzah.build.mcu=esp8266 -huzzah.build.core=esp8266 -huzzah.build.spiffs_pagesize=256 -huzzah.build.debug_port= -huzzah.build.debug_level= -huzzah.menu.CpuFrequency.80=80 MHz -huzzah.menu.CpuFrequency.80.build.f_cpu=80000000L -huzzah.menu.CpuFrequency.160=160 MHz -huzzah.menu.CpuFrequency.160.build.f_cpu=160000000L -huzzah.upload.resetmethod=nodemcu -huzzah.build.flash_mode=qio -huzzah.build.flash_freq=40 -huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS) -huzzah.menu.FlashSize.4M1M.build.flash_size=4M -huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -huzzah.menu.FlashSize.4M1M.upload.maximum_size=1044464 -huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS) -huzzah.menu.FlashSize.4M3M.build.flash_size=4M -huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -huzzah.menu.FlashSize.4M3M.upload.maximum_size=1044464 -huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -huzzah.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -huzzah.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -huzzah.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -huzzah.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -huzzah.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -huzzah.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -huzzah.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -huzzah.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -huzzah.menu.LwIPVariant.OpenSource=v1.4 Open Source -huzzah.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -huzzah.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -huzzah.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -huzzah.menu.Debug.Disabled=Disabled -huzzah.menu.Debug.Disabled.build.debug_port= -huzzah.menu.Debug.Serial=Serial -huzzah.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -huzzah.menu.Debug.Serial1=Serial1 -huzzah.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -huzzah.menu.DebugLevel.None____=None -huzzah.menu.DebugLevel.None____.build.debug_level= -huzzah.menu.DebugLevel.SSL=SSL -huzzah.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -huzzah.menu.DebugLevel.TLS_MEM=TLS_MEM -huzzah.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -huzzah.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -huzzah.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -huzzah.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -huzzah.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -huzzah.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.CORE=CORE -huzzah.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -huzzah.menu.DebugLevel.WIFI=WIFI -huzzah.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -huzzah.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -huzzah.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -huzzah.menu.DebugLevel.UPDATER=UPDATER -huzzah.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -huzzah.menu.DebugLevel.OTA=OTA -huzzah.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -huzzah.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -huzzah.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -huzzah.menu.UploadSpeed.115200=115200 -huzzah.menu.UploadSpeed.115200.upload.speed=115200 -huzzah.menu.UploadSpeed.9600=9600 -huzzah.menu.UploadSpeed.9600.upload.speed=9600 -huzzah.menu.UploadSpeed.57600=57600 -huzzah.menu.UploadSpeed.57600.upload.speed=57600 -huzzah.menu.UploadSpeed.230400.linux=230400 -huzzah.menu.UploadSpeed.230400.macosx=230400 -huzzah.menu.UploadSpeed.230400.upload.speed=230400 -huzzah.menu.UploadSpeed.256000.windows=256000 -huzzah.menu.UploadSpeed.256000.upload.speed=256000 -huzzah.menu.UploadSpeed.460800.linux=460800 -huzzah.menu.UploadSpeed.460800.macosx=460800 -huzzah.menu.UploadSpeed.460800.upload.speed=460800 -huzzah.menu.UploadSpeed.512000.windows=512000 -huzzah.menu.UploadSpeed.512000.upload.speed=512000 -huzzah.menu.UploadSpeed.921600=921600 -huzzah.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espresso_lite_v1.name=ESPresso Lite 1.0 -espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 -espresso_lite_v1.build.variant=espresso_lite_v1 -espresso_lite_v1.upload.tool=esptool -espresso_lite_v1.upload.maximum_data_size=81920 -espresso_lite_v1.upload.wait_for_upload_port=true -espresso_lite_v1.serial.disableDTR=true -espresso_lite_v1.serial.disableRTS=true -espresso_lite_v1.build.mcu=esp8266 -espresso_lite_v1.build.core=esp8266 -espresso_lite_v1.build.spiffs_pagesize=256 -espresso_lite_v1.build.debug_port= -espresso_lite_v1.build.debug_level= -espresso_lite_v1.menu.CpuFrequency.80=80 MHz -espresso_lite_v1.menu.CpuFrequency.80.build.f_cpu=80000000L -espresso_lite_v1.menu.CpuFrequency.160=160 MHz -espresso_lite_v1.menu.CpuFrequency.160.build.f_cpu=160000000L -espresso_lite_v1.build.flash_mode=dio -espresso_lite_v1.build.flash_freq=40 -espresso_lite_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) -espresso_lite_v1.menu.FlashSize.4M1M.build.flash_size=4M -espresso_lite_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espresso_lite_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.ResetMethod.ck=ck -espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck -espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu -espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v1.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espresso_lite_v1.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espresso_lite_v1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v1.menu.LwIPVariant.OpenSource=v1.4 Open Source -espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espresso_lite_v1.menu.Debug.Disabled=Disabled -espresso_lite_v1.menu.Debug.Disabled.build.debug_port= -espresso_lite_v1.menu.Debug.Serial=Serial -espresso_lite_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espresso_lite_v1.menu.Debug.Serial1=Serial1 -espresso_lite_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espresso_lite_v1.menu.DebugLevel.None____=None -espresso_lite_v1.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v1.menu.DebugLevel.SSL=SSL -espresso_lite_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espresso_lite_v1.menu.DebugLevel.TLS_MEM=TLS_MEM -espresso_lite_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.CORE=CORE -espresso_lite_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espresso_lite_v1.menu.DebugLevel.WIFI=WIFI -espresso_lite_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.UPDATER=UPDATER -espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espresso_lite_v1.menu.DebugLevel.OTA=OTA -espresso_lite_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espresso_lite_v1.menu.UploadSpeed.115200=115200 -espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v1.menu.UploadSpeed.9600=9600 -espresso_lite_v1.menu.UploadSpeed.9600.upload.speed=9600 -espresso_lite_v1.menu.UploadSpeed.57600=57600 -espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v1.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v1.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v1.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v1.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v1.menu.UploadSpeed.921600=921600 -espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espresso_lite_v2.name=ESPresso Lite 2.0 -espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 -espresso_lite_v2.build.variant=espresso_lite_v2 -espresso_lite_v2.upload.tool=esptool -espresso_lite_v2.upload.maximum_data_size=81920 -espresso_lite_v2.upload.wait_for_upload_port=true -espresso_lite_v2.serial.disableDTR=true -espresso_lite_v2.serial.disableRTS=true -espresso_lite_v2.build.mcu=esp8266 -espresso_lite_v2.build.core=esp8266 -espresso_lite_v2.build.spiffs_pagesize=256 -espresso_lite_v2.build.debug_port= -espresso_lite_v2.build.debug_level= -espresso_lite_v2.menu.CpuFrequency.80=80 MHz -espresso_lite_v2.menu.CpuFrequency.80.build.f_cpu=80000000L -espresso_lite_v2.menu.CpuFrequency.160=160 MHz -espresso_lite_v2.menu.CpuFrequency.160.build.f_cpu=160000000L -espresso_lite_v2.build.flash_mode=dio -espresso_lite_v2.build.flash_freq=40 -espresso_lite_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) -espresso_lite_v2.menu.FlashSize.4M1M.build.flash_size=4M -espresso_lite_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espresso_lite_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.ResetMethod.ck=ck -espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck -espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu -espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v2.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espresso_lite_v2.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espresso_lite_v2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v2.menu.LwIPVariant.OpenSource=v1.4 Open Source -espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espresso_lite_v2.menu.Debug.Disabled=Disabled -espresso_lite_v2.menu.Debug.Disabled.build.debug_port= -espresso_lite_v2.menu.Debug.Serial=Serial -espresso_lite_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espresso_lite_v2.menu.Debug.Serial1=Serial1 -espresso_lite_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espresso_lite_v2.menu.DebugLevel.None____=None -espresso_lite_v2.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v2.menu.DebugLevel.SSL=SSL -espresso_lite_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espresso_lite_v2.menu.DebugLevel.TLS_MEM=TLS_MEM -espresso_lite_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.CORE=CORE -espresso_lite_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espresso_lite_v2.menu.DebugLevel.WIFI=WIFI -espresso_lite_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.UPDATER=UPDATER -espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espresso_lite_v2.menu.DebugLevel.OTA=OTA -espresso_lite_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espresso_lite_v2.menu.UploadSpeed.115200=115200 -espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v2.menu.UploadSpeed.9600=9600 -espresso_lite_v2.menu.UploadSpeed.9600.upload.speed=9600 -espresso_lite_v2.menu.UploadSpeed.57600=57600 -espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v2.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v2.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v2.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v2.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v2.menu.UploadSpeed.921600=921600 -espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -phoenix_v1.name=Phoenix 1.0 -phoenix_v1.build.board=ESP8266_PHOENIX_V1 -phoenix_v1.build.variant=phoenix_v1 -phoenix_v1.upload.tool=esptool -phoenix_v1.upload.maximum_data_size=81920 -phoenix_v1.upload.wait_for_upload_port=true -phoenix_v1.serial.disableDTR=true -phoenix_v1.serial.disableRTS=true -phoenix_v1.build.mcu=esp8266 -phoenix_v1.build.core=esp8266 -phoenix_v1.build.spiffs_pagesize=256 -phoenix_v1.build.debug_port= -phoenix_v1.build.debug_level= -phoenix_v1.menu.CpuFrequency.80=80 MHz -phoenix_v1.menu.CpuFrequency.80.build.f_cpu=80000000L -phoenix_v1.menu.CpuFrequency.160=160 MHz -phoenix_v1.menu.CpuFrequency.160.build.f_cpu=160000000L -phoenix_v1.build.flash_mode=dio -phoenix_v1.build.flash_freq=40 -phoenix_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) -phoenix_v1.menu.FlashSize.4M1M.build.flash_size=4M -phoenix_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v1.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -phoenix_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v1.menu.ResetMethod.ck=ck -phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck -phoenix_v1.menu.ResetMethod.nodemcu=nodemcu -phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v1.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -phoenix_v1.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -phoenix_v1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v1.menu.LwIPVariant.OpenSource=v1.4 Open Source -phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -phoenix_v1.menu.Debug.Disabled=Disabled -phoenix_v1.menu.Debug.Disabled.build.debug_port= -phoenix_v1.menu.Debug.Serial=Serial -phoenix_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -phoenix_v1.menu.Debug.Serial1=Serial1 -phoenix_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -phoenix_v1.menu.DebugLevel.None____=None -phoenix_v1.menu.DebugLevel.None____.build.debug_level= -phoenix_v1.menu.DebugLevel.SSL=SSL -phoenix_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -phoenix_v1.menu.DebugLevel.TLS_MEM=TLS_MEM -phoenix_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -phoenix_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -phoenix_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -phoenix_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.CORE=CORE -phoenix_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -phoenix_v1.menu.DebugLevel.WIFI=WIFI -phoenix_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -phoenix_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -phoenix_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -phoenix_v1.menu.DebugLevel.UPDATER=UPDATER -phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -phoenix_v1.menu.DebugLevel.OTA=OTA -phoenix_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -phoenix_v1.menu.UploadSpeed.115200=115200 -phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v1.menu.UploadSpeed.9600=9600 -phoenix_v1.menu.UploadSpeed.9600.upload.speed=9600 -phoenix_v1.menu.UploadSpeed.57600=57600 -phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v1.menu.UploadSpeed.230400.linux=230400 -phoenix_v1.menu.UploadSpeed.230400.macosx=230400 -phoenix_v1.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v1.menu.UploadSpeed.256000.windows=256000 -phoenix_v1.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v1.menu.UploadSpeed.460800.linux=460800 -phoenix_v1.menu.UploadSpeed.460800.macosx=460800 -phoenix_v1.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v1.menu.UploadSpeed.512000.windows=512000 -phoenix_v1.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v1.menu.UploadSpeed.921600=921600 -phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -phoenix_v2.name=Phoenix 2.0 -phoenix_v2.build.board=ESP8266_PHOENIX_V2 -phoenix_v2.build.variant=phoenix_v2 -phoenix_v2.upload.tool=esptool -phoenix_v2.upload.maximum_data_size=81920 -phoenix_v2.upload.wait_for_upload_port=true -phoenix_v2.serial.disableDTR=true -phoenix_v2.serial.disableRTS=true -phoenix_v2.build.mcu=esp8266 -phoenix_v2.build.core=esp8266 -phoenix_v2.build.spiffs_pagesize=256 -phoenix_v2.build.debug_port= -phoenix_v2.build.debug_level= -phoenix_v2.menu.CpuFrequency.80=80 MHz -phoenix_v2.menu.CpuFrequency.80.build.f_cpu=80000000L -phoenix_v2.menu.CpuFrequency.160=160 MHz -phoenix_v2.menu.CpuFrequency.160.build.f_cpu=160000000L -phoenix_v2.build.flash_mode=dio -phoenix_v2.build.flash_freq=40 -phoenix_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) -phoenix_v2.menu.FlashSize.4M1M.build.flash_size=4M -phoenix_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v2.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -phoenix_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v2.menu.ResetMethod.ck=ck -phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck -phoenix_v2.menu.ResetMethod.nodemcu=nodemcu -phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v2.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -phoenix_v2.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -phoenix_v2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v2.menu.LwIPVariant.OpenSource=v1.4 Open Source -phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -phoenix_v2.menu.Debug.Disabled=Disabled -phoenix_v2.menu.Debug.Disabled.build.debug_port= -phoenix_v2.menu.Debug.Serial=Serial -phoenix_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -phoenix_v2.menu.Debug.Serial1=Serial1 -phoenix_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -phoenix_v2.menu.DebugLevel.None____=None -phoenix_v2.menu.DebugLevel.None____.build.debug_level= -phoenix_v2.menu.DebugLevel.SSL=SSL -phoenix_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -phoenix_v2.menu.DebugLevel.TLS_MEM=TLS_MEM -phoenix_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -phoenix_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -phoenix_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -phoenix_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.CORE=CORE -phoenix_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -phoenix_v2.menu.DebugLevel.WIFI=WIFI -phoenix_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -phoenix_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -phoenix_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -phoenix_v2.menu.DebugLevel.UPDATER=UPDATER -phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -phoenix_v2.menu.DebugLevel.OTA=OTA -phoenix_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -phoenix_v2.menu.UploadSpeed.115200=115200 -phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v2.menu.UploadSpeed.9600=9600 -phoenix_v2.menu.UploadSpeed.9600.upload.speed=9600 -phoenix_v2.menu.UploadSpeed.57600=57600 -phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v2.menu.UploadSpeed.230400.linux=230400 -phoenix_v2.menu.UploadSpeed.230400.macosx=230400 -phoenix_v2.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v2.menu.UploadSpeed.256000.windows=256000 -phoenix_v2.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v2.menu.UploadSpeed.460800.linux=460800 -phoenix_v2.menu.UploadSpeed.460800.macosx=460800 -phoenix_v2.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v2.menu.UploadSpeed.512000.windows=512000 -phoenix_v2.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v2.menu.UploadSpeed.921600=921600 -phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -nodemcu.name=NodeMCU 0.9 (ESP-12 Module) -nodemcu.build.board=ESP8266_NODEMCU -nodemcu.build.variant=nodemcu -nodemcu.upload.tool=esptool -nodemcu.upload.maximum_data_size=81920 -nodemcu.upload.wait_for_upload_port=true -nodemcu.serial.disableDTR=true -nodemcu.serial.disableRTS=true -nodemcu.build.mcu=esp8266 -nodemcu.build.core=esp8266 -nodemcu.build.spiffs_pagesize=256 -nodemcu.build.debug_port= -nodemcu.build.debug_level= -nodemcu.menu.CpuFrequency.80=80 MHz -nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L -nodemcu.menu.CpuFrequency.160=160 MHz -nodemcu.menu.CpuFrequency.160.build.f_cpu=160000000L -nodemcu.upload.resetmethod=nodemcu -nodemcu.build.flash_mode=qio -nodemcu.build.flash_freq=40 -nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcu.menu.FlashSize.4M1M.build.flash_size=4M -nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -nodemcu.menu.FlashSize.4M1M.upload.maximum_size=1044464 -nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcu.menu.FlashSize.4M3M.build.flash_size=4M -nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -nodemcu.menu.FlashSize.4M3M.upload.maximum_size=1044464 -nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcu.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -nodemcu.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -nodemcu.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcu.menu.LwIPVariant.OpenSource=v1.4 Open Source -nodemcu.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -nodemcu.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcu.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -nodemcu.menu.Debug.Disabled=Disabled -nodemcu.menu.Debug.Disabled.build.debug_port= -nodemcu.menu.Debug.Serial=Serial -nodemcu.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -nodemcu.menu.Debug.Serial1=Serial1 -nodemcu.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -nodemcu.menu.DebugLevel.None____=None -nodemcu.menu.DebugLevel.None____.build.debug_level= -nodemcu.menu.DebugLevel.SSL=SSL -nodemcu.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -nodemcu.menu.DebugLevel.TLS_MEM=TLS_MEM -nodemcu.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -nodemcu.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -nodemcu.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -nodemcu.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -nodemcu.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.CORE=CORE -nodemcu.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -nodemcu.menu.DebugLevel.WIFI=WIFI -nodemcu.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -nodemcu.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -nodemcu.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -nodemcu.menu.DebugLevel.UPDATER=UPDATER -nodemcu.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -nodemcu.menu.DebugLevel.OTA=OTA -nodemcu.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -nodemcu.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcu.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -nodemcu.menu.UploadSpeed.115200=115200 -nodemcu.menu.UploadSpeed.115200.upload.speed=115200 -nodemcu.menu.UploadSpeed.9600=9600 -nodemcu.menu.UploadSpeed.9600.upload.speed=9600 -nodemcu.menu.UploadSpeed.57600=57600 -nodemcu.menu.UploadSpeed.57600.upload.speed=57600 -nodemcu.menu.UploadSpeed.230400.linux=230400 -nodemcu.menu.UploadSpeed.230400.macosx=230400 -nodemcu.menu.UploadSpeed.230400.upload.speed=230400 -nodemcu.menu.UploadSpeed.256000.windows=256000 -nodemcu.menu.UploadSpeed.256000.upload.speed=256000 -nodemcu.menu.UploadSpeed.460800.linux=460800 -nodemcu.menu.UploadSpeed.460800.macosx=460800 -nodemcu.menu.UploadSpeed.460800.upload.speed=460800 -nodemcu.menu.UploadSpeed.512000.windows=512000 -nodemcu.menu.UploadSpeed.512000.upload.speed=512000 -nodemcu.menu.UploadSpeed.921600=921600 -nodemcu.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module) -nodemcuv2.build.board=ESP8266_NODEMCU -nodemcuv2.build.variant=nodemcu -nodemcuv2.upload.tool=esptool -nodemcuv2.upload.maximum_data_size=81920 -nodemcuv2.upload.wait_for_upload_port=true -nodemcuv2.serial.disableDTR=true -nodemcuv2.serial.disableRTS=true -nodemcuv2.build.mcu=esp8266 -nodemcuv2.build.core=esp8266 -nodemcuv2.build.spiffs_pagesize=256 -nodemcuv2.build.debug_port= -nodemcuv2.build.debug_level= -nodemcuv2.menu.CpuFrequency.80=80 MHz -nodemcuv2.menu.CpuFrequency.80.build.f_cpu=80000000L -nodemcuv2.menu.CpuFrequency.160=160 MHz -nodemcuv2.menu.CpuFrequency.160.build.f_cpu=160000000L -nodemcuv2.upload.resetmethod=nodemcu -nodemcuv2.build.flash_mode=dio -nodemcuv2.build.flash_freq=40 -nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -nodemcuv2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -nodemcuv2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcuv2.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -nodemcuv2.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -nodemcuv2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcuv2.menu.LwIPVariant.OpenSource=v1.4 Open Source -nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcuv2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -nodemcuv2.menu.Debug.Disabled=Disabled -nodemcuv2.menu.Debug.Disabled.build.debug_port= -nodemcuv2.menu.Debug.Serial=Serial -nodemcuv2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -nodemcuv2.menu.Debug.Serial1=Serial1 -nodemcuv2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -nodemcuv2.menu.DebugLevel.None____=None -nodemcuv2.menu.DebugLevel.None____.build.debug_level= -nodemcuv2.menu.DebugLevel.SSL=SSL -nodemcuv2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -nodemcuv2.menu.DebugLevel.TLS_MEM=TLS_MEM -nodemcuv2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -nodemcuv2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -nodemcuv2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -nodemcuv2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.CORE=CORE -nodemcuv2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -nodemcuv2.menu.DebugLevel.WIFI=WIFI -nodemcuv2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -nodemcuv2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -nodemcuv2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -nodemcuv2.menu.DebugLevel.UPDATER=UPDATER -nodemcuv2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -nodemcuv2.menu.DebugLevel.OTA=OTA -nodemcuv2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -nodemcuv2.menu.UploadSpeed.115200=115200 -nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 -nodemcuv2.menu.UploadSpeed.9600=9600 -nodemcuv2.menu.UploadSpeed.9600.upload.speed=9600 -nodemcuv2.menu.UploadSpeed.57600=57600 -nodemcuv2.menu.UploadSpeed.57600.upload.speed=57600 -nodemcuv2.menu.UploadSpeed.230400.linux=230400 -nodemcuv2.menu.UploadSpeed.230400.macosx=230400 -nodemcuv2.menu.UploadSpeed.230400.upload.speed=230400 -nodemcuv2.menu.UploadSpeed.256000.windows=256000 -nodemcuv2.menu.UploadSpeed.256000.upload.speed=256000 -nodemcuv2.menu.UploadSpeed.460800.linux=460800 -nodemcuv2.menu.UploadSpeed.460800.macosx=460800 -nodemcuv2.menu.UploadSpeed.460800.upload.speed=460800 -nodemcuv2.menu.UploadSpeed.512000.windows=512000 -nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000 -nodemcuv2.menu.UploadSpeed.921600=921600 -nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) -modwifi.build.board=MOD_WIFI_ESP8266 -modwifi.upload.tool=esptool -modwifi.upload.maximum_data_size=81920 -modwifi.upload.wait_for_upload_port=true -modwifi.serial.disableDTR=true -modwifi.serial.disableRTS=true -modwifi.build.mcu=esp8266 -modwifi.build.core=esp8266 -modwifi.build.variant=generic -modwifi.build.spiffs_pagesize=256 -modwifi.build.debug_port= -modwifi.build.debug_level= -modwifi.menu.CpuFrequency.80=80 MHz -modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L -modwifi.menu.CpuFrequency.160=160 MHz -modwifi.menu.CpuFrequency.160.build.f_cpu=160000000L -modwifi.upload.resetmethod=ck -modwifi.build.flash_mode=qio -modwifi.build.flash_freq=40 -modwifi.menu.FlashSize.2M=2M (1M SPIFFS) -modwifi.menu.FlashSize.2M.build.flash_size=2M -modwifi.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -modwifi.menu.FlashSize.2M.build.spiffs_pagesize=256 -modwifi.menu.FlashSize.2M.upload.maximum_size=1044464 -modwifi.menu.FlashSize.2M.build.spiffs_start=0x100000 -modwifi.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -modwifi.menu.FlashSize.2M.build.spiffs_blocksize=8192 -modwifi.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -modwifi.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -modwifi.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -modwifi.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -modwifi.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -modwifi.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -modwifi.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -modwifi.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -modwifi.menu.LwIPVariant.OpenSource=v1.4 Open Source -modwifi.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -modwifi.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -modwifi.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -modwifi.menu.Debug.Disabled=Disabled -modwifi.menu.Debug.Disabled.build.debug_port= -modwifi.menu.Debug.Serial=Serial -modwifi.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -modwifi.menu.Debug.Serial1=Serial1 -modwifi.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -modwifi.menu.DebugLevel.None____=None -modwifi.menu.DebugLevel.None____.build.debug_level= -modwifi.menu.DebugLevel.SSL=SSL -modwifi.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -modwifi.menu.DebugLevel.TLS_MEM=TLS_MEM -modwifi.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -modwifi.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -modwifi.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -modwifi.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -modwifi.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -modwifi.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.CORE=CORE -modwifi.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -modwifi.menu.DebugLevel.WIFI=WIFI -modwifi.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -modwifi.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -modwifi.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -modwifi.menu.DebugLevel.UPDATER=UPDATER -modwifi.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -modwifi.menu.DebugLevel.OTA=OTA -modwifi.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -modwifi.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -modwifi.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -modwifi.menu.UploadSpeed.115200=115200 -modwifi.menu.UploadSpeed.115200.upload.speed=115200 -modwifi.menu.UploadSpeed.9600=9600 -modwifi.menu.UploadSpeed.9600.upload.speed=9600 -modwifi.menu.UploadSpeed.57600=57600 -modwifi.menu.UploadSpeed.57600.upload.speed=57600 -modwifi.menu.UploadSpeed.230400.linux=230400 -modwifi.menu.UploadSpeed.230400.macosx=230400 -modwifi.menu.UploadSpeed.230400.upload.speed=230400 -modwifi.menu.UploadSpeed.256000.windows=256000 -modwifi.menu.UploadSpeed.256000.upload.speed=256000 -modwifi.menu.UploadSpeed.460800.linux=460800 -modwifi.menu.UploadSpeed.460800.macosx=460800 -modwifi.menu.UploadSpeed.460800.upload.speed=460800 -modwifi.menu.UploadSpeed.512000.windows=512000 -modwifi.menu.UploadSpeed.512000.upload.speed=512000 -modwifi.menu.UploadSpeed.921600=921600 -modwifi.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -thing.name=SparkFun ESP8266 Thing -thing.build.board=ESP8266_THING -thing.build.variant=thing -thing.upload.tool=esptool -thing.upload.maximum_data_size=81920 -thing.upload.wait_for_upload_port=true -thing.serial.disableDTR=true -thing.serial.disableRTS=true -thing.build.mcu=esp8266 -thing.build.core=esp8266 -thing.build.spiffs_pagesize=256 -thing.build.debug_port= -thing.build.debug_level= -thing.menu.CpuFrequency.80=80 MHz -thing.menu.CpuFrequency.80.build.f_cpu=80000000L -thing.menu.CpuFrequency.160=160 MHz -thing.menu.CpuFrequency.160.build.f_cpu=160000000L -thing.upload.resetmethod=ck -thing.build.flash_mode=qio -thing.build.flash_freq=40 -thing.menu.FlashSize.512K0=512K (no SPIFFS) -thing.menu.FlashSize.512K0.build.flash_size=512K -thing.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -thing.menu.FlashSize.512K0.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K0.upload.maximum_size=499696 -thing.menu.FlashSize.512K64=512K (64K SPIFFS) -thing.menu.FlashSize.512K64.build.flash_size=512K -thing.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -thing.menu.FlashSize.512K64.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K64.upload.maximum_size=434160 -thing.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -thing.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -thing.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -thing.menu.FlashSize.512K128=512K (128K SPIFFS) -thing.menu.FlashSize.512K128.build.flash_size=512K -thing.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -thing.menu.FlashSize.512K128.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K128.upload.maximum_size=368624 -thing.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -thing.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -thing.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thing.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -thing.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -thing.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -thing.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -thing.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -thing.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -thing.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -thing.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -thing.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -thing.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -thing.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thing.menu.LwIPVariant.OpenSource=v1.4 Open Source -thing.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -thing.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -thing.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -thing.menu.Debug.Disabled=Disabled -thing.menu.Debug.Disabled.build.debug_port= -thing.menu.Debug.Serial=Serial -thing.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -thing.menu.Debug.Serial1=Serial1 -thing.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -thing.menu.DebugLevel.None____=None -thing.menu.DebugLevel.None____.build.debug_level= -thing.menu.DebugLevel.SSL=SSL -thing.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -thing.menu.DebugLevel.TLS_MEM=TLS_MEM -thing.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -thing.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -thing.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -thing.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -thing.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -thing.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -thing.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.CORE=CORE -thing.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -thing.menu.DebugLevel.WIFI=WIFI -thing.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -thing.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -thing.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -thing.menu.DebugLevel.UPDATER=UPDATER -thing.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -thing.menu.DebugLevel.OTA=OTA -thing.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -thing.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -thing.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -thing.menu.UploadSpeed.115200=115200 -thing.menu.UploadSpeed.115200.upload.speed=115200 -thing.menu.UploadSpeed.9600=9600 -thing.menu.UploadSpeed.9600.upload.speed=9600 -thing.menu.UploadSpeed.57600=57600 -thing.menu.UploadSpeed.57600.upload.speed=57600 -thing.menu.UploadSpeed.230400.linux=230400 -thing.menu.UploadSpeed.230400.macosx=230400 -thing.menu.UploadSpeed.230400.upload.speed=230400 -thing.menu.UploadSpeed.256000.windows=256000 -thing.menu.UploadSpeed.256000.upload.speed=256000 -thing.menu.UploadSpeed.460800.linux=460800 -thing.menu.UploadSpeed.460800.macosx=460800 -thing.menu.UploadSpeed.460800.upload.speed=460800 -thing.menu.UploadSpeed.512000.windows=512000 -thing.menu.UploadSpeed.512000.upload.speed=512000 -thing.menu.UploadSpeed.921600=921600 -thing.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -thingdev.name=SparkFun ESP8266 Thing Dev -thingdev.build.board=ESP8266_THING_DEV -thingdev.build.variant=thing -thingdev.upload.tool=esptool -thingdev.upload.maximum_data_size=81920 -thingdev.upload.wait_for_upload_port=true -thingdev.serial.disableDTR=true -thingdev.serial.disableRTS=true -thingdev.build.mcu=esp8266 -thingdev.build.core=esp8266 -thingdev.build.spiffs_pagesize=256 -thingdev.build.debug_port= -thingdev.build.debug_level= -thingdev.menu.CpuFrequency.80=80 MHz -thingdev.menu.CpuFrequency.80.build.f_cpu=80000000L -thingdev.menu.CpuFrequency.160=160 MHz -thingdev.menu.CpuFrequency.160.build.f_cpu=160000000L -thingdev.upload.resetmethod=nodemcu -thingdev.build.flash_mode=dio -thingdev.build.flash_freq=40 -thingdev.menu.FlashSize.512K0=512K (no SPIFFS) -thingdev.menu.FlashSize.512K0.build.flash_size=512K -thingdev.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -thingdev.menu.FlashSize.512K0.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K0.upload.maximum_size=499696 -thingdev.menu.FlashSize.512K64=512K (64K SPIFFS) -thingdev.menu.FlashSize.512K64.build.flash_size=512K -thingdev.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -thingdev.menu.FlashSize.512K64.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K64.upload.maximum_size=434160 -thingdev.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -thingdev.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -thingdev.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -thingdev.menu.FlashSize.512K128=512K (128K SPIFFS) -thingdev.menu.FlashSize.512K128.build.flash_size=512K -thingdev.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -thingdev.menu.FlashSize.512K128.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K128.upload.maximum_size=368624 -thingdev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -thingdev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -thingdev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thingdev.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -thingdev.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -thingdev.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -thingdev.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -thingdev.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -thingdev.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -thingdev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -thingdev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thingdev.menu.LwIPVariant.OpenSource=v1.4 Open Source -thingdev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -thingdev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -thingdev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -thingdev.menu.Debug.Disabled=Disabled -thingdev.menu.Debug.Disabled.build.debug_port= -thingdev.menu.Debug.Serial=Serial -thingdev.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -thingdev.menu.Debug.Serial1=Serial1 -thingdev.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -thingdev.menu.DebugLevel.None____=None -thingdev.menu.DebugLevel.None____.build.debug_level= -thingdev.menu.DebugLevel.SSL=SSL -thingdev.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -thingdev.menu.DebugLevel.TLS_MEM=TLS_MEM -thingdev.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -thingdev.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -thingdev.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -thingdev.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -thingdev.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -thingdev.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.CORE=CORE -thingdev.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -thingdev.menu.DebugLevel.WIFI=WIFI -thingdev.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -thingdev.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -thingdev.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -thingdev.menu.DebugLevel.UPDATER=UPDATER -thingdev.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -thingdev.menu.DebugLevel.OTA=OTA -thingdev.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -thingdev.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -thingdev.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -thingdev.menu.UploadSpeed.115200=115200 -thingdev.menu.UploadSpeed.115200.upload.speed=115200 -thingdev.menu.UploadSpeed.9600=9600 -thingdev.menu.UploadSpeed.9600.upload.speed=9600 -thingdev.menu.UploadSpeed.57600=57600 -thingdev.menu.UploadSpeed.57600.upload.speed=57600 -thingdev.menu.UploadSpeed.230400.linux=230400 -thingdev.menu.UploadSpeed.230400.macosx=230400 -thingdev.menu.UploadSpeed.230400.upload.speed=230400 -thingdev.menu.UploadSpeed.256000.windows=256000 -thingdev.menu.UploadSpeed.256000.upload.speed=256000 -thingdev.menu.UploadSpeed.460800.linux=460800 -thingdev.menu.UploadSpeed.460800.macosx=460800 -thingdev.menu.UploadSpeed.460800.upload.speed=460800 -thingdev.menu.UploadSpeed.512000.windows=512000 -thingdev.menu.UploadSpeed.512000.upload.speed=512000 -thingdev.menu.UploadSpeed.921600=921600 -thingdev.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -esp210.name=SweetPea ESP-210 -esp210.build.board=ESP8266_ESP210 -esp210.upload.tool=esptool -esp210.upload.maximum_data_size=81920 -esp210.upload.wait_for_upload_port=true -esp210.serial.disableDTR=true -esp210.serial.disableRTS=true -esp210.build.mcu=esp8266 -esp210.build.core=esp8266 -esp210.build.variant=generic -esp210.build.spiffs_pagesize=256 -esp210.build.debug_port= -esp210.build.debug_level= -esp210.menu.CpuFrequency.80=80 MHz -esp210.menu.CpuFrequency.80.build.f_cpu=80000000L -esp210.menu.CpuFrequency.160=160 MHz -esp210.menu.CpuFrequency.160.build.f_cpu=160000000L -esp210.upload.resetmethod=ck -esp210.build.flash_mode=qio -esp210.build.flash_freq=40 -esp210.menu.FlashSize.4M1M=4M (1M SPIFFS) -esp210.menu.FlashSize.4M1M.build.flash_size=4M -esp210.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -esp210.menu.FlashSize.4M1M.upload.maximum_size=1044464 -esp210.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -esp210.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -esp210.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -esp210.menu.FlashSize.4M3M=4M (3M SPIFFS) -esp210.menu.FlashSize.4M3M.build.flash_size=4M -esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -esp210.menu.FlashSize.4M3M.upload.maximum_size=1044464 -esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -esp210.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -esp210.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -esp210.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -esp210.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -esp210.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -esp210.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -esp210.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -esp210.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -esp210.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -esp210.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -esp210.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp210.menu.LwIPVariant.OpenSource=v1.4 Open Source -esp210.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -esp210.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -esp210.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -esp210.menu.Debug.Disabled=Disabled -esp210.menu.Debug.Disabled.build.debug_port= -esp210.menu.Debug.Serial=Serial -esp210.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -esp210.menu.Debug.Serial1=Serial1 -esp210.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -esp210.menu.DebugLevel.None____=None -esp210.menu.DebugLevel.None____.build.debug_level= -esp210.menu.DebugLevel.SSL=SSL -esp210.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -esp210.menu.DebugLevel.TLS_MEM=TLS_MEM -esp210.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -esp210.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -esp210.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -esp210.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -esp210.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -esp210.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -esp210.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.CORE=CORE -esp210.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -esp210.menu.DebugLevel.WIFI=WIFI -esp210.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -esp210.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -esp210.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -esp210.menu.DebugLevel.UPDATER=UPDATER -esp210.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -esp210.menu.DebugLevel.OTA=OTA -esp210.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -esp210.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -esp210.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -esp210.menu.UploadSpeed.57600=57600 -esp210.menu.UploadSpeed.57600.upload.speed=57600 -esp210.menu.UploadSpeed.9600=9600 -esp210.menu.UploadSpeed.9600.upload.speed=9600 -esp210.menu.UploadSpeed.115200=115200 -esp210.menu.UploadSpeed.115200.upload.speed=115200 -esp210.menu.UploadSpeed.230400.linux=230400 -esp210.menu.UploadSpeed.230400.macosx=230400 -esp210.menu.UploadSpeed.230400.upload.speed=230400 -esp210.menu.UploadSpeed.256000.windows=256000 -esp210.menu.UploadSpeed.256000.upload.speed=256000 -esp210.menu.UploadSpeed.460800.linux=460800 -esp210.menu.UploadSpeed.460800.macosx=460800 -esp210.menu.UploadSpeed.460800.upload.speed=460800 -esp210.menu.UploadSpeed.512000.windows=512000 -esp210.menu.UploadSpeed.512000.upload.speed=512000 -esp210.menu.UploadSpeed.921600=921600 -esp210.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -d1_mini.name=WeMos D1 R2 & mini -d1_mini.build.board=ESP8266_WEMOS_D1MINI -d1_mini.build.variant=d1_mini -d1_mini.upload.tool=esptool -d1_mini.upload.maximum_data_size=81920 -d1_mini.upload.wait_for_upload_port=true -d1_mini.serial.disableDTR=true -d1_mini.serial.disableRTS=true -d1_mini.build.mcu=esp8266 -d1_mini.build.core=esp8266 -d1_mini.build.spiffs_pagesize=256 -d1_mini.build.debug_port= -d1_mini.build.debug_level= -d1_mini.menu.CpuFrequency.80=80 MHz -d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini.menu.CpuFrequency.160=160 MHz -d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini.upload.resetmethod=nodemcu -d1_mini.build.flash_mode=dio -d1_mini.build.flash_freq=40 -d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1_mini.menu.FlashSize.4M1M.build.flash_size=4M -d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -d1_mini.menu.FlashSize.4M1M.upload.maximum_size=1044464 -d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1_mini.menu.FlashSize.4M3M.build.flash_size=4M -d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -d1_mini.menu.FlashSize.4M3M.upload.maximum_size=1044464 -d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1_mini.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini.menu.LwIPVariant.OpenSource=v1.4 Open Source -d1_mini.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini.menu.Debug.Disabled=Disabled -d1_mini.menu.Debug.Disabled.build.debug_port= -d1_mini.menu.Debug.Serial=Serial -d1_mini.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini.menu.Debug.Serial1=Serial1 -d1_mini.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini.menu.DebugLevel.None____=None -d1_mini.menu.DebugLevel.None____.build.debug_level= -d1_mini.menu.DebugLevel.SSL=SSL -d1_mini.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.CORE=CORE -d1_mini.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini.menu.DebugLevel.WIFI=WIFI -d1_mini.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini.menu.DebugLevel.UPDATER=UPDATER -d1_mini.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini.menu.DebugLevel.OTA=OTA -d1_mini.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini.menu.UploadSpeed.921600=921600 -d1_mini.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini.menu.UploadSpeed.9600=9600 -d1_mini.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini.menu.UploadSpeed.57600=57600 -d1_mini.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini.menu.UploadSpeed.115200=115200 -d1_mini.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini.menu.UploadSpeed.230400.linux=230400 -d1_mini.menu.UploadSpeed.230400.macosx=230400 -d1_mini.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini.menu.UploadSpeed.256000.windows=256000 -d1_mini.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini.menu.UploadSpeed.460800.linux=460800 -d1_mini.menu.UploadSpeed.460800.macosx=460800 -d1_mini.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini.menu.UploadSpeed.512000.windows=512000 -d1_mini.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1_mini_pro.name=WeMos D1 mini Pro -d1_mini_pro.build.board=ESP8266_WEMOS_D1MINIPRO -d1_mini_pro.build.variant=d1_mini -d1_mini_pro.upload.tool=esptool -d1_mini_pro.upload.maximum_data_size=81920 -d1_mini_pro.upload.wait_for_upload_port=true -d1_mini_pro.serial.disableDTR=true -d1_mini_pro.serial.disableRTS=true -d1_mini_pro.build.mcu=esp8266 -d1_mini_pro.build.core=esp8266 -d1_mini_pro.build.spiffs_pagesize=256 -d1_mini_pro.build.debug_port= -d1_mini_pro.build.debug_level= -d1_mini_pro.menu.CpuFrequency.80=80 MHz -d1_mini_pro.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini_pro.menu.CpuFrequency.160=160 MHz -d1_mini_pro.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini_pro.upload.resetmethod=nodemcu -d1_mini_pro.build.flash_mode=dio -d1_mini_pro.build.flash_freq=40 -d1_mini_pro.menu.FlashSize.16M15M=16M (15M SPIFFS) -d1_mini_pro.menu.FlashSize.16M15M.build.flash_size=16M -d1_mini_pro.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_pagesize=256 -d1_mini_pro.menu.FlashSize.16M15M.upload.maximum_size=1044464 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -d1_mini_pro.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini_pro.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini_pro.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_pro.menu.LwIPVariant.OpenSource=v1.4 Open Source -d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_pro.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini_pro.menu.Debug.Disabled=Disabled -d1_mini_pro.menu.Debug.Disabled.build.debug_port= -d1_mini_pro.menu.Debug.Serial=Serial -d1_mini_pro.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini_pro.menu.Debug.Serial1=Serial1 -d1_mini_pro.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini_pro.menu.DebugLevel.None____=None -d1_mini_pro.menu.DebugLevel.None____.build.debug_level= -d1_mini_pro.menu.DebugLevel.SSL=SSL -d1_mini_pro.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini_pro.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini_pro.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini_pro.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini_pro.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.CORE=CORE -d1_mini_pro.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini_pro.menu.DebugLevel.WIFI=WIFI -d1_mini_pro.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini_pro.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini_pro.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini_pro.menu.DebugLevel.UPDATER=UPDATER -d1_mini_pro.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini_pro.menu.DebugLevel.OTA=OTA -d1_mini_pro.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini_pro.menu.UploadSpeed.921600=921600 -d1_mini_pro.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini_pro.menu.UploadSpeed.9600=9600 -d1_mini_pro.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini_pro.menu.UploadSpeed.57600=57600 -d1_mini_pro.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini_pro.menu.UploadSpeed.115200=115200 -d1_mini_pro.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini_pro.menu.UploadSpeed.230400.linux=230400 -d1_mini_pro.menu.UploadSpeed.230400.macosx=230400 -d1_mini_pro.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini_pro.menu.UploadSpeed.256000.windows=256000 -d1_mini_pro.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini_pro.menu.UploadSpeed.460800.linux=460800 -d1_mini_pro.menu.UploadSpeed.460800.macosx=460800 -d1_mini_pro.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini_pro.menu.UploadSpeed.512000.windows=512000 -d1_mini_pro.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1_mini_lite.name=Wemos D1 mini Lite -d1_mini_lite.build.board=ESP8266_WEMOS_D1MINILITE -d1_mini_lite.build.variant=d1_mini -d1_mini_lite.upload.tool=esptool -d1_mini_lite.upload.maximum_data_size=81920 -d1_mini_lite.upload.wait_for_upload_port=true -d1_mini_lite.serial.disableDTR=true -d1_mini_lite.serial.disableRTS=true -d1_mini_lite.build.mcu=esp8266 -d1_mini_lite.build.core=esp8266 -d1_mini_lite.build.spiffs_pagesize=256 -d1_mini_lite.build.debug_port= -d1_mini_lite.build.debug_level= -d1_mini_lite.menu.CpuFrequency.80=80 MHz -d1_mini_lite.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini_lite.menu.CpuFrequency.160=160 MHz -d1_mini_lite.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini_lite.upload.resetmethod=nodemcu -d1_mini_lite.build.flash_mode=dout -d1_mini_lite.build.flash_freq=40 -d1_mini_lite.menu.FlashSize.1M0=1M (no SPIFFS) -d1_mini_lite.menu.FlashSize.1M0.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -d1_mini_lite.menu.FlashSize.1M0.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M0.upload.maximum_size=1023984 -d1_mini_lite.menu.FlashSize.1M64=1M (64K SPIFFS) -d1_mini_lite.menu.FlashSize.1M64.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M64.upload.maximum_size=958448 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M128=1M (128K SPIFFS) -d1_mini_lite.menu.FlashSize.1M128.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M128.upload.maximum_size=892912 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M144=1M (144K SPIFFS) -d1_mini_lite.menu.FlashSize.1M144.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M144.upload.maximum_size=876528 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M160=1M (160K SPIFFS) -d1_mini_lite.menu.FlashSize.1M160.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M160.upload.maximum_size=860144 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M192=1M (192K SPIFFS) -d1_mini_lite.menu.FlashSize.1M192.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M192.upload.maximum_size=827376 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M256=1M (256K SPIFFS) -d1_mini_lite.menu.FlashSize.1M256.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M256.upload.maximum_size=761840 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M512=1M (512K SPIFFS) -d1_mini_lite.menu.FlashSize.1M512.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M512.upload.maximum_size=499696 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -d1_mini_lite.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini_lite.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini_lite.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_lite.menu.LwIPVariant.OpenSource=v1.4 Open Source -d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_lite.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini_lite.menu.Debug.Disabled=Disabled -d1_mini_lite.menu.Debug.Disabled.build.debug_port= -d1_mini_lite.menu.Debug.Serial=Serial -d1_mini_lite.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini_lite.menu.Debug.Serial1=Serial1 -d1_mini_lite.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini_lite.menu.DebugLevel.None____=None -d1_mini_lite.menu.DebugLevel.None____.build.debug_level= -d1_mini_lite.menu.DebugLevel.SSL=SSL -d1_mini_lite.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini_lite.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini_lite.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini_lite.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini_lite.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.CORE=CORE -d1_mini_lite.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini_lite.menu.DebugLevel.WIFI=WIFI -d1_mini_lite.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini_lite.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini_lite.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini_lite.menu.DebugLevel.UPDATER=UPDATER -d1_mini_lite.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini_lite.menu.DebugLevel.OTA=OTA -d1_mini_lite.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini_lite.menu.UploadSpeed.921600=921600 -d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini_lite.menu.UploadSpeed.9600=9600 -d1_mini_lite.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini_lite.menu.UploadSpeed.57600=57600 -d1_mini_lite.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini_lite.menu.UploadSpeed.115200=115200 -d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini_lite.menu.UploadSpeed.230400.linux=230400 -d1_mini_lite.menu.UploadSpeed.230400.macosx=230400 -d1_mini_lite.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini_lite.menu.UploadSpeed.256000.windows=256000 -d1_mini_lite.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini_lite.menu.UploadSpeed.460800.linux=460800 -d1_mini_lite.menu.UploadSpeed.460800.macosx=460800 -d1_mini_lite.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini_lite.menu.UploadSpeed.512000.windows=512000 -d1_mini_lite.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1.name=WeMos D1 R1 -d1.build.board=ESP8266_WEMOS_D1MINI -d1.build.variant=d1 -d1.upload.tool=esptool -d1.upload.maximum_data_size=81920 -d1.upload.wait_for_upload_port=true -d1.serial.disableDTR=true -d1.serial.disableRTS=true -d1.build.mcu=esp8266 -d1.build.core=esp8266 -d1.build.spiffs_pagesize=256 -d1.build.debug_port= -d1.build.debug_level= -d1.menu.CpuFrequency.80=80 MHz -d1.menu.CpuFrequency.80.build.f_cpu=80000000L -d1.menu.CpuFrequency.160=160 MHz -d1.menu.CpuFrequency.160.build.f_cpu=160000000L -d1.upload.resetmethod=nodemcu -d1.build.flash_mode=dio -d1.build.flash_freq=40 -d1.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1.menu.FlashSize.4M1M.build.flash_size=4M -d1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -d1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -d1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1.menu.FlashSize.4M3M.build.flash_size=4M -d1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -d1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -d1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -d1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -d1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1.menu.LwIPVariant.OpenSource=v1.4 Open Source -d1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1.menu.Debug.Disabled=Disabled -d1.menu.Debug.Disabled.build.debug_port= -d1.menu.Debug.Serial=Serial -d1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1.menu.Debug.Serial1=Serial1 -d1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1.menu.DebugLevel.None____=None -d1.menu.DebugLevel.None____.build.debug_level= -d1.menu.DebugLevel.SSL=SSL -d1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1.menu.DebugLevel.TLS_MEM=TLS_MEM -d1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.CORE=CORE -d1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1.menu.DebugLevel.WIFI=WIFI -d1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1.menu.DebugLevel.UPDATER=UPDATER -d1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1.menu.DebugLevel.OTA=OTA -d1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -d1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1.menu.UploadSpeed.921600=921600 -d1.menu.UploadSpeed.921600.upload.speed=921600 -d1.menu.UploadSpeed.9600=9600 -d1.menu.UploadSpeed.9600.upload.speed=9600 -d1.menu.UploadSpeed.57600=57600 -d1.menu.UploadSpeed.57600.upload.speed=57600 -d1.menu.UploadSpeed.115200=115200 -d1.menu.UploadSpeed.115200.upload.speed=115200 -d1.menu.UploadSpeed.230400.linux=230400 -d1.menu.UploadSpeed.230400.macosx=230400 -d1.menu.UploadSpeed.230400.upload.speed=230400 -d1.menu.UploadSpeed.256000.windows=256000 -d1.menu.UploadSpeed.256000.upload.speed=256000 -d1.menu.UploadSpeed.460800.linux=460800 -d1.menu.UploadSpeed.460800.macosx=460800 -d1.menu.UploadSpeed.460800.upload.speed=460800 -d1.menu.UploadSpeed.512000.windows=512000 -d1.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -espino.name=ESPino (ESP-12 Module) -espino.build.board=ESP8266_ESP12 -espino.build.variant=espino -espino.upload.tool=esptool -espino.upload.maximum_data_size=81920 -espino.upload.wait_for_upload_port=true -espino.serial.disableDTR=true -espino.serial.disableRTS=true -espino.build.mcu=esp8266 -espino.build.core=esp8266 -espino.build.spiffs_pagesize=256 -espino.build.debug_port= -espino.build.debug_level= -espino.menu.CpuFrequency.80=80 MHz -espino.menu.CpuFrequency.80.build.f_cpu=80000000L -espino.menu.CpuFrequency.160=160 MHz -espino.menu.CpuFrequency.160.build.f_cpu=160000000L -espino.menu.ResetMethod.ck=ck -espino.menu.ResetMethod.ck.upload.resetmethod=ck -espino.menu.ResetMethod.nodemcu=nodemcu -espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espino.build.flash_mode=qio -espino.build.flash_freq=40 -espino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espino.menu.FlashSize.4M1M.build.flash_size=4M -espino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espino.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espino.menu.FlashSize.4M3M.build.flash_size=4M -espino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espino.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -espino.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espino.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espino.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espino.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -espino.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espino.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espino.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espino.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -espino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espino.menu.LwIPVariant.OpenSource=v1.4 Open Source -espino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espino.menu.Debug.Disabled=Disabled -espino.menu.Debug.Disabled.build.debug_port= -espino.menu.Debug.Serial=Serial -espino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espino.menu.Debug.Serial1=Serial1 -espino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espino.menu.DebugLevel.None____=None -espino.menu.DebugLevel.None____.build.debug_level= -espino.menu.DebugLevel.SSL=SSL -espino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espino.menu.DebugLevel.TLS_MEM=TLS_MEM -espino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.CORE=CORE -espino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espino.menu.DebugLevel.WIFI=WIFI -espino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espino.menu.DebugLevel.UPDATER=UPDATER -espino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espino.menu.DebugLevel.OTA=OTA -espino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espino.menu.UploadSpeed.115200=115200 -espino.menu.UploadSpeed.115200.upload.speed=115200 -espino.menu.UploadSpeed.9600=9600 -espino.menu.UploadSpeed.9600.upload.speed=9600 -espino.menu.UploadSpeed.57600=57600 -espino.menu.UploadSpeed.57600.upload.speed=57600 -espino.menu.UploadSpeed.230400.linux=230400 -espino.menu.UploadSpeed.230400.macosx=230400 -espino.menu.UploadSpeed.230400.upload.speed=230400 -espino.menu.UploadSpeed.256000.windows=256000 -espino.menu.UploadSpeed.256000.upload.speed=256000 -espino.menu.UploadSpeed.460800.linux=460800 -espino.menu.UploadSpeed.460800.macosx=460800 -espino.menu.UploadSpeed.460800.upload.speed=460800 -espino.menu.UploadSpeed.512000.windows=512000 -espino.menu.UploadSpeed.512000.upload.speed=512000 -espino.menu.UploadSpeed.921600=921600 -espino.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espinotee.name=ThaiEasyElec's ESPino -espinotee.build.board=ESP8266_ESP13 -espinotee.build.variant=espinotee -espinotee.upload.tool=esptool -espinotee.upload.maximum_data_size=81920 -espinotee.upload.wait_for_upload_port=true -espinotee.serial.disableDTR=true -espinotee.serial.disableRTS=true -espinotee.build.mcu=esp8266 -espinotee.build.core=esp8266 -espinotee.build.spiffs_pagesize=256 -espinotee.build.debug_port= -espinotee.build.debug_level= -espinotee.menu.CpuFrequency.80=80 MHz -espinotee.menu.CpuFrequency.80.build.f_cpu=80000000L -espinotee.menu.CpuFrequency.160=160 MHz -espinotee.menu.CpuFrequency.160.build.f_cpu=160000000L -espinotee.upload.resetmethod=nodemcu -espinotee.build.flash_mode=qio -espinotee.build.flash_freq=40 -espinotee.menu.FlashSize.4M1M=4M (1M SPIFFS) -espinotee.menu.FlashSize.4M1M.build.flash_size=4M -espinotee.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espinotee.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espinotee.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espinotee.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espinotee.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espinotee.menu.FlashSize.4M3M=4M (3M SPIFFS) -espinotee.menu.FlashSize.4M3M.build.flash_size=4M -espinotee.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espinotee.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espinotee.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espinotee.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -espinotee.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espinotee.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espinotee.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espinotee.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espinotee.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -espinotee.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espinotee.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espinotee.menu.LwIPVariant.OpenSource=v1.4 Open Source -espinotee.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espinotee.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espinotee.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espinotee.menu.Debug.Disabled=Disabled -espinotee.menu.Debug.Disabled.build.debug_port= -espinotee.menu.Debug.Serial=Serial -espinotee.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espinotee.menu.Debug.Serial1=Serial1 -espinotee.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espinotee.menu.DebugLevel.None____=None -espinotee.menu.DebugLevel.None____.build.debug_level= -espinotee.menu.DebugLevel.SSL=SSL -espinotee.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espinotee.menu.DebugLevel.TLS_MEM=TLS_MEM -espinotee.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espinotee.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espinotee.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espinotee.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espinotee.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espinotee.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.CORE=CORE -espinotee.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espinotee.menu.DebugLevel.WIFI=WIFI -espinotee.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espinotee.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espinotee.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espinotee.menu.DebugLevel.UPDATER=UPDATER -espinotee.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espinotee.menu.DebugLevel.OTA=OTA -espinotee.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -espinotee.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espinotee.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espinotee.menu.UploadSpeed.115200=115200 -espinotee.menu.UploadSpeed.115200.upload.speed=115200 -espinotee.menu.UploadSpeed.9600=9600 -espinotee.menu.UploadSpeed.9600.upload.speed=9600 -espinotee.menu.UploadSpeed.57600=57600 -espinotee.menu.UploadSpeed.57600.upload.speed=57600 -espinotee.menu.UploadSpeed.230400.linux=230400 -espinotee.menu.UploadSpeed.230400.macosx=230400 -espinotee.menu.UploadSpeed.230400.upload.speed=230400 -espinotee.menu.UploadSpeed.256000.windows=256000 -espinotee.menu.UploadSpeed.256000.upload.speed=256000 -espinotee.menu.UploadSpeed.460800.linux=460800 -espinotee.menu.UploadSpeed.460800.macosx=460800 -espinotee.menu.UploadSpeed.460800.upload.speed=460800 -espinotee.menu.UploadSpeed.512000.windows=512000 -espinotee.menu.UploadSpeed.512000.upload.speed=512000 -espinotee.menu.UploadSpeed.921600=921600 -espinotee.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -wifinfo.name=WifInfo -wifinfo.menu.ESPModule.ESP12.build.board=ESP8266_ESP12 -wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464 -wifinfo.menu.ESPModule.ESP12.build.spiffs_pagesize=256 -wifinfo.menu.ESPModule.ESP12.build.flash_ld=eagle.flash.4m1m.ld -wifinfo.menu.ESPModule.ESP07192.build.spiffs_blocksize=4096 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_end=0xFB000 -wifinfo.menu.ESPModule.ESP12=ESP12 (4M/1M SPIFFS) -wifinfo.menu.ESPModule.ESP12.build.spiffs_start=0x300000 -wifinfo.menu.ESPModule.ESP12.build.spiffs_end=0x3FB000 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_start=0xCB000 -wifinfo.menu.ESPModule.ESP07192.build.board=ESP8266_ESP07 -wifinfo.menu.ESPModule.ESP12.build.spiffs_blocksize=8192 -wifinfo.menu.ESPModule.ESP12.build.flash_size=4M -wifinfo.build.board=WIFINFO -wifinfo.build.variant=wifinfo -wifinfo.menu.ESPModule.ESP07192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M -wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) -wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 -wifinfo.upload.tool=esptool -wifinfo.upload.maximum_data_size=81920 -wifinfo.upload.wait_for_upload_port=true -wifinfo.serial.disableDTR=true -wifinfo.serial.disableRTS=true -wifinfo.build.mcu=esp8266 -wifinfo.build.core=esp8266 -wifinfo.build.spiffs_pagesize=256 -wifinfo.build.debug_port= -wifinfo.build.debug_level= -wifinfo.menu.CpuFrequency.80=80 MHz -wifinfo.menu.CpuFrequency.80.build.f_cpu=80000000L -wifinfo.menu.CpuFrequency.160=160 MHz -wifinfo.menu.CpuFrequency.160.build.f_cpu=160000000L -wifinfo.build.flash_mode=qio -wifinfo.menu.FlashFreq.40=40MHz -wifinfo.menu.FlashFreq.40.build.flash_freq=40 -wifinfo.menu.FlashFreq.80=80MHz -wifinfo.menu.FlashFreq.80.build.flash_freq=80 -wifinfo.menu.FlashSize.1M0=1M (no SPIFFS) -wifinfo.menu.FlashSize.1M0.build.flash_size=1M -wifinfo.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -wifinfo.menu.FlashSize.1M0.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M0.upload.maximum_size=1023984 -wifinfo.menu.FlashSize.1M64=1M (64K SPIFFS) -wifinfo.menu.FlashSize.1M64.build.flash_size=1M -wifinfo.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -wifinfo.menu.FlashSize.1M64.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M64.upload.maximum_size=958448 -wifinfo.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -wifinfo.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M128=1M (128K SPIFFS) -wifinfo.menu.FlashSize.1M128.build.flash_size=1M -wifinfo.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -wifinfo.menu.FlashSize.1M128.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M128.upload.maximum_size=892912 -wifinfo.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -wifinfo.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M144=1M (144K SPIFFS) -wifinfo.menu.FlashSize.1M144.build.flash_size=1M -wifinfo.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -wifinfo.menu.FlashSize.1M144.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M144.upload.maximum_size=876528 -wifinfo.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -wifinfo.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M160=1M (160K SPIFFS) -wifinfo.menu.FlashSize.1M160.build.flash_size=1M -wifinfo.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -wifinfo.menu.FlashSize.1M160.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M160.upload.maximum_size=860144 -wifinfo.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -wifinfo.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M192=1M (192K SPIFFS) -wifinfo.menu.FlashSize.1M192.build.flash_size=1M -wifinfo.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.FlashSize.1M192.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M192.upload.maximum_size=827376 -wifinfo.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -wifinfo.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M256=1M (256K SPIFFS) -wifinfo.menu.FlashSize.1M256.build.flash_size=1M -wifinfo.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -wifinfo.menu.FlashSize.1M256.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M256.upload.maximum_size=761840 -wifinfo.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -wifinfo.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M512=1M (512K SPIFFS) -wifinfo.menu.FlashSize.1M512.build.flash_size=1M -wifinfo.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -wifinfo.menu.FlashSize.1M512.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M512.upload.maximum_size=499696 -wifinfo.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -wifinfo.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -wifinfo.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -wifinfo.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -wifinfo.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -wifinfo.menu.LwIPVariant.OpenSource=v1.4 Open Source -wifinfo.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -wifinfo.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -wifinfo.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -wifinfo.menu.Debug.Disabled=Disabled -wifinfo.menu.Debug.Disabled.build.debug_port= -wifinfo.menu.Debug.Serial=Serial -wifinfo.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -wifinfo.menu.Debug.Serial1=Serial1 -wifinfo.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -wifinfo.menu.DebugLevel.None____=None -wifinfo.menu.DebugLevel.None____.build.debug_level= -wifinfo.menu.DebugLevel.SSL=SSL -wifinfo.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -wifinfo.menu.DebugLevel.TLS_MEM=TLS_MEM -wifinfo.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -wifinfo.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -wifinfo.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -wifinfo.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -wifinfo.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.CORE=CORE -wifinfo.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -wifinfo.menu.DebugLevel.WIFI=WIFI -wifinfo.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -wifinfo.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -wifinfo.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -wifinfo.menu.DebugLevel.UPDATER=UPDATER -wifinfo.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -wifinfo.menu.DebugLevel.OTA=OTA -wifinfo.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -wifinfo.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -wifinfo.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -wifinfo.menu.UploadSpeed.115200=115200 -wifinfo.menu.UploadSpeed.115200.upload.speed=115200 -wifinfo.menu.UploadSpeed.9600=9600 -wifinfo.menu.UploadSpeed.9600.upload.speed=9600 -wifinfo.menu.UploadSpeed.57600=57600 -wifinfo.menu.UploadSpeed.57600.upload.speed=57600 -wifinfo.menu.UploadSpeed.230400.linux=230400 -wifinfo.menu.UploadSpeed.230400.macosx=230400 -wifinfo.menu.UploadSpeed.230400.upload.speed=230400 -wifinfo.menu.UploadSpeed.256000.windows=256000 -wifinfo.menu.UploadSpeed.256000.upload.speed=256000 -wifinfo.menu.UploadSpeed.460800.linux=460800 -wifinfo.menu.UploadSpeed.460800.macosx=460800 -wifinfo.menu.UploadSpeed.460800.upload.speed=460800 -wifinfo.menu.UploadSpeed.512000.windows=512000 -wifinfo.menu.UploadSpeed.512000.upload.speed=512000 -wifinfo.menu.UploadSpeed.921600=921600 -wifinfo.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -arduino-esp8266.name=Arduino -arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO -arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI -arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.primo=Primo -arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi -arduino-esp8266.menu.BoardModel.starottodeved=Star OTTO -arduino-esp8266.build.board=ESP8266_ARDUINO -arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO -arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi -arduino-esp8266.upload.tool=esptool -arduino-esp8266.upload.maximum_data_size=81920 -arduino-esp8266.upload.wait_for_upload_port=true -arduino-esp8266.serial.disableDTR=true -arduino-esp8266.serial.disableRTS=true -arduino-esp8266.build.mcu=esp8266 -arduino-esp8266.build.core=esp8266 -arduino-esp8266.build.variant=generic -arduino-esp8266.build.spiffs_pagesize=256 -arduino-esp8266.build.debug_port= -arduino-esp8266.build.debug_level= -arduino-esp8266.menu.CpuFrequency.80=80 MHz -arduino-esp8266.menu.CpuFrequency.80.build.f_cpu=80000000L -arduino-esp8266.menu.CpuFrequency.160=160 MHz -arduino-esp8266.menu.CpuFrequency.160.build.f_cpu=160000000L -arduino-esp8266.build.flash_mode=qio -arduino-esp8266.build.flash_freq=40 -arduino-esp8266.menu.FlashSize.4M1M=4M (1M SPIFFS) -arduino-esp8266.menu.FlashSize.4M1M.build.flash_size=4M -arduino-esp8266.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -arduino-esp8266.menu.FlashSize.4M1M.upload.maximum_size=1044464 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.FlashSize.4M3M=4M (3M SPIFFS) -arduino-esp8266.menu.FlashSize.4M3M.build.flash_size=4M -arduino-esp8266.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -arduino-esp8266.menu.FlashSize.4M3M.upload.maximum_size=1044464 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -arduino-esp8266.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -arduino-esp8266.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -arduino-esp8266.menu.LwIPVariant.OpenSource=v1.4 Open Source -arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -arduino-esp8266.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -arduino-esp8266.menu.Debug.Disabled=Disabled -arduino-esp8266.menu.Debug.Disabled.build.debug_port= -arduino-esp8266.menu.Debug.Serial=Serial -arduino-esp8266.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -arduino-esp8266.menu.Debug.Serial1=Serial1 -arduino-esp8266.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -arduino-esp8266.menu.DebugLevel.None____=None -arduino-esp8266.menu.DebugLevel.None____.build.debug_level= -arduino-esp8266.menu.DebugLevel.SSL=SSL -arduino-esp8266.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -arduino-esp8266.menu.DebugLevel.TLS_MEM=TLS_MEM -arduino-esp8266.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -arduino-esp8266.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -arduino-esp8266.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.CORE=CORE -arduino-esp8266.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -arduino-esp8266.menu.DebugLevel.WIFI=WIFI -arduino-esp8266.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -arduino-esp8266.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -arduino-esp8266.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -arduino-esp8266.menu.DebugLevel.UPDATER=UPDATER -arduino-esp8266.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -arduino-esp8266.menu.DebugLevel.OTA=OTA -arduino-esp8266.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -arduino-esp8266.menu.UploadSpeed.115200=115200 -arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 -arduino-esp8266.menu.UploadSpeed.9600=9600 -arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 -arduino-esp8266.menu.UploadSpeed.57600=57600 -arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 -arduino-esp8266.menu.UploadSpeed.230400.linux=230400 -arduino-esp8266.menu.UploadSpeed.230400.macosx=230400 -arduino-esp8266.menu.UploadSpeed.230400.upload.speed=230400 -arduino-esp8266.menu.UploadSpeed.256000.windows=256000 -arduino-esp8266.menu.UploadSpeed.256000.upload.speed=256000 -arduino-esp8266.menu.UploadSpeed.460800.linux=460800 -arduino-esp8266.menu.UploadSpeed.460800.macosx=460800 -arduino-esp8266.menu.UploadSpeed.460800.upload.speed=460800 -arduino-esp8266.menu.UploadSpeed.512000.windows=512000 -arduino-esp8266.menu.UploadSpeed.512000.upload.speed=512000 -arduino-esp8266.menu.UploadSpeed.921600=921600 -arduino-esp8266.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -gen4iod.name=4D Systems gen4 IoD Range -gen4iod.build.board=GEN4_IOD -gen4iod.build.f_cpu=160000000L -gen4iod.build.variant=generic -gen4iod.upload.tool=esptool -gen4iod.upload.maximum_data_size=81920 -gen4iod.upload.wait_for_upload_port=true -gen4iod.serial.disableDTR=true -gen4iod.serial.disableRTS=true -gen4iod.build.mcu=esp8266 -gen4iod.build.core=esp8266 -gen4iod.build.spiffs_pagesize=256 -gen4iod.build.debug_port= -gen4iod.build.debug_level= -gen4iod.menu.CpuFrequency.80=80 MHz -gen4iod.menu.CpuFrequency.80.build.f_cpu=80000000L -gen4iod.menu.CpuFrequency.160=160 MHz -gen4iod.menu.CpuFrequency.160.build.f_cpu=160000000L -gen4iod.build.flash_mode=qio -gen4iod.build.flash_freq=80 -gen4iod.menu.FlashSize.512K0=512K (no SPIFFS) -gen4iod.menu.FlashSize.512K0.build.flash_size=512K -gen4iod.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -gen4iod.menu.FlashSize.512K0.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K0.upload.maximum_size=499696 -gen4iod.menu.FlashSize.512K64=512K (64K SPIFFS) -gen4iod.menu.FlashSize.512K64.build.flash_size=512K -gen4iod.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -gen4iod.menu.FlashSize.512K64.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K64.upload.maximum_size=434160 -gen4iod.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -gen4iod.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -gen4iod.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -gen4iod.menu.FlashSize.512K128=512K (128K SPIFFS) -gen4iod.menu.FlashSize.512K128.build.flash_size=512K -gen4iod.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -gen4iod.menu.FlashSize.512K128.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K128.upload.maximum_size=368624 -gen4iod.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -gen4iod.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -gen4iod.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -gen4iod.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -gen4iod.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -gen4iod.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -gen4iod.menu.LwIPVariant.OpenSource=v1.4 Open Source -gen4iod.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -gen4iod.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -gen4iod.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -gen4iod.menu.Debug.Disabled=Disabled -gen4iod.menu.Debug.Disabled.build.debug_port= -gen4iod.menu.Debug.Serial=Serial -gen4iod.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -gen4iod.menu.Debug.Serial1=Serial1 -gen4iod.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -gen4iod.menu.DebugLevel.None____=None -gen4iod.menu.DebugLevel.None____.build.debug_level= -gen4iod.menu.DebugLevel.SSL=SSL -gen4iod.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -gen4iod.menu.DebugLevel.TLS_MEM=TLS_MEM -gen4iod.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -gen4iod.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -gen4iod.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -gen4iod.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -gen4iod.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.CORE=CORE -gen4iod.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -gen4iod.menu.DebugLevel.WIFI=WIFI -gen4iod.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -gen4iod.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -gen4iod.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -gen4iod.menu.DebugLevel.UPDATER=UPDATER -gen4iod.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -gen4iod.menu.DebugLevel.OTA=OTA -gen4iod.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -gen4iod.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -gen4iod.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -gen4iod.menu.UploadSpeed.115200=115200 -gen4iod.menu.UploadSpeed.115200.upload.speed=115200 -gen4iod.menu.UploadSpeed.9600=9600 -gen4iod.menu.UploadSpeed.9600.upload.speed=9600 -gen4iod.menu.UploadSpeed.57600=57600 -gen4iod.menu.UploadSpeed.57600.upload.speed=57600 -gen4iod.menu.UploadSpeed.230400.linux=230400 -gen4iod.menu.UploadSpeed.230400.macosx=230400 -gen4iod.menu.UploadSpeed.230400.upload.speed=230400 -gen4iod.menu.UploadSpeed.256000.windows=256000 -gen4iod.menu.UploadSpeed.256000.upload.speed=256000 -gen4iod.menu.UploadSpeed.460800.linux=460800 -gen4iod.menu.UploadSpeed.460800.macosx=460800 -gen4iod.menu.UploadSpeed.460800.upload.speed=460800 -gen4iod.menu.UploadSpeed.512000.windows=512000 -gen4iod.menu.UploadSpeed.512000.upload.speed=512000 -gen4iod.menu.UploadSpeed.921600=921600 -gen4iod.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -oak.name=DigiStump Oak -oak.build.board=ESP8266_OAK -oak.build.variant=oak -oak.upload.maximum_size=1040368 -oak.upload.tool=esptool -oak.upload.maximum_data_size=81920 -oak.upload.wait_for_upload_port=true -oak.serial.disableDTR=true -oak.serial.disableRTS=true -oak.build.mcu=esp8266 -oak.build.core=esp8266 -oak.build.spiffs_pagesize=256 -oak.build.debug_port= -oak.build.debug_level= -oak.menu.CpuFrequency.80=80 MHz -oak.menu.CpuFrequency.80.build.f_cpu=80000000L -oak.menu.CpuFrequency.160=160 MHz -oak.menu.CpuFrequency.160.build.f_cpu=160000000L -oak.build.flash_mode=dio -oak.build.flash_freq=40 -oak.menu.FlashSize.4M1M=4M (1M SPIFFS) -oak.menu.FlashSize.4M1M.build.flash_size=4M -oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -oak.menu.FlashSize.4M1M.upload.maximum_size=1044464 -oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -oak.menu.FlashSize.4M3M=4M (3M SPIFFS) -oak.menu.FlashSize.4M3M.build.flash_size=4M -oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -oak.menu.FlashSize.4M3M.upload.maximum_size=1044464 -oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -oak.menu.LwIPVariant.v2mss536=v2 Prebuilt (MSS=536) -oak.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -oak.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -oak.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -oak.menu.LwIPVariant.v2mss1460=v2 Prebuilt (MSS=1460, unstable) -oak.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -oak.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -oak.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -oak.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt -oak.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -oak.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -oak.menu.LwIPVariant.OpenSource=v1.4 Open Source -oak.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -oak.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -oak.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -oak.menu.Debug.Disabled=Disabled -oak.menu.Debug.Disabled.build.debug_port= -oak.menu.Debug.Serial=Serial -oak.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -oak.menu.Debug.Serial1=Serial1 -oak.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -oak.menu.DebugLevel.None____=None -oak.menu.DebugLevel.None____.build.debug_level= -oak.menu.DebugLevel.SSL=SSL -oak.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -oak.menu.DebugLevel.TLS_MEM=TLS_MEM -oak.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -oak.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -oak.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -oak.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -oak.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -oak.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -oak.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.CORE=CORE -oak.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -oak.menu.DebugLevel.WIFI=WIFI -oak.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -oak.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -oak.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -oak.menu.DebugLevel.UPDATER=UPDATER -oak.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -oak.menu.DebugLevel.OTA=OTA -oak.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -oak.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -oak.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -oak.menu.UploadSpeed.921600=921600 -oak.menu.UploadSpeed.921600.upload.speed=921600 -oak.menu.UploadSpeed.9600=9600 -oak.menu.UploadSpeed.9600.upload.speed=9600 -oak.menu.UploadSpeed.57600=57600 -oak.menu.UploadSpeed.57600.upload.speed=57600 -oak.menu.UploadSpeed.115200=115200 -oak.menu.UploadSpeed.115200.upload.speed=115200 -oak.menu.UploadSpeed.230400.linux=230400 -oak.menu.UploadSpeed.230400.macosx=230400 -oak.menu.UploadSpeed.230400.upload.speed=230400 -oak.menu.UploadSpeed.256000.windows=256000 -oak.menu.UploadSpeed.256000.upload.speed=256000 -oak.menu.UploadSpeed.460800.linux=460800 -oak.menu.UploadSpeed.460800.macosx=460800 -oak.menu.UploadSpeed.460800.upload.speed=460800 -oak.menu.UploadSpeed.512000.windows=512000 -oak.menu.UploadSpeed.512000.upload.speed=512000 - diff --git a/arduino/version 2.4.0/platform.txt b/arduino/version 2.4.0/platform.txt deleted file mode 100644 index d284f64dacf2..000000000000 --- a/arduino/version 2.4.0/platform.txt +++ /dev/null @@ -1,133 +0,0 @@ - -# ESP8266 platform -# ------------------------------ - -# For more info: -# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification - -name=ESP8266 Modules -version=2.4.0 - - - - -compiler.warning_flags=-w -compiler.warning_flags.none=-w -compiler.warning_flags.default= -compiler.warning_flags.more=-Wall -compiler.warning_flags.all=-Wall -Wextra - -build.lwip_lib=-llwip_gcc -build.lwip_include=lwip/include -build.lwip_flags=-DLWIP_OPEN_SRC - -compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ -compiler.sdk.path={runtime.platform.path}/tools/sdk -compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf -compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core" - -compiler.c.cmd=xtensa-lx106-elf-gcc -compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections - -compiler.S.cmd=xtensa-lx106-elf-gcc -compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls - -# compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read -compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read - -compiler.c.elf.cmd=xtensa-lx106-elf-gcc -compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc - -compiler.cpp.cmd=xtensa-lx106-elf-g++ -compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections - -compiler.as.cmd=xtensa-lx106-elf-as - -compiler.ar.cmd=xtensa-lx106-elf-ar -compiler.ar.flags=cru - -compiler.elf2hex.cmd=esptool -compiler.elf2hex.flags= - -compiler.size.cmd=xtensa-lx106-elf-size - -compiler.esptool.cmd=esptool -compiler.esptool.cmd.windows=esptool.exe - -# This can be overriden in boards.txt -build.extra_flags=-DESP8266 - -# These can be overridden in platform.local.txt -compiler.c.extra_flags= -compiler.c.elf.extra_flags= -compiler.S.extra_flags= -compiler.cpp.extra_flags= -compiler.ar.extra_flags= -compiler.objcopy.eep.extra_flags= -compiler.elf2hex.extra_flags= - -## generate file with git version number -## needs bash, git, and echo - -## windows-compatible version may be added later - - -## Compile c files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Compile c++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Create archives -recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/arduino.ar" "{object_file}" - -## Combine gc-sections, archives, and objects -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{build.path}/arduino.ar" {compiler.c.elf.libs} -Wl,--end-group "-L{build.path}" - -## Create eeprom -recipe.objcopy.eep.pattern= - -## Create hex -#recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" - -recipe.objcopy.hex.pattern="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec - -## Save hex -recipe.output.tmp_file={build.project_name}.bin -recipe.output.save_file={build.project_name}.{build.variant}.bin - -## Compute size -recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" -recipe.size.regex=^(?:\.irom0\.text|\.text|\.data|\.rodata|)\s+([0-9]+).* -recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).* -#recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* - -# ------------------------------ - -tools.esptool.cmd=esptool -tools.esptool.cmd.windows=esptool.exe -tools.esptool.path={runtime.tools.esptool.path} -tools.esptool.network_cmd=python -tools.esptool.network_cmd.windows=python.exe - -tools.esptool.upload.protocol=esp -tools.esptool.upload.params.verbose=-vv -tools.esptool.upload.params.quiet= -tools.esptool.upload.pattern="{path}/{cmd}" {upload.verbose} -cd {upload.resetmethod} -cb {upload.speed} -cp "{serial.port}" -ca 0x00000 -cf "{build.path}/{build.project_name}.bin" -tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" - -tools.mkspiffs.cmd=mkspiffs -tools.mkspiffs.cmd.windows=mkspiffs.exe -tools.mkspiffs.path={runtime.tools.mkspiffs.path} - -tools.espupload.cmd=python -tools.espupload.cmd.windows=python.exe -tools.espupload.path={runtime.platform.path}/tools - -tools.espupload.upload.protocol=espupload -tools.espupload.upload.params.verbose= -tools.espupload.upload.params.quiet= -tools.espupload.upload.pattern="{cmd}" "{path}/espupload.py" -f "{build.path}/{build.project_name}.bin" diff --git a/arduino/version 2.4.1/boards.txt b/arduino/version 2.4.1/boards.txt deleted file mode 100644 index 0d948f012a15..000000000000 --- a/arduino/version 2.4.1/boards.txt +++ /dev/null @@ -1,3796 +0,0 @@ -# -# this file is script-generated and is likely to be overwritten by boards.txt.py -# - -menu.BoardModel=Model -menu.UploadSpeed=Upload Speed -menu.UploadTool=Upload Using -menu.CpuFrequency=CPU Frequency -menu.CrystalFreq=Crystal Frequency -menu.FlashSize=Flash Size -menu.FlashMode=Flash Mode -menu.FlashFreq=Flash Frequency -menu.ResetMethod=Reset Method -menu.ESPModule=Module -menu.Debug=Debug port -menu.DebugLevel=Debug Level -menu.LwIPVariant=lwIP Variant -menu.led=Builtin Led -menu.FlashErase=Erase Flash - -############################################################## -generic.name=Generic ESP8266 Module -generic.build.board=ESP8266_GENERIC -generic.upload.tool=esptool -generic.upload.maximum_data_size=81920 -generic.upload.wait_for_upload_port=true -generic.upload.erase_cmd= -generic.serial.disableDTR=true -generic.serial.disableRTS=true -generic.build.mcu=esp8266 -generic.build.core=esp8266 -generic.build.variant=generic -generic.build.spiffs_pagesize=256 -generic.build.debug_port= -generic.build.debug_level= - -generic.menu.UploadTool.esptool=Serial -generic.menu.UploadTool.esptool.upload.tool=esptool -generic.menu.UploadTool.esptool.upload.verbose=-vv -generic.menu.UploadTool.espupload=OTA_upload -generic.menu.UploadTool.espupload.upload.tool=espupload - -generic.menu.CpuFrequency.80=80 MHz -generic.menu.CpuFrequency.80.build.f_cpu=80000000L -generic.menu.CpuFrequency.160=160 MHz -generic.menu.CpuFrequency.160.build.f_cpu=160000000L -generic.menu.ResetMethod.ck=ck -generic.menu.ResetMethod.ck.upload.resetmethod=ck -generic.menu.ResetMethod.nodemcu=nodemcu -generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -generic.menu.ResetMethod.none=none -generic.menu.ResetMethod.none.upload.resetmethod=none -generic.menu.ResetMethod.dtrset=dtrset -generic.menu.ResetMethod.dtrset.upload.resetmethod=dtrset -generic.menu.CrystalFreq.26=26 MHz -generic.menu.CrystalFreq.40=40 MHz -generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -generic.menu.FlashFreq.40=40MHz -generic.menu.FlashFreq.40.build.flash_freq=40 -generic.menu.FlashFreq.80=80MHz -generic.menu.FlashFreq.80.build.flash_freq=80 -generic.menu.FlashMode.qio=QIO -generic.menu.FlashMode.qio.build.flash_mode=qio -generic.menu.FlashMode.qout=QOUT -generic.menu.FlashMode.qout.build.flash_mode=qout -generic.menu.FlashMode.dio=DIO -generic.menu.FlashMode.dio.build.flash_mode=dio -generic.menu.FlashMode.dout=DOUT -generic.menu.FlashMode.dout.build.flash_mode=dout -generic.menu.FlashSize.512K0=512K (no SPIFFS) -generic.menu.FlashSize.512K0.build.flash_size=512K -generic.menu.FlashSize.512K0.build.flash_size_bytes=0x80000 -generic.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -generic.menu.FlashSize.512K0.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K0.upload.maximum_size=499696 -generic.menu.FlashSize.512K0.build.rfcal_addr=0x7C000 -generic.menu.FlashSize.512K64=512K (64K SPIFFS) -generic.menu.FlashSize.512K64.build.flash_size=512K -generic.menu.FlashSize.512K64.build.flash_size_bytes=0x80000 -generic.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -generic.menu.FlashSize.512K64.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K64.upload.maximum_size=434160 -generic.menu.FlashSize.512K64.build.rfcal_addr=0x7C000 -generic.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -generic.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.512K128=512K (128K SPIFFS) -generic.menu.FlashSize.512K128.build.flash_size=512K -generic.menu.FlashSize.512K128.build.flash_size_bytes=0x80000 -generic.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -generic.menu.FlashSize.512K128.build.spiffs_pagesize=256 -generic.menu.FlashSize.512K128.upload.maximum_size=368624 -generic.menu.FlashSize.512K128.build.rfcal_addr=0x7C000 -generic.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -generic.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M0=1M (no SPIFFS) -generic.menu.FlashSize.1M0.build.flash_size=1M -generic.menu.FlashSize.1M0.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -generic.menu.FlashSize.1M0.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M0.upload.maximum_size=1023984 -generic.menu.FlashSize.1M0.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M64=1M (64K SPIFFS) -generic.menu.FlashSize.1M64.build.flash_size=1M -generic.menu.FlashSize.1M64.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -generic.menu.FlashSize.1M64.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M64.upload.maximum_size=958448 -generic.menu.FlashSize.1M64.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M128=1M (128K SPIFFS) -generic.menu.FlashSize.1M128.build.flash_size=1M -generic.menu.FlashSize.1M128.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -generic.menu.FlashSize.1M128.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M128.upload.maximum_size=892912 -generic.menu.FlashSize.1M128.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M144=1M (144K SPIFFS) -generic.menu.FlashSize.1M144.build.flash_size=1M -generic.menu.FlashSize.1M144.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -generic.menu.FlashSize.1M144.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M144.upload.maximum_size=876528 -generic.menu.FlashSize.1M144.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -generic.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M160=1M (160K SPIFFS) -generic.menu.FlashSize.1M160.build.flash_size=1M -generic.menu.FlashSize.1M160.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -generic.menu.FlashSize.1M160.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M160.upload.maximum_size=860144 -generic.menu.FlashSize.1M160.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -generic.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M192=1M (192K SPIFFS) -generic.menu.FlashSize.1M192.build.flash_size=1M -generic.menu.FlashSize.1M192.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -generic.menu.FlashSize.1M192.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M192.upload.maximum_size=827376 -generic.menu.FlashSize.1M192.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -generic.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M256=1M (256K SPIFFS) -generic.menu.FlashSize.1M256.build.flash_size=1M -generic.menu.FlashSize.1M256.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -generic.menu.FlashSize.1M256.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M256.upload.maximum_size=761840 -generic.menu.FlashSize.1M256.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M512=1M (512K SPIFFS) -generic.menu.FlashSize.1M512.build.flash_size=1M -generic.menu.FlashSize.1M512.build.flash_size_bytes=0x100000 -generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -generic.menu.FlashSize.1M512.build.spiffs_pagesize=256 -generic.menu.FlashSize.1M512.upload.maximum_size=499696 -generic.menu.FlashSize.1M512.build.rfcal_addr=0xFC000 -generic.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -generic.menu.FlashSize.2M=2M (1M SPIFFS) -generic.menu.FlashSize.2M.build.flash_size=2M -generic.menu.FlashSize.2M.build.flash_size_bytes=0x200000 -generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -generic.menu.FlashSize.2M.build.spiffs_pagesize=256 -generic.menu.FlashSize.2M.upload.maximum_size=1044464 -generic.menu.FlashSize.2M.build.rfcal_addr=0x1FC000 -generic.menu.FlashSize.2M.build.spiffs_start=0x100000 -generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -generic.menu.FlashSize.2M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M1M=4M (1M SPIFFS) -generic.menu.FlashSize.4M1M.build.flash_size=4M -generic.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -generic.menu.FlashSize.4M1M.upload.maximum_size=1044464 -generic.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M3M=4M (3M SPIFFS) -generic.menu.FlashSize.4M3M.build.flash_size=4M -generic.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -generic.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 -generic.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.8M7M=8M (7M SPIFFS) -generic.menu.FlashSize.8M7M.build.flash_size=8M -generic.menu.FlashSize.8M7M.build.flash_size_bytes=0x800000 -generic.menu.FlashSize.8M7M.build.flash_ld=eagle.flash.8m.ld -generic.menu.FlashSize.8M7M.build.spiffs_pagesize=256 -generic.menu.FlashSize.8M7M.upload.maximum_size=1044464 -generic.menu.FlashSize.8M7M.build.rfcal_addr=0x7FC000 -generic.menu.FlashSize.8M7M.build.spiffs_start=0x100000 -generic.menu.FlashSize.8M7M.build.spiffs_end=0x7FB000 -generic.menu.FlashSize.8M7M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.16M15M=16M (15M SPIFFS) -generic.menu.FlashSize.16M15M.build.flash_size=16M -generic.menu.FlashSize.16M15M.build.flash_size_bytes=0x1000000 -generic.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld -generic.menu.FlashSize.16M15M.build.spiffs_pagesize=256 -generic.menu.FlashSize.16M15M.upload.maximum_size=1044464 -generic.menu.FlashSize.16M15M.build.rfcal_addr=0xFFC000 -generic.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -generic.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 -generic.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -generic.menu.led.2=2 -generic.menu.led.2.build.led=-DLED_BUILTIN=2 -generic.menu.led.0=0 -generic.menu.led.0.build.led=-DLED_BUILTIN=0 -generic.menu.led.1=1 -generic.menu.led.1.build.led=-DLED_BUILTIN=1 -generic.menu.led.3=3 -generic.menu.led.3.build.led=-DLED_BUILTIN=3 -generic.menu.led.4=4 -generic.menu.led.4.build.led=-DLED_BUILTIN=4 -generic.menu.led.5=5 -generic.menu.led.5.build.led=-DLED_BUILTIN=5 -generic.menu.led.6=6 -generic.menu.led.6.build.led=-DLED_BUILTIN=6 -generic.menu.led.7=7 -generic.menu.led.7.build.led=-DLED_BUILTIN=7 -generic.menu.led.8=8 -generic.menu.led.8.build.led=-DLED_BUILTIN=8 -generic.menu.led.9=9 -generic.menu.led.9.build.led=-DLED_BUILTIN=9 -generic.menu.led.10=10 -generic.menu.led.10.build.led=-DLED_BUILTIN=10 -generic.menu.led.11=11 -generic.menu.led.11.build.led=-DLED_BUILTIN=11 -generic.menu.led.12=12 -generic.menu.led.12.build.led=-DLED_BUILTIN=12 -generic.menu.led.13=13 -generic.menu.led.13.build.led=-DLED_BUILTIN=13 -generic.menu.led.14=14 -generic.menu.led.14.build.led=-DLED_BUILTIN=14 -generic.menu.led.15=15 -generic.menu.led.15.build.led=-DLED_BUILTIN=15 -generic.menu.LwIPVariant.v2mss536=v2 Lower Memory -generic.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -generic.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -generic.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -generic.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -generic.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -generic.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -generic.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -generic.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -generic.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -generic.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -generic.menu.LwIPVariant.OpenSource=v1.4 Compile from source -generic.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -generic.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -generic.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -generic.menu.Debug.Disabled=Disabled -generic.menu.Debug.Disabled.build.debug_port= -generic.menu.Debug.Serial=Serial -generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -generic.menu.Debug.Serial1=Serial1 -generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -generic.menu.DebugLevel.None____=None -generic.menu.DebugLevel.None____.build.debug_level= -generic.menu.DebugLevel.SSL=SSL -generic.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -generic.menu.DebugLevel.TLS_MEM=TLS_MEM -generic.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -generic.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -generic.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -generic.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -generic.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -generic.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -generic.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.CORE=CORE -generic.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -generic.menu.DebugLevel.WIFI=WIFI -generic.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -generic.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -generic.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -generic.menu.DebugLevel.UPDATER=UPDATER -generic.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -generic.menu.DebugLevel.OTA=OTA -generic.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -generic.menu.DebugLevel.OOM=OOM -generic.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -generic.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -generic.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -generic.menu.FlashErase.none=Only Sketch -generic.menu.FlashErase.none.upload.erase_cmd= -generic.menu.FlashErase.sdk=Sketch + WiFi Settings -generic.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -generic.menu.FlashErase.all=All Flash Contents -generic.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -generic.menu.UploadSpeed.115200=115200 -generic.menu.UploadSpeed.115200.upload.speed=115200 -generic.menu.UploadSpeed.9600=9600 -generic.menu.UploadSpeed.9600.upload.speed=9600 -generic.menu.UploadSpeed.57600=57600 -generic.menu.UploadSpeed.57600.upload.speed=57600 -generic.menu.UploadSpeed.230400.linux=230400 -generic.menu.UploadSpeed.230400.macosx=230400 -generic.menu.UploadSpeed.230400.upload.speed=230400 -generic.menu.UploadSpeed.256000.windows=256000 -generic.menu.UploadSpeed.256000.upload.speed=256000 -generic.menu.UploadSpeed.460800.linux=460800 -generic.menu.UploadSpeed.460800.macosx=460800 -generic.menu.UploadSpeed.460800.upload.speed=460800 -generic.menu.UploadSpeed.512000.windows=512000 -generic.menu.UploadSpeed.512000.upload.speed=512000 -generic.menu.UploadSpeed.921600=921600 -generic.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -esp8285.name=Generic ESP8285 Module -esp8285.build.board=ESP8266_ESP01 -esp8285.upload.tool=esptool -esp8285.upload.maximum_data_size=81920 -esp8285.upload.wait_for_upload_port=true -esp8285.upload.erase_cmd= -esp8285.serial.disableDTR=true -esp8285.serial.disableRTS=true -esp8285.build.mcu=esp8266 -esp8285.build.core=esp8266 -esp8285.build.variant=generic -esp8285.build.spiffs_pagesize=256 -esp8285.build.debug_port= -esp8285.build.debug_level= -esp8285.menu.CpuFrequency.80=80 MHz -esp8285.menu.CpuFrequency.80.build.f_cpu=80000000L -esp8285.menu.CpuFrequency.160=160 MHz -esp8285.menu.CpuFrequency.160.build.f_cpu=160000000L -esp8285.menu.ResetMethod.ck=ck -esp8285.menu.ResetMethod.ck.upload.resetmethod=ck -esp8285.menu.ResetMethod.nodemcu=nodemcu -esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -esp8285.menu.ResetMethod.none=none -esp8285.menu.ResetMethod.none.upload.resetmethod=none -esp8285.menu.ResetMethod.dtrset=dtrset -esp8285.menu.ResetMethod.dtrset.upload.resetmethod=dtrset -esp8285.menu.CrystalFreq.26=26 MHz -esp8285.menu.CrystalFreq.40=40 MHz -esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -esp8285.build.flash_mode=dout -esp8285.build.flash_freq=40 -esp8285.menu.FlashSize.1M0=1M (no SPIFFS) -esp8285.menu.FlashSize.1M0.build.flash_size=1M -esp8285.menu.FlashSize.1M0.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -esp8285.menu.FlashSize.1M0.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M0.upload.maximum_size=1023984 -esp8285.menu.FlashSize.1M0.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M64=1M (64K SPIFFS) -esp8285.menu.FlashSize.1M64.build.flash_size=1M -esp8285.menu.FlashSize.1M64.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -esp8285.menu.FlashSize.1M64.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M64.upload.maximum_size=958448 -esp8285.menu.FlashSize.1M64.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -esp8285.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M128=1M (128K SPIFFS) -esp8285.menu.FlashSize.1M128.build.flash_size=1M -esp8285.menu.FlashSize.1M128.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -esp8285.menu.FlashSize.1M128.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M128.upload.maximum_size=892912 -esp8285.menu.FlashSize.1M128.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -esp8285.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M144=1M (144K SPIFFS) -esp8285.menu.FlashSize.1M144.build.flash_size=1M -esp8285.menu.FlashSize.1M144.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -esp8285.menu.FlashSize.1M144.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M144.upload.maximum_size=876528 -esp8285.menu.FlashSize.1M144.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -esp8285.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M160=1M (160K SPIFFS) -esp8285.menu.FlashSize.1M160.build.flash_size=1M -esp8285.menu.FlashSize.1M160.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -esp8285.menu.FlashSize.1M160.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M160.upload.maximum_size=860144 -esp8285.menu.FlashSize.1M160.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -esp8285.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M192=1M (192K SPIFFS) -esp8285.menu.FlashSize.1M192.build.flash_size=1M -esp8285.menu.FlashSize.1M192.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -esp8285.menu.FlashSize.1M192.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M192.upload.maximum_size=827376 -esp8285.menu.FlashSize.1M192.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -esp8285.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M256=1M (256K SPIFFS) -esp8285.menu.FlashSize.1M256.build.flash_size=1M -esp8285.menu.FlashSize.1M256.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -esp8285.menu.FlashSize.1M256.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M256.upload.maximum_size=761840 -esp8285.menu.FlashSize.1M256.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -esp8285.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M512=1M (512K SPIFFS) -esp8285.menu.FlashSize.1M512.build.flash_size=1M -esp8285.menu.FlashSize.1M512.build.flash_size_bytes=0x100000 -esp8285.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -esp8285.menu.FlashSize.1M512.build.spiffs_pagesize=256 -esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 -esp8285.menu.FlashSize.1M512.build.rfcal_addr=0xFC000 -esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -esp8285.menu.led.2=2 -esp8285.menu.led.2.build.led=-DLED_BUILTIN=2 -esp8285.menu.led.0=0 -esp8285.menu.led.0.build.led=-DLED_BUILTIN=0 -esp8285.menu.led.1=1 -esp8285.menu.led.1.build.led=-DLED_BUILTIN=1 -esp8285.menu.led.3=3 -esp8285.menu.led.3.build.led=-DLED_BUILTIN=3 -esp8285.menu.led.4=4 -esp8285.menu.led.4.build.led=-DLED_BUILTIN=4 -esp8285.menu.led.5=5 -esp8285.menu.led.5.build.led=-DLED_BUILTIN=5 -esp8285.menu.led.6=6 -esp8285.menu.led.6.build.led=-DLED_BUILTIN=6 -esp8285.menu.led.7=7 -esp8285.menu.led.7.build.led=-DLED_BUILTIN=7 -esp8285.menu.led.8=8 -esp8285.menu.led.8.build.led=-DLED_BUILTIN=8 -esp8285.menu.led.9=9 -esp8285.menu.led.9.build.led=-DLED_BUILTIN=9 -esp8285.menu.led.10=10 -esp8285.menu.led.10.build.led=-DLED_BUILTIN=10 -esp8285.menu.led.11=11 -esp8285.menu.led.11.build.led=-DLED_BUILTIN=11 -esp8285.menu.led.12=12 -esp8285.menu.led.12.build.led=-DLED_BUILTIN=12 -esp8285.menu.led.13=13 -esp8285.menu.led.13.build.led=-DLED_BUILTIN=13 -esp8285.menu.led.14=14 -esp8285.menu.led.14.build.led=-DLED_BUILTIN=14 -esp8285.menu.led.15=15 -esp8285.menu.led.15.build.led=-DLED_BUILTIN=15 -esp8285.menu.LwIPVariant.v2mss536=v2 Lower Memory -esp8285.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -esp8285.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -esp8285.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -esp8285.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -esp8285.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -esp8285.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -esp8285.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -esp8285.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp8285.menu.LwIPVariant.OpenSource=v1.4 Compile from source -esp8285.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -esp8285.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -esp8285.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -esp8285.menu.Debug.Disabled=Disabled -esp8285.menu.Debug.Disabled.build.debug_port= -esp8285.menu.Debug.Serial=Serial -esp8285.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -esp8285.menu.Debug.Serial1=Serial1 -esp8285.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -esp8285.menu.DebugLevel.None____=None -esp8285.menu.DebugLevel.None____.build.debug_level= -esp8285.menu.DebugLevel.SSL=SSL -esp8285.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -esp8285.menu.DebugLevel.TLS_MEM=TLS_MEM -esp8285.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -esp8285.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -esp8285.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -esp8285.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -esp8285.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -esp8285.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp8285.menu.DebugLevel.CORE=CORE -esp8285.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -esp8285.menu.DebugLevel.WIFI=WIFI -esp8285.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -esp8285.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -esp8285.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -esp8285.menu.DebugLevel.UPDATER=UPDATER -esp8285.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -esp8285.menu.DebugLevel.OTA=OTA -esp8285.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp8285.menu.DebugLevel.OOM=OOM -esp8285.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp8285.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -esp8285.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -esp8285.menu.FlashErase.none=Only Sketch -esp8285.menu.FlashErase.none.upload.erase_cmd= -esp8285.menu.FlashErase.sdk=Sketch + WiFi Settings -esp8285.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -esp8285.menu.FlashErase.all=All Flash Contents -esp8285.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -esp8285.menu.UploadSpeed.115200=115200 -esp8285.menu.UploadSpeed.115200.upload.speed=115200 -esp8285.menu.UploadSpeed.9600=9600 -esp8285.menu.UploadSpeed.9600.upload.speed=9600 -esp8285.menu.UploadSpeed.57600=57600 -esp8285.menu.UploadSpeed.57600.upload.speed=57600 -esp8285.menu.UploadSpeed.230400.linux=230400 -esp8285.menu.UploadSpeed.230400.macosx=230400 -esp8285.menu.UploadSpeed.230400.upload.speed=230400 -esp8285.menu.UploadSpeed.256000.windows=256000 -esp8285.menu.UploadSpeed.256000.upload.speed=256000 -esp8285.menu.UploadSpeed.460800.linux=460800 -esp8285.menu.UploadSpeed.460800.macosx=460800 -esp8285.menu.UploadSpeed.460800.upload.speed=460800 -esp8285.menu.UploadSpeed.512000.windows=512000 -esp8285.menu.UploadSpeed.512000.upload.speed=512000 -esp8285.menu.UploadSpeed.921600=921600 -esp8285.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espduino.name=ESPDuino (ESP-13 Module) -espduino.build.board=ESP8266_ESP13 -espduino.build.variant=ESPDuino -espduino.menu.ResetMethod.v2=ESPduino-V2 -espduino.menu.ResetMethod.v2.upload.resetmethod=nodemcu -espduino.menu.ResetMethod.v1=ESPduino-V1 -espduino.menu.ResetMethod.v1.upload.resetmethod=ck -espduino.menu.UploadTool.esptool=Serial -espduino.menu.UploadTool.esptool.upload.tool=esptool -espduino.menu.UploadTool.esptool.upload.verbose=-vv -espduino.menu.UploadTool.espota=OTA -espduino.menu.UploadTool.espota.upload.tool=espota -espduino.upload.tool=esptool -espduino.upload.maximum_data_size=81920 -espduino.upload.wait_for_upload_port=true -espduino.upload.erase_cmd= -espduino.serial.disableDTR=true -espduino.serial.disableRTS=true -espduino.build.mcu=esp8266 -espduino.build.core=esp8266 -espduino.build.spiffs_pagesize=256 -espduino.build.debug_port= -espduino.build.debug_level= -espduino.menu.CpuFrequency.80=80 MHz -espduino.menu.CpuFrequency.80.build.f_cpu=80000000L -espduino.menu.CpuFrequency.160=160 MHz -espduino.menu.CpuFrequency.160.build.f_cpu=160000000L -espduino.build.flash_mode=dio -espduino.build.flash_freq=40 -espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espduino.menu.FlashSize.4M1M.build.flash_size=4M -espduino.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -espduino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espduino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espduino.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espduino.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -espduino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espduino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espduino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espduino.menu.FlashSize.4M3M.build.flash_size=4M -espduino.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -espduino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espduino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espduino.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espduino.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espduino.menu.LwIPVariant.v2mss536=v2 Lower Memory -espduino.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espduino.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espduino.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espduino.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -espduino.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espduino.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espduino.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espduino.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -espduino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espduino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espduino.menu.LwIPVariant.OpenSource=v1.4 Compile from source -espduino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espduino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espduino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espduino.menu.Debug.Disabled=Disabled -espduino.menu.Debug.Disabled.build.debug_port= -espduino.menu.Debug.Serial=Serial -espduino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espduino.menu.Debug.Serial1=Serial1 -espduino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espduino.menu.DebugLevel.None____=None -espduino.menu.DebugLevel.None____.build.debug_level= -espduino.menu.DebugLevel.SSL=SSL -espduino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espduino.menu.DebugLevel.TLS_MEM=TLS_MEM -espduino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espduino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espduino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espduino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espduino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espduino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espduino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espduino.menu.DebugLevel.CORE=CORE -espduino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espduino.menu.DebugLevel.WIFI=WIFI -espduino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espduino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espduino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espduino.menu.DebugLevel.UPDATER=UPDATER -espduino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espduino.menu.DebugLevel.OTA=OTA -espduino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espduino.menu.DebugLevel.OOM=OOM -espduino.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espduino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espduino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espduino.menu.FlashErase.none=Only Sketch -espduino.menu.FlashErase.none.upload.erase_cmd= -espduino.menu.FlashErase.sdk=Sketch + WiFi Settings -espduino.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -espduino.menu.FlashErase.all=All Flash Contents -espduino.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -espduino.menu.UploadSpeed.115200=115200 -espduino.menu.UploadSpeed.115200.upload.speed=115200 -espduino.menu.UploadSpeed.9600=9600 -espduino.menu.UploadSpeed.9600.upload.speed=9600 -espduino.menu.UploadSpeed.57600=57600 -espduino.menu.UploadSpeed.57600.upload.speed=57600 -espduino.menu.UploadSpeed.230400.linux=230400 -espduino.menu.UploadSpeed.230400.macosx=230400 -espduino.menu.UploadSpeed.230400.upload.speed=230400 -espduino.menu.UploadSpeed.256000.windows=256000 -espduino.menu.UploadSpeed.256000.upload.speed=256000 -espduino.menu.UploadSpeed.460800.linux=460800 -espduino.menu.UploadSpeed.460800.macosx=460800 -espduino.menu.UploadSpeed.460800.upload.speed=460800 -espduino.menu.UploadSpeed.512000.windows=512000 -espduino.menu.UploadSpeed.512000.upload.speed=512000 -espduino.menu.UploadSpeed.921600=921600 -espduino.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -huzzah.name=Adafruit Feather HUZZAH ESP8266 -huzzah.build.board=ESP8266_ESP12 -huzzah.build.variant=adafruit -huzzah.upload.tool=esptool -huzzah.upload.maximum_data_size=81920 -huzzah.upload.wait_for_upload_port=true -huzzah.upload.erase_cmd= -huzzah.serial.disableDTR=true -huzzah.serial.disableRTS=true -huzzah.build.mcu=esp8266 -huzzah.build.core=esp8266 -huzzah.build.spiffs_pagesize=256 -huzzah.build.debug_port= -huzzah.build.debug_level= -huzzah.menu.CpuFrequency.80=80 MHz -huzzah.menu.CpuFrequency.80.build.f_cpu=80000000L -huzzah.menu.CpuFrequency.160=160 MHz -huzzah.menu.CpuFrequency.160.build.f_cpu=160000000L -huzzah.upload.resetmethod=nodemcu -huzzah.build.flash_mode=qio -huzzah.build.flash_freq=40 -huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS) -huzzah.menu.FlashSize.4M1M.build.flash_size=4M -huzzah.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -huzzah.menu.FlashSize.4M1M.upload.maximum_size=1044464 -huzzah.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS) -huzzah.menu.FlashSize.4M3M.build.flash_size=4M -huzzah.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -huzzah.menu.FlashSize.4M3M.upload.maximum_size=1044464 -huzzah.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -huzzah.menu.LwIPVariant.v2mss536=v2 Lower Memory -huzzah.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -huzzah.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -huzzah.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -huzzah.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -huzzah.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -huzzah.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -huzzah.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -huzzah.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -huzzah.menu.LwIPVariant.OpenSource=v1.4 Compile from source -huzzah.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -huzzah.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -huzzah.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -huzzah.menu.Debug.Disabled=Disabled -huzzah.menu.Debug.Disabled.build.debug_port= -huzzah.menu.Debug.Serial=Serial -huzzah.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -huzzah.menu.Debug.Serial1=Serial1 -huzzah.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -huzzah.menu.DebugLevel.None____=None -huzzah.menu.DebugLevel.None____.build.debug_level= -huzzah.menu.DebugLevel.SSL=SSL -huzzah.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -huzzah.menu.DebugLevel.TLS_MEM=TLS_MEM -huzzah.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -huzzah.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -huzzah.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -huzzah.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -huzzah.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -huzzah.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -huzzah.menu.DebugLevel.CORE=CORE -huzzah.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -huzzah.menu.DebugLevel.WIFI=WIFI -huzzah.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -huzzah.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -huzzah.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -huzzah.menu.DebugLevel.UPDATER=UPDATER -huzzah.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -huzzah.menu.DebugLevel.OTA=OTA -huzzah.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -huzzah.menu.DebugLevel.OOM=OOM -huzzah.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -huzzah.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -huzzah.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -huzzah.menu.FlashErase.none=Only Sketch -huzzah.menu.FlashErase.none.upload.erase_cmd= -huzzah.menu.FlashErase.sdk=Sketch + WiFi Settings -huzzah.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -huzzah.menu.FlashErase.all=All Flash Contents -huzzah.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -huzzah.menu.UploadSpeed.115200=115200 -huzzah.menu.UploadSpeed.115200.upload.speed=115200 -huzzah.menu.UploadSpeed.9600=9600 -huzzah.menu.UploadSpeed.9600.upload.speed=9600 -huzzah.menu.UploadSpeed.57600=57600 -huzzah.menu.UploadSpeed.57600.upload.speed=57600 -huzzah.menu.UploadSpeed.230400.linux=230400 -huzzah.menu.UploadSpeed.230400.macosx=230400 -huzzah.menu.UploadSpeed.230400.upload.speed=230400 -huzzah.menu.UploadSpeed.256000.windows=256000 -huzzah.menu.UploadSpeed.256000.upload.speed=256000 -huzzah.menu.UploadSpeed.460800.linux=460800 -huzzah.menu.UploadSpeed.460800.macosx=460800 -huzzah.menu.UploadSpeed.460800.upload.speed=460800 -huzzah.menu.UploadSpeed.512000.windows=512000 -huzzah.menu.UploadSpeed.512000.upload.speed=512000 -huzzah.menu.UploadSpeed.921600=921600 -huzzah.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espresso_lite_v1.name=ESPresso Lite 1.0 -espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 -espresso_lite_v1.build.variant=espresso_lite_v1 -espresso_lite_v1.upload.tool=esptool -espresso_lite_v1.upload.maximum_data_size=81920 -espresso_lite_v1.upload.wait_for_upload_port=true -espresso_lite_v1.upload.erase_cmd= -espresso_lite_v1.serial.disableDTR=true -espresso_lite_v1.serial.disableRTS=true -espresso_lite_v1.build.mcu=esp8266 -espresso_lite_v1.build.core=esp8266 -espresso_lite_v1.build.spiffs_pagesize=256 -espresso_lite_v1.build.debug_port= -espresso_lite_v1.build.debug_level= -espresso_lite_v1.menu.CpuFrequency.80=80 MHz -espresso_lite_v1.menu.CpuFrequency.80.build.f_cpu=80000000L -espresso_lite_v1.menu.CpuFrequency.160=160 MHz -espresso_lite_v1.menu.CpuFrequency.160.build.f_cpu=160000000L -espresso_lite_v1.build.flash_mode=dio -espresso_lite_v1.build.flash_freq=40 -espresso_lite_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) -espresso_lite_v1.menu.FlashSize.4M1M.build.flash_size=4M -espresso_lite_v1.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -espresso_lite_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espresso_lite_v1.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espresso_lite_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espresso_lite_v1.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.ResetMethod.ck=ck -espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck -espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu -espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v1.menu.LwIPVariant.v2mss536=v2 Lower Memory -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espresso_lite_v1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espresso_lite_v1.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espresso_lite_v1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espresso_lite_v1.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v1.menu.LwIPVariant.OpenSource=v1.4 Compile from source -espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espresso_lite_v1.menu.Debug.Disabled=Disabled -espresso_lite_v1.menu.Debug.Disabled.build.debug_port= -espresso_lite_v1.menu.Debug.Serial=Serial -espresso_lite_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espresso_lite_v1.menu.Debug.Serial1=Serial1 -espresso_lite_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espresso_lite_v1.menu.DebugLevel.None____=None -espresso_lite_v1.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v1.menu.DebugLevel.SSL=SSL -espresso_lite_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espresso_lite_v1.menu.DebugLevel.TLS_MEM=TLS_MEM -espresso_lite_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.CORE=CORE -espresso_lite_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espresso_lite_v1.menu.DebugLevel.WIFI=WIFI -espresso_lite_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.UPDATER=UPDATER -espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espresso_lite_v1.menu.DebugLevel.OTA=OTA -espresso_lite_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.OOM=OOM -espresso_lite_v1.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espresso_lite_v1.menu.FlashErase.none=Only Sketch -espresso_lite_v1.menu.FlashErase.none.upload.erase_cmd= -espresso_lite_v1.menu.FlashErase.sdk=Sketch + WiFi Settings -espresso_lite_v1.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -espresso_lite_v1.menu.FlashErase.all=All Flash Contents -espresso_lite_v1.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -espresso_lite_v1.menu.UploadSpeed.115200=115200 -espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v1.menu.UploadSpeed.9600=9600 -espresso_lite_v1.menu.UploadSpeed.9600.upload.speed=9600 -espresso_lite_v1.menu.UploadSpeed.57600=57600 -espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v1.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v1.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v1.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v1.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v1.menu.UploadSpeed.921600=921600 -espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espresso_lite_v2.name=ESPresso Lite 2.0 -espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 -espresso_lite_v2.build.variant=espresso_lite_v2 -espresso_lite_v2.upload.tool=esptool -espresso_lite_v2.upload.maximum_data_size=81920 -espresso_lite_v2.upload.wait_for_upload_port=true -espresso_lite_v2.upload.erase_cmd= -espresso_lite_v2.serial.disableDTR=true -espresso_lite_v2.serial.disableRTS=true -espresso_lite_v2.build.mcu=esp8266 -espresso_lite_v2.build.core=esp8266 -espresso_lite_v2.build.spiffs_pagesize=256 -espresso_lite_v2.build.debug_port= -espresso_lite_v2.build.debug_level= -espresso_lite_v2.menu.CpuFrequency.80=80 MHz -espresso_lite_v2.menu.CpuFrequency.80.build.f_cpu=80000000L -espresso_lite_v2.menu.CpuFrequency.160=160 MHz -espresso_lite_v2.menu.CpuFrequency.160.build.f_cpu=160000000L -espresso_lite_v2.build.flash_mode=dio -espresso_lite_v2.build.flash_freq=40 -espresso_lite_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) -espresso_lite_v2.menu.FlashSize.4M1M.build.flash_size=4M -espresso_lite_v2.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -espresso_lite_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espresso_lite_v2.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espresso_lite_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espresso_lite_v2.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.ResetMethod.ck=ck -espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck -espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu -espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v2.menu.LwIPVariant.v2mss536=v2 Lower Memory -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espresso_lite_v2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espresso_lite_v2.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espresso_lite_v2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espresso_lite_v2.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v2.menu.LwIPVariant.OpenSource=v1.4 Compile from source -espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espresso_lite_v2.menu.Debug.Disabled=Disabled -espresso_lite_v2.menu.Debug.Disabled.build.debug_port= -espresso_lite_v2.menu.Debug.Serial=Serial -espresso_lite_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espresso_lite_v2.menu.Debug.Serial1=Serial1 -espresso_lite_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espresso_lite_v2.menu.DebugLevel.None____=None -espresso_lite_v2.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v2.menu.DebugLevel.SSL=SSL -espresso_lite_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espresso_lite_v2.menu.DebugLevel.TLS_MEM=TLS_MEM -espresso_lite_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.CORE=CORE -espresso_lite_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espresso_lite_v2.menu.DebugLevel.WIFI=WIFI -espresso_lite_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.UPDATER=UPDATER -espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espresso_lite_v2.menu.DebugLevel.OTA=OTA -espresso_lite_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.OOM=OOM -espresso_lite_v2.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espresso_lite_v2.menu.FlashErase.none=Only Sketch -espresso_lite_v2.menu.FlashErase.none.upload.erase_cmd= -espresso_lite_v2.menu.FlashErase.sdk=Sketch + WiFi Settings -espresso_lite_v2.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -espresso_lite_v2.menu.FlashErase.all=All Flash Contents -espresso_lite_v2.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -espresso_lite_v2.menu.UploadSpeed.115200=115200 -espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v2.menu.UploadSpeed.9600=9600 -espresso_lite_v2.menu.UploadSpeed.9600.upload.speed=9600 -espresso_lite_v2.menu.UploadSpeed.57600=57600 -espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v2.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v2.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v2.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v2.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v2.menu.UploadSpeed.921600=921600 -espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -phoenix_v1.name=Phoenix 1.0 -phoenix_v1.build.board=ESP8266_PHOENIX_V1 -phoenix_v1.build.variant=phoenix_v1 -phoenix_v1.upload.tool=esptool -phoenix_v1.upload.maximum_data_size=81920 -phoenix_v1.upload.wait_for_upload_port=true -phoenix_v1.upload.erase_cmd= -phoenix_v1.serial.disableDTR=true -phoenix_v1.serial.disableRTS=true -phoenix_v1.build.mcu=esp8266 -phoenix_v1.build.core=esp8266 -phoenix_v1.build.spiffs_pagesize=256 -phoenix_v1.build.debug_port= -phoenix_v1.build.debug_level= -phoenix_v1.menu.CpuFrequency.80=80 MHz -phoenix_v1.menu.CpuFrequency.80.build.f_cpu=80000000L -phoenix_v1.menu.CpuFrequency.160=160 MHz -phoenix_v1.menu.CpuFrequency.160.build.f_cpu=160000000L -phoenix_v1.build.flash_mode=dio -phoenix_v1.build.flash_freq=40 -phoenix_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) -phoenix_v1.menu.FlashSize.4M1M.build.flash_size=4M -phoenix_v1.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -phoenix_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -phoenix_v1.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v1.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v1.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -phoenix_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -phoenix_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -phoenix_v1.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v1.menu.ResetMethod.ck=ck -phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck -phoenix_v1.menu.ResetMethod.nodemcu=nodemcu -phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v1.menu.LwIPVariant.v2mss536=v2 Lower Memory -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -phoenix_v1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -phoenix_v1.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -phoenix_v1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -phoenix_v1.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v1.menu.LwIPVariant.OpenSource=v1.4 Compile from source -phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -phoenix_v1.menu.Debug.Disabled=Disabled -phoenix_v1.menu.Debug.Disabled.build.debug_port= -phoenix_v1.menu.Debug.Serial=Serial -phoenix_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -phoenix_v1.menu.Debug.Serial1=Serial1 -phoenix_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -phoenix_v1.menu.DebugLevel.None____=None -phoenix_v1.menu.DebugLevel.None____.build.debug_level= -phoenix_v1.menu.DebugLevel.SSL=SSL -phoenix_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -phoenix_v1.menu.DebugLevel.TLS_MEM=TLS_MEM -phoenix_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -phoenix_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -phoenix_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -phoenix_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.CORE=CORE -phoenix_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -phoenix_v1.menu.DebugLevel.WIFI=WIFI -phoenix_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -phoenix_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -phoenix_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -phoenix_v1.menu.DebugLevel.UPDATER=UPDATER -phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -phoenix_v1.menu.DebugLevel.OTA=OTA -phoenix_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.OOM=OOM -phoenix_v1.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -phoenix_v1.menu.FlashErase.none=Only Sketch -phoenix_v1.menu.FlashErase.none.upload.erase_cmd= -phoenix_v1.menu.FlashErase.sdk=Sketch + WiFi Settings -phoenix_v1.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -phoenix_v1.menu.FlashErase.all=All Flash Contents -phoenix_v1.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -phoenix_v1.menu.UploadSpeed.115200=115200 -phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v1.menu.UploadSpeed.9600=9600 -phoenix_v1.menu.UploadSpeed.9600.upload.speed=9600 -phoenix_v1.menu.UploadSpeed.57600=57600 -phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v1.menu.UploadSpeed.230400.linux=230400 -phoenix_v1.menu.UploadSpeed.230400.macosx=230400 -phoenix_v1.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v1.menu.UploadSpeed.256000.windows=256000 -phoenix_v1.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v1.menu.UploadSpeed.460800.linux=460800 -phoenix_v1.menu.UploadSpeed.460800.macosx=460800 -phoenix_v1.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v1.menu.UploadSpeed.512000.windows=512000 -phoenix_v1.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v1.menu.UploadSpeed.921600=921600 -phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -phoenix_v2.name=Phoenix 2.0 -phoenix_v2.build.board=ESP8266_PHOENIX_V2 -phoenix_v2.build.variant=phoenix_v2 -phoenix_v2.upload.tool=esptool -phoenix_v2.upload.maximum_data_size=81920 -phoenix_v2.upload.wait_for_upload_port=true -phoenix_v2.upload.erase_cmd= -phoenix_v2.serial.disableDTR=true -phoenix_v2.serial.disableRTS=true -phoenix_v2.build.mcu=esp8266 -phoenix_v2.build.core=esp8266 -phoenix_v2.build.spiffs_pagesize=256 -phoenix_v2.build.debug_port= -phoenix_v2.build.debug_level= -phoenix_v2.menu.CpuFrequency.80=80 MHz -phoenix_v2.menu.CpuFrequency.80.build.f_cpu=80000000L -phoenix_v2.menu.CpuFrequency.160=160 MHz -phoenix_v2.menu.CpuFrequency.160.build.f_cpu=160000000L -phoenix_v2.build.flash_mode=dio -phoenix_v2.build.flash_freq=40 -phoenix_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) -phoenix_v2.menu.FlashSize.4M1M.build.flash_size=4M -phoenix_v2.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -phoenix_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -phoenix_v2.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v2.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v2.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -phoenix_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -phoenix_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -phoenix_v2.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v2.menu.ResetMethod.ck=ck -phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck -phoenix_v2.menu.ResetMethod.nodemcu=nodemcu -phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v2.menu.LwIPVariant.v2mss536=v2 Lower Memory -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -phoenix_v2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -phoenix_v2.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -phoenix_v2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -phoenix_v2.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v2.menu.LwIPVariant.OpenSource=v1.4 Compile from source -phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -phoenix_v2.menu.Debug.Disabled=Disabled -phoenix_v2.menu.Debug.Disabled.build.debug_port= -phoenix_v2.menu.Debug.Serial=Serial -phoenix_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -phoenix_v2.menu.Debug.Serial1=Serial1 -phoenix_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -phoenix_v2.menu.DebugLevel.None____=None -phoenix_v2.menu.DebugLevel.None____.build.debug_level= -phoenix_v2.menu.DebugLevel.SSL=SSL -phoenix_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -phoenix_v2.menu.DebugLevel.TLS_MEM=TLS_MEM -phoenix_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -phoenix_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -phoenix_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -phoenix_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.CORE=CORE -phoenix_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -phoenix_v2.menu.DebugLevel.WIFI=WIFI -phoenix_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -phoenix_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -phoenix_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -phoenix_v2.menu.DebugLevel.UPDATER=UPDATER -phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -phoenix_v2.menu.DebugLevel.OTA=OTA -phoenix_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.OOM=OOM -phoenix_v2.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -phoenix_v2.menu.FlashErase.none=Only Sketch -phoenix_v2.menu.FlashErase.none.upload.erase_cmd= -phoenix_v2.menu.FlashErase.sdk=Sketch + WiFi Settings -phoenix_v2.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -phoenix_v2.menu.FlashErase.all=All Flash Contents -phoenix_v2.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -phoenix_v2.menu.UploadSpeed.115200=115200 -phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v2.menu.UploadSpeed.9600=9600 -phoenix_v2.menu.UploadSpeed.9600.upload.speed=9600 -phoenix_v2.menu.UploadSpeed.57600=57600 -phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v2.menu.UploadSpeed.230400.linux=230400 -phoenix_v2.menu.UploadSpeed.230400.macosx=230400 -phoenix_v2.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v2.menu.UploadSpeed.256000.windows=256000 -phoenix_v2.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v2.menu.UploadSpeed.460800.linux=460800 -phoenix_v2.menu.UploadSpeed.460800.macosx=460800 -phoenix_v2.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v2.menu.UploadSpeed.512000.windows=512000 -phoenix_v2.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v2.menu.UploadSpeed.921600=921600 -phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -nodemcu.name=NodeMCU 0.9 (ESP-12 Module) -nodemcu.build.board=ESP8266_NODEMCU -nodemcu.build.variant=nodemcu -nodemcu.upload.tool=esptool -nodemcu.upload.maximum_data_size=81920 -nodemcu.upload.wait_for_upload_port=true -nodemcu.upload.erase_cmd= -nodemcu.serial.disableDTR=true -nodemcu.serial.disableRTS=true -nodemcu.build.mcu=esp8266 -nodemcu.build.core=esp8266 -nodemcu.build.spiffs_pagesize=256 -nodemcu.build.debug_port= -nodemcu.build.debug_level= -nodemcu.menu.CpuFrequency.80=80 MHz -nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L -nodemcu.menu.CpuFrequency.160=160 MHz -nodemcu.menu.CpuFrequency.160.build.f_cpu=160000000L -nodemcu.upload.resetmethod=nodemcu -nodemcu.build.flash_mode=qio -nodemcu.build.flash_freq=40 -nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcu.menu.FlashSize.4M1M.build.flash_size=4M -nodemcu.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -nodemcu.menu.FlashSize.4M1M.upload.maximum_size=1044464 -nodemcu.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcu.menu.FlashSize.4M3M.build.flash_size=4M -nodemcu.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -nodemcu.menu.FlashSize.4M3M.upload.maximum_size=1044464 -nodemcu.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcu.menu.LwIPVariant.v2mss536=v2 Lower Memory -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -nodemcu.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -nodemcu.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -nodemcu.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -nodemcu.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcu.menu.LwIPVariant.OpenSource=v1.4 Compile from source -nodemcu.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -nodemcu.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcu.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -nodemcu.menu.Debug.Disabled=Disabled -nodemcu.menu.Debug.Disabled.build.debug_port= -nodemcu.menu.Debug.Serial=Serial -nodemcu.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -nodemcu.menu.Debug.Serial1=Serial1 -nodemcu.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -nodemcu.menu.DebugLevel.None____=None -nodemcu.menu.DebugLevel.None____.build.debug_level= -nodemcu.menu.DebugLevel.SSL=SSL -nodemcu.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -nodemcu.menu.DebugLevel.TLS_MEM=TLS_MEM -nodemcu.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -nodemcu.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -nodemcu.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -nodemcu.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -nodemcu.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcu.menu.DebugLevel.CORE=CORE -nodemcu.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -nodemcu.menu.DebugLevel.WIFI=WIFI -nodemcu.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -nodemcu.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -nodemcu.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -nodemcu.menu.DebugLevel.UPDATER=UPDATER -nodemcu.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -nodemcu.menu.DebugLevel.OTA=OTA -nodemcu.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcu.menu.DebugLevel.OOM=OOM -nodemcu.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcu.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcu.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -nodemcu.menu.FlashErase.none=Only Sketch -nodemcu.menu.FlashErase.none.upload.erase_cmd= -nodemcu.menu.FlashErase.sdk=Sketch + WiFi Settings -nodemcu.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -nodemcu.menu.FlashErase.all=All Flash Contents -nodemcu.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -nodemcu.menu.UploadSpeed.115200=115200 -nodemcu.menu.UploadSpeed.115200.upload.speed=115200 -nodemcu.menu.UploadSpeed.9600=9600 -nodemcu.menu.UploadSpeed.9600.upload.speed=9600 -nodemcu.menu.UploadSpeed.57600=57600 -nodemcu.menu.UploadSpeed.57600.upload.speed=57600 -nodemcu.menu.UploadSpeed.230400.linux=230400 -nodemcu.menu.UploadSpeed.230400.macosx=230400 -nodemcu.menu.UploadSpeed.230400.upload.speed=230400 -nodemcu.menu.UploadSpeed.256000.windows=256000 -nodemcu.menu.UploadSpeed.256000.upload.speed=256000 -nodemcu.menu.UploadSpeed.460800.linux=460800 -nodemcu.menu.UploadSpeed.460800.macosx=460800 -nodemcu.menu.UploadSpeed.460800.upload.speed=460800 -nodemcu.menu.UploadSpeed.512000.windows=512000 -nodemcu.menu.UploadSpeed.512000.upload.speed=512000 -nodemcu.menu.UploadSpeed.921600=921600 -nodemcu.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module) -nodemcuv2.build.board=ESP8266_NODEMCU -nodemcuv2.build.variant=nodemcu -nodemcuv2.upload.tool=esptool -nodemcuv2.upload.maximum_data_size=81920 -nodemcuv2.upload.wait_for_upload_port=true -nodemcuv2.upload.erase_cmd= -nodemcuv2.serial.disableDTR=true -nodemcuv2.serial.disableRTS=true -nodemcuv2.build.mcu=esp8266 -nodemcuv2.build.core=esp8266 -nodemcuv2.build.spiffs_pagesize=256 -nodemcuv2.build.debug_port= -nodemcuv2.build.debug_level= -nodemcuv2.menu.CpuFrequency.80=80 MHz -nodemcuv2.menu.CpuFrequency.80.build.f_cpu=80000000L -nodemcuv2.menu.CpuFrequency.160=160 MHz -nodemcuv2.menu.CpuFrequency.160.build.f_cpu=160000000L -nodemcuv2.upload.resetmethod=nodemcu -nodemcuv2.build.flash_mode=dio -nodemcuv2.build.flash_freq=40 -nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -nodemcuv2.menu.FlashSize.4M1M.upload.maximum_size=1044464 -nodemcuv2.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -nodemcuv2.menu.FlashSize.4M3M.upload.maximum_size=1044464 -nodemcuv2.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcuv2.menu.LwIPVariant.v2mss536=v2 Lower Memory -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -nodemcuv2.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -nodemcuv2.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -nodemcuv2.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -nodemcuv2.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcuv2.menu.LwIPVariant.OpenSource=v1.4 Compile from source -nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcuv2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -nodemcuv2.menu.Debug.Disabled=Disabled -nodemcuv2.menu.Debug.Disabled.build.debug_port= -nodemcuv2.menu.Debug.Serial=Serial -nodemcuv2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -nodemcuv2.menu.Debug.Serial1=Serial1 -nodemcuv2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -nodemcuv2.menu.DebugLevel.None____=None -nodemcuv2.menu.DebugLevel.None____.build.debug_level= -nodemcuv2.menu.DebugLevel.SSL=SSL -nodemcuv2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -nodemcuv2.menu.DebugLevel.TLS_MEM=TLS_MEM -nodemcuv2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -nodemcuv2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -nodemcuv2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -nodemcuv2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -nodemcuv2.menu.DebugLevel.CORE=CORE -nodemcuv2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -nodemcuv2.menu.DebugLevel.WIFI=WIFI -nodemcuv2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -nodemcuv2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -nodemcuv2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -nodemcuv2.menu.DebugLevel.UPDATER=UPDATER -nodemcuv2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -nodemcuv2.menu.DebugLevel.OTA=OTA -nodemcuv2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcuv2.menu.DebugLevel.OOM=OOM -nodemcuv2.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -nodemcuv2.menu.FlashErase.none=Only Sketch -nodemcuv2.menu.FlashErase.none.upload.erase_cmd= -nodemcuv2.menu.FlashErase.sdk=Sketch + WiFi Settings -nodemcuv2.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -nodemcuv2.menu.FlashErase.all=All Flash Contents -nodemcuv2.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -nodemcuv2.menu.UploadSpeed.115200=115200 -nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 -nodemcuv2.menu.UploadSpeed.9600=9600 -nodemcuv2.menu.UploadSpeed.9600.upload.speed=9600 -nodemcuv2.menu.UploadSpeed.57600=57600 -nodemcuv2.menu.UploadSpeed.57600.upload.speed=57600 -nodemcuv2.menu.UploadSpeed.230400.linux=230400 -nodemcuv2.menu.UploadSpeed.230400.macosx=230400 -nodemcuv2.menu.UploadSpeed.230400.upload.speed=230400 -nodemcuv2.menu.UploadSpeed.256000.windows=256000 -nodemcuv2.menu.UploadSpeed.256000.upload.speed=256000 -nodemcuv2.menu.UploadSpeed.460800.linux=460800 -nodemcuv2.menu.UploadSpeed.460800.macosx=460800 -nodemcuv2.menu.UploadSpeed.460800.upload.speed=460800 -nodemcuv2.menu.UploadSpeed.512000.windows=512000 -nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000 -nodemcuv2.menu.UploadSpeed.921600=921600 -nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) -modwifi.build.board=MOD_WIFI_ESP8266 -modwifi.upload.tool=esptool -modwifi.upload.maximum_data_size=81920 -modwifi.upload.wait_for_upload_port=true -modwifi.upload.erase_cmd= -modwifi.serial.disableDTR=true -modwifi.serial.disableRTS=true -modwifi.build.mcu=esp8266 -modwifi.build.core=esp8266 -modwifi.build.variant=generic -modwifi.build.spiffs_pagesize=256 -modwifi.build.debug_port= -modwifi.build.debug_level= -modwifi.menu.CpuFrequency.80=80 MHz -modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L -modwifi.menu.CpuFrequency.160=160 MHz -modwifi.menu.CpuFrequency.160.build.f_cpu=160000000L -modwifi.upload.resetmethod=ck -modwifi.build.flash_mode=qio -modwifi.build.flash_freq=40 -modwifi.menu.FlashSize.2M=2M (1M SPIFFS) -modwifi.menu.FlashSize.2M.build.flash_size=2M -modwifi.menu.FlashSize.2M.build.flash_size_bytes=0x200000 -modwifi.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -modwifi.menu.FlashSize.2M.build.spiffs_pagesize=256 -modwifi.menu.FlashSize.2M.upload.maximum_size=1044464 -modwifi.menu.FlashSize.2M.build.rfcal_addr=0x1FC000 -modwifi.menu.FlashSize.2M.build.spiffs_start=0x100000 -modwifi.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -modwifi.menu.FlashSize.2M.build.spiffs_blocksize=8192 -modwifi.menu.LwIPVariant.v2mss536=v2 Lower Memory -modwifi.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -modwifi.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -modwifi.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -modwifi.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -modwifi.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -modwifi.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -modwifi.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -modwifi.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -modwifi.menu.LwIPVariant.OpenSource=v1.4 Compile from source -modwifi.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -modwifi.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -modwifi.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -modwifi.menu.Debug.Disabled=Disabled -modwifi.menu.Debug.Disabled.build.debug_port= -modwifi.menu.Debug.Serial=Serial -modwifi.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -modwifi.menu.Debug.Serial1=Serial1 -modwifi.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -modwifi.menu.DebugLevel.None____=None -modwifi.menu.DebugLevel.None____.build.debug_level= -modwifi.menu.DebugLevel.SSL=SSL -modwifi.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -modwifi.menu.DebugLevel.TLS_MEM=TLS_MEM -modwifi.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -modwifi.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -modwifi.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -modwifi.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -modwifi.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -modwifi.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -modwifi.menu.DebugLevel.CORE=CORE -modwifi.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -modwifi.menu.DebugLevel.WIFI=WIFI -modwifi.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -modwifi.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -modwifi.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -modwifi.menu.DebugLevel.UPDATER=UPDATER -modwifi.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -modwifi.menu.DebugLevel.OTA=OTA -modwifi.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -modwifi.menu.DebugLevel.OOM=OOM -modwifi.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -modwifi.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -modwifi.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -modwifi.menu.FlashErase.none=Only Sketch -modwifi.menu.FlashErase.none.upload.erase_cmd= -modwifi.menu.FlashErase.sdk=Sketch + WiFi Settings -modwifi.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -modwifi.menu.FlashErase.all=All Flash Contents -modwifi.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -modwifi.menu.UploadSpeed.115200=115200 -modwifi.menu.UploadSpeed.115200.upload.speed=115200 -modwifi.menu.UploadSpeed.9600=9600 -modwifi.menu.UploadSpeed.9600.upload.speed=9600 -modwifi.menu.UploadSpeed.57600=57600 -modwifi.menu.UploadSpeed.57600.upload.speed=57600 -modwifi.menu.UploadSpeed.230400.linux=230400 -modwifi.menu.UploadSpeed.230400.macosx=230400 -modwifi.menu.UploadSpeed.230400.upload.speed=230400 -modwifi.menu.UploadSpeed.256000.windows=256000 -modwifi.menu.UploadSpeed.256000.upload.speed=256000 -modwifi.menu.UploadSpeed.460800.linux=460800 -modwifi.menu.UploadSpeed.460800.macosx=460800 -modwifi.menu.UploadSpeed.460800.upload.speed=460800 -modwifi.menu.UploadSpeed.512000.windows=512000 -modwifi.menu.UploadSpeed.512000.upload.speed=512000 -modwifi.menu.UploadSpeed.921600=921600 -modwifi.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -thing.name=SparkFun ESP8266 Thing -thing.build.board=ESP8266_THING -thing.build.variant=thing -thing.upload.tool=esptool -thing.upload.maximum_data_size=81920 -thing.upload.wait_for_upload_port=true -thing.upload.erase_cmd= -thing.serial.disableDTR=true -thing.serial.disableRTS=true -thing.build.mcu=esp8266 -thing.build.core=esp8266 -thing.build.spiffs_pagesize=256 -thing.build.debug_port= -thing.build.debug_level= -thing.menu.CpuFrequency.80=80 MHz -thing.menu.CpuFrequency.80.build.f_cpu=80000000L -thing.menu.CpuFrequency.160=160 MHz -thing.menu.CpuFrequency.160.build.f_cpu=160000000L -thing.upload.resetmethod=ck -thing.build.flash_mode=qio -thing.build.flash_freq=40 -thing.menu.FlashSize.512K0=512K (no SPIFFS) -thing.menu.FlashSize.512K0.build.flash_size=512K -thing.menu.FlashSize.512K0.build.flash_size_bytes=0x80000 -thing.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -thing.menu.FlashSize.512K0.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K0.upload.maximum_size=499696 -thing.menu.FlashSize.512K0.build.rfcal_addr=0x7C000 -thing.menu.FlashSize.512K64=512K (64K SPIFFS) -thing.menu.FlashSize.512K64.build.flash_size=512K -thing.menu.FlashSize.512K64.build.flash_size_bytes=0x80000 -thing.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -thing.menu.FlashSize.512K64.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K64.upload.maximum_size=434160 -thing.menu.FlashSize.512K64.build.rfcal_addr=0x7C000 -thing.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -thing.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -thing.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -thing.menu.FlashSize.512K128=512K (128K SPIFFS) -thing.menu.FlashSize.512K128.build.flash_size=512K -thing.menu.FlashSize.512K128.build.flash_size_bytes=0x80000 -thing.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -thing.menu.FlashSize.512K128.build.spiffs_pagesize=256 -thing.menu.FlashSize.512K128.upload.maximum_size=368624 -thing.menu.FlashSize.512K128.build.rfcal_addr=0x7C000 -thing.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -thing.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -thing.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thing.menu.LwIPVariant.v2mss536=v2 Lower Memory -thing.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -thing.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -thing.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -thing.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -thing.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -thing.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -thing.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -thing.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -thing.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -thing.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thing.menu.LwIPVariant.OpenSource=v1.4 Compile from source -thing.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -thing.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -thing.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -thing.menu.Debug.Disabled=Disabled -thing.menu.Debug.Disabled.build.debug_port= -thing.menu.Debug.Serial=Serial -thing.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -thing.menu.Debug.Serial1=Serial1 -thing.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -thing.menu.DebugLevel.None____=None -thing.menu.DebugLevel.None____.build.debug_level= -thing.menu.DebugLevel.SSL=SSL -thing.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -thing.menu.DebugLevel.TLS_MEM=TLS_MEM -thing.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -thing.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -thing.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -thing.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -thing.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -thing.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -thing.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thing.menu.DebugLevel.CORE=CORE -thing.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -thing.menu.DebugLevel.WIFI=WIFI -thing.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -thing.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -thing.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -thing.menu.DebugLevel.UPDATER=UPDATER -thing.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -thing.menu.DebugLevel.OTA=OTA -thing.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thing.menu.DebugLevel.OOM=OOM -thing.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thing.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -thing.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -thing.menu.FlashErase.none=Only Sketch -thing.menu.FlashErase.none.upload.erase_cmd= -thing.menu.FlashErase.sdk=Sketch + WiFi Settings -thing.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -thing.menu.FlashErase.all=All Flash Contents -thing.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -thing.menu.UploadSpeed.115200=115200 -thing.menu.UploadSpeed.115200.upload.speed=115200 -thing.menu.UploadSpeed.9600=9600 -thing.menu.UploadSpeed.9600.upload.speed=9600 -thing.menu.UploadSpeed.57600=57600 -thing.menu.UploadSpeed.57600.upload.speed=57600 -thing.menu.UploadSpeed.230400.linux=230400 -thing.menu.UploadSpeed.230400.macosx=230400 -thing.menu.UploadSpeed.230400.upload.speed=230400 -thing.menu.UploadSpeed.256000.windows=256000 -thing.menu.UploadSpeed.256000.upload.speed=256000 -thing.menu.UploadSpeed.460800.linux=460800 -thing.menu.UploadSpeed.460800.macosx=460800 -thing.menu.UploadSpeed.460800.upload.speed=460800 -thing.menu.UploadSpeed.512000.windows=512000 -thing.menu.UploadSpeed.512000.upload.speed=512000 -thing.menu.UploadSpeed.921600=921600 -thing.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -thingdev.name=SparkFun ESP8266 Thing Dev -thingdev.build.board=ESP8266_THING_DEV -thingdev.build.variant=thing -thingdev.upload.tool=esptool -thingdev.upload.maximum_data_size=81920 -thingdev.upload.wait_for_upload_port=true -thingdev.upload.erase_cmd= -thingdev.serial.disableDTR=true -thingdev.serial.disableRTS=true -thingdev.build.mcu=esp8266 -thingdev.build.core=esp8266 -thingdev.build.spiffs_pagesize=256 -thingdev.build.debug_port= -thingdev.build.debug_level= -thingdev.menu.CpuFrequency.80=80 MHz -thingdev.menu.CpuFrequency.80.build.f_cpu=80000000L -thingdev.menu.CpuFrequency.160=160 MHz -thingdev.menu.CpuFrequency.160.build.f_cpu=160000000L -thingdev.upload.resetmethod=nodemcu -thingdev.build.flash_mode=dio -thingdev.build.flash_freq=40 -thingdev.menu.FlashSize.512K0=512K (no SPIFFS) -thingdev.menu.FlashSize.512K0.build.flash_size=512K -thingdev.menu.FlashSize.512K0.build.flash_size_bytes=0x80000 -thingdev.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -thingdev.menu.FlashSize.512K0.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K0.upload.maximum_size=499696 -thingdev.menu.FlashSize.512K0.build.rfcal_addr=0x7C000 -thingdev.menu.FlashSize.512K64=512K (64K SPIFFS) -thingdev.menu.FlashSize.512K64.build.flash_size=512K -thingdev.menu.FlashSize.512K64.build.flash_size_bytes=0x80000 -thingdev.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -thingdev.menu.FlashSize.512K64.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K64.upload.maximum_size=434160 -thingdev.menu.FlashSize.512K64.build.rfcal_addr=0x7C000 -thingdev.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -thingdev.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -thingdev.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -thingdev.menu.FlashSize.512K128=512K (128K SPIFFS) -thingdev.menu.FlashSize.512K128.build.flash_size=512K -thingdev.menu.FlashSize.512K128.build.flash_size_bytes=0x80000 -thingdev.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -thingdev.menu.FlashSize.512K128.build.spiffs_pagesize=256 -thingdev.menu.FlashSize.512K128.upload.maximum_size=368624 -thingdev.menu.FlashSize.512K128.build.rfcal_addr=0x7C000 -thingdev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -thingdev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -thingdev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thingdev.menu.LwIPVariant.v2mss536=v2 Lower Memory -thingdev.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -thingdev.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -thingdev.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -thingdev.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -thingdev.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -thingdev.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -thingdev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -thingdev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thingdev.menu.LwIPVariant.OpenSource=v1.4 Compile from source -thingdev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -thingdev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -thingdev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -thingdev.menu.Debug.Disabled=Disabled -thingdev.menu.Debug.Disabled.build.debug_port= -thingdev.menu.Debug.Serial=Serial -thingdev.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -thingdev.menu.Debug.Serial1=Serial1 -thingdev.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -thingdev.menu.DebugLevel.None____=None -thingdev.menu.DebugLevel.None____.build.debug_level= -thingdev.menu.DebugLevel.SSL=SSL -thingdev.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -thingdev.menu.DebugLevel.TLS_MEM=TLS_MEM -thingdev.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -thingdev.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -thingdev.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -thingdev.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -thingdev.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -thingdev.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -thingdev.menu.DebugLevel.CORE=CORE -thingdev.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -thingdev.menu.DebugLevel.WIFI=WIFI -thingdev.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -thingdev.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -thingdev.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -thingdev.menu.DebugLevel.UPDATER=UPDATER -thingdev.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -thingdev.menu.DebugLevel.OTA=OTA -thingdev.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thingdev.menu.DebugLevel.OOM=OOM -thingdev.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -thingdev.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -thingdev.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -thingdev.menu.FlashErase.none=Only Sketch -thingdev.menu.FlashErase.none.upload.erase_cmd= -thingdev.menu.FlashErase.sdk=Sketch + WiFi Settings -thingdev.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -thingdev.menu.FlashErase.all=All Flash Contents -thingdev.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -thingdev.menu.UploadSpeed.115200=115200 -thingdev.menu.UploadSpeed.115200.upload.speed=115200 -thingdev.menu.UploadSpeed.9600=9600 -thingdev.menu.UploadSpeed.9600.upload.speed=9600 -thingdev.menu.UploadSpeed.57600=57600 -thingdev.menu.UploadSpeed.57600.upload.speed=57600 -thingdev.menu.UploadSpeed.230400.linux=230400 -thingdev.menu.UploadSpeed.230400.macosx=230400 -thingdev.menu.UploadSpeed.230400.upload.speed=230400 -thingdev.menu.UploadSpeed.256000.windows=256000 -thingdev.menu.UploadSpeed.256000.upload.speed=256000 -thingdev.menu.UploadSpeed.460800.linux=460800 -thingdev.menu.UploadSpeed.460800.macosx=460800 -thingdev.menu.UploadSpeed.460800.upload.speed=460800 -thingdev.menu.UploadSpeed.512000.windows=512000 -thingdev.menu.UploadSpeed.512000.upload.speed=512000 -thingdev.menu.UploadSpeed.921600=921600 -thingdev.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -esp210.name=SweetPea ESP-210 -esp210.build.board=ESP8266_ESP210 -esp210.upload.tool=esptool -esp210.upload.maximum_data_size=81920 -esp210.upload.wait_for_upload_port=true -esp210.upload.erase_cmd= -esp210.serial.disableDTR=true -esp210.serial.disableRTS=true -esp210.build.mcu=esp8266 -esp210.build.core=esp8266 -esp210.build.variant=generic -esp210.build.spiffs_pagesize=256 -esp210.build.debug_port= -esp210.build.debug_level= -esp210.menu.CpuFrequency.80=80 MHz -esp210.menu.CpuFrequency.80.build.f_cpu=80000000L -esp210.menu.CpuFrequency.160=160 MHz -esp210.menu.CpuFrequency.160.build.f_cpu=160000000L -esp210.upload.resetmethod=ck -esp210.build.flash_mode=qio -esp210.build.flash_freq=40 -esp210.menu.FlashSize.4M1M=4M (1M SPIFFS) -esp210.menu.FlashSize.4M1M.build.flash_size=4M -esp210.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -esp210.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -esp210.menu.FlashSize.4M1M.upload.maximum_size=1044464 -esp210.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -esp210.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -esp210.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -esp210.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -esp210.menu.FlashSize.4M3M=4M (3M SPIFFS) -esp210.menu.FlashSize.4M3M.build.flash_size=4M -esp210.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -esp210.menu.FlashSize.4M3M.upload.maximum_size=1044464 -esp210.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -esp210.menu.LwIPVariant.v2mss536=v2 Lower Memory -esp210.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -esp210.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -esp210.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -esp210.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -esp210.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -esp210.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -esp210.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -esp210.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -esp210.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -esp210.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp210.menu.LwIPVariant.OpenSource=v1.4 Compile from source -esp210.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -esp210.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -esp210.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -esp210.menu.Debug.Disabled=Disabled -esp210.menu.Debug.Disabled.build.debug_port= -esp210.menu.Debug.Serial=Serial -esp210.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -esp210.menu.Debug.Serial1=Serial1 -esp210.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -esp210.menu.DebugLevel.None____=None -esp210.menu.DebugLevel.None____.build.debug_level= -esp210.menu.DebugLevel.SSL=SSL -esp210.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -esp210.menu.DebugLevel.TLS_MEM=TLS_MEM -esp210.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -esp210.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -esp210.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -esp210.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -esp210.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -esp210.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -esp210.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -esp210.menu.DebugLevel.CORE=CORE -esp210.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -esp210.menu.DebugLevel.WIFI=WIFI -esp210.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -esp210.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -esp210.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -esp210.menu.DebugLevel.UPDATER=UPDATER -esp210.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -esp210.menu.DebugLevel.OTA=OTA -esp210.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp210.menu.DebugLevel.OOM=OOM -esp210.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -esp210.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -esp210.menu.FlashErase.none=Only Sketch -esp210.menu.FlashErase.none.upload.erase_cmd= -esp210.menu.FlashErase.sdk=Sketch + WiFi Settings -esp210.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -esp210.menu.FlashErase.all=All Flash Contents -esp210.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -esp210.menu.UploadSpeed.57600=57600 -esp210.menu.UploadSpeed.57600.upload.speed=57600 -esp210.menu.UploadSpeed.9600=9600 -esp210.menu.UploadSpeed.9600.upload.speed=9600 -esp210.menu.UploadSpeed.115200=115200 -esp210.menu.UploadSpeed.115200.upload.speed=115200 -esp210.menu.UploadSpeed.230400.linux=230400 -esp210.menu.UploadSpeed.230400.macosx=230400 -esp210.menu.UploadSpeed.230400.upload.speed=230400 -esp210.menu.UploadSpeed.256000.windows=256000 -esp210.menu.UploadSpeed.256000.upload.speed=256000 -esp210.menu.UploadSpeed.460800.linux=460800 -esp210.menu.UploadSpeed.460800.macosx=460800 -esp210.menu.UploadSpeed.460800.upload.speed=460800 -esp210.menu.UploadSpeed.512000.windows=512000 -esp210.menu.UploadSpeed.512000.upload.speed=512000 -esp210.menu.UploadSpeed.921600=921600 -esp210.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -d1_mini.name=WeMos D1 R2 & mini -d1_mini.build.board=ESP8266_WEMOS_D1MINI -d1_mini.build.variant=d1_mini -d1_mini.upload.tool=esptool -d1_mini.upload.maximum_data_size=81920 -d1_mini.upload.wait_for_upload_port=true -d1_mini.upload.erase_cmd= -d1_mini.serial.disableDTR=true -d1_mini.serial.disableRTS=true -d1_mini.build.mcu=esp8266 -d1_mini.build.core=esp8266 -d1_mini.build.spiffs_pagesize=256 -d1_mini.build.debug_port= -d1_mini.build.debug_level= -d1_mini.menu.CpuFrequency.80=80 MHz -d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini.menu.CpuFrequency.160=160 MHz -d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini.upload.resetmethod=nodemcu -d1_mini.build.flash_mode=dio -d1_mini.build.flash_freq=40 -d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1_mini.menu.FlashSize.4M1M.build.flash_size=4M -d1_mini.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -d1_mini.menu.FlashSize.4M1M.upload.maximum_size=1044464 -d1_mini.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1_mini.menu.FlashSize.4M3M.build.flash_size=4M -d1_mini.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -d1_mini.menu.FlashSize.4M3M.upload.maximum_size=1044464 -d1_mini.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1_mini.menu.LwIPVariant.v2mss536=v2 Lower Memory -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini.menu.LwIPVariant.OpenSource=v1.4 Compile from source -d1_mini.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini.menu.Debug.Disabled=Disabled -d1_mini.menu.Debug.Disabled.build.debug_port= -d1_mini.menu.Debug.Serial=Serial -d1_mini.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini.menu.Debug.Serial1=Serial1 -d1_mini.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini.menu.DebugLevel.None____=None -d1_mini.menu.DebugLevel.None____.build.debug_level= -d1_mini.menu.DebugLevel.SSL=SSL -d1_mini.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini.menu.DebugLevel.CORE=CORE -d1_mini.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini.menu.DebugLevel.WIFI=WIFI -d1_mini.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini.menu.DebugLevel.UPDATER=UPDATER -d1_mini.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini.menu.DebugLevel.OTA=OTA -d1_mini.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini.menu.DebugLevel.OOM=OOM -d1_mini.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini.menu.FlashErase.none=Only Sketch -d1_mini.menu.FlashErase.none.upload.erase_cmd= -d1_mini.menu.FlashErase.sdk=Sketch + WiFi Settings -d1_mini.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -d1_mini.menu.FlashErase.all=All Flash Contents -d1_mini.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -d1_mini.menu.UploadSpeed.921600=921600 -d1_mini.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini.menu.UploadSpeed.9600=9600 -d1_mini.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini.menu.UploadSpeed.57600=57600 -d1_mini.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini.menu.UploadSpeed.115200=115200 -d1_mini.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini.menu.UploadSpeed.230400.linux=230400 -d1_mini.menu.UploadSpeed.230400.macosx=230400 -d1_mini.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini.menu.UploadSpeed.256000.windows=256000 -d1_mini.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini.menu.UploadSpeed.460800.linux=460800 -d1_mini.menu.UploadSpeed.460800.macosx=460800 -d1_mini.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini.menu.UploadSpeed.512000.windows=512000 -d1_mini.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1_mini_pro.name=WeMos D1 mini Pro -d1_mini_pro.build.board=ESP8266_WEMOS_D1MINIPRO -d1_mini_pro.build.variant=d1_mini -d1_mini_pro.upload.tool=esptool -d1_mini_pro.upload.maximum_data_size=81920 -d1_mini_pro.upload.wait_for_upload_port=true -d1_mini_pro.upload.erase_cmd= -d1_mini_pro.serial.disableDTR=true -d1_mini_pro.serial.disableRTS=true -d1_mini_pro.build.mcu=esp8266 -d1_mini_pro.build.core=esp8266 -d1_mini_pro.build.spiffs_pagesize=256 -d1_mini_pro.build.debug_port= -d1_mini_pro.build.debug_level= -d1_mini_pro.menu.CpuFrequency.80=80 MHz -d1_mini_pro.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini_pro.menu.CpuFrequency.160=160 MHz -d1_mini_pro.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini_pro.upload.resetmethod=nodemcu -d1_mini_pro.build.flash_mode=dio -d1_mini_pro.build.flash_freq=40 -d1_mini_pro.menu.FlashSize.16M15M=16M (15M SPIFFS) -d1_mini_pro.menu.FlashSize.16M15M.build.flash_size=16M -d1_mini_pro.menu.FlashSize.16M15M.build.flash_size_bytes=0x1000000 -d1_mini_pro.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_pagesize=256 -d1_mini_pro.menu.FlashSize.16M15M.upload.maximum_size=1044464 -d1_mini_pro.menu.FlashSize.16M15M.build.rfcal_addr=0xFFC000 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 -d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -d1_mini_pro.menu.LwIPVariant.v2mss536=v2 Lower Memory -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini_pro.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini_pro.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini_pro.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini_pro.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_pro.menu.LwIPVariant.OpenSource=v1.4 Compile from source -d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_pro.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini_pro.menu.Debug.Disabled=Disabled -d1_mini_pro.menu.Debug.Disabled.build.debug_port= -d1_mini_pro.menu.Debug.Serial=Serial -d1_mini_pro.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini_pro.menu.Debug.Serial1=Serial1 -d1_mini_pro.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini_pro.menu.DebugLevel.None____=None -d1_mini_pro.menu.DebugLevel.None____.build.debug_level= -d1_mini_pro.menu.DebugLevel.SSL=SSL -d1_mini_pro.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini_pro.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini_pro.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini_pro.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini_pro.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_pro.menu.DebugLevel.CORE=CORE -d1_mini_pro.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini_pro.menu.DebugLevel.WIFI=WIFI -d1_mini_pro.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini_pro.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini_pro.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini_pro.menu.DebugLevel.UPDATER=UPDATER -d1_mini_pro.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini_pro.menu.DebugLevel.OTA=OTA -d1_mini_pro.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini_pro.menu.DebugLevel.OOM=OOM -d1_mini_pro.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini_pro.menu.FlashErase.none=Only Sketch -d1_mini_pro.menu.FlashErase.none.upload.erase_cmd= -d1_mini_pro.menu.FlashErase.sdk=Sketch + WiFi Settings -d1_mini_pro.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -d1_mini_pro.menu.FlashErase.all=All Flash Contents -d1_mini_pro.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -d1_mini_pro.menu.UploadSpeed.921600=921600 -d1_mini_pro.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini_pro.menu.UploadSpeed.9600=9600 -d1_mini_pro.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini_pro.menu.UploadSpeed.57600=57600 -d1_mini_pro.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini_pro.menu.UploadSpeed.115200=115200 -d1_mini_pro.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini_pro.menu.UploadSpeed.230400.linux=230400 -d1_mini_pro.menu.UploadSpeed.230400.macosx=230400 -d1_mini_pro.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini_pro.menu.UploadSpeed.256000.windows=256000 -d1_mini_pro.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini_pro.menu.UploadSpeed.460800.linux=460800 -d1_mini_pro.menu.UploadSpeed.460800.macosx=460800 -d1_mini_pro.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini_pro.menu.UploadSpeed.512000.windows=512000 -d1_mini_pro.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1_mini_lite.name=WeMos D1 mini Lite -d1_mini_lite.build.board=ESP8266_WEMOS_D1MINILITE -d1_mini_lite.build.variant=d1_mini -d1_mini_lite.upload.tool=esptool -d1_mini_lite.upload.maximum_data_size=81920 -d1_mini_lite.upload.wait_for_upload_port=true -d1_mini_lite.upload.erase_cmd= -d1_mini_lite.serial.disableDTR=true -d1_mini_lite.serial.disableRTS=true -d1_mini_lite.build.mcu=esp8266 -d1_mini_lite.build.core=esp8266 -d1_mini_lite.build.spiffs_pagesize=256 -d1_mini_lite.build.debug_port= -d1_mini_lite.build.debug_level= -d1_mini_lite.menu.CpuFrequency.80=80 MHz -d1_mini_lite.menu.CpuFrequency.80.build.f_cpu=80000000L -d1_mini_lite.menu.CpuFrequency.160=160 MHz -d1_mini_lite.menu.CpuFrequency.160.build.f_cpu=160000000L -d1_mini_lite.upload.resetmethod=nodemcu -d1_mini_lite.build.flash_mode=dout -d1_mini_lite.build.flash_freq=40 -d1_mini_lite.menu.FlashSize.1M0=1M (no SPIFFS) -d1_mini_lite.menu.FlashSize.1M0.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M0.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -d1_mini_lite.menu.FlashSize.1M0.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M0.upload.maximum_size=1023984 -d1_mini_lite.menu.FlashSize.1M0.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M64=1M (64K SPIFFS) -d1_mini_lite.menu.FlashSize.1M64.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M64.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M64.upload.maximum_size=958448 -d1_mini_lite.menu.FlashSize.1M64.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M128=1M (128K SPIFFS) -d1_mini_lite.menu.FlashSize.1M128.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M128.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M128.upload.maximum_size=892912 -d1_mini_lite.menu.FlashSize.1M128.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M144=1M (144K SPIFFS) -d1_mini_lite.menu.FlashSize.1M144.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M144.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M144.upload.maximum_size=876528 -d1_mini_lite.menu.FlashSize.1M144.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M160=1M (160K SPIFFS) -d1_mini_lite.menu.FlashSize.1M160.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M160.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M160.upload.maximum_size=860144 -d1_mini_lite.menu.FlashSize.1M160.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M192=1M (192K SPIFFS) -d1_mini_lite.menu.FlashSize.1M192.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M192.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M192.upload.maximum_size=827376 -d1_mini_lite.menu.FlashSize.1M192.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M256=1M (256K SPIFFS) -d1_mini_lite.menu.FlashSize.1M256.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M256.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M256.upload.maximum_size=761840 -d1_mini_lite.menu.FlashSize.1M256.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -d1_mini_lite.menu.FlashSize.1M512=1M (512K SPIFFS) -d1_mini_lite.menu.FlashSize.1M512.build.flash_size=1M -d1_mini_lite.menu.FlashSize.1M512.build.flash_size_bytes=0x100000 -d1_mini_lite.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_pagesize=256 -d1_mini_lite.menu.FlashSize.1M512.upload.maximum_size=499696 -d1_mini_lite.menu.FlashSize.1M512.build.rfcal_addr=0xFC000 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -d1_mini_lite.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -d1_mini_lite.menu.LwIPVariant.v2mss536=v2 Lower Memory -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1_mini_lite.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1_mini_lite.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1_mini_lite.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1_mini_lite.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_lite.menu.LwIPVariant.OpenSource=v1.4 Compile from source -d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_lite.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1_mini_lite.menu.Debug.Disabled=Disabled -d1_mini_lite.menu.Debug.Disabled.build.debug_port= -d1_mini_lite.menu.Debug.Serial=Serial -d1_mini_lite.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1_mini_lite.menu.Debug.Serial1=Serial1 -d1_mini_lite.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1_mini_lite.menu.DebugLevel.None____=None -d1_mini_lite.menu.DebugLevel.None____.build.debug_level= -d1_mini_lite.menu.DebugLevel.SSL=SSL -d1_mini_lite.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1_mini_lite.menu.DebugLevel.TLS_MEM=TLS_MEM -d1_mini_lite.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1_mini_lite.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1_mini_lite.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1_mini_lite.menu.DebugLevel.CORE=CORE -d1_mini_lite.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1_mini_lite.menu.DebugLevel.WIFI=WIFI -d1_mini_lite.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1_mini_lite.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1_mini_lite.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1_mini_lite.menu.DebugLevel.UPDATER=UPDATER -d1_mini_lite.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1_mini_lite.menu.DebugLevel.OTA=OTA -d1_mini_lite.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini_lite.menu.DebugLevel.OOM=OOM -d1_mini_lite.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1_mini_lite.menu.FlashErase.none=Only Sketch -d1_mini_lite.menu.FlashErase.none.upload.erase_cmd= -d1_mini_lite.menu.FlashErase.sdk=Sketch + WiFi Settings -d1_mini_lite.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -d1_mini_lite.menu.FlashErase.all=All Flash Contents -d1_mini_lite.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -d1_mini_lite.menu.UploadSpeed.921600=921600 -d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 -d1_mini_lite.menu.UploadSpeed.9600=9600 -d1_mini_lite.menu.UploadSpeed.9600.upload.speed=9600 -d1_mini_lite.menu.UploadSpeed.57600=57600 -d1_mini_lite.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini_lite.menu.UploadSpeed.115200=115200 -d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200 -d1_mini_lite.menu.UploadSpeed.230400.linux=230400 -d1_mini_lite.menu.UploadSpeed.230400.macosx=230400 -d1_mini_lite.menu.UploadSpeed.230400.upload.speed=230400 -d1_mini_lite.menu.UploadSpeed.256000.windows=256000 -d1_mini_lite.menu.UploadSpeed.256000.upload.speed=256000 -d1_mini_lite.menu.UploadSpeed.460800.linux=460800 -d1_mini_lite.menu.UploadSpeed.460800.macosx=460800 -d1_mini_lite.menu.UploadSpeed.460800.upload.speed=460800 -d1_mini_lite.menu.UploadSpeed.512000.windows=512000 -d1_mini_lite.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -d1.name=WeMos D1 R1 -d1.build.board=ESP8266_WEMOS_D1R1 -d1.build.variant=d1 -d1.upload.tool=esptool -d1.upload.maximum_data_size=81920 -d1.upload.wait_for_upload_port=true -d1.upload.erase_cmd= -d1.serial.disableDTR=true -d1.serial.disableRTS=true -d1.build.mcu=esp8266 -d1.build.core=esp8266 -d1.build.spiffs_pagesize=256 -d1.build.debug_port= -d1.build.debug_level= -d1.menu.CpuFrequency.80=80 MHz -d1.menu.CpuFrequency.80.build.f_cpu=80000000L -d1.menu.CpuFrequency.160=160 MHz -d1.menu.CpuFrequency.160.build.f_cpu=160000000L -d1.upload.resetmethod=nodemcu -d1.build.flash_mode=dio -d1.build.flash_freq=40 -d1.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1.menu.FlashSize.4M1M.build.flash_size=4M -d1.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -d1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -d1.menu.FlashSize.4M1M.upload.maximum_size=1044464 -d1.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -d1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1.menu.FlashSize.4M3M.build.flash_size=4M -d1.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -d1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -d1.menu.FlashSize.4M3M.upload.maximum_size=1044464 -d1.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1.menu.LwIPVariant.v2mss536=v2 Lower Memory -d1.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -d1.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -d1.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -d1.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -d1.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -d1.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -d1.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -d1.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -d1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -d1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1.menu.LwIPVariant.OpenSource=v1.4 Compile from source -d1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -d1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -d1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -d1.menu.Debug.Disabled=Disabled -d1.menu.Debug.Disabled.build.debug_port= -d1.menu.Debug.Serial=Serial -d1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -d1.menu.Debug.Serial1=Serial1 -d1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -d1.menu.DebugLevel.None____=None -d1.menu.DebugLevel.None____.build.debug_level= -d1.menu.DebugLevel.SSL=SSL -d1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -d1.menu.DebugLevel.TLS_MEM=TLS_MEM -d1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -d1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -d1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -d1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -d1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -d1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -d1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -d1.menu.DebugLevel.CORE=CORE -d1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -d1.menu.DebugLevel.WIFI=WIFI -d1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -d1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -d1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -d1.menu.DebugLevel.UPDATER=UPDATER -d1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -d1.menu.DebugLevel.OTA=OTA -d1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1.menu.DebugLevel.OOM=OOM -d1.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -d1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -d1.menu.FlashErase.none=Only Sketch -d1.menu.FlashErase.none.upload.erase_cmd= -d1.menu.FlashErase.sdk=Sketch + WiFi Settings -d1.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -d1.menu.FlashErase.all=All Flash Contents -d1.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -d1.menu.UploadSpeed.921600=921600 -d1.menu.UploadSpeed.921600.upload.speed=921600 -d1.menu.UploadSpeed.9600=9600 -d1.menu.UploadSpeed.9600.upload.speed=9600 -d1.menu.UploadSpeed.57600=57600 -d1.menu.UploadSpeed.57600.upload.speed=57600 -d1.menu.UploadSpeed.115200=115200 -d1.menu.UploadSpeed.115200.upload.speed=115200 -d1.menu.UploadSpeed.230400.linux=230400 -d1.menu.UploadSpeed.230400.macosx=230400 -d1.menu.UploadSpeed.230400.upload.speed=230400 -d1.menu.UploadSpeed.256000.windows=256000 -d1.menu.UploadSpeed.256000.upload.speed=256000 -d1.menu.UploadSpeed.460800.linux=460800 -d1.menu.UploadSpeed.460800.macosx=460800 -d1.menu.UploadSpeed.460800.upload.speed=460800 -d1.menu.UploadSpeed.512000.windows=512000 -d1.menu.UploadSpeed.512000.upload.speed=512000 - -############################################################## -espino.name=ESPino (ESP-12 Module) -espino.build.board=ESP8266_ESP12 -espino.build.variant=espino -espino.upload.tool=esptool -espino.upload.maximum_data_size=81920 -espino.upload.wait_for_upload_port=true -espino.upload.erase_cmd= -espino.serial.disableDTR=true -espino.serial.disableRTS=true -espino.build.mcu=esp8266 -espino.build.core=esp8266 -espino.build.spiffs_pagesize=256 -espino.build.debug_port= -espino.build.debug_level= -espino.menu.CpuFrequency.80=80 MHz -espino.menu.CpuFrequency.80.build.f_cpu=80000000L -espino.menu.CpuFrequency.160=160 MHz -espino.menu.CpuFrequency.160.build.f_cpu=160000000L -espino.menu.ResetMethod.ck=ck -espino.menu.ResetMethod.ck.upload.resetmethod=ck -espino.menu.ResetMethod.nodemcu=nodemcu -espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espino.build.flash_mode=qio -espino.build.flash_freq=40 -espino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espino.menu.FlashSize.4M1M.build.flash_size=4M -espino.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -espino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espino.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espino.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -espino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espino.menu.FlashSize.4M3M.build.flash_size=4M -espino.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -espino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espino.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espino.menu.LwIPVariant.v2mss536=v2 Lower Memory -espino.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espino.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espino.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espino.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -espino.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espino.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espino.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espino.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -espino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espino.menu.LwIPVariant.OpenSource=v1.4 Compile from source -espino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espino.menu.Debug.Disabled=Disabled -espino.menu.Debug.Disabled.build.debug_port= -espino.menu.Debug.Serial=Serial -espino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espino.menu.Debug.Serial1=Serial1 -espino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espino.menu.DebugLevel.None____=None -espino.menu.DebugLevel.None____.build.debug_level= -espino.menu.DebugLevel.SSL=SSL -espino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espino.menu.DebugLevel.TLS_MEM=TLS_MEM -espino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espino.menu.DebugLevel.CORE=CORE -espino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espino.menu.DebugLevel.WIFI=WIFI -espino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espino.menu.DebugLevel.UPDATER=UPDATER -espino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espino.menu.DebugLevel.OTA=OTA -espino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espino.menu.DebugLevel.OOM=OOM -espino.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espino.menu.FlashErase.none=Only Sketch -espino.menu.FlashErase.none.upload.erase_cmd= -espino.menu.FlashErase.sdk=Sketch + WiFi Settings -espino.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -espino.menu.FlashErase.all=All Flash Contents -espino.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -espino.menu.UploadSpeed.115200=115200 -espino.menu.UploadSpeed.115200.upload.speed=115200 -espino.menu.UploadSpeed.9600=9600 -espino.menu.UploadSpeed.9600.upload.speed=9600 -espino.menu.UploadSpeed.57600=57600 -espino.menu.UploadSpeed.57600.upload.speed=57600 -espino.menu.UploadSpeed.230400.linux=230400 -espino.menu.UploadSpeed.230400.macosx=230400 -espino.menu.UploadSpeed.230400.upload.speed=230400 -espino.menu.UploadSpeed.256000.windows=256000 -espino.menu.UploadSpeed.256000.upload.speed=256000 -espino.menu.UploadSpeed.460800.linux=460800 -espino.menu.UploadSpeed.460800.macosx=460800 -espino.menu.UploadSpeed.460800.upload.speed=460800 -espino.menu.UploadSpeed.512000.windows=512000 -espino.menu.UploadSpeed.512000.upload.speed=512000 -espino.menu.UploadSpeed.921600=921600 -espino.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -espinotee.name=ThaiEasyElec's ESPino -espinotee.build.board=ESP8266_ESP13 -espinotee.build.variant=espinotee -espinotee.upload.tool=esptool -espinotee.upload.maximum_data_size=81920 -espinotee.upload.wait_for_upload_port=true -espinotee.upload.erase_cmd= -espinotee.serial.disableDTR=true -espinotee.serial.disableRTS=true -espinotee.build.mcu=esp8266 -espinotee.build.core=esp8266 -espinotee.build.spiffs_pagesize=256 -espinotee.build.debug_port= -espinotee.build.debug_level= -espinotee.menu.CpuFrequency.80=80 MHz -espinotee.menu.CpuFrequency.80.build.f_cpu=80000000L -espinotee.menu.CpuFrequency.160=160 MHz -espinotee.menu.CpuFrequency.160.build.f_cpu=160000000L -espinotee.upload.resetmethod=nodemcu -espinotee.build.flash_mode=qio -espinotee.build.flash_freq=40 -espinotee.menu.FlashSize.4M1M=4M (1M SPIFFS) -espinotee.menu.FlashSize.4M1M.build.flash_size=4M -espinotee.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -espinotee.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espinotee.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espinotee.menu.FlashSize.4M1M.upload.maximum_size=1044464 -espinotee.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -espinotee.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espinotee.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espinotee.menu.FlashSize.4M3M=4M (3M SPIFFS) -espinotee.menu.FlashSize.4M3M.build.flash_size=4M -espinotee.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -espinotee.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espinotee.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -espinotee.menu.FlashSize.4M3M.upload.maximum_size=1044464 -espinotee.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espinotee.menu.LwIPVariant.v2mss536=v2 Lower Memory -espinotee.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -espinotee.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -espinotee.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -espinotee.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -espinotee.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -espinotee.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -espinotee.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -espinotee.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espinotee.menu.LwIPVariant.OpenSource=v1.4 Compile from source -espinotee.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -espinotee.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -espinotee.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -espinotee.menu.Debug.Disabled=Disabled -espinotee.menu.Debug.Disabled.build.debug_port= -espinotee.menu.Debug.Serial=Serial -espinotee.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -espinotee.menu.Debug.Serial1=Serial1 -espinotee.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -espinotee.menu.DebugLevel.None____=None -espinotee.menu.DebugLevel.None____.build.debug_level= -espinotee.menu.DebugLevel.SSL=SSL -espinotee.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -espinotee.menu.DebugLevel.TLS_MEM=TLS_MEM -espinotee.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -espinotee.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -espinotee.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -espinotee.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -espinotee.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -espinotee.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -espinotee.menu.DebugLevel.CORE=CORE -espinotee.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -espinotee.menu.DebugLevel.WIFI=WIFI -espinotee.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -espinotee.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -espinotee.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -espinotee.menu.DebugLevel.UPDATER=UPDATER -espinotee.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -espinotee.menu.DebugLevel.OTA=OTA -espinotee.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espinotee.menu.DebugLevel.OOM=OOM -espinotee.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -espinotee.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -espinotee.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -espinotee.menu.FlashErase.none=Only Sketch -espinotee.menu.FlashErase.none.upload.erase_cmd= -espinotee.menu.FlashErase.sdk=Sketch + WiFi Settings -espinotee.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -espinotee.menu.FlashErase.all=All Flash Contents -espinotee.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -espinotee.menu.UploadSpeed.115200=115200 -espinotee.menu.UploadSpeed.115200.upload.speed=115200 -espinotee.menu.UploadSpeed.9600=9600 -espinotee.menu.UploadSpeed.9600.upload.speed=9600 -espinotee.menu.UploadSpeed.57600=57600 -espinotee.menu.UploadSpeed.57600.upload.speed=57600 -espinotee.menu.UploadSpeed.230400.linux=230400 -espinotee.menu.UploadSpeed.230400.macosx=230400 -espinotee.menu.UploadSpeed.230400.upload.speed=230400 -espinotee.menu.UploadSpeed.256000.windows=256000 -espinotee.menu.UploadSpeed.256000.upload.speed=256000 -espinotee.menu.UploadSpeed.460800.linux=460800 -espinotee.menu.UploadSpeed.460800.macosx=460800 -espinotee.menu.UploadSpeed.460800.upload.speed=460800 -espinotee.menu.UploadSpeed.512000.windows=512000 -espinotee.menu.UploadSpeed.512000.upload.speed=512000 -espinotee.menu.UploadSpeed.921600=921600 -espinotee.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -wifinfo.name=WifInfo -wifinfo.menu.ESPModule.ESP12.build.board=ESP8266_ESP12 -wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464 -wifinfo.menu.ESPModule.ESP12.build.spiffs_pagesize=256 -wifinfo.menu.ESPModule.ESP12.build.flash_ld=eagle.flash.4m1m.ld -wifinfo.menu.ESPModule.ESP07192.build.spiffs_blocksize=4096 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_end=0xFB000 -wifinfo.menu.ESPModule.ESP12=ESP12 (4M/1M SPIFFS) -wifinfo.menu.ESPModule.ESP12.build.spiffs_start=0x300000 -wifinfo.menu.ESPModule.ESP12.build.spiffs_end=0x3FB000 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_start=0xCB000 -wifinfo.menu.ESPModule.ESP07192.build.board=ESP8266_ESP07 -wifinfo.menu.ESPModule.ESP12.build.spiffs_blocksize=8192 -wifinfo.menu.ESPModule.ESP12.build.flash_size=4M -wifinfo.build.board=WIFINFO -wifinfo.build.variant=wifinfo -wifinfo.menu.ESPModule.ESP07192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M -wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) -wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 -wifinfo.upload.tool=esptool -wifinfo.upload.maximum_data_size=81920 -wifinfo.upload.wait_for_upload_port=true -wifinfo.upload.erase_cmd= -wifinfo.serial.disableDTR=true -wifinfo.serial.disableRTS=true -wifinfo.build.mcu=esp8266 -wifinfo.build.core=esp8266 -wifinfo.build.spiffs_pagesize=256 -wifinfo.build.debug_port= -wifinfo.build.debug_level= -wifinfo.menu.CpuFrequency.80=80 MHz -wifinfo.menu.CpuFrequency.80.build.f_cpu=80000000L -wifinfo.menu.CpuFrequency.160=160 MHz -wifinfo.menu.CpuFrequency.160.build.f_cpu=160000000L -wifinfo.upload.resetmethod=nodemcu -wifinfo.build.flash_mode=qio -wifinfo.menu.FlashFreq.40=40MHz -wifinfo.menu.FlashFreq.40.build.flash_freq=40 -wifinfo.menu.FlashFreq.80=80MHz -wifinfo.menu.FlashFreq.80.build.flash_freq=80 -wifinfo.menu.FlashSize.1M0=1M (no SPIFFS) -wifinfo.menu.FlashSize.1M0.build.flash_size=1M -wifinfo.menu.FlashSize.1M0.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -wifinfo.menu.FlashSize.1M0.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M0.upload.maximum_size=1023984 -wifinfo.menu.FlashSize.1M0.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M64=1M (64K SPIFFS) -wifinfo.menu.FlashSize.1M64.build.flash_size=1M -wifinfo.menu.FlashSize.1M64.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -wifinfo.menu.FlashSize.1M64.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M64.upload.maximum_size=958448 -wifinfo.menu.FlashSize.1M64.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -wifinfo.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M128=1M (128K SPIFFS) -wifinfo.menu.FlashSize.1M128.build.flash_size=1M -wifinfo.menu.FlashSize.1M128.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -wifinfo.menu.FlashSize.1M128.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M128.upload.maximum_size=892912 -wifinfo.menu.FlashSize.1M128.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -wifinfo.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M144=1M (144K SPIFFS) -wifinfo.menu.FlashSize.1M144.build.flash_size=1M -wifinfo.menu.FlashSize.1M144.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -wifinfo.menu.FlashSize.1M144.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M144.upload.maximum_size=876528 -wifinfo.menu.FlashSize.1M144.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -wifinfo.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M160=1M (160K SPIFFS) -wifinfo.menu.FlashSize.1M160.build.flash_size=1M -wifinfo.menu.FlashSize.1M160.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -wifinfo.menu.FlashSize.1M160.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M160.upload.maximum_size=860144 -wifinfo.menu.FlashSize.1M160.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -wifinfo.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M192=1M (192K SPIFFS) -wifinfo.menu.FlashSize.1M192.build.flash_size=1M -wifinfo.menu.FlashSize.1M192.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.FlashSize.1M192.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M192.upload.maximum_size=827376 -wifinfo.menu.FlashSize.1M192.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -wifinfo.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M256=1M (256K SPIFFS) -wifinfo.menu.FlashSize.1M256.build.flash_size=1M -wifinfo.menu.FlashSize.1M256.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -wifinfo.menu.FlashSize.1M256.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M256.upload.maximum_size=761840 -wifinfo.menu.FlashSize.1M256.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -wifinfo.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -wifinfo.menu.FlashSize.1M512=1M (512K SPIFFS) -wifinfo.menu.FlashSize.1M512.build.flash_size=1M -wifinfo.menu.FlashSize.1M512.build.flash_size_bytes=0x100000 -wifinfo.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -wifinfo.menu.FlashSize.1M512.build.spiffs_pagesize=256 -wifinfo.menu.FlashSize.1M512.upload.maximum_size=499696 -wifinfo.menu.FlashSize.1M512.build.rfcal_addr=0xFC000 -wifinfo.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -wifinfo.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -wifinfo.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -wifinfo.menu.LwIPVariant.v2mss536=v2 Lower Memory -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -wifinfo.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -wifinfo.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -wifinfo.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -wifinfo.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -wifinfo.menu.LwIPVariant.OpenSource=v1.4 Compile from source -wifinfo.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -wifinfo.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -wifinfo.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -wifinfo.menu.Debug.Disabled=Disabled -wifinfo.menu.Debug.Disabled.build.debug_port= -wifinfo.menu.Debug.Serial=Serial -wifinfo.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -wifinfo.menu.Debug.Serial1=Serial1 -wifinfo.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -wifinfo.menu.DebugLevel.None____=None -wifinfo.menu.DebugLevel.None____.build.debug_level= -wifinfo.menu.DebugLevel.SSL=SSL -wifinfo.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -wifinfo.menu.DebugLevel.TLS_MEM=TLS_MEM -wifinfo.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -wifinfo.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -wifinfo.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -wifinfo.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -wifinfo.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -wifinfo.menu.DebugLevel.CORE=CORE -wifinfo.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -wifinfo.menu.DebugLevel.WIFI=WIFI -wifinfo.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -wifinfo.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -wifinfo.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -wifinfo.menu.DebugLevel.UPDATER=UPDATER -wifinfo.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -wifinfo.menu.DebugLevel.OTA=OTA -wifinfo.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -wifinfo.menu.DebugLevel.OOM=OOM -wifinfo.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -wifinfo.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -wifinfo.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -wifinfo.menu.FlashErase.none=Only Sketch -wifinfo.menu.FlashErase.none.upload.erase_cmd= -wifinfo.menu.FlashErase.sdk=Sketch + WiFi Settings -wifinfo.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -wifinfo.menu.FlashErase.all=All Flash Contents -wifinfo.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -wifinfo.menu.UploadSpeed.115200=115200 -wifinfo.menu.UploadSpeed.115200.upload.speed=115200 -wifinfo.menu.UploadSpeed.9600=9600 -wifinfo.menu.UploadSpeed.9600.upload.speed=9600 -wifinfo.menu.UploadSpeed.57600=57600 -wifinfo.menu.UploadSpeed.57600.upload.speed=57600 -wifinfo.menu.UploadSpeed.230400.linux=230400 -wifinfo.menu.UploadSpeed.230400.macosx=230400 -wifinfo.menu.UploadSpeed.230400.upload.speed=230400 -wifinfo.menu.UploadSpeed.256000.windows=256000 -wifinfo.menu.UploadSpeed.256000.upload.speed=256000 -wifinfo.menu.UploadSpeed.460800.linux=460800 -wifinfo.menu.UploadSpeed.460800.macosx=460800 -wifinfo.menu.UploadSpeed.460800.upload.speed=460800 -wifinfo.menu.UploadSpeed.512000.windows=512000 -wifinfo.menu.UploadSpeed.512000.upload.speed=512000 -wifinfo.menu.UploadSpeed.921600=921600 -wifinfo.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -arduino-esp8266.name=Arduino -arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO -arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI -arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 -arduino-esp8266.menu.BoardModel.primo=Primo -arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi -arduino-esp8266.menu.BoardModel.starottodeved=Star OTTO -arduino-esp8266.build.board=ESP8266_ARDUINO -arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO -arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi -arduino-esp8266.upload.tool=esptool -arduino-esp8266.upload.maximum_data_size=81920 -arduino-esp8266.upload.wait_for_upload_port=true -arduino-esp8266.upload.erase_cmd= -arduino-esp8266.serial.disableDTR=true -arduino-esp8266.serial.disableRTS=true -arduino-esp8266.build.mcu=esp8266 -arduino-esp8266.build.core=esp8266 -arduino-esp8266.build.variant=generic -arduino-esp8266.build.spiffs_pagesize=256 -arduino-esp8266.build.debug_port= -arduino-esp8266.build.debug_level= -arduino-esp8266.menu.CpuFrequency.80=80 MHz -arduino-esp8266.menu.CpuFrequency.80.build.f_cpu=80000000L -arduino-esp8266.menu.CpuFrequency.160=160 MHz -arduino-esp8266.menu.CpuFrequency.160.build.f_cpu=160000000L -arduino-esp8266.upload.resetmethod=ck -arduino-esp8266.build.flash_mode=qio -arduino-esp8266.build.flash_freq=40 -arduino-esp8266.menu.FlashSize.4M1M=4M (1M SPIFFS) -arduino-esp8266.menu.FlashSize.4M1M.build.flash_size=4M -arduino-esp8266.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -arduino-esp8266.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -arduino-esp8266.menu.FlashSize.4M1M.upload.maximum_size=1044464 -arduino-esp8266.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.FlashSize.4M3M=4M (3M SPIFFS) -arduino-esp8266.menu.FlashSize.4M3M.build.flash_size=4M -arduino-esp8266.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -arduino-esp8266.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -arduino-esp8266.menu.FlashSize.4M3M.upload.maximum_size=1044464 -arduino-esp8266.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.LwIPVariant.v2mss536=v2 Lower Memory -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -arduino-esp8266.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -arduino-esp8266.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -arduino-esp8266.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -arduino-esp8266.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -arduino-esp8266.menu.LwIPVariant.OpenSource=v1.4 Compile from source -arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -arduino-esp8266.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -arduino-esp8266.menu.Debug.Disabled=Disabled -arduino-esp8266.menu.Debug.Disabled.build.debug_port= -arduino-esp8266.menu.Debug.Serial=Serial -arduino-esp8266.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -arduino-esp8266.menu.Debug.Serial1=Serial1 -arduino-esp8266.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -arduino-esp8266.menu.DebugLevel.None____=None -arduino-esp8266.menu.DebugLevel.None____.build.debug_level= -arduino-esp8266.menu.DebugLevel.SSL=SSL -arduino-esp8266.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -arduino-esp8266.menu.DebugLevel.TLS_MEM=TLS_MEM -arduino-esp8266.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -arduino-esp8266.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -arduino-esp8266.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -arduino-esp8266.menu.DebugLevel.CORE=CORE -arduino-esp8266.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -arduino-esp8266.menu.DebugLevel.WIFI=WIFI -arduino-esp8266.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -arduino-esp8266.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -arduino-esp8266.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -arduino-esp8266.menu.DebugLevel.UPDATER=UPDATER -arduino-esp8266.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -arduino-esp8266.menu.DebugLevel.OTA=OTA -arduino-esp8266.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -arduino-esp8266.menu.DebugLevel.OOM=OOM -arduino-esp8266.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -arduino-esp8266.menu.FlashErase.none=Only Sketch -arduino-esp8266.menu.FlashErase.none.upload.erase_cmd= -arduino-esp8266.menu.FlashErase.sdk=Sketch + WiFi Settings -arduino-esp8266.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -arduino-esp8266.menu.FlashErase.all=All Flash Contents -arduino-esp8266.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -arduino-esp8266.menu.UploadSpeed.115200=115200 -arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 -arduino-esp8266.menu.UploadSpeed.9600=9600 -arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 -arduino-esp8266.menu.UploadSpeed.57600=57600 -arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 -arduino-esp8266.menu.UploadSpeed.230400.linux=230400 -arduino-esp8266.menu.UploadSpeed.230400.macosx=230400 -arduino-esp8266.menu.UploadSpeed.230400.upload.speed=230400 -arduino-esp8266.menu.UploadSpeed.256000.windows=256000 -arduino-esp8266.menu.UploadSpeed.256000.upload.speed=256000 -arduino-esp8266.menu.UploadSpeed.460800.linux=460800 -arduino-esp8266.menu.UploadSpeed.460800.macosx=460800 -arduino-esp8266.menu.UploadSpeed.460800.upload.speed=460800 -arduino-esp8266.menu.UploadSpeed.512000.windows=512000 -arduino-esp8266.menu.UploadSpeed.512000.upload.speed=512000 -arduino-esp8266.menu.UploadSpeed.921600=921600 -arduino-esp8266.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -gen4iod.name=4D Systems gen4 IoD Range -gen4iod.build.board=GEN4_IOD -gen4iod.build.f_cpu=160000000L -gen4iod.build.variant=generic -gen4iod.upload.tool=esptool -gen4iod.upload.maximum_data_size=81920 -gen4iod.upload.wait_for_upload_port=true -gen4iod.upload.erase_cmd= -gen4iod.serial.disableDTR=true -gen4iod.serial.disableRTS=true -gen4iod.build.mcu=esp8266 -gen4iod.build.core=esp8266 -gen4iod.build.spiffs_pagesize=256 -gen4iod.build.debug_port= -gen4iod.build.debug_level= -gen4iod.menu.CpuFrequency.80=80 MHz -gen4iod.menu.CpuFrequency.80.build.f_cpu=80000000L -gen4iod.menu.CpuFrequency.160=160 MHz -gen4iod.menu.CpuFrequency.160.build.f_cpu=160000000L -gen4iod.upload.resetmethod=nodemcu -gen4iod.build.flash_mode=qio -gen4iod.build.flash_freq=80 -gen4iod.menu.FlashSize.512K0=512K (no SPIFFS) -gen4iod.menu.FlashSize.512K0.build.flash_size=512K -gen4iod.menu.FlashSize.512K0.build.flash_size_bytes=0x80000 -gen4iod.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -gen4iod.menu.FlashSize.512K0.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K0.upload.maximum_size=499696 -gen4iod.menu.FlashSize.512K0.build.rfcal_addr=0x7C000 -gen4iod.menu.FlashSize.512K64=512K (64K SPIFFS) -gen4iod.menu.FlashSize.512K64.build.flash_size=512K -gen4iod.menu.FlashSize.512K64.build.flash_size_bytes=0x80000 -gen4iod.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -gen4iod.menu.FlashSize.512K64.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K64.upload.maximum_size=434160 -gen4iod.menu.FlashSize.512K64.build.rfcal_addr=0x7C000 -gen4iod.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -gen4iod.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -gen4iod.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -gen4iod.menu.FlashSize.512K128=512K (128K SPIFFS) -gen4iod.menu.FlashSize.512K128.build.flash_size=512K -gen4iod.menu.FlashSize.512K128.build.flash_size_bytes=0x80000 -gen4iod.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -gen4iod.menu.FlashSize.512K128.build.spiffs_pagesize=256 -gen4iod.menu.FlashSize.512K128.upload.maximum_size=368624 -gen4iod.menu.FlashSize.512K128.build.rfcal_addr=0x7C000 -gen4iod.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -gen4iod.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -gen4iod.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -gen4iod.menu.LwIPVariant.v2mss536=v2 Lower Memory -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -gen4iod.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -gen4iod.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -gen4iod.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -gen4iod.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -gen4iod.menu.LwIPVariant.OpenSource=v1.4 Compile from source -gen4iod.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -gen4iod.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -gen4iod.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -gen4iod.menu.Debug.Disabled=Disabled -gen4iod.menu.Debug.Disabled.build.debug_port= -gen4iod.menu.Debug.Serial=Serial -gen4iod.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -gen4iod.menu.Debug.Serial1=Serial1 -gen4iod.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -gen4iod.menu.DebugLevel.None____=None -gen4iod.menu.DebugLevel.None____.build.debug_level= -gen4iod.menu.DebugLevel.SSL=SSL -gen4iod.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -gen4iod.menu.DebugLevel.TLS_MEM=TLS_MEM -gen4iod.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -gen4iod.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -gen4iod.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -gen4iod.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -gen4iod.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -gen4iod.menu.DebugLevel.CORE=CORE -gen4iod.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -gen4iod.menu.DebugLevel.WIFI=WIFI -gen4iod.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -gen4iod.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -gen4iod.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -gen4iod.menu.DebugLevel.UPDATER=UPDATER -gen4iod.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -gen4iod.menu.DebugLevel.OTA=OTA -gen4iod.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -gen4iod.menu.DebugLevel.OOM=OOM -gen4iod.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -gen4iod.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -gen4iod.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -gen4iod.menu.FlashErase.none=Only Sketch -gen4iod.menu.FlashErase.none.upload.erase_cmd= -gen4iod.menu.FlashErase.sdk=Sketch + WiFi Settings -gen4iod.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -gen4iod.menu.FlashErase.all=All Flash Contents -gen4iod.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -gen4iod.menu.UploadSpeed.115200=115200 -gen4iod.menu.UploadSpeed.115200.upload.speed=115200 -gen4iod.menu.UploadSpeed.9600=9600 -gen4iod.menu.UploadSpeed.9600.upload.speed=9600 -gen4iod.menu.UploadSpeed.57600=57600 -gen4iod.menu.UploadSpeed.57600.upload.speed=57600 -gen4iod.menu.UploadSpeed.230400.linux=230400 -gen4iod.menu.UploadSpeed.230400.macosx=230400 -gen4iod.menu.UploadSpeed.230400.upload.speed=230400 -gen4iod.menu.UploadSpeed.256000.windows=256000 -gen4iod.menu.UploadSpeed.256000.upload.speed=256000 -gen4iod.menu.UploadSpeed.460800.linux=460800 -gen4iod.menu.UploadSpeed.460800.macosx=460800 -gen4iod.menu.UploadSpeed.460800.upload.speed=460800 -gen4iod.menu.UploadSpeed.512000.windows=512000 -gen4iod.menu.UploadSpeed.512000.upload.speed=512000 -gen4iod.menu.UploadSpeed.921600=921600 -gen4iod.menu.UploadSpeed.921600.upload.speed=921600 - -############################################################## -oak.name=Digistump Oak -oak.build.board=ESP8266_OAK -oak.build.variant=oak -oak.upload.maximum_size=1040368 -oak.upload.tool=esptool -oak.upload.maximum_data_size=81920 -oak.upload.wait_for_upload_port=true -oak.upload.erase_cmd= -oak.serial.disableDTR=true -oak.serial.disableRTS=true -oak.build.mcu=esp8266 -oak.build.core=esp8266 -oak.build.spiffs_pagesize=256 -oak.build.debug_port= -oak.build.debug_level= -oak.menu.CpuFrequency.80=80 MHz -oak.menu.CpuFrequency.80.build.f_cpu=80000000L -oak.menu.CpuFrequency.160=160 MHz -oak.menu.CpuFrequency.160.build.f_cpu=160000000L -oak.upload.resetmethod=none -oak.build.flash_mode=dio -oak.build.flash_freq=40 -oak.menu.FlashSize.4M1M=4M (1M SPIFFS) -oak.menu.FlashSize.4M1M.build.flash_size=4M -oak.menu.FlashSize.4M1M.build.flash_size_bytes=0x400000 -oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -oak.menu.FlashSize.4M1M.upload.maximum_size=1044464 -oak.menu.FlashSize.4M1M.build.rfcal_addr=0x3FC000 -oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -oak.menu.FlashSize.4M3M=4M (3M SPIFFS) -oak.menu.FlashSize.4M3M.build.flash_size=4M -oak.menu.FlashSize.4M3M.build.flash_size_bytes=0x400000 -oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -oak.menu.FlashSize.4M3M.upload.maximum_size=1044464 -oak.menu.FlashSize.4M3M.build.rfcal_addr=0x3FC000 -oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -oak.menu.LwIPVariant.v2mss536=v2 Lower Memory -oak.menu.LwIPVariant.v2mss536.build.lwip_include=lwip2/include -oak.menu.LwIPVariant.v2mss536.build.lwip_lib=-llwip2 -oak.menu.LwIPVariant.v2mss536.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=536 -oak.menu.LwIPVariant.v2mss1460=v2 Higher Bandwidth -oak.menu.LwIPVariant.v2mss1460.build.lwip_include=lwip2/include -oak.menu.LwIPVariant.v2mss1460.build.lwip_lib=-llwip2_1460 -oak.menu.LwIPVariant.v2mss1460.build.lwip_flags=-DLWIP_OPEN_SRC -DTCP_MSS=1460 -oak.menu.LwIPVariant.Prebuilt=v1.4 Higher Bandwidth -oak.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -oak.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -oak.menu.LwIPVariant.OpenSource=v1.4 Compile from source -oak.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -oak.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -oak.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" -oak.menu.Debug.Disabled=Disabled -oak.menu.Debug.Disabled.build.debug_port= -oak.menu.Debug.Serial=Serial -oak.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -oak.menu.Debug.Serial1=Serial1 -oak.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 -oak.menu.DebugLevel.None____=None -oak.menu.DebugLevel.None____.build.debug_level= -oak.menu.DebugLevel.SSL=SSL -oak.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL -oak.menu.DebugLevel.TLS_MEM=TLS_MEM -oak.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM -oak.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT -oak.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER -oak.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM -oak.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -oak.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT -oak.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -oak.menu.DebugLevel.CORE=CORE -oak.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE -oak.menu.DebugLevel.WIFI=WIFI -oak.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI -oak.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE -oak.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE -oak.menu.DebugLevel.UPDATER=UPDATER -oak.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER -oak.menu.DebugLevel.OTA=OTA -oak.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -oak.menu.DebugLevel.OOM=OOM -oak.menu.DebugLevel.OOM.build.debug_level= -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+OOM -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTAOOM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG -oak.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG -oak.menu.FlashErase.none=Only Sketch -oak.menu.FlashErase.none.upload.erase_cmd= -oak.menu.FlashErase.sdk=Sketch + WiFi Settings -oak.menu.FlashErase.sdk.upload.erase_cmd=-ca "{build.rfcal_addr}" -cz 0x4000 -oak.menu.FlashErase.all=All Flash Contents -oak.menu.FlashErase.all.upload.erase_cmd=-ca 0x0 -cz "{build.flash_size_bytes}" -oak.menu.UploadSpeed.921600=921600 -oak.menu.UploadSpeed.921600.upload.speed=921600 -oak.menu.UploadSpeed.9600=9600 -oak.menu.UploadSpeed.9600.upload.speed=9600 -oak.menu.UploadSpeed.57600=57600 -oak.menu.UploadSpeed.57600.upload.speed=57600 -oak.menu.UploadSpeed.115200=115200 -oak.menu.UploadSpeed.115200.upload.speed=115200 -oak.menu.UploadSpeed.230400.linux=230400 -oak.menu.UploadSpeed.230400.macosx=230400 -oak.menu.UploadSpeed.230400.upload.speed=230400 -oak.menu.UploadSpeed.256000.windows=256000 -oak.menu.UploadSpeed.256000.upload.speed=256000 -oak.menu.UploadSpeed.460800.linux=460800 -oak.menu.UploadSpeed.460800.macosx=460800 -oak.menu.UploadSpeed.460800.upload.speed=460800 -oak.menu.UploadSpeed.512000.windows=512000 -oak.menu.UploadSpeed.512000.upload.speed=512000 - diff --git a/arduino/version 2.4.1/platform.txt b/arduino/version 2.4.1/platform.txt deleted file mode 100644 index 2ddeb0065f70..000000000000 --- a/arduino/version 2.4.1/platform.txt +++ /dev/null @@ -1,137 +0,0 @@ - -# ESP8266 platform -# ------------------------------ - -# For more info: -# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification - -name=ESP8266 Modules -version=2.4.1 - - - - -compiler.warning_flags=-w -compiler.warning_flags.none=-w -compiler.warning_flags.default= -compiler.warning_flags.more=-Wall -compiler.warning_flags.all=-Wall -Wextra - -build.lwip_lib=-llwip_gcc -build.lwip_include=lwip/include -build.lwip_flags=-DLWIP_OPEN_SRC - -#build.float=-u _printf_float -u _scanf_float -build.float= -build.led= - -compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ -compiler.sdk.path={runtime.platform.path}/tools/sdk -compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf -compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core" - -compiler.c.cmd=xtensa-lx106-elf-gcc -compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections - -compiler.S.cmd=xtensa-lx106-elf-gcc -compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls - -compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read - -compiler.c.elf.cmd=xtensa-lx106-elf-gcc -compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 -lstdc++ -lm -lc -lgcc - -compiler.cpp.cmd=xtensa-lx106-elf-g++ -compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections - -compiler.as.cmd=xtensa-lx106-elf-as - -compiler.ar.cmd=xtensa-lx106-elf-ar -compiler.ar.flags=cru - -compiler.elf2hex.cmd=esptool -compiler.elf2hex.flags= - -compiler.size.cmd=xtensa-lx106-elf-size - -compiler.esptool.cmd=esptool -compiler.esptool.cmd.windows=esptool.exe - -# This can be overriden in boards.txt -build.extra_flags=-DESP8266 - -# These can be overridden in platform.local.txt -compiler.c.extra_flags= -compiler.c.elf.extra_flags= -compiler.S.extra_flags= -compiler.cpp.extra_flags= -compiler.ar.extra_flags= -compiler.objcopy.eep.extra_flags= -compiler.elf2hex.extra_flags= - -## generate file with git version number -## needs bash, git, and echo - - -## windows-compatible version without git - - - -## Compile c files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Compile c++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" - -## Create archives -recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/arduino.ar" "{object_file}" - -## Combine gc-sections, archives, and objects -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{build.path}/arduino.ar" {compiler.c.elf.libs} -Wl,--end-group "-L{build.path}" - -## Create eeprom -recipe.objcopy.eep.pattern= - -## Create hex -#recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" - -recipe.objcopy.hex.pattern="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec - -## Save hex -recipe.output.tmp_file={build.project_name}.bin -recipe.output.save_file={build.project_name}.{build.variant}.bin - -## Compute size -recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" -recipe.size.regex=^(?:\.irom0\.text|\.text|\.data|\.rodata|)\s+([0-9]+).* -recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).* -#recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* - -# ------------------------------ - -tools.esptool.cmd=esptool -tools.esptool.cmd.windows=esptool.exe -tools.esptool.path={runtime.tools.esptool.path} -tools.esptool.network_cmd=python -tools.esptool.network_cmd.windows=python.exe - -tools.esptool.upload.protocol=esp -tools.esptool.upload.params.verbose=-vv -tools.esptool.upload.params.quiet= -tools.esptool.upload.pattern="{path}/{cmd}" {upload.verbose} -cd {upload.resetmethod} -cb {upload.speed} -cp "{serial.port}" {upload.erase_cmd} -ca 0x00000 -cf "{build.path}/{build.project_name}.bin" -tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" - -tools.mkspiffs.cmd=mkspiffs -tools.mkspiffs.cmd.windows=mkspiffs.exe -tools.mkspiffs.path={runtime.tools.mkspiffs.path} - -tools.espupload.cmd=python -tools.espupload.cmd.windows=python.exe -tools.espupload.path={runtime.platform.path}/tools -tools.espupload.upload.protocol=espupload -tools.espupload.upload.params.verbose= -tools.espupload.upload.params.quiet= -tools.espupload.upload.pattern="{cmd}" "{path}/espupload.py" -f "{build.path}/{build.project_name}.bin" From 46a0a0afba4396b26956de47d401bf2648b31a06 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 1 Nov 2018 13:00:05 +0100 Subject: [PATCH 398/798] Add minutes to commands Timezone Add minutes to commands Timezone to allow all possible world timezones --- sonoff/_changelog.ino | 3 +- sonoff/settings.h | 4 +-- sonoff/settings.ino | 11 +++++- sonoff/sonoff.ino | 36 +++++++++++++++---- sonoff/support.ino | 76 +++++++++++++++++++++++---------------- sonoff/xdrv_09_timers.ino | 2 +- sonoff/xdrv_interface.ino | 20 +---------- sonoff/xsns_interface.ino | 19 ++-------- 8 files changed, 93 insertions(+), 78 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 648b1faad2aa..c9876ed4db58 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,7 +1,8 @@ /* 6.3.0.1 20181031 * Add wifi status to Tuya (#4221) - * Add default sleep 1 to sonoff-basic to lower enrgy consumption (#4217) + * Add default sleep 1 to sonoff-basic to lower energy consumption (#4217) * Fix unintended function overload of WifiState + * Add minutes to commands Timezone to allow all possible world timezones * * 6.3.0 20181030 * Release of v6.3.0 diff --git a/sonoff/settings.h b/sonoff/settings.h index 4d1d61cd4971..4af58db81d26 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -302,9 +302,7 @@ struct SYSCFG { uint16_t pulse_counter_type; // 5D0 uint16_t pulse_counter_debounce; // 5D2 uint8_t rf_code[17][9]; // 5D4 - - byte free_66d[1]; // 66D - + uint8_t timezone_minutes; // 66D uint16_t switch_debounce; // 66E Timer timer[MAX_TIMERS]; // 670 int latitude; // 6B0 diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 4116a1c6d9d7..fc3bf88873e9 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -607,7 +607,13 @@ void SettingsDefaultSet2() SettingsDefaultSet_5_10_1(); // Display settings // Time - Settings.timezone = APP_TIMEZONE; + if (((APP_TIMEZONE > -14) && (APP_TIMEZONE < 15)) || (99 == APP_TIMEZONE)) { + Settings.timezone = APP_TIMEZONE; + Settings.timezone_minutes = 0; + } else { + Settings.timezone = APP_TIMEZONE / 60; + Settings.timezone_minutes = abs(APP_TIMEZONE % 60); + } strlcpy(Settings.ntp_server[0], NTP_SERVER1, sizeof(Settings.ntp_server[0])); strlcpy(Settings.ntp_server[1], NTP_SERVER2, sizeof(Settings.ntp_server[1])); strlcpy(Settings.ntp_server[2], NTP_SERVER3, sizeof(Settings.ntp_server[2])); @@ -836,6 +842,9 @@ void SettingsDelta() Settings.rgbwwTable[j] = 255; } } + if (Settings.version < 0x06030002) { + Settings.timezone_minutes = 0; + } Settings.version = VERSION; SettingsSave(1); diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 98af3ef9fd66..dd84fbc47cf2 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1163,10 +1163,29 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } } else if (CMND_TIMEZONE == command_code) { - if ((data_len > 0) && (((payload >= -13) && (payload <= 14)) || (99 == payload))) { + if ((data_len > 0) && (payload >= -13)) { Settings.timezone = payload; + Settings.timezone_minutes = 0; + if (payload < 15) { + p = strtok (dataBuf, ":"); + if (p) { + p = strtok (NULL, ":"); + if (p) { + Settings.timezone_minutes = strtol(p, NULL, 10); + if (Settings.timezone_minutes > 59) { Settings.timezone_minutes = 59; } + } + } + } else { + Settings.timezone = 99; + } + ntp_force_sync = 1; + } + if (99 == Settings.timezone) { + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.timezone); + } else { + snprintf_P(stemp1, sizeof(stemp1), PSTR("%+03d:%02d"), Settings.timezone, Settings.timezone_minutes); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, stemp1); } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.timezone); } else if ((CMND_TIMESTD == command_code) || (CMND_TIMEDST == command_code)) { // TimeStd 0/1, 0/1/2/3/4, 1..12, 1..7, 0..23, +/-780 @@ -1491,12 +1510,17 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (7 == payload)) { + if (99 == Settings.timezone) { + snprintf_P(stemp, sizeof(stemp), PSTR("%d" ), Settings.timezone); + } else { + snprintf_P(stemp, sizeof(stemp), PSTR("\"%s\"" ), GetTimeZone().c_str()); + } #if defined(USE_TIMERS) && defined(USE_SUNRISE) - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"), - GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone, GetSun(0).c_str(), GetSun(1).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"), + GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp, GetSun(0).c_str(), GetSun(1).c_str()); #else - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d}}"), - GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s}}"), + GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp); #endif // USE_TIMERS and USE_SUNRISE MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7")); } diff --git a/sonoff/support.ino b/sonoff/support.ino index dcaa64274dd1..59b9a40dbba7 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1624,6 +1624,7 @@ int WifiState() void WifiConnect() { + WifiSetState(0); WiFi.persistent(false); // Solve possible wifi init errors wifi_status = 0; wifi_retry_init = WIFI_RETRY_OFFSET_SEC + ((ESP.getChipId() & 0xF) * 2); @@ -1881,6 +1882,7 @@ extern "C" { #define SECS_PER_MIN ((uint32_t)(60UL)) #define SECS_PER_HOUR ((uint32_t)(3600UL)) #define SECS_PER_DAY ((uint32_t)(SECS_PER_HOUR * 24UL)) +#define MINS_PER_HOUR ((uint32_t)(60UL)) #define LEAP_YEAR(Y) (((1970+Y)>0) && !((1970+Y)%4) && (((1970+Y)%100) || !((1970+Y)%400))) Ticker TickerRtc; @@ -1895,7 +1897,7 @@ uint32_t standard_time = 0; uint32_t ntp_time = 0; uint32_t midnight = 1451602800; uint32_t restart_time = 0; -int16_t time_timezone = 0; // Timezone * 10 +int32_t time_zone = 0; uint8_t midnight_now = 0; uint8_t ntp_sync_minute = 0; @@ -1925,7 +1927,16 @@ String GetBuildDateAndTime() } int month = (strstr(kMonthNamesEnglish, smonth) -kMonthNamesEnglish) /3 +1; snprintf_P(bdt, sizeof(bdt), PSTR("%d" D_YEAR_MONTH_SEPARATOR "%02d" D_MONTH_DAY_SEPARATOR "%02d" D_DATE_TIME_SEPARATOR "%s"), year, month, day, __TIME__); - return String(bdt); + return String(bdt); // 2017-03-07T11:08:02 +} + +String GetTimeZone() +{ + char tz[7]; + + snprintf_P(tz, sizeof(tz), PSTR("%+03d:%02d"), time_zone / 60, abs(time_zone % 60)); + + return String(tz); // -03:45 } /* @@ -1970,10 +1981,27 @@ String GetDateAndTime(byte time_type) if (Settings.flag3.time_append_timezone && (DT_LOCAL == time_type)) { // if (Settings.flag3.time_append_timezone && ((DT_LOCAL == time_type) || (DT_ENERGY == time_type))) { - snprintf_P(dt, sizeof(dt), PSTR("%s%+03d:%02d"), dt, time_timezone / 10, abs((time_timezone % 10) * 6)); // if timezone = +2:30 then time_timezone = 25 + strncat(dt, GetTimeZone().c_str(), sizeof(dt)); } - return String(dt); + return String(dt); // 2017-03-07T11:08:02-07:00 +} + +String GetTime(int type) +{ + /* type 1 - Local time + * type 2 - Daylight Savings time + * type 3 - Standard time + */ + char stime[25]; // Skip newline + + uint32_t time = utc_time; + if (1 == type) time = local_time; + if (2 == type) time = daylight_saving_time; + if (3 == type) time = standard_time; + snprintf_P(stime, sizeof(stime), sntp_get_real_time(time)); + + return String(stime); // Thu Nov 01 11:41:02 2018 } String GetUptime() @@ -1993,9 +2021,9 @@ String GetUptime() // "128 14:35:44" - OpenVMS // "128T14:35:44" - Tasmota - snprintf_P(dt, sizeof(dt), PSTR("%dT%02d:%02d:%02d"), - ut.days, ut.hour, ut.minute, ut.second); - return String(dt); + snprintf_P(dt, sizeof(dt), PSTR("%dT%02d:%02d:%02d"), ut.days, ut.hour, ut.minute, ut.second); + + return String(dt); // 128T14:35:44 } uint32_t GetMinutesUptime() @@ -2143,18 +2171,6 @@ uint32_t RuleToTime(TimeRule r, int yr) return t; } -String GetTime(int type) -{ - char stime[25]; // Skip newline - - uint32_t time = utc_time; - if (1 == type) time = local_time; - if (2 == type) time = daylight_saving_time; - if (3 == type) time = standard_time; - snprintf_P(stime, sizeof(stime), sntp_get_real_time(time)); - return String(stime); -} - uint32_t LocalTime() { return local_time; @@ -2174,8 +2190,6 @@ boolean MidnightNow() void RtcSecond() { - int32_t stdoffset; - int32_t dstoffset; TIME_T tmpTime; if ((ntp_sync_minute > 59) && (RtcTime.minute > 2)) ntp_sync_minute = 1; // If sync prepare for a new cycle @@ -2208,28 +2222,30 @@ void RtcSecond() utc_time++; local_time = utc_time; if (local_time > 1451602800) { // 2016-01-01 - int32_t time_offset = Settings.timezone * SECS_PER_HOUR; + int16_t timezone_minutes = Settings.timezone_minutes; + if (Settings.timezone < 0) { timezone_minutes *= -1; } + time_zone = (Settings.timezone * SECS_PER_HOUR) + (timezone_minutes * SECS_PER_MIN); if (99 == Settings.timezone) { - dstoffset = Settings.toffset[1] * SECS_PER_MIN; - stdoffset = Settings.toffset[0] * SECS_PER_MIN; + int32_t dstoffset = Settings.toffset[1] * SECS_PER_MIN; + int32_t stdoffset = Settings.toffset[0] * SECS_PER_MIN; if (Settings.tflag[1].hemis) { // Southern hemisphere if ((utc_time >= (standard_time - dstoffset)) && (utc_time < (daylight_saving_time - stdoffset))) { - time_offset = stdoffset; // Standard Time + time_zone = stdoffset; // Standard Time } else { - time_offset = dstoffset; // Daylight Saving Time + time_zone = dstoffset; // Daylight Saving Time } } else { // Northern hemisphere if ((utc_time >= (daylight_saving_time - stdoffset)) && (utc_time < (standard_time - dstoffset))) { - time_offset = dstoffset; // Daylight Saving Time + time_zone = dstoffset; // Daylight Saving Time } else { - time_offset = stdoffset; // Standard Time + time_zone = stdoffset; // Standard Time } } } - local_time += time_offset; - time_timezone = time_offset / 360; // (SECS_PER_HOUR / 10) fails as it is defined as UL + local_time += time_zone; + time_zone /= 60; if (!Settings.energy_kWhtotal_time) { Settings.energy_kWhtotal_time = local_time; } } BreakTime(local_time, RtcTime); diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 338a8ddc0a3d..2941ec39278b 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -131,7 +131,7 @@ void DuskTillDawn(uint8_t *hour_up,uint8_t *minute_up, uint8_t *hour_down, uint8 // double Zeitzone = 0; //Weltzeit // double Zeitzone = 1; //Winterzeit // double Zeitzone = 2.0; //Sommerzeit - double Zeitzone = ((double)time_timezone) / 10; + double Zeitzone = ((double)time_zone) / 60; double Zeitgleichung = BerechneZeitgleichung(&DK, T); double Minuten = Zeitgleichung * 60.0; double Zeitdifferenz = 12.0*acos((sin(h) - sin(B)*sin(DK)) / (cos(B)*cos(DK)))/pi; diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index a6e917a83061..a578343b495f 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -226,22 +226,6 @@ void ShowFreeMem(const char *where) /*********************************************************************************************\ * Function call to all xdrv - * - * FUNC_PRE_INIT - * FUNC_INIT - * FUNC_LOOP - * FUNC_MQTT_SUBSCRIBE - * FUNC_MQTT_INIT - * return FUNC_MQTT_DATA - * return FUNC_COMMAND - * FUNC_SET_POWER - * FUNC_SHOW_SENSOR - * FUNC_EVERY_SECOND - * FUNC_EVERY_50_MSECOND - * FUNC_EVERY_100_MSECOND - * FUNC_EVERY_250_MSECOND - * FUNC_RULES_PROCESS - * FUNC_FREE_MEM \*********************************************************************************************/ boolean XdrvCall(byte Function) @@ -249,9 +233,7 @@ boolean XdrvCall(byte Function) boolean result = false; for (byte x = 0; x < xdrv_present; x++) { - if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { - delay(1); - } + if (global_state.wifi_down) { delay(1); } result = xdrv_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index ee3d545da363..8132b8c303bb 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -262,17 +262,6 @@ uint8_t xsns_index = 0; /*********************************************************************************************\ * Function call to all xsns - * - * FUNC_INIT - * FUNC_PREP_BEFORE_TELEPERIOD - * FUNC_SAVE_BEFORE_RESTART - * FUNC_JSON_APPEND - * FUNC_WEB_APPEND - * return FUNC_COMMAND - * FUNC_EVERY_50_MSECOND - * FUNC_EVERY_100_MSECOND - * FUNC_EVERY_250_MSECOND - * FUNC_EVERY_SECOND \*********************************************************************************************/ uint8_t XsnsPresent() @@ -284,9 +273,7 @@ boolean XsnsNextCall(byte Function) { xsns_index++; if (xsns_index == xsns_present) xsns_index = 0; - if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { - delay(1); - } + if (global_state.wifi_down) { delay(1); } return xsns_func_ptr[xsns_index](Function); } @@ -303,9 +290,7 @@ boolean XsnsCall(byte Function) #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND uint32_t profile_start_millis = millis(); #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - if (!((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0))) { - delay(1); - } + if (global_state.wifi_down) { delay(1); } result = xsns_func_ptr[x](Function); #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND From eb4f1173d36ca467d2c3679ca7bcd3b6dd326e2b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 1 Nov 2018 14:24:10 +0100 Subject: [PATCH 399/798] 6.3.0.2 Add Timezone minutes 6.3.0.2 20181101 * Add minutes to commands Timezone to allow all possible world timezones --- sonoff/_changelog.ino | 7 +++++-- sonoff/sonoff_version.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c9876ed4db58..b3eb220982ce 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,8 +1,11 @@ -/* 6.3.0.1 20181031 +/* 6.3.0.2 20181101 + * Add minutes to commands Timezone to allow all possible world timezones + * + * 6.3.0.1 20181031 * Add wifi status to Tuya (#4221) * Add default sleep 1 to sonoff-basic to lower energy consumption (#4217) * Fix unintended function overload of WifiState - * Add minutes to commands Timezone to allow all possible world timezones + * Add delays to reduce CPU usage at boot time (#4233) * * 6.3.0 20181030 * Release of v6.3.0 diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index bdaee2f86795..9e1a5d4fa908 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030001 +#define VERSION 0x06030002 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From 04bddf63704488bbe51aed099803a29d32a399c3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 1 Nov 2018 14:27:37 +0100 Subject: [PATCH 400/798] Fix compile error Fix compile error --- sonoff/support.ino | 18 +++++++++--------- sonoff/xdrv_09_timers.ino | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 59b9a40dbba7..bdce971bce87 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1897,7 +1897,7 @@ uint32_t standard_time = 0; uint32_t ntp_time = 0; uint32_t midnight = 1451602800; uint32_t restart_time = 0; -int32_t time_zone = 0; +int32_t time_timezone = 0; uint8_t midnight_now = 0; uint8_t ntp_sync_minute = 0; @@ -1934,7 +1934,7 @@ String GetTimeZone() { char tz[7]; - snprintf_P(tz, sizeof(tz), PSTR("%+03d:%02d"), time_zone / 60, abs(time_zone % 60)); + snprintf_P(tz, sizeof(tz), PSTR("%+03d:%02d"), time_timezone / 60, abs(time_timezone % 60)); return String(tz); // -03:45 } @@ -2224,28 +2224,28 @@ void RtcSecond() if (local_time > 1451602800) { // 2016-01-01 int16_t timezone_minutes = Settings.timezone_minutes; if (Settings.timezone < 0) { timezone_minutes *= -1; } - time_zone = (Settings.timezone * SECS_PER_HOUR) + (timezone_minutes * SECS_PER_MIN); + time_timezone = (Settings.timezone * SECS_PER_HOUR) + (timezone_minutes * SECS_PER_MIN); if (99 == Settings.timezone) { int32_t dstoffset = Settings.toffset[1] * SECS_PER_MIN; int32_t stdoffset = Settings.toffset[0] * SECS_PER_MIN; if (Settings.tflag[1].hemis) { // Southern hemisphere if ((utc_time >= (standard_time - dstoffset)) && (utc_time < (daylight_saving_time - stdoffset))) { - time_zone = stdoffset; // Standard Time + time_timezone = stdoffset; // Standard Time } else { - time_zone = dstoffset; // Daylight Saving Time + time_timezone = dstoffset; // Daylight Saving Time } } else { // Northern hemisphere if ((utc_time >= (daylight_saving_time - stdoffset)) && (utc_time < (standard_time - dstoffset))) { - time_zone = dstoffset; // Daylight Saving Time + time_timezone = dstoffset; // Daylight Saving Time } else { - time_zone = stdoffset; // Standard Time + time_timezone = stdoffset; // Standard Time } } } - local_time += time_zone; - time_zone /= 60; + local_time += time_timezone; + time_timezone /= 60; if (!Settings.energy_kWhtotal_time) { Settings.energy_kWhtotal_time = local_time; } } BreakTime(local_time, RtcTime); diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 2941ec39278b..2f8e79649bf6 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -131,7 +131,7 @@ void DuskTillDawn(uint8_t *hour_up,uint8_t *minute_up, uint8_t *hour_down, uint8 // double Zeitzone = 0; //Weltzeit // double Zeitzone = 1; //Winterzeit // double Zeitzone = 2.0; //Sommerzeit - double Zeitzone = ((double)time_zone) / 60; + double Zeitzone = ((double)time_timezone) / 60; double Zeitgleichung = BerechneZeitgleichung(&DK, T); double Minuten = Zeitgleichung * 60.0; double Zeitdifferenz = 12.0*acos((sin(h) - sin(B)*sin(DK)) / (cos(B)*cos(DK)))/pi; From ba874b39dfe9d5f9f624580cd8984a5620d823bb Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Thu, 1 Nov 2018 14:44:13 +0100 Subject: [PATCH 401/798] add v6.3.0.2 config changes --- tools/decode-config.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index a09fbfb5d92d..dfb7b1f7ccc4 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -VER = '2.0.0002' +VER = '2.0.0003' """ decode-config.py - Backup/Restore Sonoff-Tasmota configuration data @@ -867,7 +867,13 @@ def passwordwrite(value): 'energy_kWhtotal_time': (' Date: Thu, 1 Nov 2018 17:24:49 +0200 Subject: [PATCH 402/798] Make driver boot delay configurable --- sonoff/my_user_config.h | 4 ++++ sonoff/xdrv_interface.ino | 2 +- sonoff/xdsp_interface.ino | 1 + sonoff/xnrg_interface.ino | 1 + sonoff/xsns_interface.ino | 4 ++-- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 5b721af2a485..05a97c5e6e7e 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -269,6 +269,10 @@ // -- Internal Analog input ----------------------- #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices +// -- BOOT Delay for drivers ---------------------- + +#define DRIVER_BOOT_DELAY 1 // Number of milliseconds to retard driver cycles during boot-up time to reduce overall CPU load whilst Wifi is connecting + // -- One wire sensors ---------------------------- // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors //#define USE_DS18x20_LEGACY // Optional for more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index a578343b495f..69bbcbadaa6d 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -233,7 +233,7 @@ boolean XdrvCall(byte Function) boolean result = false; for (byte x = 0; x < xdrv_present; x++) { - if (global_state.wifi_down) { delay(1); } + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xdrv_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xdsp_interface.ino b/sonoff/xdsp_interface.ino index 8d6d5a81497b..a2b19ebb8385 100644 --- a/sonoff/xdsp_interface.ino +++ b/sonoff/xdsp_interface.ino @@ -117,6 +117,7 @@ boolean XdspCall(byte Function) boolean result = false; for (byte x = 0; x < xdsp_present; x++) { + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xdsp_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xnrg_interface.ino b/sonoff/xnrg_interface.ino index 015d5d284310..1706c4e26da1 100644 --- a/sonoff/xnrg_interface.ino +++ b/sonoff/xnrg_interface.ino @@ -90,6 +90,7 @@ int XnrgCall(byte Function) int result = 0; for (byte x = 0; x < xnrg_present; x++) { + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xnrg_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index 8132b8c303bb..a51ab594720d 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -273,7 +273,7 @@ boolean XsnsNextCall(byte Function) { xsns_index++; if (xsns_index == xsns_present) xsns_index = 0; - if (global_state.wifi_down) { delay(1); } + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } return xsns_func_ptr[xsns_index](Function); } @@ -290,7 +290,7 @@ boolean XsnsCall(byte Function) #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND uint32_t profile_start_millis = millis(); #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - if (global_state.wifi_down) { delay(1); } + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xsns_func_ptr[x](Function); #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND From 1a86c65339b2cd46dbdb53c558cde3aa24aab750 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:32:24 +0200 Subject: [PATCH 403/798] Update xsns_09_bmp.ino --- sonoff/xsns_09_bmp.ino | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index 23ddf7da95d5..6a77c2fd1405 100755 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -476,6 +476,11 @@ void BmpRead() if (bmp_sensors[bmp_idx].bmp_temperature != 0.0) { bmp_sensors[bmp_idx].bmp_temperature = ConvertTemp(bmp_sensors[bmp_idx].bmp_temperature); } +#ifdef USE_MMHG + if (bmp_sensors[bmp_idx].bmp_pressure != 0.0) { + bmp_sensors[bmp_idx].bmp_pressure = ConvertPress(bmp_sensors[bmp_idx].bmp_pressure); + } +#endif // USE_MMHG } SetGlobalValues(bmp_sensors[0].bmp_temperature, bmp_sensors[0].bmp_humidity); From db4d7ed27750ecb4fc9152056d0b46991ebe2bc2 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:36:22 +0200 Subject: [PATCH 404/798] Add ConvertPress() --- sonoff/support.ino | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sonoff/support.ino b/sonoff/support.ino index bdce971bce87..ef16b0bbca0c 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -475,6 +475,16 @@ char TempUnit() return (Settings.flag.temperature_conversion) ? 'F' : 'C'; } +float ConvertPress(float p) +{ + float result = p; + + if (!isnan(p)) { + result = p * 0.75006375541921; // mmHg + } + return result; +} + void SetGlobalValues(float temperature, float humidity) { global_update = uptime; From 3ff97d5c1e4d6afb06dfb3c76eff6943b35e57f3 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:39:13 +0200 Subject: [PATCH 405/798] Update my_user_config.h --- sonoff/my_user_config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 5b721af2a485..825c6ad31a7b 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -385,6 +385,8 @@ #define USE_RC_SWITCH // Add support for RF transceiver using library RcSwitch (+2k7 code, 460 iram) +//#define USE_MMHG // Use mmHg instead of hPa + /*********************************************************************************************\ * Debug features are only supported in development branch \*********************************************************************************************/ From f1ce6d57daaf0f1c0e81d5a93fa5646f65c73c8d Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:49:03 +0200 Subject: [PATCH 406/798] Update my_user_config.h --- sonoff/my_user_config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 825c6ad31a7b..c286283f6053 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -178,6 +178,7 @@ #define HUMIDITY_RESOLUTION 1 // [HumRes] Maximum number of decimals (0 - 3) showing sensor Humidity #define PRESSURE_RESOLUTION 1 // [PressRes] Maximum number of decimals (0 - 3) showing sensor Pressure #define ENERGY_RESOLUTION 3 // [EnergyRes] Maximum number of decimals (0 - 5) showing energy usage in kWh +//#define USE_MMHG // Use mmHg instead of hPa /*********************************************************************************************\ * END OF SECTION 1 @@ -385,8 +386,6 @@ #define USE_RC_SWITCH // Add support for RF transceiver using library RcSwitch (+2k7 code, 460 iram) -//#define USE_MMHG // Use mmHg instead of hPa - /*********************************************************************************************\ * Debug features are only supported in development branch \*********************************************************************************************/ From 6a3ca9bd99abec648e4b3530972137e5b9317ab9 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 17:55:27 +0200 Subject: [PATCH 407/798] Update ru-RU.h --- sonoff/language/ru-RU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 28aa1d7f2120..42da36d055d3 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Адрес" #define D_LIGHT "Свет" #define D_LWT "LWT" +#define D_MMHG "мм рт.ст." #define D_MODULE "Модуль" #define D_MQTT "MQTT" #define D_MULTI_PRESS "многократное нажатие" From cd8d316741cb2b6a37c8375ddccf47ee2c6319d2 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:04:44 +0200 Subject: [PATCH 408/798] Update en-GB.h --- sonoff/language/en-GB.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 48641d0ff87d..d04832c21843 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Address" #define D_LIGHT "Light" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" From 6aa9f13f9ca4c3f23dbbb5fc5cf87dc9596bfe2f Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:25:13 +0200 Subject: [PATCH 409/798] Update bg-BG.h --- sonoff/language/bg-BG.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index d774276e811b..94d87c958555 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP адрес" #define D_LIGHT "Светлина" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Модул" #define D_MQTT "MQTT" #define D_MULTI_PRESS "множествено натискане" From 591411fc3745fdfa841f1dd0b8125c80a9de8b09 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:25:32 +0200 Subject: [PATCH 410/798] Update cs-CZ.h --- sonoff/language/cs-CZ.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 0cf34043b4bf..ca5bb903a55b 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Adresa IP" #define D_LIGHT "Světlo" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "několikeré-stisknutí" From 5a0f2fd895e7a664fe5aee8f17e372b85c2838c6 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:25:45 +0200 Subject: [PATCH 411/798] Update de-DE.h --- sonoff/language/de-DE.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 0c2ab9f6aa8b..0516a40ece6a 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP-Adresse" #define D_LIGHT "Licht" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "Mehrfachdruck" From 517242ff5eacca3188caeb556a57719d2df9af09 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:26:03 +0200 Subject: [PATCH 412/798] Update el-GR.h --- sonoff/language/el-GR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index c5a3db324970..86e6c50764c8 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -111,6 +111,7 @@ #define D_IP_ADDRESS "IP Address" #define D_LIGHT "Light" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "πολλαπλή πίεση" From 89bbe111d3c25819cd22a730dc1648be1843d114 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:26:28 +0200 Subject: [PATCH 413/798] Update es-AR.h --- sonoff/language/es-AR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index a5d044985dc2..8a6ffede3bba 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Dirección IP" #define D_LIGHT "Luz" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" From c3ffce4d4ea9936ebc081afa432301f5564dad2e Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:26:44 +0200 Subject: [PATCH 414/798] Update fr-FR.h --- sonoff/language/fr-FR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 0e37d99902f6..8461dfa0455a 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Adresse IP" #define D_LIGHT "Lumière" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pression" From 3c935c6d577fbdc482aeaf12ed6e87d9da6a21eb Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:27:04 +0200 Subject: [PATCH 415/798] Update he-HE.h --- sonoff/language/he-HE.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index 355fe823172e..126ad8c011c8 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP כתובת" #define D_LIGHT "אור" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "מודול" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" From 848a197a4bec544e95a1deedd5a67064390e75f4 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:27:18 +0200 Subject: [PATCH 416/798] Update hu-HU.h --- sonoff/language/hu-HU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index cbe52378d991..14c73fcd5318 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Cím" #define D_LIGHT "Fény" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "több lenyomás" From 07df5e6c2fa9cebc5ca1ff7c9917275753d18336 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:27:33 +0200 Subject: [PATCH 417/798] Update it-IT.h --- sonoff/language/it-IT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 8449d250dc3c..9884c050aca0 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Indirizzo IP" #define D_LIGHT "Luce" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Modulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressione" From 39e3b75f0cdd4a64b2292a6e8a544db407af7c1c Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:29:11 +0200 Subject: [PATCH 418/798] Update nl-NL.h --- sonoff/language/nl-NL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index afaf9d08a146..2025b6912f59 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Adres" #define D_LIGHT "Licht" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "meervoudig" From 69fc4e6c86c738acb989d4b3156d2ee7267ea78c Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:29:24 +0200 Subject: [PATCH 419/798] Update pl-PL.h --- sonoff/language/pl-PL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 686f5cc76e84..df4853066a7d 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Adres IP" #define D_LIGHT "Światło" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Moduł" #define D_MQTT "MQTT" #define D_MULTI_PRESS "wielokrotne-naciśnięcie" From 6271c3b562937d3d56ca168f230c5b6f9a8ad266 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:29:38 +0200 Subject: [PATCH 420/798] Update pt-BR.h --- sonoff/language/pt-BR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index ef5104fdb97a..73536e49a7a7 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Endereço IP" #define D_LIGHT "Luz" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressão" From 7f7c5b9808a6820a854f855218cd89b276243e9d Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:29:58 +0200 Subject: [PATCH 421/798] Update pt-PT.h --- sonoff/language/pt-PT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 97750f38c80a..9247a62ad731 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "Endereço IP" #define D_LIGHT "Luz" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressão" From 2f1c48a27c6f9356775ba5aa5ee4f11cf1da07cd Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:30:12 +0200 Subject: [PATCH 422/798] Update tr-TR.h --- sonoff/language/tr-TR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 0588b5175696..af6d180827d2 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Adresi" #define D_LIGHT "Işık" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Modül" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" From f25c6fb5f8afd045963f5e397aaec762a8b1ba1e Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:30:25 +0200 Subject: [PATCH 423/798] Update uk-UK.h --- sonoff/language/uk-UK.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index fc32479fc767..c6c0b9d2b7ff 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP Адрес" #define D_LIGHT "Світло" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "Модуль" #define D_MQTT "MQTT" #define D_MULTI_PRESS "багаторазове натискання" From 8b5975b4620978c26ecdcb658abbc603c5f7f2f2 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:30:39 +0200 Subject: [PATCH 424/798] Update zh-CN.h --- sonoff/language/zh-CN.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index f4a19e3241d3..141cfdaffdb6 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP地址" #define D_LIGHT "灯" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "模块" #define D_MQTT "MQTT" #define D_MULTI_PRESS "多次按键" From 7bbbf265230801ffe697f61d34e49de7cfea37f0 Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 18:30:56 +0200 Subject: [PATCH 425/798] Update zh-TW.h --- sonoff/language/zh-TW.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 61fa90d4d530..d48cec44a222 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -110,6 +110,7 @@ #define D_IP_ADDRESS "IP地址" #define D_LIGHT "燈" #define D_LWT "LWT" +#define D_MMHG "mmHg" #define D_MODULE "模組" #define D_MQTT "MQTT" #define D_MULTI_PRESS "多次按鍵" From aa8e571e8894eed4befc2caa9fd944e6e85f6b37 Mon Sep 17 00:00:00 2001 From: Andrei eeak Date: Thu, 1 Nov 2018 19:17:12 +0200 Subject: [PATCH 426/798] Add D_UNIT_MILLIMETER_MERCURY --- firmware.map | 21533 ++++++++++++++++++++++++++++++++++++++ sonoff/language/bg-BG.h | 1 + sonoff/language/cs-CZ.h | 1 + sonoff/language/de-DE.h | 1 + sonoff/language/el-GR.h | 1 + sonoff/language/en-GB.h | 1 + sonoff/language/es-AR.h | 1 + sonoff/language/fr-FR.h | 1 + sonoff/language/he-HE.h | 1 + sonoff/language/hu-HU.h | 1 + sonoff/language/it-IT.h | 1 + sonoff/language/nl-NL.h | 1 + sonoff/language/pl-PL.h | 1 + sonoff/language/pt-BR.h | 1 + sonoff/language/pt-PT.h | 1 + sonoff/language/ru-RU.h | 1 + sonoff/language/tr-TR.h | 1 + sonoff/language/uk-UK.h | 1 + sonoff/language/zh-CN.h | 1 + sonoff/language/zh-TW.h | 1 + 20 files changed, 21552 insertions(+) create mode 100644 firmware.map diff --git a/firmware.map b/firmware.map new file mode 100644 index 000000000000..59a68ad4dc14 --- /dev/null +++ b/firmware.map @@ -0,0 +1,21533 @@ +Archive member included because of file (symbol) + +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::IRsend(unsigned short, bool)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) (IRtimer::IRtimer()) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendDISH(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendJVC(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendNEC(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendPanasonic(unsigned short, unsigned int, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendRC5(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendSAMSUNG(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendSony(unsigned long long, unsigned short, unsigned short)) +.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) (reverseBits(unsigned long long, unsigned short)) +.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) +.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFi) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiAPClass::softAP(char const*, char const*, int, int)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) (ESP8266WiFiGenericClass::ESP8266WiFiGenericClass()) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiScanClass::scanNetworks(bool, bool)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiClient::connect(IPAddress, unsigned short)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiUDP::endPacket()) +.pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (MDNSResponder::hostname(int)) +.pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_SGP30::Adafruit_SGP30()) +.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WebServer::ESP8266WebServer(int)) +.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (ESP8266WebServer::_parseRequest(WiFiClient&)) +.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) +.pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (RCSwitch::setProtocol(int)) +.pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266HTTPUpdate::getLastError()) +.pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaSerial::TasmotaSerial(int, int, bool)) +.pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaModbus::TasmotaModbus(int, int)) +.pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (bitbang_send_pixels_800) +.pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (PubSubClient::PubSubClient(Client&)) +.pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int)) +.pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (vtable for fs::File) +.pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (HardwareSerial::flush()) +.pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (vtable for IPAddress) +.pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (MD5Builder::begin()) +.pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) (Print::write(unsigned char const*, unsigned int)) +.pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (Stream::readBytes(char*, unsigned int)) +.pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (vtable for StreamString) +.pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (UpdaterClass::begin(unsigned int, int)) +.pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (random(long)) +.pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (String::String(String&&)) +.pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (operator new(unsigned int)) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (eboot_command_read) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (atexit) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) (atol) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) (__panic_func) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (twi_setClock) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (delay) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (pulseIn) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (shiftIn) +.pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) (pvPortMalloc) +.pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (base64_encode_chars) +.pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (printf) +.pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (strnlen_P(char const*, unsigned int)) +.pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) (uart_write_char) +.pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) (umm_info) +.pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (run_scheduled_functions()) +.pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (cont_yield) +.pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (cont_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) (smartconfig_stop) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) (pAKGuideGlob) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) (pETGuideGlob) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) (wifi_fpm_set_sleep_type) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (pend_flag_noise_check) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (RC_GetAckTime) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (rcUpdateRxDone) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (wDevCtrl) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) (esf_rx_buf_alloc) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (ic_is_pure_sta) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) (lmacConfMib) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (flash_tmp) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (lwip_timer_interval) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) (ets_vsnprintf) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (timer_list) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (spi_flash_get_id) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (done_cb) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + (_DebugExceptionVector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + (_DoubleExceptionVector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + (_KernelExceptionVector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + (_NMIExceptionVector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + (_UserExceptionVector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + (call_user_start) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (hostname) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (hexstr2bin) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) (os_get_time) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (dhcps_start) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) (espconn_create) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) (espconn_tcp_disconnect) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) (espconn_udp_sendto) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (dhcp_cleanup) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) (dns_setserver) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (lwip_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) (netif_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (pbuf_free) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (sntp_get_current_timestamp) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) (tcp_pcb_lists) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (tcp_write) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) (sys_timeout) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) (udp_bind) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) (etharp_tmr) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) (icmp_dest_unreach) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) (igmp_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) (inet_chksum_pseudo) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (ip_route) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) (ip4_addr_isbroadcast) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) (memp_sizes) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) (raw_input) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) (tcp_input_pcb) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (g_ic) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_crypto_attach) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (ieee80211_getmgtframe) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (BcnEb_update) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_ht_attach) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_decap) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_mesh_quick_get) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) (ieee80211_output_pbuf) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (ieee80211_phy_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_psq_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_proto_attach) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_rfid_locp_recv_open) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (gScanStruct) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_sta_new_state) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (chm_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (sta_con_timer) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) (ieee80211_send_action_register) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_action_vendor_spec_attach) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) (ccmp) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) (ieee80211_add_ie_vendor_esp_mesh_assoc) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (wifi_wps_enable) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_generate_pin) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_build_manufacturer) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_enrollee_get_msg) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) (wps_device_store) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) (wps_validate_m1) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (eap_msg_alloc) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) (uuid_bin2str) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_build_public_key) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_parse_msg) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) (wps_process_authenticator) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) (aes_128_cbc_encrypt) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) (aes_decrypt_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) (aes_encrypt_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) (dh5_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) (dh_groups_get) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) (hmac_sha256_vector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) (sha256_vector) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) (rijndaelKeySetupEnc) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) (crypto_mod_exp) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) (bignum_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) (phy_change_channel) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (chip_v6_set_chan_offset) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (g_phyFuns) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (phy_tx_pwr_error) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (chip_v6_set_sense) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (pm_usec2rtc) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) (xthal_get_ccount) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (xthal_set_intclear) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divsi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__modsi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o (__udivsi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o (__umodsi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) (__umulsidi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) (__ashldi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (__ashrdi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) (__lshrdi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__addsf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__mulsf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divsf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__eqsf2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixsfsi) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixunssfsi) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatunsisf) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatdisf) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__adddf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__muldf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divdf3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__gtdf2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixdfsi) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixunsdfsi) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatunsidf) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__truncdfsf2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__extendsfdf2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__muldi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divdi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) (__udivdi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) (__umoddi3) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (atan) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ceil) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (cos) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) (fabs) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fpclassifyd) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (sin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (tan) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fpclassifyf) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (acos) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (asin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (__ieee754_acos) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) (__ieee754_asin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__ieee754_rem_pio2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) (__ieee754_sqrt) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__kernel_cos) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) (__kernel_rem_pio2) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__kernel_sin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) (__kernel_tan) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) (floor) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (__fdlib_version) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (matherr) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (nan) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) (scalbn) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) (copysign) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) (std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (vtable for WiFiServer) +.pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (HTTPClient::HTTPClient()) +.pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) (base64::encode(String)) +.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (__wrap_register_chipv6_phy) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (hostapd_setup_wpa_psk) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (wpa_init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (wpa_auth_gen_wpa_ie) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wpabuf_put) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) (wpa_sm_rx_eapol) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) (wpa_parse_wpa_ie_rsn) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (eloop_cancel_timeout) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) (wpa_parse_wpa_ie) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) (ppInstallKey) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) (wpa_sm_alloc_eapol) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (tkip) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (wep) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (aes_wrap) +.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) (WiFiClientSecure::~WiFiClientSecure()) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) (ssl_ctx_new) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (do_client_connect) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (do_svr_handshake) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (x509_free) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RNG_initialize) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (AES_set_key) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (bi_clear_cache) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (ax_hmac_md5) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (MD5_Init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RC4_setup) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RSA_free) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (SHA1_Init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA256_Init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA384_Init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA512_Init) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (get_asn1_length) +C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (load_key_certs) +.pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) (mktime) + +Allocating common symbols +Common symbol size file + +hex_index 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) +current_iphdr_src 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) +hex_finish 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) +__tznorth 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) +tcp_tw_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +tcp_ticks 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +__tzyear 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) +udp_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) +tcp_tmp_pcb 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +tcp_listen_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +netif_default 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) +tcp_active_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +res_buf 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) +current_netif 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) +pktinfo 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) +sntp__tzrule 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) +tcp_bound_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) +ummHeapInfo 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) +reult 0x64 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) +current_header 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) +tcp_input_pcb 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) +dhcp_rx_options_val + 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) +espconn_TaskQueue 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) +dhcp_rx_options_given + 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) +current_iphdr_dest 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) +premot 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) +netif_list 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + +Discarded input sections + + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .literal.timer1_attachInterrupt + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .literal.timer1_enable + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .literal.timer0_isr_init + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .literal.timer0_attachInterrupt + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .text.timer1_attachInterrupt + 0x00000000 0x25 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .text.timer0_isr_init + 0x00000000 0x21 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .text.timer0_attachInterrupt + 0x00000000 0x24 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .xt.lit 0x00000000 0x58 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .literal.__pinMode + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .literal.initPins + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .xt.lit 0x00000000 0x38 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .xt.prop 0x00000000 0x3a8 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.pwm_sort_array + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.pwm_get_mask + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.prep_pwm_steps + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.pwm_start_timer + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.__analogWrite + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.__analogWriteFreq + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .literal.__analogWriteRange + 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .xt.prop 0x00000000 0x30c .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22HandlePreflightRequestv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZL9WebGetArgPKcPcj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17AriluxRfInterruptv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13Tx20StartReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14__get_adc_modev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6FormatPcPKci + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9GetOtaUrlPcj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10GetTopic_PPchS_PKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12GetStateTexth + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SetLatchingRelaymh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11SetLedPowerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11GetFanspeedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SetPulseTimerht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MqttShowPWMStatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17GpioSwitchPinModeh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17GetRtcSettingsCrcv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15RtcSettingsSavev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13OsWatchTickerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15RtcSettingsLoadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16RtcSettingsValidv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15GetRtcRebootCrcv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13RtcRebootSavev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13RtcRebootLoadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14RtcRebootValidv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SetFlashModeDoutv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18SettingsBufferFreev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetSettingsCrcv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18GetSettingsAddressv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SettingsEraseConfigv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SettingsDefaultSet1v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24SettingsDefaultSet_5_8_1v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z25SettingsDefaultSet_5_10_1v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SettingsResetStdv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SettingsResetDstv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26SettingsDefaultSet_5_13_1cv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11OsWatchInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11OsWatchLoopv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetResetReasonv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18OsWatchBlockedLoopv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.memchr + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.strcspn + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9strchrspnPKci + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12CharToDoublePc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9TextToIntPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8dtostrfddhPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8UnescapePcPt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11RemoveSpacePc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9UpperCasePcPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11UpperCase_PPcPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z5LTrimPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z5RTrimPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z4TrimPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6subStrPcS_PKci + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19NoAlNumToUnderscorePcPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11SetShortcutPch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8ShortcutPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7ParseIpPjPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SettingsDefaultSet2v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13MakeValidMqtthPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12NewerVersionPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetPowerDevicePchjh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetPowerDevicePchj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11ConvertTempf + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8TempUnitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12ConvertPressf + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15SetGlobalValuesff + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17ResetGlobalValuesv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14FastPrecisePowdd + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7SqrtIntj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12RoundSqrtIntj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetTextIndexedPcjtPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetCommandCodePcjPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetStateNumberPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15GetUsedInModulehPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SerialSendRawPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7GetHashPKcj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9ValidGPIOhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14TimeDifferencemm + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15TimePassedSincem + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13GetPulseTimerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11TimeReachedm + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SetNextTimeIntervalRmm + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11GetFeaturesv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20WifiGetRssiAsQualityi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17WifiConfigCounterv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17WifiWpsConfigDonev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18WifiWpsConfigBeginv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16WiFiSetSleepModev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12WifiSetStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9WifiStatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11WifiConnectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10EspRestartv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7I2cScanPcj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9I2cDeviceh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19GetBuildDateAndTimev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11GetTimeZonev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7GetTimei + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22GetMinutesPastMidnightv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9BreakTimejR6TIME_T + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetDateAndTimeh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9GetUptimev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16GetMinutesUptimev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8MakeTimeR6TIME_T + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10RuleToTime8TimeRulei + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9LocalTimev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Midnightv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11MidnightNowv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7RtcInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SetSeriallogh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6GetLoghPPcPj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16PollDnsWebserverv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9SetHeaderv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15WebAuthenticatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10htmlEscape6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14ValidIpAddress6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9UrlEncodeRK6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15MqttIsConnectedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14MqttDisconnectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MqttSubscribeLibPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14MqttPublishLibPKch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8MqttLoopv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15MqttLibraryTypev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MqttRetryCounterh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17EnergyUpdateTodayv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15EnergySaveStatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12EnergyMarginhttRhS_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z27EnergySetPowerSteadyCounterv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12AriluxRfInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15AriluxRfDisablev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12LightDiPulseh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14LightDckiPulseh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16LightMy92x1Writeh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15LightMy92x1Initv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15LightMy92x1Dutyhhhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17LightSetColorTempt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17LightGetColorTempv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14LightSetDimmerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LightSetColorv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14LightSetSignalttt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LightGetColorhPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9LightFadev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10LightWheelh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15LightCycleColora + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16LightRandomColorv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LightRgbToHsbv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LightHsbToRgbv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11LightGetHsbPfS_S_b + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10LightStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13MqttShowStatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15LightColorEntryPch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10IrSendInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13IrReceiveInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24rf_find_hex_record_startPhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22rf_find_hex_record_endPhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19rf_decode_and_writePhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z39rf_glue_remnant_with_new_data_and_writePKhPhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19rf_search_and_writePhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14rf_erase_flashv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15SnfBrUpdateInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23SonoffBridgeSendCommandh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SonoffBridgeSendAckv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20SonoffBridgeSendCodej + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SonoffBridgeSendhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17SonoffBridgeLearnh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SonoffBridgeCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SonoffBridgeInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22DomoticzBatteryQualityv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19DomoticzRssiQualityv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15DomoticzCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21DomoticzHumidityStatePc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SerialBridgeInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SerialBridgeCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17JulianischesDatumv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z4InPid + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z3epsd + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21BerechneZeitgleichungPdd + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12DuskTillDawnPhS_S_S_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17ApplyTimerOffsetsP5Timer + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6GetSunh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13GetSunMinutesh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20TimerSetRandomWindowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21TimerSetRandomWindowsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PrepShowTimerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9RulesInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13RulesSetPowerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12RulesCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10map_doubleddddd + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18TuyaModuleSelectedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6RfInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8XdrvCallh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11XdrvCommandhPctS_tst + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12XdrvMqttDataPctS_t + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16XdrvRulesProcessv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11ShowFreeMemPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8ShowPageR6Stringb + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8ShowPageR6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26HandleLoggingConfigurationv$part$131 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleOtherConfigurationv$part$132 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleMqttConfigurationv$part$143 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z27HandleDomoticzConfigurationv$part$144 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HandleWifiLoginv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11XdspPresentv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8XdspCallh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13HlwEvery200msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14HlwEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10HlwSnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10HlwDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10HlwCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg01h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CseEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10CseDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10CseCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7PzemCrcPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8PzemSendh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16PzemReceiveReadyv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11PzemDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11McpChecksumPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13McpExtractIntPchh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9McpSetIntmPhhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7McpSendPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13McpGetAddressv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17McpAddressReceivev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17McpGetCalibrationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18McpCalibrationCalcP22mcp_cal_registers_typeh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17McpSetCalibrationP22mcp_cal_registers_type + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z25McpSetSystemConfigurationt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19McpParseCalibrationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15McpGetFrequencyv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15McpSetFrequencytt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17McpParseFrequencyv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10McpGetDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12McpParseDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14McpEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10McpSnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10McpDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10McpCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PzemAcDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PzemDcDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8XnrgCallh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Energy200msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13EnergyCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13EnergyDrvInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13EnergySnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv03h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16WemoSerialnumberv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8WemoUuidv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11HueBridgeIdv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HueSerialnumberv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7HueUuidv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14GetHueDeviceIdh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12GetHueUserIdv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HueConfigResponseP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HueConfigP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HueLightStatus1hP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HueLightStatus2hP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HueGlobalConfigP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HueAuthenticationP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HueGroupsP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z3modii + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19Ws2812GradientColorhP7WsColorttt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18Ws2812ForceSuspendv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13CounterUpdateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CounterUpdate1v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CounterUpdate2v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CounterUpdate3v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CounterUpdate4v + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16CounterSaveStatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11CounterInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12OneWireResetv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15OneWireWriteBith + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14OneWireReadBitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12OneWireWriteh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11OneWireReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13OneWireSelectPKh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18OneWireResetSearchv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13OneWireSearchPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11OneWireCrc8Ph + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14Ds18x20Convertv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ds18x20Nameh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11DhtReadPrepv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14DhtExpectPulsehb + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8DhtSetuphh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8GpioInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7DhtInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11ShtReadDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12HtuCheckCrc8t + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8HtuResetv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20MhzCalculateChecksumPh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10MhzSendCmdh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22MhzCheckAndApplyFilterth + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MhzCommandSensorv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20NovaSdsSetWorkPeriodv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Sr04Initv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Sr04Pingt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14Sr04GetSamplesht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Sr04ReadPt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Sr04Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns22h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HxIsReadyt + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6HxReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7HxResetv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8HxWeightv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6HxInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6HxShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Tx20Readv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Tx20Initv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8Tx20Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns35h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11XsnsPresentv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12XsnsNextCallh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8XsnsCallh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14MqttShowSensorv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18HueWemoAddHandlersv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14Ws2812GetColortPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z22Ws2812UpdatePixelColori7WsColorf + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16Ws2812UpdateHandih + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15Ws2812StripShowv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14Ws2812Gradienth + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Ws2812Barsh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14Ws2812SetColorthhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17Ws2812ForceUpdatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ws2812Clockv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16Ws2812ShowSchemeh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ws2812Clearv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Ws2812Initv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9LightInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13RfSendCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14RulesRuleMatchhR6StringS0_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8I2cWritehhjh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9I2cWrite8hht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10I2cWrite16hht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14I2cWriteBufferhhPht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12I2cValidReadhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13I2cValidRead8Phhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14I2cValidRead16Pthh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16I2cValidRead16LEPthh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18I2cValidReadS16_LEPshh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15I2cValidReadS16Pshh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14I2cValidRead24Pihh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8I2cRead8hh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16HtuSetResolutionh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HtuHeaterh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7HtuInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9I2cRead16hh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17Bmp180Calibrationh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LM75ADGetTempv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10I2cReadS16hh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11I2cRead16LEhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13I2cReadS16_LEhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15Bmx280Calibrateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9I2cRead24hh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Bmp180Readh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Bme280Readh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7BmpReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13I2cReadBufferhhPht + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HtuReadDeviceIdv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7HtuReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Bh1750Readv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9Sht3xReadRfS_h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Syslogv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6AddLogh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SettingsSaveh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15SettingsSaveAllv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SettingsDeltav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SettingsEraseh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16SettingsSdkErasev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17SetSerialBaudratei + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10ShowSourcei$part$70 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10ShowSourcei + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14SetDevicePowermi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.WifiWpsStatusCallback + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9RtcSecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8AddLog_PhPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SettingsBufferAllocv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15SettingsDefaultv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11ClaimSerialv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11PzemSnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PzemAcSnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PzemDcSnsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7MhzInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SenseairInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7PmsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11NovaSdsInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13StopWebserverv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11CseReceivedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13UdpDisconnectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10UdpConnectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ds18x20Readh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14ShtSendCommandh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8ShtResetv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14ShtAwaitResultv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7ShtReadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9ShtDetectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SettingsLoadv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.setup + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8AddLog_PhPKcS0_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HandleUpnpServicev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21HandleUpnpMetaServicev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19HandleUpnpSetupWemov + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18HandleUpnpSetupHuev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HandleInformationv$part$136 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9WifiBeginh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12AddLogSerialhPhi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12AddLogSerialh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14CseSerialInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg02h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14McpSerialInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg04h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11PzemRecievehPf + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14PzemEvery200msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg03h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14MhzEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11PmsReadDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9PmsSecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15NovaSdsReadDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13NovaSdsSecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12AddLogMissedPch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18Ds18x20EverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14ShtEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14StartWebserveri9IPAddress + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16WifiManagerBeginv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10WifiConfigh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11WifiCheckIpv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9WifiCheckh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18ModuleSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16WifiSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19LoggingSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17OtherSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16HandleUploadLoopv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18MqttDiscoverServerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13MqttSubscribePc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21DomoticzMqttSubscribev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17MqttPublishDirectPKch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11MqttPublishPKch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11MqttPublishPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z29MqttPublishDomoticzPowerStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24DomoticzUpdatePowerStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18DomoticzMqttUpdatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15DomoticzSendKeyhhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14DomoticzSensorhPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14DomoticzSensorhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11CounterShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns01h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10Bh1750Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7MhzShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns15h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SenseairShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7PmsShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns18h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9Sgp30Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21DomoticzTempHumSensorPcS_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SonoffScShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7DhtShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7ShtShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns07h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7HtuShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9Sht3xShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z29DomoticzTempHumPressureSensorPcS_S_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7BmpShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z25DomoticzSensorPowerEnergyiPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10EnergyShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ds18x20Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11NovaSdsShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns20h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10LM75ADShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24MqttPublishPrefixTopic_PhPKch + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24MqttPublishPrefixTopic_PhPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13PublishStatush + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26MqttPublishPowerBlinkStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23SonoffBridgeReceivedRawv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23SonoffBridgeLearnFailedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20SonoffBridgeReceivedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23SonoffBridgeSerialInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv06h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17SerialBridgeInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv08h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12TimerCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26HxCalibrationStateTextJsonh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HxCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HxEvery100mSecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns34h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14EnergyMqttShowv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21MqttPublishPowerStateh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19ExecuteCommandPowerhhi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11SetFanspeedh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17StopAllPowerBlinkv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17EnergyMarginCheckv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns03h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12LightPowerOnv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17LightPreparePowerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11LightSetHsbffftb + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12LightCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16TimerEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv09h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15HandleUpnpEventv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HueLightsP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13MqttConnectedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HAssDiscoverRelayv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18HAssDiscoverButtonv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13HAssDiscoveryh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv12h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7SendKeyhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SwitchHandlerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11MqttCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv02h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15MqttDataHandlerPcPhj + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14ExecuteCommandPci + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16Every100mSecondsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13TuyaResetWifiv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13ButtonHandlerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MqttDisconnectedi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16MqttSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15AriluxRfHandlerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14IrReceiveCheckv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13IrSendCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv05h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16DomoticzMqttDatav + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv07h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20DomoticzSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17TimerSaveSettingsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14RuleSetProcesshR6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17RulesProcessEventPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12RulesProcessv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15RulesEvery100msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15RulesTeleperiodv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z18PerformEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14RulesEvery50msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16RulesEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv10h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12TuyaSetPowerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15LightSerialDutyh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12LightAnimatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13LightSetPowerv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv04h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17TuyaPacketProcessv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z15TuyaSerialInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14TuyaSetWifiLedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8TuyaInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17TuyaButtonPressedv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv16h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14RfReceiveCheckv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv17h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17PzemAcEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg05h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17PzemDcEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xnrg06h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HueNotImplementedP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12HandleHueApiP6String + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SonoffScSendPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SonoffScInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns04h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19SonoffScSerialInputPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11SerialInputv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ds18x20Initv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns05h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7DhtReadh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14DhtReadTempHumh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14DhtEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns06h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9HtuDetectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14HtuEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns08h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9BmpDetectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14BmpEverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns09h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12Bh1750Detectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17Bh1750EverySecondv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns10h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Sht3xDetectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns14h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13Senseair250msv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns17h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Sgp30Updatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns21h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12LM75ADDetectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns26h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleWifiConfigurationv$part$130 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z20WemoRespondToMSearchi + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19HueRespondToMSearchv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13ShowWebSourcei$part$123 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13ShowWebSourcei + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17ExecuteWebCommandPci + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HandleHttpCommandv$part$140 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleAjaxConsoleRefreshv$part$142 + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10WebRestarth + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleAjaxStatusRefreshv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13MqttReconnectv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9MqttCheckv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16Every250mSecondsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.loop 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.startup._GLOBAL__sub_I_Settings + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal.exit._GLOBAL__sub_D_Settings + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13CaptivePortalv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10HandleRootv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z8HttpUserv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z19HandleConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z25HandleModuleConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleWifiConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26HandleLoggingConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleOtherConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z25HandleBackupConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleResetConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26HandleRestoreConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HandleInformationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z21HandleUpgradeFirmwarev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z26HandleUpgradeFirmwareStartv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16HandleUploadDonev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z17HandleHttpCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13HandleConsolev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleAjaxConsoleRefreshv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleMqttConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z27HandleDomoticzConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z24HandleTimerConfigurationv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z14HandleNotFoundv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7WebSendPc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10WebCommandv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7PollUdpv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xdrv01h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .data 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z12GetStateTexth + 0x00000000 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z16RtcSettingsValidv + 0x00000000 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z14RtcRebootValidv + 0x00000000 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z18GetSettingsAddressv + 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z18OsWatchBlockedLoopv + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text.strcspn 0x00000000 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z9TextToIntPc + 0x00000000 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z5RTrimPc + 0x00000000 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z14GetPowerDevicePchj + 0x00000000 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z12ConvertPressf + 0x00000000 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z17WifiWpsConfigDonev + 0x00000000 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z18WifiWpsConfigBeginv + 0x00000000 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z9I2cDeviceh + 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z9LocalTimev + 0x00000000 0xb .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z8Midnightv + 0x00000000 0xb .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z15MqttLibraryTypev + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z16MqttRetryCounterh + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z27EnergySetPowerSteadyCounterv + 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z19SonoffBridgeSendAckv + 0x00000000 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z10map_doubleddddd + 0x00000000 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z11XdspPresentv + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z8XdspCallh + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z3modii + 0x00000000 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z18Ws2812ForceSuspendv + 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z8HxWeightv + 0x00000000 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z11XsnsPresentv + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z10I2cWrite16hht + 0x00000000 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z14I2cWriteBufferhhPht + 0x00000000 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z13I2cValidRead8Phhh + 0x00000000 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z16I2cValidRead16LEPthh + 0x00000000 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z18I2cValidReadS16_LEPshh + 0x00000000 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z15I2cValidReadS16Pshh + 0x00000000 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z14I2cValidRead24Pihh + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z10I2cReadS16hh + 0x00000000 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z13I2cReadS16_LEhh + 0x00000000 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z13I2cReadBufferhhPht + 0x00000000 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text.WifiWpsStatusCallback + 0x00000000 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .data.bmp_once + 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.mcp_kWhcounter + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.rules_quota + 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.config_xor_on + 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.wps_result + 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.spi_flg 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.state_second + 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.lit 0x00000000 0x12b8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.prop 0x00000000 0x15804 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecvC2Etthb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecvD2Ev + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv11disableIRInEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv6resumeEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv10enableIRInEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv12copyIrParamsEPV10irparams_tPS0_ + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv10getBufSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv8ticksLowEjh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv9ticksHighEjh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv5matchEjjh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv12matchAtLeastEjjh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv9matchMarkEjjhs + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv10matchSpaceEjjhs + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv7compareEtt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv10decodeHashEP14decode_results + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv6decodeEP14decode_resultsP10irparams_t + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRrecv9matchDataEPVtttjtj + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .text._ZN6IRrecvD2Ev + 0x00000000 0x49 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .text._ZN6IRrecv11disableIRInEv + 0x00000000 0x34 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .text._ZN6IRrecv10getBufSizeEv + 0x00000000 0xf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .bss.irparams_save + 0x00000000 0x4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .xt.lit 0x00000000 0x90 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .xt.prop 0x00000000 0x57c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .literal._ZN6IRsendC2Etb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend5beginEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend6ledOffEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend14calcUSecPeriodEjb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend11enableIROutEjh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend4markEt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend5spaceEj + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend9calibrateEt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend8sendDataEtjtjytb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend7sendRawEPttt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN6IRsend4sendEtyt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .text._ZN6IRsend9calibrateEt + 0x00000000 0xf8 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .text._ZN6IRsend7sendRawEPttt + 0x00000000 0x6b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .text._ZN6IRsend4sendEtyt + 0x00000000 0x97 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .rodata._ZN6IRsend4sendEtyt + 0x00000000 0x34 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .xt.lit 0x00000000 0x50 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .xt.prop 0x00000000 0x3cc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .literal._ZN7IRtimer5resetEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .literal._ZN7IRtimerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .literal._ZN7IRtimer7elapsedEv + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .xt.prop 0x00000000 0x78 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .literal._ZN6IRsend8sendDISHEytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .xt.lit 0x00000000 0x8 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .xt.prop 0x00000000 0x30 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .literal._ZN6IRsend7sendJVCEytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .literal._ZN6IRsend9encodeJVCEhh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .literal._ZN6IRrecv9decodeJVCEP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .text._ZN6IRsend9encodeJVCEhh + 0x00000000 0x2a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .xt.prop 0x00000000 0xcc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .literal._ZN6IRsend7sendNECEytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .literal._ZN6IRsend9encodeNECEtt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .literal._ZN6IRrecv9decodeNECEP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .text._ZN6IRsend9encodeNECEtt + 0x00000000 0x81 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .xt.prop 0x00000000 0x18c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .literal._ZN6IRsend15sendPanasonic64Eytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .literal._ZN6IRsend13sendPanasonicEtjtt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .literal._ZN6IRsend15encodePanasonicEthhh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .literal._ZN6IRrecv15decodePanasonicEP14decode_resultstbj + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .text._ZN6IRsend15encodePanasonicEthhh + 0x00000000 0x26 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .literal._ZN6IRsend7sendRC5Eytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend9encodeRC5Ehhb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend10encodeRC5XEhhb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend9toggleRC5Ey + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend9toggleRC6Eyt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend9encodeRC6Ejht + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend7sendRC6Eytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRrecv10getRClevelEP14decode_resultsPtS2_t + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRrecv9decodeRC5EP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRrecv9decodeRC6EP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text._ZN6IRsend9encodeRC5Ehhb + 0x00000000 0x1a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text._ZN6IRsend10encodeRC5XEhhb + 0x00000000 0x26 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text._ZN6IRsend9toggleRC5Ey + 0x00000000 0xe .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text._ZN6IRsend9toggleRC6Eyt + 0x00000000 0x20 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .text._ZN6IRsend9encodeRC6Ejht + 0x00000000 0x46 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .xt.prop 0x00000000 0x528 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .literal._ZN6IRsend11sendSAMSUNGEytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .literal._ZN6IRsend13encodeSAMSUNGEhh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .literal._ZN6IRrecv13decodeSAMSUNGEP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .text._ZN6IRsend13encodeSAMSUNGEhh + 0x00000000 0x5f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .xt.prop 0x00000000 0x108 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .literal._ZN6IRsend8sendSonyEytt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .literal._ZN6IRsend10encodeSonyEtttt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .literal._ZN6IRrecv10decodeSonyEP14decode_resultstb + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .text._ZN6IRsend10encodeSonyEtttt + 0x00000000 0x5c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .literal._Z11reverseBitsyt + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .literal._Z14uint64ToStringyh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .literal._Z17serialPrintUint64yh + 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .text._Z14uint64ToStringyh + 0x00000000 0xcf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .text._Z17serialPrintUint64yh + 0x00000000 0x43 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .xt.prop 0x00000000 0xcc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWireC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4pinsEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire8setClockEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire20setClockStretchLimitEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhjb + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEiii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire4pinsEii + 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEh + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire6statusEv + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEi + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire8setClockEj + 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire20setClockStretchLimitEj + 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEhhh + 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEiii + 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onReceiveE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onRequestE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN6TickerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker10_attach_msEjbPFvPvEj + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker6detachEv + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6TickerD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._Z10C2D_enableb$part$0 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL6c2_bitb + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z16c2_address_writeh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_address_readv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_data_writejh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRjh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRhh$isra$1 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z8c2_resetv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z19c2_programming_initv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_block_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_eeprom_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_block_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_eeprom_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_page_eraseh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_device_erasev + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z18c2_sfr_write_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z17c2_sfr_read_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z23c2_print_status_by_nameh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z15c2_eeprom_writejPhh + 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_block_readjPhh + 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z14c2_eeprom_readjPhh + 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_page_eraseh + 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z18c2_sfr_write_pagedhh + 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z17c2_sfr_read_pagedhRh + 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.str1.4 + 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z23c2_print_status_by_nameh + 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.CSWTCH$90 + 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL12value_of_hexh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .literal._Z10ihx_decodePht + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .literal._ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .rodata.str1.4 + 0x00000000 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .rodata 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .text._ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x249 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .xt.prop 0x00000000 0x78 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .literal._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPdisconnectEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass8softAPIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .text._ZN18ESP8266WiFiAPClass16softAPdisconnectEb + 0x00000000 0x82 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .text._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh + 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .xt.lit 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .xt.prop 0x00000000 0x228 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._Z23wifi_dns_found_callbackPKcP7ip_addrPv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES4_EUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES2_EUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClassC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass7channelEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass12getSleepModeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass10setPhyModeE11WiFiPhyMode + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass10getPhyModeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass14setOutputPowerEf + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass10persistentEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass7getModeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass9enableSTAEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass8enableAPEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass15forceSleepBeginEj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass14forceSleepWakeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC5ERKS4_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC5ERKS4_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC5ERKS4_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC5ERKS4_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES0_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._Z24onStationModeDHCPTimeoutSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x45 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x45 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES4_EUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES2_EUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x00000000 0x4a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x00000000 0x94 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass12getSleepModeEv + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass10setPhyModeE11WiFiPhyMode + 0x00000000 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass14setOutputPowerEf + 0x00000000 0x76 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass7getModeEv + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass15forceSleepBeginEj + 0x00000000 0x79 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass14forceSleepWakeEv + 0x00000000 0x59 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC2ERKS4_ + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC2ERKS4_ + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC2ERKS4_ + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC2ERKS4_ + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES0_ + 0x00000000 0xd4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEE + 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEE + 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._Z24onStationModeDHCPTimeoutSt8functionIFvvEE + 0x00000000 0x132 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEE + 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .text._ZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEE + 0x00000000 0x132 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .bss._ZN23ESP8266WiFiGenericClass19_forceSleepLastModeE + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.lit 0x00000000 0x150 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xt.prop._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._Z18wifi_wps_status_cb13wps_cb_status + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass9reconnectEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass10disconnectEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass14setAutoConnectEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass14getAutoConnectEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass16setAutoReconnectEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass7localIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass10macAddressEPh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass10macAddressEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass10subnetMaskEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass9gatewayIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass5dnsIPEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass8hostnameEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass8hostnameEPc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass8hostnameEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass8hostnameE6String + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass11isConnectedEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass20waitForConnectResultEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZNK19ESP8266WiFiSTAClass4SSIDEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZNK19ESP8266WiFiSTAClass3pskEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass5BSSIDEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass8BSSIDstrEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass4RSSIEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass14beginWPSConfigEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass16beginSmartConfigEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass15stopSmartConfigEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass20_smartConfigCallbackEjPv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN19ESP8266WiFiSTAClass15smartConfigDoneEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._Z18wifi_wps_status_cb13wps_cb_status + 0x00000000 0x2c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass9reconnectEv + 0x00000000 0x3f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass16setAutoReconnectEb + 0x00000000 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass10macAddressEPh + 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass8hostnameEv + 0x00000000 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass8hostnameEPKc + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass8hostnameE6String + 0x00000000 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass5beginEv + 0x00000000 0x71 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass11isConnectedEv + 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass20waitForConnectResultEv + 0x00000000 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZNK19ESP8266WiFiSTAClass4SSIDEv + 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZNK19ESP8266WiFiSTAClass3pskEv + 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass5BSSIDEv + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass14beginWPSConfigEv + 0x00000000 0x85 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass16beginSmartConfigEv + 0x00000000 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass15stopSmartConfigEv + 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass20_smartConfigCallbackEjPv + 0x00000000 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .text._ZN19ESP8266WiFiSTAClass15smartConfigDoneEv + 0x00000000 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .bss._ZZN19ESP8266WiFiSTAClass5BSSIDEvE4conf + 0x00000000 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .bss._ZN19ESP8266WiFiSTAClass16_smartConfigDoneE + 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .bss._ZN19ESP8266WiFiSTAClass19_smartConfigStartedE + 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .xt.lit 0x00000000 0x108 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .xt.prop 0x00000000 0x750 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .literal._ZN20ESP8266WiFiScanClass9_scanDoneEPvi + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass12scanCompleteEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass10scanDeleteEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass12scanNetworksEbb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass4SSIDEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass14encryptionTypeEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass14getNetworkInfoEhR6StringRhRiRPhS3_Rb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass4RSSIEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass5BSSIDEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass8BSSIDstrEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass7channelEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .literal._ZN20ESP8266WiFiScanClass8isHiddenEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .text._ZN20ESP8266WiFiScanClass12scanCompleteEv + 0x00000000 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .text._ZN20ESP8266WiFiScanClass14getNetworkInfoEhR6StringRhRiRPhS3_Rb + 0x00000000 0x8f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .text._ZN20ESP8266WiFiScanClass5BSSIDEh + 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .text._ZN20ESP8266WiFiScanClass8isHiddenEh + 0x00000000 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .xt.lit 0x00000000 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .xt.prop 0x00000000 0x39c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient9connectedEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientcvbEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient7connectEPKct + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient7connectE9IPAddresst + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient6_s_errEPva + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient9peekBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient4readEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientC2EP13ClientContext + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientC2ERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClientaSERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient10_connectedEPva + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient12_s_connectedEPvS0_a + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient4_errEa + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient10setNoDelayEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient10getNoDelayEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient7write_PEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient8remoteIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient10remotePortEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient7localIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient9localPortEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient7stopAllEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN10WiFiClient13stopAllExceptEPS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient4_errEa + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient10getNoDelayEv + 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient7write_PEPKcj + 0x00000000 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient6statusEv + 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient10remotePortEv + 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN10WiFiClient9localPortEv + 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .rodata._ZTV6Client + 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.lit 0x00000000 0xc0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.prop 0x00000000 0x81c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.prop._ZTV6Client + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP11beginPacketEPKct + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP4readEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP9endPacketEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP8remoteIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP10remotePortEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP11parsePacketEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP11beginPacketE9IPAddresst + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP5beginEt + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDPC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDPC2ERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDPaSERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDPD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP13destinationIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP9localPortEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP7stopAllEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN7WiFiUDP13stopAllExceptEPS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN7WiFiUDPC2ERKS_ + 0x00000000 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN7WiFiUDPaSERKS_ + 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN7WiFiUDP13destinationIPEv + 0x00000000 0x5a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN7WiFiUDP9localPortEv + 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .text._ZN7WiFiUDP13stopAllExceptEPS_ + 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .rodata._ZTV3UDP + 0x00000000 0x50 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xt.lit 0x00000000 0x90 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xt.prop 0x00000000 0x678 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xt.prop._ZTV3UDP + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponderC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder15setInstanceNameE6String + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder17_getAnswerFromIdxEi + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder8hostnameEi + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder2IPEi + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder4portEi + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder14_getNumAnswersEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder12queryServiceEPcS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder14_getServiceTxtEPcS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder15_getServicePortEPcS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder10addServiceEPcS0_t + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder9_getOurIpEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder7_listenEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder8_restartEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder13enableArduinoEtb + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder6_replyEhPcS0_t + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder17advertiseServicesEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder12_parsePacketEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder6updateEv + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponderD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder5beginEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder15setInstanceNameE6String + 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ + 0x00000000 0x16e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder13enableArduinoEtb + 0x00000000 0xbf .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.lit 0x00000000 0xd8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop 0x00000000 0xbe8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN14Adafruit_SGP30C2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3011generateCRCEPhh + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP307IAQinitEv + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP305beginEP7TwoWire + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3010IAQmeasureEv + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3014setIAQBaselineEtt + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .text._ZN14Adafruit_SGP3014setIAQBaselineEtt + 0x00000000 0x74 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xt.lit 0x00000000 0x30 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xt.prop 0x00000000 0x240 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN10HTTPUploadC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN5Print5writeEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerC2E9IPAddressi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerC2Ei + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10addHandlerEP14RequestHandler + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer5closeEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer11sendContentERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer13sendContent_PEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer13sendContent_PEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer3argE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer3argEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer7argNameEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4argsEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6hasArgE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6headerE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14collectHeadersEPPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6headerEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10headerNameEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer7headersEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer9hasHeaderE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12authenticateEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10hostHeaderEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer21_responseCodeToStringEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiPKcRK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer21requestAuthenticationEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiPcRK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiRK6StringS2_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6send_PEiPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6send_PEiPKcS1_j + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandlerD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt8functionIFvvEEC5ERKS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14_handleRequestEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12handleClientEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x52 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN5Print5writeEPKcj + 0x00000000 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x511 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServerC2E9IPAddressi + 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10addHandlerEP14RequestHandler + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ + 0x00000000 0xac .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer4stopEv + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer13sendContent_PEPKc + 0x00000000 0x63 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer13sendContent_PEPKcj + 0x00000000 0x72 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6headerEi + 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10headerNameEi + 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer7headersEv + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer4sendEiPcRK6String + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6send_PEiPKcS1_ + 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6send_PEiPKcS1_j + 0x00000000 0x9f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x39 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x58 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x29 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x21 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x1b9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x266 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE + 0x00000000 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServerD2Ev + 0x00000000 0x118 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .rodata._ZTV20StaticRequestHandler + 0x00000000 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit 0x00000000 0x138 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop 0x00000000 0x1188 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN5Print5writeEPKcj + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZTV20StaticRequestHandler + 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer16_uploadWriteByteEh + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer9urlDecodeERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer15_parseArgumentsE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer23_parseFormUploadAbortedEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer13_parseRequestER10WiFiClient + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN9DNSServerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer6setTTLERKj + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer11replyWithIPEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer19replyWithCustomCodeEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer18processNextRequestEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer6setTTLERKj + 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer4stopEv + 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN8RCSwitch11setProtocolENS_8ProtocolE + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch11setProtocolEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitchC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch11setProtocolEii + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch14setPulseLengthEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch17setRepeatTransmitEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch19setReceiveToleranceEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch14enableTransmitEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch15disableTransmitEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch12getCodeWordAEPKcS1_b + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch12getCodeWordBEiib + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch12getCodeWordCEciib + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch12getCodeWordDEcib + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8transmitENS_7HighLowE + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch13enableReceiveEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch13enableReceiveEi + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch14disableReceiveEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch4sendEmj + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch12sendTriStateEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8switchOnEci + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9switchOffEci + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8switchOnEcii + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9switchOffEcii + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8switchOnEii + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9switchOffEii + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8switchOnEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch8switchOnEPKci + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9switchOffEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9switchOffEPKci + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch4sendEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch14resetAvailableEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch16getReceivedValueEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch20getReceivedBitlengthEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch16getReceivedDelayEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch19getReceivedProtocolEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .literal._ZN8RCSwitch18getReceivedRawdataEv + 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch11setProtocolENS_8ProtocolE + 0x00000000 0x16 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch11setProtocolEii + 0x00000000 0x26 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch19setReceiveToleranceEi + 0x00000000 0xb .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch15disableTransmitEv + 0x00000000 0x6 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch12getCodeWordAEPKcS1_b + 0x00000000 0x63 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch12getCodeWordBEiib + 0x00000000 0x6c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch12getCodeWordCEciib + 0x00000000 0x9c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch12getCodeWordDEcib + 0x00000000 0x84 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch12sendTriStateEPKc + 0x00000000 0x4b .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch8switchOnEci + 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch9switchOffEci + 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch8switchOnEcii + 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch9switchOffEcii + 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch8switchOnEii + 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch9switchOffEii + 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch8switchOnEPKcS1_ + 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .rodata.str1.4 + 0x00000000 0x2e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .rodata 0x00000000 0x18 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch8switchOnEPKci + 0x00000000 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch9switchOffEPKcS1_ + 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch9switchOffEPKci + 0x00000000 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch4sendEPKc + 0x00000000 0x3b .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .text._ZN8RCSwitch18getReceivedRawdataEv + 0x00000000 0x9 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch12getCodeWordDEcibE7sReturn + 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch12getCodeWordCEciibE7sReturn + 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch12getCodeWordBEiibE7sReturn + 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch12getCodeWordAEPKcS1_bE7sReturn + 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .rodata._ZN8RCSwitch16nSeparationLimitE + 0x00000000 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .xt.lit 0x00000000 0x118 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .xt.prop 0x00000000 0x864 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdateC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdateD2Ev + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate12getLastErrorEv + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate18getLastErrorStringEv + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate9runUpdateER6Streamj6Stringi + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate12handleUpdateER10HTTPClientRK6Stringb + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_b + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_S2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_S2_ + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_bS2_b + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN17ESP8266HTTPUpdateC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN17ESP8266HTTPUpdateC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdateC2Ev + 0x00000000 0x7 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdateD2Ev + 0x00000000 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_ + 0x00000000 0xb0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_b + 0x00000000 0x19 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_S2_ + 0x00000000 0xb0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_ + 0x00000000 0x7f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_ + 0x00000000 0xb4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_S2_ + 0x00000000 0xe4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_bS2_b + 0x00000000 0x36 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .text.exit._GLOBAL__sub_D__ZN17ESP8266HTTPUpdateC2Ev + 0x00000000 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .xt.lit 0x00000000 0x60 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .xt.prop 0x00000000 0x6cc .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerialD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerialD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial14isValidGPIOpinEi + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerialC2Eiib + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial5beginEli + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial14hardwareSerialEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._ZN13TasmotaSerial6rxReadEv + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_0v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_1v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_2v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_3v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_4v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z9tms_isr_5v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z10tms_isr_12v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z10tms_isr_13v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z10tms_isr_14v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .literal._Z10tms_isr_15v + 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .text._ZN13TasmotaSerial5beginEv + 0x00000000 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .xt.lit 0x00000000 0xa8 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .xt.prop 0x00000000 0x5e8 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbusC2Eii + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._Z12CalculateCRCPhh + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus5BeginEli + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus4SendEhhtt + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus12ReceiveReadyEv + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus13ReceiveBufferEPhh + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus20Receive16BitRegisterEPt + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbus20Receive32BitRegisterEPf + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .text._ZN13TasmotaModbus20Receive32BitRegisterEPf + 0x00000000 0x43 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .xt.prop 0x00000000 0x228 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .xt.prop 0x00000000 0xc0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2ER6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPKctR6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPKctR6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient8readByteEPh + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient8readByteEPhPt + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient10readPacketEPh + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient5writeEhPht + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient10disconnectEv + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient11writeStringEPKcPht + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9connectedEv + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7connectEPKcS1_S1_S1_hhS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7connectEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7connectEPKcS1_S1_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7connectEPKcS1_hhS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7publishEPKcPKhjh + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7publishEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7publishEPKcS1_h + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient7publishEPKcPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9publish_PEPKcPKhjh + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9subscribeEPKch + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9subscribeEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient11unsubscribeEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient4loopEv + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9setServerE9IPAddresst + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9setServerEPht + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPhtR6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPhtR6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2E9IPAddresstR6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2E9IPAddresstR6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9setServerEPKct + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9setClientER6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient9setStreamER6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient5stateEv + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClient11setCallbackESt8functionIFvPcPhjEE + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6Client + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6ClientR6Stream + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientD2Ev + 0x00000000 0x37 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientD0Ev + 0x00000000 0x29 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPKctR6Client + 0x00000000 0x7e .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPKctR6ClientR6Stream + 0x00000000 0x80 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient7connectEPKc + 0x00000000 0x23 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient7connectEPKcS1_S1_ + 0x00000000 0x1f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient7connectEPKcS1_hhS1_ + 0x00000000 0x2b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient7publishEPKcS1_ + 0x00000000 0x36 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient7publishEPKcPKhj + 0x00000000 0x18 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient9publish_PEPKcPKhjh + 0x00000000 0xff .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient11unsubscribeEPKc + 0x00000000 0x91 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient9setServerE9IPAddresst + 0x00000000 0x34 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient9setServerEPht + 0x00000000 0x50 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPhtR6Client + 0x00000000 0x77 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPhtR6ClientR6Stream + 0x00000000 0x79 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2E9IPAddresstR6Client + 0x00000000 0x85 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2E9IPAddresstR6ClientR6Stream + 0x00000000 0x86 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient9setClientER6Client + 0x00000000 0x4 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClient9setStreamER6Stream + 0x00000000 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2Ev + 0x00000000 0x73 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6Client + 0x00000000 0xb1 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6ClientR6Stream + 0x00000000 0xb3 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6Client + 0x00000000 0xa3 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6ClientR6Stream + 0x00000000 0xa5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6Client + 0x00000000 0xa9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .text._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6ClientR6Stream + 0x00000000 0xaf .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .rodata._ZTV12PubSubClient + 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.lit._ZN12PubSubClientD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.lit._ZN12PubSubClientD0Ev + 0x00000000 0x8 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.lit 0x00000000 0x120 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZN12PubSubClientD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZN12PubSubClientD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop 0x00000000 0x9fc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZTV12PubSubClient + 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal.__tcf_0 + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli4_kHzy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli4_MHzy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli4_GHzy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli5_kBity + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli5_MBity + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli5_GBity + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli3_kBy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli3_MBy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._Zli3_GBy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass9wdtEnableEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass9wdtEnableE6WDTO_t + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass10wdtDisableEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass7wdtFeedEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass9deepSleepEj6RFMode + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass17rtcUserMemoryReadEjPjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass18rtcUserMemoryWriteEjPjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass5resetEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass7restartEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass6getVccEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass11getFreeHeapEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass9getChipIdEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass14getCoreVersionEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass13getSdkVersionEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass14getBootVersionEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass11getBootModeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass13getCpuFreqMHzEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass14getFlashChipIdEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass20getFlashChipRealSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass16getFlashChipSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass17getFlashChipSpeedEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass16getFlashChipModeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass18magicFlashChipSizeEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass19magicFlashChipSpeedEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass18magicFlashChipModeEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass24getFlashChipSizeByChipIdEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass16checkFlashConfigEb + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass14getResetReasonEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass12getResetInfoEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass15getResetInfoPtrEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass11eraseConfigEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass13getSketchSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass18getFreeSketchSpaceEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass12updateSketchER6Streamjbb + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass16flashEraseSectorEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass10flashWriteEjPjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass9flashReadEjPjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .literal._ZN8EspClass12getSketchMD5Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text.__tcf_0 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli4_kHzy + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli4_MHzy + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli4_GHzy + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli5_kBity + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli5_MBity + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli5_GBity + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli3_kBy + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli3_MBy + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._Zli3_GBy + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass9wdtEnableEj + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass9wdtEnableE6WDTO_t + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass10wdtDisableEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass7wdtFeedEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass9deepSleepEj6RFMode + 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass14getCoreVersionEv + 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass11getBootModeEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass17getFlashChipSpeedEv + 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass19magicFlashChipSpeedEh + 0x00000000 0x11 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass18magicFlashChipModeEh + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass24getFlashChipSizeByChipIdEv + 0x00000000 0x133 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass15getResetInfoPtrEv + 0x00000000 0x9 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass11eraseConfigEv + 0x00000000 0x64 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass12updateSketchER6Streamjbb + 0x00000000 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .text._ZN8EspClass12getSketchMD5Ev + 0x00000000 0x188 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .rodata.CSWTCH$85 + 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .bss._ZZN8EspClass12getSketchMD5EvE6result + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .bss._ZGVZN8EspClass12getSketchMD5EvE6result + 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .xt.lit 0x00000000 0x148 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .xt.prop 0x00000000 0xa80 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File5writeEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File9availableEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File4readEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File5flushEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZL6sflagsPKcRN2fs8OpenModeERNS1_10AccessModeE + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4FileC5ESt10shared_ptrINS_8FileImplEE + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File4readEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File9readBytesEPcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File4seekEjNS_8SeekModeE + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File4peekEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZNK2fs4File8positionEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZNK2fs4File4sizeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZNK2fs4FilecvbEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZNK2fs4File4nameEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs3Dir8fileNameEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs3Dir8fileSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs3Dir4nextEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS5beginEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS3endEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6formatEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS4infoERNS_6FSInfoE + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6existsEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6existsERK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6removeEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6removeERK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6renameEPKcS2_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS6renameERK6StringS3_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs3Dir8openFileEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS4openEPKcS2_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS4openERK6StringPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS7openDirEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs2FS7openDirERK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .literal._ZN2fs4File5closeEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File5writeEh + 0x00000000 0x23 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File5writeEPKhj + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File9availableEv + 0x00000000 0x37 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File4readEv + 0x00000000 0x26 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File5flushEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZL6sflagsPKcRN2fs8OpenModeERNS1_10AccessModeE + 0x00000000 0x4c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File4readEPhj + 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File9readBytesEPcj + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File4seekEjNS_8SeekModeE + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File4peekEv + 0x00000000 0x4c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZNK2fs4File8positionEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZNK2fs4File4sizeEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZNK2fs4FilecvbEv + 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZNK2fs4File4nameEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs3Dir8fileNameEv + 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs3Dir8fileSizeEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs3Dir4nextEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS5beginEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS3endEv + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6formatEv + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS4infoERNS_6FSInfoE + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6existsEPKc + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6existsERK6String + 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6removeEPKc + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6removeERK6String + 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6renameEPKcS2_ + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS6renameERK6StringS3_ + 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs3Dir8openFileEPKc + 0x00000000 0x67 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS4openEPKcS2_ + 0x00000000 0x6f .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS4openERK6StringPKc + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS7openDirEPKc + 0x00000000 0x48 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs2FS7openDirERK6String + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .text._ZN2fs4File5closeEv + 0x00000000 0x47 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .rodata._ZTVN2fs4FileE + 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.lit._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE + 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.lit._ZN2fs4File9readBytesEPcj + 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.lit 0x00000000 0x58 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop 0x00000000 0x6c0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE + 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop._ZN2fs4File9readBytesEPcj + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xt.prop._ZTVN2fs4FileE + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial5flushEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial5writeEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial9availableEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial4peekEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial4readEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerialC2Ei + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial5beginEm12SerialConfig10SerialModeh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial3endEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial4swapEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial6set_txEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial4pinsEhh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial14setDebugOutputEb + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial11isTxEnabledEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial11isRxEnabledEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial17availableForWriteEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerial8baudRateEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZNK14HardwareSerialcvbEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN14HardwareSerialC2Ei + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN14HardwareSerialC2Ei + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial3endEv + 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial4swapEh + 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial4pinsEhh + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial14setDebugOutputEb + 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial11isTxEnabledEv + 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial11isRxEnabledEv + 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZN14HardwareSerial17availableForWriteEv + 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .text._ZNK14HardwareSerialcvbEv + 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .xt.lit 0x00000000 0x90 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .xt.prop 0x00000000 0x4bc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZNK9IPAddress7printToER5Print + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressC2Ehhhh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressC2Ej + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressC2EPKh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddress10fromStringEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressaSEPKh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddressaSEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZNK9IPAddresseqEPKh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._ZN9IPAddress8toStringEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN9IPAddressC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .text._ZN9IPAddressaSEPKh + 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .text._ZNK9IPAddresseqEPKh + 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .rodata._ZTV9Printable + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .xt.prop 0x00000000 0x210 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .xt.prop._ZTV9Printable + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .literal._Z16hex_char_to_byteh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder5beginEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder3addEPht + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder12addHexStringEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder9addStreamER6Streamj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder9calculateEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder8getBytesEPh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder8getCharsEPc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .literal._ZN10MD5Builder8toStringEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .text._Z16hex_char_to_byteh + 0x00000000 0x34 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .text._ZN10MD5Builder12addHexStringEPKc + 0x00000000 0xa7 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .text._ZN10MD5Builder9addStreamER6Streamj + 0x00000000 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .text._ZN10MD5Builder8getBytesEPh + 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .xt.prop 0x00000000 0x204 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5writeEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print6printfEPKcz + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printERK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printERK9Printable + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnERK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnERK9Printable + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print11printNumberEmh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEli + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEii + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEii + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEli + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEmi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEhi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEhi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEji + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEji + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEmi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print10printFloatEdh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print5printEdi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .literal._ZN5Print7printlnEdi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5writeEPKc + 0x00000000 0x32 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5printERK6String + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5printERK9Printable + 0x00000000 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnERK6String + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEc + 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnERK9Printable + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5printEli + 0x00000000 0x67 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5printEii + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEii + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEli + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEhi + 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEji + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEmi + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print10printFloatEdh + 0x00000000 0x217 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print5printEdi + 0x00000000 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .text._ZN5Print7printlnEdi + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .rodata._ZTV5Print + 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xt.lit._ZN5Print5writeEPKc + 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xt.lit 0x00000000 0xb0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xt.prop 0x00000000 0x57c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xt.prop._ZN5Print5writeEPKc + 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xt.prop._ZTV5Print + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9timedReadEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9readBytesEPcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9timedPeekEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream13peekNextDigitEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream10setTimeoutEm + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9findUntilEPKcjS1_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream4findEPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream9findUntilEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream4findEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream8parseIntEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream8parseIntEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream10parseFloatEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream10parseFloatEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream14readBytesUntilEcPcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream10readStringEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .literal._ZN6Stream15readStringUntilEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream9timedPeekEv + 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream13peekNextDigitEv + 0x00000000 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream9findUntilEPKcjS1_j + 0x00000000 0x91 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream4findEPKcj + 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream9findUntilEPKcS1_ + 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream4findEPKc + 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream8parseIntEc + 0x00000000 0x85 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream8parseIntEv + 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream10parseFloatEc + 0x00000000 0xfb .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream10parseFloatEv + 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream14readBytesUntilEcPcj + 0x00000000 0x56 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .text._ZN6Stream10readStringEv + 0x00000000 0x4f .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .xt.lit 0x00000000 0x78 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .xt.prop 0x00000000 0x480 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString9availableEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString5flushEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString5writeEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString4peekEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString4readEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12StreamString5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .xt.lit 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .xt.prop 0x00000000 0x168 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .literal._ZN12UpdaterClassC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass6_resetEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass5beginEji + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass6setMD5EPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass12_writeBufferEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass5writeEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass13_verifyHeaderEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass10_verifyEndEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass3endEb + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass11writeStreamER6Stream + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._ZN12UpdaterClass10printErrorER6Stream + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN12UpdaterClassC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN12UpdaterClassC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .xt.lit 0x00000000 0x60 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .xt.prop 0x00000000 0x5f4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .literal._Z10randomSeedm + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z6randoml + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z6randomll + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z12secureRandoml + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z12secureRandomll + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z3maplllll + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z8makeWordj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._Z8makeWordhh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z10randomSeedm + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z12secureRandoml + 0x00000000 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z12secureRandomll + 0x00000000 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z8makeWordj + 0x00000000 0x2 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z8makeWordhh + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .xt.lit 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .xt.prop 0x00000000 0x174 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .literal._ZN6StringC2EOS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2EO15StringSumHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringD2Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String10invalidateEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String12changeBufferEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String7reserveEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String4copyEPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2EPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String4copyEPK19__FlashStringHelperj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String4moveERS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringaSERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2ERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringaSEOS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringaSEO15StringSumHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringaSEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Ec + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Ehh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Eih + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Ejh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Elh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Emh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Efh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2Edh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringaSEPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringC2EPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEl + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEm + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEf + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEd + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6concatEPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperRK6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperh + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperi + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperl + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperm + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperf + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperd + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZplRK15StringSumHelperPK19__FlashStringHelper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String9compareToERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String6equalsERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String6equalsEPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6StringltERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6StringgtERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6StringleERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6StringgeERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String16equalsIgnoreCaseERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String10startsWithERKS_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String10startsWithERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String8endsWithERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String9setCharAtEjc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6StringixEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6StringixEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String6charAtEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String8getBytesEPhjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String7indexOfEcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String7indexOfEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String7indexOfERKS_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String7indexOfERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String11lastIndexOfEcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String11lastIndexOfEc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String11lastIndexOfERKS_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String11lastIndexOfERKS_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String9substringEjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String7replaceEcc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String7replaceERKS_S1_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6removeEjj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String6removeEj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String11toLowerCaseEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String11toUpperCaseEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZN6String4trimEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String5toIntEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._ZNK6String7toFloatEv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringC2EO15StringSumHelper + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringaSEO15StringSumHelper + 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringC2Ec + 0x00000000 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringC2Elh + 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringC2Efh + 0x00000000 0x51 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringC2Edh + 0x00000000 0x45 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String6concatEj + 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String6concatEl + 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String6concatEm + 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String6concatEf + 0x00000000 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String6concatEd + 0x00000000 0x47 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperc + 0x00000000 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperh + 0x00000000 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperi + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperj + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperl + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperm + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperf + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZplRK15StringSumHelperd + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6StringltERKS_ + 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6StringgtERKS_ + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6StringleERKS_ + 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6StringgeERKS_ + 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String9setCharAtEjc + 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6StringixEj + 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6String8getBytesEPhjj + 0x00000000 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6String11lastIndexOfEcj + 0x00000000 0x56 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6String11lastIndexOfEc + 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6String11lastIndexOfERKS_ + 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZN6String7replaceEcc + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .text._ZNK6String7toFloatEv + 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .bss._ZZN6StringixEjE19dummy_writable_char + 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .xt.lit 0x00000000 0x268 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .xt.prop 0x00000000 0x1218 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .literal._Znwj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._Znaj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZdlPv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZdaPv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.__cxa_pure_virtual + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.__cxa_deleted_virtual + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.__cxa_guard_acquire + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.__cxa_guard_release + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.__cxa_guard_abort + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZSt25__throw_bad_function_callv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZSt20__throw_length_errorPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZSt17__throw_bad_allocv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZSt19__throw_logic_errorPKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal._ZSt20__throw_out_of_rangePKc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text.__cxa_deleted_virtual + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text.__cxa_guard_abort + 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text._ZSt20__throw_length_errorPKc + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text._ZSt17__throw_bad_allocv + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text._ZSt19__throw_logic_errorPKc + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .text._ZSt20__throw_out_of_rangePKc + 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .rodata._ZZSt20__throw_out_of_rangePKcE8__func__ + 0x00000000 0x15 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .rodata._ZZSt19__throw_logic_errorPKcE8__func__ + 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .rodata._ZZSt17__throw_bad_allocvE8__func__ + 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .rodata._ZZSt20__throw_length_errorPKcE8__func__ + 0x00000000 0x15 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .rodata._ZZ21__cxa_deleted_virtualE8__func__ + 0x00000000 0x16 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .bss.__dso_handle + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .xt.lit 0x00000000 0x58 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .xt.prop 0x00000000 0x21c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .literal.crc_update + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .literal.eboot_command_calculate_crc32 + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .literal.eboot_command_read + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .literal.eboot_command_write + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .literal.eboot_command_clear + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .text.eboot_command_clear + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .xt.prop 0x00000000 0x108 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .literal._ZL9loop_taskP11ETSEventTag + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.atexit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.initVariant + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal._Z24preloop_update_frequencyv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.esp_yield + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.esp_schedule + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal._ZL12loop_wrapperv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.__yield + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.optimistic_yield + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.__gdb_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal._Z9init_donev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.__gdb_do_break + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.user_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .text.atexit 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .data.core_release + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .ver_number 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .xt.prop 0x00000000 0x294 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .literal.atol 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.atoi 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.atof 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.reverse + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.itoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.ltoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.utoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.ultoa + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.dtostrf + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .text.atof 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .text.ltoa 0x00000000 0x8a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .xt.prop 0x00000000 0x30c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .literal.uart_write_char_d + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.__custom_crash_callback + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.__wrap_system_restart_local + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.abort + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.__assert_func + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.__panic_func + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .text.__assert_func + 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .xt.prop 0x00000000 0x1bc .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .literal.twi_delay + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_write_stop + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_write_bit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_read_bit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_write_byte + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_write_start + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_setClock + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_setClockStretchLimit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_stop + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_writeTo + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_readFrom + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.twi_status + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text.twi_setClock + 0x00000000 0x3f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text.twi_setClockStretchLimit + 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text.twi_stop + 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text.twi_status + 0x00000000 0x89 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .xt.lit 0x00000000 0x68 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .xt.prop 0x00000000 0x420 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .literal.delay_end + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .literal.micros_overflow_tick + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .literal.delay + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .literal.init 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .xt.prop 0x00000000 0x168 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .literal.pulseIn + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .literal.pulseInLong + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .text.pulseInLong + 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .xt.prop 0x00000000 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .literal.shiftIn + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .literal.shiftOut + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .xt.prop 0x00000000 0x90 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .literal.xPortGetFreeHeapSize + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .literal.system_show_malloc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .text.system_show_malloc + 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .literal.base64_init_encodestate + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .literal.base64_encode_value + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .literal.base64_encode_block + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .literal.base64_encode_blockend + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .literal.base64_encode_chars + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .rodata.CHARS_PER_LINE + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .xt.lit 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strnlen + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strchr + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strrchr + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strncat + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strcat + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strtok_r + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strtok + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strdup + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isalpha + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isalnum + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.iscntrl + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isdigit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.islower + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isprint + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isgraph + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.ispunct + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isspace + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strtod + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isupper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isxdigit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.tolower + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strcasecmp + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.toupper + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.isblank + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.__errno + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strlcpy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strtol + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal.strtoul + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.strnlen 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.isdigit 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.islower 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.isgraph 0x00000000 0x29 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.ispunct 0x00000000 0x37 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.strtod 0x00000000 0x147 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .text.isupper 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .xt.lit 0x00000000 0xa8 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .xt.prop 0x00000000 0xa80 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .literal._Z9strnlen_PPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z8strstr_PPKcS0_ + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z8memcpy_PPvPKvj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z8memcmp_PPKvS0_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z9memccpy_PPvPKvij + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z8memmem_PPKvjS0_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z9strncpy_PPcPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z9strncat_PPcPKcj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z9strncmp_PPKcS0_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z13strncasecmp_PPKcS0_j + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z8printf_PPKcz + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z11vsnprintf_PPcjPKc13__va_list_tag + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z9sprintf_PPcPKcz + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal._Z10snprintf_PPcjPKcz + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z8memcmp_PPKvS0_j + 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z9memccpy_PPvPKvij + 0x00000000 0x2c .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z8memmem_PPKvjS0_j + 0x00000000 0x8b .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z8printf_PPKcz + 0x00000000 0x87 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z9sprintf_PPcPKcz + 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .xt.prop 0x00000000 0x420 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .literal.uart_ignore_char + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart1_write_char + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart0_write_char + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_write_char + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_write + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_rx_available + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_read_char + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_tx_free + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_wait_tx_empty + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_flush + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_set_baudrate + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_get_baudrate + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_uninit + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_swap + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_set_tx + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_set_pins + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_tx_enabled + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_rx_enabled + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_set_debug + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.uart_get_debug + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text.uart_write + 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text.uart_tx_free + 0x00000000 0x36 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text.uart_uninit + 0x00000000 0x55 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text.uart_swap + 0x00000000 0x123 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .text.uart_set_pins + 0x00000000 0xa5 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .xt.lit 0x00000000 0x88 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .xt.prop 0x00000000 0x654 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .literal.umm_disconnect_from_free_list + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.umm_assimilate_up + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.umm_assimilate_down + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal._umm_free + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.umm_make_new_block$constprop$0 + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.umm_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .irom0.literal + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal._umm_malloc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.malloc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.calloc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.realloc + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .literal.free 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .xt.lit 0x00000000 0x68 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .xt.prop 0x00000000 0x3d8 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .literal._Z17schedule_functionSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .literal._Z23run_scheduled_functionsv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .text._Z17schedule_functionSt8functionIFvvEE + 0x00000000 0xbd .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss._ZL6sCount + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .xt.prop 0x00000000 0x9c .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .data 0x00000000 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .bss 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .irom0.text 0x00000000 0xbe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .rodata 0x00000000 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .irom.text 0x00000000 0x20d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .rodata.str1.4 + 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .xt.prop 0x00000000 0x948 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .data 0x00000000 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .bss 0x00000000 0xb8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .irom0.text 0x00000000 0x1ed4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .rodata 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .irom.text 0x00000000 0x50c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .rodata.str1.4 + 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .xt.lit 0x00000000 0x90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .xt.prop 0x00000000 0x14a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .data 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .bss 0x00000000 0xd4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .irom0.text 0x00000000 0x29e2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .irom.text 0x00000000 0x64f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .rodata.str1.4 + 0x00000000 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .xt.prop 0x00000000 0x1950 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .xt.lit 0x00000000 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .xt.prop 0x00000000 0x978 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .xt.lit 0x00000000 0x1b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .xt.prop 0x00000000 0x1b00 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .xt.prop 0x00000000 0x1d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .xt.prop 0x00000000 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .xt.lit 0x00000000 0x198 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .xt.prop 0x00000000 0x135c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .xt.prop 0x00000000 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .xt.prop 0x00000000 0x51c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .xt.lit 0x00000000 0x130 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .xt.prop 0x00000000 0x1548 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + .xt.lit 0x00000000 0x190 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + .xt.prop 0x00000000 0x1410 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + .xt.prop 0x00000000 0xe10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .xt.prop 0x00000000 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .xt.prop 0x00000000 0x630 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .irom0.text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .xt.lit 0x00000000 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + .xt.lit 0x00000000 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + .xt.prop 0x00000000 0x36fc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .NMIExceptionVector.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .xt.prop 0x00000000 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .UserExceptionVector.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .xt.prop 0x00000000 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .UserEnter.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + .xt.prop 0x00000000 0x294 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .xt.prop 0x00000000 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .xt.prop 0x00000000 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .xt.lit 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .xt.prop 0x00000000 0x924 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .xt.lit 0x00000000 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .xt.prop 0x00000000 0xf6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .xt.prop 0x00000000 0xe58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .xt.prop 0x00000000 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .xt.prop 0x00000000 0xc90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .xt.prop 0x00000000 0x3e4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .xt.prop 0x00000000 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .xt.prop 0x00000000 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .literal.sntp_try_next_server + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .literal.sntp_dns_found + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .literal.sntp_get_current_timestamp + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .literal.sntp_get_real_time + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .xt.prop 0x00000000 0x72c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .literal.tcp_accept_null + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .literal.tcp_new_port + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .literal.tcp_close_shutdown + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .xt.prop 0x00000000 0xd5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .xt.prop 0x00000000 0x798 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .literal.dns_timer + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .literal.igmp_timer + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .literal.dhcp_timer_fine + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .literal.dhcp_timer_coarse + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .xt.prop 0x00000000 0x330 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .xt.prop 0x00000000 0x4e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .xt.prop 0x00000000 0x5d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .xt.prop 0x00000000 0x90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .xt.prop 0x00000000 0x4e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .xt.prop 0x00000000 0x180 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .xt.prop 0x00000000 0x3fc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .xt.prop 0x00000000 0x330 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .data.memp_sizes_test + 0x00000000 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .xt.prop 0x00000000 0x258 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .xt.prop 0x00000000 0xbd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .xt.prop 0x00000000 0x4c8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .xt.prop 0x00000000 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .xt.prop 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .xt.lit 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .xt.prop 0x00000000 0xf84 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .xt.lit 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .xt.prop 0x00000000 0x690 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .xt.prop 0x00000000 0x8dc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .xt.prop 0x00000000 0x468 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .xt.prop 0x00000000 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .xt.prop 0x00000000 0x108 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .xt.prop 0x00000000 0x1bc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .xt.prop 0x00000000 0x120 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .xt.prop 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .xt.lit 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .xt.prop 0x00000000 0xcfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .xt.prop 0x00000000 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .xt.prop 0x00000000 0x2dc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + .xt.lit 0x00000000 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + .xt.prop 0x00000000 0x1200 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .xt.prop 0x00000000 0x33c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .xt.prop 0x00000000 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .xt.prop 0x00000000 0x114 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .text 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .bss 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .irom0.text 0x00000000 0x1d91 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .irom.text 0x00000000 0x13a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .rodata.str1.4 + 0x00000000 0x176 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .rodata 0x00000000 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .xt.lit 0x00000000 0x170 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .xt.prop 0x00000000 0x1428 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .irom0.text 0x00000000 0x9d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .rodata.str1.4 + 0x00000000 0xe1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .rodata 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .xt.lit 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .xt.prop 0x00000000 0x510 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .text 0x00000000 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .irom0.text 0x00000000 0x8e6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .irom.text 0x00000000 0xf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .xt.prop 0x00000000 0x678 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .text 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .irom0.text 0x00000000 0x1868 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .irom.text 0x00000000 0x37 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .xt.lit 0x00000000 0x130 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .xt.prop 0x00000000 0xfb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .text 0x00000000 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .irom0.text 0x00000000 0x3421 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .irom.text 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .rodata.str1.4 + 0x00000000 0x95 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .rodata 0x00000000 0xf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .xt.lit 0x00000000 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .xt.prop 0x00000000 0x23f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .irom0.text 0x00000000 0x1386 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .xt.lit 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .xt.prop 0x00000000 0x162c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .irom0.text 0x00000000 0x253 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .xt.prop 0x00000000 0x1ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .irom0.text 0x00000000 0x135 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .rodata.str1.4 + 0x00000000 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .text 0x00000000 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .irom0.text 0x00000000 0x958 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .irom.text 0x00000000 0x39 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .xt.lit 0x00000000 0xb8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .xt.prop 0x00000000 0x498 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .irom0.text 0x00000000 0x573 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .xt.prop 0x00000000 0x768 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .irom0.text 0x00000000 0x33d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .xt.prop 0x00000000 0x3c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .irom0.text 0x00000000 0x160 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .irom0.text 0x00000000 0x5a3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .irom.text 0x00000000 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .xt.prop 0x00000000 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .xt.prop 0x00000000 0xe4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .irom0.text 0x00000000 0x66 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .xt.prop 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .data 0x00000000 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .irom0.text 0x00000000 0x1b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .rodata 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .xt.prop 0x00000000 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .irom0.text 0x00000000 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .xt.prop 0x00000000 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .irom0.text 0x00000000 0x3cb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .rodata 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .xt.prop 0x00000000 0x21c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .xt.prop 0x00000000 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .irom0.text 0x00000000 0xfd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .xt.prop 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .irom0.text 0x00000000 0x1a04 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .irom.text 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .xt.prop 0x00000000 0x1590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .xt.prop 0x00000000 0x1e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .text 0x00000000 0x276 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .rodata 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .xt.lit 0x00000000 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .xt.prop 0x00000000 0xdc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .text 0x00000000 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .xt.lit 0x00000000 0x248 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .xt.prop 0x00000000 0x231c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .xt.lit 0x00000000 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .xt.prop 0x00000000 0x1014 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .xt.lit 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .xt.prop 0x00000000 0x8ac C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .xt.prop 0x00000000 0x9c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .xt.prop 0x00000000 0x84 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .xt.prop 0x00000000 0x9c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .xt.prop 0x00000000 0x78 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .xt.prop 0x00000000 0x2e8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .xt.prop 0x00000000 0x288 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .xt.prop 0x00000000 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .xt.prop 0x00000000 0x90 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .xt.prop 0x00000000 0x408 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .xt.prop 0x00000000 0x294 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .xt.prop 0x00000000 0x264 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .xt.prop 0x00000000 0x288 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .xt.prop 0x00000000 0x54 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .xt.prop 0x00000000 0x204 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .literal 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .text 0x00000000 0x3b5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .xt.prop 0x00000000 0x1e0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .xt.prop 0x00000000 0x150 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .xt.prop 0x00000000 0x15c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .xt.prop 0x00000000 0xe4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .xt.prop 0x00000000 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .xt.prop 0x00000000 0xd8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .rodata 0x00000000 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .rodata 0x00000000 0x78 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .xt.prop 0x00000000 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .xt.prop 0x00000000 0x1ec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .rodata 0x00000000 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .xt.prop 0x00000000 0x198 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .rodata 0x00000000 0x38 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .xt.prop 0x00000000 0xcc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .xt.prop 0x00000000 0x420 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .rodata 0x00000000 0x38 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .rodata 0x00000000 0x80 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .xt.prop 0x00000000 0xf0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .xt.prop 0x00000000 0x15c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .text 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + .xt.prop 0x00000000 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .xt.prop 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .rodata 0x00000000 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .xt.prop 0x00000000 0x108 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .text._ZNSt8__detail15_List_node_base4swapERS0_S1_ + 0x00000000 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .text._ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_ + 0x00000000 0x1a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .text._ZNSt8__detail15_List_node_base10_M_reverseEv + 0x00000000 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .xt.prop 0x00000000 0x114 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer10_s_discardEPvP13ClientContext + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN13ClientContext8_s_errorEPva + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServerC2E9IPAddresst + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServerC2Et + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer10setNoDelayEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer10getNoDelayEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer9hasClientEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer5closeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer7_acceptEP7tcp_pcba + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer9_s_acceptEPvP7tcp_pcba + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer8_discardEP13ClientContext + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServer9availableEPh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x99 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN13ClientContext8_s_errorEPva + 0x00000000 0x62 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServerC2E9IPAddresst + 0x00000000 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer10setNoDelayEb + 0x00000000 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer10getNoDelayEv + 0x00000000 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer9hasClientEv + 0x00000000 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer6statusEv + 0x00000000 0xa .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer4stopEv + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .text._ZN10WiFiServer8_discardEP13ClientContext + 0x00000000 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .rodata._ZTV9Printable + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .rodata._ZTV6Server + 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.lit._ZN13ClientContext8_s_errorEPva + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop 0x00000000 0x2d0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop._ZN13ClientContext8_s_errorEPva + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop._ZTV9Printable + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xt.prop._ZTV6Server + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN9TLSTraits6createEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN9TLSTraitsD5Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN9TLSTraitsD0Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZNKSt14default_deleteI10WiFiClientEclEPS0_$isra$5 + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZNKSt14default_deleteI15TransportTraitsEclEPS0_$isra$6 + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClientC2Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5clearEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient13beginInternalE6StringPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9connectedEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient3endEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient8setReuseEb + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient12setUserAgentERK6String + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient16setAuthorizationEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient16setAuthorizationEPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient10setTimeoutEt + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9useHTTP10Eb + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient7getSizeEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9getStreamEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient12getStreamPtrEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient13errorToStringEi + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9addHeaderERK6StringS2_bb + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient14collectHeadersEPPKcj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient6headerEPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient6headerEj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient10headerNameEj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient7headersEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9hasHeaderEPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient7connectEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient10sendHeaderEPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient20handleHeaderResponseEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient22writeToStreamDataBlockEP6Streami + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient11returnErrorEi + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient13writeToStreamEP6Stream + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient9getStringEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient11sendRequestEPKcPhj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient3GETEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient4POSTEPhj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient4POSTE6String + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient11sendRequestEPKc6String + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient11sendRequestEPKcP6Streamj + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClientD2Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5beginE6String + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5beginE6StringS0_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5beginE6StringtS0_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5beginE6StringtS0_S0_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN10HTTPClient5beginE6StringtS0_bS0_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN9TLSTraits6verifyER10WiFiClientPKc + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal.__tcf_0 + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN9TLSTraits6createEv + 0x00000000 0x33 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN9TLSTraitsD2Ev + 0x00000000 0x32 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN9TLSTraitsD0Ev + 0x00000000 0x29 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient8setReuseEb + 0x00000000 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient16setAuthorizationEPKcS1_ + 0x00000000 0xa4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient16setAuthorizationEPKc + 0x00000000 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient9getStreamEv + 0x00000000 0x76 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient6headerEj + 0x00000000 0x4b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient10headerNameEj + 0x00000000 0x47 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient7headersEv + 0x00000000 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient22writeToStreamDataBlockEP6Streami + 0x00000000 0x159 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient13writeToStreamEP6Stream + 0x00000000 0x185 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient9getStringEv + 0x00000000 0xa9 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient4POSTEPhj + 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient4POSTE6String + 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient11sendRequestEPKc6String + 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient11sendRequestEPKcP6Streamj + 0x00000000 0x213 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient5beginE6StringS0_ + 0x00000000 0xc1 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient5beginE6StringtS0_ + 0x00000000 0x80 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient5beginE6StringtS0_S0_ + 0x00000000 0xa1 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN10HTTPClient5beginE6StringtS0_bS0_ + 0x00000000 0xdd .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text._ZN9TLSTraits6verifyER10WiFiClientPKc + 0x00000000 0x41 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text.__tcf_0 0x00000000 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .bss._ZZN10HTTPClient9getStreamEvE5empty + 0x00000000 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .rodata._ZTV9TLSTraits + 0x00000000 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .bss._ZGVZN10HTTPClient9getStreamEvE5empty + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.lit._ZN9TLSTraits6createEv + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.lit._ZN9TLSTraitsD2Ev + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.lit._ZN9TLSTraitsD0Ev + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.lit 0x00000000 0x128 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.lit._ZN9TLSTraits6verifyER10WiFiClientPKc + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop._ZN9TLSTraits6createEv + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop._ZN9TLSTraitsD2Ev + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop._ZN9TLSTraitsD0Ev + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop 0x00000000 0x1260 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop._ZN9TLSTraits6verifyER10WiFiClientPKc + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xt.prop._ZTV9TLSTraits + 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN6base646encodeEPhj + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .literal._ZN6base646encodeE6String + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .xt.prop 0x00000000 0x78 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .literal._Z13__get_rf_modev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .literal._Z14__get_adc_modev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .literal.__wrap_register_chipv6_phy + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .literal._Z22__run_user_rf_pre_initv + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .literal.user_rf_pre_init + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .text._Z14__get_adc_modev + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .xt.prop 0x00000000 0xe4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .xt.prop 0x00000000 0x2f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .xt.lit 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .xt.prop 0x00000000 0x1668 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .xt.prop 0x00000000 0x48c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .text 0x00000000 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .irom0.text 0x00000000 0x350 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .irom.text 0x00000000 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .rodata.str1.4 + 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .xt.prop 0x00000000 0x390 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .xt.lit 0x00000000 0x110 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .xt.prop 0x00000000 0xdb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .xt.lit 0x00000000 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .xt.prop 0x00000000 0x7a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .xt.prop 0x00000000 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .xt.prop 0x00000000 0x378 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .xt.prop 0x00000000 0x33c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .xt.prop 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .xt.prop 0x00000000 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .xt.prop 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .irom0.literal + 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZL17clear_private_keyv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZL17clear_certificatev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZL14parseHexNibblecPh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZL9matchNameRK6StringS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN13ClientContext4readEPcj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN10SSLContext5unrefEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecureD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecureD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN10SSLContext8_readAllEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure4readEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure9peekBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN10SSLContext9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure9connectedEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecureC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecureC2ERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecureaSERKS_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure11_connectSSLEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure6verifyEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure14setCertificateEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure13setPrivateKeyEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure15loadCertificateER6Streamj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure14loadPrivateKeyER6Streamj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_read + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_write + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_get_file + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_malloc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_calloc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_realloc + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_port_free + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal.ax_wdt_feed + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure7connectE9IPAddresst + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure7connectEPKct + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .literal._ZN16WiFiClientSecure4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZL17clear_private_keyv + 0x00000000 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZL17clear_certificatev + 0x00000000 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZL14parseHexNibblecPh + 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZL9matchNameRK6StringS1_ + 0x00000000 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN13ClientContext4readEPcj + 0x00000000 0xdf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN10SSLContext5unrefEv + 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecureD2Ev + 0x00000000 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecureD0Ev + 0x00000000 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure5writeEPKhj + 0x00000000 0x3f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN10SSLContext8_readAllEv + 0x00000000 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure4readEPhj + 0x00000000 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure4readEv + 0x00000000 0x47 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure4peekEv + 0x00000000 0x33 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure9peekBytesEPhj + 0x00000000 0xbe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN10SSLContext9availableEv + 0x00000000 0x34 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure9availableEv + 0x00000000 0x1f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure9connectedEv + 0x00000000 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecureC2Ev + 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecureC2ERKS_ + 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecureaSERKS_ + 0x00000000 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure11_connectSSLEPKc + 0x00000000 0x113 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure6verifyEPKcS1_ + 0x00000000 0x1a2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure14setCertificateEPKhj + 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure13setPrivateKeyEPKhj + 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure15loadCertificateER6Streamj + 0x00000000 0x7c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure14loadPrivateKeyER6Streamj + 0x00000000 0x7c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_read + 0x00000000 0x85 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_write + 0x00000000 0xb0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_get_file + 0x00000000 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_malloc + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_calloc + 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_realloc + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_port_free + 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text.ax_wdt_feed + 0x00000000 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure7connectE9IPAddresst + 0x00000000 0x41 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure7connectEPKct + 0x00000000 0x7a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .text._ZN16WiFiClientSecure4stopEv + 0x00000000 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .rodata._ZTV16WiFiClientSecure + 0x00000000 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZN10SSLContext8s_io_ctxE + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZN10SSLContext15_ssl_ctx_refcntE + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZN10SSLContext8_ssl_ctxE + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZL27default_certificate_dynamic + 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss.default_certificate_len + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss.default_certificate + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZL11s_pk_refcnt + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss._ZL27default_private_key_dynamic + 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss.default_private_key_len + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .bss.default_private_key + 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.lit 0x00000000 0xf8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.lit._ZN13ClientContext4readEPcj + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.lit._ZN10SSLContext5unrefEv + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.lit._ZN10SSLContext8_readAllEv + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.lit._ZN10SSLContext9availableEv + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop 0x00000000 0xa44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZN13ClientContext4readEPcj + 0x00000000 0xa8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZN10SSLContext5unrefEv + 0x00000000 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZN10SSLContext8_readAllEv + 0x00000000 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZN10SSLContext9availableEv + 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xt.prop._ZTV16WiFiClientSecure + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .irom0.literal + 0x00000000 0x408 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .irom0.text 0x00000000 0x1ccd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .rodata.str1.4 + 0x00000000 0x512 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .rodata 0x00000000 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .xt.prop 0x00000000 0x1578 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .irom0.literal + 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .irom0.text 0x00000000 0x52a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .rodata 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .xt.prop 0x00000000 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .irom0.literal + 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .irom0.text 0x00000000 0x485 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .rodata.str1.4 + 0x00000000 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .rodata 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .xt.prop 0x00000000 0x2d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .irom0.literal + 0x00000000 0x21c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .irom0.text 0x00000000 0x8f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .rodata.str1.4 + 0x00000000 0x266 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .rodata 0x00000000 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .xt.prop 0x00000000 0x4b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .irom0.literal + 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .irom0.text 0x00000000 0x22e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .bss 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .rodata.str1.4 + 0x00000000 0x4a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .rodata 0x00000000 0x84 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + COMMON 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .irom0.literal + 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .irom0.text 0x00000000 0x8f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .rodata 0x00000000 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .xt.prop 0x00000000 0x3c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .irom0.literal + 0x00000000 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .irom0.text 0x00000000 0x1477 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .rodata.str1.4 + 0x00000000 0x15a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .xt.prop 0x00000000 0x900 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .irom0.literal + 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .irom0.text 0x00000000 0x1ee C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .xt.prop 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .irom0.literal + 0x00000000 0x11c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .irom0.text 0x00000000 0x8f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .rodata 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .xt.prop 0x00000000 0x108 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .irom0.text 0x00000000 0xad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .xt.prop 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .irom0.literal + 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .irom0.text 0x00000000 0x471 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .rodata.str1.4 + 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .irom0.literal + 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .irom0.text 0x00000000 0x35c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .xt.prop 0x00000000 0x1a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .irom0.literal + 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .irom0.text 0x00000000 0x2c60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .rodata 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .xt.prop 0x00000000 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .irom0.literal + 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .irom0.text 0x00000000 0xa7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .irom0.literal + 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .irom0.text 0x00000000 0x6a3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .rodata 0x00000000 0x300 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .irom0.literal + 0x00000000 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .irom0.text 0x00000000 0xad2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .rodata.str1.4 + 0x00000000 0x52 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .rodata 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .xt.prop 0x00000000 0x690 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .irom0.literal + 0x00000000 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .irom0.text 0x00000000 0x5c7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .rodata.str1.4 + 0x00000000 0x1b4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .rodata 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .literal.configTime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.clock_gettime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.mktime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.time 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.asctime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.localtime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.ctime + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .literal.gettimeofday + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.configTime + 0x00000000 0xa1 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.clock_gettime + 0x00000000 0x46 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.mktime 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.time 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.asctime 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.localtime + 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.ctime 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .text.gettimeofday + 0x00000000 0x89 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .bss.s_bootTime + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .bss.s_timezone_sec + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .bss.s_daylightOffset_sec + 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + .xt.prop 0x00000000 0x18c .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + +Memory Configuration + +Name Origin Length Attributes +dport0_0_seg 0x3ff00000 0x00000010 +dram0_0_seg 0x3ffe8000 0x00014000 +iram1_0_seg 0x40100000 0x00008000 +irom0_0_seg 0x40201010 0x000f9ff0 +*default* 0x00000000 0xffffffff + +Linker script and memory map + + 0x402fb000 PROVIDE (_SPIFFS_start, 0x402fb000) + 0x402fb000 PROVIDE (_SPIFFS_end, 0x402fb000) + 0x00000000 PROVIDE (_SPIFFS_page, 0x0) + 0x00000000 PROVIDE (_SPIFFS_block, 0x0) + 0x40000000 PROVIDE (_memmap_vecbase_reset, 0x40000000) + 0x00000110 _memmap_cacheattr_wb_base = 0x110 + 0x00000110 _memmap_cacheattr_wt_base = 0x110 + 0x00000220 _memmap_cacheattr_bp_base = 0x220 + 0xfffff00f _memmap_cacheattr_unused_mask = 0xfffff00f + 0x2222211f _memmap_cacheattr_wb_trapnull = 0x2222211f + 0x2222211f _memmap_cacheattr_wba_trapnull = 0x2222211f + 0x2222211f _memmap_cacheattr_wbna_trapnull = 0x2222211f + 0x2222211f _memmap_cacheattr_wt_trapnull = 0x2222211f + 0x2222222f _memmap_cacheattr_bp_trapnull = 0x2222222f + 0xfffff11f _memmap_cacheattr_wb_strict = 0xfffff11f + 0xfffff11f _memmap_cacheattr_wt_strict = 0xfffff11f + 0xfffff22f _memmap_cacheattr_bp_strict = 0xfffff22f + 0x22222112 _memmap_cacheattr_wb_allvalid = 0x22222112 + 0x22222112 _memmap_cacheattr_wt_allvalid = 0x22222112 + 0x22222222 _memmap_cacheattr_bp_allvalid = 0x22222222 + 0x2222211f PROVIDE (_memmap_cacheattr_reset, _memmap_cacheattr_wb_trapnull) + +.dport0.rodata 0x3ff00000 0x0 + 0x3ff00000 _dport0_rodata_start = ABSOLUTE (.) + *(.dport0.rodata) + *(.dport.rodata) + 0x3ff00000 _dport0_rodata_end = ABSOLUTE (.) + +.dport0.literal + 0x3ff00000 0x0 + 0x3ff00000 _dport0_literal_start = ABSOLUTE (.) + *(.dport0.literal) + *(.dport.literal) + 0x3ff00000 _dport0_literal_end = ABSOLUTE (.) + +.dport0.data 0x3ff00000 0x0 + 0x3ff00000 _dport0_data_start = ABSOLUTE (.) + *(.dport0.data) + *(.dport.data) + 0x3ff00000 _dport0_data_end = ABSOLUTE (.) + +.data 0x3ffe8000 0x640 + 0x3ffe8000 _data_start = ABSOLUTE (.) + *(.data) + .data 0x3ffe8000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + *fill* 0x3ffe8001 0x3 + .data 0x3ffe8004 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x3ffe8004 soft_wdt_interval + 0x3ffe8008 NoiseTimerInterval + 0x3ffe8010 sleep_start_wait_time + 0x3ffe8018 CanDoFreqCal + 0x3ffe801c tcb + .data 0x3ffe8020 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .data 0x3ffe8060 0x24c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .data 0x3ffe82ac 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .data 0x3ffe82b4 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + *fill* 0x3ffe82b5 0x3 + .data 0x3ffe82b8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + *fill* 0x3ffe82b9 0x3 + .data 0x3ffe82bc 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x3ffe82bd timer2_ms_flag + 0x3ffe82be dhcps_flag + 0x3ffe82bf dhcpc_flag + 0x3ffe82c1 reconnect_internal + .data 0x3ffe82c2 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + *fill* 0x3ffe82c6 0x2 + .data 0x3ffe82c8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x3ffe82c8 default_hostname + *fill* 0x3ffe82c9 0x3 + .data 0x3ffe82cc 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x3ffe82cc TmpSTAAPCloseAP + *fill* 0x3ffe82cd 0x3 + .data 0x3ffe82d0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + *fill* 0x3ffe82d1 0x7 + .data 0x3ffe82d8 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + *fill* 0x3ffe82f4 0xc + .data 0x3ffe8300 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + 0x3ffe8302 tx_rf_ana_gain + 0x3ffe8330 rx_gain_swp + 0x3ffe8350 test_rffreq_txcap + *fill* 0x3ffe8353 0x1 + .data 0x3ffe8354 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0x3ffe8354 rfcal_bb_atten_init + *fill* 0x3ffe8355 0x3 + .data 0x3ffe8358 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0x3ffe8358 chip_version + .data 0x3ffe835c 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + 0x3ffe835c __fdlib_version + *(.data.*) + .data.esp8266_gpioToFn + 0x3ffe8360 0x10 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x3ffe8360 esp8266_gpioToFn + .data.pwm_range + 0x3ffe8370 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffe8370 pwm_range + .data.pwm_freq + 0x3ffe8374 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffe8374 pwm_freq + .data.hx_type 0x3ffe8378 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8378 hx_type + *fill* 0x3ffe8379 0x3 + .data.hx_scale + 0x3ffe837c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe837c hx_scale + .data.lm75ad_addresses + 0x3ffe8380 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8380 lm75ad_addresses + .data.novasds_querydata + 0x3ffe8388 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8388 novasds_querydata + *fill* 0x3ffe839b 0x1 + .data.novasds_setquerymode + 0x3ffe839c 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe839c novasds_setquerymode + *fill* 0x3ffe83af 0x1 + .data.novasds_workperiod + 0x3ffe83b0 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b0 novasds_workperiod + .data.novasds_type + 0x3ffe83c3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c3 novasds_type + .data.pms_type + 0x3ffe83c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c4 pms_type + .data.senseair_type + 0x3ffe83c5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c5 senseair_type + .data.mhz_retry + 0x3ffe83c6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c6 mhz_retry + .data.mhz_abc_enable + 0x3ffe83c7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c7 mhz_abc_enable + .data.mhz_filter + 0x3ffe83c8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c8 mhz_filter + .data.mhz_type + 0x3ffe83c9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83c9 mhz_type + *fill* 0x3ffe83ca 0x2 + .data.sht3x_addresses + 0x3ffe83cc 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83cc sht3x_addresses + *fill* 0x3ffe83cf 0x1 + .data.bh1750_types + 0x3ffe83d0 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83d0 bh1750_types + *fill* 0x3ffe83d7 0x1 + .data.bh1750_addresses + 0x3ffe83d8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83d8 bh1750_addresses + *fill* 0x3ffe83da 0x2 + .data.bmp_addresses + 0x3ffe83dc 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83dc bmp_addresses + .data.htu_delay_humidity + 0x3ffe83de 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83de htu_delay_humidity + *fill* 0x3ffe83df 0x1 + .data.sht_types + 0x3ffe83e0 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83e0 sht_types + *fill* 0x3ffe83e6 0x2 + .data.ds18x20_chipids + 0x3ffe83e8 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83e8 ds18x20_chipids + .data.ws_show_next + 0x3ffe83ed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83ed ws_show_next + *fill* 0x3ffe83ee 0x2 + .data.kRepeat 0x3ffe83f0 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83f0 kRepeat + *fill* 0x3ffe83f5 0x3 + .data.kWidth 0x3ffe83f8 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83f8 kWidth + *fill* 0x3ffe83fd 0x3 + .data.kSchemes + 0x3ffe8400 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8400 kSchemes + .data.kFire 0x3ffe8438 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8438 kFire + *fill* 0x3ffe8441 0x3 + .data.kRainbow + 0x3ffe8444 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8444 kRainbow + *fill* 0x3ffe8459 0x3 + .data.kwanzaa 0x3ffe845c 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe845c kwanzaa + *fill* 0x3ffe8465 0x3 + .data.kHanukkah + 0x3ffe8468 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8468 kHanukkah + *fill* 0x3ffe846e 0x2 + .data.kChristmas + 0x3ffe8470 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8470 kChristmas + *fill* 0x3ffe8476 0x2 + .data.kRgb 0x3ffe8478 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8478 kRgb + *fill* 0x3ffe8481 0x3 + .data.kIncandescent + 0x3ffe8484 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8484 kIncandescent + *fill* 0x3ffe848a 0x2 + .data.port_multicast + 0x3ffe848c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe848c port_multicast + .data.mcp_system_configuration + 0x3ffe8490 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8490 mcp_system_configuration + .data.cse_power_invalid + 0x3ffe8494 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8494 cse_power_invalid + *fill* 0x3ffe8495 0x3 + .data.cf_pulses_last_time + 0x3ffe8498 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8498 cf_pulses_last_time + .data.hlw_ui_flag + 0x3ffe849c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe849c hlw_ui_flag + .data.tuya_wifi_state + 0x3ffe849d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe849d tuya_wifi_state + .data.rules_last_minute + 0x3ffe849e 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe849e rules_last_minute + .data.rules_old_dimm + 0x3ffe84a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84a0 rules_old_dimm + .data.rules_old_power + 0x3ffe84a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84a4 rules_old_power + .data.rules_new_power + 0x3ffe84a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84a8 rules_new_power + .data.timer_last_minute + 0x3ffe84ac 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84ac timer_last_minute + .data.serial_bridge_active + 0x3ffe84ae 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84ae serial_bridge_active + .data.domoticz_update_flag + 0x3ffe84af 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84af domoticz_update_flag + .data.domoticz_out_topic + 0x3ffe84b0 0xd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84b0 domoticz_out_topic + *fill* 0x3ffe84bd 0x3 + .data.domoticz_in_topic + 0x3ffe84c0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84c0 domoticz_in_topic + .data.sonoff_bridge_learn_key + 0x3ffe84cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84cc sonoff_bridge_learn_key + .data.light_fixed_color_index + 0x3ffe84cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84cd light_fixed_color_index + .data.light_update + 0x3ffe84ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84ce light_update + *fill* 0x3ffe84cf 0x1 + .data.ledTable + 0x3ffe84d0 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84d0 ledTable + .data.energy_power_steady_cntr + 0x3ffe85d0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85d0 energy_power_steady_cntr + .data.energy_power_on + 0x3ffe85d1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85d1 energy_power_on + *fill* 0x3ffe85d2 0x2 + .data.energy_frequency + 0x3ffe85d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85d4 energy_frequency + .data.energy_power_factor + 0x3ffe85d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85d8 energy_power_factor + .data.energy_reactive_power + 0x3ffe85dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85dc energy_reactive_power + .data.energy_apparent_power + 0x3ffe85e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85e0 energy_apparent_power + .data.mqtt_initial_connection_state + 0x3ffe85e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85e4 mqtt_initial_connection_state + .data.mqtt_retry_counter + 0x3ffe85e5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85e5 mqtt_retry_counter + .data.config_xor_on_set + 0x3ffe85e6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85e6 config_xor_on_set + *fill* 0x3ffe85e7 0x1 + .data.minimum_signal_quality + 0x3ffe85e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85e8 minimum_signal_quality + .data.remove_duplicate_access_points + 0x3ffe85ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85ec remove_duplicate_access_points + *fill* 0x3ffe85ed 0x3 + .data.midnight + 0x3ffe85f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85f0 midnight + .data.latest_uptime_flag + 0x3ffe85f4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85f4 latest_uptime_flag + .data.web_log_index + 0x3ffe85f5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85f5 web_log_index + .data.ota_retry_counter + 0x3ffe85f6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85f6 ota_retry_counter + *fill* 0x3ffe85f7 0x1 + .data.lastbutton + 0x3ffe85f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85f8 lastbutton + .data.blinkspeed + 0x3ffe85fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe85fc blinkspeed + *fill* 0x3ffe85fd 0x3 + .data.blinks 0x3ffe8600 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8600 blinks + .data.tele_period + 0x3ffe8604 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8604 tele_period + .data.baudrate + 0x3ffe8608 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8608 baudrate + .data.serial_config + 0x3ffe860c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe860c serial_config + .data._ZL15default_scl_pin + 0x3ffe8610 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data._ZL15default_sda_pin + 0x3ffe8614 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data._ZN23ESP8266WiFiGenericClass11_persistentE + 0x3ffe8618 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe8618 ESP8266WiFiGenericClass::_persistent + *fill* 0x3ffe8619 0x3 + .data.AUTHORIZATION_HEADER + 0x3ffe861c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe861c AUTHORIZATION_HEADER + .data._ZN8RCSwitch17nReceiveToleranceE + 0x3ffe8620 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3ffe8620 RCSwitch::nReceiveTolerance + .data.twi_dcount + 0x3ffe8624 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x3ffe8624 twi_dcount + *fill* 0x3ffe8625 0x3 + .data.dhcps_lease_time + 0x3ffe8628 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3ffe8628 dhcps_lease_time + .data.offer 0x3ffe862c 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x3ffe862d 0x3 + .data.xid$2648 + 0x3ffe8630 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .data.time_zone + 0x3ffe8634 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffe8634 time_zone + *fill* 0x3ffe8635 0x3 + .data.iss$2741 + 0x3ffe8638 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .data.port$2594 + 0x3ffe863c 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + *(.gnu.linkonce.d.*) + *(.data1) + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.jcr) + 0x3ffe8640 . = ALIGN (0x4) + *fill* 0x3ffe863e 0x2 + 0x3ffe8640 _Pri_3_HandlerAddress = ABSOLUTE (.) + 0x3ffe8640 _data_end = ABSOLUTE (.) + +.rodata 0x3ffe8640 0x2100 + 0x3ffe8640 _rodata_start = ABSOLUTE (.) + *(.sdk.version) + .sdk.version 0x3ffe8640 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x3ffe8640 SDK_VERSION + *(.rodata) + .rodata 0x3ffe8650 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata 0x3ffe8694 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + *fill* 0x3ffe86a6 0x2 + .rodata 0x3ffe86a8 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + *fill* 0x3ffe86af 0x1 + .rodata 0x3ffe86b0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .rodata 0x3ffe86b4 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .rodata 0x3ffe86f8 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .rodata 0x3ffe870c 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .rodata 0x3ffe872c 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .rodata 0x3ffe8734 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + *fill* 0x3ffe873d 0x3 + .rodata 0x3ffe8740 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .rodata 0x3ffe8748 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .rodata 0x3ffe87f0 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + *fill* 0x3ffe87f9 0x3 + .rodata 0x3ffe87fc 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + *fill* 0x3ffe8805 0x3 + .rodata 0x3ffe8808 0x1d8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .rodata 0x3ffe89e0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + *(.rodata.*) + .rodata.str1.4 + 0x3ffe8a50 0x859 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8a9 (size before relaxing) + *fill* 0x3ffe92a9 0x3 + .rodata._Z8UnescapePcPt + 0x3ffe92ac 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z13LightHsbToRgbv + 0x3ffe9318 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z12RulesCommandv + 0x3ffe932c 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x3ffe9358 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x3ffe9370 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x3ffe9388 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x3ffe93a0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x3ffe93b8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata.setup 0x3ffe93d0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xsns15h + 0x3ffe93e8 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z9HxCommandv + 0x3ffe9418 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xsns34h + 0x3ffe9430 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xsns03h + 0x3ffe9460 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z13SwitchHandlerh + 0x3ffe948c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z15AriluxRfHandlerv + 0x3ffe94ac 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z13IrSendCommandv + 0x3ffe94d0 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z16DomoticzMqttDatav + 0x3ffe9504 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xdrv07h + 0x3ffe951c 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z14RulesEvery50msv + 0x3ffe9568 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xdrv10h + 0x3ffe9580 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z12LightAnimatev + 0x3ffe95d0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z13Senseair250msv + 0x3ffe95e4 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z16HandleUploadDonev + 0x3ffe9600 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata.CSWTCH$4740 + 0x3ffe9634 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZZ15OneWireWriteBithE10delay_high + 0x3ffe9638 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe963a 0x2 + .rodata._ZZ15OneWireWriteBithE9delay_low + 0x3ffe963c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe963e 0x2 + .rodata._ZL15start_addresses + 0x3ffe9640 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe9647 0x1 + .rodata._ZL14pzem_responses + 0x3ffe9648 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe964d 0x3 + .rodata._ZL13pzem_commands + 0x3ffe9650 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe9655 0x3 + .rodata._ZL18kMonthNamesEnglish + 0x3ffe9658 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe967d 0x3 + .rodata._ZL12kDaysInMonth + 0x3ffe9680 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZL12kIFan02Speed + 0x3ffe968c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZL11kMonthNames + 0x3ffe9698 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe96bd 0x3 + .rodata._ZTVN11ArduinoJson10JsonBufferE + 0x3ffe96c0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe96c0 vtable for ArduinoJson::JsonBuffer + *fill* 0x3ffe96cc 0x4 + .rodata._ZTV12PubSubClient + 0x3ffe96d0 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe96d0 vtable for PubSubClient + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE + 0x3ffe96e0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe96e0 vtable for ArduinoJson::StaticJsonBuffer<128u> + *fill* 0x3ffe96ec 0x4 + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x3ffe96f0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe96f0 vtable for ArduinoJson::StaticJsonBuffer<400u> + *fill* 0x3ffe96fc 0x4 + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE + 0x3ffe9700 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9700 vtable for ArduinoJson::StaticJsonBuffer<256u> + *fill* 0x3ffe970c 0x4 + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE + 0x3ffe9710 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9710 vtable for ArduinoJson::StaticJsonBuffer<1024u> + *fill* 0x3ffe971c 0x4 + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE + 0x3ffe9720 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9720 vtable for ArduinoJson::StaticJsonBuffer<150u> + *fill* 0x3ffe972c 0x4 + .rodata._ZTV7TwoWire + 0x3ffe9730 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3ffe9730 vtable for TwoWire + .rodata.str1.4 + 0x3ffe9758 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x3ffe976f 0x1 + .rodata.str1.4 + 0x3ffe9770 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + *fill* 0x3ffe978e 0x2 + .rodata._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE + 0x3ffe9790 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe9790 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> + *fill* 0x3ffe97ac 0x4 + .rodata._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE + 0x3ffe97b0 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe97b0 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> + .rodata.str1.4 + 0x00000000 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .rodata.CSWTCH$69 + 0x3ffe97cc 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .rodata.str1.4 + 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + *fill* 0x3ffe97d2 0x2 + .rodata.CSWTCH$36 + 0x3ffe97d4 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + *fill* 0x3ffe97d9 0x7 + .rodata._ZTV10WiFiClient + 0x3ffe97e0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3ffe97e0 vtable for WiFiClient + *fill* 0x3ffe982c 0x4 + .rodata._ZTV7WiFiUDP + 0x3ffe9830 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3ffe9830 vtable for WiFiUDP + .rodata.str1.4 + 0x3ffe9884 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x88 (size before relaxing) + .rodata.str1.4 + 0x3ffe9900 0x322 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x33e (size before relaxing) + *fill* 0x3ffe9c22 0x6 + .rodata._ZTV14RequestHandler + 0x3ffe9c28 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9c28 vtable for RequestHandler + .rodata._ZTV22FunctionRequestHandler + 0x3ffe9c48 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9c48 vtable for FunctionRequestHandler + .rodata.str1.4 + 0x3ffe9c68 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xaf (size before relaxing) + *fill* 0x3ffe9cdb 0x1 + .rodata.str1.4 + 0x3ffe9cdc 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x12 (size before relaxing) + *fill* 0x3ffe9ce1 0x3 + .rodata._ZL5proto + 0x3ffe9ce4 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + *fill* 0x3ffe9d2a 0x2 + .rodata.str1.4 + 0x3ffe9d2c 0x6 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0xa (size before relaxing) + *fill* 0x3ffe9d32 0x2 + .rodata._ZN17ESP8266HTTPUpdate18getLastErrorStringEv + 0x3ffe9d34 0x20 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + *fill* 0x3ffe9d54 0x4 + .rodata._ZTV13TasmotaSerial + 0x3ffe9d58 0x30 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3ffe9d58 vtable for TasmotaSerial + .rodata._ZL7ISRList + 0x3ffe9d88 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .rodata._ZTV13TasmotaModbus + 0x3ffe9dc8 0x30 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x3ffe9dc8 vtable for TasmotaModbus + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .rodata.str1.4 + 0x3ffe9df8 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0xc1 (size before relaxing) + .rodata.CSWTCH$82 + 0x3ffe9eb8 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .rodata._ZTV14HardwareSerial + 0x3ffe9ed8 0x30 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3ffe9ed8 vtable for HardwareSerial + .rodata.str1.4 + 0x3ffe9f08 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + *fill* 0x3ffe9f14 0x4 + .rodata._ZTV9IPAddress + 0x3ffe9f18 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x3ffe9f18 vtable for IPAddress + .rodata.str1.4 + 0x3ffe9f24 0x5 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + *fill* 0x3ffe9f29 0x3 + .rodata.str1.4 + 0x3ffe9f2c 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x12 (size before relaxing) + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .rodata._ZTV6Stream + 0x3ffe9f38 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x3ffe9f38 vtable for Stream + .rodata._ZTV12StreamString + 0x3ffe9f60 0x28 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x3ffe9f60 vtable for StreamString + .rodata.str1.4 + 0x3ffe9f88 0x114 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x118 (size before relaxing) + .rodata.str1.4 + 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .rodata.str1.4 + 0x3ffea09c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffea0fe 0x2 + .rodata._ZZSt25__throw_bad_function_callvE8__func__ + 0x3ffea100 0x1a .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffea11a 0x2 + .rodata._ZZ18__cxa_pure_virtualE8__func__ + 0x3ffea11c 0x13 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffea12f 0x1 + .rodata.str1.4 + 0x3ffea130 0x7e .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3ffea1ae 0x2 + .rodata._ZZL9loop_taskP11ETSEventTagE8__func__ + 0x3ffea1b0 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3ffea1ba 0x2 + .rodata._ZZ7__yieldE8__func__ + 0x3ffea1bc 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .rodata.str1.4 + 0x3ffea1c4 0x11 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x1c (size before relaxing) + *fill* 0x3ffea1d5 0x3 + .rodata.str1.4 + 0x3ffea1d8 0x109 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + *fill* 0x3ffea2e1 0x3 + .rodata.str1.4 + 0x3ffea2e4 0x41 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .rodata.str1.4 + 0x00000000 0x3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + *fill* 0x3ffea325 0x3 + .rodata.str1.4 + 0x3ffea328 0x123 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x3ffea44b 0x1 + .rodata.str1.4 + 0x3ffea44c 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .rodata.str1.4 + 0x3ffea458 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x10 (size before relaxing) + .rodata.str1.4 + 0x3ffea460 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0xc (size before relaxing) + .rodata.str1.4 + 0x3ffea464 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0xc (size before relaxing) + .rodata.str1.4 + 0x3ffea468 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0xc (size before relaxing) + .rodata.str1.4 + 0x3ffea46c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0xc (size before relaxing) + .rodata.str1.1 + 0x3ffea470 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x26 (size before relaxing) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .rodata.str1.1 + 0x3ffea495 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x62 (size before relaxing) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .rodata.str1.1 + 0x3ffea4f6 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0xf (size before relaxing) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .rodata.str1.1 + 0x3ffea504 0x3f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .rodata.mon_name$2393 + 0x3ffea543 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .rodata.day_name$2392 + 0x3ffea573 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + *fill* 0x3ffea58f 0x1 + .rodata.year_lengths + 0x3ffea590 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .rodata.mon_lengths + 0x3ffea598 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .rodata.tcp_close_shutdown + 0x3ffea5f8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .rodata.ethzero + 0x3ffea618 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x3ffea618 ethzero + .rodata.ethbroadcast + 0x3ffea61e 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x3ffea61e ethbroadcast + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .rodata.str1.1 + 0x3ffea624 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .rodata.str1.1 + 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *fill* 0x3ffea635 0x3 + .rodata.str1.4 + 0x3ffea638 0x3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x8 (size before relaxing) + *fill* 0x3ffea63b 0x1 + .rodata.str1.4 + 0x3ffea63c 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .rodata.str1.4 + 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .rodata.str1.4 + 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .rodata.str1.4 + 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + *fill* 0x3ffea643 0x5 + .rodata._ZTV10WiFiServer + 0x3ffea648 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x3ffea648 vtable for WiFiServer + .rodata.str1.4 + 0x3ffea664 0x4a .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x9a (size before relaxing) + *fill* 0x3ffea6ae 0x2 + .rodata._ZN10HTTPClient13errorToStringEi + 0x3ffea6b0 0x2c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x3ffea6dc 0x4 + .rodata._ZTV15TransportTraits + 0x3ffea6e0 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x3ffea6e0 vtable for TransportTraits + .rodata.str1.4 + 0x3ffea6f8 0x8 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0x7 (size before relaxing) + .rodata.str1.4 + 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + *(.gnu.linkonce.r.*) + *(.rodata1) + 0x3ffea700 __XT_EXCEPTION_TABLE__ = ABSOLUTE (.) + *(.xt_except_table) + *(.gcc_except_table) + *(.gnu.linkonce.e.*) + *(.gnu.version_r) + *(.eh_frame) + 0x3ffea700 . = ((. + 0x3) & 0xfffffffc) + 0x3ffea700 __init_array_start = ABSOLUTE (.) + *crtbegin.o(.ctors) + *(EXCLUDE_FILE(*crtend.o) .ctors) + .ctors 0x3ffea700 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .ctors 0x3ffea704 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .ctors 0x3ffea708 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .ctors 0x3ffea70c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .ctors 0x3ffea710 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .ctors 0x3ffea714 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .ctors 0x3ffea718 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .ctors 0x3ffea71c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .ctors 0x3ffea720 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + *(SORT(.ctors.*)) + *(.ctors) + 0x3ffea724 __init_array_end = ABSOLUTE (.) + *crtbegin.o(.dtors) + *(EXCLUDE_FILE(*crtend.o) .dtors) + .dtors 0x3ffea724 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .dtors 0x3ffea728 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .dtors 0x3ffea72c 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .dtors 0x3ffea730 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .dtors 0x3ffea734 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + *(SORT(.dtors.*)) + *(.dtors) + 0x3ffea738 __XT_EXCEPTION_DESCS__ = ABSOLUTE (.) + *(.xt_except_desc) + *(.gnu.linkonce.h.*) + 0x3ffea738 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE (.) + *(.xt_except_desc_end) + *(.dynamic) + *(.gnu.version_d) + 0x3ffea738 . = ALIGN (0x4) + 0x3ffea738 _bss_table_start = ABSOLUTE (.) + 0x3ffea738 0x4 LONG 0x3ffea740 _bss_start + 0x3ffea73c 0x4 LONG 0x3fff5648 _bss_end + 0x3ffea740 _bss_table_end = ABSOLUTE (.) + 0x3ffea740 _rodata_end = ABSOLUTE (.) + +.bss 0x3ffea740 0xaf08 + 0x3ffea740 . = ALIGN (0x8) + 0x3ffea740 _bss_start = ABSOLUTE (.) + *(.dynsbss) + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + *(.dynbss) + *(.bss) + .bss 0x3ffea740 0x34 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + *fill* 0x3ffea774 0xc + .bss 0x3ffea780 0x322 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x3ffea798 pend_flag_noise_check + 0x3ffea7a0 pend_flag_periodic_cal + 0x3ffea7b8 idle_timer_reopen_flag + 0x3ffea7ba dbg_stop_sw_wdt + 0x3ffea7bb dbg_stop_hw_wdt + 0x3ffea7bd total_buffed_eb_num + 0x3ffea7c0 HighestFreqOffsetInOneChk + 0x3ffea7c2 LowestFreqOffsetInOneChk + 0x3ffea7c4 DefFreqCalTimer + 0x3ffea7d8 PktNumInOneChk + 0x3ffea960 buffed_eb_arr + *fill* 0x3ffeaaa2 0xe + .bss 0x3ffeaab0 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .bss 0x3ffeabb0 0x46c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + *fill* 0x3ffeb01c 0x4 + .bss 0x3ffeb020 0x2f88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x3ffeb020 wDevCtrl + 0x3ffeb1c8 WdevTimOffSet + *fill* 0x3ffedfa8 0x8 + .bss 0x3ffedfb0 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + *fill* 0x3ffeea54 0xc + .bss 0x3ffeea60 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x3ffeea60 interface_mask + 0x3ffeea80 if_ctrl + .bss 0x3ffeeaa0 0x150 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x3ffeeaa4 lmacConfMib + 0x3ffeeac8 our_tx_eb + .bss 0x3ffeebf0 0x11a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x3ffeebf0 pmc + 0x3ffeecd0 flash_tmp + *fill* 0x3ffeed0a 0x2 + .bss 0x3ffeed0c 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x3ffeed10 info + 0x3ffeed34 lwip_timer_interval + 0x3ffeed38 check_timeouts_timer + 0x3ffeed4c user_init_flag + *fill* 0x3ffeed4d 0x3 + .bss 0x3ffeed50 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x3ffeed50 dbg_timer_flag + 0x3ffeed54 timer_list + 0x3ffeed58 debug_timer + 0x3ffeed5c debug_timerfn + .bss 0x3ffeed80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + 0x3ffeed80 flash_read + *fill* 0x3ffeed84 0xc + .bss 0x3ffeed90 0x242 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x3ffeee87 deep_sleep_flag + 0x3ffeee88 cpu_overclock + 0x3ffeee8c event_cb + 0x3ffeee90 status_led_output_level + 0x3ffeee94 done_cb + 0x3ffeee98 rst_if + 0x3ffeeeb4 default_interface + 0x3ffeeeb5 OpmodChgIsOnGoing + 0x3ffeeeb8 promiscuous_cb + 0x3ffeeed0 event_TaskQueue + *fill* 0x3ffeefd2 0xe + .bss 0x3ffeefe0 0x1c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .bss 0x3ffef1a0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x3ffef1a0 hostname + .bss 0x3ffef1ac 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x3ffef1ac g_ic + .bss 0x3ffef828 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x3ffef828 BcnEb_update + 0x3ffef835 BcnWithMcastSendStart + 0x3ffef836 BcnWithMcastSendCnt + 0x3ffef850 PendFreeBcnEb + 0x3ffef854 ApFreqCalTimer + 0x3ffef868 APRecvBcnStartTick + *fill* 0x3ffef87e 0x2 + .bss 0x3ffef880 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + 0x3ffef880 gScanStruct + 0x3ffef92c connect_scan_flag + 0x3ffef92d FreqCalCntForScan + 0x3ffef92e TestStaFreqCalValInput + 0x3ffef930 auth_type + 0x3ffef932 scannum + .bss 0x3ffef948 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .bss 0x3ffef958 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + *fill* 0x3ffef994 0x4 + .bss 0x3ffef998 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + 0x3ffefcf8 sta_con_timer + 0x3ffefd0c g_cnx_probe_rc_list_cb + 0x3ffefd10 reconnect_flag + 0x3ffefd11 no_ap_found_index + *fill* 0x3ffefd12 0x2 + .bss 0x3ffefd14 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .bss 0x3ffefd24 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .bss 0x3ffefd28 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + 0x3ffefd28 tout_dis_txpwr_track + 0x3ffefd29 sleep_mode_flag + *fill* 0x3ffefd2a 0x6 + .bss 0x3ffefd30 0x15b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + 0x3ffefd30 g_phyFuns + 0x3ffefd34 rxiq_compute_num + 0x3ffefd38 rx_table_renew_en + 0x3ffefd3c check_result + 0x3ffefd40 chip6_sleep_params + 0x3ffefdd4 chip6_phy_init_ctrl + 0x3ffefe48 phy_freq_offset + 0x3ffefe4a do_pwctrl_flag + 0x3ffefe4b txbk_dpdby_flag + 0x3ffefe4d sw_scan_mode + 0x3ffefe4e rxmax_ext_level + 0x3ffefe50 phy_rx_gain_dc_table + 0x3ffefe64 periodic_cal_dc_num + 0x3ffefe68 periodic_cal_flag + 0x3ffefe69 bbpll_cal_flag + 0x3ffefe6a phy_in_most_power + 0x3ffefe6b init_rf_no_cal + 0x3ffefe6c test_print_time + 0x3ffefe70 phy_rx_gain_dc_flag + 0x3ffefe71 phy_in_vdd33_offset + 0x3ffefe72 phy_set_most_tpw_disbg + 0x3ffefe73 phy_set_most_tpw_index + 0x3ffefe74 adc_rand_noise + 0x3ffefe78 dpd_bypass_original + 0x3ffefe7a phy_txpwr_diff_flash + 0x3ffefe80 noise_array + *fill* 0x3ffefe8b 0x1 + .bss 0x3ffefe8c 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0x3ffefe8c phy_tx_power_out + 0x3ffefe8e phy_tx_pwr_error + 0x3ffefe90 tx_pwctrl_track_num + 0x3ffefe91 rxiq_cover_fail_num + 0x3ffefe92 phy_meas_freq_offset + 0x3ffefe94 tx_pwctrl_pk_num + *fill* 0x3ffefe95 0x3 + .bss 0x3ffefe98 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0x3ffefe98 periodic_cal_sat + 0x3ffefe9a lslp_mem_opt_8266 + 0x3ffefe9c software_slp_reject + 0x3ffefe9d SDIO_slp_reject + 0x3ffefe9e hardware_reject + *fill* 0x3ffefe9f 0x1 + .bss 0x3ffefea0 0x26a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + *fill* 0x3fff010a 0x6 + .bss 0x3fff0110 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + *(.bss.*) + .bss.timer0_user_cb + 0x3fff0118 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .bss.timer1_user_cb + 0x3fff011c 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .bss.interrupt_reg + 0x3fff0120 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .bss.interrupt_handlers + 0x3fff0124 0xc0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .bss.current_step$3695 + 0x3fff01e4 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + *fill* 0x3fff01e5 0x3 + .bss.pwm_multiplier + 0x3fff01e8 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3fff01e8 pwm_multiplier + .bss.pwm_steps_changed + 0x3fff01ec 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3fff01ec pwm_steps_changed + *fill* 0x3fff01ed 0x3 + .bss.pwm_values + 0x3fff01f0 0x22 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3fff01f0 pwm_values + *fill* 0x3fff0212 0x2 + .bss.pwm_mask 0x3fff0214 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3fff0214 pwm_mask + .bss._pwm_isr_data + 0x3fff0218 0xd4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .bss._ZZ17PzemDcEverySecondvE10send_retry + 0x3fff02ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss._ZZ17PzemAcEverySecondvE10send_retry + 0x3fff02ed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss._ZZ23SonoffBridgeSerialInputvE11receive_len + 0x3fff02ee 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3fff02ef 0x1 + .bss._ZZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x3fff02f0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff02f0 ArduinoJson::JsonObject::invalid()::instance + .bss._ZZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x3fff02f8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff02f8 ArduinoJson::JsonArray::invalid()::instance + .bss.xsns_index + 0x3fff0300 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0300 xsns_index + .bss.tx20_available + 0x3fff0301 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0301 tx20_available + .bss.tx20_wind_direction + 0x3fff0302 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0302 tx20_wind_direction + *fill* 0x3fff0303 0x1 + .bss.tx20_count + 0x3fff0304 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0304 tx20_count + .bss.tx20_wind_sum + 0x3fff0308 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0308 tx20_wind_sum + .bss.tx20_wind_speed_avg + 0x3fff030c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff030c tx20_wind_speed_avg + .bss.tx20_wind_speed_max + 0x3fff0310 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0310 tx20_wind_speed_max + .bss.tx20_wind_speed_kmh + 0x3fff0314 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0314 tx20_wind_speed_kmh + .bss.tx20_sf 0x3fff0318 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0318 tx20_sf + .bss.tx20_sc 0x3fff031a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031a tx20_sc + .bss.tx20_se 0x3fff031c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031c tx20_se + .bss.tx20_sd 0x3fff031d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031d tx20_sd + .bss.tx20_sb 0x3fff031e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031e tx20_sb + .bss.tx20_sa 0x3fff031f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031f tx20_sa + .bss.hx_pin_dout + 0x3fff0320 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0320 hx_pin_dout + .bss.hx_pin_sck + 0x3fff0321 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0321 hx_pin_sck + .bss.hx_calibrate_msg + 0x3fff0322 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0322 hx_calibrate_msg + .bss.hx_calibrate_timer + 0x3fff0323 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0323 hx_calibrate_timer + .bss.hx_calibrate_step + 0x3fff0324 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0324 hx_calibrate_step + .bss.hx_tare_flg + 0x3fff0325 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0325 hx_tare_flg + .bss.hx_sample_count + 0x3fff0326 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0326 hx_sample_count + *fill* 0x3fff0327 0x1 + .bss.hx_offset + 0x3fff0328 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0328 hx_offset + .bss.hx_sum_weight + 0x3fff032c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff032c hx_sum_weight + .bss.hx_weight + 0x3fff0330 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0330 hx_weight + .bss.lm75ad_address + 0x3fff0334 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0334 lm75ad_address + .bss.lm75ad_type + 0x3fff0335 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0335 lm75ad_type + .bss.sr04_trig_pin + 0x3fff0336 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0336 sr04_trig_pin + .bss.sr04_echo_pin + 0x3fff0337 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0337 sr04_echo_pin + .bss.sgp30_counter + 0x3fff0338 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0338 sgp30_counter + .bss.sgp30_ready + 0x3fff0339 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0339 sgp30_ready + .bss.sgp30_type + 0x3fff033a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff033a sgp30_type + *fill* 0x3fff033b 0x1 + .bss.sgp 0x3fff033c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff033c sgp + .bss.novasds_data + 0x3fff0350 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0350 novasds_data + .bss.novasds_valid + 0x3fff0354 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0354 novasds_valid + *fill* 0x3fff0355 0x3 + .bss.NovaSdsSerial + 0x3fff0358 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0358 NovaSdsSerial + .bss.pms_data 0x3fff035c 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff035c pms_data + .bss.pms_valid + 0x3fff037a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff037a pms_valid + *fill* 0x3fff037b 0x1 + .bss.PmsSerial + 0x3fff037c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff037c PmsSerial + .bss.senseair_send_retry + 0x3fff0380 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0380 senseair_send_retry + .bss.senseair_read_state + 0x3fff0381 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0381 senseair_read_state + *fill* 0x3fff0382 0x2 + .bss.senseair_humidity + 0x3fff0384 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0384 senseair_humidity + .bss.senseair_temperature + 0x3fff0388 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0388 senseair_temperature + .bss.senseair_co2 + 0x3fff038c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff038c senseair_co2 + *fill* 0x3fff038e 0x2 + .bss.senseair_types + 0x3fff0390 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0390 senseair_types + *fill* 0x3fff0397 0x1 + .bss.SenseairModbus + 0x3fff0398 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0398 SenseairModbus + .bss.mhz_state + 0x3fff039c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff039c mhz_state + .bss.mhz_received + 0x3fff039d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff039d mhz_received + *fill* 0x3fff039e 0x2 + .bss.mhz_temperature + 0x3fff03a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03a0 mhz_temperature + .bss.mhz_types + 0x3fff03a4 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03a4 mhz_types + .bss.mhz_abc_must_apply + 0x3fff03ab 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03ab mhz_abc_must_apply + .bss.mhz_last_ppm + 0x3fff03ac 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03ac mhz_last_ppm + *fill* 0x3fff03ae 0x2 + .bss.MhzSerial + 0x3fff03b0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03b0 MhzSerial + .bss.sht3x_sensors + 0x3fff03b4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03b4 sht3x_sensors + .bss.sht3x_count + 0x3fff03c9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03c9 sht3x_count + .bss.bh1750_illuminance + 0x3fff03ca 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03ca bh1750_illuminance + .bss.bh1750_valid + 0x3fff03cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03cc bh1750_valid + .bss.bh1750_type + 0x3fff03cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03cd bh1750_type + .bss.bh1750_address + 0x3fff03ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03ce bh1750_address + *fill* 0x3fff03cf 0x1 + .bss.Bme280CalibrationData + 0x3fff03d0 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03d0 Bme280CalibrationData + .bss.bmp180_cal_data + 0x3fff0414 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0414 bmp180_cal_data + .bss.bmp_sensors + 0x3fff043c 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff043c bmp_sensors + .bss.bmp_count + 0x3fff046c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff046c bmp_count + *fill* 0x3fff046d 0x3 + .bss.htu_types + 0x3fff0470 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0470 htu_types + *fill* 0x3fff0477 0x1 + .bss.htu_humidity + 0x3fff0478 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0478 htu_humidity + .bss.htu_temperature + 0x3fff047c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff047c htu_temperature + .bss.htu_valid + 0x3fff0480 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0480 htu_valid + .bss.htu_delay_temp + 0x3fff0481 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0481 htu_delay_temp + .bss.htu_type 0x3fff0482 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0482 htu_type + .bss.htu_address + 0x3fff0483 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0483 htu_address + .bss.sht_humidity + 0x3fff0484 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0484 sht_humidity + .bss.sht_temperature + 0x3fff0488 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0488 sht_temperature + .bss.sht_valid + 0x3fff048c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff048c sht_valid + .bss.sht_type 0x3fff048d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff048d sht_type + .bss.sht_scl_pin + 0x3fff048e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff048e sht_scl_pin + .bss.sht_sda_pin + 0x3fff048f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff048f sht_sda_pin + .bss.Dht 0x3fff0490 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0490 Dht + .bss.dht_sensors + 0x3fff04f0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff04f0 dht_sensors + *fill* 0x3fff04f1 0x3 + .bss.dht_data 0x3fff04f4 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff04f4 dht_data + *fill* 0x3fff04f9 0x3 + .bss.dht_max_cycles + 0x3fff04fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff04fc dht_max_cycles + .bss.onewire_rom_id + 0x3fff0500 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0500 onewire_rom_id + .bss.onewire_last_device_flag + 0x3fff0508 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0508 onewire_last_device_flag + .bss.onewire_last_family_discrepancy + 0x3fff0509 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0509 onewire_last_family_discrepancy + .bss.onewire_last_discrepancy + 0x3fff050a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff050a onewire_last_discrepancy + *fill* 0x3fff050b 0x1 + .bss.ds18x20_types + 0x3fff050c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff050c ds18x20_types + .bss.ds18x20_pin + 0x3fff0518 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0518 ds18x20_pin + .bss.ds18x20_sensors + 0x3fff0519 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0519 ds18x20_sensors + *fill* 0x3fff051a 0x2 + .bss.ds18x20_sensor + 0x3fff051c 0x80 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff051c ds18x20_sensor + .bss.sc_value 0x3fff059c 0xa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff059c sc_value + *fill* 0x3fff05a6 0x2 + .bss.last_counter_timer + 0x3fff05a8 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05a8 last_counter_timer + .bss.ws_suspend_update + 0x3fff05b8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05b8 ws_suspend_update + *fill* 0x3fff05b9 0x3 + .bss.strip 0x3fff05bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05bc strip + .bss.g_gotct 0x3fff05c0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05c0 g_gotct + *fill* 0x3fff05c1 0x1 + .bss.udp_remote_port + 0x3fff05c2 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05c2 udp_remote_port + .bss.udp_remote_ip + 0x3fff05c4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05c4 udp_remote_ip + .bss.udp_response_mutex + 0x3fff05cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05cc udp_response_mutex + *fill* 0x3fff05cd 0x3 + .bss.ipMulticast + 0x3fff05d0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05d0 ipMulticast + .bss.packet_buffer + 0x3fff05d8 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05d8 packet_buffer + .bss.udp_connected + 0x3fff06a0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06a0 udp_connected + *fill* 0x3fff06a1 0x3 + .bss.TickerMSearch + 0x3fff06a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06a4 TickerMSearch + .bss.PzemDcModbus + 0x3fff06a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06a8 PzemDcModbus + .bss.PzemAcModbus + 0x3fff06ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06ac PzemAcModbus + .bss.mcp_calibrate + 0x3fff06b0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b0 mcp_calibrate + .bss.mcp_timeout + 0x3fff06b1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b1 mcp_timeout + .bss.mcp_init 0x3fff06b2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b2 mcp_init + .bss.mcp_calibration_active + 0x3fff06b3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b3 mcp_calibration_active + .bss.mcp_address + 0x3fff06b4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b4 mcp_address + *fill* 0x3fff06b5 0x1 + .bss.mcp_line_frequency + 0x3fff06b6 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b6 mcp_line_frequency + .bss.mcp_voltage_rms + 0x3fff06b8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06b8 mcp_voltage_rms + *fill* 0x3fff06ba 0x2 + .bss.mcp_current_rms + 0x3fff06bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06bc mcp_current_rms + .bss.mcp_active_power + 0x3fff06c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06c0 mcp_active_power + .bss.pzem_sendRetry + 0x3fff06c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06c4 pzem_sendRetry + .bss.pzem_read_state + 0x3fff06c5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06c5 pzem_read_state + *fill* 0x3fff06c6 0x2 + .bss.pzem_ip 0x3fff06c8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06c8 pzem_ip + .bss.PzemSerial + 0x3fff06d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06d0 PzemSerial + .bss.cf_pulses + 0x3fff06d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06d4 cf_pulses + .bss.power_cycle_first + 0x3fff06d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06d8 power_cycle_first + .bss.power_cycle + 0x3fff06dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06dc power_cycle + .bss.current_cycle + 0x3fff06e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06e0 current_cycle + .bss.voltage_cycle + 0x3fff06e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06e4 voltage_cycle + .bss.cse_receive_flag + 0x3fff06e8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06e8 cse_receive_flag + *fill* 0x3fff06e9 0x3 + .bss.hlw_cf1_current_max_pulse_counter + 0x3fff06ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06ec hlw_cf1_current_max_pulse_counter + .bss.hlw_cf1_voltage_max_pulse_counter + 0x3fff06f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06f0 hlw_cf1_voltage_max_pulse_counter + .bss.hlw_current_ratio + 0x3fff06f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06f4 hlw_current_ratio + .bss.hlw_voltage_ratio + 0x3fff06f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06f8 hlw_voltage_ratio + .bss.hlw_power_ratio + 0x3fff06fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06fc hlw_power_ratio + .bss.hlw_energy_period_counter + 0x3fff0700 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0700 hlw_energy_period_counter + .bss.hlw_cf1_current_pulse_length + 0x3fff0704 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0704 hlw_cf1_current_pulse_length + .bss.hlw_cf1_voltage_pulse_length + 0x3fff0708 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0708 hlw_cf1_voltage_pulse_length + .bss.hlw_cf1_pulse_counter + 0x3fff070c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff070c hlw_cf1_pulse_counter + .bss.hlw_cf1_summed_pulse_length + 0x3fff0710 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0710 hlw_cf1_summed_pulse_length + .bss.hlw_cf1_pulse_last_time + 0x3fff0714 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0714 hlw_cf1_pulse_last_time + .bss.hlw_cf1_pulse_length + 0x3fff0718 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0718 hlw_cf1_pulse_length + .bss.hlw_cf_pulse_last_time + 0x3fff071c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff071c hlw_cf_pulse_last_time + .bss.hlw_cf_pulse_length + 0x3fff0720 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0720 hlw_cf_pulse_length + .bss.hlw_cf1_timer + 0x3fff0724 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0724 hlw_cf1_timer + .bss.hlw_load_off + 0x3fff0725 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0725 hlw_load_off + .bss.hlw_model_type + 0x3fff0726 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0726 hlw_model_type + .bss.hlw_select_ui_flag + 0x3fff0727 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0727 hlw_select_ui_flag + .bss.rf_lasttime + 0x3fff0728 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0728 rf_lasttime + .bss.mySwitch 0x3fff072c 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff072c mySwitch + .bss.tuya_byte_counter + 0x3fff0744 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0744 tuya_byte_counter + .bss.tuya_buffer + 0x3fff0748 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0748 tuya_buffer + .bss.tuya_data_len + 0x3fff0848 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0848 tuya_data_len + .bss.tuya_cmd_checksum + 0x3fff0849 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0849 tuya_cmd_checksum + .bss.tuya_cmd_status + 0x3fff084a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff084a tuya_cmd_status + .bss.tuya_ignore_dim + 0x3fff084b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff084b tuya_ignore_dim + .bss.tuya_new_dim + 0x3fff084c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff084c tuya_new_dim + *fill* 0x3fff084d 0x3 + .bss.TuyaSerial + 0x3fff0850 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0850 TuyaSerial + .bss.vars 0x3fff0854 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0854 vars + *fill* 0x3fff0886 0x2 + .bss.event_data + 0x3fff0888 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0888 event_data + .bss.rules_teleperiod + 0x3fff08ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff08ec rules_teleperiod + *fill* 0x3fff08ed 0x3 + .bss.rules_trigger_count + 0x3fff08f0 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff08f0 rules_trigger_count + *fill* 0x3fff08f3 0x1 + .bss.rules_triggers + 0x3fff08f4 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff08f4 rules_triggers + .bss.rules_timer + 0x3fff0900 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0900 rules_timer + .bss.rules_event_value + 0x3fff0920 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0920 rules_event_value + .bss.timer_window + 0x3fff092c 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff092c timer_window + .bss.serial_bridge_buffer + 0x3fff093c 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff093c serial_bridge_buffer + *fill* 0x3fff09be 0x2 + .bss.serial_bridge_polling_window + 0x3fff09c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09c0 serial_bridge_polling_window + .bss.serial_bridge_in_byte_counter + 0x3fff09c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09c4 serial_bridge_in_byte_counter + *fill* 0x3fff09c5 0x3 + .bss.SerialBridgeSerial + 0x3fff09c8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09c8 SerialBridgeSerial + .bss.domoticz_update_timer + 0x3fff09cc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09cc domoticz_update_timer + .bss.domoticz_subscribe + 0x3fff09d0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09d0 domoticz_subscribe + *fill* 0x3fff09d1 0x3 + .bss.sonoff_bridge_last_learn_time + 0x3fff09d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09d4 sonoff_bridge_last_learn_time + .bss.sonoff_bridge_last_time + 0x3fff09d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09d8 sonoff_bridge_last_time + .bss.sonoff_bridge_last_send_code + 0x3fff09dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09dc sonoff_bridge_last_send_code + .bss.sonoff_bridge_last_received_id + 0x3fff09e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e0 sonoff_bridge_last_received_id + .bss.sonoff_bridge_expected_bytes + 0x3fff09e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e4 sonoff_bridge_expected_bytes + .bss.sonoff_bridge_learn_active + 0x3fff09e5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e5 sonoff_bridge_learn_active + .bss.sonoff_bridge_receive_raw_flag + 0x3fff09e6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e6 sonoff_bridge_receive_raw_flag + .bss.sonoff_bridge_receive_flag + 0x3fff09e7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e7 sonoff_bridge_receive_flag + .bss.ir_lasttime + 0x3fff09e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09e8 ir_lasttime + .bss.irrecv 0x3fff09ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09ec irrecv + .bss.irsend 0x3fff09f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09f0 irsend + .bss.light_brightness + 0x3fff09f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09f4 light_brightness + .bss.light_saturation + 0x3fff09f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09f8 light_saturation + .bss.light_hue + 0x3fff09fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff09fc light_hue + .bss.light_pdcki_pin + 0x3fff0a00 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a00 light_pdcki_pin + .bss.light_pdi_pin + 0x3fff0a01 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a01 light_pdi_pin + .bss.arilux_rf_toggle + 0x3fff0a02 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a02 arilux_rf_toggle + *fill* 0x3fff0a03 0x1 + .bss.arilux_rf_repeat_count + 0x3fff0a04 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a04 arilux_rf_repeat_count + .bss.arilux_rf_change_count + 0x3fff0a08 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a08 arilux_rf_change_count + .bss.arilux_rf_lasttime + 0x3fff0a0c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a0c arilux_rf_lasttime + .bss.arilux_rf_last_time + 0x3fff0a10 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a10 arilux_rf_last_time + .bss.arilux_rf_last_received_value + 0x3fff0a14 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a14 arilux_rf_last_received_value + .bss.arilux_rf_received_value + 0x3fff0a18 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a18 arilux_rf_received_value + .bss.arilux_rf_timings + 0x3fff0a1c 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0a1c arilux_rf_timings + .bss.strip_timer_counter + 0x3fff0ae8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0ae8 strip_timer_counter + .bss.light_wakeup_counter + 0x3fff0aec 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0aec light_wakeup_counter + .bss.light_wakeup_dimmer + 0x3fff0aee 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0aee light_wakeup_dimmer + .bss.light_wakeup_active + 0x3fff0aef 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0aef light_wakeup_active + .bss.light_power + 0x3fff0af0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0af0 light_power + .bss.light_device + 0x3fff0af1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0af1 light_device + .bss.light_subtype + 0x3fff0af2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0af2 light_subtype + .bss.light_wheel + 0x3fff0af3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0af3 light_wheel + .bss.light_signal_color + 0x3fff0af4 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0af4 light_signal_color + *fill* 0x3fff0af9 0x3 + .bss.light_last_color + 0x3fff0afc 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0afc light_last_color + *fill* 0x3fff0b01 0x3 + .bss.light_new_color + 0x3fff0b04 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b04 light_new_color + *fill* 0x3fff0b09 0x3 + .bss.light_current_color + 0x3fff0b0c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b0c light_current_color + *fill* 0x3fff0b11 0x3 + .bss.light_entry_color + 0x3fff0b14 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b14 light_entry_color + *fill* 0x3fff0b19 0x3 + .bss.energy_command_code + 0x3fff0b1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b1c energy_command_code + .bss.ticker_energy + 0x3fff0b20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b20 ticker_energy + .bss.energy_fifth_second + 0x3fff0b24 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b24 energy_fifth_second + *fill* 0x3fff0b25 0x1 + .bss.energy_mplw_counter + 0x3fff0b26 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b26 energy_mplw_counter + .bss.energy_mplh_counter + 0x3fff0b28 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b28 energy_mplh_counter + .bss.energy_mplr_counter + 0x3fff0b2a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2a energy_mplr_counter + .bss.energy_max_energy_state + 0x3fff0b2b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2b energy_max_energy_state + .bss.energy_max_current_flag + 0x3fff0b2c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2c energy_max_current_flag + .bss.energy_min_current_flag + 0x3fff0b2d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2d energy_min_current_flag + .bss.energy_max_voltage_flag + 0x3fff0b2e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2e energy_max_voltage_flag + .bss.energy_min_voltage_flag + 0x3fff0b2f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b2f energy_min_voltage_flag + .bss.energy_max_power_flag + 0x3fff0b30 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b30 energy_max_power_flag + .bss.energy_min_power_flag + 0x3fff0b31 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b31 energy_min_power_flag + .bss.energy_type_dc + 0x3fff0b32 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b32 energy_type_dc + .bss.energy_power_delta + 0x3fff0b33 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b33 energy_power_delta + .bss.energy_power_last + 0x3fff0b34 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b34 energy_power_last + .bss.energy_period + 0x3fff0b40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b40 energy_period + .bss.energy_kWhtoday + 0x3fff0b44 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b44 energy_kWhtoday + .bss.energy_kWhtoday_delta + 0x3fff0b48 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b48 energy_kWhtoday_delta + .bss.energy_total + 0x3fff0b4c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b4c energy_total + .bss.energy_daily + 0x3fff0b50 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b50 energy_daily + .bss.energy_start + 0x3fff0b54 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b54 energy_start + .bss.energy_active_power + 0x3fff0b58 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b58 energy_active_power + .bss.energy_current + 0x3fff0b5c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b5c energy_current + .bss.energy_voltage + 0x3fff0b60 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b60 energy_voltage + .bss.MqttClient + 0x3fff0b64 0x430 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0b64 MqttClient + .bss.mqtt_connected + 0x3fff0f94 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f94 mqtt_connected + .bss.config_block_count + 0x3fff0f95 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f95 config_block_count + .bss.upload_progress_dot_count + 0x3fff0f96 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f96 upload_progress_dot_count + .bss.upload_file_type + 0x3fff0f97 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f97 upload_file_type + .bss.upload_error + 0x3fff0f98 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f98 upload_error + .bss.webserver_state + 0x3fff0f99 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f99 webserver_state + *fill* 0x3fff0f9a 0x2 + .bss.WebServer + 0x3fff0f9c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0f9c WebServer + .bss.DnsServer + 0x3fff0fa0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fa0 DnsServer + .bss.efm8bb1_update + 0x3fff0fa4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fa4 efm8bb1_update + .bss.ntp_sync_minute + 0x3fff0fa8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fa8 ntp_sync_minute + .bss.midnight_now + 0x3fff0fa9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fa9 midnight_now + *fill* 0x3fff0faa 0x2 + .bss.time_timezone + 0x3fff0fac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fac time_timezone + .bss.restart_time + 0x3fff0fb0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fb0 restart_time + .bss.ntp_time 0x3fff0fb4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fb4 ntp_time + .bss.standard_time + 0x3fff0fb8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fb8 standard_time + .bss.daylight_saving_time + 0x3fff0fbc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fbc daylight_saving_time + .bss.local_time + 0x3fff0fc0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fc0 local_time + .bss.utc_time 0x3fff0fc4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fc4 utc_time + .bss.TickerRtc + 0x3fff0fc8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fc8 TickerRtc + .bss.i2c_buffer + 0x3fff0fcc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fcc i2c_buffer + .bss.wifi_config_counter + 0x3fff0fd0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd0 wifi_config_counter + .bss.wifi_config_type + 0x3fff0fd1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd1 wifi_config_type + .bss.wifi_status + 0x3fff0fd2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd2 wifi_status + .bss.wifi_retry + 0x3fff0fd3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd3 wifi_retry + .bss.wifi_retry_init + 0x3fff0fd4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd4 wifi_retry_init + .bss.wifi_counter + 0x3fff0fd5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd5 wifi_counter + .bss.oswatch_blocked_loop + 0x3fff0fd6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fd6 oswatch_blocked_loop + *fill* 0x3fff0fd7 0x1 + .bss._ZL22oswatch_last_loop_time + 0x3fff0fd8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .bss.tickerOSWatch + 0x3fff0fdc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fdc tickerOSWatch + .bss.syslog_host_hash + 0x3fff0fe0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fe0 syslog_host_hash + .bss.syslog_host_addr + 0x3fff0fe4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fe4 syslog_host_addr + .bss.settings_buffer + 0x3fff0fec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0fec settings_buffer + .bss.settings_location + 0x3fff0ff0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0ff0 settings_location + .bss.settings_crc + 0x3fff0ff4 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0ff4 settings_crc + *fill* 0x3fff0ff6 0x2 + .bss.rtc_reboot_crc + 0x3fff0ff8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0ff8 rtc_reboot_crc + .bss.rtc_settings_crc + 0x3fff0ffc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0ffc rtc_settings_crc + .bss.backlog 0x3fff1000 0x168 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff1000 backlog + .bss.web_log 0x3fff1168 0xfa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff1168 web_log + .bss.log_data 0x3fff2108 0x200 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2108 log_data + .bss.mqtt_data + 0x3fff2308 0x37d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2308 mqtt_data + *fill* 0x3fff2685 0x3 + .bss.serial_in_buffer + 0x3fff2688 0x208 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2688 serial_in_buffer + .bss.mqtt_topic + 0x3fff2890 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2890 mqtt_topic + *fill* 0x3fff28b1 0x3 + .bss.mqtt_client + 0x3fff28b4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff28b4 mqtt_client + *fill* 0x3fff28d5 0x3 + .bss.my_hostname + 0x3fff28d8 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff28d8 my_hostname + *fill* 0x3fff28f9 0x3 + .bss.my_version + 0x3fff28fc 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff28fc my_version + *fill* 0x3fff291d 0x3 + .bss.global_state + 0x3fff2920 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2920 global_state + *fill* 0x3fff2921 0x3 + .bss.my_module + 0x3fff2924 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2924 my_module + .bss.mdns_begun + 0x3fff2945 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2945 mdns_begun + .bss.pwm_present + 0x3fff2946 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2946 pwm_present + .bss.mdns_delayed_start + 0x3fff2947 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2947 mdns_delayed_start + .bss.syslog_level + 0x3fff2948 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2948 syslog_level + .bss.seriallog_level + 0x3fff2949 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2949 seriallog_level + .bss.devices_present + 0x3fff294a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294a devices_present + .bss.reset_web_log_flag + 0x3fff294b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294b reset_web_log_flag + .bss.dual_hex_code + 0x3fff294c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294c dual_hex_code + .bss.serial_in_byte + 0x3fff294d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294d serial_in_byte + .bss.ntp_force_sync + 0x3fff294e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294e ntp_force_sync + .bss.light_type + 0x3fff294f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff294f light_type + .bss.i2c_flg 0x3fff2950 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2950 i2c_flg + .bss.energy_flg + 0x3fff2951 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2951 energy_flg + .bss.dht_flg 0x3fff2952 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2952 dht_flg + .bss.counter_no_pullup + 0x3fff2953 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2953 counter_no_pullup + .bss.pwm_inverted + 0x3fff2954 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2954 pwm_inverted + .bss.led_inverted + 0x3fff2955 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2955 led_inverted + *fill* 0x3fff2956 0x2 + .bss.pin 0x3fff2958 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2958 pin + .bss.virtualswitch + 0x3fff29d4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29d4 virtualswitch + .bss.holdwallswitch + 0x3fff29dc 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29dc holdwallswitch + .bss.lastwallswitch + 0x3fff29e4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29e4 lastwallswitch + .bss.multipress + 0x3fff29ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29ec multipress + .bss.multiwindow + 0x3fff29f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f0 multiwindow + .bss.blinkstate + 0x3fff29f4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f4 blinkstate + .bss.stop_flash_rotate + 0x3fff29f5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f5 stop_flash_rotate + .bss.sleep 0x3fff29f6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f6 sleep + .bss.interlock_mutex + 0x3fff29f7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f7 interlock_mutex + .bss.backlog_mutex + 0x3fff29f8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f8 backlog_mutex + .bss.backlog_pointer + 0x3fff29f9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29f9 backlog_pointer + .bss.backlog_index + 0x3fff29fa 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29fa backlog_index + .bss.latching_relay_pulse + 0x3fff29fb 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29fb latching_relay_pulse + .bss.state_250mS + 0x3fff29fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29fc state_250mS + .bss.fallback_topic_flag + 0x3fff29fd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29fd fallback_topic_flag + .bss.serial_local + 0x3fff29fe 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff29fe serial_local + *fill* 0x3fff29ff 0x1 + .bss.rules_flag + 0x3fff2a00 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a00 rules_flag + .bss.save_data_counter + 0x3fff2a02 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a02 save_data_counter + .bss.switch_no_pullup + 0x3fff2a04 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a04 switch_no_pullup + *fill* 0x3fff2a06 0x2 + .bss.holdbutton + 0x3fff2a08 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a08 holdbutton + .bss.syslog_timer + 0x3fff2a10 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a10 syslog_timer + .bss.seriallog_timer + 0x3fff2a12 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a12 seriallog_timer + .bss.blink_counter + 0x3fff2a14 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a14 blink_counter + .bss.mqtt_cmnd_publish + 0x3fff2a16 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a16 mqtt_cmnd_publish + .bss.dual_button_code + 0x3fff2a18 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a18 dual_button_code + *fill* 0x3fff2a1a 0x2 + .bss.ota_url 0x3fff2a1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a1c ota_url + .bss.global_humidity + 0x3fff2a20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a20 global_humidity + .bss.global_temperature + 0x3fff2a24 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a24 global_temperature + .bss.global_update + 0x3fff2a28 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a28 global_update + .bss.uptime 0x3fff2a2c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a2c uptime + .bss.wifi_state_flag + 0x3fff2a30 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a30 wifi_state_flag + .bss.restart_flag + 0x3fff2a34 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a34 restart_flag + .bss.ota_result + 0x3fff2a38 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a38 ota_result + .bss.ota_state_flag + 0x3fff2a3c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a3c ota_state_flag + .bss.serial_in_byte_counter + 0x3fff2a40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a40 serial_in_byte_counter + .bss.rel_inverted + 0x3fff2a44 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a44 rel_inverted + .bss.latching_power + 0x3fff2a48 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a48 latching_power + .bss.blink_powersave + 0x3fff2a4c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a4c blink_powersave + .bss.blink_mask + 0x3fff2a50 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a50 blink_mask + .bss.blink_power + 0x3fff2a54 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a54 blink_power + .bss.power 0x3fff2a58 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a58 power + .bss.switch_debounce + 0x3fff2a5c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a5c switch_debounce + .bss.button_debounce + 0x3fff2a60 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a60 button_debounce + .bss.backlog_delay + 0x3fff2a64 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a64 backlog_delay + .bss.blink_timer + 0x3fff2a68 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a68 blink_timer + .bss.pulse_timer + 0x3fff2a6c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a6c pulse_timer + .bss.state_250msecond + 0x3fff2a8c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a8c state_250msecond + .bss.state_100msecond + 0x3fff2a90 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a90 state_100msecond + .bss.state_50msecond + 0x3fff2a94 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a94 state_50msecond + .bss.serial_polling_window + 0x3fff2a98 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a98 serial_polling_window + .bss.feature_sns2 + 0x3fff2a9c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2a9c feature_sns2 + .bss.feature_sns1 + 0x3fff2aa0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2aa0 feature_sns1 + .bss.feature_drv2 + 0x3fff2aa4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2aa4 feature_drv2 + .bss.feature_drv1 + 0x3fff2aa8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2aa8 feature_drv1 + .bss.PortUdp 0x3fff2aac 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2aac PortUdp + .bss.EspClient + 0x3fff2ac4 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2ac4 EspClient + .bss.XdrvMailbox + 0x3fff2adc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2adc XdrvMailbox + .bss.RtcTime 0x3fff2af0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2af0 RtcTime + .bss.RtcSettings + 0x3fff2b08 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2b08 RtcSettings + .bss.RtcReboot + 0x3fff2b64 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2b64 RtcReboot + .bss.Settings 0x3fff2b68 0xe00 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2b68 Settings + .bss._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x3fff3968 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff3968 guard variable for ArduinoJson::JsonObject::invalid()::instance + .bss._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x3fff3970 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff3970 guard variable for ArduinoJson::JsonArray::invalid()::instance + .bss._ZZL9gpio_intrvE5start + 0x3fff3978 0x4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .bss.irparams 0x3fff397c 0x10 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x3fff397c irparams + .bss._ZL5timer + 0x3fff398c 0x14 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .bss.Wire 0x3fff39a0 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39a0 Wire + .bss._ZN7TwoWire12transmittingE + 0x3fff39b0 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39b0 TwoWire::transmitting + .bss._ZN7TwoWire14txBufferLengthE + 0x3fff39b1 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39b1 TwoWire::txBufferLength + .bss._ZN7TwoWire13txBufferIndexE + 0x3fff39b2 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39b2 TwoWire::txBufferIndex + *fill* 0x3fff39b3 0x1 + .bss._ZN7TwoWire8txBufferE + 0x3fff39b4 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39b4 TwoWire::txBuffer + .bss._ZN7TwoWire9txAddressE + 0x3fff39d4 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d4 TwoWire::txAddress + .bss._ZN7TwoWire14rxBufferLengthE + 0x3fff39d5 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d5 TwoWire::rxBufferLength + .bss._ZN7TwoWire13rxBufferIndexE + 0x3fff39d6 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d6 TwoWire::rxBufferIndex + *fill* 0x3fff39d7 0x1 + .bss._ZN7TwoWire8rxBufferE + 0x3fff39d8 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d8 TwoWire::rxBuffer + .bss.WiFi 0x3fff39f8 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x3fff39f8 WiFi + *fill* 0x3fff39f9 0x3 + .bss._ZL12sCbEventList + 0x3fff39fc 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .bss._ZN19ESP8266WiFiSTAClass12_useStaticIpE + 0x3fff3a04 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3fff3a04 ESP8266WiFiSTAClass::_useStaticIp + *fill* 0x3fff3a05 0x3 + .bss._ZN20ESP8266WiFiScanClass11_scanResultE + 0x3fff3a08 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3a08 ESP8266WiFiScanClass::_scanResult + .bss._ZN20ESP8266WiFiScanClass10_scanCountE + 0x3fff3a0c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3a0c ESP8266WiFiScanClass::_scanCount + .bss._ZN20ESP8266WiFiScanClass13_scanCompleteE + 0x3fff3a10 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3a10 ESP8266WiFiScanClass::_scanComplete + .bss._ZN20ESP8266WiFiScanClass12_scanStartedE + 0x3fff3a11 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3a11 ESP8266WiFiScanClass::_scanStarted + .bss._ZN20ESP8266WiFiScanClass10_scanAsyncE + 0x3fff3a12 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3a12 ESP8266WiFiScanClass::_scanAsync + *fill* 0x3fff3a13 0x1 + .bss._ZN5SListI10WiFiClientE8_s_firstE + 0x3fff3a14 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff3a14 SList::_s_first + .bss._ZN10WiFiClient10_localPortE + 0x3fff3a18 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff3a18 WiFiClient::_localPort + *fill* 0x3fff3a1a 0x2 + .bss._ZN5SListI7WiFiUDPE8_s_firstE + 0x3fff3a1c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3fff3a1c SList::_s_first + .bss.MDNS 0x3fff3a20 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3fff3a20 MDNS + .bss._ZL19MDNS_MULTICAST_ADDR + 0x3fff3a5c 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .bss._ZZN8RCSwitch15handleInterruptEvE11changeCount + 0x3fff3a64 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch15handleInterruptEvE11repeatCount + 0x3fff3a68 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZZN8RCSwitch15handleInterruptEvE8lastTime + 0x3fff3a6c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .bss._ZN8RCSwitch7timingsE + 0x3fff3a70 0x10c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3a70 RCSwitch::timings + .bss._ZN8RCSwitch17nReceivedProtocolE + 0x3fff3b7c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3b7c RCSwitch::nReceivedProtocol + .bss._ZN8RCSwitch14nReceivedDelayE + 0x3fff3b80 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3b80 RCSwitch::nReceivedDelay + .bss._ZN8RCSwitch18nReceivedBitlengthE + 0x3fff3b84 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3b84 RCSwitch::nReceivedBitlength + .bss._ZN8RCSwitch14nReceivedValueE + 0x3fff3b88 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3b88 RCSwitch::nReceivedValue + .bss.ESPhttpUpdate + 0x3fff3b8c 0x8 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x3fff3b8c ESPhttpUpdate + .bss.tms_obj_list + 0x3fff3b94 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3fff3b94 tms_obj_list + .bss._ZZN8EspClass13getSketchSizeEvE6result + 0x3fff3bd4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .bss.ESP 0x3fff3bd8 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x3fff3bd8 ESP + *fill* 0x3fff3bd9 0x3 + .bss.Serial1 0x3fff3bdc 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3fff3bdc Serial1 + .bss.Serial 0x3fff3bf8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3fff3bf8 Serial + .bss.INADDR_NONE + 0x3fff3c14 0x8 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x3fff3c14 INADDR_NONE + .bss.Update 0x3fff3c1c 0x90 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x3fff3c1c Update + .bss._ZL18s_randomSeedCalled + 0x3fff3cac 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .bss._ZZL12loop_wrappervE10setup_done + 0x3fff3cad 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3fff3cae 0x2 + .bss._ZL22g_micros_at_task_start + 0x3fff3cb0 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .bss._ZL12g_loop_queue + 0x3fff3cb4 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3fff3cbc 0x4 + .bss.g_cont 0x3fff3cc0 0x1028 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3fff3cc0 g_cont + .bss.resetInfo + 0x3fff4ce8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3fff4ce8 resetInfo + .bss.s_abort_called + 0x3fff4d04 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + *fill* 0x3fff4d05 0x3 + .bss.s_panic_func + 0x3fff4d08 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .bss.s_panic_line + 0x3fff4d0c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .bss.s_panic_file + 0x3fff4d10 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .bss.twi_clockStretchLimit + 0x3fff4d14 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .bss.twi_scl 0x3fff4d18 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .bss.twi_sda 0x3fff4d19 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + *fill* 0x3fff4d1a 0x2 + .bss.micros_overflow_count + 0x3fff4d1c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .bss.micros_at_last_overflow_tick + 0x3fff4d20 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .bss.micros_overflow_timer + 0x3fff4d24 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .bss.delay_timer + 0x3fff4d38 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .bss.last$4361 + 0x3fff4d4c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .bss.errno_var + 0x3fff4d50 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .bss.s_uart_debug_nr + 0x3fff4d54 0x4 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .bss.umm_numblocks + 0x3fff4d58 0x2 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff4d58 umm_numblocks + *fill* 0x3fff4d5a 0x2 + .bss.umm_heap 0x3fff4d5c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff4d5c umm_heap + .bss._ZL11sLastUnused + 0x3fff4d60 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss._ZL12sFirstUnused + 0x3fff4d64 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss._ZL5sLast + 0x3fff4d68 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss._ZL6sFirst + 0x3fff4d6c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss.renew 0x3fff4d70 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x3fff4d71 0x3 + .bss.plist 0x3fff4d74 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.dhcps_lease + 0x3fff4d78 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.client_address + 0x3fff4d84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.server_address + 0x3fff4d88 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.broadcast_dhcps + 0x3fff4d8c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.pcb_dhcps + 0x3fff4d90 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .bss.randnum$3659 + 0x3fff4d94 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .bss.pserver_list + 0x3fff4d98 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff4d98 pserver_list + .bss.plink_active + 0x3fff4d9c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff4d9c plink_active + .bss.dns_random + 0x3fff4da0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + *fill* 0x3fff4da1 0x3 + .bss.dns_payload + 0x3fff4da4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .bss.dns_servers + 0x3fff4da8 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .bss.dns_table + 0x3fff4db0 0x460 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .bss.dns_seqno + 0x3fff5210 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + *fill* 0x3fff5211 0x3 + .bss.dns_pcb 0x3fff5214 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .bss.netifnum$2695 + 0x3fff5218 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + *fill* 0x3fff5219 0x3 + .bss.sntp_timer + 0x3fff521c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss.realtime_stamp + 0x3fff5230 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff5230 realtime_stamp + .bss.sntp_retry_timeout + 0x3fff5234 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss.sntp_current_server + 0x3fff5238 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + *fill* 0x3fff5239 0x3 + .bss.sntp_servers + 0x3fff523c 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss.sntp_pcb 0x3fff5254 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss.tcp_timer + 0x3fff5258 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + *fill* 0x3fff5259 0x3 + .bss.tcpip_tcp_timer_active + 0x3fff525c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .bss.timeouts_last_time + 0x3fff5260 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .bss.next_timeout + 0x3fff5264 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .bss.etharp_cached_entry + 0x3fff5268 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + *fill* 0x3fff5269 0x3 + .bss.arp_table + 0x3fff526c 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .bss.allrouters + 0x3fff535c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .bss.allsystems + 0x3fff5360 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .bss.igmp_group_list + 0x3fff5364 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .bss.ip_id 0x3fff5368 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .bss.str$2146 0x3fff536a 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + *fill* 0x3fff537a 0x2 + .bss.raw_pcbs 0x3fff537c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .bss.recv_data + 0x3fff5380 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.recv_flags + 0x3fff5384 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *fill* 0x3fff5385 0x1 + .bss.tcplen 0x3fff5386 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.flags 0x3fff5388 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *fill* 0x3fff5389 0x3 + .bss.ackno 0x3fff538c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.seqno 0x3fff5390 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.iphdr 0x3fff5394 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.tcphdr 0x3fff5398 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.inseg 0x3fff539c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *(.gnu.linkonce.b.*) + *(COMMON) + COMMON 0x3fff53b0 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff53b0 ummHeapInfo + *fill* 0x3fff53be 0x2 + COMMON 0x3fff53c0 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff53c0 pktinfo + 0x3fff53e8 premot + COMMON 0x3fff549c 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x3fff549c espconn_TaskQueue + COMMON 0x3fff5514 0x32 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x3fff5514 dhcp_rx_options_val + 0x3fff553c dhcp_rx_options_given + *fill* 0x3fff5546 0x2 + COMMON 0x3fff5548 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + 0x3fff5548 netif_default + 0x3fff554c netif_list + COMMON 0x3fff5550 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff5550 __tznorth + 0x3fff5554 __tzyear + 0x3fff5558 res_buf + 0x3fff557c sntp__tzrule + 0x3fff55b4 reult + COMMON 0x3fff5618 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x3fff5618 tcp_tw_pcbs + 0x3fff561c tcp_ticks + 0x3fff5620 tcp_tmp_pcb + 0x3fff5624 tcp_listen_pcbs + 0x3fff5628 tcp_active_pcbs + 0x3fff562c tcp_bound_pcbs + COMMON 0x3fff5630 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + 0x3fff5630 udp_pcbs + COMMON 0x3fff5634 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x3fff5634 current_iphdr_src + 0x3fff5638 current_netif + 0x3fff563c current_header + 0x3fff5640 current_iphdr_dest + COMMON 0x3fff5644 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x3fff5644 tcp_input_pcb + 0x3fff5648 . = ALIGN (0x8) + 0x3fff5648 _bss_end = ABSOLUTE (.) + 0x3fff5648 _heap_start = ABSOLUTE (.) + +.irom0.text 0x40201010 0x70058 + 0x40201010 _irom0_text_start = ABSOLUTE (.) + *(.ver_number) + *.pioenvs\\*\\lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + .text._ZN6IRrecvC2Etthb + 0x40201010 0x95 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0xb5 (size before relaxing) + 0x40201018 IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool) + 0x40201018 IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool) + *fill* 0x402010a5 0x3 + .text._ZN6IRrecv6resumeEv + 0x402010a8 0x1b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x1f (size before relaxing) + 0x402010a8 IRrecv::resume() + *fill* 0x402010c3 0x1 + .text._ZN6IRrecv10enableIRInEv + 0x402010c4 0x5a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x62 (size before relaxing) + 0x402010dc IRrecv::enableIRIn() + *fill* 0x4020111e 0x2 + .text._ZN6IRrecv8ticksLowEjh + 0x40201120 0x8c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x90 (size before relaxing) + 0x40201144 IRrecv::ticksLow(unsigned int, unsigned char) + .text._ZN6IRrecv9ticksHighEjh + 0x402011ac 0x69 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x89 (size before relaxing) + 0x402011b4 IRrecv::ticksHigh(unsigned int, unsigned char) + *fill* 0x40201215 0x3 + .text._ZN6IRrecv5matchEjjh + 0x40201218 0x4d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x5d (size before relaxing) + 0x40201218 IRrecv::match(unsigned int, unsigned int, unsigned char) + *fill* 0x40201265 0x3 + .text._ZN6IRrecv12matchAtLeastEjjh + 0x40201268 0x4b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x53 (size before relaxing) + 0x40201268 IRrecv::matchAtLeast(unsigned int, unsigned int, unsigned char) + *fill* 0x402012b3 0x1 + .text._ZN6IRrecv9matchMarkEjjhs + 0x402012b4 0x1d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x21 (size before relaxing) + 0x402012b4 IRrecv::matchMark(unsigned int, unsigned int, unsigned char, short) + *fill* 0x402012d1 0x3 + .text._ZN6IRrecv10matchSpaceEjjhs + 0x402012d4 0x1b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x23 (size before relaxing) + 0x402012d4 IRrecv::matchSpace(unsigned int, unsigned int, unsigned char, short) + *fill* 0x402012ef 0x1 + .text._ZN6IRrecv7compareEtt + 0x402012f0 0x8d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0xa1 (size before relaxing) + 0x402012fc IRrecv::compare(unsigned short, unsigned short) + *fill* 0x4020137d 0x3 + .text._ZN6IRrecv10decodeHashEP14decode_results + 0x40201380 0x87 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x8f (size before relaxing) + 0x40201388 IRrecv::decodeHash(decode_results*) + *fill* 0x40201407 0x1 + .text._ZN6IRrecv6decodeEP14decode_resultsP10irparams_t + 0x40201408 0x13c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x198 (size before relaxing) + 0x4020140c IRrecv::decode(decode_results*, irparams_t*) + .text._ZN6IRrecv9matchDataEPVtttjtj + 0x40201544 0x1c1 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x1e1 (size before relaxing) + 0x40201544 IRrecv::matchData(unsigned short volatile*, unsigned short, unsigned short, unsigned int, unsigned short, unsigned int) + *fill* 0x40201705 0x3 + .text._ZN6IRsend5beginEv + 0x40201708 0x17 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x1b (size before relaxing) + 0x40201708 IRsend::begin() + *fill* 0x4020171f 0x1 + .text._ZN6IRsend6ledOffEv + 0x40201720 0x1f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x40201724 IRsend::ledOff() + *fill* 0x4020173f 0x1 + .text._ZN6IRsend14calcUSecPeriodEjb + 0x40201740 0x4c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x40201748 IRsend::calcUSecPeriod(unsigned int, bool) + .text._ZN6IRsend11enableIROutEjh + 0x4020178c 0x63 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x6b (size before relaxing) + 0x4020178c IRsend::enableIROut(unsigned int, unsigned char) + *fill* 0x402017ef 0x1 + .text._ZN6IRsend4markEt + 0x402017f0 0x91 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0xb1 (size before relaxing) + 0x402017f4 IRsend::mark(unsigned short) + *fill* 0x40201881 0x3 + .text._ZN6IRsend5spaceEj + 0x40201884 0x4c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x60 (size before relaxing) + 0x4020188c IRsend::space(unsigned int) + .text._ZN6IRsend8sendDataEtjtjytb + 0x402018d0 0x109 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x139 (size before relaxing) + 0x402018d8 IRsend::sendData(unsigned short, unsigned int, unsigned short, unsigned int, unsigned long long, unsigned short, bool) + *fill* 0x402019d9 0x3 + .text._ZN7IRtimer5resetEv + 0x402019dc 0x1f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + 0x402019e0 IRtimer::reset() + *fill* 0x402019fb 0x1 + .text._ZN7IRtimerC2Ev + 0x402019fc 0xf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + 0x17 (size before relaxing) + 0x402019fc IRtimer::IRtimer() + 0x402019fc IRtimer::IRtimer() + *fill* 0x40201a0b 0x1 + .text._ZN7IRtimer7elapsedEv + 0x40201a0c 0x27 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + 0x2b (size before relaxing) + 0x40201a0c IRtimer::elapsed() + *fill* 0x40201a33 0x1 + .text._ZN6IRsend8sendDISHEytt + 0x40201a34 0x91 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + 0xbd (size before relaxing) + 0x40201a40 IRsend::sendDISH(unsigned long long, unsigned short, unsigned short) + *fill* 0x40201ac5 0x3 + .text._ZN6IRsend7sendJVCEytt + 0x40201ac8 0xb0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + 0xf0 (size before relaxing) + 0x40201ad8 IRsend::sendJVC(unsigned long long, unsigned short, unsigned short) + .text._ZN6IRrecv9decodeJVCEP14decode_resultstb + 0x40201b78 0x18d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + 0x1cd (size before relaxing) + 0x40201b78 IRrecv::decodeJVC(decode_results*, unsigned short, bool) + *fill* 0x40201d05 0x3 + .text._ZN6IRsend7sendNECEytt + 0x40201d08 0xef .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + 0x14f (size before relaxing) + 0x40201d1c IRsend::sendNEC(unsigned long long, unsigned short, unsigned short) + *fill* 0x40201df7 0x1 + .text._ZN6IRrecv9decodeNECEP14decode_resultstb + 0x40201df8 0x1d9 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + 0x221 (size before relaxing) + 0x40201dfc IRrecv::decodeNEC(decode_results*, unsigned short, bool) + *fill* 0x40201fd1 0x3 + .text._ZN6IRsend15sendPanasonic64Eytt + 0x40201fd4 0xb7 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + 0xf3 (size before relaxing) + 0x40201fe8 IRsend::sendPanasonic64(unsigned long long, unsigned short, unsigned short) + *fill* 0x4020208b 0x1 + .text._ZN6IRsend13sendPanasonicEtjtt + 0x4020208c 0x1d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + 0x21 (size before relaxing) + 0x4020208c IRsend::sendPanasonic(unsigned short, unsigned int, unsigned short, unsigned short) + *fill* 0x402020a9 0x3 + .text._ZN6IRrecv15decodePanasonicEP14decode_resultstbj + 0x402020ac 0x157 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + 0x17f (size before relaxing) + 0x402020b0 IRrecv::decodePanasonic(decode_results*, unsigned short, bool, unsigned int) + *fill* 0x40202203 0x1 + .text._ZN6IRsend7sendRC5Eytt + 0x40202204 0x14c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + 0x1b8 (size before relaxing) + 0x40202210 IRsend::sendRC5(unsigned long long, unsigned short, unsigned short) + .text._ZN6IRsend7sendRC6Eytt + 0x40202350 0x118 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + 0x164 (size before relaxing) + 0x40202358 IRsend::sendRC6(unsigned long long, unsigned short, unsigned short) + .text._ZN6IRrecv10getRClevelEP14decode_resultsPtS2_t + 0x40202468 0xcb .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + 0xdf (size before relaxing) + 0x4020246c IRrecv::getRClevel(decode_results*, unsigned short*, unsigned short*, unsigned short) + *fill* 0x40202533 0x1 + .text._ZN6IRrecv9decodeRC5EP14decode_resultstb + 0x40202534 0x179 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + 0x199 (size before relaxing) + 0x40202534 IRrecv::decodeRC5(decode_results*, unsigned short, bool) + *fill* 0x402026ad 0x3 + .text._ZN6IRrecv9decodeRC6EP14decode_resultstb + 0x402026b0 0x202 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + 0x23e (size before relaxing) + 0x402026b0 IRrecv::decodeRC6(decode_results*, unsigned short, bool) + *fill* 0x402028b2 0x2 + .text._ZN6IRsend11sendSAMSUNGEytt + 0x402028b4 0xa3 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + 0xeb (size before relaxing) + 0x402028b8 IRsend::sendSAMSUNG(unsigned long long, unsigned short, unsigned short) + *fill* 0x40202957 0x1 + .text._ZN6IRrecv13decodeSAMSUNGEP14decode_resultstb + 0x40202958 0x16a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + 0x19e (size before relaxing) + 0x40202958 IRrecv::decodeSAMSUNG(decode_results*, unsigned short, bool) + *fill* 0x40202ac2 0x2 + .text._ZN6IRsend8sendSonyEytt + 0x40202ac4 0xa3 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + 0xdb (size before relaxing) + 0x40202ad0 IRsend::sendSony(unsigned long long, unsigned short, unsigned short) + *fill* 0x40202b67 0x1 + .text._ZN6IRrecv10decodeSonyEP14decode_resultstb + 0x40202b68 0x21b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + 0x253 (size before relaxing) + 0x40202b68 IRrecv::decodeSony(decode_results*, unsigned short, bool) + *fill* 0x40202d83 0x1 + .text._Z11reverseBitsyt + 0x40202d84 0x5e .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + 0x62 (size before relaxing) + 0x40202d84 reverseBits(unsigned long long, unsigned short) + *fill* 0x40202de2 0x2 + .text._ZN7TwoWire5writeEPKhj + 0x40202de4 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40202de8 TwoWire::write(unsigned char const*, unsigned int) + *fill* 0x40202e37 0x1 + .text._ZN7TwoWire4readEv + 0x40202e38 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40202e44 TwoWire::read() + *fill* 0x40202e66 0x2 + .text._ZN7TwoWire4peekEv + 0x40202e68 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x29 (size before relaxing) + 0x40202e68 TwoWire::peek() + *fill* 0x40202e85 0x3 + .text._ZN7TwoWire5flushEv + 0x40202e88 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2c (size before relaxing) + 0x40202e90 TwoWire::flush() + .text._ZN7TwoWire9availableEv + 0x40202eac 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x38 (size before relaxing) + 0x40202eac TwoWire::available() + .text._ZN7TwoWire5writeEh + 0x40202ed8 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x4b (size before relaxing) + 0x40202edc TwoWire::write(unsigned char) + *fill* 0x40202f17 0x1 + .text._ZN7TwoWireC2Ev + 0x40202f18 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40202f1c TwoWire::TwoWire() + 0x40202f1c TwoWire::TwoWire() + .text._ZN7TwoWire5beginEii + 0x40202f2c 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3e (size before relaxing) + 0x40202f34 TwoWire::begin(int, int) + *fill* 0x40202f62 0x2 + .text._ZN7TwoWire5beginEv + 0x40202f64 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x28 (size before relaxing) + 0x40202f64 TwoWire::begin() + .text._ZN7TwoWire11requestFromEhjb + 0x40202f80 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x50 (size before relaxing) + 0x40202f80 TwoWire::requestFrom(unsigned char, unsigned int, bool) + .text._ZN7TwoWire11requestFromEhh + 0x40202fc0 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x22 (size before relaxing) + 0x40202fc0 TwoWire::requestFrom(unsigned char, unsigned char) + *fill* 0x40202fda 0x2 + .text._ZN7TwoWire11requestFromEii + 0x40202fdc 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1e (size before relaxing) + 0x40202fdc TwoWire::requestFrom(int, int) + *fill* 0x40202ff6 0x2 + .text._ZN7TwoWire17beginTransmissionEh + 0x40202ff8 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2e (size before relaxing) + 0x40202ffc TwoWire::beginTransmission(unsigned char) + *fill* 0x4020301a 0x2 + .text._ZN7TwoWire17beginTransmissionEi + 0x4020301c 0x15 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x19 (size before relaxing) + 0x4020301c TwoWire::beginTransmission(int) + *fill* 0x40203031 0x3 + .text._ZN7TwoWire15endTransmissionEh + 0x40203034 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x52 (size before relaxing) + 0x40203034 TwoWire::endTransmission(unsigned char) + *fill* 0x4020306a 0x2 + .text._ZN7TwoWire15endTransmissionEv + 0x4020306c 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x18 (size before relaxing) + 0x4020306c TwoWire::endTransmission() + .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x40203080 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1d (size before relaxing) + *fill* 0x40203099 0x3 + .text._ZN6Ticker10_attach_msEjbPFvPvEj + 0x4020309c 0x5f .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x6b (size before relaxing) + 0x402030a0 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) + *fill* 0x402030fb 0x1 + .text._ZN6Ticker6detachEv + 0x402030fc 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x31 (size before relaxing) + 0x402030fc Ticker::detach() + *fill* 0x40203125 0x3 + .text._ZN6TickerD2Ev + 0x40203128 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x17 (size before relaxing) + 0x40203128 Ticker::~Ticker() + 0x40203128 Ticker::~Ticker() + *fill* 0x40203137 0x1 + .text._Z10C2D_enableb$part$0 + 0x40203138 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1b (size before relaxing) + *fill* 0x4020314b 0x1 + .text._ZL6c2_bitb + 0x4020314c 0x44 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x50 (size before relaxing) + .text._Z16c2_address_writeh + 0x40203190 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x77 (size before relaxing) + 0x40203190 c2_address_write(unsigned char) + *fill* 0x402031d7 0x1 + .text._Z15c2_address_readv + 0x402031d8 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x89 (size before relaxing) + 0x402031d8 c2_address_read() + *fill* 0x40203231 0x3 + .text._Z13c2_data_writejh + 0x40203234 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0xc8 (size before relaxing) + 0x40203234 c2_data_write(unsigned int, unsigned char) + .text._Z12c2_data_readRjh + 0x402032bc 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0xdb (size before relaxing) + 0x402032bc c2_data_read(unsigned int&, unsigned char) + *fill* 0x40203357 0x1 + .text._Z12c2_data_readRhh$isra$1 + 0x40203358 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x26 (size before relaxing) + *fill* 0x40203376 0x2 + .text._Z8c2_resetv + 0x40203378 0x33 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x43 (size before relaxing) + 0x40203378 c2_reset() + *fill* 0x402033ab 0x1 + .text._Z19c2_programming_initv + 0x402033ac 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x6b (size before relaxing) + 0x402033ac c2_programming_init() + *fill* 0x402033ef 0x1 + .text._Z14c2_block_writejPhh + 0x402033f0 0x193 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x21b (size before relaxing) + 0x402033f0 c2_block_write(unsigned int, unsigned char*, unsigned char) + *fill* 0x40203583 0x1 + .text._Z15c2_device_erasev + 0x40203584 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1f7 (size before relaxing) + 0x40203584 c2_device_erase() + *fill* 0x402036f3 0x1 + .text._ZL12value_of_hexh + 0x402036f4 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x40203726 0x2 + .text._Z10ihx_decodePht + 0x40203728 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + 0xcb (size before relaxing) + 0x40203728 ihx_decode(unsigned char*, unsigned short) + *fill* 0x402037e7 0x1 + .text.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print + 0x402037e8 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x1d (size before relaxing) + *fill* 0x40203801 0x3 + .text._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ + 0x40203804 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0xfd (size before relaxing) + 0x40203808 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) + *fill* 0x402038c1 0x3 + .text._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii + 0x402038c4 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x21a (size before relaxing) + 0x402038e4 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) + *fill* 0x40203a7e 0x2 + .text._ZN18ESP8266WiFiAPClass8softAPIPEv + 0x40203a80 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x31 (size before relaxing) + 0x40203a80 ESP8266WiFiAPClass::softAPIP() + *fill* 0x40203aa5 0x3 + .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEv + 0x40203aa8 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x70 (size before relaxing) + 0x40203ab4 ESP8266WiFiAPClass::softAPmacAddress() + .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x40203b08 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203b0c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + 0x40203b0c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x40203b13 0x1 + .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev + 0x40203b14 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0xb (size before relaxing) + 0x40203b14 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + 0x40203b14 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40203b1b 0x1 + .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x40203b1c 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x1f (size before relaxing) + 0x40203b1c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x40203b33 0x1 + .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x40203b34 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x1f (size before relaxing) + 0x40203b34 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40203b4b 0x1 + .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x40203b4c 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x1f (size before relaxing) + 0x40203b4c std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x40203b63 0x1 + .text._Z23wifi_dns_found_callbackPKcP7ip_addrPv + 0x40203b64 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x26 (size before relaxing) + 0x40203b64 wifi_dns_found_callback(char const*, ip_addr*, void*) + *fill* 0x40203b7f 0x1 + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x40203b80 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x83 (size before relaxing) + *fill* 0x40203bcf 0x1 + .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ + 0x40203bd0 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x94 (size before relaxing) + .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x40203c3c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x2a (size before relaxing) + 0x40203c3c std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() + *fill* 0x40203c5a 0x2 + .text._ZN23ESP8266WiFiGenericClassC2Ev + 0x40203c5c 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x1d (size before relaxing) + 0x40203c60 ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + 0x40203c60 ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + *fill* 0x40203c75 0x3 + .text._ZN23ESP8266WiFiGenericClass7channelEv + 0x40203c78 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x17 (size before relaxing) + 0x40203c78 ESP8266WiFiGenericClass::channel() + *fill* 0x40203c87 0x1 + .text._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType + 0x40203c88 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x18 (size before relaxing) + 0x40203c88 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) + .text._ZN23ESP8266WiFiGenericClass10getPhyModeEv + 0x40203c9c 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x17 (size before relaxing) + 0x40203c9c ESP8266WiFiGenericClass::getPhyMode() + *fill* 0x40203cab 0x1 + .text._ZN23ESP8266WiFiGenericClass10persistentEb + 0x40203cac 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0xc (size before relaxing) + 0x40203cac ESP8266WiFiGenericClass::persistent(bool) + .text._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode + 0x40203cb4 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x69 (size before relaxing) + 0x40203cb4 ESP8266WiFiGenericClass::mode(WiFiMode) + *fill* 0x40203d01 0x3 + .text._ZN23ESP8266WiFiGenericClass9enableSTAEb + 0x40203d04 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x51 (size before relaxing) + 0x40203d04 ESP8266WiFiGenericClass::enableSTA(bool) + *fill* 0x40203d4d 0x3 + .text._ZN23ESP8266WiFiGenericClass8enableAPEb + 0x40203d50 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x51 (size before relaxing) + 0x40203d50 ESP8266WiFiGenericClass::enableAP(bool) + *fill* 0x40203d99 0x3 + .text._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress + 0x40203d9c 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8d (size before relaxing) + 0x40203da0 ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) + *fill* 0x40203e05 0x3 + .text._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv + 0x40203e08 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0xaa (size before relaxing) + 0x40203e10 ESP8266WiFiGenericClass::_eventCallback(void*) + *fill* 0x40203e9a 0x2 + .text._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x40203e9c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x48 (size before relaxing) + 0x40203ea0 std::list, std::allocator > >::push_back(std::shared_ptr const&) + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x40203ee0 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x6b (size before relaxing) + *fill* 0x40203f33 0x1 + .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation + 0x40203f34 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x6b (size before relaxing) + *fill* 0x40203f87 0x1 + .text._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x40203f88 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3e (size before relaxing) + 0x40203f88 std::_List_base, std::allocator > >::_M_clear() + *fill* 0x40203fba 0x2 + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x40203fbc 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3d (size before relaxing) + 0x40203fc0 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + 0x40203fc0 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + *fill* 0x40203ff5 0x3 + .text._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE + 0x40203ff8 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x136 (size before relaxing) + 0x40204000 ESP8266WiFiGenericClass::onStationModeGotIP(std::function) + *fill* 0x402040d2 0x2 + .text._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE + 0x402040d4 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x133 (size before relaxing) + 0x402040dc ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) + *fill* 0x402041af 0x1 + .text.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE + 0x402041b0 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0xd (size before relaxing) + *fill* 0x402041b9 0x3 + .text.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE + 0x402041bc 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x1d (size before relaxing) + *fill* 0x402041d1 0x3 + .text._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ + 0x402041d4 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0xcb (size before relaxing) + 0x402041d8 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) + *fill* 0x4020427b 0x1 + .text._ZN19ESP8266WiFiSTAClass10disconnectEb + 0x4020427c 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x8b (size before relaxing) + 0x4020427c ESP8266WiFiSTAClass::disconnect(bool) + *fill* 0x402042db 0x1 + .text._ZN19ESP8266WiFiSTAClass14setAutoConnectEb + 0x402042dc 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3b (size before relaxing) + 0x402042dc ESP8266WiFiSTAClass::setAutoConnect(bool) + *fill* 0x4020430b 0x1 + .text._ZN19ESP8266WiFiSTAClass14getAutoConnectEv + 0x4020430c 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x20 (size before relaxing) + 0x4020430c ESP8266WiFiSTAClass::getAutoConnect() + .text._ZN19ESP8266WiFiSTAClass7localIPEv + 0x40204324 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x31 (size before relaxing) + 0x40204324 ESP8266WiFiSTAClass::localIP() + *fill* 0x40204349 0x3 + .text._ZN19ESP8266WiFiSTAClass10macAddressEv + 0x4020434c 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x70 (size before relaxing) + 0x40204350 ESP8266WiFiSTAClass::macAddress() + .text._ZN19ESP8266WiFiSTAClass10subnetMaskEv + 0x402043a4 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x31 (size before relaxing) + 0x402043a4 ESP8266WiFiSTAClass::subnetMask() + *fill* 0x402043c9 0x3 + .text._ZN19ESP8266WiFiSTAClass9gatewayIPEv + 0x402043cc 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x31 (size before relaxing) + 0x402043cc ESP8266WiFiSTAClass::gatewayIP() + *fill* 0x402043f1 0x3 + .text._ZN19ESP8266WiFiSTAClass5dnsIPEh + 0x402043f4 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x2f (size before relaxing) + 0x402043f4 ESP8266WiFiSTAClass::dnsIP(unsigned char) + *fill* 0x40204417 0x1 + .text._ZN19ESP8266WiFiSTAClass8hostnameEPc + 0x40204418 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x35 (size before relaxing) + 0x40204418 ESP8266WiFiSTAClass::hostname(char*) + *fill* 0x40204445 0x3 + .text._ZN19ESP8266WiFiSTAClass6statusEv + 0x40204448 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x2a (size before relaxing) + 0x4020444c ESP8266WiFiSTAClass::status() + *fill* 0x4020446a 0x2 + .text._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb + 0x4020446c 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x228 (size before relaxing) + 0x40204470 ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) + .text._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb + 0x40204614 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x19 (size before relaxing) + 0x40204614 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) + *fill* 0x40204629 0x3 + .text._ZN19ESP8266WiFiSTAClass8BSSIDstrEv + 0x4020462c 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x77 (size before relaxing) + 0x4020462c ESP8266WiFiSTAClass::BSSIDstr() + *fill* 0x40204687 0x1 + .text._ZN19ESP8266WiFiSTAClass4RSSIEv + 0x40204688 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x1d (size before relaxing) + 0x40204688 ESP8266WiFiSTAClass::RSSI() + *fill* 0x4020469d 0x3 + .text._ZN20ESP8266WiFiScanClass9_scanDoneEPvi + 0x402046a0 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0xbb (size before relaxing) + 0x402046b8 ESP8266WiFiScanClass::_scanDone(void*, int) + *fill* 0x4020474f 0x1 + .text._ZN20ESP8266WiFiScanClass10scanDeleteEv + 0x40204750 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3e (size before relaxing) + 0x40204750 ESP8266WiFiScanClass::scanDelete() + *fill* 0x4020477e 0x2 + .text._ZN20ESP8266WiFiScanClass12scanNetworksEbb + 0x40204780 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0xef (size before relaxing) + 0x40204784 ESP8266WiFiScanClass::scanNetworks(bool, bool) + *fill* 0x4020482f 0x1 + .text._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi + 0x40204830 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x26 (size before relaxing) + 0x40204830 ESP8266WiFiScanClass::_getScanInfoByIndex(int) + *fill* 0x4020484e 0x2 + .text._ZN20ESP8266WiFiScanClass4SSIDEh + 0x40204850 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3d (size before relaxing) + 0x40204854 ESP8266WiFiScanClass::SSID(unsigned char) + *fill* 0x40204885 0x3 + .text._ZN20ESP8266WiFiScanClass14encryptionTypeEh + 0x40204888 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x31 (size before relaxing) + 0x4020488c ESP8266WiFiScanClass::encryptionType(unsigned char) + *fill* 0x402048b5 0x3 + .text._ZN20ESP8266WiFiScanClass4RSSIEh + 0x402048b8 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x24 (size before relaxing) + 0x402048b8 ESP8266WiFiScanClass::RSSI(unsigned char) + *fill* 0x402048d5 0x3 + .text._ZN20ESP8266WiFiScanClass8BSSIDstrEh + 0x402048d8 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x82 (size before relaxing) + 0x402048dc ESP8266WiFiScanClass::BSSIDstr(unsigned char) + *fill* 0x40204942 0x2 + .text._ZN20ESP8266WiFiScanClass7channelEh + 0x40204944 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x1f (size before relaxing) + 0x40204944 ESP8266WiFiScanClass::channel(unsigned char) + *fill* 0x4020495c 0x0 + .text._ZN10WiFiClient7connectEPKct + 0x4020495c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x58 (size before relaxing) + 0x4020495c WiFiClient::connect(char const*, unsigned short) + .text._ZN10WiFiClient7connectE9IPAddresst + 0x402049a0 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0xb4 (size before relaxing) + 0x402049ac WiFiClient::connect(IPAddress, unsigned short) + .text._ZN10WiFiClient6_s_errEPva + 0x40204a2c 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x17 (size before relaxing) + 0x40204a2c WiFiClient::_s_err(void*, signed char) + *fill* 0x40204a3b 0x1 + .text._ZN10WiFiClient9availableEv + 0x40204a3c 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x2f (size before relaxing) + 0x40204a3c WiFiClient::available() + *fill* 0x40204a64 0x0 + .text._ZN10WiFiClient9peekBytesEPhj + 0x40204a64 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0xbe (size before relaxing) + 0x40204a6c WiFiClient::peekBytes(unsigned char*, unsigned int) + *fill* 0x40204b1a 0x2 + .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x40204b1c 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x29 (size before relaxing) + 0x40204b1c ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) + *fill* 0x40204b41 0x3 + .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x40204b44 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x99 (size before relaxing) + 0x40204b44 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) + *fill* 0x40204bb1 0x3 + .text._ZN13ClientContext8_s_errorEPva + 0x40204bb4 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x62 (size before relaxing) + 0x40204bb4 ClientContext::_s_error(void*, signed char) + *fill* 0x40204bf2 0x2 + .text._ZN13ClientContext5flushEv + 0x40204bf4 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x39 (size before relaxing) + 0x40204bf4 ClientContext::flush() + *fill* 0x40204c25 0x3 + .text._ZN13ClientContext5unrefEv + 0x40204c28 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x9f (size before relaxing) + 0x40204c28 ClientContext::unref() + *fill* 0x40204c90 0x0 + .text._ZN10WiFiClient4stopEv + 0x40204c90 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x25 (size before relaxing) + 0x40204c90 WiFiClient::stop() + *fill* 0x40204cb1 0x3 + .text._ZN10WiFiClientD2Ev + 0x40204cb4 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4f (size before relaxing) + 0x40204cbc WiFiClient::~WiFiClient() + 0x40204cbc WiFiClient::~WiFiClient() + *fill* 0x40204cff 0x1 + .text._ZN10WiFiClientD0Ev + 0x40204d00 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x29 (size before relaxing) + 0x40204d00 WiFiClient::~WiFiClient() + *fill* 0x40204d1d 0x3 + .text._ZN10WiFiClient5flushEv + 0x40204d20 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x1b (size before relaxing) + 0x40204d20 WiFiClient::flush() + *fill* 0x40204d34 0x0 + .text._ZN13ClientContext5writeEPKcj + 0x40204d34 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x73 (size before relaxing) + 0x40204d34 ClientContext::write(char const*, unsigned int) + *fill* 0x40204d8f 0x1 + .text._ZN10WiFiClient5writeEPKhj + 0x40204d90 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x29 (size before relaxing) + 0x40204d90 WiFiClient::write(unsigned char const*, unsigned int) + *fill* 0x40204db1 0x3 + .text._ZN13ClientContext8_consumeEj + 0x40204db4 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x7f (size before relaxing) + 0x40204db4 ClientContext::_consume(unsigned int) + *fill* 0x40204e1b 0x1 + .text._ZN10WiFiClient4readEv + 0x40204e1c 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x44 (size before relaxing) + 0x40204e1c WiFiClient::read() + .text._ZN10WiFiClient4readEPhj + 0x40204e5c 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x7d (size before relaxing) + 0x40204e5c WiFiClient::read(unsigned char*, unsigned int) + *fill* 0x40204ed1 0x3 + .text._ZN10WiFiClientC2Ev + 0x40204ed4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x23 (size before relaxing) + 0x40204ed4 WiFiClient::WiFiClient() + 0x40204ed4 WiFiClient::WiFiClient() + *fill* 0x40204eef 0x1 + .text._ZN10WiFiClientC2EP13ClientContext + 0x40204ef0 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x29 (size before relaxing) + 0x40204ef0 WiFiClient::WiFiClient(ClientContext*) + 0x40204ef0 WiFiClient::WiFiClient(ClientContext*) + *fill* 0x40204f11 0x3 + .text._ZN10WiFiClientC2ERKS_ + 0x40204f14 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x2f (size before relaxing) + 0x40204f14 WiFiClient::WiFiClient(WiFiClient const&) + 0x40204f14 WiFiClient::WiFiClient(WiFiClient const&) + *fill* 0x40204f3b 0x1 + .text._ZN10WiFiClientaSERKS_ + 0x40204f3c 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x35 (size before relaxing) + 0x40204f3c WiFiClient::operator=(WiFiClient const&) + *fill* 0x40204f6d 0x3 + .text._ZN10WiFiClient10_connectedEPva + 0x40204f70 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0xaf (size before relaxing) + 0x40204f7c WiFiClient::_connected(void*, signed char) + *fill* 0x40204feb 0x1 + .text._ZN10WiFiClient12_s_connectedEPvS0_a + 0x40204fec 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x1f (size before relaxing) + 0x40204fec WiFiClient::_s_connected(void*, void*, signed char) + *fill* 0x40205007 0x1 + .text._ZN10WiFiClient8remoteIPEv + 0x40205008 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x2d (size before relaxing) + 0x40205008 WiFiClient::remoteIP() + *fill* 0x40205031 0x3 + .text._ZN10WiFiClient7localIPEv + 0x40205034 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x2d (size before relaxing) + 0x40205034 WiFiClient::localIP() + *fill* 0x4020505d 0x3 + .text._ZN10WiFiClient7stopAllEv + 0x40205060 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x2b (size before relaxing) + 0x40205060 WiFiClient::stopAll() + *fill* 0x40205087 0x1 + .text._ZN10WiFiClient13stopAllExceptEPS_ + 0x40205088 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x34 (size before relaxing) + 0x40205088 WiFiClient::stopAllExcept(WiFiClient*) + .text._ZN7WiFiUDP9availableEv + 0x402050b8 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x2f (size before relaxing) + 0x402050b8 WiFiUDP::available() + *fill* 0x402050e0 0x0 + .text._ZN7WiFiUDP11beginPacketEPKct + 0x402050e0 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x58 (size before relaxing) + 0x402050e0 WiFiUDP::beginPacket(char const*, unsigned short) + .text._ZN7WiFiUDP5writeEPKhj + 0x40205124 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0xed (size before relaxing) + 0x40205124 WiFiUDP::write(unsigned char const*, unsigned int) + *fill* 0x402051fd 0x3 + .text._ZN7WiFiUDP4readEPhj + 0x40205200 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4c (size before relaxing) + 0x40205200 WiFiUDP::read(unsigned char*, unsigned int) + .text._ZN7WiFiUDP9endPacketEv + 0x40205248 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0xcf (size before relaxing) + 0x40205248 WiFiUDP::endPacket() + *fill* 0x402052fb 0x1 + .text._ZN7WiFiUDP8remoteIPEv + 0x402052fc 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4f (size before relaxing) + 0x402052fc WiFiUDP::remoteIP() + *fill* 0x40205347 0x1 + .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x40205348 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x39 (size before relaxing) + 0x40205348 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) + *fill* 0x4020537d 0x3 + .text._ZN7WiFiUDP11parsePacketEv + 0x40205380 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x7b (size before relaxing) + 0x40205380 WiFiUDP::parsePacket() + *fill* 0x402053eb 0x1 + .text._ZN10UdpContextC2Ev + 0x402053ec 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x41 (size before relaxing) + 0x402053ec UdpContext::UdpContext() + 0x402053ec UdpContext::UdpContext() + *fill* 0x40205429 0x3 + .text._ZN7WiFiUDP11beginPacketE9IPAddresst + 0x4020542c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x50 (size before relaxing) + 0x4020542c WiFiUDP::beginPacket(IPAddress, unsigned short) + .text._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i + 0x40205470 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x67 (size before relaxing) + 0x40205470 WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) + *fill* 0x402054cb 0x1 + .text._ZN10UdpContext5unrefEv + 0x402054cc 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x71 (size before relaxing) + 0x402054cc UdpContext::unref() + *fill* 0x40205529 0x3 + .text._ZN7WiFiUDP4stopEv + 0x4020552c 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x32 (size before relaxing) + 0x4020552c WiFiUDP::stop() + *fill* 0x40205552 0x2 + .text._ZN7WiFiUDP5beginEt + 0x40205554 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x86 (size before relaxing) + 0x40205558 WiFiUDP::begin(unsigned short) + *fill* 0x402055ba 0x2 + .text._ZN7WiFiUDPC2Ev + 0x402055bc 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402055c4 WiFiUDP::WiFiUDP() + 0x402055c4 WiFiUDP::WiFiUDP() + *fill* 0x402055df 0x1 + .text._ZN7WiFiUDPD2Ev + 0x402055e0 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4f (size before relaxing) + 0x402055e0 WiFiUDP::~WiFiUDP() + 0x402055e0 WiFiUDP::~WiFiUDP() + *fill* 0x40205623 0x1 + .text._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t + 0x40205624 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0xb7 (size before relaxing) + 0x40205628 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) + *fill* 0x402056af 0x1 + .text._ZN7WiFiUDP7stopAllEv + 0x402056b0 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x2a (size before relaxing) + 0x402056b0 WiFiUDP::stopAll() + *fill* 0x402056d6 0x2 + .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x402056d8 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4a (size before relaxing) + *fill* 0x40205717 0x1 + .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation + 0x40205718 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4a (size before relaxing) + *fill* 0x40205757 0x1 + .text._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x40205758 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x52 (size before relaxing) + 0x40205758 std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + *fill* 0x4020579f 0x1 + .text._ZN10UdpContext4readEPcj + 0x402057a0 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x49 (size before relaxing) + 0x402057a0 UdpContext::read(char*, unsigned int) + *fill* 0x402057e5 0x3 + .text._ZN10UdpContext6appendEPKcj + 0x402057e8 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0xe2 (size before relaxing) + 0x402057e8 UdpContext::append(char const*, unsigned int) + *fill* 0x402058b6 0x2 + .text._ZN10UdpContext4sendEP7ip_addrt + 0x402058b8 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0xdd (size before relaxing) + 0x402058b8 UdpContext::send(ip_addr*, unsigned short) + *fill* 0x40205975 0x3 + .text._ZN13MDNSResponderC2Ev + 0x40205978 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x6a (size before relaxing) + 0x4020597c MDNSResponder::MDNSResponder() + 0x4020597c MDNSResponder::MDNSResponder() + *fill* 0x402059ce 0x2 + .text._ZN13MDNSResponder8hostnameEi + 0x402059d0 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3f (size before relaxing) + 0x402059d0 MDNSResponder::hostname(int) + *fill* 0x402059ff 0x1 + .text._ZN13MDNSResponder2IPEi + 0x40205a00 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x43 (size before relaxing) + 0x40205a00 MDNSResponder::IP(int) + *fill* 0x40205a33 0x1 + .text._ZN13MDNSResponder4portEi + 0x40205a34 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x1c (size before relaxing) + 0x40205a34 MDNSResponder::port(int) + .text._ZN13MDNSResponder12queryServiceEPcS0_ + 0x40205a48 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x21c (size before relaxing) + 0x40205a64 MDNSResponder::queryService(char*, char*) + .text._ZN13MDNSResponder14_getServiceTxtEPcS0_ + 0x40205be0 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x54 (size before relaxing) + 0x40205be0 MDNSResponder::_getServiceTxt(char*, char*) + .text._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ + 0x40205c2c 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x59 (size before relaxing) + 0x40205c2c MDNSResponder::_getServiceTxtLen(char*, char*) + *fill* 0x40205c7d 0x3 + .text._ZN13MDNSResponder15_getServicePortEPcS0_ + 0x40205c80 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x5b (size before relaxing) + 0x40205c80 MDNSResponder::_getServicePort(char*, char*) + *fill* 0x40205cd3 0x1 + .text._ZN13MDNSResponder10addServiceEPcS0_t + 0x40205cd4 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0xb5 (size before relaxing) + 0x40205cd4 MDNSResponder::addService(char*, char*, unsigned short) + *fill* 0x40205d69 0x3 + .text._ZN13MDNSResponder9_getOurIpEv + 0x40205d6c 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x37 (size before relaxing) + 0x40205d6c MDNSResponder::_getOurIp() + *fill* 0x40205d97 0x1 + .text._ZN13MDNSResponder7_listenEv + 0x40205d98 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x186 (size before relaxing) + 0x40205dac MDNSResponder::_listen() + *fill* 0x40205ece 0x2 + .text._ZN13MDNSResponder8_restartEv + 0x40205ed0 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x86 (size before relaxing) + 0x40205ed0 MDNSResponder::_restart() + *fill* 0x40205f36 0x2 + .text._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ + 0x40205f38 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x1b (size before relaxing) + *fill* 0x40205f4b 0x1 + .text._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ + 0x40205f4c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x1b (size before relaxing) + *fill* 0x40205f5f 0x1 + .text._ZN13MDNSResponder6_replyEhPcS0_t + 0x40205f60 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x692 (size before relaxing) + 0x40205f64 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) + *fill* 0x402063e2 0x2 + .text._ZN13MDNSResponder17advertiseServicesEv + 0x402063e4 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x42 (size before relaxing) + 0x402063e4 MDNSResponder::advertiseServices() + *fill* 0x40206422 0x2 + .text._ZN13MDNSResponder12_parsePacketEv + 0x40206424 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x7a5 (size before relaxing) + 0x40206440 MDNSResponder::_parsePacket() + *fill* 0x40206a1d 0x3 + .text._ZN13MDNSResponder6updateEv + 0x40206a20 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x62 (size before relaxing) + 0x40206a20 MDNSResponder::update() + *fill* 0x40206a72 0x2 + .text._ZN13MDNSResponderD2Ev + 0x40206a74 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0xb9 (size before relaxing) + 0x40206a74 MDNSResponder::~MDNSResponder() + 0x40206a74 MDNSResponder::~MDNSResponder() + *fill* 0x40206af9 0x3 + .text._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x40206afc 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x37 (size before relaxing) + 0x40206afc std::__shared_ptr::operator=(std::__shared_ptr&&) + *fill* 0x40206b2b 0x1 + .text._ZN13MDNSResponder5beginEPKc + 0x40206b2c 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x14f (size before relaxing) + 0x40206b3c MDNSResponder::begin(char const*) + *fill* 0x40206c03 0x1 + .text.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev + 0x40206c04 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x38 (size before relaxing) + .text.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev + 0x40206c2c 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x1d (size before relaxing) + *fill* 0x40206c41 0x3 + .text._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth + 0x40206c44 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x126 (size before relaxing) + 0x40206c44 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) + *fill* 0x40206d4e 0x2 + .text._ZN14Adafruit_SGP307IAQinitEv + 0x40206d50 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x2b (size before relaxing) + 0x40206d50 Adafruit_SGP30::IAQinit() + *fill* 0x40206d73 0x1 + .text._ZN14Adafruit_SGP305beginEP7TwoWire + 0x40206d74 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x9c (size before relaxing) + 0x40206d74 Adafruit_SGP30::begin(TwoWire*) + .text._ZN14Adafruit_SGP3010IAQmeasureEv + 0x40206df4 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x47 (size before relaxing) + 0x40206df4 Adafruit_SGP30::IAQmeasure() + *fill* 0x40206e37 0x1 + .text._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ + 0x40206e38 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x4d (size before relaxing) + 0x40206e38 Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) + *fill* 0x40206e7d 0x3 + .text._ZN14RequestHandlerD2Ev + 0x40206e80 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40206e84 RequestHandler::~RequestHandler() + 0x40206e84 RequestHandler::~RequestHandler() + *fill* 0x40206e8b 0x1 + .text._ZN14RequestHandlerD0Ev + 0x40206e8c 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x1f (size before relaxing) + 0x40206e8c RequestHandler::~RequestHandler() + *fill* 0x40206ea3 0x1 + .text._ZN22FunctionRequestHandler9canUploadE6String + 0x40206ea4 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x54 (size before relaxing) + 0x40206ea4 FunctionRequestHandler::canUpload(String) + .text._ZN10HTTPUploadC2Ev + 0x40206ee8 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + *fill* 0x40206f1f 0x1 + .text._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x40206f20 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x31 (size before relaxing) + 0x40206f20 FunctionRequestHandler::canHandle(HTTPMethod, String) + *fill* 0x40206f4d 0x3 + .text._ZN22FunctionRequestHandlerD2Ev + 0x40206f50 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + 0x40206f54 FunctionRequestHandler::~FunctionRequestHandler() + 0x40206f54 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x40206f83 0x1 + .text._ZN22FunctionRequestHandlerD0Ev + 0x40206f84 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x29 (size before relaxing) + 0x40206f84 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x40206fa1 0x3 + .text._ZN16ESP8266WebServerC2Ei + 0x40206fa4 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xab (size before relaxing) + 0x40206fac ESP8266WebServer::ESP8266WebServer(int) + 0x40206fac ESP8266WebServer::ESP8266WebServer(int) + *fill* 0x4020701f 0x1 + .text._ZN16ESP8266WebServer5closeEv + 0x40207020 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x17 (size before relaxing) + 0x40207020 ESP8266WebServer::close() + *fill* 0x4020702f 0x1 + .text._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b + 0x40207030 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xc5 (size before relaxing) + 0x40207038 ESP8266WebServer::sendHeader(String const&, String const&, bool) + *fill* 0x402070a9 0x3 + .text._ZN16ESP8266WebServer11sendContentERK6String + 0x402070ac 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x51 (size before relaxing) + 0x402070ac ESP8266WebServer::sendContent(String const&) + *fill* 0x402070f9 0x3 + .text._ZN16ESP8266WebServer3argE6String + 0x402070fc 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x79 (size before relaxing) + 0x402070fc ESP8266WebServer::arg(String) + *fill* 0x40207161 0x3 + .text._ZN16ESP8266WebServer3argEi + 0x40207164 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + 0x40207164 ESP8266WebServer::arg(int) + *fill* 0x4020719f 0x1 + .text._ZN16ESP8266WebServer7argNameEi + 0x402071a0 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x47 (size before relaxing) + 0x402071a0 ESP8266WebServer::argName(int) + *fill* 0x402071db 0x1 + .text._ZN16ESP8266WebServer6hasArgE6String + 0x402071dc 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x47 (size before relaxing) + 0x402071dc ESP8266WebServer::hasArg(String) + *fill* 0x4020721f 0x1 + .text._ZN16ESP8266WebServer6headerE6String + 0x40207220 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x79 (size before relaxing) + 0x40207220 ESP8266WebServer::header(String) + *fill* 0x40207285 0x3 + .text._ZN16ESP8266WebServer14collectHeadersEPPKcj + 0x40207288 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x103 (size before relaxing) + 0x40207290 ESP8266WebServer::collectHeaders(char const**, unsigned int) + *fill* 0x4020735b 0x1 + .text._ZN16ESP8266WebServer5beginEv + 0x4020735c 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3b (size before relaxing) + 0x4020735c ESP8266WebServer::begin() + *fill* 0x40207387 0x1 + .text._ZN16ESP8266WebServer9hasHeaderE6String + 0x40207388 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x66 (size before relaxing) + 0x40207388 ESP8266WebServer::hasHeader(String) + *fill* 0x402073ea 0x2 + .text._ZN16ESP8266WebServer12authenticateEPKcS1_ + 0x402073ec 0x1a9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x2b1 (size before relaxing) + 0x402073f8 ESP8266WebServer::authenticate(char const*, char const*) + *fill* 0x40207595 0x3 + .text._ZN16ESP8266WebServer10hostHeaderEv + 0x40207598 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x27 (size before relaxing) + 0x40207598 ESP8266WebServer::hostHeader() + *fill* 0x402075b7 0x1 + .text._ZN16ESP8266WebServer21_responseCodeToStringEi + 0x402075b8 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3b1 (size before relaxing) + 0x40207658 ESP8266WebServer::_responseCodeToString(int) + *fill* 0x4020795d 0x3 + .text._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj + 0x40207960 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x27d (size before relaxing) + 0x40207984 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) + *fill* 0x40207add 0x3 + .text._ZN16ESP8266WebServer4sendEiPKcRK6String + 0x40207ae0 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x77 (size before relaxing) + 0x40207ae0 ESP8266WebServer::send(int, char const*, String const&) + *fill* 0x40207b33 0x1 + .text._ZN16ESP8266WebServer21requestAuthenticationEv + 0x40207b34 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x95 (size before relaxing) + 0x40207b3c ESP8266WebServer::requestAuthentication() + *fill* 0x40207b8d 0x3 + .text._ZN16ESP8266WebServer4sendEiRK6StringS2_ + 0x40207b90 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x18 (size before relaxing) + 0x40207b90 ESP8266WebServer::send(int, String const&, String const&) + .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ + 0x40207ba4 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xb4 (size before relaxing) + 0x40207ba4 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) + .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE + 0x40207c14 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x66 (size before relaxing) + 0x40207c14 ESP8266WebServer::on(char const*, HTTPMethod, std::function) + *fill* 0x40207c5a 0x2 + .text._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE + 0x40207c5c 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x45 (size before relaxing) + 0x40207c5c ESP8266WebServer::on(char const*, std::function) + *fill* 0x40207c8d 0x3 + .text._ZNKSt8functionIFvvEEclEv + 0x40207c90 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x20 (size before relaxing) + 0x40207c90 std::function::operator()() const + *fill* 0x40207ca9 0x3 + .text._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x40207cac 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x55 (size before relaxing) + 0x40207cac FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + *fill* 0x40207ced 0x3 + .text._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x40207cf0 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4c (size before relaxing) + 0x40207cf0 FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + .text._ZN16ESP8266WebServer14_handleRequestEv + 0x40207d28 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x10d (size before relaxing) + 0x40207d30 ESP8266WebServer::_handleRequest() + *fill* 0x40207de1 0x3 + .text._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x40207de4 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4c (size before relaxing) + 0x40207de4 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40207de4 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + .text._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE + 0x40207e24 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x19 (size before relaxing) + 0x40207e24 ESP8266WebServer::onNotFound(std::function) + *fill* 0x40207e39 0x3 + .text._ZN16ESP8266WebServer12handleClientEv + 0x40207e3c 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x1c1 (size before relaxing) + 0x40207e3c ESP8266WebServer::handleClient() + *fill* 0x40207f6d 0x3 + .text._ZNK6String9substringEj + 0x40207f70 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x23 (size before relaxing) + 0x40207f70 String::substring(unsigned int) const + *fill* 0x40207f8b 0x1 + .text._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ + 0x40207f8c 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x66 (size before relaxing) + 0x40207f8c ESP8266WebServer::_collectHeader(char const*, char const*) + *fill* 0x40207fe6 0x2 + .text._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x40207fe8 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x37 (size before relaxing) + 0x40207fec ESP8266WebServer::RequestArgument::RequestArgument() + 0x40207fec ESP8266WebServer::RequestArgument::RequestArgument() + *fill* 0x40208013 0x1 + .text._ZN16ESP8266WebServer16_uploadWriteByteEh + 0x40208014 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xb5 (size before relaxing) + 0x40208018 ESP8266WebServer::_uploadWriteByte(unsigned char) + *fill* 0x402080ad 0x3 + .text._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient + 0x402080b0 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x5a (size before relaxing) + 0x402080b0 ESP8266WebServer::_uploadReadByte(WiFiClient&) + *fill* 0x40208106 0x2 + .text._ZN16ESP8266WebServer9urlDecodeERK6String + 0x40208108 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xce (size before relaxing) + 0x4020810c ESP8266WebServer::urlDecode(String const&) + *fill* 0x402081aa 0x2 + .text._ZN16ESP8266WebServer15_parseArgumentsE6String + 0x402081ac 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x1f2 (size before relaxing) + 0x402081ac ESP8266WebServer::_parseArguments(String) + *fill* 0x40208336 0x2 + .text._ZN16ESP8266WebServer23_parseFormUploadAbortedEv + 0x40208338 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x89 (size before relaxing) + 0x40208338 ESP8266WebServer::_parseFormUploadAborted() + *fill* 0x402083a5 0x3 + .text._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj + 0x402083a8 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xc8c (size before relaxing) + 0x402083c8 ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) + .text._ZN16ESP8266WebServer13_parseRequestER10WiFiClient + 0x40208c10 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x8d5 (size before relaxing) + 0x40208c34 ESP8266WebServer::_parseRequest(WiFiClient&) + *fill* 0x402091de 0x2 + .text._ZN9DNSServerC2Ev + 0x402091e0 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x3e (size before relaxing) + 0x402091e8 DNSServer::DNSServer() + 0x402091e8 DNSServer::DNSServer() + *fill* 0x40209212 0x2 + .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x40209214 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x6d (size before relaxing) + 0x40209218 DNSServer::downcaseAndRemoveWwwPrefix(String&) + *fill* 0x40209255 0x3 + .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x40209258 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xad (size before relaxing) + 0x4020925c DNSServer::getDomainNameWithoutWwwPrefix() + *fill* 0x402092e9 0x3 + .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x402092ec 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x7c (size before relaxing) + 0x402092ec DNSServer::start(unsigned short const&, String const&, IPAddress const&) + .text._ZN9DNSServer11replyWithIPEv + 0x40209350 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x109 (size before relaxing) + 0x40209350 DNSServer::replyWithIP() + *fill* 0x402093ed 0x3 + .text._ZN9DNSServer19replyWithCustomCodeEv + 0x402093f0 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x89 (size before relaxing) + 0x402093f4 DNSServer::replyWithCustomCode() + *fill* 0x40209459 0x3 + .text._ZN9DNSServer18processNextRequestEv + 0x4020945c 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xfd (size before relaxing) + 0x40209460 DNSServer::processNextRequest() + *fill* 0x40209501 0x3 + .text._ZN8RCSwitch11setProtocolEi + 0x40209504 0x2c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x30 (size before relaxing) + 0x40209508 RCSwitch::setProtocol(int) + .text._ZN8RCSwitchC2Ev + 0x40209530 0x43 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x47 (size before relaxing) + 0x40209538 RCSwitch::RCSwitch() + 0x40209538 RCSwitch::RCSwitch() + *fill* 0x40209573 0x1 + .text._ZN8RCSwitch14enableTransmitEi + 0x40209574 0x19 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x1d (size before relaxing) + 0x40209574 RCSwitch::enableTransmit(int) + *fill* 0x4020958d 0x3 + .text._ZN8RCSwitch8transmitENS_7HighLowE + 0x40209590 0x5e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x6e (size before relaxing) + 0x40209590 RCSwitch::transmit(RCSwitch::HighLow) + *fill* 0x402095ee 0x2 + .text._ZN8RCSwitch13enableReceiveEv + 0x402095f0 0x39 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x41 (size before relaxing) + 0x402095f8 RCSwitch::enableReceive() + *fill* 0x40209629 0x3 + .text._ZN8RCSwitch13enableReceiveEi + 0x4020962c 0x14 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x18 (size before relaxing) + 0x4020962c RCSwitch::enableReceive(int) + .text._ZN8RCSwitch14disableReceiveEv + 0x40209640 0x23 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40209644 RCSwitch::disableReceive() + *fill* 0x40209663 0x1 + .text._ZN8RCSwitch4sendEmj + 0x40209664 0x8c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0xa8 (size before relaxing) + 0x40209664 RCSwitch::send(unsigned long, unsigned int) + .text._ZN8RCSwitch9availableEv + 0x402096f0 0x11 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x15 (size before relaxing) + 0x402096f0 RCSwitch::available() + *fill* 0x40209701 0x3 + .text._ZN8RCSwitch14resetAvailableEv + 0x40209704 0xc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x10 (size before relaxing) + 0x40209704 RCSwitch::resetAvailable() + .text._ZN8RCSwitch16getReceivedValueEv + 0x40209710 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0xe (size before relaxing) + 0x40209710 RCSwitch::getReceivedValue() + *fill* 0x4020971a 0x2 + .text._ZN8RCSwitch20getReceivedBitlengthEv + 0x4020971c 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0xe (size before relaxing) + 0x4020971c RCSwitch::getReceivedBitlength() + *fill* 0x40209726 0x2 + .text._ZN8RCSwitch16getReceivedDelayEv + 0x40209728 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x4020972c RCSwitch::getReceivedDelay() + *fill* 0x40209736 0x2 + .text._ZN8RCSwitch19getReceivedProtocolEv + 0x40209738 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x4020973c RCSwitch::getReceivedProtocol() + *fill* 0x40209746 0x2 + .text._ZN17ESP8266HTTPUpdate18getLastErrorStringEv + 0x40209748 0x174 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x1fc (size before relaxing) + 0x40209784 ESP8266HTTPUpdate::getLastErrorString() + .text._ZN17ESP8266HTTPUpdate9runUpdateER6Streamj6Stringi + 0x402098bc 0xdd .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x12d (size before relaxing) + 0x402098bc ESP8266HTTPUpdate::runUpdate(Stream&, unsigned int, String, int) + *fill* 0x40209999 0x3 + .text._ZN17ESP8266HTTPUpdate12handleUpdateER10HTTPClientRK6Stringb + 0x4020999c 0x398 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x584 (size before relaxing) + 0x402099e0 ESP8266HTTPUpdate::handleUpdate(HTTPClient&, String const&, bool) + .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_ + 0x40209d34 0x53 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x7f (size before relaxing) + 0x40209d34 ESP8266HTTPUpdate::update(String const&, String const&) + *fill* 0x40209d87 0x1 + .text.startup._GLOBAL__sub_I__ZN17ESP8266HTTPUpdateC2Ev + 0x40209d88 0xe .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + *fill* 0x40209d96 0x2 + .text._ZN13TasmotaSerial5flushEv + 0x40209d98 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x2b (size before relaxing) + 0x40209d98 TasmotaSerial::flush() + *fill* 0x40209db7 0x1 + .text._ZN13TasmotaSerialD2Ev + 0x40209db8 0x47 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x53 (size before relaxing) + 0x40209dc0 TasmotaSerial::~TasmotaSerial() + 0x40209dc0 TasmotaSerial::~TasmotaSerial() + *fill* 0x40209dff 0x1 + .text._ZN13TasmotaSerialD0Ev + 0x40209e00 0x1d .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x29 (size before relaxing) + 0x40209e00 TasmotaSerial::~TasmotaSerial() + *fill* 0x40209e1d 0x3 + .text._ZN13TasmotaSerial4peekEv + 0x40209e20 0x37 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3f (size before relaxing) + 0x40209e20 TasmotaSerial::peek() + *fill* 0x40209e57 0x1 + .text._ZN13TasmotaSerial4readEv + 0x40209e58 0x3f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x47 (size before relaxing) + 0x40209e58 TasmotaSerial::read() + *fill* 0x40209e97 0x1 + .text._ZN13TasmotaSerial9availableEv + 0x40209e98 0x28 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x34 (size before relaxing) + 0x40209e98 TasmotaSerial::available() + .text._ZN13TasmotaSerial5writeEh + 0x40209ec0 0xdf .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0xfb (size before relaxing) + 0x40209ec8 TasmotaSerial::write(unsigned char) + *fill* 0x40209f9f 0x1 + .text._ZN13TasmotaSerialC2Eiib + 0x40209fa0 0x10b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x14b (size before relaxing) + 0x40209fa8 TasmotaSerial::TasmotaSerial(int, int, bool) + 0x40209fa8 TasmotaSerial::TasmotaSerial(int, int, bool) + *fill* 0x4020a0ab 0x1 + .text._ZN13TasmotaSerial5beginEli + 0x4020a0ac 0x7b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0xa3 (size before relaxing) + 0x4020a0ac TasmotaSerial::begin(long, int) + *fill* 0x4020a127 0x1 + .text._ZN13TasmotaSerial6rxReadEv + 0x4020a128 0xd2 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0xde (size before relaxing) + 0x4020a12c TasmotaSerial::rxRead() + *fill* 0x4020a1fa 0x2 + .text._Z9tms_isr_0v + 0x4020a1fc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a1fc tms_isr_0() + *fill* 0x4020a213 0x1 + .text._Z9tms_isr_1v + 0x4020a214 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a214 tms_isr_1() + *fill* 0x4020a22b 0x1 + .text._Z9tms_isr_2v + 0x4020a22c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a22c tms_isr_2() + *fill* 0x4020a243 0x1 + .text._Z9tms_isr_3v + 0x4020a244 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a244 tms_isr_3() + *fill* 0x4020a25b 0x1 + .text._Z9tms_isr_4v + 0x4020a25c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a25c tms_isr_4() + *fill* 0x4020a273 0x1 + .text._Z9tms_isr_5v + 0x4020a274 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a274 tms_isr_5() + *fill* 0x4020a28b 0x1 + .text._Z10tms_isr_12v + 0x4020a28c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a28c tms_isr_12() + *fill* 0x4020a2a3 0x1 + .text._Z10tms_isr_13v + 0x4020a2a4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a2a4 tms_isr_13() + *fill* 0x4020a2bb 0x1 + .text._Z10tms_isr_14v + 0x4020a2bc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a2bc tms_isr_14() + *fill* 0x4020a2d3 0x1 + .text._Z10tms_isr_15v + 0x4020a2d4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020a2d4 tms_isr_15() + *fill* 0x4020a2eb 0x1 + .text._ZN13TasmotaModbusD2Ev + 0x4020a2ec 0x1b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x1f (size before relaxing) + 0x4020a2f0 TasmotaModbus::~TasmotaModbus() + 0x4020a2f0 TasmotaModbus::~TasmotaModbus() + *fill* 0x4020a307 0x1 + .text._ZN13TasmotaModbusD0Ev + 0x4020a308 0x1d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x29 (size before relaxing) + 0x4020a308 TasmotaModbus::~TasmotaModbus() + *fill* 0x4020a325 0x3 + .text._ZN13TasmotaModbusC2Eii + 0x4020a328 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x2c (size before relaxing) + 0x4020a328 TasmotaModbus::TasmotaModbus(int, int) + 0x4020a328 TasmotaModbus::TasmotaModbus(int, int) + .text._Z12CalculateCRCPhh + 0x4020a34c 0x47 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x4020a354 CalculateCRC(unsigned char*, unsigned char) + *fill* 0x4020a393 0x1 + .text._ZN13TasmotaModbus5BeginEli + 0x4020a394 0x2b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x37 (size before relaxing) + 0x4020a394 TasmotaModbus::Begin(long, int) + *fill* 0x4020a3bf 0x1 + .text._ZN13TasmotaModbus4SendEhhtt + 0x4020a3c0 0x5d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x65 (size before relaxing) + 0x4020a3c0 TasmotaModbus::Send(unsigned char, unsigned char, unsigned short, unsigned short) + *fill* 0x4020a41d 0x3 + .text._ZN13TasmotaModbus13ReceiveBufferEPhh + 0x4020a420 0xea .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0xfa (size before relaxing) + 0x4020a420 TasmotaModbus::ReceiveBuffer(unsigned char*, unsigned char) + *fill* 0x4020a50a 0x2 + .text._ZN13TasmotaModbus20Receive16BitRegisterEPt + 0x4020a50c 0x2a .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x32 (size before relaxing) + 0x4020a50c TasmotaModbus::Receive16BitRegister(unsigned short*) + *fill* 0x4020a536 0x2 + .text._ZN12PubSubClientC2ER6Client + 0x4020a538 0x51 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x5d (size before relaxing) + 0x4020a540 PubSubClient::PubSubClient(Client&) + 0x4020a540 PubSubClient::PubSubClient(Client&) + *fill* 0x4020a589 0x3 + .text._ZN12PubSubClient8readByteEPh + 0x4020a58c 0x65 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x75 (size before relaxing) + 0x4020a590 PubSubClient::readByte(unsigned char*) + *fill* 0x4020a5f1 0x3 + .text._ZN12PubSubClient8readByteEPhPt + 0x4020a5f4 0x2f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x33 (size before relaxing) + 0x4020a5f4 PubSubClient::readByte(unsigned char*, unsigned short*) + *fill* 0x4020a623 0x1 + .text._ZN12PubSubClient10readPacketEPh + 0x4020a624 0x183 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x19f (size before relaxing) + 0x4020a624 PubSubClient::readPacket(unsigned char*) + *fill* 0x4020a7a7 0x1 + .text._ZN12PubSubClient5writeEhPht + 0x4020a7a8 0x8d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x91 (size before relaxing) + 0x4020a7a8 PubSubClient::write(unsigned char, unsigned char*, unsigned short) + *fill* 0x4020a835 0x3 + .text._ZN12PubSubClient10disconnectEv + 0x4020a838 0x54 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x58 (size before relaxing) + 0x4020a838 PubSubClient::disconnect() + .text._ZN12PubSubClient7connectEPKcS1_S1_S1_hhS1_ + 0x4020a88c 0x1a5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x1f1 (size before relaxing) + 0x4020a890 PubSubClient::connect(char const*, char const*, char const*, char const*, unsigned char, unsigned char, char const*) + *fill* 0x4020aa31 0x3 + .text._ZN12PubSubClient7publishEPKcPKhjh + 0x4020aa34 0x93 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0xa7 (size before relaxing) + 0x4020aa34 PubSubClient::publish(char const*, unsigned char const*, unsigned int, unsigned char) + *fill* 0x4020aac7 0x1 + .text._ZN12PubSubClient7publishEPKcS1_h + 0x4020aac8 0x35 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x3d (size before relaxing) + 0x4020aac8 PubSubClient::publish(char const*, char const*, unsigned char) + *fill* 0x4020aafd 0x3 + .text._ZN12PubSubClient9subscribeEPKch + 0x4020ab00 0x8c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0xa0 (size before relaxing) + 0x4020ab00 PubSubClient::subscribe(char const*, unsigned char) + .text._ZN12PubSubClient9subscribeEPKc + 0x4020ab8c 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x18 (size before relaxing) + 0x4020ab8c PubSubClient::subscribe(char const*) + .text._ZN12PubSubClient4loopEv + 0x4020aba0 0x1c9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x1ed (size before relaxing) + 0x4020aba0 PubSubClient::loop() + *fill* 0x4020ad69 0x3 + .text._ZN12PubSubClient9setServerEPKct + 0x4020ad6c 0x2c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x30 (size before relaxing) + 0x4020ad6c PubSubClient::setServer(char const*, unsigned short) + .text._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x4020ad98 0x40 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4c (size before relaxing) + 0x4020ad98 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x4020ad98 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + .text._ZN12PubSubClient11setCallbackESt8functionIFvPcPhjEE + 0x4020add8 0x1d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x21 (size before relaxing) + 0x4020add8 PubSubClient::setCallback(std::function) + *fill* 0x4020adf5 0x3 + .text._ZN8EspClass17rtcUserMemoryReadEjPjj + 0x4020adf8 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020adfc EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int) + *fill* 0x4020ae23 0x1 + .text._ZN8EspClass18rtcUserMemoryWriteEjPjj + 0x4020ae24 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020ae28 EspClass::rtcUserMemoryWrite(unsigned int, unsigned int*, unsigned int) + *fill* 0x4020ae4f 0x1 + .text._ZN8EspClass5resetEv + 0x4020ae50 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020ae50 EspClass::reset() + *fill* 0x4020ae5f 0x1 + .text._ZN8EspClass7restartEv + 0x4020ae60 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x21 (size before relaxing) + 0x4020ae60 EspClass::restart() + *fill* 0x4020ae75 0x3 + .text._ZN8EspClass6getVccEv + 0x4020ae78 0x1f .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x23 (size before relaxing) + 0x4020ae78 EspClass::getVcc() + *fill* 0x4020ae97 0x1 + .text._ZN8EspClass11getFreeHeapEv + 0x4020ae98 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020ae98 EspClass::getFreeHeap() + *fill* 0x4020aea7 0x1 + .text._ZN8EspClass9getChipIdEv + 0x4020aea8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020aea8 EspClass::getChipId() + *fill* 0x4020aeb7 0x1 + .text._ZN8EspClass13getSdkVersionEv + 0x4020aeb8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020aeb8 EspClass::getSdkVersion() + *fill* 0x4020aec7 0x1 + .text._ZN8EspClass14getBootVersionEv + 0x4020aec8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020aec8 EspClass::getBootVersion() + *fill* 0x4020aed7 0x1 + .text._ZN8EspClass13getCpuFreqMHzEv + 0x4020aed8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x17 (size before relaxing) + 0x4020aed8 EspClass::getCpuFreqMHz() + *fill* 0x4020aee7 0x1 + .text._ZN8EspClass14getFlashChipIdEv + 0x4020aee8 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020aeec EspClass::getFlashChipId() + *fill* 0x4020aeff 0x1 + .text._ZN8EspClass20getFlashChipRealSizeEv + 0x4020af00 0x1e .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x22 (size before relaxing) + 0x4020af00 EspClass::getFlashChipRealSize() + *fill* 0x4020af1e 0x2 + .text._ZN8EspClass16getFlashChipSizeEv + 0x4020af20 0x39 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020af28 EspClass::getFlashChipSize() + *fill* 0x4020af59 0x3 + .text._ZN8EspClass16getFlashChipModeEv + 0x4020af5c 0x27 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x2b (size before relaxing) + 0x4020af5c EspClass::getFlashChipMode() + *fill* 0x4020af83 0x1 + .text._ZN8EspClass18magicFlashChipSizeEh + 0x4020af84 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x16 (size before relaxing) + 0x4020af84 EspClass::magicFlashChipSize(unsigned char) + *fill* 0x4020af96 0x2 + .text._ZN8EspClass16checkFlashConfigEb + 0x4020af98 0x54 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x6c (size before relaxing) + 0x4020af98 EspClass::checkFlashConfig(bool) + .text._ZN8EspClass14getResetReasonEv + 0x4020afec 0x9b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0xa7 (size before relaxing) + 0x4020b014 EspClass::getResetReason() + *fill* 0x4020b087 0x1 + .text._ZN8EspClass12getResetInfoEv + 0x4020b088 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0xb0 (size before relaxing) + 0x4020b0ac EspClass::getResetInfo() + .text._ZN8EspClass13getSketchSizeEv + 0x4020b12c 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x85 (size before relaxing) + 0x4020b138 EspClass::getSketchSize() + *fill* 0x4020b1a9 0x3 + .text._ZN8EspClass18getFreeSketchSpaceEv + 0x4020b1ac 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x3d (size before relaxing) + 0x4020b1b8 EspClass::getFreeSketchSpace() + *fill* 0x4020b1dd 0x3 + .text._ZN8EspClass16flashEraseSectorEj + 0x4020b1e0 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x44 (size before relaxing) + 0x4020b1e4 EspClass::flashEraseSector(unsigned int) + .text._ZN8EspClass10flashWriteEjPjj + 0x4020b21c 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x51 (size before relaxing) + 0x4020b220 EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) + *fill* 0x4020b265 0x3 + .text._ZN8EspClass9flashReadEjPjj + 0x4020b268 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x51 (size before relaxing) + 0x4020b268 EspClass::flashRead(unsigned int, unsigned int*, unsigned int) + *fill* 0x4020b2ad 0x3 + .text._ZN14HardwareSerialD2Ev + 0x4020b2b0 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x4020b2b4 HardwareSerial::~HardwareSerial() + 0x4020b2b4 HardwareSerial::~HardwareSerial() + *fill* 0x4020b2bb 0x1 + .text._ZN14HardwareSerialD0Ev + 0x4020b2bc 0x17 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x1f (size before relaxing) + 0x4020b2bc HardwareSerial::~HardwareSerial() + *fill* 0x4020b2d3 0x1 + .text._ZN14HardwareSerial5flushEv + 0x4020b2d4 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x2f (size before relaxing) + 0x4020b2d4 HardwareSerial::flush() + *fill* 0x4020b2f7 0x1 + .text._ZN14HardwareSerial5writeEh + 0x4020b2f8 0x37 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3f (size before relaxing) + 0x4020b2f8 HardwareSerial::write(unsigned char) + *fill* 0x4020b32f 0x1 + .text._ZN14HardwareSerial9availableEv + 0x4020b330 0x51 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x61 (size before relaxing) + 0x4020b330 HardwareSerial::available() + *fill* 0x4020b381 0x3 + .text._ZN14HardwareSerial4peekEv + 0x4020b384 0x21 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x25 (size before relaxing) + 0x4020b384 HardwareSerial::peek() + *fill* 0x4020b3a5 0x3 + .text._ZN14HardwareSerial4readEv + 0x4020b3a8 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x4a (size before relaxing) + 0x4020b3a8 HardwareSerial::read() + *fill* 0x4020b3e6 0x2 + .text._ZN14HardwareSerialC2Ei + 0x4020b3e8 0x18 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x1c (size before relaxing) + 0x4020b3e8 HardwareSerial::HardwareSerial(int) + 0x4020b3e8 HardwareSerial::HardwareSerial(int) + .text._ZN14HardwareSerial5beginEm12SerialConfig10SerialModeh + 0x4020b400 0x55 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x6d (size before relaxing) + 0x4020b400 HardwareSerial::begin(unsigned long, SerialConfig, SerialMode, unsigned char) + *fill* 0x4020b455 0x3 + .text._ZN14HardwareSerial6set_txEh + 0x4020b458 0x19 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x1d (size before relaxing) + 0x4020b458 HardwareSerial::set_tx(unsigned char) + *fill* 0x4020b471 0x3 + .text._ZN14HardwareSerial8baudRateEv + 0x4020b474 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x18 (size before relaxing) + 0x4020b474 HardwareSerial::baudRate() + .text.startup._GLOBAL__sub_I__ZN14HardwareSerialC2Ei + 0x4020b488 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x33 (size before relaxing) + *fill* 0x4020b4ab 0x1 + .text.exit._GLOBAL__sub_D__ZN14HardwareSerialC2Ei + 0x4020b4ac 0xf .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x1b (size before relaxing) + *fill* 0x4020b4bb 0x1 + .text._ZNK9IPAddress7printToER5Print + 0x4020b4bc 0x53 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x67 (size before relaxing) + 0x4020b4bc IPAddress::printTo(Print&) const + *fill* 0x4020b50f 0x1 + .text._ZN9IPAddressC2Ev + 0x4020b510 0xb .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0xf (size before relaxing) + 0x4020b510 IPAddress::IPAddress() + 0x4020b510 IPAddress::IPAddress() + *fill* 0x4020b51b 0x1 + .text._ZN9IPAddressC2Ehhhh + 0x4020b51c 0x13 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x17 (size before relaxing) + 0x4020b51c IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) + 0x4020b51c IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) + *fill* 0x4020b52f 0x1 + .text._ZN9IPAddressC2Ej + 0x4020b530 0x9 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0xd (size before relaxing) + 0x4020b530 IPAddress::IPAddress(unsigned int) + 0x4020b530 IPAddress::IPAddress(unsigned int) + *fill* 0x4020b539 0x3 + .text._ZN9IPAddressC2EPKh + 0x4020b53c 0x21 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x25 (size before relaxing) + 0x4020b53c IPAddress::IPAddress(unsigned char const*) + 0x4020b53c IPAddress::IPAddress(unsigned char const*) + *fill* 0x4020b55d 0x3 + .text._ZN9IPAddress8toStringEv + 0x4020b560 0x3b .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x43 (size before relaxing) + 0x4020b564 IPAddress::toString() + *fill* 0x4020b59b 0x1 + .text.startup._GLOBAL__sub_I__ZN9IPAddressC2Ev + 0x4020b59c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x20 (size before relaxing) + .text._ZN10MD5Builder5beginEv + 0x4020b5b8 0x2b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x2f (size before relaxing) + 0x4020b5bc MD5Builder::begin() + *fill* 0x4020b5e3 0x1 + .text._ZN10MD5Builder3addEPht + 0x4020b5e4 0x19 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x4020b5e8 MD5Builder::add(unsigned char*, unsigned short) + *fill* 0x4020b5fd 0x3 + .text._ZN10MD5Builder9calculateEv + 0x4020b600 0x1b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x4020b604 MD5Builder::calculate() + *fill* 0x4020b61b 0x1 + .text._ZN10MD5Builder8getCharsEPc + 0x4020b61c 0x37 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x3b (size before relaxing) + 0x4020b620 MD5Builder::getChars(char*) + *fill* 0x4020b653 0x1 + .text._ZN10MD5Builder8toStringEv + 0x4020b654 0x25 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x31 (size before relaxing) + 0x4020b654 MD5Builder::toString() + *fill* 0x4020b679 0x3 + .text._ZN5Print6printfEPKcz + 0x4020b67c 0xce .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0xda (size before relaxing) + 0x4020b680 Print::printf(char const*, ...) + *fill* 0x4020b74a 0x2 + .text._ZN5Print5printEPKc + 0x4020b74c 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x17 (size before relaxing) + 0x4020b74c Print::print(char const*) + *fill* 0x4020b75b 0x1 + .text._ZN5Print7printlnEv + 0x4020b75c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x1d (size before relaxing) + 0x4020b760 Print::println() + *fill* 0x4020b775 0x3 + .text._ZN5Print7printlnEPK19__FlashStringHelper + 0x4020b778 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x31 (size before relaxing) + 0x4020b778 Print::println(__FlashStringHelper const*) + *fill* 0x4020b79d 0x3 + .text._ZN5Print7printlnEPKc + 0x4020b7a0 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x31 (size before relaxing) + 0x4020b7a0 Print::println(char const*) + *fill* 0x4020b7c5 0x3 + .text._ZN5Print11printNumberEmh + 0x4020b7c8 0x79 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x84 (size before relaxing) + 0x4020b7c8 Print::printNumber(unsigned long, unsigned char) + *fill* 0x4020b841 0x3 + .text._ZN5Print5printEmi + 0x4020b844 0x21 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x28 (size before relaxing) + 0x4020b844 Print::print(unsigned long, int) + *fill* 0x4020b865 0x3 + .text._ZN5Print5printEhi + 0x4020b868 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x19 (size before relaxing) + 0x4020b868 Print::print(unsigned char, int) + *fill* 0x4020b87d 0x3 + .text._ZN5Print5printEji + 0x4020b880 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x17 (size before relaxing) + 0x4020b880 Print::print(unsigned int, int) + *fill* 0x4020b88f 0x1 + .text._ZN6Stream9timedReadEv + 0x4020b890 0x3d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x4d (size before relaxing) + 0x4020b890 Stream::timedRead() + *fill* 0x4020b8cd 0x3 + .text._ZN6Stream9readBytesEPcj + 0x4020b8d0 0x41 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x45 (size before relaxing) + 0x4020b8d0 Stream::readBytes(char*, unsigned int) + *fill* 0x4020b911 0x3 + .text._ZN6Stream15readStringUntilEc + 0x4020b914 0x43 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x57 (size before relaxing) + 0x4020b918 Stream::readStringUntil(char) + *fill* 0x4020b957 0x1 + .text._ZN12StreamString5writeEh + 0x4020b958 0x18 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x1c (size before relaxing) + 0x4020b958 StreamString::write(unsigned char) + .text._ZN12StreamString4peekEv + 0x4020b970 0x29 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x2d (size before relaxing) + 0x4020b970 StreamString::peek() + *fill* 0x4020b999 0x3 + .text._ZN12StreamString4readEv + 0x4020b99c 0x3f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x4b (size before relaxing) + 0x4020b99c StreamString::read() + *fill* 0x4020b9db 0x1 + .text._ZN12StreamString5writeEPKhj + 0x4020b9dc 0x5f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x67 (size before relaxing) + 0x4020b9dc StreamString::write(unsigned char const*, unsigned int) + *fill* 0x4020ba3b 0x1 + .text._ZN12UpdaterClassC2Ev + 0x4020ba3c 0x2f .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x37 (size before relaxing) + 0x4020ba40 UpdaterClass::UpdaterClass() + 0x4020ba40 UpdaterClass::UpdaterClass() + *fill* 0x4020ba6b 0x1 + .text._ZN12UpdaterClass6_resetEv + 0x4020ba6c 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x2f (size before relaxing) + 0x4020ba6c UpdaterClass::_reset() + *fill* 0x4020ba97 0x1 + .text._ZN12UpdaterClass5beginEji + 0x4020ba98 0xb7 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0xf3 (size before relaxing) + 0x4020ba98 UpdaterClass::begin(unsigned int, int) + *fill* 0x4020bb4f 0x1 + .text._ZN12UpdaterClass6setMD5EPKc + 0x4020bb50 0x2d .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x39 (size before relaxing) + 0x4020bb50 UpdaterClass::setMD5(char const*) + *fill* 0x4020bb7d 0x3 + .text._ZN12UpdaterClass12_writeBufferEv + 0x4020bb80 0x89 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0xad (size before relaxing) + 0x4020bb80 UpdaterClass::_writeBuffer() + *fill* 0x4020bc09 0x3 + .text._ZN12UpdaterClass5writeEPhj + 0x4020bc0c 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0xe1 (size before relaxing) + 0x4020bc0c UpdaterClass::write(unsigned char*, unsigned int) + *fill* 0x4020bccd 0x3 + .text._ZN12UpdaterClass10_verifyEndEv + 0x4020bcd0 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x9f (size before relaxing) + 0x4020bcd0 UpdaterClass::_verifyEnd() + *fill* 0x4020bd5b 0x1 + .text._ZN12UpdaterClass3endEb + 0x4020bd5c 0xce .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x10a (size before relaxing) + 0x4020bd5c UpdaterClass::end(bool) + *fill* 0x4020be2a 0x2 + .text._ZN12UpdaterClass11writeStreamER6Stream + 0x4020be2c 0xf1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x121 (size before relaxing) + 0x4020be2c UpdaterClass::writeStream(Stream&) + *fill* 0x4020bf1d 0x3 + .text._ZN12UpdaterClass10printErrorER6Stream + 0x4020bf20 0x117 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x143 (size before relaxing) + 0x4020bf54 UpdaterClass::printError(Stream&) + *fill* 0x4020c037 0x1 + .text.startup._GLOBAL__sub_I__ZN12UpdaterClassC2Ev + 0x4020c038 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x1d (size before relaxing) + *fill* 0x4020c04d 0x3 + .text.exit._GLOBAL__sub_D__ZN12UpdaterClassC2Ev + 0x4020c050 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x1d (size before relaxing) + *fill* 0x4020c069 0x3 + .text._Z6randoml + 0x4020c06c 0x45 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x49 (size before relaxing) + 0x4020c078 random(long) + *fill* 0x4020c0b1 0x3 + .text._Z6randomll + 0x4020c0b4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x27 (size before relaxing) + 0x4020c0b4 random(long, long) + *fill* 0x4020c0d3 0x1 + .text._Z3maplllll + 0x4020c0d4 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x2b (size before relaxing) + 0x4020c0d4 map(long, long, long, long, long) + *fill* 0x4020c0fb 0x1 + .text._ZN6StringD2Ev + 0x4020c0fc 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x29 (size before relaxing) + 0x4020c0fc String::~String() + 0x4020c0fc String::~String() + *fill* 0x4020c121 0x3 + .text._ZN6String10invalidateEv + 0x4020c124 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x29 (size before relaxing) + 0x4020c124 String::invalidate() + *fill* 0x4020c149 0x3 + .text._ZN6String12changeBufferEj + 0x4020c14c 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x5b (size before relaxing) + 0x4020c14c String::changeBuffer(unsigned int) + *fill* 0x4020c19b 0x1 + .text._ZN6String7reserveEj + 0x4020c19c 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x37 (size before relaxing) + 0x4020c19c String::reserve(unsigned int) + *fill* 0x4020c1cf 0x1 + .text._ZN6String4copyEPKcj + 0x4020c1d0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4f (size before relaxing) + 0x4020c1d0 String::copy(char const*, unsigned int) + *fill* 0x4020c20f 0x1 + .text._ZN6StringC2EPKc + 0x4020c210 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x3b (size before relaxing) + 0x4020c210 String::String(char const*) + 0x4020c210 String::String(char const*) + *fill* 0x4020c243 0x1 + .text._ZN6String4copyEPK19__FlashStringHelperj + 0x4020c244 0x43 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x57 (size before relaxing) + 0x4020c244 String::copy(__FlashStringHelper const*, unsigned int) + *fill* 0x4020c287 0x1 + .text._ZN6String4moveERS_ + 0x4020c288 0x4e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x56 (size before relaxing) + 0x4020c288 String::move(String&) + *fill* 0x4020c2d6 0x2 + .text._ZN6StringaSERKS_ + 0x4020c2d8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x39 (size before relaxing) + 0x4020c2d8 String::operator=(String const&) + *fill* 0x4020c305 0x3 + .text._ZN6StringC2ERKS_ + 0x4020c308 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x1f (size before relaxing) + 0x4020c308 String::String(String const&) + 0x4020c308 String::String(String const&) + *fill* 0x4020c31f 0x1 + .text._ZN6StringaSEOS_ + 0x4020c320 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x21 (size before relaxing) + 0x4020c320 String::operator=(String&&) + *fill* 0x4020c33d 0x3 + .text._ZN6StringaSEPKc + 0x4020c340 0x35 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x41 (size before relaxing) + 0x4020c340 String::operator=(char const*) + *fill* 0x4020c375 0x3 + .text._ZN6StringC2Ehh + 0x4020c378 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x3b (size before relaxing) + 0x4020c378 String::String(unsigned char, unsigned char) + 0x4020c378 String::String(unsigned char, unsigned char) + *fill* 0x4020c3a7 0x1 + .text._ZN6StringC2Eih + 0x4020c3a8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x39 (size before relaxing) + 0x4020c3a8 String::String(int, unsigned char) + 0x4020c3a8 String::String(int, unsigned char) + *fill* 0x4020c3d5 0x3 + .text._ZN6StringC2Ejh + 0x4020c3d8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x39 (size before relaxing) + 0x4020c3d8 String::String(unsigned int, unsigned char) + 0x4020c3d8 String::String(unsigned int, unsigned char) + *fill* 0x4020c405 0x3 + .text._ZN6StringC2Emh + 0x4020c408 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x39 (size before relaxing) + 0x4020c408 String::String(unsigned long, unsigned char) + 0x4020c408 String::String(unsigned long, unsigned char) + *fill* 0x4020c435 0x3 + .text._ZN6StringaSEPK19__FlashStringHelper + 0x4020c438 0x37 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4f (size before relaxing) + 0x4020c438 String::operator=(__FlashStringHelper const*) + *fill* 0x4020c46f 0x1 + .text._ZN6StringC2EPK19__FlashStringHelper + 0x4020c470 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x1f (size before relaxing) + 0x4020c470 String::String(__FlashStringHelper const*) + 0x4020c470 String::String(__FlashStringHelper const*) + *fill* 0x4020c487 0x1 + .text._ZN6String6concatEPKcj + 0x4020c488 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x55 (size before relaxing) + 0x4020c488 String::concat(char const*, unsigned int) + *fill* 0x4020c4d1 0x3 + .text._ZN6String6concatERKS_ + 0x4020c4d4 0x18 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x1c (size before relaxing) + 0x4020c4d4 String::concat(String const&) + .text._ZN6String6concatEPKc + 0x4020c4ec 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x35 (size before relaxing) + 0x4020c4ec String::concat(char const*) + *fill* 0x4020c519 0x3 + .text._ZN6String6concatEc + 0x4020c51c 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x23 (size before relaxing) + 0x4020c51c String::concat(char) + *fill* 0x4020c537 0x1 + .text._ZN6String6concatEh + 0x4020c538 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x3f (size before relaxing) + 0x4020c538 String::concat(unsigned char) + *fill* 0x4020c567 0x1 + .text._ZN6String6concatEi + 0x4020c568 0x2e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x3e (size before relaxing) + 0x4020c568 String::concat(int) + *fill* 0x4020c596 0x2 + .text._ZN6String6concatEPK19__FlashStringHelper + 0x4020c598 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x6f (size before relaxing) + 0x4020c598 String::concat(__FlashStringHelper const*) + *fill* 0x4020c5ef 0x1 + .text._ZplRK15StringSumHelperRK6String + 0x4020c5f0 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x33 (size before relaxing) + 0x4020c5f0 operator+(StringSumHelper const&, String const&) + *fill* 0x4020c617 0x1 + .text._ZplRK15StringSumHelperPKc + 0x4020c618 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x43 (size before relaxing) + 0x4020c618 operator+(StringSumHelper const&, char const*) + *fill* 0x4020c648 0x0 + .text._ZplRK15StringSumHelperPK19__FlashStringHelper + 0x4020c648 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x2d (size before relaxing) + 0x4020c648 operator+(StringSumHelper const&, __FlashStringHelper const*) + *fill* 0x4020c669 0x3 + .text._ZNK6String9compareToERKS_ + 0x4020c66c 0x41 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x45 (size before relaxing) + 0x4020c66c String::compareTo(String const&) const + *fill* 0x4020c6ad 0x3 + .text._ZNK6String6equalsERKS_ + 0x4020c6b0 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x2d (size before relaxing) + 0x4020c6b0 String::equals(String const&) const + *fill* 0x4020c6d9 0x3 + .text._ZNK6String6equalsEPKc + 0x4020c6dc 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x42 (size before relaxing) + 0x4020c6dc String::equals(char const*) const + *fill* 0x4020c71a 0x2 + .text._ZNK6String16equalsIgnoreCaseERKS_ + 0x4020c71c 0x55 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x61 (size before relaxing) + 0x4020c71c String::equalsIgnoreCase(String const&) const + *fill* 0x4020c771 0x3 + .text._ZNK6String10startsWithERKS_j + 0x4020c774 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020c778 String::startsWith(String const&, unsigned int) const + *fill* 0x4020c7b3 0x1 + .text._ZNK6String10startsWithERKS_ + 0x4020c7b4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x23 (size before relaxing) + 0x4020c7b4 String::startsWith(String const&) const + *fill* 0x4020c7d3 0x1 + .text._ZNK6String8endsWithERKS_ + 0x4020c7d4 0x38 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x3c (size before relaxing) + 0x4020c7d4 String::endsWith(String const&) const + .text._ZNK6String6charAtEj + 0x4020c80c 0xf .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x17 (size before relaxing) + 0x4020c80c String::charAt(unsigned int) const + *fill* 0x4020c81b 0x1 + .text._ZNK6String7indexOfEcj + 0x4020c81c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x35 (size before relaxing) + 0x4020c81c String::indexOf(char, unsigned int) const + *fill* 0x4020c84d 0x3 + .text._ZNK6String7indexOfEc + 0x4020c850 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x1b (size before relaxing) + 0x4020c850 String::indexOf(char) const + *fill* 0x4020c867 0x1 + .text._ZNK6String7indexOfERKS_j + 0x4020c868 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x35 (size before relaxing) + 0x4020c868 String::indexOf(String const&, unsigned int) const + *fill* 0x4020c899 0x3 + .text._ZNK6String7indexOfERKS_ + 0x4020c89c 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x18 (size before relaxing) + 0x4020c89c String::indexOf(String const&) const + .text._ZNK6String11lastIndexOfERKS_j + 0x4020c8b0 0x62 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x66 (size before relaxing) + 0x4020c8b0 String::lastIndexOf(String const&, unsigned int) const + *fill* 0x4020c912 0x2 + .text._ZNK6String9substringEjj + 0x4020c914 0x6a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x72 (size before relaxing) + 0x4020c918 String::substring(unsigned int, unsigned int) const + *fill* 0x4020c97e 0x2 + .text._ZN6String7replaceERKS_S1_ + 0x4020c980 0x15c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x188 (size before relaxing) + 0x4020c980 String::replace(String const&, String const&) + .text._ZN6String6removeEjj + 0x4020cadc 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020cae0 String::remove(unsigned int, unsigned int) + *fill* 0x4020cb25 0x3 + .text._ZN6String6removeEj + 0x4020cb28 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x18 (size before relaxing) + 0x4020cb28 String::remove(unsigned int) + .text._ZN6String11toLowerCaseEv + 0x4020cb3c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x2f (size before relaxing) + 0x4020cb3c String::toLowerCase() + *fill* 0x4020cb64 0x0 + .text._ZN6String11toUpperCaseEv + 0x4020cb64 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x2f (size before relaxing) + 0x4020cb64 String::toUpperCase() + *fill* 0x4020cb8c 0x0 + .text._ZN6String4trimEv + 0x4020cb8c 0x77 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x87 (size before relaxing) + 0x4020cb8c String::trim() + *fill* 0x4020cc03 0x1 + .text._ZNK6String5toIntEv + 0x4020cc04 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x1f (size before relaxing) + 0x4020cc04 String::toInt() const + *fill* 0x4020cc1f 0x1 + .text._Znwj 0x4020cc20 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x17 (size before relaxing) + 0x4020cc20 operator new(unsigned int) + *fill* 0x4020cc2f 0x1 + .text._Znaj 0x4020cc30 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x17 (size before relaxing) + 0x4020cc30 operator new[](unsigned int) + *fill* 0x4020cc3f 0x1 + .text._ZdlPv 0x4020cc40 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x17 (size before relaxing) + 0x4020cc40 operator delete(void*) + *fill* 0x4020cc4f 0x1 + .text._ZdaPv 0x4020cc50 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x17 (size before relaxing) + 0x4020cc50 operator delete[](void*) + *fill* 0x4020cc5f 0x1 + .text.__cxa_pure_virtual + 0x4020cc60 0x18 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x20 (size before relaxing) + 0x4020cc68 __cxa_pure_virtual + .text._ZSt25__throw_bad_function_callv + 0x4020cc78 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x20 (size before relaxing) + 0x4020cc7c std::__throw_bad_function_call() + .text.crc_update + 0x4020cc8c 0x3c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x4020cc90 crc_update + .text.eboot_command_calculate_crc32 + 0x4020ccc8 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x1d (size before relaxing) + 0x4020ccc8 eboot_command_calculate_crc32 + *fill* 0x4020cce1 0x3 + .text.eboot_command_read + 0x4020cce4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x6b (size before relaxing) + 0x4020ccf4 eboot_command_read + *fill* 0x4020cd43 0x1 + .text.eboot_command_write + 0x4020cd44 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x51 (size before relaxing) + 0x4020cd44 eboot_command_write + *fill* 0x4020cd7d 0x3 + .text._ZL9loop_taskP11ETSEventTag + 0x4020cd80 0x5a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x66 (size before relaxing) + *fill* 0x4020cdda 0x2 + .text.esp_yield + 0x4020cddc 0x29 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x31 (size before relaxing) + 0x4020cde0 esp_yield + *fill* 0x4020ce05 0x3 + .text.esp_schedule + 0x4020ce08 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020ce0c esp_schedule + .text._ZL12loop_wrapperv + 0x4020ce24 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x54 (size before relaxing) + .text.__yield 0x4020ce58 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x53 (size before relaxing) + 0x4020ce5c __yield + 0x4020ce5c yield + *fill* 0x4020ce8c 0x0 + .text.optimistic_yield + 0x4020ce8c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x49 (size before relaxing) + 0x4020ce8c optimistic_yield + *fill* 0x4020cebd 0x3 + .text._Z9init_donev + 0x4020cec0 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x65 (size before relaxing) + 0x4020ced4 init_done() + *fill* 0x4020cf15 0x3 + .text.user_init + 0x4020cf18 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x8d (size before relaxing) + 0x4020cf30 user_init + *fill* 0x4020cf7d 0x3 + .text.atol 0x4020cf80 0x13 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x1b (size before relaxing) + 0x4020cf80 atol + *fill* 0x4020cf93 0x1 + .text.atoi 0x4020cf94 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x17 (size before relaxing) + 0x4020cf94 atoi + *fill* 0x4020cfa3 0x1 + .text.itoa 0x4020cfa4 0x82 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x8a (size before relaxing) + 0x4020cfa8 itoa + *fill* 0x4020d026 0x2 + .text.utoa 0x4020d028 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x78 (size before relaxing) + 0x4020d028 utoa + .text.ultoa 0x4020d094 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x78 (size before relaxing) + 0x4020d094 ultoa + .text.dtostrf 0x4020d100 0x209 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x255 (size before relaxing) + 0x4020d118 dtostrf + *fill* 0x4020d309 0x3 + .text.uart_write_char_d + 0x4020d30c 0x5b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020d31c uart_write_char_d + *fill* 0x4020d367 0x1 + .text.__wrap_system_restart_local + 0x4020d368 0x1a7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x1eb (size before relaxing) + 0x4020d3b4 __wrap_system_restart_local + *fill* 0x4020d50f 0x1 + .text.abort 0x4020d510 0xb .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0xf (size before relaxing) + 0x4020d510 abort + *fill* 0x4020d51b 0x1 + .text.__panic_func + 0x4020d51c 0x1a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x36 (size before relaxing) + 0x4020d51c __panic_func + *fill* 0x4020d536 0x2 + .text.twi_delay + 0x4020d538 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .text.twi_write_stop + 0x4020d550 0x9d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0xb5 (size before relaxing) + *fill* 0x4020d5ed 0x3 + .text.twi_write_bit + 0x4020d5f0 0x92 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0xb6 (size before relaxing) + *fill* 0x4020d682 0x2 + .text.twi_read_bit + 0x4020d684 0x93 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0xb7 (size before relaxing) + *fill* 0x4020d717 0x1 + .text.twi_write_byte + 0x4020d718 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x45 (size before relaxing) + *fill* 0x4020d751 0x3 + .text.twi_write_start + 0x4020d754 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x8d (size before relaxing) + *fill* 0x4020d7b9 0x3 + .text.twi_init + 0x4020d7bc 0x3d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x5d (size before relaxing) + 0x4020d7bc twi_init + *fill* 0x4020d7f9 0x3 + .text.twi_writeTo + 0x4020d7fc 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x105 (size before relaxing) + 0x4020d7fc twi_writeTo + *fill* 0x4020d8bd 0x3 + .text.twi_readFrom + 0x4020d8c0 0x103 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x15b (size before relaxing) + 0x4020d8c0 twi_readFrom + *fill* 0x4020d9c3 0x1 + .text.delay_end + 0x4020d9c4 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x17 (size before relaxing) + 0x4020d9c4 delay_end + *fill* 0x4020d9d3 0x1 + .text.micros_overflow_tick + 0x4020d9d4 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x35 (size before relaxing) + 0x4020d9dc micros_overflow_tick + *fill* 0x4020da05 0x3 + .text.delay 0x4020da08 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x6f (size before relaxing) + 0x4020da10 delay + *fill* 0x4020da5d 0x3 + .text.init 0x4020da60 0x45 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x59 (size before relaxing) + 0x4020da6c init + *fill* 0x4020daa5 0x3 + .text.pulseIn 0x4020daa8 0xd7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + 0x10b (size before relaxing) + 0x4020dab0 pulseIn + *fill* 0x4020db7f 0x1 + .text.shiftIn 0x4020db80 0x74 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + 0x84 (size before relaxing) + 0x4020db80 shiftIn + .text.shiftOut + 0x4020dbf4 0x6a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + 0x76 (size before relaxing) + 0x4020dbf4 shiftOut + *fill* 0x4020dc5e 0x2 + .text.xPortGetFreeHeapSize + 0x4020dc60 0xf .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + 0x17 (size before relaxing) + 0x4020dc60 xPortGetFreeHeapSize + *fill* 0x4020dc6f 0x1 + .text.base64_encode_value + 0x4020dc70 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020dc74 base64_encode_value + .text.base64_encode_block + 0x4020dc88 0x10d .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x125 (size before relaxing) + 0x4020dc88 base64_encode_block + *fill* 0x4020dd95 0x3 + .text.base64_encode_blockend + 0x4020dd98 0x56 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x5e (size before relaxing) + 0x4020dd98 base64_encode_blockend + *fill* 0x4020ddee 0x2 + .text.base64_encode_chars + 0x4020ddf0 0x31 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x3d (size before relaxing) + 0x4020ddf0 base64_encode_chars + *fill* 0x4020de21 0x3 + .text.strncat 0x4020de24 0x4a .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4e (size before relaxing) + 0x4020de24 strncat + *fill* 0x4020de6e 0x2 + .text.strcat 0x4020de70 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x31 (size before relaxing) + 0x4020de70 strcat + *fill* 0x4020de95 0x3 + .text.strtok 0x4020de98 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x1d (size before relaxing) + 0x4020de9c strtok + *fill* 0x4020deb1 0x3 + .text.strdup 0x4020deb4 0x35 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x45 (size before relaxing) + 0x4020deb4 strdup + *fill* 0x4020dee9 0x3 + .text.isalnum 0x4020deec 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x2d (size before relaxing) + 0x4020deec isalnum + *fill* 0x4020df11 0x3 + .text.isprint 0x4020df14 0x18 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x20 (size before relaxing) + 0x4020df14 isprint + .text.isspace 0x4020df2c 0x22 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020df30 isspace + *fill* 0x4020df4e 0x2 + .text.strcasecmp + 0x4020df50 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x47 (size before relaxing) + 0x4020df50 strcasecmp + *fill* 0x4020df8b 0x1 + .text.__errno 0x4020df8c 0x9 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020df90 __errno + *fill* 0x4020df95 0x3 + .text.strtol 0x4020df98 0x156 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x176 (size before relaxing) + 0x4020df98 strtol + *fill* 0x4020e0ee 0x2 + .text.strtoul 0x4020e0f0 0x137 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x14f (size before relaxing) + 0x4020e0f0 strtoul + *fill* 0x4020e227 0x1 + .text._Z13strncasecmp_PPKcS0_j + 0x4020e228 0x79 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x85 (size before relaxing) + 0x4020e228 strncasecmp_P(char const*, char const*, unsigned int) + *fill* 0x4020e2a1 0x3 + .text._Z11vsnprintf_PPcjPKc13__va_list_tag + 0x4020e2a4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x83 (size before relaxing) + 0x4020e2a4 vsnprintf_P(char*, unsigned int, char const*, __va_list_tag) + *fill* 0x4020e303 0x1 + .text._Z10snprintf_PPcjPKcz + 0x4020e304 0x23 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x2b (size before relaxing) + 0x4020e304 snprintf_P(char*, unsigned int, char const*, ...) + *fill* 0x4020e327 0x1 + .text.uart1_write_char + 0x4020e328 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x47 (size before relaxing) + *fill* 0x4020e363 0x1 + .text.uart0_write_char + 0x4020e364 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x47 (size before relaxing) + *fill* 0x4020e39f 0x1 + .text.uart_write_char + 0x4020e3a0 0x37 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x3f (size before relaxing) + 0x4020e3a0 uart_write_char + *fill* 0x4020e3d7 0x1 + .text.uart_rx_available + 0x4020e3d8 0x28 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x2c (size before relaxing) + 0x4020e3d8 uart_rx_available + .text.uart_read_char + 0x4020e400 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4f (size before relaxing) + 0x4020e400 uart_read_char + *fill* 0x4020e443 0x1 + .text.uart_wait_tx_empty + 0x4020e444 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4b (size before relaxing) + 0x4020e444 uart_wait_tx_empty + *fill* 0x4020e487 0x1 + .text.uart_flush + 0x4020e488 0x6a .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020e494 uart_flush + *fill* 0x4020e4f2 0x2 + .text.uart_set_baudrate + 0x4020e4f4 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x42 (size before relaxing) + 0x4020e4fc uart_set_baudrate + *fill* 0x4020e532 0x2 + .text.uart_init + 0x4020e534 0x135 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x165 (size before relaxing) + 0x4020e53c uart_init + *fill* 0x4020e669 0x3 + .text.uart_set_tx + 0x4020e66c 0x53 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x67 (size before relaxing) + 0x4020e66c uart_set_tx + *fill* 0x4020e6bf 0x1 + .text.uart_set_debug + 0x4020e6c0 0x54 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x64 (size before relaxing) + 0x4020e6d0 uart_set_debug + .text.uart_get_debug + 0x4020e714 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0xb (size before relaxing) + 0x4020e714 uart_get_debug + *fill* 0x4020e71b 0x1 + .text.umm_disconnect_from_free_list + 0x4020e71c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x4020e77e 0x2 + .text.umm_assimilate_up + 0x4020e780 0x82 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x8a (size before relaxing) + *fill* 0x4020e802 0x2 + .text.umm_assimilate_down + 0x4020e804 0x55 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x59 (size before relaxing) + *fill* 0x4020e859 0x3 + .text._umm_free + 0x4020e85c 0xcb .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0xe7 (size before relaxing) + *fill* 0x4020e927 0x1 + .text.umm_make_new_block$constprop$0 + 0x4020e928 0x5a .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x5e (size before relaxing) + *fill* 0x4020e982 0x2 + .text.umm_init + 0x4020e984 0x89 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x95 (size before relaxing) + 0x4020e990 umm_init + *fill* 0x4020ea0d 0x3 + .text._umm_malloc + 0x4020ea10 0x13f .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x163 (size before relaxing) + *fill* 0x4020eb4f 0x1 + .text.malloc 0x4020eb50 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x17 (size before relaxing) + 0x4020eb50 malloc + *fill* 0x4020eb5f 0x1 + .text.calloc 0x4020eb60 0x2d .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x35 (size before relaxing) + 0x4020eb60 calloc + *fill* 0x4020eb8d 0x3 + .text.realloc 0x4020eb90 0x168 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x1bf (size before relaxing) + 0x4020eb90 realloc + *fill* 0x4020ecf8 0x0 + .text.free 0x4020ecf8 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x17 (size before relaxing) + 0x4020ecf8 free + *fill* 0x4020ed07 0x1 + .text._Z23run_scheduled_functionsv + 0x4020ed08 0x8a .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0xaa (size before relaxing) + 0x4020ed18 run_scheduled_functions() + *fill* 0x4020ed92 0x2 + .text 0x4020ed94 0x7f .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + 0x83 (size before relaxing) + 0x4020ed98 cont_yield + 0x4020edd0 cont_run + *fill* 0x4020ee13 0x1 + .text._ZN10WiFiServerD2Ev + 0x4020ee14 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020ee18 WiFiServer::~WiFiServer() + 0x4020ee18 WiFiServer::~WiFiServer() + *fill* 0x4020ee1f 0x1 + .text._ZN10WiFiServerD0Ev + 0x4020ee20 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x1f (size before relaxing) + 0x4020ee20 WiFiServer::~WiFiServer() + *fill* 0x4020ee37 0x1 + .text._ZN10WiFiServerC2Et + 0x4020ee38 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x3d (size before relaxing) + 0x4020ee38 WiFiServer::WiFiServer(unsigned short) + 0x4020ee38 WiFiServer::WiFiServer(unsigned short) + *fill* 0x4020ee6d 0x3 + .text._ZN10WiFiServer5closeEv + 0x4020ee70 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x25 (size before relaxing) + 0x4020ee70 WiFiServer::close() + *fill* 0x4020ee91 0x3 + .text._ZN10WiFiServer5beginEv + 0x4020ee94 0x77 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0xa3 (size before relaxing) + 0x4020ee98 WiFiServer::begin() + *fill* 0x4020ef0b 0x1 + .text._ZN10WiFiServer7_acceptEP7tcp_pcba + 0x4020ef0c 0x7d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0xb5 (size before relaxing) + 0x4020ef10 WiFiServer::_accept(tcp_pcb*, signed char) + *fill* 0x4020ef89 0x3 + .text._ZN10WiFiServer9_s_acceptEPvP7tcp_pcba + 0x4020ef8c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x1f (size before relaxing) + 0x4020ef8c WiFiServer::_s_accept(void*, tcp_pcb*, signed char) + *fill* 0x4020efa7 0x1 + .text._ZN10WiFiServer9availableEPh + 0x4020efa8 0x4e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x76 (size before relaxing) + 0x4020efa8 WiFiServer::available(unsigned char*) + *fill* 0x4020eff6 0x2 + .text._ZN15TransportTraitsD2Ev + 0x4020eff8 0xb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020effc TransportTraits::~TransportTraits() + 0x4020effc TransportTraits::~TransportTraits() + *fill* 0x4020f003 0x1 + .text._ZN15TransportTraitsD0Ev + 0x4020f004 0x17 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x1f (size before relaxing) + 0x4020f004 TransportTraits::~TransportTraits() + *fill* 0x4020f01b 0x1 + .text._ZN15TransportTraits6createEv + 0x4020f01c 0x27 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x33 (size before relaxing) + 0x4020f01c TransportTraits::create() + *fill* 0x4020f043 0x1 + .text._ZN10HTTPClientC2Ev + 0x4020f044 0x81 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xad (size before relaxing) + 0x4020f04c HTTPClient::HTTPClient() + 0x4020f04c HTTPClient::HTTPClient() + *fill* 0x4020f0c5 0x3 + .text._ZN10HTTPClient5clearEv + 0x4020f0c8 0x1f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x2b (size before relaxing) + 0x4020f0c8 HTTPClient::clear() + *fill* 0x4020f0e7 0x1 + .text._ZN10HTTPClient13beginInternalE6StringPKc + 0x4020f0e8 0x147 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x213 (size before relaxing) + 0x4020f0e8 HTTPClient::beginInternal(String, char const*) + *fill* 0x4020f22f 0x1 + .text._ZN10HTTPClient3endEv + 0x4020f230 0x57 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x5f (size before relaxing) + 0x4020f230 HTTPClient::end() + *fill* 0x4020f287 0x1 + .text._ZN10HTTPClient12setUserAgentERK6String + 0x4020f288 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x19 (size before relaxing) + 0x4020f288 HTTPClient::setUserAgent(String const&) + *fill* 0x4020f29d 0x3 + .text._ZN10HTTPClient10setTimeoutEt + 0x4020f2a0 0x2b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x37 (size before relaxing) + 0x4020f2a0 HTTPClient::setTimeout(unsigned short) + *fill* 0x4020f2cb 0x1 + .text._ZN10HTTPClient12getStreamPtrEv + 0x4020f2cc 0x19 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x21 (size before relaxing) + 0x4020f2cc HTTPClient::getStreamPtr() + *fill* 0x4020f2e5 0x3 + .text._ZN10HTTPClient13errorToStringEi + 0x4020f2e8 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xcf (size before relaxing) + 0x4020f318 HTTPClient::errorToString(int) + *fill* 0x4020f3a7 0x1 + .text._ZN10HTTPClient9addHeaderERK6StringS2_bb + 0x4020f3a8 0x19c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x274 (size before relaxing) + 0x4020f3c0 HTTPClient::addHeader(String const&, String const&, bool, bool) + .text._ZN10HTTPClient14collectHeadersEPPKcj + 0x4020f544 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xef (size before relaxing) + 0x4020f544 HTTPClient::collectHeaders(char const**, unsigned int) + *fill* 0x4020f603 0x1 + .text._ZN10HTTPClient6headerEPKc + 0x4020f604 0x65 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x79 (size before relaxing) + 0x4020f604 HTTPClient::header(char const*) + *fill* 0x4020f669 0x3 + .text._ZN10HTTPClient9hasHeaderEPKc + 0x4020f66c 0x62 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x66 (size before relaxing) + 0x4020f66c HTTPClient::hasHeader(char const*) + *fill* 0x4020f6ce 0x2 + .text._ZN10HTTPClient7connectEv + 0x4020f6d0 0xaf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xd3 (size before relaxing) + 0x4020f6d0 HTTPClient::connect() + *fill* 0x4020f77f 0x1 + .text._ZN10HTTPClient10sendHeaderEPKc + 0x4020f780 0x1ff .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x33f (size before relaxing) + 0x4020f7b0 HTTPClient::sendHeader(char const*) + *fill* 0x4020f97f 0x1 + .text._ZN10HTTPClient20handleHeaderResponseEv + 0x4020f980 0x254 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x39c (size before relaxing) + 0x4020f998 HTTPClient::handleHeaderResponse() + .text._ZN10HTTPClient11returnErrorEi + 0x4020fbd4 0x2e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x32 (size before relaxing) + 0x4020fbd4 HTTPClient::returnError(int) + *fill* 0x4020fc02 0x2 + .text._ZN10HTTPClient11sendRequestEPKcPhj + 0x4020fc04 0xbb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xf3 (size before relaxing) + 0x4020fc08 HTTPClient::sendRequest(char const*, unsigned char*, unsigned int) + *fill* 0x4020fcbf 0x1 + .text._ZN10HTTPClient3GETEv + 0x4020fcc0 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x21 (size before relaxing) + 0x4020fcc4 HTTPClient::GET() + *fill* 0x4020fcdd 0x3 + .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev + 0x4020fce0 0x21 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x25 (size before relaxing) + 0x4020fce0 std::unique_ptr >::~unique_ptr() + 0x4020fce0 std::unique_ptr >::~unique_ptr() + *fill* 0x4020fd01 0x3 + .text._ZN10HTTPClientD2Ev + 0x4020fd04 0x8f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0xd3 (size before relaxing) + 0x4020fd04 HTTPClient::~HTTPClient() + 0x4020fd04 HTTPClient::~HTTPClient() + *fill* 0x4020fd93 0x1 + .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x4020fd94 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x1f (size before relaxing) + 0x4020fd94 std::unique_ptr >::reset(TransportTraits*) + *fill* 0x4020fdaf 0x1 + .text._ZN10HTTPClient5beginE6String + 0x4020fdb0 0x5e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x92 (size before relaxing) + 0x4020fdb4 HTTPClient::begin(String) + *fill* 0x4020fe0e 0x2 + .text._ZN6base646encodeEPhj + 0x4020fe10 0xa9 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0xe5 (size before relaxing) + 0x4020fe2c base64::encode(unsigned char*, unsigned int) + *fill* 0x4020feb9 0x3 + .text._ZN6base646encodeE6String + 0x4020febc 0x29 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0x2d (size before relaxing) + 0x4020febc base64::encode(String) + *fill* 0x4020fee5 0x3 + .text.__wrap_register_chipv6_phy + 0x4020fee8 0x32 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x42 (size before relaxing) + 0x4020feec __wrap_register_chipv6_phy + *fill* 0x4020ff1a 0x2 + .text.user_rf_pre_init + 0x4020ff1c 0x4b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x66 (size before relaxing) + 0x4020ff24 user_rf_pre_init + *fill* 0x4020ff67 0x0 + *fill* 0x4020ff67 0x0 + *fill* 0x4020ff67 0x1 + .text._ZN6IRrecv12copyIrParamsEPV10irparams_tPS0_ + 0x4020ff68 0x39 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x4020ff68 IRrecv::copyIrParams(irparams_t volatile*, irparams_t*) + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x0 + *fill* 0x4020ffa1 0x3 + .text._ZN6IRsendC2Etb + 0x4020ffa4 0x21 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + 0x4020ffa4 IRsend::IRsend(unsigned short, bool) + 0x4020ffa4 IRsend::IRsend(unsigned short, bool) + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x3 + .text._ZN6Stream9readBytesEPhj + 0x4020ffc8 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x4020ffc8 Stream::readBytes(unsigned char*, unsigned int) + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x0 + *fill* 0x4020ffdb 0x1 + .text._ZN6TickerC2Ev + 0x4020ffdc 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x4020ffdc Ticker::Ticker() + 0x4020ffdc Ticker::Ticker() + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x0 + *fill* 0x4020ffe2 0x2 + .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv + 0x4020ffe4 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020ffe4 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x4020fff9 0x0 + *fill* 0x4020fff9 0x0 + *fill* 0x4020fff9 0x3 + .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info + 0x4020fffc 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020fffc std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + *fill* 0x40210000 0x0 + .text._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ + 0x40210000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210000 std::function::function(std::function const&) + 0x40210000 std::function::function(std::function const&) + *fill* 0x40210021 0x3 + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x40210024 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210024 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + 0x40210024 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + *fill* 0x4021005d 0x0 + *fill* 0x4021005d 0x3 + .text._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ + 0x40210060 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210060 std::function::function(std::function const&) + 0x40210060 std::function::function(std::function const&) + *fill* 0x40210081 0x0 + *fill* 0x40210081 0x3 + .text._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ + 0x40210084 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210084 std::function::function(std::function const&) + 0x40210084 std::function::function(std::function const&) + *fill* 0x402100a5 0x0 + *fill* 0x402100a5 0x3 + .text._ZNSt8functionIFvvEEC2ERKS1_ + 0x402100a8 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402100a8 std::function::function(std::function const&) + 0x402100a8 std::function::function(std::function const&) + *fill* 0x402100c9 0x0 + *fill* 0x402100c9 0x0 + *fill* 0x402100c9 0x3 + .text._ZSt4swapISt9_Any_dataEvRT_S2_ + 0x402100cc 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402100cc void std::swap(std::_Any_data&, std::_Any_data&) + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + *fill* 0x402100e4 0x0 + .text._ZN10WiFiClient5writeEh + 0x402100e4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402100e4 WiFiClient::write(unsigned char) + *fill* 0x402100ff 0x1 + .text._ZN10WiFiClient4peekEv + 0x40210100 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40210100 WiFiClient::peek() + *fill* 0x40210131 0x3 + .text._ZN10WiFiClient9connectedEv + 0x40210134 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40210134 WiFiClient::connected() + *fill* 0x40210163 0x1 + .text._ZN10WiFiClientcvbEv + 0x40210164 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40210164 WiFiClient::operator bool() + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x0 + *fill* 0x4021016f 0x1 + .text._ZN10WiFiClient10setNoDelayEb + 0x40210170 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40210170 WiFiClient::setNoDelay(bool) + *fill* 0x40210193 0x0 + *fill* 0x40210193 0x0 + *fill* 0x40210193 0x0 + *fill* 0x40210193 0x1 + .text._ZN7WiFiUDP4readEPcj + 0x40210194 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40210194 WiFiUDP::read(char*, unsigned int) + *fill* 0x402101a7 0x1 + .text._ZN7WiFiUDP5writeEh + 0x402101a8 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101a8 WiFiUDP::write(unsigned char) + *fill* 0x402101c3 0x1 + .text._ZN7WiFiUDP4readEv + 0x402101c4 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101c4 WiFiUDP::read() + *fill* 0x402101e5 0x3 + .text._ZN7WiFiUDP4peekEv + 0x402101e8 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101e8 WiFiUDP::peek() + *fill* 0x40210205 0x3 + .text._ZN7WiFiUDP5flushEv + 0x40210208 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40210208 WiFiUDP::flush() + *fill* 0x40210217 0x0 + *fill* 0x40210217 0x0 + *fill* 0x40210217 0x0 + *fill* 0x40210217 0x0 + *fill* 0x40210217 0x1 + .text._ZN7WiFiUDP10remotePortEv + 0x40210218 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40210218 WiFiUDP::remotePort() + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x0 + *fill* 0x4021023f 0x1 + .text._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data + 0x40210240 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40210240 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) + *fill* 0x40210266 0x2 + .text._ZN10UdpContext4readEv + 0x40210268 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40210268 UdpContext::read() + *fill* 0x40210288 0x0 + .text._ZN10UdpContext5flushEv + 0x40210288 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40210288 UdpContext::flush() + *fill* 0x40210293 0x0 + *fill* 0x40210293 0x0 + *fill* 0x40210293 0x0 + *fill* 0x40210293 0x1 + .text._ZN13MDNSResponder17_getAnswerFromIdxEi + 0x40210294 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40210294 MDNSResponder::_getAnswerFromIdx(int) + *fill* 0x402102ae 0x0 + *fill* 0x402102ae 0x0 + *fill* 0x402102ae 0x2 + .text._ZN13MDNSResponder14_getNumAnswersEv + 0x402102b0 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402102b0 MDNSResponder::_getNumAnswers() + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x0 + *fill* 0x402102c1 0x3 + .text._ZN14Adafruit_SGP30C2Ev + 0x402102c4 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x402102c4 Adafruit_SGP30::Adafruit_SGP30() + 0x402102c4 Adafruit_SGP30::Adafruit_SGP30() + *fill* 0x402102c6 0x2 + .text._ZN14Adafruit_SGP3011generateCRCEPhh + 0x402102c8 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x402102c8 Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) + *fill* 0x40210304 0x0 + *fill* 0x40210304 0x0 + *fill* 0x40210304 0x0 + *fill* 0x40210304 0x0 + *fill* 0x40210304 0x0 + .text._ZN14RequestHandler9canHandleE10HTTPMethod6String + 0x40210304 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210304 RequestHandler::canHandle(HTTPMethod, String) + .text._ZN14RequestHandler9canUploadE6String + 0x40210308 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210308 RequestHandler::canUpload(String) + .text._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x4021030c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4021030c RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + .text._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x40210310 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210310 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x0 + *fill* 0x40210312 0x2 + .text._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler + 0x40210314 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210314 ESP8266WebServer::_addRequestHandler(RequestHandler*) + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x0 + *fill* 0x40210327 0x1 + .text._ZN16ESP8266WebServer4argsEv + 0x40210328 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210328 ESP8266WebServer::args() + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x0 + *fill* 0x4021032d 0x3 + .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x40210330 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x40210330 DNSServer::setErrorReplyCode(DNSReplyCode const&) + *fill* 0x40210336 0x0 + *fill* 0x40210336 0x2 + .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x40210338 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x40210338 DNSServer::requestIncludesOnlyOneQuestion() + *fill* 0x40210368 0x0 + *fill* 0x40210368 0x0 + *fill* 0x40210368 0x0 + *fill* 0x40210368 0x0 + *fill* 0x40210368 0x0 + .text._ZN8RCSwitch14setPulseLengthEi + 0x40210368 0x5 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40210368 RCSwitch::setPulseLength(int) + *fill* 0x4021036d 0x3 + .text._ZN8RCSwitch17setRepeatTransmitEi + 0x40210370 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40210370 RCSwitch::setRepeatTransmit(int) + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + *fill* 0x40210374 0x0 + .text._ZNK6String14StringIfHelperEv + 0x40210374 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x40210374 String::StringIfHelper() const + *fill* 0x40210376 0x2 + .text._ZN17ESP8266HTTPUpdate12getLastErrorEv + 0x40210378 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x40210378 ESP8266HTTPUpdate::getLastError() + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + *fill* 0x4021037c 0x0 + .text._ZN13TasmotaSerial14isValidGPIOpinEi + 0x4021037c 0x16 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x4021037c TasmotaSerial::isValidGPIOpin(int) + *fill* 0x40210392 0x0 + *fill* 0x40210392 0x0 + *fill* 0x40210392 0x2 + .text._ZN13TasmotaSerial14hardwareSerialEv + 0x40210394 0x5 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40210394 TasmotaSerial::hardwareSerial() + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x0 + *fill* 0x40210399 0x3 + .text._ZN13TasmotaModbus12ReceiveReadyEv + 0x4021039c 0x1e .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x4021039c TasmotaModbus::ReceiveReady() + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x0 + *fill* 0x402103ba 0x2 + .text._ZN12PubSubClient11writeStringEPKcPht + 0x402103bc 0x42 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x402103bc PubSubClient::writeString(char const*, unsigned char*, unsigned short) + *fill* 0x402103fe 0x2 + .text._ZN12PubSubClient9connectedEv + 0x40210400 0x4b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40210400 PubSubClient::connected() + *fill* 0x4021044b 0x0 + *fill* 0x4021044b 0x0 + *fill* 0x4021044b 0x0 + *fill* 0x4021044b 0x0 + *fill* 0x4021044b 0x1 + .text._ZN12PubSubClient5stateEv + 0x4021044c 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4021044c PubSubClient::state() + *fill* 0x40210453 0x1 + .text._ZNSt8functionIFvPcPhjEEC2ERKS3_ + 0x40210454 0x21 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40210454 std::function::function(std::function const&) + 0x40210454 std::function::function(std::function const&) + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x0 + *fill* 0x40210475 0x3 + .text._ZN9IPAddress10fromStringEPKc + 0x40210478 0x5e .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40210478 IPAddress::fromString(char const*) + *fill* 0x402104d6 0x2 + .text._ZN9IPAddressaSEj + 0x402104d8 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x402104d8 IPAddress::operator=(unsigned int) + *fill* 0x402104dc 0x0 + *fill* 0x402104dc 0x0 + *fill* 0x402104dc 0x0 + *fill* 0x402104dc 0x0 + *fill* 0x402104dc 0x0 + *fill* 0x402104dc 0x0 + .text._ZN5Print5writeEPKhj + 0x402104dc 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x402104dc Print::write(unsigned char const*, unsigned int) + *fill* 0x40210518 0x0 + .text._ZN5Print5printEPK19__FlashStringHelper + 0x40210518 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40210518 Print::print(__FlashStringHelper const*) + *fill* 0x40210561 0x0 + *fill* 0x40210561 0x3 + .text._ZN5Print5printEc + 0x40210564 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40210564 Print::print(char) + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x0 + *fill* 0x4021057b 0x1 + .text._ZN6Stream10setTimeoutEm + 0x4021057c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x4021057c Stream::setTimeout(unsigned long) + *fill* 0x40210580 0x0 + .text._ZN12StreamString9availableEv + 0x40210580 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x40210580 StreamString::available() + .text._ZN12StreamString5flushEv + 0x4021058c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x4021058c StreamString::flush() + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x0 + *fill* 0x4021058e 0x2 + .text._ZN12UpdaterClass13_verifyHeaderEh + 0x40210590 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x40210590 UpdaterClass::_verifyHeader(unsigned char) + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x0 + *fill* 0x402105c3 0x1 + .text._ZN6StringC2EOS_ + 0x402105c4 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x402105c4 String::String(String&&) + 0x402105c4 String::String(String&&) + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + *fill* 0x402105e0 0x0 + .text._ZNK6StringixEj + 0x402105e0 0x15 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x402105e0 String::operator[](unsigned int) const + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x0 + *fill* 0x402105f5 0x3 + .text.__cxa_guard_acquire + 0x402105f8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x402105f8 __cxa_guard_acquire + .text.__cxa_guard_release + 0x40210614 0x10 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x40210614 __cxa_guard_release + *fill* 0x40210624 0x0 + *fill* 0x40210624 0x0 + *fill* 0x40210624 0x0 + *fill* 0x40210624 0x0 + .text.initVariant + 0x40210624 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x40210624 initVariant + *fill* 0x40210626 0x2 + .text._Z24preloop_update_frequencyv + 0x40210628 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x40210628 preloop_update_frequency() + *fill* 0x4021062a 0x0 + *fill* 0x4021062a 0x0 + *fill* 0x4021062a 0x0 + *fill* 0x4021062a 0x2 + .text.__gdb_init + 0x4021062c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4021062c gdb_init + 0x4021062c __gdb_init + *fill* 0x4021062e 0x0 + *fill* 0x4021062e 0x2 + .text.__gdb_do_break + 0x40210630 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x40210630 __gdb_do_break + 0x40210630 gdb_do_break + *fill* 0x40210632 0x0 + *fill* 0x40210632 0x0 + *fill* 0x40210632 0x0 + *fill* 0x40210632 0x2 + .text.reverse 0x40210634 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x40210634 reverse + *fill* 0x4021064d 0x0 + *fill* 0x4021064d 0x0 + *fill* 0x4021064d 0x0 + *fill* 0x4021064d 0x3 + .text.__custom_crash_callback + 0x40210650 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x40210650 custom_crash_callback + 0x40210650 __custom_crash_callback + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x0 + *fill* 0x40210652 0x2 + .text.base64_init_encodestate + 0x40210654 0xb .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x40210654 base64_init_encodestate + *fill* 0x4021065f 0x0 + *fill* 0x4021065f 0x0 + *fill* 0x4021065f 0x0 + *fill* 0x4021065f 0x1 + .text.strchr 0x40210660 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210660 strchr + .text.strrchr 0x40210674 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210674 strrchr + *fill* 0x4021068d 0x0 + *fill* 0x4021068d 0x0 + *fill* 0x4021068d 0x3 + .text.strtok_r + 0x40210690 0x56 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210690 strtok_r + *fill* 0x402106e6 0x0 + *fill* 0x402106e6 0x0 + *fill* 0x402106e6 0x2 + .text.isalpha 0x402106e8 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x402106e8 isalpha + *fill* 0x402106fc 0x0 + .text.iscntrl 0x402106fc 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x402106fc iscntrl + *fill* 0x40210719 0x0 + *fill* 0x40210719 0x3 + .text.isxdigit + 0x4021071c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4021071c isxdigit + .text.tolower 0x40210738 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210738 tolower + *fill* 0x40210746 0x0 + *fill* 0x40210746 0x2 + .text.toupper 0x40210748 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210748 toupper + *fill* 0x40210756 0x2 + .text.isblank 0x40210758 0x10 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210758 isblank + *fill* 0x40210768 0x0 + .text.strlcpy 0x40210768 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40210768 strlcpy + *fill* 0x402107a3 0x0 + *fill* 0x402107a3 0x0 + *fill* 0x402107a3 0x1 + .text._Z9strnlen_PPKcj + 0x402107a4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x402107a4 strnlen_P(char const*, unsigned int) + *fill* 0x402107cd 0x3 + .text._Z8strstr_PPKcS0_ + 0x402107d0 0x57 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x402107d0 strstr_P(char const*, char const*) + *fill* 0x40210827 0x1 + .text._Z8memcpy_PPvPKvj + 0x40210828 0x24 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x40210828 memcpy_P(void*, void const*, unsigned int) + .text._Z9strncpy_PPcPKcj + 0x4021084c 0x2e .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4021084c strncpy_P(char*, char const*, unsigned int) + *fill* 0x4021087a 0x2 + .text._Z9strncat_PPcPKcj + 0x4021087c 0x4a .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4021087c strncat_P(char*, char const*, unsigned int) + *fill* 0x402108c6 0x2 + .text._Z9strncmp_PPKcS0_j + 0x402108c8 0x44 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x402108c8 strncmp_P(char const*, char const*, unsigned int) + *fill* 0x4021090c 0x0 + *fill* 0x4021090c 0x0 + *fill* 0x4021090c 0x0 + .text.uart_ignore_char + 0x4021090c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x0 + *fill* 0x4021090e 0x2 + .text.uart_get_baudrate + 0x40210910 0x6 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x40210910 uart_get_baudrate + *fill* 0x40210916 0x0 + *fill* 0x40210916 0x0 + *fill* 0x40210916 0x2 + .text.uart_tx_enabled + 0x40210918 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x40210918 uart_tx_enabled + *fill* 0x4021091f 0x1 + .text.uart_rx_enabled + 0x40210920 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x40210920 uart_rx_enabled + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x0 + *fill* 0x40210927 0x1 + .text._ZNSt8functionIFvvEE4swapERS1_ + 0x40210928 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x40210928 std::function::swap(std::function&) + *fill* 0x40210950 0x0 + *fill* 0x40210950 0x0 + *fill* 0x40210950 0x0 + .text._ZN10WiFiServer5writeEh + 0x40210950 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x40210950 WiFiServer::write(unsigned char) + *fill* 0x4021096b 0x1 + .text._ZN10WiFiServer5writeEPKhj + 0x4021096c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4021096c WiFiServer::write(unsigned char const*, unsigned int) + .text._ZN10WiFiServer10_s_discardEPvP13ClientContext + 0x40210970 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x40210970 WiFiServer::_s_discard(void*, ClientContext*) + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x0 + *fill* 0x40210972 0x2 + .text._ZN15TransportTraits6verifyER10WiFiClientPKc + 0x40210974 0x4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40210974 TransportTraits::verify(WiFiClient&, char const*) + *fill* 0x40210978 0x0 + *fill* 0x40210978 0x0 + .text._ZNKSt14default_deleteI10WiFiClientEclEPS0_$isra$5 + 0x40210978 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x4021098d 0x3 + .text._ZNKSt14default_deleteI15TransportTraitsEclEPS0_$isra$6 + 0x40210990 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x402109a5 0x0 + *fill* 0x402109a5 0x0 + *fill* 0x402109a5 0x0 + *fill* 0x402109a5 0x3 + .text._ZN10HTTPClient9connectedEv + 0x402109a8 0x3c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x402109a8 HTTPClient::connected() + *fill* 0x402109e4 0x0 + *fill* 0x402109e4 0x0 + *fill* 0x402109e4 0x0 + .text._ZN10HTTPClient9useHTTP10Eb + 0x402109e4 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x402109e4 HTTPClient::useHTTP10(bool) + *fill* 0x402109e9 0x3 + .text._ZN10HTTPClient7getSizeEv + 0x402109ec 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x402109ec HTTPClient::getSize() + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x0 + *fill* 0x402109f1 0x3 + .text._Z13__get_rf_modev + 0x402109f4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x402109f4 __get_rf_mode() + *fill* 0x402109f8 0x0 + .text._Z22__run_user_rf_pre_initv + 0x402109f8 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x402109f8 __run_user_rf_pre_init() + *fill* 0x402109fa 0x0 + *.pioenvs/*/lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + *.pioenvs\\*\\lib\*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + *.pioenvs/*/lib/*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + *.pioenvs\\*\\src\\*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + *fill* 0x402109fa 0x2 + .text.timer1_enable + 0x402109fc 0x37 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x40210a04 timer1_enable + *fill* 0x40210a33 0x1 + .text.__pinMode + 0x40210a34 0x393 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x39b (size before relaxing) + 0x40210a50 __pinMode + 0x40210a50 pinMode + *fill* 0x40210dc7 0x1 + .text.initPins + 0x40210dc8 0x78 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x8c (size before relaxing) + 0x40210ddc initPins + .text.pwm_get_mask + 0x40210e40 0x3b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x40210e48 pwm_get_mask + *fill* 0x40210e7b 0x1 + .text.prep_pwm_steps + 0x40210e7c 0x132 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x152 (size before relaxing) + 0x40210e90 prep_pwm_steps + *fill* 0x40210fae 0x2 + .text.pwm_start_timer + 0x40210fb0 0x48 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x54 (size before relaxing) + 0x40210fc0 pwm_start_timer + .text.__analogWrite + 0x40210ff8 0xa8 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0xe0 (size before relaxing) + 0x40210ff8 __analogWrite + 0x40210ff8 analogWrite + .text.__analogWriteFreq + 0x402110a0 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x1f (size before relaxing) + 0x402110a0 __analogWriteFreq + 0x402110a0 analogWriteFreq + *fill* 0x402110b7 0x1 + .text.__analogWriteRange + 0x402110b8 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x1f (size before relaxing) + 0x402110b8 analogWriteRange + 0x402110b8 __analogWriteRange + *fill* 0x402110cf 0x1 + .text._Z22HandlePreflightRequestv + 0x402110d0 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x16b (size before relaxing) + 0x402110f4 HandlePreflightRequest() + *fill* 0x402111ab 0x1 + .text._ZL9WebGetArgPKcPcj + 0x402111ac 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6d (size before relaxing) + *fill* 0x402111f5 0x3 + .text._Z17AriluxRfInterruptv + 0x402111f8 0xfc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x108 (size before relaxing) + 0x40211214 AriluxRfInterrupt() + .text._Z13Tx20StartReadv + 0x402112f4 0x187 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x197 (size before relaxing) + 0x40211314 Tx20StartRead() + *fill* 0x4021147b 0x1 + .text._ZN5Print5writeEPKc + 0x4021147c 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x32 (size before relaxing) + 0x4021147c Print::write(char const*) + *fill* 0x402114aa 0x2 + .text._ZN12PubSubClientD2Ev + 0x402114ac 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37 (size before relaxing) + 0x402114ac PubSubClient::~PubSubClient() + 0x402114ac PubSubClient::~PubSubClient() + *fill* 0x402114d3 0x1 + .text._ZN12PubSubClientD0Ev + 0x402114d4 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x402114d4 PubSubClient::~PubSubClient() + *fill* 0x402114f1 0x3 + .text._ZN11ArduinoJson9JsonArray7invalidEv + 0x402114f4 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x402114fc ArduinoJson::JsonArray::invalid() + *fill* 0x40211533 0x1 + .text._ZN11ArduinoJson10JsonObject7invalidEv + 0x40211534 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x4021153c ArduinoJson::JsonObject::invalid() + *fill* 0x40211573 0x1 + .text._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x40211574 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37 (size before relaxing) + 0x40211574 ArduinoJson::JsonBuffer::createArray() + *fill* 0x4021159f 0x1 + .text._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x402115a0 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37 (size before relaxing) + 0x402115a0 ArduinoJson::JsonBuffer::createObject() + *fill* 0x402115cb 0x1 + .text._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x402115cc 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3b (size before relaxing) + 0x402115d0 ArduinoJson::JsonVariant::variantAsString() const + *fill* 0x40211603 0x1 + .text._Z6FormatPcPKci + 0x40211604 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x175 (size before relaxing) + 0x40211614 Format(char*, char const*, int) + *fill* 0x40211709 0x3 + .text._Z9GetOtaUrlPcj + 0x4021170c 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xaf (size before relaxing) + 0x4021171c GetOtaUrl(char*, unsigned int) + *fill* 0x40211793 0x1 + .text._Z10GetTopic_PPchS_PKc + 0x40211794 0x29f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x413 (size before relaxing) + 0x402117e0 GetTopic_P(char*, unsigned char, char*, char const*) + *fill* 0x40211a33 0x1 + .text._Z16SetLatchingRelaymh + 0x40211a34 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x95 (size before relaxing) + 0x40211a44 SetLatchingRelay(unsigned long, unsigned char) + *fill* 0x40211ac1 0x3 + .text._Z11SetLedPowerh + 0x40211ac4 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3a (size before relaxing) + 0x40211ac8 SetLedPower(unsigned char) + *fill* 0x40211af6 0x2 + .text._Z11GetFanspeedv + 0x40211af8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211afc GetFanspeed() + .text._Z13SetPulseTimerht + 0x40211b10 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x62 (size before relaxing) + 0x40211b14 SetPulseTimer(unsigned char, unsigned short) + *fill* 0x40211b6a 0x2 + .text._Z16MqttShowPWMStatev + 0x40211b6c 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x40211b80 MqttShowPWMState() + *fill* 0x40211bf9 0x3 + .text._Z17GpioSwitchPinModeh + 0x40211bfc 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x75 (size before relaxing) + 0x40211c00 GpioSwitchPinMode(unsigned char) + *fill* 0x40211c65 0x3 + .text._Z17GetRtcSettingsCrcv + 0x40211c68 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211c6c GetRtcSettingsCrc() + .text._Z15RtcSettingsSavev + 0x40211c88 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x59 (size before relaxing) + 0x40211c90 RtcSettingsSave() + *fill* 0x40211cc5 0x3 + .text._Z13OsWatchTickerv + 0x40211cc8 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x58 (size before relaxing) + 0x40211cd0 OsWatchTicker() + .text._Z15RtcSettingsLoadv + 0x40211d04 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa1 (size before relaxing) + 0x40211d04 RtcSettingsLoad() + *fill* 0x40211d79 0x3 + .text._Z15GetRtcRebootCrcv + 0x40211d7c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211d80 GetRtcRebootCrc() + .text._Z13RtcRebootSavev + 0x40211d9c 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x59 (size before relaxing) + 0x40211da0 RtcRebootSave() + *fill* 0x40211dd5 0x3 + .text._Z13RtcRebootLoadv + 0x40211dd8 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x68 (size before relaxing) + 0x40211dd8 RtcRebootLoad() + .text._Z16SetFlashModeDoutv + 0x40211e1c 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xac (size before relaxing) + 0x40211e1c SetFlashModeDout() + .text._Z18SettingsBufferFreev + 0x40211e98 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x40211e9c SettingsBufferFree() + *fill* 0x40211ebd 0x3 + .text._Z14GetSettingsCrcv + 0x40211ec0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37 (size before relaxing) + 0x40211ec4 GetSettingsCrc() + *fill* 0x40211ef3 0x1 + .text._Z19SettingsEraseConfigv + 0x40211ef4 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x40211ef4 SettingsEraseConfig() + *fill* 0x40211f2a 0x2 + .text._Z19SettingsDefaultSet1v + 0x40211f2c 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x40211f34 SettingsDefaultSet1() + *fill* 0x40211f69 0x3 + .text._Z24SettingsDefaultSet_5_8_1v + 0x40211f6c 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3a (size before relaxing) + 0x40211f6c SettingsDefaultSet_5_8_1() + *fill* 0x40211fa2 0x2 + .text._Z25SettingsDefaultSet_5_10_1v + 0x40211fa4 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x61 (size before relaxing) + 0x40211fa4 SettingsDefaultSet_5_10_1() + *fill* 0x40212001 0x3 + .text._Z16SettingsResetStdv + 0x40212004 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x40212008 SettingsResetStd() + *fill* 0x40212049 0x3 + .text._Z16SettingsResetDstv + 0x4021204c 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x4021204c SettingsResetDst() + *fill* 0x4021208d 0x3 + .text._Z26SettingsDefaultSet_5_13_1cv + 0x40212090 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21 (size before relaxing) + 0x40212090 SettingsDefaultSet_5_13_1c() + *fill* 0x402120a5 0x3 + .text._Z11OsWatchInitv + 0x402120a8 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5b (size before relaxing) + 0x402120b8 OsWatchInit() + *fill* 0x402120f3 0x1 + .text._Z11OsWatchLoopv + 0x402120f4 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20 (size before relaxing) + 0x402120f4 OsWatchLoop() + .text._Z14GetResetReasonv + 0x4021210c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5b (size before relaxing) + 0x40212110 GetResetReason() + *fill* 0x4021214f 0x1 + .text._Z9strchrspnPKci + 0x40212150 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x27 (size before relaxing) + 0x40212150 strchrspn(char const*, int) + *fill* 0x4021216f 0x1 + .text._Z12CharToDoublePc + 0x40212170 0xf7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x14f (size before relaxing) + 0x40212174 CharToDouble(char*) + *fill* 0x40212267 0x1 + .text._Z8dtostrfddhPc + 0x40212268 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x71 (size before relaxing) + 0x40212268 dtostrfd(double, unsigned char, char*) + *fill* 0x402122bd 0x3 + .text._Z8UnescapePcPt + 0x402122c0 0xad .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402122c4 Unescape(char*, unsigned short*) + *fill* 0x4021236d 0x3 + .text._Z11RemoveSpacePc + 0x40212370 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x45 (size before relaxing) + 0x40212370 RemoveSpace(char*) + *fill* 0x402123ad 0x3 + .text._Z9UpperCasePcPKc + 0x402123b0 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3e (size before relaxing) + 0x402123b0 UpperCase(char*, char const*) + *fill* 0x402123ea 0x2 + .text._Z11UpperCase_PPcPKc + 0x402123ec 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x402123ec UpperCase_P(char*, char const*) + .text._Z5LTrimPc + 0x40212438 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2b (size before relaxing) + 0x40212438 LTrim(char*) + *fill* 0x4021245c 0x0 + .text._Z4TrimPc + 0x4021245c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x4021245c Trim(char*) + *fill* 0x402124bb 0x1 + .text._Z6subStrPcS_PKci + 0x402124bc 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x73 (size before relaxing) + 0x402124bc subStr(char*, char*, char const*, int) + *fill* 0x4021251f 0x1 + .text._Z19NoAlNumToUnderscorePcPKc + 0x40212520 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x54 (size before relaxing) + 0x40212520 NoAlNumToUnderscore(char*, char const*) + .text._Z8ShortcutPKc + 0x40212570 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x43 (size before relaxing) + 0x40212570 Shortcut(char const*) + *fill* 0x402125af 0x1 + .text._Z7ParseIpPjPKc + 0x402125b0 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x66 (size before relaxing) + 0x402125b0 ParseIp(unsigned int*, char const*) + *fill* 0x4021260a 0x2 + .text._Z19SettingsDefaultSet2v + 0x4021260c 0x5b6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x71e (size before relaxing) + 0x40212748 SettingsDefaultSet2() + *fill* 0x40212bc2 0x2 + .text._Z12NewerVersionPc + 0x40212bc4 0xc6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xfa (size before relaxing) + 0x40212bc4 NewerVersion(char*) + *fill* 0x40212c8a 0x2 + .text._Z14GetPowerDevicePchjh + 0x40212c8c 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x40212c94 GetPowerDevice(char*, unsigned char, unsigned int, unsigned char) + *fill* 0x40212ce3 0x1 + .text._Z11ConvertTempf + 0x40212ce4 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x77 (size before relaxing) + 0x40212cf8 ConvertTemp(float) + *fill* 0x40212d43 0x1 + .text._Z8TempUnitv + 0x40212d44 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x15 (size before relaxing) + 0x40212d44 TempUnit() + *fill* 0x40212d55 0x3 + .text._Z15SetGlobalValuesff + 0x40212d58 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212d68 SetGlobalValues(float, float) + *fill* 0x40212d7e 0x2 + .text._Z17ResetGlobalValuesv + 0x40212d80 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3a (size before relaxing) + 0x40212d80 ResetGlobalValues() + *fill* 0x40212da6 0x2 + .text._Z14FastPrecisePowdd + 0x40212da8 0xe1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x115 (size before relaxing) + 0x40212db0 FastPrecisePow(double, double) + *fill* 0x40212e89 0x3 + .text._Z7SqrtIntj + 0x40212e8c 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3d (size before relaxing) + 0x40212e8c SqrtInt(unsigned int) + *fill* 0x40212ec5 0x3 + .text._Z12RoundSqrtIntj + 0x40212ec8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21 (size before relaxing) + 0x40212ec8 RoundSqrtInt(unsigned int) + *fill* 0x40212ee5 0x3 + .text._Z14GetTextIndexedPcjtPKc + 0x40212ee8 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x64 (size before relaxing) + 0x40212ee8 GetTextIndexed(char*, unsigned int, unsigned short, char const*) + .text._Z14GetCommandCodePcjPKcS1_ + 0x40212f48 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x85 (size before relaxing) + 0x40212f48 GetCommandCode(char*, unsigned int, char const*, char const*) + *fill* 0x40212fc9 0x3 + .text._Z14GetStateNumberPc + 0x40212fcc 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa3 (size before relaxing) + 0x40212fe0 GetStateNumber(char*) + *fill* 0x4021304b 0x1 + .text._Z13SerialSendRawPc + 0x4021304c 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x65 (size before relaxing) + 0x4021304c SerialSendRaw(char*) + *fill* 0x40213095 0x3 + .text._Z9ValidGPIOhh + 0x40213098 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2f (size before relaxing) + 0x40213098 ValidGPIO(unsigned char, unsigned char) + *fill* 0x402130c3 0x1 + .text._Z15TimePassedSincem + 0x402130c4 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2b (size before relaxing) + 0x402130c4 TimePassedSince(unsigned long) + *fill* 0x402130e3 0x1 + .text._Z13GetPulseTimerh + 0x402130e4 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f (size before relaxing) + 0x402130e8 GetPulseTimer(unsigned char) + *fill* 0x4021312f 0x1 + .text._Z11TimeReachedm + 0x40213130 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1f (size before relaxing) + 0x40213130 TimeReached(unsigned long) + *fill* 0x40213147 0x1 + .text._Z19SetNextTimeIntervalRmm + 0x40213148 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x55 (size before relaxing) + 0x40213148 SetNextTimeInterval(unsigned long&, unsigned long) + *fill* 0x4021318d 0x3 + .text._Z11GetFeaturesv + 0x40213190 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402131b0 GetFeatures() + *fill* 0x402131d2 0x2 + .text._Z17WifiConfigCounterv + 0x402131d4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402131d8 WifiConfigCounter() + *fill* 0x402131eb 0x1 + .text._Z16WiFiSetSleepModev + 0x402131ec 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x402131f0 WiFiSetSleepMode() + .text._Z12WifiSetStateh + 0x40213214 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021321c WifiSetState(unsigned char) + *fill* 0x40213256 0x2 + .text._Z9WifiStatev + 0x40213258 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5b (size before relaxing) + 0x4021325c WifiState() + *fill* 0x4021329f 0x1 + .text._Z11WifiConnectv + 0x402132a0 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x70 (size before relaxing) + 0x402132b0 WifiConnect() + .text._Z10EspRestartv + 0x402132f4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x402132f4 EspRestart() + *fill* 0x40213309 0x3 + .text._Z7I2cScanPcj + 0x4021330c 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd0 (size before relaxing) + 0x40213320 I2cScan(char*, unsigned int) + .text._Z19GetBuildDateAndTimev + 0x402133ac 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x10b (size before relaxing) + 0x402133c0 GetBuildDateAndTime() + *fill* 0x40213487 0x1 + .text._Z11GetTimeZonev + 0x40213488 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b (size before relaxing) + 0x40213494 GetTimeZone() + *fill* 0x402134e3 0x1 + .text._Z7GetTimei + 0x402134e4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6d (size before relaxing) + 0x402134f8 GetTime(int) + *fill* 0x40213545 0x3 + .text._Z22GetMinutesPastMidnightv + 0x40213548 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021354c GetMinutesPastMidnight() + *fill* 0x40213567 0x1 + .text._Z9BreakTimejR6TIME_T + 0x40213568 0x17d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b5 (size before relaxing) + 0x40213574 BreakTime(unsigned int, TIME_T&) + *fill* 0x402136e5 0x3 + .text._Z14GetDateAndTimeh + 0x402136e8 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x108 (size before relaxing) + 0x402136f0 GetDateAndTime(unsigned char) + .text._Z9GetUptimev + 0x402137b4 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7d (size before relaxing) + 0x402137b8 GetUptime() + *fill* 0x4021380d 0x3 + .text._Z16GetMinutesUptimev + 0x40213810 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5b (size before relaxing) + 0x40213810 GetMinutesUptime() + *fill* 0x4021385b 0x1 + .text._Z8MakeTimeR6TIME_T + 0x4021385c 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x10c (size before relaxing) + 0x40213868 MakeTime(TIME_T&) + .text._Z10RuleToTime8TimeRulei + 0x40213954 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa2 (size before relaxing) + 0x40213958 RuleToTime(TimeRule, int) + *fill* 0x402139e2 0x2 + .text._Z11MidnightNowv + 0x402139e4 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402139e8 MidnightNow() + *fill* 0x402139f7 0x1 + .text._Z7RtcInitv + 0x402139f8 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x40213a00 RtcInit() + *fill* 0x40213a55 0x3 + .text._Z12SetSeriallogh + 0x40213a58 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25 (size before relaxing) + 0x40213a60 SetSeriallog(unsigned char) + *fill* 0x40213a79 0x3 + .text._Z6GetLoghPPcPj + 0x40213a7c 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x69 (size before relaxing) + 0x40213a84 GetLog(unsigned char, char**, unsigned int*) + *fill* 0x40213ae1 0x3 + .text._Z16PollDnsWebserverv + 0x40213ae4 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x38 (size before relaxing) + 0x40213ae8 PollDnsWebserver() + *fill* 0x40213b09 0x3 + .text._Z9SetHeaderv + 0x40213b0c 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x115 (size before relaxing) + 0x40213b24 SetHeader() + *fill* 0x40213bb1 0x3 + .text._Z15WebAuthenticatev + 0x40213bb4 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x40213bb8 WebAuthenticate() + *fill* 0x40213bdf 0x1 + .text._Z10htmlEscape6String + 0x40213be0 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x207 (size before relaxing) + 0x40213c0c htmlEscape(String) + *fill* 0x40213cff 0x1 + .text._Z14ValidIpAddress6String + 0x40213d00 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x55 (size before relaxing) + 0x40213d00 ValidIpAddress(String) + *fill* 0x40213d4d 0x3 + .text._Z9UrlEncodeRK6String + 0x40213d50 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x84 (size before relaxing) + 0x40213d50 UrlEncode(String const&) + .text._Z15MqttIsConnectedv + 0x40213db0 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x26 (size before relaxing) + 0x40213db4 MqttIsConnected() + *fill* 0x40213dd2 0x2 + .text._Z14MqttDisconnectv + 0x40213dd4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x40213dd4 MqttDisconnect() + *fill* 0x40213de9 0x3 + .text._Z16MqttSubscribeLibPc + 0x40213dec 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31 (size before relaxing) + 0x40213dec MqttSubscribeLib(char*) + *fill* 0x40213e0d 0x3 + .text._Z14MqttPublishLibPKch + 0x40213e10 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x42 (size before relaxing) + 0x40213e10 MqttPublishLib(char const*, unsigned char) + *fill* 0x40213e3e 0x2 + .text._Z8MqttLoopv + 0x40213e40 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x40213e40 MqttLoop() + *fill* 0x40213e55 0x3 + .text._Z17EnergyUpdateTodayv + 0x40213e58 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa7 (size before relaxing) + 0x40213e70 EnergyUpdateToday() + *fill* 0x40213eeb 0x1 + .text._Z15EnergySaveStatev + 0x40213eec 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3d (size before relaxing) + 0x40213eec EnergySaveState() + *fill* 0x40213f19 0x3 + .text._Z12AriluxRfInitv + 0x40213f1c 0x6f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x87 (size before relaxing) + 0x40213f20 AriluxRfInit() + *fill* 0x40213f8b 0x1 + .text._Z15AriluxRfDisablev + 0x40213f8c 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x40213f8c AriluxRfDisable() + *fill* 0x40213fc7 0x1 + .text._Z12LightDiPulseh + 0x40213fc8 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x40213fcc LightDiPulse(unsigned char) + .text._Z14LightDckiPulseh + 0x40214010 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x40214014 LightDckiPulse(unsigned char) + .text._Z16LightMy92x1Writeh + 0x40214058 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa9 (size before relaxing) + 0x40214058 LightMy92x1Write(unsigned char) + *fill* 0x402140e1 0x3 + .text._Z15LightMy92x1Initv + 0x402140e4 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x99 (size before relaxing) + 0x402140ec LightMy92x1Init() + *fill* 0x40214159 0x3 + .text._Z15LightMy92x1Dutyhhhhh + 0x4021415c 0xbc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdc (size before relaxing) + 0x40214160 LightMy92x1Duty(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + .text._Z17LightSetColorTempt + 0x40214218 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9e (size before relaxing) + 0x4021421c LightSetColorTemp(unsigned short) + *fill* 0x402142aa 0x2 + .text._Z17LightGetColorTempv + 0x402142ac 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x74 (size before relaxing) + 0x402142ac LightGetColorTemp() + .text._Z14LightSetDimmerh + 0x40214310 0xf6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x12e (size before relaxing) + 0x4021431c LightSetDimmer(unsigned char) + *fill* 0x40214406 0x2 + .text._Z13LightSetColorv + 0x40214408 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xf6 (size before relaxing) + 0x40214410 LightSetColor() + *fill* 0x402144ca 0x2 + .text._Z14LightSetSignalttt + 0x402144cc 0x8b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x97 (size before relaxing) + 0x402144cc LightSetSignal(unsigned short, unsigned short, unsigned short) + *fill* 0x40214557 0x1 + .text._Z13LightGetColorhPc + 0x40214558 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb7 (size before relaxing) + 0x40214560 LightGetColor(unsigned char, char*) + *fill* 0x402145ef 0x1 + .text._Z9LightFadev + 0x402145f0 0xb5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc5 (size before relaxing) + 0x402145f8 LightFade() + *fill* 0x402146a5 0x3 + .text._Z10LightWheelh + 0x402146a8 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xe4 (size before relaxing) + 0x402146ac LightWheel(unsigned char) + .text._Z15LightCycleColora + 0x40214770 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6d (size before relaxing) + 0x40214774 LightCycleColor(signed char) + *fill* 0x402147c1 0x3 + .text._Z16LightRandomColorv + 0x402147c4 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7c (size before relaxing) + 0x402147c4 LightRandomColor() + .text._Z13LightRgbToHsbv + 0x40214820 0x1d8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x24c (size before relaxing) + 0x4021484c LightRgbToHsb() + .text._Z13LightHsbToRgbv + 0x402149f8 0x1a8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x220 (size before relaxing) + 0x40214a04 LightHsbToRgb() + .text._Z11LightGetHsbPfS_S_b + 0x40214ba0 0x70 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x94 (size before relaxing) + 0x40214ba4 LightGetHsb(float*, float*, float*, bool) + .text._Z10LightStateh + 0x40214c10 0x3a6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4ba (size before relaxing) + 0x40214c54 LightState(unsigned char) + *fill* 0x40214fb6 0x2 + .text._Z13MqttShowStatev + 0x40214fb8 0x1ad .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x269 (size before relaxing) + 0x40214fd8 MqttShowState() + *fill* 0x40215165 0x3 + .text._Z15LightColorEntryPch + 0x40215168 0x1af .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1eb (size before relaxing) + 0x40215180 LightColorEntry(char*, unsigned char) + *fill* 0x40215317 0x1 + .text._Z10IrSendInitv + 0x40215318 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x4021531c IrSendInit() + *fill* 0x4021534a 0x2 + .text._Z13IrReceiveInitv + 0x4021534c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4f (size before relaxing) + 0x40215350 IrReceiveInit() + *fill* 0x40215383 0x1 + .text._Z19rf_decode_and_writePhj + 0x40215384 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8d (size before relaxing) + 0x40215384 rf_decode_and_write(unsigned char*, unsigned int) + *fill* 0x402153f5 0x3 + .text._Z39rf_glue_remnant_with_new_data_and_writePKhPhj + 0x402153f8 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xcf (size before relaxing) + 0x402153f8 rf_glue_remnant_with_new_data_and_write(unsigned char const*, unsigned char*, unsigned int) + *fill* 0x4021548f 0x1 + .text._Z19rf_search_and_writePhj + 0x40215490 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x79 (size before relaxing) + 0x40215490 rf_search_and_write(unsigned char*, unsigned int) + *fill* 0x402154f5 0x3 + .text._Z14rf_erase_flashv + 0x402154f8 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x45 (size before relaxing) + 0x402154f8 rf_erase_flash() + *fill* 0x40215529 0x3 + .text._Z15SnfBrUpdateInitv + 0x4021552c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x35 (size before relaxing) + 0x4021552c SnfBrUpdateInit() + *fill* 0x40215549 0x3 + .text._Z23SonoffBridgeSendCommandh + 0x4021554c 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x4021554c SonoffBridgeSendCommand(unsigned char) + *fill* 0x4021557d 0x3 + .text._Z20SonoffBridgeSendCodej + 0x40215580 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb1 (size before relaxing) + 0x40215580 SonoffBridgeSendCode(unsigned int) + *fill* 0x402155f1 0x3 + .text._Z16SonoffBridgeSendhh + 0x402155f4 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdd (size before relaxing) + 0x402155f4 SonoffBridgeSend(unsigned char, unsigned char) + *fill* 0x402156a5 0x3 + .text._Z17SonoffBridgeLearnh + 0x402156a8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x402156b4 SonoffBridgeLearn(unsigned char) + *fill* 0x402156f7 0x1 + .text._Z19SonoffBridgeCommandv + 0x402156f8 0x488 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4f8 (size before relaxing) + 0x40215744 SonoffBridgeCommand() + .text._Z16SonoffBridgeInitv + 0x40215b80 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25 (size before relaxing) + 0x40215b80 SonoffBridgeInit() + *fill* 0x40215b9d 0x3 + .text._Z22DomoticzBatteryQualityv + 0x40215ba0 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x47 (size before relaxing) + 0x40215ba8 DomoticzBatteryQuality() + *fill* 0x40215bdb 0x1 + .text._Z19DomoticzRssiQualityv + 0x40215bdc 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33 (size before relaxing) + 0x40215bdc DomoticzRssiQuality() + *fill* 0x40215bfb 0x1 + .text._Z15DomoticzCommandv + 0x40215bfc 0x16c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x194 (size before relaxing) + 0x40215c1c DomoticzCommand() + .text._Z21DomoticzHumidityStatePc + 0x40215d68 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2f (size before relaxing) + 0x40215d68 DomoticzHumidityState(char*) + *fill* 0x40215d8f 0x1 + .text._Z16SerialBridgeInitv + 0x40215d90 0x7e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9a (size before relaxing) + 0x40215d98 SerialBridgeInit() + *fill* 0x40215e0e 0x2 + .text._Z19SerialBridgeCommandv + 0x40215e10 0x113 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x15f (size before relaxing) + 0x40215e28 SerialBridgeCommand() + *fill* 0x40215f23 0x1 + .text._Z17JulianischesDatumv + 0x40215f24 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x167 (size before relaxing) + 0x40215f38 JulianischesDatum() + *fill* 0x40216033 0x1 + .text._Z4InPid + 0x40216034 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa3 (size before relaxing) + 0x4021603c InPi(double) + *fill* 0x402160b3 0x1 + .text._Z3epsd 0x402160b4 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x113 (size before relaxing) + 0x402160e0 eps(double) + *fill* 0x40216197 0x1 + .text._Z21BerechneZeitgleichungPdd + 0x40216198 0x36f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49b (size before relaxing) + 0x40216200 BerechneZeitgleichung(double*, double) + *fill* 0x40216507 0x1 + .text._Z12DuskTillDawnPhS_S_S_ + 0x40216508 0x4a5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x62d (size before relaxing) + 0x40216524 DuskTillDawn(unsigned char*, unsigned char*, unsigned char*, unsigned char*) + *fill* 0x402169ad 0x3 + .text._Z17ApplyTimerOffsetsP5Timer + 0x402169b0 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdf (size before relaxing) + 0x402169b8 ApplyTimerOffsets(Timer*) + *fill* 0x40216a8b 0x1 + .text._Z6GetSunh + 0x40216a8c 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x61 (size before relaxing) + 0x40216a90 GetSun(unsigned char) + *fill* 0x40216ad9 0x3 + .text._Z13GetSunMinutesh + 0x40216adc 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40 (size before relaxing) + 0x40216adc GetSunMinutes(unsigned char) + .text._Z20TimerSetRandomWindowh + 0x40216b18 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x57 (size before relaxing) + 0x40216b1c TimerSetRandomWindow(unsigned char) + *fill* 0x40216b67 0x1 + .text._Z21TimerSetRandomWindowsv + 0x40216b68 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x24 (size before relaxing) + 0x40216b68 TimerSetRandomWindows() + .text._Z13PrepShowTimerh + 0x40216b88 0x1ea .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21e (size before relaxing) + 0x40216bb0 PrepShowTimer(unsigned char) + *fill* 0x40216d72 0x2 + .text._Z9RulesInitv + 0x40216d74 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5d (size before relaxing) + 0x40216d78 RulesInit() + *fill* 0x40216dc9 0x3 + .text._Z13RulesSetPowerv + 0x40216dcc 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x15 (size before relaxing) + 0x40216dd0 RulesSetPower() + *fill* 0x40216ddd 0x3 + .text._Z12RulesCommandv + 0x40216de0 0x670 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7a0 (size before relaxing) + 0x40216e08 RulesCommand() + .text._Z18TuyaModuleSelectedv + 0x40217450 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x40217450 TuyaModuleSelected() + .text._Z6RfInitv + 0x40217478 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x4021747c RfInit() + *fill* 0x402174b3 0x1 + .text._Z8XdrvCallh + 0x402174b4 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x402174b8 XdrvCall(unsigned char) + *fill* 0x402174f9 0x3 + .text._Z11XdrvCommandhPctS_tst + 0x402174fc 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x35 (size before relaxing) + 0x402174fc XdrvCommand(unsigned char, char*, unsigned short, char*, unsigned short, short, unsigned short) + *fill* 0x40217529 0x3 + .text._Z12XdrvMqttDataPctS_t + 0x4021752c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x4021752c XdrvMqttData(char*, unsigned short, char*, unsigned short) + *fill* 0x4021754d 0x3 + .text._Z16XdrvRulesProcessv + 0x40217550 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x40217550 XdrvRulesProcess() + .text._Z11ShowFreeMemPKc + 0x40217564 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31 (size before relaxing) + 0x40217564 ShowFreeMem(char const*) + *fill* 0x40217585 0x3 + .text._Z8ShowPageR6Stringb + 0x40217588 0x26f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x41f (size before relaxing) + 0x402175d4 ShowPage(String&, bool) + *fill* 0x402177f7 0x1 + .text._Z8ShowPageR6String + 0x402177f8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x402177f8 ShowPage(String&) + .text._Z26HandleLoggingConfigurationv$part$131 + 0x4021780c 0x424 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6e4 (size before relaxing) + .text._Z24HandleOtherConfigurationv$part$132 + 0x40217c30 0x30e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4c9 (size before relaxing) + *fill* 0x40217f3e 0x2 + .text._Z23HandleMqttConfigurationv$part$143 + 0x40217f40 0x219 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3c1 (size before relaxing) + *fill* 0x40218159 0x3 + .text._Z27HandleDomoticzConfigurationv$part$144 + 0x4021815c 0x299 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x451 (size before relaxing) + *fill* 0x402183f5 0x3 + .text._Z15HandleWifiLoginv + 0x402183f8 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x40218404 HandleWifiLogin() + .text._Z13HlwEvery200msv + 0x40218460 0x1e9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x229 (size before relaxing) + 0x402184bc HlwEvery200ms() + *fill* 0x40218649 0x3 + .text._Z14HlwEverySecondv + 0x4021864c 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x79 (size before relaxing) + 0x40218650 HlwEverySecond() + *fill* 0x402186a1 0x3 + .text._Z10HlwSnsInitv + 0x402186a4 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18f (size before relaxing) + 0x402186c4 HlwSnsInit() + *fill* 0x402187c3 0x1 + .text._Z10HlwDrvInitv + 0x402187c4 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x78 (size before relaxing) + 0x402187c8 HlwDrvInit() + .text._Z10HlwCommandv + 0x40218830 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x147 (size before relaxing) + 0x40218834 HlwCommand() + *fill* 0x40218917 0x1 + .text._Z6Xnrg01h + 0x40218918 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x89 (size before relaxing) + 0x40218918 Xnrg01(unsigned char) + *fill* 0x40218981 0x3 + .text._Z14CseEverySecondv + 0x40218984 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x99 (size before relaxing) + 0x40218990 CseEverySecond() + *fill* 0x40218a01 0x3 + .text._Z10CseDrvInitv + 0x40218a04 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x46 (size before relaxing) + 0x40218a10 CseDrvInit() + *fill* 0x40218a42 0x2 + .text._Z10CseCommandv + 0x40218a44 0xd4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x108 (size before relaxing) + 0x40218a50 CseCommand() + .text._Z8PzemSendh + 0x40218b18 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x66 (size before relaxing) + 0x40218b20 PzemSend(unsigned char) + *fill* 0x40218b76 0x2 + .text._Z16PzemReceiveReadyv + 0x40218b78 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x26 (size before relaxing) + 0x40218b78 PzemReceiveReady() + *fill* 0x40218b9a 0x2 + .text._Z11PzemDrvInitv + 0x40218b9c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2a (size before relaxing) + 0x40218b9c PzemDrvInit() + *fill* 0x40218bbe 0x2 + .text._Z7McpSendPh + 0x40218bc0 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6c (size before relaxing) + 0x40218bc4 McpSend(unsigned char*) + .text._Z13McpGetAddressv + 0x40218c1c 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d (size before relaxing) + 0x40218c20 McpGetAddress() + *fill* 0x40218c41 0x3 + .text._Z17McpAddressReceivev + 0x40218c44 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40218c4c McpAddressReceive() + *fill* 0x40218c5a 0x2 + .text._Z17McpGetCalibrationv + 0x40218c5c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x40218c64 McpGetCalibration() + *fill* 0x40218c8f 0x1 + .text._Z18McpCalibrationCalcP22mcp_cal_registers_typeh + 0x40218c90 0xd0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd4 (size before relaxing) + 0x40218ca4 McpCalibrationCalc(mcp_cal_registers_type*, unsigned char) + .text._Z17McpSetCalibrationP22mcp_cal_registers_type + 0x40218d60 0x117 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1af (size before relaxing) + 0x40218d60 McpSetCalibration(mcp_cal_registers_type*) + *fill* 0x40218e77 0x1 + .text._Z25McpSetSystemConfigurationt + 0x40218e78 0x67 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b (size before relaxing) + 0x40218e7c McpSetSystemConfiguration(unsigned short) + *fill* 0x40218edf 0x1 + .text._Z19McpParseCalibrationv + 0x40218ee0 0x18d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x249 (size before relaxing) + 0x40218ee4 McpParseCalibration() + *fill* 0x4021906d 0x3 + .text._Z15McpGetFrequencyv + 0x40219070 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x40219074 McpGetFrequency() + *fill* 0x4021909f 0x1 + .text._Z15McpSetFrequencytt + 0x402190a0 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b (size before relaxing) + 0x402190a0 McpSetFrequency(unsigned short, unsigned short) + *fill* 0x40219103 0x1 + .text._Z17McpParseFrequencyv + 0x40219104 0x9f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xbb (size before relaxing) + 0x40219110 McpParseFrequency() + *fill* 0x402191a3 0x1 + .text._Z10McpGetDatav + 0x402191a4 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d (size before relaxing) + 0x402191a8 McpGetData() + *fill* 0x402191c9 0x3 + .text._Z12McpParseDatav + 0x402191cc 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x16c (size before relaxing) + 0x402191d4 McpParseData() + .text._Z14McpEverySecondv + 0x402192c4 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc0 (size before relaxing) + 0x402192c8 McpEverySecond() + .text._Z10McpSnsInitv + 0x40219354 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x27 (size before relaxing) + 0x40219354 McpSnsInit() + *fill* 0x4021936f 0x1 + .text._Z10McpDrvInitv + 0x40219370 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x84 (size before relaxing) + 0x40219370 McpDrvInit() + .text._Z10McpCommandv + 0x402193d0 0x167 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1df (size before relaxing) + 0x402193e0 McpCommand() + *fill* 0x40219537 0x1 + .text._Z13PzemAcDrvInitv + 0x40219538 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2a (size before relaxing) + 0x40219538 PzemAcDrvInit() + *fill* 0x4021955a 0x2 + .text._Z13PzemDcDrvInitv + 0x4021955c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2a (size before relaxing) + 0x4021955c PzemDcDrvInit() + *fill* 0x4021957e 0x2 + .text._Z8XnrgCallh + 0x40219580 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219584 XnrgCall(unsigned char) + *fill* 0x402195b9 0x3 + .text._Z11Energy200msv + 0x402195bc 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xfd (size before relaxing) + 0x402195cc Energy200ms() + *fill* 0x40219685 0x3 + .text._Z13EnergyCommandv + 0x40219688 0x468 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x530 (size before relaxing) + 0x402196a0 EnergyCommand() + .text._Z13EnergyDrvInitv + 0x40219af0 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x24 (size before relaxing) + 0x40219af0 EnergyDrvInit() + .text._Z13EnergySnsInitv + 0x40219b0c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x40219b14 EnergySnsInit() + *fill* 0x40219b85 0x3 + .text._Z6Xdrv03h + 0x40219b88 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x40219b8c Xdrv03(unsigned char) + *fill* 0x40219be0 0x0 + .text._Z16WemoSerialnumberv + 0x40219be0 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x40219be4 WemoSerialnumber() + *fill* 0x40219c11 0x3 + .text._Z8WemoUuidv + 0x40219c14 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x53 (size before relaxing) + 0x40219c18 WemoUuid() + *fill* 0x40219c4b 0x1 + .text._Z11HueBridgeIdv + 0x40219c4c 0x99 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x119 (size before relaxing) + 0x40219c50 HueBridgeId() + *fill* 0x40219ce5 0x3 + .text._Z15HueSerialnumberv + 0x40219ce8 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x83 (size before relaxing) + 0x40219ce8 HueSerialnumber() + *fill* 0x40219d2b 0x1 + .text._Z7HueUuidv + 0x40219d2c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x40219d30 HueUuid() + *fill* 0x40219d5b 0x1 + .text._Z14GetHueDeviceIdh + 0x40219d5c 0x6b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb7 (size before relaxing) + 0x40219d60 GetHueDeviceId(unsigned char) + *fill* 0x40219dc7 0x1 + .text._Z12GetHueUserIdv + 0x40219dc8 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x40219dcc GetHueUserId() + *fill* 0x40219df9 0x3 + .text._Z17HueConfigResponseP6String + 0x40219dfc 0x144 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x264 (size before relaxing) + 0x40219e1c HueConfigResponse(String*) + .text._Z9HueConfigP6String + 0x40219f40 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x76 (size before relaxing) + 0x40219f44 HueConfig(String*) + *fill* 0x40219f86 0x2 + .text._Z15HueLightStatus1hP6String + 0x40219f88 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2db (size before relaxing) + 0x40219fc0 HueLightStatus1(unsigned char, String*) + *fill* 0x4021a14f 0x1 + .text._Z15HueLightStatus2hP6String + 0x4021a150 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd5 (size before relaxing) + 0x4021a15c HueLightStatus2(unsigned char, String*) + *fill* 0x4021a1d5 0x3 + .text._Z15HueGlobalConfigP6String + 0x4021a1d8 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x13b (size before relaxing) + 0x4021a1ec HueGlobalConfig(String*) + *fill* 0x4021a29f 0x1 + .text._Z17HueAuthenticationP6String + 0x4021a2a0 0x62 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa2 (size before relaxing) + 0x4021a2a4 HueAuthentication(String*) + *fill* 0x4021a302 0x2 + .text._Z9HueGroupsP6String + 0x4021a304 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1c5 (size before relaxing) + 0x4021a31c HueGroups(String*) + *fill* 0x4021a40d 0x3 + .text._Z19Ws2812GradientColorhP7WsColorttt + 0x4021a410 0x154 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b0 (size before relaxing) + 0x4021a414 Ws2812GradientColor(unsigned char, WsColor*, unsigned short, unsigned short, unsigned short) + .text._Z13CounterUpdateh + 0x4021a564 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x83 (size before relaxing) + 0x4021a568 CounterUpdate(unsigned char) + *fill* 0x4021a5d7 0x1 + .text._Z14CounterUpdate1v + 0x4021a5d8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x4021a5d8 CounterUpdate1() + .text._Z14CounterUpdate2v + 0x4021a5ec 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x4021a5ec CounterUpdate2() + .text._Z14CounterUpdate3v + 0x4021a600 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x4021a600 CounterUpdate3() + .text._Z14CounterUpdate4v + 0x4021a614 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x4021a614 CounterUpdate4() + .text._Z16CounterSaveStatev + 0x4021a628 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x39 (size before relaxing) + 0x4021a628 CounterSaveState() + *fill* 0x4021a655 0x3 + .text._Z11CounterInitv + 0x4021a658 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x84 (size before relaxing) + 0x4021a660 CounterInit() + .text._Z12OneWireResetv + 0x4021a6d0 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc2 (size before relaxing) + 0x4021a6d4 OneWireReset() + *fill* 0x4021a75e 0x2 + .text._Z15OneWireWriteBith + 0x4021a760 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7d (size before relaxing) + 0x4021a768 OneWireWriteBit(unsigned char) + *fill* 0x4021a7c1 0x3 + .text._Z14OneWireReadBitv + 0x4021a7c4 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7c (size before relaxing) + 0x4021a7c4 OneWireReadBit() + .text._Z12OneWireWriteh + 0x4021a818 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x4021a818 OneWireWrite(unsigned char) + *fill* 0x4021a85e 0x2 + .text._Z11OneWireReadv + 0x4021a860 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3b (size before relaxing) + 0x4021a860 OneWireRead() + *fill* 0x4021a897 0x1 + .text._Z13OneWireSelectPKh + 0x4021a898 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x38 (size before relaxing) + 0x4021a898 OneWireSelect(unsigned char const*) + .text._Z18OneWireResetSearchv + 0x4021a8c8 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a8d8 OneWireResetSearch() + .text._Z13OneWireSearchPh + 0x4021a900 0x16b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x197 (size before relaxing) + 0x4021a900 OneWireSearch(unsigned char*) + *fill* 0x4021aa6b 0x1 + .text._Z14Ds18x20Convertv + 0x4021aa6c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x4021aa6c Ds18x20Convert() + .text._Z11Ds18x20Nameh + 0x4021aa88 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x89 (size before relaxing) + 0x4021aaa0 Ds18x20Name(unsigned char) + *fill* 0x4021ab05 0x3 + .text._Z11DhtReadPrepv + 0x4021ab08 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x42 (size before relaxing) + 0x4021ab10 DhtReadPrep() + *fill* 0x4021ab46 0x2 + .text._Z14DhtExpectPulsehb + 0x4021ab48 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x58 (size before relaxing) + 0x4021ab4c DhtExpectPulse(unsigned char, bool) + .text._Z8DhtSetuphh + 0x4021ab98 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x4021ab98 DhtSetup(unsigned char, unsigned char) + .text._Z8GpioInitv + 0x4021abc0 0x502 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5b2 (size before relaxing) + 0x4021abe4 GpioInit() + *fill* 0x4021b0c2 0x2 + .text._Z7DhtInitv + 0x4021b0c4 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9f (size before relaxing) + 0x4021b0d0 DhtInit() + *fill* 0x4021b143 0x1 + .text._Z11ShtReadDatav + 0x4021b144 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc0 (size before relaxing) + 0x4021b14c ShtReadData() + .text._Z12HtuCheckCrc8t + 0x4021b1d0 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b1d4 HtuCheckCrc8(unsigned short) + *fill* 0x4021b1fb 0x1 + .text._Z8HtuResetv + 0x4021b1fc 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x4021b1fc HtuReset() + *fill* 0x4021b229 0x3 + .text._Z10MhzSendCmdh + 0x4021b22c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x4021b234 MhzSendCmd(unsigned char) + *fill* 0x4021b28b 0x1 + .text._Z22MhzCheckAndApplyFilterth + 0x4021b28c 0x76 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b298 MhzCheckAndApplyFilter(unsigned short, unsigned char) + *fill* 0x4021b302 0x2 + .text._Z16MhzCommandSensorv + 0x4021b304 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7a (size before relaxing) + 0x4021b310 MhzCommandSensor() + *fill* 0x4021b362 0x2 + .text._Z20NovaSdsSetWorkPeriodv + 0x4021b364 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b370 NovaSdsSetWorkPeriod() + *fill* 0x4021b426 0x2 + .text._Z8Sr04Initv + 0x4021b428 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x4021b430 Sr04Init() + *fill* 0x4021b465 0x3 + .text._Z8Sr04Pingt + 0x4021b468 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa7 (size before relaxing) + 0x4021b470 Sr04Ping(unsigned short) + *fill* 0x4021b4ef 0x1 + .text._Z14Sr04GetSamplesht + 0x4021b4f0 0xde .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xf6 (size before relaxing) + 0x4021b4f8 Sr04GetSamples(unsigned char, unsigned short) + *fill* 0x4021b5ce 0x2 + .text._Z8Sr04ReadPt + 0x4021b5d0 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x4021b5d0 Sr04Read(unsigned short*) + *fill* 0x4021b611 0x3 + .text._Z8Sr04Showh + 0x4021b614 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4b (size before relaxing) + 0x4021b61c Sr04Show(unsigned char) + *fill* 0x4021b64f 0x1 + .text._Z6Xsns22h + 0x4021b650 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x52 (size before relaxing) + 0x4021b650 Xsns22(unsigned char) + *fill* 0x4021b68f 0x1 + .text._Z9HxIsReadyt + 0x4021b690 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x80 (size before relaxing) + 0x4021b694 HxIsReady(unsigned short) + .text._Z6HxReadv + 0x4021b6fc 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb5 (size before relaxing) + 0x4021b700 HxRead() + *fill* 0x4021b789 0x3 + .text._Z7HxResetv + 0x4021b78c 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b798 HxReset() + *fill* 0x4021b7af 0x1 + .text._Z6HxInitv + 0x4021b7b0 0xa2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xda (size before relaxing) + 0x4021b7b8 HxInit() + *fill* 0x4021b852 0x2 + .text._Z6HxShowh + 0x4021b854 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x184 (size before relaxing) + 0x4021b878 HxShow(unsigned char) + .text._Z8Tx20Readv + 0x4021b988 0xe2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x11a (size before relaxing) + 0x4021b9a8 Tx20Read() + *fill* 0x4021ba6a 0x2 + .text._Z8Tx20Initv + 0x4021ba6c 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3d (size before relaxing) + 0x4021ba70 Tx20Init() + *fill* 0x4021ba99 0x3 + .text._Z8Tx20Showh + 0x4021ba9c 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xe1 (size before relaxing) + 0x4021baa8 Tx20Show(unsigned char) + *fill* 0x4021bb36 0x2 + .text._Z6Xsns35h + 0x4021bb38 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x67 (size before relaxing) + 0x4021bb38 Xsns35(unsigned char) + *fill* 0x4021bb8b 0x1 + .text._Z12XsnsNextCallh + 0x4021bb8c 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4021bb94 XsnsNextCall(unsigned char) + *fill* 0x4021bbe4 0x0 + .text._Z8XsnsCallh + 0x4021bbe4 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x4021bbe4 XsnsCall(unsigned char) + *fill* 0x4021bc25 0x3 + .text._Z14MqttShowSensorv + 0x4021bc28 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x177 (size before relaxing) + 0x4021bc3c MqttShowSensor() + *fill* 0x4021bd47 0x1 + .text._ZNSt8functionIFvvEEC2IPS0_vEET_ + 0x4021bd48 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021bd50 std::function::function(void (*)()) + 0x4021bd50 std::function::function(void (*)()) + *fill* 0x4021bd66 0x2 + .text._Z18HueWemoAddHandlersv + 0x4021bd68 0xfe .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x172 (size before relaxing) + 0x4021bd9c HueWemoAddHandlers() + *fill* 0x4021be66 0x2 + .text._Z14Ws2812GetColortPc + 0x4021be68 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc3 (size before relaxing) + 0x4021be74 Ws2812GetColor(unsigned short, char*) + *fill* 0x4021bf0f 0x1 + .text._Z22Ws2812UpdatePixelColori7WsColorf + 0x4021bf10 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21b (size before relaxing) + 0x4021bf10 Ws2812UpdatePixelColor(int, WsColor, float) + *fill* 0x4021c0ab 0x1 + .text._Z16Ws2812UpdateHandih + 0x4021c0ac 0xea .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x11a (size before relaxing) + 0x4021c0ac Ws2812UpdateHand(int, unsigned char) + *fill* 0x4021c196 0x2 + .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x4021c198 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x70 (size before relaxing) + 0x4021c19c NeoPixelBus >::Show() + .text._Z15Ws2812StripShowv + 0x4021c1fc 0x84 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa0 (size before relaxing) + 0x4021c200 Ws2812StripShow() + .text._Z14Ws2812Gradienth + 0x4021c280 0x1b9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x245 (size before relaxing) + 0x4021c284 Ws2812Gradient(unsigned char) + *fill* 0x4021c439 0x3 + .text._Z10Ws2812Barsh + 0x4021c43c 0x1b5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21d (size before relaxing) + 0x4021c440 Ws2812Bars(unsigned char) + *fill* 0x4021c5f1 0x3 + .text._Z14Ws2812SetColorthhhh + 0x4021c5f4 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x94 (size before relaxing) + 0x4021c5fc Ws2812SetColor(unsigned short, unsigned char, unsigned char, unsigned char, unsigned char) + .text._Z17Ws2812ForceUpdatev + 0x4021c670 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37 (size before relaxing) + 0x4021c670 Ws2812ForceUpdate() + *fill* 0x4021c697 0x1 + .text._Z11Ws2812Clockv + 0x4021c698 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x154 (size before relaxing) + 0x4021c698 Ws2812Clock() + .text._Z16Ws2812ShowSchemeh + 0x4021c790 0x52 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x71 (size before relaxing) + 0x4021c794 Ws2812ShowScheme(unsigned char) + *fill* 0x4021c7e2 0x2 + .text._Z11Ws2812Clearv + 0x4021c7e4 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x4021c7e4 Ws2812Clear() + *fill* 0x4021c819 0x3 + .text._Z10Ws2812Initv + 0x4021c81c 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa3 (size before relaxing) + 0x4021c81c Ws2812Init() + *fill* 0x4021c88f 0x1 + .text._Z9LightInitv + 0x4021c890 0x19e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x222 (size before relaxing) + 0x4021c898 LightInit() + *fill* 0x4021ca2e 0x2 + .text._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x4021ca30 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x32 (size before relaxing) + 0x4021ca30 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(char const*) + *fill* 0x4021ca5e 0x2 + .text._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x4021ca60 0xf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x17 (size before relaxing) + 0x4021ca60 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char const*) const + *fill* 0x4021ca6f 0x1 + .text._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x4021ca70 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20 (size before relaxing) + 0x4021ca70 bool ArduinoJson::JsonObject::containsKey(char const*) const + .text._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x4021ca88 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x32 (size before relaxing) + 0x4021ca88 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char* const&) const + *fill* 0x4021cab6 0x2 + .text._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x4021cab8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20 (size before relaxing) + 0x4021cab8 ArduinoJson::TypeTraits::EnableIf::value, bool>::type ArduinoJson::JsonObject::containsKey(char* const&) const + .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x4021cad0 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33 (size before relaxing) + 0x4021cad0 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::eat(ArduinoJson::Internals::CharPointerTraits::Reader&, char) + *fill* 0x4021caff 0x1 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x4021cb00 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdf (size before relaxing) + 0x4021cb04 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseString() + *fill* 0x4021cbdb 0x1 + .text._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x4021cbdc 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x69 (size before relaxing) + 0x4021cbdc bool ArduinoJson::JsonObject::set_impl(char const*, ArduinoJson::JsonVariant const&) + *fill* 0x4021cc39 0x3 + .text._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021cc3c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25 (size before relaxing) + 0x4021cc3c ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const + *fill* 0x4021cc55 0x3 + .text._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021cc58 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa1 (size before relaxing) + 0x4021cc5c ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const + *fill* 0x4021cced 0x3 + .text._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021ccf0 0xa3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xaf (size before relaxing) + 0x4021ccf4 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + *fill* 0x4021cd93 0x1 + .text._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021cd94 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25 (size before relaxing) + 0x4021cd94 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + *fill* 0x4021cdad 0x3 + .text._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021cdb0 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x4021cdb4 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + *fill* 0x4021ce51 0x3 + .text._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021ce54 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xac (size before relaxing) + 0x4021ce58 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x4021cef4 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33 (size before relaxing) + 0x4021cef4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::eat(ArduinoJson::Internals::StdStringTraits::Reader&, char) + *fill* 0x4021cf23 0x1 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x4021cf24 0x10d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x115 (size before relaxing) + 0x4021cf24 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseString() + *fill* 0x4021d031 0x3 + .text._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x4021d034 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x32 (size before relaxing) + 0x4021d034 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(String const&) + *fill* 0x4021d062 0x2 + .text._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021d064 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d (size before relaxing) + 0x4021d064 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(String const&) const + *fill* 0x4021d082 0x2 + .text._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x4021d084 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x89 (size before relaxing) + 0x4021d088 int ArduinoJson::JsonVariant::variantAsInteger() const + *fill* 0x4021d109 0x3 + .text._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x4021d10c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x4021d10c bool ArduinoJson::operator!=(ArduinoJson::JsonVariantComparisons > const&, int) + *fill* 0x4021d13f 0x1 + .text._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x4021d140 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2b (size before relaxing) + 0x4021d140 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const + *fill* 0x4021d15b 0x1 + .text._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x4021d15c 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4f (size before relaxing) + 0x4021d15c bool ArduinoJson::JsonArray::add_impl(ArduinoJson::JsonVariant const&) + *fill* 0x4021d1a3 0x1 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x4021d1a4 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x4021d1a4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseArray() + *fill* 0x4021d21d 0x3 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x4021d220 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc1 (size before relaxing) + 0x4021d220 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseAnythingTo(ArduinoJson::JsonVariant*) + *fill* 0x4021d2d1 0x3 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x4021d2d4 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd6 (size before relaxing) + 0x4021d2d4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseObject() + *fill* 0x4021d366 0x2 + .text._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x4021d368 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2b (size before relaxing) + 0x4021d368 ArduinoJson::JsonObject& ArduinoJson::JsonBufferBase::parseObject(char*, unsigned char) + *fill* 0x4021d38b 0x1 + .text._Z13RfSendCommandv + 0x4021d38c 0x238 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x304 (size before relaxing) + 0x4021d3b8 RfSendCommand() + .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x4021d5c4 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x4021d5c4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseArray() + *fill* 0x4021d63d 0x3 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x4021d640 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc1 (size before relaxing) + 0x4021d640 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseAnythingTo(ArduinoJson::JsonVariant*) + *fill* 0x4021d6f1 0x3 + .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x4021d6f4 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd6 (size before relaxing) + 0x4021d6f4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseObject() + *fill* 0x4021d786 0x2 + .text._Z14RulesRuleMatchhR6StringS0_ + 0x4021d788 0x5b3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x84a (size before relaxing) + 0x4021d7b8 RulesRuleMatch(unsigned char, String&, String&) + *fill* 0x4021dd3b 0x1 + .text._Z8I2cWritehhjh + 0x4021dd3c 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb2 (size before relaxing) + 0x4021dd3c I2cWrite(unsigned char, unsigned char, unsigned int, unsigned char) + *fill* 0x4021ddd6 0x2 + .text._Z9I2cWrite8hht + 0x4021ddd8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21 (size before relaxing) + 0x4021ddd8 I2cWrite8(unsigned char, unsigned char, unsigned short) + *fill* 0x4021ddf5 0x3 + .text._Z12I2cValidReadhhh + 0x4021ddf8 0xbd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xf1 (size before relaxing) + 0x4021ddfc I2cValidRead(unsigned char, unsigned char, unsigned char) + *fill* 0x4021deb5 0x3 + .text._Z14I2cValidRead16Pthh + 0x4021deb8 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31 (size before relaxing) + 0x4021deb8 I2cValidRead16(unsigned short*, unsigned char, unsigned char) + *fill* 0x4021dedd 0x3 + .text._Z8I2cRead8hh + 0x4021dee0 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x4021dee0 I2cRead8(unsigned char, unsigned char) + *fill* 0x4021defd 0x3 + .text._Z16HtuSetResolutionh + 0x4021df00 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3a (size before relaxing) + 0x4021df00 HtuSetResolution(unsigned char) + *fill* 0x4021df2e 0x2 + .text._Z9HtuHeaterh + 0x4021df30 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x55 (size before relaxing) + 0x4021df30 HtuHeater(unsigned char) + *fill* 0x4021df7d 0x3 + .text._Z7HtuInitv + 0x4021df80 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x4021df80 HtuInit() + .text._Z9I2cRead16hh + 0x4021df9c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x4021df9c I2cRead16(unsigned char, unsigned char) + *fill* 0x4021dfb9 0x3 + .text._Z17Bmp180Calibrationh + 0x4021dfbc 0x194 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d8 (size before relaxing) + 0x4021dfc8 Bmp180Calibration(unsigned char) + .text._Z13LM75ADGetTempv + 0x4021e150 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x4021e158 LM75ADGetTemp() + *fill* 0x4021e1a0 0x0 + .text._Z11I2cRead16LEhh + 0x4021e1a0 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x35 (size before relaxing) + 0x4021e1a0 I2cRead16LE(unsigned char, unsigned char) + *fill* 0x4021e1c9 0x3 + .text._Z15Bmx280Calibrateh + 0x4021e1cc 0x185 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x231 (size before relaxing) + 0x4021e1d0 Bmx280Calibrate(unsigned char) + *fill* 0x4021e351 0x3 + .text._Z9I2cRead24hh + 0x4021e354 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x28 (size before relaxing) + 0x4021e354 I2cRead24(unsigned char, unsigned char) + .text._Z10Bmp180Readh + 0x4021e370 0x175 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d9 (size before relaxing) + 0x4021e384 Bmp180Read(unsigned char) + *fill* 0x4021e4e5 0x3 + .text._Z10Bme280Readh + 0x4021e4e8 0x3d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x43d (size before relaxing) + 0x4021e518 Bme280Read(unsigned char) + *fill* 0x4021e8b9 0x3 + .text._Z7BmpReadv + 0x4021e8bc 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa9 (size before relaxing) + 0x4021e8c0 BmpRead() + *fill* 0x4021e945 0x3 + .text._Z15HtuReadDeviceIdv + 0x4021e948 0x76 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xba (size before relaxing) + 0x4021e948 HtuReadDeviceId() + *fill* 0x4021e9be 0x2 + .text._Z7HtuReadv + 0x4021e9c0 0x24b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x35b (size before relaxing) + 0x4021e9f8 HtuRead() + *fill* 0x4021ec0b 0x1 + .text._Z10Bh1750Readv + 0x4021ec0c 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x4021ec1c Bh1750Read() + .text._Z9Sht3xReadRfS_h + 0x4021ec98 0x141 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1c9 (size before relaxing) + 0x4021eca4 Sht3xRead(float&, float&, unsigned char) + *fill* 0x4021edd9 0x3 + .text._Z6Syslogv + 0x4021eddc 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x165 (size before relaxing) + 0x4021edfc Syslog() + *fill* 0x4021eee5 0x3 + .text._Z6AddLogh + 0x4021eee8 0x12a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x182 (size before relaxing) + 0x4021ef00 AddLog(unsigned char) + *fill* 0x4021f012 0x2 + .text._Z12SettingsSaveh + 0x4021f014 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x169 (size before relaxing) + 0x4021f028 SettingsSave(unsigned char) + *fill* 0x4021f131 0x3 + .text._Z15SettingsSaveAllv + 0x4021f134 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x4021f134 SettingsSaveAll() + *fill* 0x4021f15f 0x1 + .text._Z13SettingsDeltav + 0x4021f160 0x402 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x466 (size before relaxing) + 0x4021f1e8 SettingsDelta() + *fill* 0x4021f562 0x2 + .text._Z13SettingsEraseh + 0x4021f564 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x120 (size before relaxing) + 0x4021f574 SettingsErase(unsigned char) + .text._Z16SettingsSdkErasev + 0x4021f628 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x43 (size before relaxing) + 0x4021f628 SettingsSdkErase() + *fill* 0x4021f64b 0x1 + .text._Z17SetSerialBaudratei + 0x4021f64c 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc4 (size before relaxing) + 0x4021f650 SetSerialBaudrate(int) + .text._Z10ShowSourcei$part$70 + 0x4021f6c4 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + *fill* 0x4021f6f9 0x3 + .text._Z10ShowSourcei + 0x4021f6fc 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x4021f6fc ShowSource(int) + *fill* 0x4021f715 0x3 + .text._Z14SetDevicePowermi + 0x4021f718 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18b (size before relaxing) + 0x4021f718 SetDevicePower(unsigned long, int) + *fill* 0x4021f847 0x1 + .text._Z9RtcSecondv + 0x4021f848 0x291 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33d (size before relaxing) + 0x4021f860 RtcSecond() + *fill* 0x4021fad9 0x3 + .text._Z8AddLog_PhPKc + 0x4021fadc 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x35 (size before relaxing) + 0x4021fadc AddLog_P(unsigned char, char const*) + *fill* 0x4021fb01 0x3 + .text._Z19SettingsBufferAllocv + 0x4021fb04 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4f (size before relaxing) + 0x4021fb08 SettingsBufferAlloc() + *fill* 0x4021fb37 0x1 + .text._Z15SettingsDefaultv + 0x4021fb38 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x4021fb3c SettingsDefault() + *fill* 0x4021fb5b 0x1 + .text._Z11ClaimSerialv + 0x4021fb5c 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x69 (size before relaxing) + 0x4021fb64 ClaimSerial() + *fill* 0x4021fba1 0x3 + .text._Z11PzemSnsInitv + 0x4021fba4 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x81 (size before relaxing) + 0x4021fba4 PzemSnsInit() + *fill* 0x4021fbf5 0x3 + .text._Z13PzemAcSnsInitv + 0x4021fbf8 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x74 (size before relaxing) + 0x4021fbfc PzemAcSnsInit() + .text._Z13PzemDcSnsInitv + 0x4021fc44 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x80 (size before relaxing) + 0x4021fc4c PzemDcSnsInit() + .text._Z7MhzInitv + 0x4021fc9c 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x98 (size before relaxing) + 0x4021fca0 MhzInit() + .text._Z12SenseairInitv + 0x4021fd04 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x90 (size before relaxing) + 0x4021fd0c SenseairInit() + .text._Z7PmsInitv + 0x4021fd70 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x92 (size before relaxing) + 0x4021fd78 PmsInit() + *fill* 0x4021fdda 0x2 + .text._Z11NovaSdsInitv + 0x4021fddc 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa5 (size before relaxing) + 0x4021fde0 NovaSdsInit() + *fill* 0x4021fe4a 0x2 + .text._Z13StopWebserverv + 0x4021fe4c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x47 (size before relaxing) + 0x4021fe50 StopWebserver() + *fill* 0x4021fe7f 0x1 + .text._Z11CseReceivedv + 0x4021fe80 0x27b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2e3 (size before relaxing) + 0x4021fe98 CseReceived() + *fill* 0x402200fb 0x1 + .text._Z13UdpDisconnectv + 0x402200fc 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x41 (size before relaxing) + 0x40220104 UdpDisconnect() + *fill* 0x40220131 0x3 + .text._Z10UdpConnectv + 0x40220134 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb0 (size before relaxing) + 0x40220148 UdpConnect() + *fill* 0x402201b5 0x3 + .text._Z11Ds18x20Readh + 0x402201b8 0x23a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x306 (size before relaxing) + 0x402201c8 Ds18x20Read(unsigned char) + *fill* 0x402203f2 0x2 + .text._Z14ShtSendCommandh + 0x402203f4 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x140 (size before relaxing) + 0x402203fc ShtSendCommand(unsigned char) + .text._Z8ShtResetv + 0x402204d8 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x93 (size before relaxing) + 0x402204d8 ShtReset() + *fill* 0x4022053b 0x1 + .text._Z14ShtAwaitResultv + 0x4022053c 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x60 (size before relaxing) + 0x40220540 ShtAwaitResult() + .text._Z7ShtReadv + 0x40220584 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1af (size before relaxing) + 0x402205a4 ShtRead() + *fill* 0x402206b3 0x1 + .text._Z9ShtDetectv + 0x402206b4 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8e (size before relaxing) + 0x402206b8 ShtDetect() + *fill* 0x4022071e 0x2 + .text._Z12SettingsLoadv + 0x40220720 0xdf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x13f (size before relaxing) + 0x40220728 SettingsLoad() + *fill* 0x402207ff 0x1 + .text.setup 0x40220800 0x384 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4e0 (size before relaxing) + 0x40220828 setup + .text._Z8AddLog_PhPKcS0_ + 0x40220b84 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x70 (size before relaxing) + 0x40220b84 AddLog_P(unsigned char, char const*, char const*) + .text._Z17HandleUpnpServicev + 0x40220bd4 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x85 (size before relaxing) + 0x40220be4 HandleUpnpService() + *fill* 0x40220c2d 0x3 + .text._Z21HandleUpnpMetaServicev + 0x40220c30 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x85 (size before relaxing) + 0x40220c38 HandleUpnpMetaService() + *fill* 0x40220c81 0x3 + .text._Z19HandleUpnpSetupWemov + 0x40220c84 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x167 (size before relaxing) + 0x40220c9c HandleUpnpSetupWemo() + *fill* 0x40220d4b 0x1 + .text._Z18HandleUpnpSetupHuev + 0x40220d4c 0xc3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x177 (size before relaxing) + 0x40220d54 HandleUpnpSetupHue() + *fill* 0x40220e0f 0x1 + .text._Z17HandleInformationv$part$136 + 0x40220e10 0x7f3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd4b (size before relaxing) + *fill* 0x40221603 0x1 + .text._Z9WifiBeginh + 0x40221604 0x178 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21c (size before relaxing) + 0x40221614 WifiBegin(unsigned char) + .text._Z12AddLogSerialhPhi + 0x4022177c 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x77 (size before relaxing) + 0x40221784 AddLogSerial(unsigned char, unsigned char*, int) + *fill* 0x402217df 0x1 + .text._Z12AddLogSerialh + 0x402217e0 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29 (size before relaxing) + 0x402217e4 AddLogSerial(unsigned char) + *fill* 0x40221801 0x3 + .text._Z14CseSerialInputv + 0x40221804 0xf4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x114 (size before relaxing) + 0x40221818 CseSerialInput() + .text._Z6Xnrg02h + 0x402218f8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6a (size before relaxing) + 0x402218f8 Xnrg02(unsigned char) + *fill* 0x40221947 0x1 + .text._Z14McpSerialInputv + 0x40221948 0xf5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x155 (size before relaxing) + 0x4022194c McpSerialInput() + *fill* 0x40221a3d 0x3 + .text._Z6Xnrg04h + 0x40221a40 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8d (size before relaxing) + 0x40221a40 Xnrg04(unsigned char) + *fill* 0x40221aad 0x3 + .text._Z11PzemRecievehPf + 0x40221ab0 0x1ee .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x262 (size before relaxing) + 0x40221ab0 PzemRecieve(unsigned char, float*) + *fill* 0x40221c9e 0x2 + .text._Z14PzemEvery200msv + 0x40221ca0 0x12c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x17c (size before relaxing) + 0x40221cb4 PzemEvery200ms() + .text._Z6Xnrg03h + 0x40221dcc 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x40221dcc Xnrg03(unsigned char) + .text._Z14MhzEverySecondv + 0x40221e0c 0x205 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x255 (size before relaxing) + 0x40221e2c MhzEverySecond() + *fill* 0x40222011 0x3 + .text._Z11PmsReadDatav + 0x40222014 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x10e (size before relaxing) + 0x40222020 PmsReadData() + *fill* 0x4022210e 0x2 + .text._Z9PmsSecondv + 0x40222110 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31 (size before relaxing) + 0x40222110 PmsSecond() + *fill* 0x40222135 0x3 + .text._Z15NovaSdsReadDatav + 0x40222138 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x119 (size before relaxing) + 0x40222148 NovaSdsReadData() + *fill* 0x4022223d 0x3 + .text._Z13NovaSdsSecondv + 0x40222240 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31 (size before relaxing) + 0x40222240 NovaSdsSecond() + *fill* 0x40222265 0x3 + .text._Z12AddLogMissedPch + 0x40222268 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3d (size before relaxing) + 0x4022226c AddLogMissed(char*, unsigned char) + *fill* 0x40222295 0x3 + .text._Z18Ds18x20EverySecondv + 0x40222298 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x83 (size before relaxing) + 0x40222298 Ds18x20EverySecond() + *fill* 0x402222ef 0x1 + .text._Z14ShtEverySecondv + 0x402222f0 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x402222f4 ShtEverySecond() + *fill* 0x40222325 0x3 + .text._Z14StartWebserveri9IPAddress + 0x40222328 0x38f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5af (size before relaxing) + 0x402223cc StartWebserver(int, IPAddress) + *fill* 0x402226b7 0x1 + .text._Z16WifiManagerBeginv + 0x402226b8 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x149 (size before relaxing) + 0x402226c4 WifiManagerBegin() + *fill* 0x4022277d 0x3 + .text._Z10WifiConfigh + 0x40222780 0xaf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xe7 (size before relaxing) + 0x4022278c WifiConfig(unsigned char) + *fill* 0x4022282f 0x1 + .text._Z11WifiCheckIpv + 0x40222830 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x247 (size before relaxing) + 0x40222848 WifiCheckIp() + *fill* 0x402229f7 0x1 + .text._Z9WifiCheckh + 0x402229f8 0x16f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x21b (size before relaxing) + 0x40222a14 WifiCheck(unsigned char) + *fill* 0x40222b67 0x1 + .text._Z18ModuleSaveSettingsv + 0x40222b68 0x1a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x242 (size before relaxing) + 0x40222b7c ModuleSaveSettings() + *fill* 0x40222d0a 0x2 + .text._Z16WifiSaveSettingsv + 0x40222d0c 0x123 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b3 (size before relaxing) + 0x40222d24 WifiSaveSettings() + *fill* 0x40222e2f 0x1 + .text._Z19LoggingSaveSettingsv + 0x40222e30 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1cf (size before relaxing) + 0x40222e4c LoggingSaveSettings() + *fill* 0x40222f83 0x1 + .text._Z17OtherSaveSettingsv + 0x40222f84 0x17e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20e (size before relaxing) + 0x40222f9c OtherSaveSettings() + *fill* 0x40223102 0x2 + .text._Z16HandleUploadLoopv + 0x40223104 0x44b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x557 (size before relaxing) + 0x40223128 HandleUploadLoop() + *fill* 0x4022354f 0x1 + .text._Z18MqttDiscoverServerv + 0x40223550 0xca .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x13a (size before relaxing) + 0x4022355c MqttDiscoverServer() + *fill* 0x4022361a 0x2 + .text._Z13MqttSubscribePc + 0x4022361c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x47 (size before relaxing) + 0x40223620 MqttSubscribe(char*) + *fill* 0x4022364b 0x1 + .text._Z21DomoticzMqttSubscribev + 0x4022364c 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7e (size before relaxing) + 0x40223658 DomoticzMqttSubscribe() + *fill* 0x402236b6 0x2 + .text._Z17MqttPublishDirectPKch + 0x402236b8 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x165 (size before relaxing) + 0x402236d4 MqttPublishDirect(char const*, unsigned char) + *fill* 0x402237b9 0x3 + .text._Z11MqttPublishPKch + 0x402237bc 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x69 (size before relaxing) + 0x402237c0 MqttPublish(char const*, unsigned char) + *fill* 0x40223811 0x3 + .text._Z11MqttPublishPKc + 0x40223814 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18 (size before relaxing) + 0x40223814 MqttPublish(char const*) + .text._Z29MqttPublishDomoticzPowerStateh + 0x40223828 0xac .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xe8 (size before relaxing) + 0x40223834 MqttPublishDomoticzPowerState(unsigned char) + .text._Z24DomoticzUpdatePowerStateh + 0x402238d4 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x402238d8 DomoticzUpdatePowerState(unsigned char) + .text._Z18DomoticzMqttUpdatev + 0x40223900 0x52 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x65 (size before relaxing) + 0x40223904 DomoticzMqttUpdate() + *fill* 0x40223952 0x2 + .text._Z15DomoticzSendKeyhhhh + 0x40223954 0x83 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9b (size before relaxing) + 0x40223964 DomoticzSendKey(unsigned char, unsigned char, unsigned char, unsigned char) + *fill* 0x402239d7 0x1 + .text._Z14DomoticzSensorhPc + 0x402239d8 0xa6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xf2 (size before relaxing) + 0x402239dc DomoticzSensor(unsigned char, char*) + *fill* 0x40223a7e 0x2 + .text._Z14DomoticzSensorhj + 0x40223a80 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x39 (size before relaxing) + 0x40223a84 DomoticzSensor(unsigned char, unsigned int) + *fill* 0x40223aad 0x3 + .text._Z11CounterShowh + 0x40223ab0 0x171 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1cd (size before relaxing) + 0x40223ac8 CounterShow(unsigned char) + *fill* 0x40223c21 0x3 + .text._Z6Xsns01h + 0x40223c24 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x57 (size before relaxing) + 0x40223c24 Xsns01(unsigned char) + *fill* 0x40223c6b 0x1 + .text._Z10Bh1750Showh + 0x40223c6c 0x67 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8a (size before relaxing) + 0x40223c78 Bh1750Show(unsigned char) + *fill* 0x40223cd3 0x1 + .text._Z7MhzShowh + 0x40223cd4 0xd0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x11c (size before relaxing) + 0x40223ce8 MhzShow(unsigned char) + .text._Z6Xsns15h + 0x40223da4 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x85 (size before relaxing) + 0x40223da8 Xsns15(unsigned char) + *fill* 0x40223e0d 0x3 + .text._Z12SenseairShowh + 0x40223e10 0x131 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a1 (size before relaxing) + 0x40223e34 SenseairShow(unsigned char) + *fill* 0x40223f41 0x3 + .text._Z7PmsShowh + 0x40223f44 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x101 (size before relaxing) + 0x40223f4c PmsShow(unsigned char) + *fill* 0x40224011 0x3 + .text._Z6Xsns18h + 0x40224014 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x62 (size before relaxing) + 0x40224014 Xsns18(unsigned char) + *fill* 0x4022405f 0x1 + .text._Z9Sgp30Showh + 0x40224060 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x89 (size before relaxing) + 0x40224070 Sgp30Show(unsigned char) + *fill* 0x402240ca 0x2 + .text._Z21DomoticzTempHumSensorPcS_ + 0x402240cc 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4d (size before relaxing) + 0x402240d0 DomoticzTempHumSensor(char*, char*) + *fill* 0x40224105 0x3 + .text._Z12SonoffScShowh + 0x40224108 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1af (size before relaxing) + 0x40224114 SonoffScShow(unsigned char) + *fill* 0x40224237 0x1 + .text._Z7DhtShowh + 0x40224238 0xe5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x13d (size before relaxing) + 0x4022423c DhtShow(unsigned char) + *fill* 0x4022431d 0x3 + .text._Z7ShtShowh + 0x40224320 0xc0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x120 (size before relaxing) + 0x40224320 ShtShow(unsigned char) + .text._Z6Xsns07h + 0x402243e0 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x402243e0 Xsns07(unsigned char) + *fill* 0x4022442f 0x1 + .text._Z7HtuShowh + 0x40224430 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x120 (size before relaxing) + 0x40224434 HtuShow(unsigned char) + .text._Z9Sht3xShowh + 0x402244f4 0x126 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18e (size before relaxing) + 0x40224500 Sht3xShow(unsigned char) + *fill* 0x4022461a 0x2 + .text._Z29DomoticzTempHumPressureSensorPcS_S_ + 0x4022461c 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x59 (size before relaxing) + 0x40224620 DomoticzTempHumPressureSensor(char*, char*, char*) + *fill* 0x40224661 0x3 + .text._Z7BmpShowh + 0x40224664 0x280 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x358 (size before relaxing) + 0x4022468c BmpShow(unsigned char) + .text._Z25DomoticzSensorPowerEnergyiPc + 0x402248e4 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33 (size before relaxing) + 0x402248e8 DomoticzSensorPowerEnergy(int, char*) + *fill* 0x4022490b 0x1 + .text._Z10EnergyShowh + 0x4022490c 0x4aa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x686 (size before relaxing) + 0x40224944 EnergyShow(unsigned char) + *fill* 0x40224db6 0x2 + .text._Z11Ds18x20Showh + 0x40224db8 0x117 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x167 (size before relaxing) + 0x40224dc4 Ds18x20Show(unsigned char) + *fill* 0x40224ecf 0x1 + .text._Z11NovaSdsShowh + 0x40224ed0 0xab .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x102 (size before relaxing) + 0x40224ed8 NovaSdsShow(unsigned char) + *fill* 0x40224f7b 0x1 + .text._Z6Xsns20h + 0x40224f7c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x40224f7c Xsns20(unsigned char) + *fill* 0x40224fcb 0x1 + .text._Z10LM75ADShowh + 0x40224fcc 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc1 (size before relaxing) + 0x40224fd8 LM75ADShow(unsigned char) + *fill* 0x40225051 0x3 + .text._Z24MqttPublishPrefixTopic_PhPKch + 0x40225054 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb6 (size before relaxing) + 0x40225058 MqttPublishPrefixTopic_P(unsigned char, char const*, unsigned char) + *fill* 0x402250e2 0x2 + .text._Z24MqttPublishPrefixTopic_PhPKc + 0x402250e4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b (size before relaxing) + 0x402250e4 MqttPublishPrefixTopic_P(unsigned char, char const*) + *fill* 0x402250fb 0x1 + .text._Z13PublishStatush + 0x402250fc 0x6ea .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x992 (size before relaxing) + 0x40225174 PublishStatus(unsigned char) + *fill* 0x402257e6 0x2 + .text._Z26MqttPublishPowerBlinkStateh + 0x402257e8 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9f (size before relaxing) + 0x402257f0 MqttPublishPowerBlinkState(unsigned char) + *fill* 0x4022585f 0x1 + .text._Z23SonoffBridgeReceivedRawv + 0x40225860 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xfd (size before relaxing) + 0x40225874 SonoffBridgeReceivedRaw() + *fill* 0x40225929 0x3 + .text._Z23SonoffBridgeLearnFailedv + 0x4022592c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f (size before relaxing) + 0x40225938 SonoffBridgeLearnFailed() + *fill* 0x4022596f 0x1 + .text._Z20SonoffBridgeReceivedv + 0x40225970 0x1ec .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x250 (size before relaxing) + 0x4022599c SonoffBridgeReceived() + .text._Z23SonoffBridgeSerialInputv + 0x40225b5c 0x122 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x142 (size before relaxing) + 0x40225b68 SonoffBridgeSerialInput() + *fill* 0x40225c7e 0x2 + .text._Z6Xdrv06h + 0x40225c80 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5a (size before relaxing) + 0x40225c80 Xdrv06(unsigned char) + *fill* 0x40225cc7 0x1 + .text._Z17SerialBridgeInputv + 0x40225cc8 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x113 (size before relaxing) + 0x40225cdc SerialBridgeInput() + *fill* 0x40225dab 0x1 + .text._Z6Xdrv08h + 0x40225dac 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x58 (size before relaxing) + 0x40225dac Xdrv08(unsigned char) + *fill* 0x40225ded 0x3 + .text._Z12TimerCommandv + 0x40225df0 0x62e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7c6 (size before relaxing) + 0x40225e38 TimerCommand() + *fill* 0x4022641e 0x2 + .text._Z26HxCalibrationStateTextJsonh + 0x40226420 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b (size before relaxing) + 0x40226424 HxCalibrationStateTextJson(unsigned char) + *fill* 0x40226467 0x1 + .text._Z9HxCommandv + 0x40226468 0x211 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2e5 (size before relaxing) + 0x40226474 HxCommand() + *fill* 0x40226679 0x3 + .text._Z17HxEvery100mSecondv + 0x4022667c 0x160 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a0 (size before relaxing) + 0x40226680 HxEvery100mSecond() + .text._Z6Xsns34h + 0x402267dc 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x85 (size before relaxing) + 0x402267e0 Xsns34(unsigned char) + *fill* 0x40226845 0x3 + .text._Z14EnergyMqttShowv + 0x40226848 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb7 (size before relaxing) + 0x40226858 EnergyMqttShow() + *fill* 0x402268c7 0x1 + .text._Z21MqttPublishPowerStateh + 0x402268c8 0x13b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1af (size before relaxing) + 0x402268d0 MqttPublishPowerState(unsigned char) + *fill* 0x40226a03 0x1 + .text._Z19ExecuteCommandPowerhhi + 0x40226a04 0x24f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x29b (size before relaxing) + 0x40226a1c ExecuteCommandPower(unsigned char, unsigned char, int) + *fill* 0x40226c53 0x1 + .text._Z11SetFanspeedh + 0x40226c54 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x42 (size before relaxing) + 0x40226c58 SetFanspeed(unsigned char) + *fill* 0x40226c8e 0x2 + .text._Z17StopAllPowerBlinkv + 0x40226c90 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7f (size before relaxing) + 0x40226c90 StopAllPowerBlink() + *fill* 0x40226cf3 0x1 + .text._Z17EnergyMarginCheckv + 0x40226cf4 0x545 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b5 (size before relaxing) + 0x40226d68 EnergyMarginCheck() + *fill* 0x40227239 0x3 + .text._Z6Xsns03h + 0x4022723c 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6f (size before relaxing) + 0x40227240 Xsns03(unsigned char) + *fill* 0x40227297 0x1 + .text._Z12LightPowerOnv + 0x40227298 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f (size before relaxing) + 0x40227298 LightPowerOn() + *fill* 0x402272c7 0x1 + .text._Z17LightPreparePowerv + 0x402272c8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6b (size before relaxing) + 0x402272c8 LightPreparePower() + *fill* 0x40227317 0x1 + .text._Z11LightSetHsbffftb + 0x40227318 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x118 (size before relaxing) + 0x40227324 LightSetHsb(float, float, float, unsigned short, bool) + .text._Z12LightCommandv + 0x402273d0 0xa8c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc98 (size before relaxing) + 0x402273f4 LightCommand() + .text._Z16TimerEverySecondv + 0x40227e5c 0x159 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a5 (size before relaxing) + 0x40227e68 TimerEverySecond() + *fill* 0x40227fb5 0x3 + .text._Z6Xdrv09h + 0x40227fb8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xbd (size before relaxing) + 0x40227fc4 Xdrv09(unsigned char) + *fill* 0x40228045 0x3 + .text._Z15HandleUpnpEventv + 0x40228048 0x173 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x26b (size before relaxing) + 0x40228068 HandleUpnpEvent() + *fill* 0x402281bb 0x1 + .text._Z9HueLightsP6String + 0x402281bc 0x85a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd26 (size before relaxing) + 0x40228200 HueLights(String*) + *fill* 0x40228a16 0x2 + .text._Z13MqttConnectedv + 0x40228a18 0x296 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3b2 (size before relaxing) + 0x40228a64 MqttConnected() + *fill* 0x40228cae 0x2 + .text._Z17HAssDiscoverRelayv + 0x40228cb0 0x299 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x355 (size before relaxing) + 0x40228ce8 HAssDiscoverRelay() + *fill* 0x40228f49 0x3 + .text._Z18HAssDiscoverButtonv + 0x40228f4c 0x17a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1e2 (size before relaxing) + 0x40228f64 HAssDiscoverButton() + *fill* 0x402290c6 0x2 + .text._Z13HAssDiscoveryh + 0x402290c8 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x48 (size before relaxing) + 0x402290c8 HAssDiscovery(unsigned char) + *fill* 0x402290fd 0x3 + .text._Z6Xdrv12h + 0x40229100 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d (size before relaxing) + 0x40229100 Xdrv12(unsigned char) + *fill* 0x40229121 0x3 + .text._Z7SendKeyhhh + 0x40229124 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d8 (size before relaxing) + 0x40229130 SendKey(unsigned char, unsigned char, unsigned char) + .text._Z13SwitchHandlerh + 0x40229294 0x174 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a0 (size before relaxing) + 0x4022929c SwitchHandler(unsigned char) + .text._Z11MqttCommandv + 0x40229408 0x6d0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8ac (size before relaxing) + 0x40229428 MqttCommand() + .text._Z6Xdrv02h + 0x40229ad8 0x8f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xbf (size before relaxing) + 0x40229ae4 Xdrv02(unsigned char) + *fill* 0x40229b67 0x1 + .text._Z15MqttDataHandlerPcPhj + 0x40229b68 0x1e29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x22d1 (size before relaxing) + 0x40229c94 MqttDataHandler(char*, unsigned char*, unsigned int) + *fill* 0x4022b991 0x3 + .text._Z14ExecuteCommandPci + 0x4022b994 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xd4 (size before relaxing) + 0x4022b99c ExecuteCommand(char*, int) + .text._Z16Every100mSecondsv + 0x4022ba24 0x12b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x197 (size before relaxing) + 0x4022ba28 Every100mSeconds() + *fill* 0x4022bb4f 0x1 + .text._Z13TuyaResetWifiv + 0x4022bb50 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x49 (size before relaxing) + 0x4022bb58 TuyaResetWifi() + *fill* 0x4022bb89 0x3 + .text._Z13ButtonHandlerv + 0x4022bb8c 0x435 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50d (size before relaxing) + 0x4022bbc8 ButtonHandler() + *fill* 0x4022bfc1 0x3 + .text._Z16MqttDisconnectedi + 0x4022bfc4 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x79 (size before relaxing) + 0x4022bfc8 MqttDisconnected(int) + *fill* 0x4022c019 0x3 + .text._Z16MqttSaveSettingsv + 0x4022c01c 0x20a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30a (size before relaxing) + 0x4022c03c MqttSaveSettings() + *fill* 0x4022c226 0x2 + .text._Z15AriluxRfHandlerv + 0x4022c228 0x165 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18d (size before relaxing) + 0x4022c254 AriluxRfHandler() + *fill* 0x4022c38d 0x3 + .text._Z14IrReceiveCheckv + 0x4022c390 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x160 (size before relaxing) + 0x4022c3ac IrReceiveCheck() + *fill* 0x4022c495 0x3 + .text._Z13IrSendCommandv + 0x4022c498 0x276 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31e (size before relaxing) + 0x4022c4c4 IrSendCommand() + *fill* 0x4022c70e 0x2 + .text._Z6Xdrv05h + 0x4022c710 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8d (size before relaxing) + 0x4022c710 Xdrv05(unsigned char) + *fill* 0x4022c779 0x3 + .text._Z16DomoticzMqttDatav + 0x4022c77c 0x3da .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4da (size before relaxing) + 0x4022c7cc DomoticzMqttData() + *fill* 0x4022cb56 0x2 + .text._Z6Xdrv07h + 0x4022cb58 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdd (size before relaxing) + 0x4022cb68 Xdrv07(unsigned char) + *fill* 0x4022cbf9 0x3 + .text._Z20DomoticzSaveSettingsv + 0x4022cbfc 0x1da .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25e (size before relaxing) + 0x4022cc18 DomoticzSaveSettings() + *fill* 0x4022cdd6 0x2 + .text._Z17TimerSaveSettingsv + 0x4022cdd8 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x146 (size before relaxing) + 0x4022cde8 TimerSaveSettings() + *fill* 0x4022ced2 0x2 + .text._Z14RuleSetProcesshR6String + 0x4022ced4 0x38d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f5 (size before relaxing) + 0x4022cf0c RuleSetProcess(unsigned char, String&) + *fill* 0x4022d261 0x3 + .text._Z17RulesProcessEventPc + 0x4022d264 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x91 (size before relaxing) + 0x4022d268 RulesProcessEvent(char*) + *fill* 0x4022d2d1 0x3 + .text._Z12RulesProcessv + 0x4022d2d4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x4022d2d4 RulesProcess() + *fill* 0x4022d2e9 0x3 + .text._Z15RulesEvery100msv + 0x4022d2ec 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x88 (size before relaxing) + 0x4022d2f0 RulesEvery100ms() + .text._Z15RulesTeleperiodv + 0x4022d350 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2b (size before relaxing) + 0x4022d350 RulesTeleperiod() + *fill* 0x4022d373 0x1 + .text._Z18PerformEverySecondv + 0x4022d374 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x249 (size before relaxing) + 0x4022d390 PerformEverySecond() + *fill* 0x4022d505 0x3 + .text._Z14RulesEvery50msv + 0x4022d508 0x2b4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x344 (size before relaxing) + 0x4022d548 RulesEvery50ms() + .text._Z16RulesEverySecondv + 0x4022d7bc 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdf (size before relaxing) + 0x4022d7c8 RulesEverySecond() + *fill* 0x4022d863 0x1 + .text._Z6Xdrv10h + 0x4022d864 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8d (size before relaxing) + 0x4022d868 Xdrv10(unsigned char) + *fill* 0x4022d8c5 0x3 + .text._Z12TuyaSetPowerv + 0x4022d8c8 0xed .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x10d (size before relaxing) + 0x4022d8d0 TuyaSetPower() + *fill* 0x4022d9b5 0x3 + .text._Z15LightSerialDutyh + 0x4022d9b8 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x160 (size before relaxing) + 0x4022d9c4 LightSerialDuty(unsigned char) + .text._Z12LightAnimatev + 0x4022daec 0x344 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3d7 (size before relaxing) + 0x4022db04 LightAnimate() + *fill* 0x4022de30 0x0 + .text._Z13LightSetPowerv + 0x4022de30 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x61 (size before relaxing) + 0x4022de30 LightSetPower() + *fill* 0x4022de76 0x2 + .text._Z6Xdrv04h + 0x4022de78 0x7b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa7 (size before relaxing) + 0x4022de78 Xdrv04(unsigned char) + *fill* 0x4022def3 0x1 + .text._Z17TuyaPacketProcessv + 0x4022def4 0x21c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d4 (size before relaxing) + 0x4022df2c TuyaPacketProcess() + .text._Z15TuyaSerialInputv + 0x4022e110 0x18e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1ca (size before relaxing) + 0x4022e12c TuyaSerialInput() + *fill* 0x4022e29e 0x2 + .text._Z14TuyaSetWifiLedv + 0x4022e2a0 0xb0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdc (size before relaxing) + 0x4022e2a8 TuyaSetWifiLed() + .text._Z8TuyaInitv + 0x4022e350 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x110 (size before relaxing) + 0x4022e354 TuyaInit() + .text._Z17TuyaButtonPressedv + 0x4022e414 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f (size before relaxing) + 0x4022e418 TuyaButtonPressed() + *fill* 0x4022e453 0x1 + .text._Z6Xdrv16h + 0x4022e454 0xa9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdd (size before relaxing) + 0x4022e454 Xdrv16(unsigned char) + *fill* 0x4022e4fd 0x3 + .text._Z14RfReceiveCheckv + 0x4022e500 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x14b (size before relaxing) + 0x4022e518 RfReceiveCheck() + *fill* 0x4022e5d8 0x0 + .text._Z6Xdrv17h + 0x4022e5d8 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x79 (size before relaxing) + 0x4022e5d8 Xdrv17(unsigned char) + *fill* 0x4022e63d 0x3 + .text._Z17PzemAcEverySecondv + 0x4022e640 0x1d7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x27f (size before relaxing) + 0x4022e648 PzemAcEverySecond() + *fill* 0x4022e817 0x1 + .text._Z6Xnrg05h + 0x4022e818 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x4022e818 Xnrg05(unsigned char) + .text._Z17PzemDcEverySecondv + 0x4022e858 0x188 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x214 (size before relaxing) + 0x4022e860 PzemDcEverySecond() + .text._Z6Xnrg06h + 0x4022e9e0 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50 (size before relaxing) + 0x4022e9e0 Xnrg06(unsigned char) + .text._Z17HueNotImplementedP6String + 0x4022ea20 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x99 (size before relaxing) + 0x4022ea24 HueNotImplemented(String*) + *fill* 0x4022ea75 0x3 + .text._Z12HandleHueApiP6String + 0x4022ea78 0x1cb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2f3 (size before relaxing) + 0x4022ea9c HandleHueApi(String*) + *fill* 0x4022ec43 0x1 + .text._Z12SonoffScSendPKc + 0x4022ec44 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x64 (size before relaxing) + 0x4022ec48 SonoffScSend(char const*) + .text._Z12SonoffScInitv + 0x4022ec84 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x4022ec88 SonoffScInit() + *fill* 0x4022ec9d 0x3 + .text._Z6Xsns04h + 0x4022eca0 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4e (size before relaxing) + 0x4022eca0 Xsns04(unsigned char) + *fill* 0x4022ecdb 0x1 + .text._Z19SonoffScSerialInputPc + 0x4022ecdc 0x118 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x160 (size before relaxing) + 0x4022ecf4 SonoffScSerialInput(char*) + .text._Z11SerialInputv + 0x4022edf4 0x294 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x31c (size before relaxing) + 0x4022ee14 SerialInput() + .text._Z11Ds18x20Initv + 0x4022f088 0x149 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x181 (size before relaxing) + 0x4022f08c Ds18x20Init() + *fill* 0x4022f1d1 0x3 + .text._Z6Xsns05h + 0x4022f1d4 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x67 (size before relaxing) + 0x4022f1d4 Xsns05(unsigned char) + *fill* 0x4022f227 0x1 + .text._Z7DhtReadh + 0x4022f228 0x1ba .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x232 (size before relaxing) + 0x4022f23c DhtRead(unsigned char) + *fill* 0x4022f3e2 0x2 + .text._Z14DhtReadTempHumh + 0x4022f3e4 0x119 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x161 (size before relaxing) + 0x4022f3ec DhtReadTempHum(unsigned char) + *fill* 0x4022f4fd 0x3 + .text._Z14DhtEverySecondv + 0x4022f500 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4e (size before relaxing) + 0x4022f500 DhtEverySecond() + *fill* 0x4022f53a 0x2 + .text._Z6Xsns06h + 0x4022f53c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4022f53c Xsns06(unsigned char) + *fill* 0x4022f58b 0x1 + .text._Z9HtuDetectv + 0x4022f58c 0xbe .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xf2 (size before relaxing) + 0x4022f59c HtuDetect() + *fill* 0x4022f64a 0x2 + .text._Z14HtuEverySecondv + 0x4022f64c 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x73 (size before relaxing) + 0x4022f64c HtuEverySecond() + *fill* 0x4022f697 0x1 + .text._Z6Xsns08h + 0x4022f698 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4022f698 Xsns08(unsigned char) + *fill* 0x4022f6e7 0x1 + .text._Z9BmpDetectv + 0x4022f6e8 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x114 (size before relaxing) + 0x4022f6f4 BmpDetect() + .text._Z14BmpEverySecondv + 0x4022f7c0 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x41 (size before relaxing) + 0x4022f7c0 BmpEverySecond() + *fill* 0x4022f7ea 0x2 + .text._Z6Xsns09h + 0x4022f7ec 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4022f7ec Xsns09(unsigned char) + *fill* 0x4022f83b 0x1 + .text._Z12Bh1750Detectv + 0x4022f83c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb1 (size before relaxing) + 0x4022f844 Bh1750Detect() + *fill* 0x4022f8b5 0x3 + .text._Z17Bh1750EverySecondv + 0x4022f8b8 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x6c (size before relaxing) + 0x4022f8b8 Bh1750EverySecond() + *fill* 0x4022f8fd 0x3 + .text._Z6Xsns10h + 0x4022f900 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4022f900 Xsns10(unsigned char) + *fill* 0x4022f94f 0x1 + .text._Z11Sht3xDetectv + 0x4022f950 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb8 (size before relaxing) + 0x4022f958 Sht3xDetect() + .text._Z6Xsns14h + 0x4022f9dc 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x46 (size before relaxing) + 0x4022f9dc Xsns14(unsigned char) + *fill* 0x4022fa13 0x1 + .text._Z13Senseair250msv + 0x4022fa14 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1c4 (size before relaxing) + 0x4022fa38 Senseair250ms() + .text._Z6Xsns17h + 0x4022fb84 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x63 (size before relaxing) + 0x4022fb84 Xsns17(unsigned char) + *fill* 0x4022fbd3 0x1 + .text._Z11Sgp30Updatev + 0x4022fbd4 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc0 (size before relaxing) + 0x4022fbe0 Sgp30Update() + .text._Z6Xsns21h + 0x4022fc64 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x4022fc64 Xsns21(unsigned char) + *fill* 0x4022fc9b 0x1 + .text._Z12LM75ADDetectv + 0x4022fc9c 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9a (size before relaxing) + 0x4022fca0 LM75ADDetect() + *fill* 0x4022fd0a 0x2 + .text._Z6Xsns26h + 0x4022fd0c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x4022fd0c Xsns26(unsigned char) + *fill* 0x4022fd43 0x1 + .text._Z23HandleWifiConfigurationv$part$130 + 0x4022fd44 0x535 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7e9 (size before relaxing) + *fill* 0x40230279 0x3 + .text._Z20WemoRespondToMSearchi + 0x4023027c 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x273 (size before relaxing) + 0x402302ac WemoRespondToMSearch(int) + *fill* 0x40230417 0x1 + .text._Z19HueRespondToMSearchv + 0x40230418 0x1eb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x37b (size before relaxing) + 0x40230434 HueRespondToMSearch() + *fill* 0x40230603 0x1 + .text._Z13ShowWebSourcei$part$123 + 0x40230604 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xac (size before relaxing) + .text._Z13ShowWebSourcei + 0x4023066c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d (size before relaxing) + 0x4023066c ShowWebSource(int) + *fill* 0x40230685 0x3 + .text._Z17ExecuteWebCommandPci + 0x40230688 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2d (size before relaxing) + 0x40230688 ExecuteWebCommand(char*, int) + *fill* 0x402306a9 0x3 + .text._Z17HandleHttpCommandv$part$140 + 0x402306ac 0x1c6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x26e (size before relaxing) + *fill* 0x40230872 0x2 + .text._Z24HandleAjaxConsoleRefreshv$part$142 + 0x40230874 0x2aa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3f6 (size before relaxing) + *fill* 0x40230b1e 0x2 + .text._Z10WebRestarth + 0x40230b20 0x10c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1bc (size before relaxing) + 0x40230b44 WebRestart(unsigned char) + .text._Z23HandleAjaxStatusRefreshv + 0x40230c2c 0x313 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40f (size before relaxing) + 0x40230c70 HandleAjaxStatusRefresh() + *fill* 0x40230f3f 0x1 + .text._Z13MqttReconnectv + 0x40230f40 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1f3 (size before relaxing) + 0x40230f54 MqttReconnect() + *fill* 0x40231093 0x1 + .text._Z9MqttCheckv + 0x40231094 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x95 (size before relaxing) + 0x40231094 MqttCheck() + *fill* 0x40231109 0x3 + .text._Z16Every250mSecondsv + 0x4023110c 0x486 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5ee (size before relaxing) + 0x40231138 Every250mSeconds() + *fill* 0x40231592 0x2 + .text.loop 0x40231594 0xd7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18b (size before relaxing) + 0x402315a8 loop + *fill* 0x4023166b 0x1 + .text.startup._GLOBAL__sub_I_Settings + 0x4023166c 0xf1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b5 (size before relaxing) + *fill* 0x4023175d 0x3 + .text.exit._GLOBAL__sub_D_Settings + 0x40231760 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xc1 (size before relaxing) + *fill* 0x402317bd 0x3 + .text._Z13CaptivePortalv + 0x402317c0 0x107 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1c7 (size before relaxing) + 0x402317cc CaptivePortal() + *fill* 0x402318c7 0x1 + .text._Z10HandleRootv + 0x402318c8 0x404 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x60c (size before relaxing) + 0x4023191c HandleRoot() + .text._Z8HttpUserv + 0x40231ccc 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x34 (size before relaxing) + 0x40231ccc HttpUser() + .text._Z19HandleConfigurationv + 0x40231cf8 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x179 (size before relaxing) + 0x40231d08 HandleConfiguration() + *fill* 0x40231dc5 0x3 + .text._Z25HandleModuleConfigurationv + 0x40231dc8 0x3af .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x562 (size before relaxing) + 0x40231e34 HandleModuleConfiguration() + *fill* 0x40232177 0x1 + .text._Z23HandleWifiConfigurationv + 0x40232178 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x40232178 HandleWifiConfiguration() + .text._Z26HandleLoggingConfigurationv + 0x402321d8 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xaf (size before relaxing) + 0x402321d8 HandleLoggingConfiguration() + *fill* 0x40232237 0x1 + .text._Z24HandleOtherConfigurationv + 0x40232238 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x40232238 HandleOtherConfiguration() + .text._Z25HandleBackupConfigurationv + 0x40232298 0x193 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x256 (size before relaxing) + 0x402322ac HandleBackupConfiguration() + *fill* 0x4023242b 0x1 + .text._Z24HandleResetConfigurationv + 0x4023242c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x150 (size before relaxing) + 0x4023243c HandleResetConfiguration() + .text._Z26HandleRestoreConfigurationv + 0x402324e4 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x194 (size before relaxing) + 0x402324fc HandleRestoreConfiguration() + .text._Z17HandleInformationv + 0x402325c8 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x45 (size before relaxing) + 0x402325c8 HandleInformation() + *fill* 0x402325f1 0x3 + .text._Z21HandleUpgradeFirmwarev + 0x402325f4 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1e2 (size before relaxing) + 0x4023260c HandleUpgradeFirmware() + *fill* 0x402326fa 0x2 + .text._Z26HandleUpgradeFirmwareStartv + 0x402326fc 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1c2 (size before relaxing) + 0x40232710 HandleUpgradeFirmwareStart() + *fill* 0x40232802 0x2 + .text._Z16HandleUploadDonev + 0x40232804 0x1fe .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2e6 (size before relaxing) + 0x4023285c HandleUploadDone() + *fill* 0x40232a02 0x2 + .text._Z17HandleHttpCommandv + 0x40232a04 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x23 (size before relaxing) + 0x40232a04 HandleHttpCommand() + *fill* 0x40232a18 0x0 + .text._Z13HandleConsolev + 0x40232a18 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1b4 (size before relaxing) + 0x40232a34 HandleConsole() + .text._Z24HandleAjaxConsoleRefreshv + 0x40232b08 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x45 (size before relaxing) + 0x40232b08 HandleAjaxConsoleRefresh() + *fill* 0x40232b31 0x3 + .text._Z23HandleMqttConfigurationv + 0x40232b34 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x40232b34 HandleMqttConfiguration() + .text._Z27HandleDomoticzConfigurationv + 0x40232b94 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb4 (size before relaxing) + 0x40232b94 HandleDomoticzConfiguration() + .text._Z24HandleTimerConfigurationv + 0x40232bf4 0x272 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x456 (size before relaxing) + 0x40232c3c HandleTimerConfiguration() + *fill* 0x40232e66 0x2 + .text._Z14HandleNotFoundv + 0x40232e68 0x130 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1ec (size before relaxing) + 0x40232e7c HandleNotFound() + .text._Z7WebSendPc + 0x40232f98 0x1c8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x2e0 (size before relaxing) + 0x40232fb8 WebSend(char*) + .text._Z10WebCommandv + 0x40233160 0x1cd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x269 (size before relaxing) + 0x40233170 WebCommand() + *fill* 0x4023332d 0x3 + .text._Z7PollUdpv + 0x40233330 0x245 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x389 (size before relaxing) + 0x40233360 PollUdp() + *fill* 0x40233575 0x3 + .text._Z6Xdrv01h + 0x40233578 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f (size before relaxing) + 0x40233578 Xdrv01(unsigned char) + *fill* 0x402335bf 0x0 + *fill* 0x402335bf 0x0 + *fill* 0x402335bf 0x1 + .text.pwm_sort_array + 0x402335c0 0x68 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x402335c0 pwm_sort_array + *fill* 0x40233628 0x0 + *fill* 0x40233628 0x0 + *fill* 0x40233628 0x0 + *fill* 0x40233628 0x0 + .text._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data + 0x40233628 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233628 std::_Function_handler::_M_invoke(std::_Any_data const&) + *fill* 0x40233639 0x3 + .text._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation + 0x4023363c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023363c std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + .text._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j + 0x40233650 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233650 std::_Function_handler::_M_invoke(std::_Any_data const&, char*, unsigned char*, unsigned int) + *fill* 0x40233667 0x1 + .text._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation + 0x40233668 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233668 std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + *fill* 0x4023367c 0x0 + *fill* 0x4023367c 0x0 + *fill* 0x4023367c 0x0 + .text._ZN11ArduinoJson20StaticJsonBufferBase5allocEj + 0x4023367c 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023367c ArduinoJson::StaticJsonBufferBase::alloc(unsigned int) + *fill* 0x4023369a 0x0 + *fill* 0x4023369a 0x2 + .text._ZN5Print5writeEPKcj + 0x4023369c 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023369c Print::write(char const*, unsigned int) + *fill* 0x402336af 0x1 + .text._ZN14HardwareSerial5writeEj + 0x402336b0 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402336b0 HardwareSerial::write(unsigned int) + *fill* 0x402336c7 0x1 + .text._ZN14HardwareSerial5writeEi + 0x402336c8 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402336c8 HardwareSerial::write(int) + *fill* 0x402336df 0x1 + .text._ZNSt14_Function_baseD2Ev + 0x402336e0 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402336e0 std::_Function_base::~_Function_base() + 0x402336e0 std::_Function_base::~_Function_base() + *fill* 0x402336f7 0x0 + *fill* 0x402336f7 0x0 + *fill* 0x402336f7 0x1 + .text._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE + 0x402336f8 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402336f8 ArduinoJson::Internals::JsonBufferAllocated::operator new(unsigned int, ArduinoJson::JsonBuffer*) + *fill* 0x40233713 0x0 + *fill* 0x40233713 0x0 + *fill* 0x40233713 0x0 + *fill* 0x40233713 0x0 + *fill* 0x40233713 0x0 + *fill* 0x40233713 0x1 + .text._ZN7TwoWire5writeEi + 0x40233714 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233714 TwoWire::write(int) + *fill* 0x4023372b 0x1 + .text._Z14__get_adc_modev + 0x4023372c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023372c __get_adc_mode() + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x0 + *fill* 0x40233731 0x3 + .text.memchr 0x40233734 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233734 memchr + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x0 + *fill* 0x4023374b 0x1 + .text._Z11SetShortcutPch + 0x4023374c 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023374c SetShortcut(char*, unsigned char) + *fill* 0x40233762 0x0 + *fill* 0x40233762 0x0 + *fill* 0x40233762 0x0 + *fill* 0x40233762 0x2 + .text._Z13MakeValidMqtthPc + 0x40233764 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233764 MakeValidMqtt(unsigned char, char*) + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + *fill* 0x402337b8 0x0 + .text._Z15GetUsedInModulehPh + 0x402337b8 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402337b8 GetUsedInModule(unsigned char, unsigned char*) + *fill* 0x4023383a 0x0 + *fill* 0x4023383a 0x2 + .text._Z7GetHashPKcj + 0x4023383c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023383c GetHash(char const*, unsigned int) + *fill* 0x4023385c 0x0 + .text._Z14TimeDifferencemm + 0x4023385c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023385c TimeDifference(unsigned long, unsigned long) + *fill* 0x40233878 0x0 + *fill* 0x40233878 0x0 + *fill* 0x40233878 0x0 + *fill* 0x40233878 0x0 + *fill* 0x40233878 0x0 + .text._Z20WifiGetRssiAsQualityi + 0x40233878 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233878 WifiGetRssiAsQuality(int) + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x0 + *fill* 0x40233892 0x2 + .text._Z12EnergyMarginhttRhS_ + 0x40233894 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233894 EnergyMargin(unsigned char, unsigned short, unsigned short, unsigned char&, unsigned char&) + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x0 + *fill* 0x402338d6 0x2 + .text._Z24rf_find_hex_record_startPhj + 0x402338d8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402338d8 rf_find_hex_record_start(unsigned char*, unsigned int) + *fill* 0x402338f5 0x3 + .text._Z22rf_find_hex_record_endPhj + 0x402338f8 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402338f8 rf_find_hex_record_end(unsigned char*, unsigned int) + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x0 + *fill* 0x40233912 0x2 + .text._Z7PzemCrcPh + 0x40233914 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233914 PzemCrc(unsigned char*) + *fill* 0x4023392c 0x0 + *fill* 0x4023392c 0x0 + *fill* 0x4023392c 0x0 + .text._Z11McpChecksumPh + 0x4023392c 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4023392c McpChecksum(unsigned char*) + *fill* 0x40233952 0x2 + .text._Z13McpExtractIntPchh + 0x40233954 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233954 McpExtractInt(char*, unsigned char, unsigned char) + *fill* 0x4023397e 0x2 + .text._Z9McpSetIntmPhhj + 0x40233980 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233980 McpSetInt(unsigned long, unsigned char*, unsigned char, unsigned int) + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x0 + *fill* 0x402339a2 0x2 + .text._Z11OneWireCrc8Ph + 0x402339a4 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402339a4 OneWireCrc8(unsigned char*) + *fill* 0x402339e0 0x0 + *fill* 0x402339e0 0x0 + *fill* 0x402339e0 0x0 + *fill* 0x402339e0 0x0 + *fill* 0x402339e0 0x0 + *fill* 0x402339e0 0x0 + .text._Z20MhzCalculateChecksumPh + 0x402339e0 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402339e0 MhzCalculateChecksum(unsigned char*) + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x0 + *fill* 0x40233a02 0x2 + .text._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt + 0x40233a04 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233a04 NeoPixelBus >::GetPixelColor(unsigned short) const + *fill* 0x40233a51 0x0 + *fill* 0x40233a51 0x3 + .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor + 0x40233a54 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233a54 NeoPixelBus >::SetPixelColor(unsigned short, RgbColor) + *fill* 0x40233a8d 0x0 + *fill* 0x40233a8d 0x0 + *fill* 0x40233a8d 0x0 + *fill* 0x40233a8d 0x0 + *fill* 0x40233a8d 0x0 + *fill* 0x40233a8d 0x3 + .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor + 0x40233a90 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233a90 NeoPixelBus >::ClearTo(RgbColor) + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x0 + *fill* 0x40233acb 0x1 + .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ + 0x40233acc 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233acc void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::CharPointerTraits::Reader&) + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x0 + *fill* 0x40233b3a 0x2 + .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ + 0x40233b3c 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40233b3c void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::StdStringTraits::Reader&) + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *fill* 0x40233baa 0x0 + *.pioenvs/*/src/*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) + *libm.a:(.literal .text .literal.* .text.*) + *fill* 0x40233baa 0x2 + .literal 0x40233bac 0xb0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + 0x17c (size before relaxing) + .literal 0x40233c5c 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + 0x3c (size before relaxing) + .literal 0x40233c60 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + 0x34 (size before relaxing) + .literal 0x40233c68 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + 0x4 (size before relaxing) + .literal 0x40233c68 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + 0x1c (size before relaxing) + .literal 0x40233c70 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + 0x34 (size before relaxing) + .literal 0x40233c70 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + 0x24 (size before relaxing) + .literal 0x40233c70 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + 0x1c (size before relaxing) + .literal 0x40233c84 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + 0x38 (size before relaxing) + .literal 0x40233c90 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + 0x38 (size before relaxing) + .literal 0x40233c98 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + 0x1fc (size before relaxing) + .literal 0x40233cf8 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + 0x1c4 (size before relaxing) + .literal 0x40233d00 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + 0x138 (size before relaxing) + .literal 0x40233d4c 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + 0x4c (size before relaxing) + .literal 0x40233d54 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + 0xc8 (size before relaxing) + .literal 0x40233d94 0x1c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + 0x130 (size before relaxing) + .literal 0x40233db0 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + 0x9c (size before relaxing) + .literal 0x40233de0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + 0x188 (size before relaxing) + .literal 0x40233e50 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + 0x3c (size before relaxing) + .literal 0x40233e50 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + 0x4 (size before relaxing) + .literal 0x40233e50 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .literal 0x40233e54 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + 0x5c (size before relaxing) + .literal 0x40233e64 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + 0x8 (size before relaxing) + .literal 0x40233e64 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + 0x40 (size before relaxing) + .text 0x40233e70 0x484 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + 0x488 (size before relaxing) + 0x40233e70 atan + .text 0x402342f4 0x1cd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + 0x402342f4 ceil + *fill* 0x402344c1 0x3 + .text 0x402344c4 0xfc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + 0x104 (size before relaxing) + 0x402344c4 cos + .text 0x402345c0 0x3e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + 0x402345c0 fabs + *fill* 0x402345fe 0x2 + .text 0x40234600 0x9d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + 0x40234600 __fpclassifyd + *fill* 0x4023469d 0x3 + .text 0x402346a0 0x101 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + 0x105 (size before relaxing) + 0x402346a0 sin + *fill* 0x402347a1 0x3 + .text 0x402347a4 0x97 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + 0x9f (size before relaxing) + 0x402347a4 tan + *fill* 0x4023483b 0x1 + .text 0x4023483c 0x89 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + 0x4023483c __fpclassifyf + *fill* 0x402348c5 0x3 + .text 0x402348c8 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + 0xce (size before relaxing) + 0x402348c8 acos + *fill* 0x40234986 0x2 + .text 0x40234988 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + 0xce (size before relaxing) + 0x40234988 asin + *fill* 0x40234a46 0x2 + .text 0x40234a48 0x5c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + 0x5f2 (size before relaxing) + 0x40234a48 __ieee754_acos + *fill* 0x4023500e 0x2 + .text 0x40235010 0x560 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + 0x578 (size before relaxing) + 0x40235010 __ieee754_asin + .text 0x40235570 0x626 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + 0x62e (size before relaxing) + 0x40235570 __ieee754_rem_pio2 + *fill* 0x40235b96 0x2 + .text 0x40235b98 0x38e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + 0x40235b98 __ieee754_sqrt + *fill* 0x40235f26 0x2 + .text 0x40235f28 0x231 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + 0x40235f28 __kernel_cos + *fill* 0x40236159 0x3 + .text 0x4023615c 0xaff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + 0xb0f (size before relaxing) + 0x4023615c __kernel_rem_pio2 + *fill* 0x40236c5b 0x1 + .text 0x40236c5c 0x19b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + 0x40236c5c __kernel_sin + *fill* 0x40236df7 0x1 + .text 0x40236df8 0x526 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + 0x52a (size before relaxing) + 0x40236df8 __kernel_tan + *fill* 0x4023731e 0x2 + .text 0x40237320 0x1d1 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + 0x40237320 floor + *fill* 0x402374f1 0x3 + .text 0x402374f4 0x35 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + 0x402374f4 matherr + *fill* 0x40237529 0x3 + .text 0x4023752c 0x27 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + 0x4023752c nan + *fill* 0x40237553 0x1 + .text 0x40237554 0x19e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + 0x1a6 (size before relaxing) + 0x40237554 scalbn + *fill* 0x402376f2 0x2 + .text 0x402376f4 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + 0x402376f4 copysign + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *fill* 0x4023774d 0x0 + *libgcc.a:_umoddi3.o(.literal .text) + *fill* 0x4023774d 0x3 + .text 0x40237750 0x366 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + 0x40237750 __umoddi3 + *fill* 0x40237ab6 0x0 + *libgcc.a:_udivdi3.o(.literal .text) + *libsmartconfig.a:(.literal .text .literal.* .text.*) + *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text .irom.text.*) + *fill* 0x40237ab6 0x2 + .irom0.text 0x40237ab8 0x23c .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x274 (size before relaxing) + 0x40237adc umm_info + 0x40237cd8 umm_free_heap_size + .irom0.text 0x40237cf4 0xaf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + 0xe19 (size before relaxing) + 0x40237d1c fpm_set_type_from_upper + 0x40237d1c wifi_fpm_set_sleep_type + 0x40237dd8 wifi_fpm_get_sleep_type + 0x40237dd8 fpm_get_slp_type + 0x40237de0 fpm_rf_is_closed + 0x40237df4 fpm_is_open + 0x40237e00 fpm_allow_tx + 0x40237e30 wifi_fpm_close + 0x40237e30 fpm_close + 0x40237eac wifi_fpm_open + 0x40237eac fpm_open + 0x40237f18 fpm_attach + 0x40238124 wifi_fpm_set_wakeup_cb + 0x40238124 fpm_set_wakeup_cb + 0x402382a4 wifi_fpm_do_wakeup + 0x402382a4 fpm_do_wakeup + 0x40238774 wifi_fpm_do_sleep + 0x40238774 fpm_do_sleep + *fill* 0x402387ed 0x3 + .irom0.text 0x402387f0 0x15fa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x1992 (size before relaxing) + 0x402387fc PPWdtReset + 0x40238830 pp_soft_wdt_init + 0x40238850 pp_soft_wdt_feed + 0x40238850 system_soft_wdt_feed + 0x4023886c pp_soft_wdt_stop + 0x4023886c system_soft_wdt_stop + 0x40238898 pp_soft_wdt_restart + 0x40238898 system_soft_wdt_restart + 0x402388d0 RxNodeNum + 0x402388e8 TxNodeNum + 0x4023890c pp_disable_noise_timer + 0x40238930 pp_enable_noise_timer + 0x40238a40 pp_noise_test + 0x40238a50 reset_noise_timer + 0x40238a88 pp_disable_idle_timer + 0x40238aac pp_enable_idle_timer + 0x40238ad4 pp_try_enable_idle_timer + 0x40238b10 ppPeocessRxPktHdr + 0x40238e4c HdlAllBuffedEb + 0x40238ed4 ppTxPkt + 0x4023904c ppProcessWaitQ + 0x4023905c ppRegisterTxCallback + 0x40239084 ppUnregisterTxCallback + 0x402390b8 ppRecycleRxPkt + 0x40239118 ppCheckTxIdle + 0x40239398 pp_tx_idle_timeout + 0x4023955c DefFreqCalTimerCB + 0x402398e8 ppGetTxQFirstAvail_Locked + 0x402399d0 pp_attach + *fill* 0x40239dea 0x2 + .irom0.text 0x40239dec 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + 0x2a2 (size before relaxing) + 0x4023a038 RC_SetBasicRate + *fill* 0x4023a082 0x2 + .irom0.text 0x4023a084 0x5f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + 0x64d (size before relaxing) + 0x4023a084 phytype2mode + 0x4023a0a0 rc_set_rate_limit_id + 0x4023a1bc rcUpdatePhyMode + 0x4023a388 rcAttach + 0x4023a3d4 rcGetTrc + 0x4023a3dc trc_onDisconnect + 0x4023a3e0 trc_onScanStart + 0x4023a3f4 trc_onScanDone + 0x4023a418 rc_enable_trc + 0x4023a4f0 rc_get_mask + 0x4023a504 rc_disable_trc + 0x4023a558 rc_disable_trc_by_interface + 0x4023a574 rc_get_sta_trc + 0x4023a5b8 rc_get_trc + 0x4023a628 rc_get_trc_by_index + 0x4023a648 rc_only_sta_trc + *fill* 0x4023a675 0x3 + .irom0.text 0x4023a678 0xb17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0xc53 (size before relaxing) + 0x4023a690 wDev_Option_Init + 0x4023a784 wDev_Enable_Beacon_Tsf + 0x4023a7a0 wDev_Disable_Beacon_Tsf + 0x4023a7bc wDev_Set_Beacon_Int + 0x4023a7c4 wDev_Reset_TBTT + 0x4023a7f4 wDev_Get_Next_TBTT + 0x4023aa74 wDev_Initialize + 0x4023aae4 wDevForceAck6M + 0x4023ab00 wDev_SetMacAddress + 0x4023aba0 wDev_SetRxPolicy + 0x4023abf4 wDev_SetBssid + 0x4023accc wDev_ClearBssid + 0x4023ad04 wDev_Insert_KeyEntry + 0x4023adf8 wDev_remove_KeyEntry + 0x4023ae34 wDev_remove_KeyEntry_all_cnx + 0x4023ae84 wDev_Crypto_Conf + 0x4023af24 wDev_Crypto_Disable + 0x4023af5c wDevEnableRx + 0x4023af88 wdev_go_sniffer + 0x4023b064 wdev_set_sniffer_addr + 0x4023b0c0 wdev_exit_sniffer + *fill* 0x4023b18f 0x1 + .irom0.text 0x4023b190 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + 0x4c1 (size before relaxing) + 0x4023b1a4 esf_buf_alloc + 0x4023b38c esf_buf_recycle + 0x4023b4cc esf_buf_setup + *fill* 0x4023b589 0x3 + .irom0.text 0x4023b58c 0x46d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x581 (size before relaxing) + 0x4023b5ac ic_get_addr + 0x4023b5b8 ic_set_opmode + 0x4023b5cc ic_enable_interface + 0x4023b61c ic_interface_enabled + 0x4023b630 ic_disable_interface + 0x4023b678 ic_is_pure_sta + 0x4023b694 ic_get_ptk_alg + 0x4023b6a4 ic_get_gtk_alg + 0x4023b6b4 ic_set_ptk_alg + 0x4023b6c4 ic_set_gtk_alg + 0x4023b6d4 ic_interface_is_p2p + 0x4023b770 ic_set_vif + 0x4023b830 ic_set_sta + 0x4023b908 ic_bss_info_update + 0x4023b964 ic_set_key + 0x4023b9c0 ic_remove_key + 0x4023b9d4 ic_get_rssi + *fill* 0x4023b9f9 0x3 + .irom0.text 0x4023b9fc 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x118 (size before relaxing) + 0x4023ba00 lmacInitAc + 0x4023ba34 lmacInit + 0x4023bae0 lmacSetRetryLimit + .irom0.text 0x4023bafc 0x181d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x1d31 (size before relaxing) + 0x4023bb08 pm_rtc_clock_cali_proc + 0x4023bb40 pm_get_ck170_period + 0x4023bb64 pm_set_sleep_time + 0x4023bec4 pm_rf_is_closed + 0x4023bef0 pm_set_sleep_type_from_upper + 0x4023bfe0 pm_get_sleep_type + 0x4023c164 uart_tx_flush + 0x4023c168 pm_suspend + 0x4023c37c pm_shutdown + 0x4023c444 pm_reset_idle_sleep + 0x4023c484 pm_idle_sleep + 0x4023c490 pm_open + 0x4023c554 pm_onBcnRx + 0x4023c8b8 StopLightSleepSetFunc + 0x4023c8c0 LightSleepWakedCbSetFunc + 0x4023cdb4 pm_enable_gpio_wakeup + 0x4023cdec pm_attach + 0x4023cecc pm_send_nullfunc + 0x4023d054 pm_is_waked + 0x4023d06c pm_is_open + 0x4023d084 pm_scan_lock + 0x4023d0ac pm_try_scan_unlock + 0x4023d0c4 pm_force_scan_unlock + 0x4023d13c pm_scan_unlocked + 0x4023d150 pm_allow_tx + 0x4023d16c pm_assoc_parse + 0x4023d184 pm_set_addr + 0x4023d1a4 pm_sleep_for + 0x4023d1d4 pm_post + 0x4023d2d8 pm_get_idle_wait_time + *fill* 0x4023d319 0x3 + .irom0.text 0x4023d31c 0x9a9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0xc31 (size before relaxing) + 0x4023d4dc wdt_init + 0x4023d580 user_uart_wait_tx_fifo_empty + *fill* 0x4023dcc5 0x3 + .irom0.text 0x4023dcc8 0x610 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + 0x620 (size before relaxing) + 0x4023dcc8 divide + 0x4023dd04 skip_atoi + 0x4023de88 ets_vsnprintf + 0x4023e1e8 ets_vsprintf + 0x4023e20c ets_sprintf + 0x4023e234 ets_strcat + 0x4023e254 ets_strrchr + 0x4023e280 ets_strchr + 0x4023e298 bit_popcount + 0x4023e2b4 ets_snprintf + .irom0.text 0x4023e2d8 0x172 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x1b2 (size before relaxing) + 0x4023e2e0 ets_timer_done + 0x4023e31c ets_timer_handler_isr + 0x4023e3e8 ets_timer_init + *fill* 0x4023e44a 0x2 + .irom0.text 0x4023e44c 0x344d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x3eb1 (size before relaxing) + 0x4023e450 system_set_os_print + 0x4023e460 system_get_os_print + 0x4023e628 system_pp_recycle_rx_pkt + 0x4023e63c system_adc_read + 0x4023e654 system_get_vdd33 + 0x4023e66c system_restart_hook + 0x4023e67c system_restart_local + 0x4023e75c system_restart + 0x4023e7b8 system_restore + 0x4023e820 system_get_flash_size_map + 0x4023e840 system_get_boot_version + 0x4023e878 system_get_test_result + 0x4023e8a0 system_get_userbin_addr + 0x4023e938 system_get_boot_mode + 0x4023e968 system_restart_enhance + 0x4023ea98 system_upgrade_userbin_set + 0x4023eae4 system_upgrade_userbin_check + 0x4023eb24 system_upgrade_flag_set + 0x4023eb38 system_upgrade_flag_check + 0x4023eb5c system_upgrade_reboot + 0x4023ec84 system_deep_sleep_instant + 0x4023ee1c system_deep_sleep + 0x4023ee7c system_deep_sleep_set_option + 0x4023ee98 system_phy_temperature_alert + 0x4023eeac system_phy_set_max_tpw + 0x4023eec0 system_phy_set_tpw_via_vdd33 + 0x4023eed4 system_phy_set_rfoption + 0x4023eee8 system_phy_set_powerup_option + 0x4023eefc system_update_cpu_freq + 0x4023ef58 system_get_cpu_freq + 0x4023ef70 system_overclock + 0x4023ef9c system_restoreclock + 0x4023efcc system_timer_reinit + 0x4023efe4 system_relative_time + 0x4023f008 system_station_got_ip_set + 0x4023f130 system_print_meminfo + 0x4023f190 system_get_free_heap_size + 0x4023f1a8 system_get_chip_id + 0x4023f1cc system_rtc_clock_cali_proc + 0x4023f1e0 system_get_rtc_time + 0x4023f1f0 system_mktime + 0x4023f2c0 system_init_done_cb + 0x4023f2c8 system_get_rst_info + 0x4023f2d0 system_get_data_of_array_8 + 0x4023f2f4 system_get_data_of_array_16 + 0x4023f31c system_get_string_from_flash + 0x4023f388 wifi_softap_dhcps_start + 0x4023f3d0 wifi_softap_dhcps_stop + 0x4023f410 wifi_softap_dhcps_status + 0x4023f418 wifi_station_dhcpc_start + 0x4023f470 wifi_station_dhcpc_stop + 0x4023f4b0 wifi_station_dhcpc_event + 0x4023f524 wifi_station_dhcpc_set_maxtry + 0x4023f534 wifi_station_dhcpc_status + 0x4023f5ac wifi_get_opmode + 0x4023f5c0 wifi_get_opmode_default + 0x4023f63c wifi_get_broadcast_if + 0x4023f678 wifi_set_broadcast_if + 0x4023f7d8 wifi_set_opmode + 0x4023f7ec wifi_set_opmode_current + 0x4023f800 system_get_checksum + 0x4023f844 wifi_param_save_protect_with_check + 0x4023f900 system_param_save_with_protect + 0x4023f9a8 system_save_sys_param + 0x4023f9d4 system_param_load + 0x4023fb0c wifi_station_get_config + 0x4023fb20 wifi_station_get_config_default + 0x4023fb40 wifi_station_get_ap_info + 0x4023fbf8 wifi_station_ap_number_set + 0x4023ff84 wifi_station_set_config + 0x4023ff9c wifi_station_set_config_current + 0x4023ffb4 wifi_station_restore_config + 0x4023ffcc wifi_station_get_current_ap_id + 0x4023ffe0 wifi_station_ap_check + 0x40240028 wifi_station_ap_change + 0x40240154 wifi_station_scan + 0x402401a0 wifi_station_get_auto_connect + 0x402401b4 wifi_station_set_auto_connect + 0x40240204 wifi_station_save_pmk2cache + 0x402402b8 wifi_station_connect + 0x4024034c wifi_station_disconnect + 0x4024040c wifi_station_get_connect_status + 0x4024043c wifi_station_set_reconnect_policy + 0x40240454 wifi_station_get_reconnect_policy + 0x4024045c wifi_station_get_rssi + 0x402404ac wifi_station_set_default_hostname + 0x40240514 wifi_station_get_hostname + 0x40240544 wifi_station_set_hostname + 0x402405e4 wifi_softap_cacl_mac + 0x40240654 wifi_softap_set_default_ssid + 0x40240834 wifi_softap_get_config + 0x40240848 wifi_softap_get_config_default + 0x40240b9c wifi_softap_set_config + 0x40240bb0 wifi_softap_set_config_current + 0x40240bc4 wifi_softap_set_station_info + 0x40240c30 wifi_softap_get_station_info + 0x40240ce0 wifi_softap_free_station_info + 0x40240d28 wifi_softap_get_station_num + 0x40240d78 wifi_softap_deauth + 0x40240e28 wifi_softap_get_beacon_only_mode + 0x40240e3c wifi_softap_set_beacon_only_mode + 0x40240ea0 wifi_register_user_ie_manufacturer_recv_cb + 0x40240eb4 wifi_unregister_user_ie_manufacturer_recv_cb + 0x40240ee8 wifi_set_user_ie + 0x40240ff8 wifi_get_user_ie + 0x4024102c wifi_get_phy_mode + 0x40241034 wifi_set_phy_mode + 0x402410fc wifi_set_sleep_type + 0x40241118 wifi_get_sleep_type + 0x4024112c wifi_get_channel + 0x40241144 wifi_set_channel + 0x40241184 wifi_promiscuous_set_mac + 0x402411e0 wifi_promiscuous_enable + 0x402412c4 wifi_set_promiscuous_rx_cb + 0x402412d4 wifi_get_ip_info + 0x40241354 wifi_set_ip_info + 0x402413c8 wifi_get_macaddr + 0x40241428 wifi_set_macaddr + 0x40241544 wifi_enable_6m_rate + 0x4024154c wifi_get_user_fixed_rate + 0x4024156c wifi_set_user_fixed_rate + 0x4024158c wifi_set_user_sup_rate + 0x402415c8 wifi_set_user_rate_limit + 0x402415ec wifi_get_user_limit_rate_mask + 0x402415f4 wifi_set_user_limit_rate_mask + 0x4024160c wifi_register_send_pkt_freedom_cb + 0x40241620 wifi_unregister_send_pkt_freedom_cb + 0x4024162c wifi_send_pkt_freedom + 0x40241678 wifi_rfid_locp_recv_open + 0x4024168c wifi_rfid_locp_recv_close + 0x402416a0 wifi_register_rfid_locp_recv_cb + 0x402416b4 wifi_unregister_rfid_locp_recv_cb + 0x402416cc wifi_status_led_install + 0x40241700 wifi_status_led_uninstall + 0x40241724 wifi_set_status_led_output_level + 0x4024177c wifi_set_event_handler_cb + 0x402417c4 system_os_task + 0x40241800 system_uart_swap + 0x40241860 system_uart_de_swap + 0x40241894 system_get_sdk_version + *fill* 0x40241899 0x3 + .irom0.text 0x4024189c 0x2f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x3b2 (size before relaxing) + 0x40241954 eagle_lwip_if_alloc + 0x40241b04 eagle_lwip_if_free + 0x40241b70 eagle_lwip_getif + *fill* 0x40241b92 0x2 + .irom0.text 0x40241b94 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + 0x302 (size before relaxing) + 0x40241b94 inc_byte_array + 0x40241be8 hex2byte + 0x40241c1c hexstr2bin + 0x40241c68 wpa_get_ntp_timestamp + 0x40241d00 wpa_config_parse_string + 0x40241e04 dup_binstr + *fill* 0x40241e4a 0x2 + .irom0.text 0x40241e4c 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + 0xdc (size before relaxing) + 0x40241e50 ets_strdup + 0x40241e94 os_get_time + 0x40241e98 r_rand + 0x40241eac os_random + 0x40241ebc os_get_random + .irom0.text 0x40241f18 0xd3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0xee8 (size before relaxing) + 0x40242118 node_insert_to_list + 0x40242154 node_remove_from_list + 0x4024218c dhcps_start + 0x40242314 dhcps_stop + 0x40242380 wifi_softap_set_dhcps_lease + 0x4024246c wifi_softap_get_dhcps_lease + 0x402424b4 dhcps_coarse_tmr + 0x40242574 wifi_softap_set_dhcps_offer_option + 0x402425b4 wifi_softap_set_dhcps_lease_time + 0x402425e4 wifi_softap_reset_dhcps_lease_time + 0x40242610 wifi_softap_get_dhcps_lease_time + 0x40242618 wifi_softap_dhcps_client_leave + 0x402426d4 wifi_softap_dhcps_client_update + .irom0.text 0x40242c54 0xbd5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0xcb5 (size before relaxing) + 0x40242c54 espconn_copy_partial + 0x40242d08 espconn_list_creat + 0x40242d28 espconn_list_delete + 0x40242d4c espconn_pbuf_create + 0x40242d68 espconn_pbuf_delete + 0x40242d90 espconn_find_connection + 0x40242e34 espconn_connect + 0x40242f40 espconn_create + 0x40242f90 espconn_send + 0x40242f90 espconn_sent + 0x40243080 espconn_sendto + 0x402430e0 espconn_tcp_get_wnd + 0x40243100 espconn_tcp_set_wnd + 0x40243128 espconn_tcp_get_mss + 0x40243130 espconn_tcp_get_max_con + 0x40243140 espconn_tcp_set_max_con + 0x40243164 espconn_tcp_get_max_retran + 0x40243174 espconn_tcp_set_max_retran + 0x40243198 espconn_tcp_get_max_syn + 0x402431a8 espconn_tcp_set_max_syn + 0x402431c8 espconn_tcp_get_max_con_allow + 0x402431f0 espconn_tcp_set_max_con_allow + 0x40243224 espconn_tcp_set_buf_count + 0x40243254 espconn_regist_sentcb + 0x40243264 espconn_regist_write_finish + 0x4024327c espconn_regist_connectcb + 0x40243290 espconn_regist_recvcb + 0x402432a0 espconn_regist_reconcb + 0x402432b4 espconn_regist_disconcb + 0x402432cc espconn_get_connection_info + 0x40243390 espconn_accept + 0x402433dc espconn_regist_time + 0x40243444 espconn_disconnect + 0x40243494 espconn_abort + 0x402434e8 espconn_get_packet_info + 0x40243590 espconn_set_opt + 0x402435f4 espconn_clear_opt + 0x4024365c espconn_set_keepalive + 0x402436ec espconn_get_keepalive + 0x40243778 espconn_delete + 0x402437bc espconn_port + 0x402437f4 espconn_gethostbyname + 0x40243814 espconn_dns_setserver + *fill* 0x40243829 0x3 + .irom0.text 0x4024382c 0x105c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x13b0 (size before relaxing) + 0x40243ecc espconn_kill_oldest_pcb + 0x40243ff8 espconn_kill_pcb + 0x40244060 espconn_find_current_pcb + 0x40244114 espconn_tcp_memp_free + 0x4024434c espconn_tcp_sent + 0x40244430 espconn_tcp_disconnect + 0x40244460 espconn_recv_hold + 0x402444a4 espconn_recv_unhold + 0x40244508 espconn_tcp_write + 0x40244630 espconn_tcp_client + 0x40244724 espconn_tcp_server + 0x402447d8 espconn_tcp_delete + 0x4024486c espconn_init + .irom0.text 0x40244888 0x55c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + 0x6d4 (size before relaxing) + 0x4024496c espconn_udp_sendto + 0x40244b58 espconn_udp_sent + 0x40244cfc espconn_udp_disconnect + 0x40244d3c espconn_udp_server + 0x40244dac espconn_igmp_leave + 0x40244dc8 espconn_igmp_join + .irom0.text 0x40244de4 0x13f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x15d8 (size before relaxing) + 0x40245b9c dhcp_set_struct + 0x40245bc8 dhcp_cleanup + 0x40245bf0 dhcp_inform + 0x40245ca0 dhcp_network_changed + 0x40245cec dhcp_arp_reply + 0x40245d9c dhcp_renew + 0x40245e80 dhcp_coarse_tmr + 0x40245f0c dhcp_release + 0x40245fdc dhcp_fine_tmr + 0x402460d8 dhcp_stop + 0x40246114 dhcp_start + .irom0.text 0x402461d8 0x5cf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x67f (size before relaxing) + 0x402465e8 dns_setserver + 0x40246610 dns_init + 0x40246654 dns_getserver + 0x4024666c dns_tmr + 0x4024669c dns_gethostbyname + *fill* 0x402467a7 0x1 + .irom0.text 0x402467a8 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + 0x71 (size before relaxing) + 0x402467ac lwip_init + *fill* 0x402467ed 0x3 + .irom0.text 0x402467f0 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + 0x2dc (size before relaxing) + 0x402467f0 netif_init + 0x402467f4 netif_find + 0x4024682c netif_set_ipaddr + 0x40246898 netif_set_addr + 0x402468cc netif_add + 0x40246940 netif_set_gw + 0x40246948 netif_set_netmask + 0x40246950 netif_set_default + 0x40246958 netif_set_up + 0x40246998 netif_set_down + 0x402469bc netif_remove + 0x40246a24 netif_set_link_up + 0x40246a70 netif_set_link_down + .irom0.text 0x40246a80 0x750 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + 0x794 (size before relaxing) + 0x40246a80 pbuf_free_ooseq_new + 0x40246adc pbuf_header + 0x40246b6c pbuf_free + 0x40246c04 pbuf_alloc + 0x40246d84 pbuf_realloc + 0x40246dd0 pbuf_clen + 0x40246de4 pbuf_ref + 0x40246df0 pbuf_cat + 0x40246e24 pbuf_chain + 0x40246e40 pbuf_dechain + 0x40246e78 pbuf_copy + 0x40246f3c pbuf_copy_partial + 0x40246fd0 pbuf_take + 0x40247044 pbuf_coalesce + 0x40247084 pbuf_get_at + 0x402470a8 pbuf_memcmp + 0x40247124 pbuf_memfind + 0x40247188 pbuf_strstr + .irom0.text 0x402471d0 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x9b8 (size before relaxing) + 0x402471d4 sntp_time_inc + 0x4024731c sntp_mktm_r + 0x402475dc sntp_localtime_r + 0x402475f4 sntp_localtime + 0x40247618 sntp__tzcalc_limits + 0x4024779c sntp_asctime_r + 0x402477e0 sntp_asctime + 0x40247940 sntp_get_timezone + 0x40247948 sntp_set_timezone + 0x40247958 sntp_init + 0x40247994 sntp_stop + 0x402479d0 sntp_setserver + 0x402479ec sntp_getserver + 0x40247a04 sntp_setservername + 0x40247a14 sntp_getservername + .irom0.text 0x40247a28 0xbbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0xd07 (size before relaxing) + 0x40247a30 tcp_bind + 0x40247ae0 tcp_listen_with_backlog + 0x40247bc8 tcp_update_rcv_ann_wnd + 0x40247c14 tcp_recved + 0x40247c6c tcp_seg_free + 0x40247c98 tcp_segs_free + 0x40247cb8 tcp_setprio + 0x40247cc0 tcp_seg_copy + 0x40247cfc tcp_arg + 0x40247d00 tcp_recv + 0x40247d08 tcp_sent + 0x40247d10 tcp_err + 0x40247d18 tcp_accept + 0x40247d1c tcp_poll + 0x40247d24 tcp_pcb_purge + 0x40247d80 tcp_slowtmr + 0x4024802c tcp_pcb_remove + 0x4024809c tcp_close + 0x402480c4 tcp_recv_null + 0x402480fc tcp_fasttmr + 0x40248190 tcp_tmr + 0x402481b4 tcp_shutdown + 0x4024821c tcp_abandon + 0x402482bc tcp_abort + 0x402482d4 tcp_next_iss + 0x402482f4 tcp_alloc + 0x40248440 tcp_new + 0x40248454 tcp_eff_send_mss + 0x40248488 tcp_connect + *fill* 0x402485e3 0x1 + .irom0.text 0x402485e4 0xf47 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + 0x1057 (size before relaxing) + 0x402487dc tcp_write + 0x40248af4 tcp_enqueue_flags + 0x40248bb4 tcp_send_fin + 0x40248c00 tcp_send_empty_ack + 0x40248c9c tcp_output + 0x402490c0 tcp_rst + 0x40249204 tcp_rexmit_rto + 0x40249288 tcp_rexmit + 0x40249334 tcp_rexmit_fast + 0x40249398 tcp_keepalive + 0x4024941c tcp_zero_window_probe + *fill* 0x4024952b 0x1 + .irom0.text 0x4024952c 0x297 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x30f (size before relaxing) + 0x40249534 sys_timeout + 0x402495c4 tcp_timer_needed + 0x40249648 sys_timeouts_init + 0x402496d4 sys_untimeout + 0x4024972c sys_check_timeouts + 0x402497b4 sys_restart_timeouts + *fill* 0x402497c3 0x1 + .irom0.text 0x402497c4 0x53d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + 0x5b9 (size before relaxing) + 0x402497d0 udp_input + 0x402499c0 udp_bind + 0x40249a4c udp_sendto_if + 0x40249b94 udp_sendto + 0x40249be8 udp_send + 0x40249c04 udp_connect + 0x40249c6c udp_disconnect + 0x40249c80 udp_recv + 0x40249c8c udp_remove + 0x40249cc8 udp_new + *fill* 0x40249d01 0x3 + .irom0.text 0x40249d04 0x907 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0xa07 (size before relaxing) + 0x40249f54 etharp_tmr + 0x40249fac etharp_cleanup_netif + 0x40249fe8 etharp_find_addr + 0x4024a038 etharp_request + 0x4024a180 etharp_query + 0x4024a31c etharp_output + 0x4024a414 ethernet_input + *fill* 0x4024a60b 0x1 + .irom0.text 0x4024a60c 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + 0x2ac (size before relaxing) + 0x4024a60c icmp_input + 0x4024a784 icmp_dest_unreach + .irom0.text 0x4024a82c 0x5be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + 0x646 (size before relaxing) + 0x4024a9c4 igmp_init + 0x4024a9d8 igmp_stop + 0x4024aa44 igmp_report_groups + 0x4024aa74 igmp_lookfor_group + 0x4024aa90 igmp_start + 0x4024aaec igmp_input + 0x4024ac0c igmp_joingroup + 0x4024acd8 igmp_leavegroup + 0x4024adb0 igmp_tmr + *fill* 0x4024adea 0x2 + .irom0.text 0x4024adec 0x5ba C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x652 (size before relaxing) + 0x4024adec ip_route + 0x4024ae68 ip_router + 0x4024aecc ip_input + 0x4024b130 ip_output_if_opt + 0x4024b330 ip_output_if + 0x4024b358 ip_output + *fill* 0x4024b3a6 0x2 + .irom0.text 0x4024b3a8 0x380 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + 0x3a4 (size before relaxing) + 0x4024b3a8 ip4_addr_isbroadcast + 0x4024b3e4 ip4_addr_netmask_valid + 0x4024b434 ipaddr_aton + 0x4024b61c ipaddr_addr + 0x4024b638 ipaddr_ntoa_r + 0x4024b714 ipaddr_ntoa + .irom0.text 0x4024b728 0x1f3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + 0x23f (size before relaxing) + 0x4024b72c raw_input + 0x4024b7b4 raw_bind + 0x4024b7c0 raw_connect + 0x4024b7cc raw_recv + 0x4024b7d4 raw_sendto + 0x4024b878 raw_send + 0x4024b894 raw_remove + 0x4024b8d0 raw_new + *fill* 0x4024b91b 0x1 + .irom0.text 0x4024b91c 0x1394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x156c (size before relaxing) + 0x4024c330 tcp_input + .irom0.text 0x4024ccb0 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x545 (size before relaxing) + 0x4024cd3c ieee80211_rate_ref_init + 0x4024cd50 ieee80211_freedom_inside_cb + 0x4024cd80 ieee80211_freedom_init + 0x4024cda4 ieee80211_user_ie_init + 0x4024cdc0 ieee80211_ifattach + 0x4024ce24 ieee80211_mhz2ieee + 0x4024ce80 ieee80211_chan2ieee + 0x4024ce9c ieee80211_ieee2mhz + 0x4024cedc ieee80211_find_channel + 0x4024cf08 ieee80211_find_channel_byieee + 0x4024cf58 wifi_mode_set + *fill* 0x4024d12d 0x3 + .irom0.text 0x4024d130 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + 0xd7 (size before relaxing) + 0x4024d130 ieee80211_crypto_attach + 0x4024d134 ieee80211_crypto_available + 0x4024d138 ieee80211_crypto_setkey + 0x4024d13c ieee80211_crypto_encap + 0x4024d194 ieee80211_crypto_decap + *fill* 0x4024d1ff 0x1 + .irom0.text 0x4024d200 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + 0x50 (size before relaxing) + 0x4024d204 ieee80211_getmgtframe + .irom0.text 0x4024d24c 0x1a10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x1f77 (size before relaxing) + 0x4024d870 ieee80211_hostap_attach + 0x4024d96c hostap_handle_timer + 0x4024da04 hostap_input + 0x4024e95c wifi_softap_start + 0x4024eac4 wifi_softap_stop + *fill* 0x4024ec5c 0x0 + .irom0.text 0x4024ec5c 0xa86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + 0xb4e (size before relaxing) + 0x4024ec6c ieee80211_ht_attach + 0x4024ecc0 ieee80211_ht_node_init + 0x4024ed00 ieee80211_ht_node_cleanup + 0x4024ed38 ieee80211_parse_htcap + 0x4024ee20 ieee80211_ht_updateparams + 0x4024ef34 ieee80211_setup_htrates + 0x4024f000 ieee80211_setup_basic_htrates + 0x4024f34c ieee80211_add_htcap + 0x4024f368 ieee80211_add_htcap_vendor + 0x4024f48c ieee80211_add_htinfo + 0x4024f4a8 ieee80211_add_htinfo_vendor + *fill* 0x4024f6e2 0x2 + .irom0.text 0x4024f6e4 0xa8c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + 0xb1c (size before relaxing) + 0x4024f6e4 ieee80211_deliver_data + 0x4024f738 ieee80211_decap + 0x4024f83c ieee80211_setup_rates + 0x4024f8ac ieee80211_alloc_challenge + 0x4024f8e8 ieee80211_parse_beacon + 0x4024febc ieee80211_parse_wpa + 0x4024ffd0 ieee80211_parse_rsn + 0x402500d0 ieee80211_parse_action + 0x4025016c ieee80211_setup_rateset + .irom0.text 0x40250170 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + 0x302 (size before relaxing) + 0x4025017c ieee80211_mesh_quick_init + 0x402501ec ieee80211_mesh_quick_deinit + 0x4025021c ieee80211_mesh_quick_set + 0x40250318 ieee80211_mesh_quick_get + 0x402503e4 ieee80211_mesh_quick_ie_add + *fill* 0x40250416 0x2 + .irom0.text 0x40250418 0x1c5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + 0x1fea (size before relaxing) + 0x40250420 ieee80211_output_pbuf + 0x40250690 ieee80211_send_setup + 0x402507c4 ieee80211_mgmt_output + 0x402508a8 ieee80211_tx_mgt_cb + 0x402508b0 ieee80211_send_nulldata + 0x40250d20 ieee80211_add_rates + 0x40250d70 ieee80211_add_xrates + 0x40250e40 ieee80211_send_probereq + 0x40251054 ieee80211_getcapinfo + 0x402510b0 ieee80211_send_mgmt + 0x40251650 ieee80211_alloc_proberesp + 0x4025182c ieee80211_send_proberesp + 0x40251974 ieee80211_alloc_deauth + 0x402519b4 ieee80211_send_deauth + 0x40251aec ieee80211_freedom_output + 0x40251edc ieee80211_beacon_alloc + *fill* 0x40252072 0x2 + .irom0.text 0x40252074 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + 0x108 (size before relaxing) + 0x40252074 ieee80211_phy_init + 0x402520a8 ieee80211_phy_type_get + 0x402520c4 ieee80211_setup_ratetable + .irom0.text 0x40252154 0x1b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + 0x1f2 (size before relaxing) + 0x40252154 ieee80211_psq_init + 0x40252174 ieee80211_psq_cleanup + 0x4025217c ieee80211_set_tim + 0x402521bc ieee80211_pwrsave + 0x40252224 pwrsave_flushq + 0x402522d4 ieee80211_node_pwrsave + *fill* 0x4025230a 0x2 + .irom0.text 0x4025230c 0x101 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + 0x129 (size before relaxing) + 0x40252310 ieee80211_proto_attach + 0x40252338 ieee80211_set_shortslottime + 0x40252354 ieee80211_iserp_rateset + 0x40252388 ieee80211_wme_initparams + 0x4025238c ieee80211_wme_updateparams + 0x40252394 ieee80211_mlme_connect_bss + *fill* 0x4025240d 0x3 + .irom0.text 0x40252410 0xb2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + 0xd6 (size before relaxing) + 0x40252414 ieee80211_rfid_locp_recv_open + 0x40252450 ieee80211_rfid_locp_recv_close + 0x40252468 ieee80211_rfid_locp_recv_reset + 0x40252488 ieee80211_rfid_locp_recv + 0x402524a4 register_ieee80211_rfid_locp_recv_cb + 0x402524b8 unregister_ieee80211_rfid_locp_recv_cb + *fill* 0x402524c2 0x2 + .irom0.text 0x402524c4 0xf55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + 0x12a1 (size before relaxing) + 0x402524d0 ieee80211_scan_attach + 0x40252564 scan_start + 0x40252728 scan_pm_channel_op_cb + 0x402528c8 scan_cancel + 0x40252a24 scan_add_bssid + 0x40252a48 scan_remove_bssid + 0x40252a54 scan_hidden_ssid + 0x40252a5c scan_add_probe_ssid + 0x40252ab0 scan_remove_probe_ssid + 0x40252bec scan_clear_channles + 0x40252c60 scan_set_desChan + 0x40252c6c scan_get_type + 0x40252c74 cannel_scan_connect_state + 0x40252c8c scan_connect_state + 0x40252cd4 scan_check_hidden + 0x40252d00 scan_profile_check + 0x402530a8 scan_parse_beacon + *fill* 0x40253419 0x3 + .irom0.text 0x4025341c 0x1046 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + 0x12c1 (size before relaxing) + 0x40253478 sta_status_set + 0x402534e4 ieee80211_sta_new_state + 0x40253874 sta_input + 0x40253dc0 ieee80211_parse_wmeparams + 0x402543b8 wifi_station_start + 0x40254428 wifi_station_stop + *fill* 0x40254462 0x2 + .irom0.text 0x40254464 0x29e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + 0x31e (size before relaxing) + 0x40254470 chm_init + 0x402544d4 chm_acquire_lock + 0x40254518 chm_release_lock + 0x4025452c chm_start_op + 0x402545d0 chm_end_op + 0x40254618 chm_cancel_op + 0x4025464c chm_return_home_channel + 0x4025467c chm_set_current_channel + 0x402546ac chm_freq2index + 0x402546d4 chm_check_same_channel + *fill* 0x40254702 0x2 + .irom0.text 0x40254704 0x17b9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + 0x1d31 (size before relaxing) + 0x40254710 cnx_attach + 0x40254750 cnx_sta_connect_led_timer_cb + 0x402547a4 cnx_sta_connect_cmd + 0x40254860 cnx_sta_scan_cmd + 0x40254abc cnx_connect_timeout + 0x40254b38 cnx_auth_timeout + 0x40254b5c cnx_assoc_timeout + 0x40254b80 cnx_handshake_timeout + 0x40254bc0 cnx_start_handoff_cb + 0x40255020 cnx_bss_alloc + 0x402550c0 cnx_rc_search + 0x40255140 cnx_add_rc + 0x402551ac cnx_remove_all_rc + 0x402551f8 cnx_remove_rc + 0x402552c8 cnx_rc_update_rssi + 0x40255350 cnx_rc_update_state_metric + 0x402553bc cnx_rc_update_age + 0x402553e0 cnx_update_bss + 0x40255414 cnx_update_bss_more + 0x402555f0 cnx_sta_leave + 0x40255880 cnx_sta_associated + 0x40255988 cnx_node_alloc + 0x402559fc cnx_node_remove + 0x40255a88 cnx_node_search + 0x40255b04 cnx_node_leave + 0x40255c04 wifi_softap_staconnected_event_policy + 0x40255c2c wifi_softap_toomany_deny + 0x40255c68 cnx_node_join + *fill* 0x40255ebd 0x3 + .irom0.text 0x40255ec0 0x16f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + 0x193 (size before relaxing) + 0x40255ed0 ieee80211_send_action_register + 0x40255f04 ieee80211_send_action_unregister + 0x40255f18 ieee80211_send_action + 0x40255f84 ieee80211_recv_action_register + 0x40255fb8 ieee80211_recv_action_unregister + 0x40255fcc ieee80211_recv_action + *fill* 0x4025602f 0x1 + .irom0.text 0x40256030 0x479 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + 0x505 (size before relaxing) + 0x40256034 get_iav_key + 0x40256054 register_ieee80211_action_vendor_get_key_cb + 0x40256068 unregister_ieee80211_action_vendor_get_key_cb + 0x4025607c ieee80211_add_action_vendor_spec_esp + 0x402560c4 ieee80211_alloc_action_vendor_spec + 0x402561b0 ieee80211_send_action_vendor_spec + 0x40256344 ieee80211_recv_action_vendor_spec + 0x4025644c ieee80211_action_vendor_spec_attach + 0x4025648c register_ieee80211_action_vendor_spec_cb + 0x402564a0 unregister_ieee80211_action_vendor_spec_cb + *fill* 0x402564a9 0x3 + .irom0.text 0x402564ac 0x15d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + 0x165 (size before relaxing) + *fill* 0x40256609 0x3 + .irom0.text 0x4025660c 0x23d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + 0x25d (size before relaxing) + 0x40256610 ieee80211_add_ie_vendor_esp_head + 0x40256648 ieee80211_add_ie_vendor_esp_mesh_assoc + 0x402566cc ieee80211_add_ie_vendor_esp_mesh_group + 0x402566fc ieee80211_add_ie_vendor_esp_simple_pair + 0x4025674c ieee80211_add_ie_vendor_esp_freq_annon + 0x40256784 ieee80211_add_ie_vendor_esp_now + 0x402567bc ieee80211_add_ie_vendor_esp_ssid + 0x402567fc ieee80211_add_ie_vendor_esp_manufacturer + *fill* 0x40256849 0x3 + .irom0.text 0x4025684c 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + 0x4df (size before relaxing) + 0x40256850 rijndaelEncrypt + 0x40256c6c aes_encrypt_init + 0x40256cc0 aes_encrypt + 0x40256cd8 aes_encrypt_deinit + *fill* 0x40256d03 0x1 + .irom0.text 0x40256d04 0x304 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + 0x31c (size before relaxing) + 0x40256d08 rijndaelKeySetupEnc + .irom0.text 0x40257008 0xfa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + 0x11e (size before relaxing) + 0x4025700c rf_init + 0x40257028 bb_init + 0x40257040 phy_init + 0x40257070 RFChannelSel + 0x4025708c phy_delete_channel + 0x402570a4 phy_enable_agc + 0x402570bc phy_disable_agc + 0x402570d4 phy_initialize_bb + 0x402570ec phy_set_sense + *fill* 0x40257102 0x2 + .irom0.text 0x40257104 0x1747 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + 0x1973 (size before relaxing) + 0x40257104 ram_pbus_set_rxgain + 0x402571d4 ram_pbus_debugmode + 0x40257288 ram_pbus_xpd_tx_on + 0x402572f4 set_rf_freq_offset + 0x40257364 chip_v6_rxmax_ext_ana + 0x402574b8 ram_chip_v6_rx_init + 0x402574e8 tsen_meas + 0x40257594 readvdd33 + 0x4025775c txpwr_offset + 0x40257818 set_txcap_reg + 0x40257898 ram_ana_inf_gating_en + 0x402579f8 ram_restart_cal + 0x40257a64 wait_rfpll_cal_end + 0x40257af8 ram_rfpll_set_freq + 0x40257bfc ram_set_channel_freq + 0x40257ef8 chip_60_set_channel + 0x40258098 chip_v6_set_chan_offset + 0x402580f0 chip_v6_set_chan + 0x40258198 chip_v6_set_chan_wakeup + 0x40258218 chip_v6_rf_init + 0x4025847c low_power_set + 0x402584cc test_tout + 0x40258644 check_data_flag + 0x40258664 phy_get_check_flag + 0x40258798 phy_get_vdd33 + *fill* 0x4025884b 0x1 + .irom0.text 0x4025884c 0x3f90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + 0x46a8 (size before relaxing) + 0x4025884c ram_tx_mac_enable + 0x40258850 ram_tx_mac_disable + 0x40258854 rtc_mem_backup + 0x40258884 rtc_mem_recovery + 0x402588b4 set_cal_rxdc + 0x40258968 set_rx_gain_cal_iq + 0x40258cc0 gen_rx_gain_table + 0x40258e18 pbus_set_rxbbgain + 0x40258e94 set_rx_gain_testchip_50 + 0x402591cc ram_get_corr_power + 0x402592bc check_data_func + 0x402592dc do_noisefloor_lsleep_v50 + 0x40259310 do_noisefloor + 0x40259380 start_dig_rx + 0x402593c4 stop_dig_rx + 0x402593f0 chip_v6_set_chanfreq + 0x4025941c tx_cap_init + 0x40259608 target_power_add_backoff + 0x40259634 tx_pwctrl_init_cal + 0x402597ac tx_atten_set_interp + 0x40259a0c check_tx_pwr_cal + 0x40259b50 tx_pwctrl_init + 0x40259c74 ram_get_noisefloor + 0x40259c90 get_noisefloor_sat + 0x40259cc0 ram_set_noise_floor + 0x40259d1c ram_start_noisefloor + 0x40259d68 read_hw_noisefloor + 0x40259d90 noise_check_loop + 0x40259ee8 noise_init + 0x4025a0e8 target_power_backoff + 0x4025a13c sdt_on_noise_start + 0x4025a1bc chip_v6_set_chan_rx_cmp + 0x4025a348 chip_v6_set_chan_misc + 0x4025a3cc phy_dig_spur_set + 0x4025a724 phy_dig_spur_prot + 0x4025a95c chip_v6_rxmax_ext_dig + 0x4025a9a8 chip_v6_rxmax_ext + 0x4025aa44 phy_bb_rx_cfg + 0x4025ae5c uart_wait_idle + 0x4025ae90 phy_pbus_soc_cfg + 0x4025af4c phy_gpio_cfg + 0x4025b290 tx_cont_en + 0x4025b338 tx_cont_dis + 0x4025b38c tx_cont_cfg + 0x4025b3ac chip_v6_initialize_bb + 0x4025b514 periodic_cal + 0x4025b5f4 bbpll_cal + 0x4025b68c periodic_cal_top + 0x4025b6ec register_chipv6_phy_init_param + 0x4025b994 change_bbpll160_sleep + 0x4025bb44 change_bbpll160 + 0x4025bb7c set_crystal_uart + 0x4025bc0c ant_switch_init + 0x4025bcbc reduce_current_init + 0x4025bda8 rtc_mem_check + 0x4025bde4 phy_afterwake_set_rfoption + 0x4025be04 deep_sleep_set_option + 0x4025be30 write_data_to_rtc + 0x4025be68 get_data_from_rtc + 0x4025bee8 register_chipv6_phy + 0x4025c390 set_dpd_bypass + 0x4025c3b8 set_rf_gain_stage10 + 0x4025c3e8 get_vdd33_offset + 0x4025c45c get_phy_target_power + 0x4025c510 set_most_pwr_reg + 0x4025c5e4 phy_set_most_tpw + 0x4025c604 phy_vdd33_set_tpw + 0x4025c61c get_adc_rand + 0x4025c64c phy_get_rand + 0x4025c664 phy_tx_pwctrl_cali + 0x4025c68c phy_check_data_table + 0x4025c6c8 phy_after_init_enrx + 0x4025c72c phy_set_rx11b_reg + 0x4025c760 phy_set_powerup_option + 0x4025c770 phy_get_txpwr_param + 0x4025c7bc phy_get_rxnf_param + 0x4025c7c8 phy_get_freq_param + .irom0.text 0x4025c7dc 0x2168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0x23a4 (size before relaxing) + 0x4025c7dc txbbgain2dcoindex + 0x4025c7fc dcoindex2txbbgain + 0x4025c820 init_cal_dcoffset + 0x4025c8e4 set_rfanagain_dc_reg + 0x4025c980 set_txdc_pbus + 0x4025c9ec get_rf_gain_qdb + 0x4025ca14 correct_rf_ana_gain + 0x4025cb1c get_sar_dout + 0x4025cba8 cal_rf_ana_gain + 0x4025ccd4 meas_tone_pwr_db + 0x4025cd44 tx_pwr_backoff + 0x4025cecc get_fcc_1m2m_pwr_offset + 0x4025cf08 ram_set_txbb_atten + 0x4025cf9c txiq_get_mis_pwr + 0x4025d040 txiq_cover + 0x4025d258 ram_rfcal_txiq + 0x4025d4c4 rc_cal + 0x4025d684 get_target_power_offset + 0x4025d78c get_pwctrl_correct + 0x4025d7e4 tx_pwctrl_cal + 0x4025dae0 tx_pwctrl_bg_init + 0x4025db58 tx_pwctrl_background + 0x4025dc10 read_sar_dout + 0x4025dc74 ram_get_fm_sar_dout + 0x4025dd18 ram_cal_tos_v60 + 0x4025dee8 ram_get_bb_atten + 0x4025df18 ram_rfcal_txcap + 0x4025e0dc ram_rfcal_pwrctrl + 0x4025e304 ram_rxiq_get_mis + 0x4025e4d0 ram_rxiq_cover_mg_mp + 0x4025e674 ram_rfcal_rxiq + 0x4025e880 dpd_scale_set + 0x4025e8c8 dpd_mem_write + .irom0.text 0x4025e944 0xd8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0xfc6 (size before relaxing) + 0x4025e944 pm_usec2rtc + 0x4025e978 pm_rtc2usec + 0x4025e984 pm_set_sleep_cycles + 0x4025e9a8 pm_sleep_opt + 0x4025eaec pm_wakeup_opt + 0x4025eb24 get_chip_version + 0x4025eb64 pm_sleep_opt_bb_off + 0x4025eba4 pm_sleep_opt_bb_on + 0x4025ebec pm_set_pll_xtal_wait_time + 0x4025ec18 pm_prepare_to_sleep + 0x4025ec20 pm_sdio_nidle + 0x4025ec94 chg_lslp_mem_opt_8266 + 0x4025ecc4 pm_goto_sleep + 0x4025ee10 pm_wait4wakeup + 0x4025ee4c pm_open_rf + 0x4025ee84 pm_sleep_set_mac + 0x4025ef08 pm_set_wakeup_mac + 0x4025efa0 pm_check_mac_idle + 0x4025eff8 pm_set_sleep_btco + 0x4025f098 pm_set_wakeup_btco + 0x4025f1b0 pm_set_sleep_mode + 0x4025f2cc pm_unmask_bt + 0x4025f334 pm_wakeup_init + 0x4025f574 sleep_opt_8266 + 0x4025f594 sleep_opt_bb_on_8266 + 0x4025f5cc sleep_reset_analog_rtcreg_8266 + *fill* 0x4025f6ce 0x2 + .irom0.text 0x4025f6d0 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + 0x2ee (size before relaxing) + 0x4025f6d0 hostapd_config_defaults_bss + 0x4025f71c hostapd_config_defaults + 0x4025f7a0 hostapd_mac_comp + 0x4025f7b4 hostapd_mac_comp_empty + 0x4025f820 hostapd_setup_wpa_psk + 0x4025f850 hostapd_wep_key_cmp + 0x4025f8a0 hostapd_maclist_found + 0x4025f908 hostapd_rate_found + 0x4025f924 hostapd_get_psk + *fill* 0x4025f976 0x2 + .irom0.text 0x4025f978 0x1c86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + 0x1f66 (size before relaxing) + 0x4025fac4 wpa_auth_for_each_sta + 0x4025fc44 wpa_init + 0x4025fcd4 wpa_auth_sta_init + 0x4025fd1c wpa_auth_sta_associated + 0x4025fd88 wpa_auth_sta_no_wpa + 0x4025fde4 wpa_auth_sta_deinit + 0x4025feb4 wpa_receive + 0x40260318 __wpa_send_eapol + 0x4026083c wpa_remove_ptk + 0x40260888 wpa_auth_sm_event + *fill* 0x402615fe 0x2 + .irom0.text 0x40261600 0x582 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + 0x5f6 (size before relaxing) + 0x402616c4 wpa_write_rsn_ie + 0x402617d0 wpa_auth_gen_wpa_ie + 0x40261860 wpa_add_kde + 0x402618cc wpa_validate_wpa_ie + 0x40261ad8 wpa_parse_kde_ies + 0x40261b74 wpa_auth_uses_mfp + *fill* 0x40261b82 0x2 + .irom0.text 0x40261b84 0x14d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + 0x1708 (size before relaxing) + 0x40262b10 wpa_sm_rx_eapol + 0x40262c88 wpa_register + 0x40262cb4 wpa_set_profile + 0x40262ccc wpa_set_pmk + 0x40262cf8 wpa_set_bss + 0x40262efc pp_michael_mic_failure + 0x40262fa0 eapol_txcb + 0x4026302c wpa_sm_set_state + .irom0.text 0x40263054 0x76a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + 0x7fa (size before relaxing) + 0x4026319c wpa_parse_wpa_ie_rsn + 0x40263330 wpa_parse_wpa_ie_wpa + 0x402634c0 wpa_eapol_key_mic + 0x40263500 wpa_compare_rsn_ie + 0x40263528 wpa_pmk_to_ptk + 0x40263618 rsn_pmkid + 0x40263674 wpa_cipher_key_len + 0x40263698 wpa_cipher_to_alg + 0x402636c0 wpa_cipher_to_suite + 0x40263714 rsn_cipher_put_suites + 0x40263774 wpa_cipher_put_suites + *fill* 0x402637be 0x2 + .irom0.text 0x402637c0 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + 0xac (size before relaxing) + 0x40263838 wpa_snprintf_hex_uppercase + 0x4026384c wpa_snprintf_hex + 0x40263860 eloop_cancel_timeout + 0x40263864 eloop_register_timeout + .irom0.text 0x40263868 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + 0x341 (size before relaxing) + 0x40263868 wpa_parse_wpa_ie + 0x4026395c wpa_supplicant_parse_ies + 0x40263b5c wpa_gen_wpa_ie + *fill* 0x40263b8d 0x3 + .irom0.text 0x40263b90 0x41c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + 0x52c (size before relaxing) + 0x40263b94 ppInstallKey + 0x40263d24 wpa_config_profile + 0x40263d58 wpa_config_bss + 0x40263d84 wpa_config_assoc_ie + 0x40263d98 dhcp_bind_check + 0x40263dd0 eagle_auth_done + 0x40263f4c wpa_neg_complete + 0x40263f74 wpa_attach + .irom0.text 0x40263fac 0xd6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + 0xe2 (size before relaxing) + 0x4026401c wpa_sm_alloc_eapol + 0x4026405c wpa_sm_deauthenticate + 0x40264078 wpa_sm_mlme_setprotection + 0x4026407c wpa_sm_get_beacon_ie + 0x40264080 wpa_sm_disassociate + *fill* 0x40264082 0x2 + .irom0.text 0x40264084 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + 0x197 (size before relaxing) + *fill* 0x4026420b 0x1 + .irom0.text 0x4026420c 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + 0x7c (size before relaxing) + .irom0.text 0x40264284 0xdf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + 0x103 (size before relaxing) + 0x40264284 aes_wrap + *fill* 0x40264363 0x1 + .irom.text 0x40264364 0xa9f1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x4026ed55 0x3 + .irom.text 0x4026ed58 0x2bd .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + *fill* 0x4026f015 0x3 + .irom.text 0x4026f018 0x19f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + *fill* 0x4026f1b7 0x1 + .irom.text 0x4026f1b8 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + *fill* 0x4026f235 0x0 + *fill* 0x4026f235 0xb + .irom.text 0x4026f240 0x145 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + *fill* 0x4026f385 0x0 + *fill* 0x4026f385 0xb + .irom.text 0x4026f390 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + *fill* 0x4026f3eb 0x0 + *fill* 0x4026f3eb 0x0 + *fill* 0x4026f3eb 0x5 + .irom.text 0x4026f3f0 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + *fill* 0x4026f428 0x0 + .irom.text 0x4026f428 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + *fill* 0x4026f42f 0x0 + *fill* 0x4026f42f 0x1 + .irom.text 0x4026f430 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + *fill* 0x4026f43a 0x0 + *fill* 0x4026f43a 0x6 + .irom.text 0x4026f440 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + *fill* 0x4026f490 0x0 + .irom.text 0x4026f490 0x2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + *fill* 0x4026f4bf 0x0 + *fill* 0x4026f4bf 0x1 + .irom.text 0x4026f4c0 0x10d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + *fill* 0x4026f5cd 0x0 + *fill* 0x4026f5cd 0x3 + .irom.text 0x4026f5d0 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + *fill* 0x4026fa60 0x0 + .irom.text 0x4026fa60 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + *fill* 0x4026fbac 0x4 + .irom.text 0x4026fbb0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + *fill* 0x4026fc0b 0x0 + *fill* 0x4026fc0b 0x5 + .irom.text 0x4026fc10 0x2d5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x4026fc30 default_ssid + *fill* 0x4026fee5 0x0 + *fill* 0x4026fee5 0xb + .irom.text 0x4026fef0 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + *fill* 0x4026ff53 0x0 + *fill* 0x4026ff53 0xd + .irom.text 0x4026ff60 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + *fill* 0x4026ff69 0x0 + *fill* 0x4026ff69 0x7 + .irom.text 0x4026ff70 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .irom.text 0x4026ff7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x4026ff80 0x0 + *fill* 0x4026ff80 0x0 + *fill* 0x4026ff80 0x0 + *fill* 0x4026ff80 0x0 + .irom.text 0x4026ff80 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x4026ff80 tcp_pcb_lists + 0x4026ff90 tcp_persist_backoff + 0x4026ff97 tcp_backoff + *fill* 0x4026ffa4 0x0 + *fill* 0x4026ffa4 0x0 + *fill* 0x4026ffa4 0x0 + *fill* 0x4026ffa4 0x0 + *fill* 0x4026ffa4 0x0 + .irom0.text 0x4026ffa4 0x28c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + 0x4027000c inet_chksum_pseudo + 0x402700cc inet_chksum_pseudo_partial + 0x402701a8 inet_chksum + 0x402701c4 inet_chksum_pbuf + *fill* 0x40270230 0x0 + .irom.text 0x40270230 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + 0x40270230 ip_addr_broadcast + 0x40270234 ip_addr_any + .irom.text 0x40270238 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + 0x40270238 memp_sizes + *fill* 0x40270260 0x0 + *fill* 0x40270260 0x0 + .irom.text 0x40270260 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x40270270 ieee80211_opcap + *fill* 0x402702e2 0x0 + *fill* 0x402702e2 0x0 + *fill* 0x402702e2 0xe + .irom.text 0x402702f0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + *fill* 0x4027034b 0x0 + *fill* 0x4027034b 0x5 + .irom.text 0x40270350 0x19 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + *fill* 0x40270369 0x0 + *fill* 0x40270369 0x7 + .irom.text 0x40270370 0x12 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + *fill* 0x40270382 0x0 + *fill* 0x40270382 0xe + .irom.text 0x40270390 0x43 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + *fill* 0x402703d3 0x0 + *fill* 0x402703d3 0xd + .irom.text 0x402703e0 0x1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + *fill* 0x402703fd 0x0 + *fill* 0x402703fd 0x3 + .irom.text 0x40270400 0x1b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + *fill* 0x402705b8 0x0 + *fill* 0x402705b8 0x8 + .irom.text 0x402705c0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + *fill* 0x402705dc 0x0 + *fill* 0x402705dc 0x4 + .irom.text 0x402705e0 0x99 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + *fill* 0x40270679 0x0 + *fill* 0x40270679 0x7 + .irom.text 0x40270680 0x26 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + *fill* 0x402706a6 0x0 + *fill* 0x402706a6 0x0 + *fill* 0x402706a6 0xa + .irom.text 0x402706b0 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + *fill* 0x40270837 0x0 + *fill* 0x40270837 0x0 + *fill* 0x40270837 0x9 + .irom.text 0x40270840 0x83 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + *fill* 0x402708c3 0x0 + *fill* 0x402708c3 0x1 + .irom.text 0x402708c4 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + 0x402708c4 ccmp + *fill* 0x402708dc 0x0 + *fill* 0x402708dc 0x4 + .irom.text 0x402708e0 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + *fill* 0x402708f3 0x0 + *fill* 0x402708f3 0x0 + *fill* 0x402708f3 0xd + .irom.text 0x40270900 0x65 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + *fill* 0x40270965 0xb + .irom.text 0x40270970 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + *fill* 0x40270abc 0x4 + .irom.text 0x40270ac0 0x1f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .irom0.text 0x40270cb4 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + 0x40270cb4 chip_v6_set_sense + 0x40270cb8 chip_v6_get_sense + 0x40270cbc chip_v6_unset_chanfreq + *fill* 0x40270cc0 0x0 + .irom.text 0x40270cc0 0x1a3 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x40270e63 0x1 + .irom0.text 0x40270e64 0x80 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + *fill* 0x40270ee4 0xc + .irom.text 0x40270ef0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + *fill* 0x40270efc 0x4 + .irom.text 0x40270f00 0x74 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + *fill* 0x40270f74 0xc + .irom.text 0x40270f80 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + *fill* 0x40270f8e 0x0 + *fill* 0x40270f8e 0x2 + .irom.text 0x40270f90 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + *fill* 0x40270fa7 0x0 + *fill* 0x40270fa7 0x9 + .irom.text 0x40270fb0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + *fill* 0x40270fcc 0x0 + *fill* 0x40270fcc 0x4 + .irom.text 0x40270fd0 0x67 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + *fill* 0x40271037 0x0 + *fill* 0x40271037 0x0 + *fill* 0x40271037 0x1 + .irom.text 0x40271038 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + 0x40271038 tkip + .irom.text 0x40271050 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + 0x40271050 wep + 0x40271068 _irom0_text_end = ABSOLUTE (.) + 0x40271068 _flash_code_end = ABSOLUTE (.) + +.text 0x40100000 0x7843 + 0x40100000 _stext = . + 0x40100000 _text_start = ABSOLUTE (.) + *(.UserEnter.text) + .UserEnter.text + 0x40100000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + 0x14 (size before relaxing) + 0x40100004 call_user_start + 0x40100010 . = ALIGN (0x10) + *fill* 0x4010000d 0x3 + *(.DebugExceptionVector.text) + .DebugExceptionVector.text + 0x40100010 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + 0x40100010 _DebugExceptionVector + 0x40100020 . = ALIGN (0x10) + *fill* 0x40100016 0xa + *(.NMIExceptionVector.text) + .NMIExceptionVector.text + 0x40100020 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + 0xd (size before relaxing) + 0x40100020 _NMIExceptionVector + 0x40100030 . = ALIGN (0x10) + *fill* 0x40100026 0xa + *(.KernelExceptionVector.text) + .KernelExceptionVector.text + 0x40100030 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + 0x40100030 _KernelExceptionVector + 0x40100036 0x4 LONG 0x0 + 0x4010003a 0x4 LONG 0x0 + 0x4010003e 0x4 LONG 0x0 + 0x40100042 0x4 LONG 0x0 + 0x40100050 . = ALIGN (0x10) + *fill* 0x40100046 0xa + *(.UserExceptionVector.text) + .UserExceptionVector.text + 0x40100050 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + 0xd (size before relaxing) + 0x40100050 _UserExceptionVector + 0x40100056 0x4 LONG 0x0 + 0x4010005a 0x4 LONG 0x0 + 0x4010005e 0x4 LONG 0x0 + 0x40100062 0x4 LONG 0x0 + 0x40100070 . = ALIGN (0x10) + *fill* 0x40100066 0xa + *(.DoubleExceptionVector.text) + .DoubleExceptionVector.text + 0x40100070 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + 0x40100070 _DoubleExceptionVector + 0x40100076 0x4 LONG 0x0 + 0x4010007a 0x4 LONG 0x0 + 0x4010007e 0x4 LONG 0x0 + 0x40100082 0x4 LONG 0x0 + 0x40100090 . = ALIGN (0x10) + *fill* 0x40100086 0xa + *(.entry.text) + *(.init.literal) + *(.init) + *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) + .text 0x40100090 0x8fd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x9fd (size before relaxing) + 0x401000d4 pp_soft_wdt_feed_local + 0x4010016c ppProcessTxQ + 0x401001e0 ppFetchTxQFirstAvail + 0x40100220 ppDequeueTxQ + 0x40100248 ppRollBackTxQ + 0x4010026c ppRecordBarRRC + 0x4010027c ppTxqUpdateBitmap + 0x401002a8 ppEnqueueTxDone + 0x401002dc ppEnqueueRxq + 0x401007c4 ppDiscardMPDU + 0x401007ec pp_post + 0x40100878 pp_post2 + 0x401008a0 ppCalTxop + 0x40100920 ppCalFrameTimes + *fill* 0x4010098d 0x3 + .text 0x40100990 0xf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + 0x109 (size before relaxing) + 0x401009b0 RC_GetAckRate + 0x401009bc RC_GetRtsRate + 0x401009cc RC_GetAckTime + 0x401009e0 RC_GetCtsTime + 0x40100a18 RC_GetBlockAckTime + *fill* 0x40100a89 0x3 + .text 0x40100a8c 0x9ad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + 0xa05 (size before relaxing) + 0x40100c64 rcUpdateTxDone + 0x40100cf8 rcUpdateRxDone + 0x40100d54 rcUpdateDataRxDone + 0x40100d74 rcGetSched + 0x40100e58 rcGetRate + 0x4010136c rcReachRetryLimit + 0x40101384 trc_NeedRTS + *fill* 0x40101439 0x3 + .text 0x4010143c 0x1093 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x1347 (size before relaxing) + 0x401017f8 wDev_MacTim1SetFunc + 0x40101818 wDev_MacTim1Arm + 0x401018b4 wDev_ProcessFiq + 0x40101bfc wDev_EnableTransmit + 0x40101c38 wDev_DisableTransmit + 0x40101c58 Tx_Copy2Queue + 0x40101ca0 wDev_ProcessCollision + 0x40101cc4 wDev_GetTxqCollisions + 0x40101cd8 wDev_ClearTxqCollisions + 0x40101cf4 wDev_SetWaitingQueue + 0x40101d3c wDev_ClearWaitingQueue + 0x40101d60 wDev_SetFrameAckType + 0x40101dc8 wDev_AppendRxBlocks + 0x40101f0c wDev_AppendRxAmpduLensBlocks + 0x40101fe0 wDev_GetBAInfo + 0x40102014 wDevDisableRx + *fill* 0x401024cf 0x1 + .text 0x401024d0 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + 0x5c (size before relaxing) + 0x401024d4 esf_rx_buf_alloc + .text 0x4010251c 0x1606 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x1962 (size before relaxing) + 0x40102520 lmacIsActive + 0x40102534 lmacIsIdle + 0x401029bc lmacSetAcParam + 0x40102a10 lmacProcessTXStartData + 0x40102b90 lmacProcessTxSuccess + 0x40102cd4 GetAccess + 0x40102ce0 lmacDiscardAgedMSDU + 0x40102cf4 lmacRecycleMPDU + 0x401032b8 lmacProcessTxTimeout + 0x40103320 lmacProcessAllTxTimeout + 0x40103334 lmacProcessCollisions + 0x40103394 lmacProcessCollision + 0x40103418 lmacMSDUAged + 0x401037a8 lmacProcessCtsTimeout + 0x401037e0 lmacProcessAckTimeout + 0x40103838 lmacProcessRtsStart + 0x40103844 lmacProcessTxRtsError + 0x401038e4 lmacProcessTxError + 0x40103970 lmacTxFrame + 0x40103b0c lmacRxDone + *fill* 0x40103b22 0x2 + .text 0x40103b24 0x5ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x66a (size before relaxing) + 0x40103b58 Cache_Read_Enable_New + 0x40103b94 NmiTimSetFunc + 0x40103bb4 NMI_Handler + 0x40103c0c call_user_start_local + 0x40103d64 wdt_feed + *fill* 0x401040ee 0x2 + .text 0x401040f0 0x3c4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x450 (size before relaxing) + 0x401041c4 ets_timer_setfn + 0x4010429c ets_timer_disarm + 0x40104348 ets_timer_arm_new + .text 0x401044b4 0x585 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + 0x650 (size before relaxing) + 0x401044b8 Cache_Read_Disable_2 + 0x401044f4 Cache_Read_Enable_2 + 0x4010453c spi_flash_get_unique_id + 0x401046a0 spi_flash_get_id + 0x401046fc spi_flash_read_status + 0x40104730 spi_flash_write_status + 0x401047b0 spi_flash_erase_sector + 0x401047e4 spi_flash_write + 0x40104838 spi_flash_read + 0x401048ac spi_flash_issi_enable_QIO_mode + *fill* 0x40104a39 0x3 + .text 0x40104a3c 0x2ee C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x34a (size before relaxing) + 0x40104a58 os_printf_plus + 0x40104b84 system_restart_core + 0x40104bc0 system_deep_sleep_local_2 + 0x40104c30 system_get_time + 0x40104c48 system_os_post + 0x40104c7c system_rtc_mem_write + 0x40104cd4 system_rtc_mem_read + *fill* 0x40104d2a 0x2 + .text 0x40104d2c 0xc7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + 0xcb (size before relaxing) + 0x40104d38 _NMILevelVector + *fill* 0x40104df3 0x1 + .text 0x40104df4 0x1e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + 0x40104df8 _UserExceptionVector_1 + *fill* 0x40104e12 0x2 + .text.sntp_try_next_server + 0x40104e14 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .text.sntp_dns_found + 0x40104e94 0x21 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x28 (size before relaxing) + *fill* 0x40104eb5 0x3 + .text.sntp_get_current_timestamp + 0x40104eb8 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x2f (size before relaxing) + 0x40104ec0 sntp_get_current_timestamp + *fill* 0x40104ee3 0x1 + .text.sntp_get_real_time + 0x40104ee4 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x40104eec sntp_get_real_time + *fill* 0x40104f09 0x3 + .text.tcp_new_port + 0x40104f0c 0x6b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x73 (size before relaxing) + *fill* 0x40104f77 0x1 + .text.tcp_close_shutdown + 0x40104f78 0x171 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x179 (size before relaxing) + *fill* 0x401050e9 0x3 + .text.dns_timer + 0x401050ec 0x2d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + *fill* 0x40105119 0x3 + .text.igmp_timer + 0x4010511c 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x2d (size before relaxing) + *fill* 0x40105145 0x3 + .text.dhcp_timer_fine + 0x40105148 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x2d (size before relaxing) + *fill* 0x40105171 0x3 + .text.dhcp_timer_coarse + 0x40105174 0x37 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x3b (size before relaxing) + *fill* 0x401051ab 0x1 + .text 0x401051ac 0x23 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + 0x27 (size before relaxing) + *fill* 0x401051cf 0x1 + .text 0x401051d0 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + 0x401051d4 chm_get_current_channel + *fill* 0x401051db 0x1 + .text 0x401051dc 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + 0x5f (size before relaxing) + 0x401051e4 register_phy_ops + 0x40105204 register_get_phy_addr + 0x4010520c phy_change_channel + 0x40105224 phy_get_mactime + *fill* 0x4010522f 0x1 + .text 0x40105230 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0xba (size before relaxing) + 0x40105230 unsign_to_sign + 0x40105264 phy_get_bb_freqoffset + 0x401052cc phy_get_bb_evm + *fill* 0x401052da 0x2 + .text 0x401052dc 0xe7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0x103 (size before relaxing) + 0x401052e0 pm_rtc_clock_cali + 0x40105398 clockgate_watchdog + *fill* 0x401053c3 0x1 + .literal 0x401053c4 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + 0xc (size before relaxing) + .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + 0x10 (size before relaxing) + .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + 0x10 (size before relaxing) + .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + 0x18 (size before relaxing) + .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + 0x4 (size before relaxing) + .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + 0x4 (size before relaxing) + .literal 0x401053c8 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + 0xc (size before relaxing) + .literal 0x401053cc 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + 0x10 (size before relaxing) + .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + 0x10 (size before relaxing) + .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + 0x18 (size before relaxing) + .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + 0x4 (size before relaxing) + .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + 0x4 (size before relaxing) + .literal 0x401053d0 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + 0x8 (size before relaxing) + .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + 0x8 (size before relaxing) + .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + 0x4 (size before relaxing) + .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + 0x48 (size before relaxing) + .text 0x401053d4 0x1ff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + 0x401053f0 __addsf3 + 0x401054d8 __subsf3 + *fill* 0x401055d3 0x1 + .text 0x401055d4 0x15d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + 0x4010564c __mulsf3 + *fill* 0x40105731 0x3 + .text 0x40105734 0x135 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + 0x401057b0 __divsf3 + *fill* 0x40105869 0x3 + .text 0x4010586c 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + 0x4010586c __eqsf2 + 0x4010586c __nesf2 + 0x40105894 __gtsf2 + 0x401058b4 __lesf2 + 0x40105900 __gesf2 + 0x40105920 __ltsf2 + 0x4010596c __unordsf2 + *fill* 0x4010598e 0x2 + .text 0x40105990 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + 0x40105990 __fixsfsi + .text 0x401059d0 0x51 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + 0x401059d0 __fixunssfsi + *fill* 0x40105a21 0x3 + .text 0x40105a24 0x2f6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + 0x40105a44 __adddf3 + 0x40105b94 __subdf3 + *fill* 0x40105d1a 0x2 + .text 0x40105d1c 0x29b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + 0x40105dfc __muldf3 + *fill* 0x40105fb7 0x1 + .text 0x40105fb8 0x20b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + 0x401060a0 __divdf3 + *fill* 0x401061c3 0x1 + .text 0x401061c4 0x169 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + 0x401061c4 __nedf2 + 0x401061c4 __eqdf2 + 0x401061f4 __gtdf2 + 0x40106218 __ledf2 + 0x4010627c __gedf2 + 0x401062a0 __ltdf2 + 0x40106304 __unorddf2 + *fill* 0x4010632d 0x3 + .text 0x40106330 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + 0x40106330 __fixdfsi + .text 0x40106378 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + 0x40106378 __fixunsdfsi + *fill* 0x401063d1 0x3 + .text 0x401063d4 0xa0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + 0x401063d4 __truncdfsf2 + .text 0x40106474 0x5e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + 0x40106474 __extendsfdf2 + *fill* 0x401064d2 0x2 + .text 0x401064d4 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + 0x401064d4 __muldi3 + *fill* 0x4010650a 0x2 + .text 0x4010650c 0x3eb c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + 0x41b (size before relaxing) + 0x4010650c __divdi3 + *fill* 0x401068f7 0x1 + .literal._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson20StaticJsonBufferBase5allocEj + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN5Print5writeEPKc + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN5Print5writeEPKcj + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN14HardwareSerial5writeEj + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN14HardwareSerial5writeEi + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNSt14_Function_baseD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN12PubSubClientD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN12PubSubClientD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9JsonArray7invalidEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonObject7invalidEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN7TwoWire5writeEi + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNSt8functionIFvvEEC5IPS0_vEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN6Stream9readBytesEPhj + 0x401068f8 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvP10_esp_eventEEC5ERKS3_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC5ERKS4_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC5ERKS4_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt8functionIFvvEEC5ERKS1_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC5IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZSt4swapISt9_Any_dataEvRT_S2_ + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext8_s_errorEPva + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext5flushEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext5unrefEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext5writeEPKcj + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN13ClientContext8_consumeEj + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN7WiFiUDP4readEPcj + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN10UdpContextC5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN10UdpContext5unrefEv + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext4readEv + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext4readEPcj + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext5flushEv + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext6appendEPKcj + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN10UdpContext4sendEP7ip_addrt + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN14RequestHandlerD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN14RequestHandler9canHandleE10HTTPMethod6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN14RequestHandler9canUploadE6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN14RequestHandlerD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandler9canUploadE6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandlerD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandlerD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNKSt8functionIFvvEEclEv + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNK6String9substringEj + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer15RequestArgumentC5Ev + 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZNK6String14StringIfHelperEv + 0x401068f8 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN13TasmotaModbusD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbusD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZNSt8functionIFvPcPhjEEC5ERKS3_ + 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZN14HardwareSerialD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZN14HardwareSerialD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .literal._ZNSt8functionIFvvEE4swapERS1_ + 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + *fill* 0x401068f8 0x0 + .text.tcp_accept_null + 0x401068f8 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x0 + *fill* 0x401068fd 0x3 + .text 0x40106900 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + *fill* 0x40106925 0x0 + *fill* 0x40106925 0x0 + *fill* 0x40106925 0x0 + *fill* 0x40106925 0x0 + *fill* 0x40106925 0x0 + *fill* 0x40106925 0x3 + .text 0x40106928 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + 0x40106928 xthal_get_ccount + 0x40106930 xthal_set_ccompare + 0x4010693c xthal_get_ccompare + .text 0x40106948 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + 0x40106948 xthal_set_intclear + *fill* 0x4010694d 0x3 + .text 0x40106950 0x64 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + 0x40106950 __divsi3 + .text 0x401069b4 0x49 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + 0x401069b4 __modsi3 + *fill* 0x401069fd 0x3 + .text 0x40106a00 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + 0x40106a00 __udivsi3 + .text 0x40106a4c 0x39 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + 0x40106a4c __umodsi3 + *fill* 0x40106a85 0x3 + .text 0x40106a88 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + 0x40106a88 __umulsidi3 + .text 0x40106ad0 0x17 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + 0x40106ad0 __ashldi3 + *fill* 0x40106ae7 0x1 + .text 0x40106ae8 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + 0x40106ae8 __ashrdi3 + .text 0x40106b00 0x17 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + 0x40106b00 __lshrdi3 + *fill* 0x40106b17 0x0 + *fill* 0x40106b17 0x0 + *fill* 0x40106b17 0x0 + *fill* 0x40106b17 0x0 + *fill* 0x40106b17 0x0 + *fill* 0x40106b17 0x1 + .text 0x40106b18 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + 0x40106b18 __floatunsisf + 0x40106b20 __floatsisf + .text 0x40106b5c 0x7d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + 0x40106b5c __floatundisf + 0x40106b68 __floatdisf + *fill* 0x40106bd9 0x0 + *fill* 0x40106bd9 0x0 + *fill* 0x40106bd9 0x0 + *fill* 0x40106bd9 0x0 + *fill* 0x40106bd9 0x0 + *fill* 0x40106bd9 0x3 + .text 0x40106bdc 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + 0x40106bdc __floatunsidf + 0x40106be4 __floatsidf + *fill* 0x40106c12 0x0 + *fill* 0x40106c12 0x0 + *fill* 0x40106c12 0x0 + *fill* 0x40106c12 0x2 + .text._ZNSt8__detail15_List_node_base7_M_hookEPS0_ + 0x40106c14 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x40106c14 std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) + *fill* 0x40106c22 0x2 + .text._ZNSt8__detail15_List_node_base9_M_unhookEv + 0x40106c24 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x40106c24 std::__detail::_List_node_base::_M_unhook() + *fill* 0x40106c2e 0x2 + .literal._ZN10WiFiServerD5Ev + 0x40106c30 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN10WiFiServerD0Ev + 0x40106c30 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .literal._ZN15TransportTraitsD5Ev + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN15TransportTraits6verifyER10WiFiClientPKc + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN15TransportTraitsD0Ev + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZN15TransportTraits6createEv + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED5Ev + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text 0x40106c30 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + *.pioenvs\\*\\lib*.a:(.iram.text) + *fill* 0x40106c41 0x3 + .iram.text 0x40106c44 0x10d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + 0x12d (size before relaxing) + *fill* 0x40106d51 0x3 + .iram.text 0x40106d54 0x1cc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x1e8 (size before relaxing) + 0x40106d70 RCSwitch::receiveProtocol(int, unsigned int) + 0x40106e88 RCSwitch::handleInterrupt() + .iram.text 0x40106f20 0xf0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + 0xf8 (size before relaxing) + 0x40106f28 bitbang_send_pixels_800 + 0x40106f9c bitbang_send_pixels_400 + .iram.text 0x40107010 0x67 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x7f (size before relaxing) + 0x4010701c millis + 0x40107054 micros + 0x40107064 delayMicroseconds + *fill* 0x40107077 0x1 + .iram.text 0x40107078 0x81 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + 0x85 (size before relaxing) + 0x4010707c pvPortMalloc + 0x40107094 vPortFree + 0x401070ac pvPortCalloc + 0x401070c4 pvPortRealloc + 0x401070d8 pvPortZalloc + 0x401070f0 xPortWantedSizeAlign + *fill* 0x401070f9 0x3 + .iram.text 0x401070fc 0xf3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x10b (size before relaxing) + 0x40107100 puts + 0x4010711c putchar + 0x40107130 printf + 0x40107164 sprintf + 0x40107190 snprintf + 0x401071b8 vprintf + 0x401071dc vsnprintf + *fill* 0x401071ef 0x1 + .iram.text 0x401071f0 0x8f .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + 0x97 (size before relaxing) + 0x401071fc cont_init + 0x40107228 cont_check + 0x40107248 cont_get_free_stack + 0x40107264 cont_can_yield + *fill* 0x4010727f 0x0 + *fill* 0x4010727f 0x0 + *fill* 0x4010727f 0x0 + *fill* 0x4010727f 0x0 + *fill* 0x4010727f 0x0 + *.pioenvs/*/lib*.a:(.iram.text) + *.pioenvs\\*\\lib\\*.a:(.iram.text) + *.pioenvs/*/lib/*.a:(.iram.text) + *.pioenvs\\*\\src\\*.o(.iram.text) + *fill* 0x4010727f 0x1 + .iram.text 0x40107280 0x157 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x17f (size before relaxing) + 0x40107290 timer1_isr_handler + 0x401072ec timer0_isr_handler + 0x40107320 timer1_isr_init + 0x40107340 timer1_detachInterrupt + 0x40107374 timer1_write + 0x401073a4 timer1_disable + 0x401073b8 timer0_detachInterrupt + *fill* 0x401073d7 0x1 + .iram.text 0x401073d8 0x295 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x2e5 (size before relaxing) + 0x401073e8 interrupt_handler + 0x401074a0 __digitalWrite + 0x401074a0 digitalWrite + 0x40107500 __digitalRead + 0x40107500 digitalRead + 0x40107550 __attachInterruptArg + 0x401075e0 __attachInterrupt + 0x401075e0 attachInterrupt + 0x401075f8 detachInterrupt + 0x401075f8 __detachInterrupt + *fill* 0x4010766d 0x3 + .iram.text 0x40107670 0x12b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x15b (size before relaxing) + 0x40107684 pwm_timer_isr + 0x4010776c pwm_stop_pin + *fill* 0x4010779b 0x1 + .iram.text 0x4010779c 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb7 (size before relaxing) + 0x401077ac HlwCfInterrupt() + 0x401077fc HlwCf1Interrupt() + *fill* 0x40107843 0x0 + *fill* 0x40107843 0x0 + *fill* 0x40107843 0x0 + *fill* 0x40107843 0x0 + *.pioenvs/*/src/*.o(.iram.text) + *(.fini.literal) + *(.fini) + *(.gnu.version) + 0x40107843 _text_end = ABSOLUTE (.) + 0x40107843 _etext = . + +.lit4 0x40107844 0x0 + 0x40107844 _lit4_start = ABSOLUTE (.) + *(*.lit4) + *(.lit4.*) + *(.gnu.linkonce.lit4.*) + 0x40107844 _lit4_end = ABSOLUTE (.) + 0x400047f0 PROVIDE (Cache_Read_Disable, 0x400047f0) + 0x40004678 PROVIDE (Cache_Read_Enable, 0x40004678) + 0x400035a0 PROVIDE (FilePacketSendReqMsgProc, 0x400035a0) + 0x4000368c PROVIDE (FlashDwnLdParamCfgMsgProc, 0x4000368c) + 0x40003538 PROVIDE (FlashDwnLdStartMsgProc, 0x40003538) + 0x40003658 PROVIDE (FlashDwnLdStopReqMsgProc, 0x40003658) + 0x40003f4c PROVIDE (GetUartDevice, 0x40003f4c) + 0x40009900 PROVIDE (MD5Final, 0x40009900) + 0x40009818 PROVIDE (MD5Init, 0x40009818) + 0x40009834 PROVIDE (MD5Update, 0x40009834) + 0x400036c4 PROVIDE (MemDwnLdStartMsgProc, 0x400036c4) + 0x4000377c PROVIDE (MemDwnLdStopReqMsgProc, 0x4000377c) + 0x400036f0 PROVIDE (MemPacketSendReqMsgProc, 0x400036f0) + 0x40003eac PROVIDE (RcvMsg, 0x40003eac) + 0x4000b648 PROVIDE (SHA1Final, 0x4000b648) + 0x4000b584 PROVIDE (SHA1Init, 0x4000b584) + 0x4000a364 PROVIDE (SHA1Transform, 0x4000a364) + 0x4000b5a8 PROVIDE (SHA1Update, 0x4000b5a8) + 0x400043c8 PROVIDE (SPI_read_status, 0x400043c8) + 0x40004400 PROVIDE (SPI_write_status, 0x40004400) + 0x4000443c PROVIDE (SPI_write_enable, 0x4000443c) + 0x4000448c PROVIDE (Wait_SPI_Idle, 0x4000448c) + 0x40004b44 PROVIDE (SPIEraseArea, 0x40004b44) + 0x400049b4 PROVIDE (SPIEraseBlock, 0x400049b4) + 0x40004984 PROVIDE (SPIEraseChip, 0x40004984) + 0x40004a00 PROVIDE (SPIEraseSector, 0x40004a00) + 0x400048a8 PROVIDE (SPILock, 0x400048a8) + 0x40004c2c PROVIDE (SPIParamCfg, 0x40004c2c) + 0x40004b1c PROVIDE (SPIRead, 0x40004b1c) + 0x400048ec PROVIDE (SPIReadModeCnfig, 0x400048ec) + 0x40004878 PROVIDE (SPIUnlock, 0x40004878) + 0x40004a4c PROVIDE (SPIWrite, 0x40004a4c) + 0x40003f58 PROVIDE (SelectSpiFunction, 0x40003f58) + 0x40003cf4 PROVIDE (SendMsg, 0x40003cf4) + 0x40003230 PROVIDE (UartConnCheck, 0x40003230) + 0x400037a0 PROVIDE (UartConnectProc, 0x400037a0) + 0x40003368 PROVIDE (UartDwnLdProc, 0x40003368) + 0x40003ef4 PROVIDE (UartGetCmdLn, 0x40003ef4) + 0x4000381c PROVIDE (UartRegReadProc, 0x4000381c) + 0x400037ac PROVIDE (UartRegWriteProc, 0x400037ac) + 0x40003c30 PROVIDE (UartRxString, 0x40003c30) + 0x40003a14 PROVIDE (Uart_Init, 0x40003a14) + 0x40000010 PROVIDE (_DebugExceptionVector, 0x40000010) + 0x40000070 PROVIDE (_DoubleExceptionVector, 0x40000070) + 0x40000030 PROVIDE (_KernelExceptionVector, 0x40000030) + 0x40000020 PROVIDE (_NMIExceptionVector, 0x40000020) + 0x400000a4 PROVIDE (_ResetHandler, 0x400000a4) + 0x40000080 PROVIDE (_ResetVector, 0x40000080) + 0x40000050 PROVIDE (_UserExceptionVector, 0x40000050) + 0x4000c538 PROVIDE (__adddf3, 0x4000c538) + 0x4000c180 PROVIDE (__addsf3, 0x4000c180) + 0x4000cb94 PROVIDE (__divdf3, 0x4000cb94) + 0x4000ce60 PROVIDE (__divdi3, 0x4000ce60) + 0x4000dc88 PROVIDE (__divsi3, 0x4000dc88) + 0x4000cdfc PROVIDE (__extendsfdf2, 0x4000cdfc) + 0x4000ccb8 PROVIDE (__fixdfsi, 0x4000ccb8) + 0x4000cd00 PROVIDE (__fixunsdfsi, 0x4000cd00) + 0x4000c4c4 PROVIDE (__fixunssfsi, 0x4000c4c4) + 0x4000e2f0 PROVIDE (__floatsidf, 0x4000e2f0) + 0x4000e2ac PROVIDE (__floatsisf, 0x4000e2ac) + 0x4000e2e8 PROVIDE (__floatunsidf, 0x4000e2e8) + 0x4000e2a4 PROVIDE (__floatunsisf, 0x4000e2a4) + 0x4000c8f0 PROVIDE (__muldf3, 0x4000c8f0) + 0x40000650 PROVIDE (__muldi3, 0x40000650) + 0x4000c3dc PROVIDE (__mulsf3, 0x4000c3dc) + 0x4000c688 PROVIDE (__subdf3, 0x4000c688) + 0x4000c268 PROVIDE (__subsf3, 0x4000c268) + 0x4000cd5c PROVIDE (__truncdfsf2, 0x4000cd5c) + 0x4000d310 PROVIDE (__udivdi3, 0x4000d310) + 0x4000e21c PROVIDE (__udivsi3, 0x4000e21c) + 0x4000d770 PROVIDE (__umoddi3, 0x4000d770) + 0x4000e268 PROVIDE (__umodsi3, 0x4000e268) + 0x4000dcf0 PROVIDE (__umulsidi3, 0x4000dcf0) + 0x4000e388 PROVIDE (_rom_store, 0x4000e388) + 0x4000e328 PROVIDE (_rom_store_table, 0x4000e328) + 0x4000042c PROVIDE (_start, 0x4000042c) + 0x4000dbe0 PROVIDE (_xtos_alloca_handler, 0x4000dbe0) + 0x40000598 PROVIDE (_xtos_c_wrapper_handler, 0x40000598) + 0x40000590 PROVIDE (_xtos_cause3_handler, 0x40000590) + 0x4000bda4 PROVIDE (_xtos_ints_off, 0x4000bda4) + 0x4000bd84 PROVIDE (_xtos_ints_on, 0x4000bd84) + 0x4000048c PROVIDE (_xtos_l1int_handler, 0x4000048c) + 0x4000dbf8 PROVIDE (_xtos_p_none, 0x4000dbf8) + 0x4000056c PROVIDE (_xtos_restore_intlevel, 0x4000056c) + 0x4000dc54 PROVIDE (_xtos_return_from_exc, 0x4000dc54) + 0x40000454 PROVIDE (_xtos_set_exception_handler, 0x40000454) + 0x4000bd70 PROVIDE (_xtos_set_interrupt_handler, 0x4000bd70) + 0x4000bd28 PROVIDE (_xtos_set_interrupt_handler_arg, 0x4000bd28) + 0x4000dbfc PROVIDE (_xtos_set_intlevel, 0x4000dbfc) + 0x4000dc18 PROVIDE (_xtos_set_min_intlevel, 0x4000dc18) + 0x40000574 PROVIDE (_xtos_set_vpri, 0x40000574) + 0x4000dbe4 PROVIDE (_xtos_syscall_handler, 0x4000dbe4) + 0x4000dc44 PROVIDE (_xtos_unhandled_exception, 0x4000dc44) + 0x4000dc3c PROVIDE (_xtos_unhandled_interrupt, 0x4000dc3c) + 0x400092d4 PROVIDE (aes_decrypt, 0x400092d4) + 0x400092e4 PROVIDE (aes_decrypt_deinit, 0x400092e4) + 0x40008ea4 PROVIDE (aes_decrypt_init, 0x40008ea4) + 0x40009410 PROVIDE (aes_unwrap, 0x40009410) + 0x40009648 PROVIDE (base64_decode, 0x40009648) + 0x400094fc PROVIDE (base64_encode, 0x400094fc) + 0x4000de84 PROVIDE (bzero, 0x4000de84) + 0x40000814 PROVIDE (cmd_parse, 0x40000814) + 0x40000b24 PROVIDE (conv_str_decimal, 0x40000b24) + 0x40000cb8 PROVIDE (conv_str_hex, 0x40000cb8) + 0x40000a60 PROVIDE (convert_para_str, 0x40000a60) + 0x400026d0 PROVIDE (dtm_get_intr_mask, 0x400026d0) + 0x4000269c PROVIDE (dtm_params_init, 0x4000269c) + 0x400026c8 PROVIDE (dtm_set_intr_mask, 0x400026c8) + 0x400026dc PROVIDE (dtm_set_params, 0x400026dc) + 0x40001d14 PROVIDE (eprintf, 0x40001d14) + 0x40001cb8 PROVIDE (eprintf_init_buf, 0x40001cb8) + 0x40001d48 PROVIDE (eprintf_to_host, 0x40001d48) + 0x40002494 PROVIDE (est_get_printf_buf_remain_len, 0x40002494) + 0x4000249c PROVIDE (est_reset_printf_buf_len, 0x4000249c) + 0x40002ae8 PROVIDE (ets_bzero, 0x40002ae8) + 0x40002b74 PROVIDE (ets_char2xdigit, 0x40002b74) + 0x40002ecc PROVIDE (ets_delay_us, 0x40002ecc) + 0x400027b8 PROVIDE (ets_enter_sleep, 0x400027b8) + 0x40002578 PROVIDE (ets_external_printf, 0x40002578) + 0x40002f0c PROVIDE (ets_get_cpu_frequency, 0x40002f0c) + 0x40002bcc PROVIDE (ets_getc, 0x40002bcc) + 0x40002450 PROVIDE (ets_install_external_printf, 0x40002450) + 0x4000242c PROVIDE (ets_install_putc1, 0x4000242c) + 0x4000248c PROVIDE (ets_install_putc2, 0x4000248c) + 0x40002438 PROVIDE (ets_install_uart_printf, 0x40002438) + 0x40000f74 PROVIDE (ets_intr_lock, 0x40000f74) + 0x40000f80 PROVIDE (ets_intr_unlock, 0x40000f80) + 0x40000f88 PROVIDE (ets_isr_attach, 0x40000f88) + 0x40000f98 PROVIDE (ets_isr_mask, 0x40000f98) + 0x40000fa8 PROVIDE (ets_isr_unmask, 0x40000fa8) + 0x400018d4 PROVIDE (ets_memcmp, 0x400018d4) + 0x400018b4 PROVIDE (ets_memcpy, 0x400018b4) + 0x400018c4 PROVIDE (ets_memmove, 0x400018c4) + 0x400018a4 PROVIDE (ets_memset, 0x400018a4) + 0x40000e24 PROVIDE (ets_post, 0x40000e24) + 0x400024cc PROVIDE (ets_printf, 0x400024cc) + 0x40002be8 PROVIDE (ets_putc, 0x40002be8) + 0x40002a40 PROVIDE (ets_rtc_int_register, 0x40002a40) + 0x40000e04 PROVIDE (ets_run, 0x40000e04) + 0x40000dc0 PROVIDE (ets_set_idle_cb, 0x40000dc0) + 0x40000fbc PROVIDE (ets_set_user_start, 0x40000fbc) + 0x40002af8 PROVIDE (ets_str2macaddr, 0x40002af8) + 0x40002aa8 PROVIDE (ets_strcmp, 0x40002aa8) + 0x40002a88 PROVIDE (ets_strcpy, 0x40002a88) + 0x40002ac8 PROVIDE (ets_strlen, 0x40002ac8) + 0x40002ab8 PROVIDE (ets_strncmp, 0x40002ab8) + 0x40002a98 PROVIDE (ets_strncpy, 0x40002a98) + 0x40002ad8 PROVIDE (ets_strstr, 0x40002ad8) + 0x40000dd0 PROVIDE (ets_task, 0x40000dd0) + 0x40002cc4 PROVIDE (ets_timer_arm, 0x40002cc4) + 0x40002d40 PROVIDE (ets_timer_disarm, 0x40002d40) + 0x40002d80 PROVIDE (ets_timer_done, 0x40002d80) + 0x40002da8 PROVIDE (ets_timer_handler_isr, 0x40002da8) + 0x40002e68 PROVIDE (ets_timer_init, 0x40002e68) + 0x40002c48 PROVIDE (ets_timer_setfn, 0x40002c48) + 0x40002544 PROVIDE (ets_uart_printf, 0x40002544) + 0x40002f04 PROVIDE (ets_update_cpu_frequency, 0x40002f04) + 0x40001f00 PROVIDE (ets_vprintf, 0x40001f00) + 0x400030f0 PROVIDE (ets_wdt_disable, 0x400030f0) + 0x40002fa0 PROVIDE (ets_wdt_enable, 0x40002fa0) + 0x40002f34 PROVIDE (ets_wdt_get_mode, 0x40002f34) + 0x40003170 PROVIDE (ets_wdt_init, 0x40003170) + 0x40003158 PROVIDE (ets_wdt_restore, 0x40003158) + 0x40001da0 PROVIDE (ets_write_char, 0x40001da0) + 0x4000091c PROVIDE (get_first_seg, 0x4000091c) + 0x40004c50 PROVIDE (gpio_init, 0x40004c50) + 0x40004cf0 PROVIDE (gpio_input_get, 0x40004cf0) + 0x40004dcc PROVIDE (gpio_intr_ack, 0x40004dcc) + 0x40004e28 PROVIDE (gpio_intr_handler_register, 0x40004e28) + 0x40004d88 PROVIDE (gpio_intr_pending, 0x40004d88) + 0x40004efc PROVIDE (gpio_intr_test, 0x40004efc) + 0x40004cd0 PROVIDE (gpio_output_set, 0x40004cd0) + 0x40004d90 PROVIDE (gpio_pin_intr_state_set, 0x40004d90) + 0x40004ed4 PROVIDE (gpio_pin_wakeup_disable, 0x40004ed4) + 0x40004e90 PROVIDE (gpio_pin_wakeup_enable, 0x40004e90) + 0x40004d5c PROVIDE (gpio_register_get, 0x40004d5c) + 0x40004d04 PROVIDE (gpio_register_set, 0x40004d04) + 0x4000a2cc PROVIDE (hmac_md5, 0x4000a2cc) + 0x4000a160 PROVIDE (hmac_md5_vector, 0x4000a160) + 0x4000ba28 PROVIDE (hmac_sha1, 0x4000ba28) + 0x4000b8b4 PROVIDE (hmac_sha1_vector, 0x4000b8b4) + 0x40004f40 PROVIDE (lldesc_build_chain, 0x40004f40) + 0x40005050 PROVIDE (lldesc_num2link, 0x40005050) + 0x4000507c PROVIDE (lldesc_set_owner, 0x4000507c) + 0x40000fec PROVIDE (main, 0x40000fec) + 0x400097ac PROVIDE (md5_vector, 0x400097ac) + 0x40001c2c PROVIDE (mem_calloc, 0x40001c2c) + 0x400019e0 PROVIDE (mem_free, 0x400019e0) + 0x40001998 PROVIDE (mem_init, 0x40001998) + 0x40001b40 PROVIDE (mem_malloc, 0x40001b40) + 0x40001c6c PROVIDE (mem_realloc, 0x40001c6c) + 0x40001a14 PROVIDE (mem_trim, 0x40001a14) + 0x40001c58 PROVIDE (mem_zalloc, 0x40001c58) + 0x4000dea8 PROVIDE (memcmp, 0x4000dea8) + 0x4000df48 PROVIDE (memcpy, 0x4000df48) + 0x4000e04c PROVIDE (memmove, 0x4000e04c) + 0x4000e190 PROVIDE (memset, 0x4000e190) + 0x400031c0 PROVIDE (multofup, 0x400031c0) + 0x4000b840 PROVIDE (pbkdf2_sha1, 0x4000b840) + 0x40006b08 PROVIDE (phy_get_romfuncs, 0x40006b08) + 0x40000600 PROVIDE (rand, 0x40000600) + 0x4000dd68 PROVIDE (rc4_skip, 0x4000dd68) + 0x40003d08 PROVIDE (recv_packet, 0x40003d08) + 0x40000a04 PROVIDE (remove_head_space, 0x40000a04) + 0x40008dd0 PROVIDE (rijndaelKeySetupDec, 0x40008dd0) + 0x40009300 PROVIDE (rijndaelKeySetupEnc, 0x40009300) + 0x400060c0 PROVIDE (rom_abs_temp, 0x400060c0) + 0x40006b10 PROVIDE (rom_ana_inf_gating_en, 0x40006b10) + 0x40007a28 PROVIDE (rom_cal_tos_v50, 0x40007a28) + 0x40006f84 PROVIDE (rom_chip_50_set_channel, 0x40006f84) + 0x400060d0 PROVIDE (rom_chip_v5_disable_cca, 0x400060d0) + 0x400060ec PROVIDE (rom_chip_v5_enable_cca, 0x400060ec) + 0x4000711c PROVIDE (rom_chip_v5_rx_init, 0x4000711c) + 0x4000610c PROVIDE (rom_chip_v5_sense_backoff, 0x4000610c) + 0x4000718c PROVIDE (rom_chip_v5_tx_init, 0x4000718c) + 0x4000615c PROVIDE (rom_dc_iq_est, 0x4000615c) + 0x400061b8 PROVIDE (rom_en_pwdet, 0x400061b8) + 0x40006238 PROVIDE (rom_get_bb_atten, 0x40006238) + 0x40006260 PROVIDE (rom_get_corr_power, 0x40006260) + 0x400062dc PROVIDE (rom_get_fm_sar_dout, 0x400062dc) + 0x40006394 PROVIDE (rom_get_noisefloor, 0x40006394) + 0x400063b0 PROVIDE (rom_get_power_db, 0x400063b0) + 0x40007268 PROVIDE (rom_i2c_readReg, 0x40007268) + 0x4000729c PROVIDE (rom_i2c_readReg_Mask, 0x4000729c) + 0x400072d8 PROVIDE (rom_i2c_writeReg, 0x400072d8) + 0x4000730c PROVIDE (rom_i2c_writeReg_Mask, 0x4000730c) + 0x40006400 PROVIDE (rom_iq_est_disable, 0x40006400) + 0x40006430 PROVIDE (rom_iq_est_enable, 0x40006430) + 0x40006484 PROVIDE (rom_linear_to_db, 0x40006484) + 0x400065a4 PROVIDE (rom_mhz2ieee, 0x400065a4) + 0x40007bf0 PROVIDE (rom_pbus_dco___SA2, 0x40007bf0) + 0x4000737c PROVIDE (rom_pbus_debugmode, 0x4000737c) + 0x40007410 PROVIDE (rom_pbus_enter_debugmode, 0x40007410) + 0x40007448 PROVIDE (rom_pbus_exit_debugmode, 0x40007448) + 0x4000747c PROVIDE (rom_pbus_force_test, 0x4000747c) + 0x400074d8 PROVIDE (rom_pbus_rd, 0x400074d8) + 0x4000754c PROVIDE (rom_pbus_set_rxgain, 0x4000754c) + 0x40007610 PROVIDE (rom_pbus_set_txgain, 0x40007610) + 0x40007648 PROVIDE (rom_pbus_workmode, 0x40007648) + 0x40007688 PROVIDE (rom_pbus_xpd_rx_off, 0x40007688) + 0x400076cc PROVIDE (rom_pbus_xpd_rx_on, 0x400076cc) + 0x400076fc PROVIDE (rom_pbus_xpd_tx_off, 0x400076fc) + 0x40007740 PROVIDE (rom_pbus_xpd_tx_on, 0x40007740) + 0x400077a0 PROVIDE (rom_pbus_xpd_tx_on__low_gain, 0x400077a0) + 0x40007804 PROVIDE (rom_phy_reset_req, 0x40007804) + 0x4000781c PROVIDE (rom_restart_cal, 0x4000781c) + 0x40007eb4 PROVIDE (rom_rfcal_pwrctrl, 0x40007eb4) + 0x4000804c PROVIDE (rom_rfcal_rxiq, 0x4000804c) + 0x40008264 PROVIDE (rom_rfcal_rxiq_set_reg, 0x40008264) + 0x40008388 PROVIDE (rom_rfcal_txcap, 0x40008388) + 0x40008610 PROVIDE (rom_rfcal_txiq, 0x40008610) + 0x400088b8 PROVIDE (rom_rfcal_txiq_cover, 0x400088b8) + 0x40008a70 PROVIDE (rom_rfcal_txiq_set_reg, 0x40008a70) + 0x40007868 PROVIDE (rom_rfpll_reset, 0x40007868) + 0x40007968 PROVIDE (rom_rfpll_set_freq, 0x40007968) + 0x40008b6c PROVIDE (rom_rxiq_cover_mg_mp, 0x40008b6c) + 0x40006628 PROVIDE (rom_rxiq_get_mis, 0x40006628) + 0x40006738 PROVIDE (rom_sar_init, 0x40006738) + 0x4000678c PROVIDE (rom_set_ana_inf_tx_scale, 0x4000678c) + 0x40006c50 PROVIDE (rom_set_channel_freq, 0x40006c50) + 0x400067c8 PROVIDE (rom_set_loopback_gain, 0x400067c8) + 0x40006830 PROVIDE (rom_set_noise_floor, 0x40006830) + 0x40006550 PROVIDE (rom_set_rxclk_en, 0x40006550) + 0x40008c6c PROVIDE (rom_set_txbb_atten, 0x40008c6c) + 0x4000650c PROVIDE (rom_set_txclk_en, 0x4000650c) + 0x40008d34 PROVIDE (rom_set_txiq_cal, 0x40008d34) + 0x40006874 PROVIDE (rom_start_noisefloor, 0x40006874) + 0x400068b4 PROVIDE (rom_start_tx_tone, 0x400068b4) + 0x4000698c PROVIDE (rom_stop_tx_tone, 0x4000698c) + 0x40006a98 PROVIDE (rom_tx_mac_disable, 0x40006a98) + 0x40006ad4 PROVIDE (rom_tx_mac_enable, 0x40006ad4) + 0x40006a1c PROVIDE (rom_txtone_linear_pwr, 0x40006a1c) + 0x400078dc PROVIDE (rom_write_rfpll_sdm, 0x400078dc) + 0x400031b4 PROVIDE (roundup2, 0x400031b4) + 0x40002870 PROVIDE (rtc_enter_sleep, 0x40002870) + 0x400025e0 PROVIDE (rtc_get_reset_reason, 0x400025e0) + 0x400029ec PROVIDE (rtc_intr_handler, 0x400029ec) + 0x40002668 PROVIDE (rtc_set_sleep_mode, 0x40002668) + 0x400027a4 PROVIDE (save_rxbcn_mactime, 0x400027a4) + 0x400027ac PROVIDE (save_tsf_us, 0x400027ac) + 0x40003c80 PROVIDE (send_packet, 0x40003c80) + 0x4000ba48 PROVIDE (sha1_prf, 0x4000ba48) + 0x4000a2ec PROVIDE (sha1_vector, 0x4000a2ec) + 0x40005180 PROVIDE (sip_alloc_to_host_evt, 0x40005180) + 0x400058a8 PROVIDE (sip_get_ptr, 0x400058a8) + 0x40005668 PROVIDE (sip_get_state, 0x40005668) + 0x4000567c PROVIDE (sip_init_attach, 0x4000567c) + 0x4000544c PROVIDE (sip_install_rx_ctrl_cb, 0x4000544c) + 0x4000545c PROVIDE (sip_install_rx_data_cb, 0x4000545c) + 0x400050fc PROVIDE (sip_post, 0x400050fc) + 0x400056c4 PROVIDE (sip_post_init, 0x400056c4) + 0x4000534c PROVIDE (sip_reclaim_from_host_cmd, 0x4000534c) + 0x400052c0 PROVIDE (sip_reclaim_tx_data_pkt, 0x400052c0) + 0x40005808 PROVIDE (sip_send, 0x40005808) + 0x40005864 PROVIDE (sip_to_host_chain_append, 0x40005864) + 0x40005234 PROVIDE (sip_to_host_evt_send_done, 0x40005234) + 0x400060ac PROVIDE (slc_add_credits, 0x400060ac) + 0x40005d90 PROVIDE (slc_enable, 0x40005d90) + 0x40005f24 PROVIDE (slc_from_host_chain_fetch, 0x40005f24) + 0x40005e94 PROVIDE (slc_from_host_chain_recycle, 0x40005e94) + 0x40005c50 PROVIDE (slc_init_attach, 0x40005c50) + 0x4000608c PROVIDE (slc_init_credit, 0x4000608c) + 0x40006014 PROVIDE (slc_pause_from_host, 0x40006014) + 0x40005c1c PROVIDE (slc_reattach, 0x40005c1c) + 0x4000603c PROVIDE (slc_resume_from_host, 0x4000603c) + 0x40005dc0 PROVIDE (slc_select_tohost_gpio, 0x40005dc0) + 0x40005db8 PROVIDE (slc_select_tohost_gpio_mode, 0x40005db8) + 0x40005de4 PROVIDE (slc_send_to_host_chain, 0x40005de4) + 0x40006068 PROVIDE (slc_set_host_io_max_window, 0x40006068) + 0x40005f10 PROVIDE (slc_to_host_chain_recycle, 0x40005f10) + 0x4000264c PROVIDE (software_reset, 0x4000264c) + 0x40004644 PROVIDE (spi_flash_attach, 0x40004644) + 0x400005f0 PROVIDE (srand, 0x400005f0) + 0x4000bdc8 PROVIDE (strcmp, 0x4000bdc8) + 0x4000bec8 PROVIDE (strcpy, 0x4000bec8) + 0x4000bf4c PROVIDE (strlen, 0x4000bf4c) + 0x4000bfa8 PROVIDE (strncmp, 0x4000bfa8) + 0x4000c0a0 PROVIDE (strncpy, 0x4000c0a0) + 0x4000e1e0 PROVIDE (strstr, 0x4000e1e0) + 0x40002c64 PROVIDE (timer_insert, 0x40002c64) + 0x4000383c PROVIDE (uartAttach, 0x4000383c) + 0x40003924 PROVIDE (uart_baudrate_detect, 0x40003924) + 0x400038a4 PROVIDE (uart_buff_switch, 0x400038a4) + 0x400039d8 PROVIDE (uart_div_modify, 0x400039d8) + 0x40003bbc PROVIDE (uart_rx_intr_handler, 0x40003bbc) + 0x40003b8c PROVIDE (uart_rx_one_char, 0x40003b8c) + 0x40003b64 PROVIDE (uart_rx_one_char_block, 0x40003b64) + 0x40003ec8 PROVIDE (uart_rx_readbuff, 0x40003ec8) + 0x40003b30 PROVIDE (uart_tx_one_char, 0x40003b30) + 0x4000bc40 PROVIDE (wepkey_128, 0x4000bc40) + 0x4000bb3c PROVIDE (wepkey_64, 0x4000bb3c) + 0x40000688 PROVIDE (xthal_bcopy, 0x40000688) + 0x4000074c PROVIDE (xthal_copy123, 0x4000074c) + 0x4000dd4c PROVIDE (xthal_get_ccompare, 0x4000dd4c) + 0x4000dd38 PROVIDE (xthal_get_ccount, 0x4000dd38) + 0x4000dd58 PROVIDE (xthal_get_interrupt, 0x4000dd58) + 0x4000dd58 PROVIDE (xthal_get_intread, 0x4000dd58) + 0x400006c4 PROVIDE (xthal_memcpy, 0x400006c4) + 0x4000dd40 PROVIDE (xthal_set_ccompare, 0x4000dd40) + 0x4000dd60 PROVIDE (xthal_set_intclear, 0x4000dd60) + 0x4000e320 PROVIDE (xthal_spill_registers_into_stack_nw, 0x4000e320) + 0x4000e324 PROVIDE (xthal_window_spill, 0x4000e324) + 0x4000e320 PROVIDE (xthal_window_spill_nw, 0x4000e320) + 0x3fffccf0 PROVIDE (Te0, 0x3fffccf0) + 0x3fffd100 PROVIDE (Td0, 0x3fffd100) + 0x3fffd500 PROVIDE (Td4s, 0x3fffd500) + 0x3fffd0f0 PROVIDE (rcons, 0x3fffd0f0) + 0x3fffde10 PROVIDE (UartDev, 0x3fffde10) + 0x3fffc714 PROVIDE (flashchip, 0x3fffc714) +LOAD .pioenvs\sonoff\src\core_esp8266_timer.c.o +LOAD .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o +LOAD .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o +LOAD .pioenvs\sonoff\src\sonoff.ino.cpp.o +START GROUP +LOAD .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a +LOAD .pioenvs\sonoff\lib8be\libWire.a +LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a +LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a +LOAD .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a +LOAD .pioenvs\sonoff\lib47b\libTicker.a +LOAD .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a +LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a +LOAD .pioenvs\sonoff\lib13e\libESP8266mDNS.a +LOAD .pioenvs\sonoff\lib797\libArduinoOTA.a +LOAD .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a +LOAD .pioenvs\sonoff\lib99a\libSPI.a +LOAD .pioenvs\sonoff\lib5a3\libAdafruit-GFX-Library-1.2.9.a +LOAD .pioenvs\sonoff\lib4e0\libAdafruit_LED_Backpack-1.1.6.a +LOAD .pioenvs\sonoff\lib36c\libBME680_driver-bme680_v3.5.9.a +LOAD .pioenvs\sonoff\libdba\libArduinoJson-5.11.2.a +LOAD .pioenvs\sonoff\lib4b9\libESP8266WebServer.a +LOAD .pioenvs\sonoff\lib433\libEEPROM.a +LOAD .pioenvs\sonoff\lib172\libesp-knx-ip-0.5.1.a +LOAD .pioenvs\sonoff\liba3d\libDNSServer.a +LOAD .pioenvs\sonoff\lib344\libTasmotaMqtt-1.1.1.a +LOAD .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a +LOAD .pioenvs\sonoff\lib1a6\libOneWire-2.3.3.06.a +LOAD .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a +LOAD .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a +LOAD .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a +LOAD .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a +LOAD .pioenvs\sonoff\libe09\libesp-epaper-29-ws-20171230-gemu-1.0.a +LOAD .pioenvs\sonoff\libe00\libAdafruit_SSD1306-1.1.2.a +LOAD .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a +LOAD .pioenvs\sonoff\libc1f\libLiquidCrystal_I2C-1.1.3.a +LOAD .pioenvs\sonoff\lib964\libMPU6050.a +LOAD .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a +LOAD .pioenvs\sonoff\lib9c8\libAdafruit_ILI9341-1.2.0-Tasmota-1.0.a +LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a +LOAD .pioenvs\sonoff\lib417\libMutichannel_Gas_Sensor.a +LOAD .pioenvs\sonoff\lib56e\libarduino-mqtt-2.4.0.a +LOAD .pioenvs\sonoff\libFrameworkArduinoVariant.a +LOAD .pioenvs\sonoff\libFrameworkArduino.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmesh.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa2.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a +LOAD c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a +LOAD c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a +LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a +END GROUP +OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) + +.comment 0x00000000 0x1bac + .comment 0x00000000 0x11 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x12 (size before relaxing) + .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .comment 0x00000000 0x12 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .comment 0x00000011 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + 0x58 (size before relaxing) + .comment 0x00000068 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + 0x58 (size before relaxing) + .comment 0x000000bf 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + 0x59 (size before relaxing) + .comment 0x00000117 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + 0x62 (size before relaxing) + .comment 0x00000178 0x4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x50 (size before relaxing) + .comment 0x000001c7 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + 0x5a (size before relaxing) + .comment 0x00000220 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + 0x51 (size before relaxing) + .comment 0x00000270 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x52 (size before relaxing) + .comment 0x000002c1 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + 0x55 (size before relaxing) + .comment 0x00000315 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x57 (size before relaxing) + .comment 0x0000036b 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x52 (size before relaxing) + .comment 0x000003bc 0x4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x50 (size before relaxing) + .comment 0x0000040b 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x56 (size before relaxing) + .comment 0x00000460 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + 0x57 (size before relaxing) + .comment 0x000004b6 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x57 (size before relaxing) + .comment 0x0000050c 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + 0x57 (size before relaxing) + .comment 0x00000562 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x5c (size before relaxing) + .comment 0x000005bd 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x5b (size before relaxing) + .comment 0x00000617 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + 0x54 (size before relaxing) + .comment 0x0000066a 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + 0x57 (size before relaxing) + .comment 0x000006c0 0x21 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x22 (size before relaxing) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .comment 0x000006e1 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x57 (size before relaxing) + .comment 0x00000737 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + 0x5e (size before relaxing) + .comment 0x00000794 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + 0x5b (size before relaxing) + .comment 0x000007ee 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x5e (size before relaxing) + .comment 0x0000084b 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + 0x5a (size before relaxing) + .comment 0x000008a4 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + 0x5d (size before relaxing) + .comment 0x00000900 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + 0x62 (size before relaxing) + .comment 0x00000961 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + 0x5e (size before relaxing) + .comment 0x000009be 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + 0x5b (size before relaxing) + .comment 0x00000a18 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + 0x5d (size before relaxing) + .comment 0x00000a74 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + 0x5d (size before relaxing) + .comment 0x00000ad0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + 0x5c (size before relaxing) + .comment 0x00000b2b 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + 0x5c (size before relaxing) + .comment 0x00000b86 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + 0x5b (size before relaxing) + .comment 0x00000be0 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + 0x54 (size before relaxing) + .comment 0x00000c33 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + 0x54 (size before relaxing) + .comment 0x00000c86 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + 0x5e (size before relaxing) + .comment 0x00000ce3 0x64 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + 0x65 (size before relaxing) + .comment 0x00000d47 0x62 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + 0x63 (size before relaxing) + .comment 0x00000da9 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + 0x61 (size before relaxing) + .comment 0x00000e09 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + 0x51 (size before relaxing) + .comment 0x00000e59 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + 0x58 (size before relaxing) + .comment 0x00000eb0 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + 0x5a (size before relaxing) + .comment 0x00000f09 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + 0x5a (size before relaxing) + .comment 0x00000f62 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + 0x5b (size before relaxing) + .comment 0x00000fbc 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + 0x5a (size before relaxing) + .comment 0x00001015 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + 0x58 (size before relaxing) + .comment 0x0000106c 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + 0x52 (size before relaxing) + .comment 0x000010bd 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + 0x5c (size before relaxing) + .comment 0x00001118 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + 0x5c (size before relaxing) + .comment 0x00001173 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + 0x5e (size before relaxing) + .comment 0x000011d0 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + 0x55 (size before relaxing) + .comment 0x00001224 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + 0x5e (size before relaxing) + .comment 0x00001281 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + 0x5e (size before relaxing) + .comment 0x000012de 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + 0x57 (size before relaxing) + .comment 0x00001334 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + 0x57 (size before relaxing) + .comment 0x0000138a 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + 0x54 (size before relaxing) + .comment 0x000013dd 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + 0x5d (size before relaxing) + .comment 0x00001439 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + 0x5a (size before relaxing) + .comment 0x00001492 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + 0x64 (size before relaxing) + .comment 0x000014f5 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + 0x54 (size before relaxing) + .comment 0x00001548 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .comment 0x00001589 0x4d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .comment 0x000015d6 0x49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .comment 0x0000161f 0x4d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .comment 0x0000166c 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .comment 0x000016bc 0x47 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .comment 0x00001703 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x41 (size before relaxing) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .comment 0x00001743 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + 0x57 (size before relaxing) + .comment 0x00001799 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + 0x56 (size before relaxing) + .comment 0x000017ee 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + 0x59 (size before relaxing) + .comment 0x00001846 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + 0x54 (size before relaxing) + .comment 0x00001899 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + 0x51 (size before relaxing) + .comment 0x000018e9 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + 0x58 (size before relaxing) + .comment 0x00001940 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + 0x57 (size before relaxing) + .comment 0x00001996 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + 0x54 (size before relaxing) + .comment 0x000019e9 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + 0x56 (size before relaxing) + .comment 0x00001a3e 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + 0x57 (size before relaxing) + .comment 0x00001a94 0x62 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + 0x63 (size before relaxing) + .comment 0x00001af6 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + 0x62 (size before relaxing) + .comment 0x00001b57 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + 0x56 (size before relaxing) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + +.xtensa.info 0x00000000 0x38 + .xtensa.info 0x00000000 0x38 .pioenvs\sonoff\src\core_esp8266_timer.c.o + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) + +.xt.lit._ZN5Print5writeEPKc + 0x00000000 0x0 + .xt.lit._ZN5Print5writeEPKc + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN12PubSubClientD2Ev + 0x00000000 0x0 + .xt.lit._ZN12PubSubClientD2Ev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN12PubSubClientD0Ev + 0x00000000 0x0 + .xt.lit._ZN12PubSubClientD0Ev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9JsonArray7invalidEv + 0x00000000 0x8 + .xt.lit._ZN11ArduinoJson9JsonArray7invalidEv + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJson10JsonObject7invalidEv + 0x00000000 0x8 + .xt.lit._ZN11ArduinoJson10JsonObject7invalidEv + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZNSt8functionIFvvEEC2IPS0_vEET_ + 0x00000000 0x8 + .xt.lit._ZNSt8functionIFvvEEC2IPS0_vEET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x00000000 0x8 + .xt.lit._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x00000000 0x8 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.lit._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x00000000 0x0 + .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8 (size before relaxing) + +.xt.prop._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data + 0x00000000 0x24 + .xt.prop._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation + 0x00000000 0x54 + .xt.prop._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation + 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j + 0x00000000 0x24 + .xt.prop._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation + 0x00000000 0x54 + .xt.prop._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation + 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson20StaticJsonBufferBase5allocEj + 0x00000000 0x3c + .xt.prop._ZN11ArduinoJson20StaticJsonBufferBase5allocEj + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN5Print5writeEPKc + 0x00000000 0x30 + .xt.prop._ZN5Print5writeEPKc + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN5Print5writeEPKcj + 0x00000000 0x24 + .xt.prop._ZN5Print5writeEPKcj + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN14HardwareSerial5writeEj + 0x00000000 0x24 + .xt.prop._ZN14HardwareSerial5writeEj + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN14HardwareSerial5writeEi + 0x00000000 0x24 + .xt.prop._ZN14HardwareSerial5writeEi + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN12PubSubClientD2Ev + 0x00000000 0x24 + .xt.prop._ZN12PubSubClientD2Ev + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN12PubSubClientD0Ev + 0x00000000 0x24 + .xt.prop._ZN12PubSubClientD0Ev + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9JsonArray7invalidEv + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJson9JsonArray7invalidEv + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonObject7invalidEv + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJson10JsonObject7invalidEv + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x00000000 0x3c + .xt.prop._ZN11ArduinoJson10JsonBuffer11createArrayEv + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x00000000 0x3c + .xt.prop._ZN11ArduinoJson10JsonBuffer12createObjectEv + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x00000000 0x54 + .xt.prop._ZNK11ArduinoJson11JsonVariant15variantAsStringEv + 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN7TwoWire5writeEi + 0x00000000 0x24 + .xt.prop._ZN7TwoWire5writeEi + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt + 0x00000000 0x3c + .xt.prop._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor + 0x00000000 0x30 + .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x00000000 0x48 + .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor + 0x00000000 0x3c + .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 + .xt.prop._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x24 + .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x00000000 0x24 + .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 + .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x24 + .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ + 0x00000000 0xd8 + .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ + 0x00000000 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x00000000 0xa8 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv + 0x00000000 0xa8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x00000000 0x78 + .xt.prop._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ + 0x00000000 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ + 0x00000000 0xd8 + .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ + 0x00000000 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x00000000 0x108 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 + .xt.prop._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x3c + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x00000000 0xf0 + .xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v + 0x00000000 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x00000000 0x30 + .xt.prop._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x00000000 0x6c + .xt.prop._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ + 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x00000000 0x6c + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv + 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0xb4 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0xb4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x00000000 0x6c + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv + 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x00000000 0x24 + .xt.prop._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x00000000 0x6c + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv + 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0xb4 + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE + 0x00000000 0xb4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x00000000 0x6c + .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv + 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x00000000 0xc + .xt.prop._ZZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x00000000 0xc + .xt.prop._ZZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson10JsonBufferE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson10JsonBufferE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTV12PubSubClient + 0x00000000 0xc + .xt.prop._ZTV12PubSubClient + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x00000000 0xc + .xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x00000000 0xc + .xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + +.xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + +.xt.prop._ZTV7TwoWire + 0x00000000 0xc + .xt.prop._ZTV7TwoWire + 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + +.xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x8 + .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev + 0x00000000 0x0 + .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x00000000 0x0 + .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x00000000 0x0 + .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x00000000 0x0 + .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x00000000 0x0 + .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x00000000 0x8 + .xt.lit._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.lit._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x00000000 0x0 + .xt.lit._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x00000000 0x8 + .xt.lit._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv + 0x00000000 0x30 + .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x24 + .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev + 0x00000000 0x24 + .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info + 0x00000000 0x24 + .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x00000000 0x24 + .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x00000000 0x24 + .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x00000000 0x24 + .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x00000000 0x24 + .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x00000000 0x30 + .xt.prop._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x00000000 0x3c + .xt.prop._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv + 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x00000000 0x30 + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZSt4swapISt9_Any_dataEvRT_S2_ + 0x00000000 0x24 + .xt.prop._ZSt4swapISt9_Any_dataEvRT_S2_ + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE + 0x00000000 0xc + .xt.prop._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.prop._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE + 0x00000000 0xc + .xt.prop._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + +.xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x0 + .xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x0 + .xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext8_s_errorEPva + 0x00000000 0x0 + .xt.lit._ZN13ClientContext8_s_errorEPva + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext5flushEv + 0x00000000 0x0 + .xt.lit._ZN13ClientContext5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext5unrefEv + 0x00000000 0x0 + .xt.lit._ZN13ClientContext5unrefEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext5writeEPKcj + 0x00000000 0x0 + .xt.lit._ZN13ClientContext5writeEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN13ClientContext8_consumeEj + 0x00000000 0x0 + .xt.lit._ZN13ClientContext8_consumeEj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x30 + .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x6c + .xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa + 0x00000000 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext8_s_errorEPva + 0x00000000 0x30 + .xt.prop._ZN13ClientContext8_s_errorEPva + 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext5flushEv + 0x00000000 0x3c + .xt.prop._ZN13ClientContext5flushEv + 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext5unrefEv + 0x00000000 0x54 + .xt.prop._ZN13ClientContext5unrefEv + 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext5writeEPKcj + 0x00000000 0x54 + .xt.prop._ZN13ClientContext5writeEPKcj + 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZN13ClientContext8_consumeEj + 0x00000000 0x60 + .xt.prop._ZN13ClientContext8_consumeEj + 0x00000000 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.prop._ZTV10WiFiClient + 0x00000000 0xc + .xt.prop._ZTV10WiFiClient + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + +.xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x0 + .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN10UdpContextC2Ev + 0x00000000 0x0 + .xt.lit._ZN10UdpContextC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN10UdpContext5unrefEv + 0x00000000 0x0 + .xt.lit._ZN10UdpContext5unrefEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN7WiFiUDP4readEPcj + 0x00000000 0x24 + .xt.prop._ZN7WiFiUDP4readEPcj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + +.xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x48 + .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + +.xt.prop._ZN10UdpContextC2Ev + 0x00000000 0x24 + .xt.prop._ZN10UdpContextC2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + +.xt.prop._ZN10UdpContext5unrefEv + 0x00000000 0x54 + .xt.prop._ZN10UdpContext5unrefEv + 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + +.xt.prop._ZTV7WiFiUDP + 0x00000000 0xc + .xt.prop._ZTV7WiFiUDP + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + +.xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x00000000 0x0 + .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN10UdpContext4readEPcj + 0x00000000 0x0 + .xt.lit._ZN10UdpContext4readEPcj + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN10UdpContext6appendEPKcj + 0x00000000 0x0 + .xt.lit._ZN10UdpContext6appendEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN10UdpContext4sendEP7ip_addrt + 0x00000000 0x0 + .xt.lit._ZN10UdpContext4sendEP7ip_addrt + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x00000000 0x0 + .xt.lit._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x00000000 0x60 + .xt.prop._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation + 0x00000000 0x60 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data + 0x00000000 0x30 + .xt.prop._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZN10UdpContext4readEv + 0x00000000 0x3c + .xt.prop._ZN10UdpContext4readEv + 0x00000000 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZN10UdpContext4readEPcj + 0x00000000 0x48 + .xt.prop._ZN10UdpContext4readEPcj + 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZN10UdpContext5flushEv + 0x00000000 0x30 + .xt.prop._ZN10UdpContext5flushEv + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZN10UdpContext6appendEPKcj + 0x00000000 0xa8 + .xt.prop._ZN10UdpContext6appendEPKcj + 0x00000000 0xa8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZN10UdpContext4sendEP7ip_addrt + 0x00000000 0x60 + .xt.prop._ZN10UdpContext4sendEP7ip_addrt + 0x00000000 0x60 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.prop._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x00000000 0x24 + .xt.prop._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + +.xt.lit._ZN14RequestHandlerD2Ev + 0x00000000 0x8 + .xt.lit._ZN14RequestHandlerD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.lit._ZN14RequestHandlerD0Ev + 0x00000000 0x0 + .xt.lit._ZN14RequestHandlerD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN22FunctionRequestHandler9canUploadE6String + 0x00000000 0x0 + .xt.lit._ZN22FunctionRequestHandler9canUploadE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x0 + .xt.lit._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN22FunctionRequestHandlerD2Ev + 0x00000000 0x8 + .xt.lit._ZN22FunctionRequestHandlerD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.lit._ZN22FunctionRequestHandlerD0Ev + 0x00000000 0x0 + .xt.lit._ZN22FunctionRequestHandlerD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNKSt8functionIFvvEEclEv + 0x00000000 0x0 + .xt.lit._ZNKSt8functionIFvvEEclEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x0 + .xt.lit._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x0 + .xt.lit._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x00000000 0x0 + .xt.lit._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN14RequestHandlerD2Ev + 0x00000000 0x24 + .xt.prop._ZN14RequestHandlerD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN14RequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x24 + .xt.prop._ZN14RequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN14RequestHandler9canUploadE6String + 0x00000000 0x24 + .xt.prop._ZN14RequestHandler9canUploadE6String + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x24 + .xt.prop._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x24 + .xt.prop._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN14RequestHandlerD0Ev + 0x00000000 0x24 + .xt.prop._ZN14RequestHandlerD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandler9canUploadE6String + 0x00000000 0x30 + .xt.prop._ZN22FunctionRequestHandler9canUploadE6String + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x3c + .xt.prop._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x3c .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandlerD2Ev + 0x00000000 0x24 + .xt.prop._ZN22FunctionRequestHandlerD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandlerD0Ev + 0x00000000 0x24 + .xt.prop._ZN22FunctionRequestHandlerD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZNKSt8functionIFvvEEclEv + 0x00000000 0x30 + .xt.prop._ZNKSt8functionIFvvEEclEv + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x30 + .xt.prop._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x30 + .xt.prop._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x00000000 0x24 + .xt.prop._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZTV14RequestHandler + 0x00000000 0xc + .xt.prop._ZTV14RequestHandler + 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.prop._ZTV22FunctionRequestHandler + 0x00000000 0xc + .xt.prop._ZTV22FunctionRequestHandler + 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + +.xt.lit._ZNK6String9substringEj + 0x00000000 0x0 + .xt.lit._ZNK6String9substringEj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x00000000 0x8 + .xt.lit._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + +.xt.prop._ZNK6String9substringEj + 0x00000000 0x24 + .xt.prop._ZNK6String9substringEj + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + +.xt.prop._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x00000000 0x24 + .xt.prop._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + +.xt.prop._ZNK6String14StringIfHelperEv + 0x00000000 0x24 + .xt.prop._ZNK6String14StringIfHelperEv + 0x00000000 0x24 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + +.xt.prop._ZTV13TasmotaSerial + 0x00000000 0xc + .xt.prop._ZTV13TasmotaSerial + 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + +.xt.lit._ZN13TasmotaModbusD2Ev + 0x00000000 0x8 + .xt.lit._ZN13TasmotaModbusD2Ev + 0x00000000 0x8 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.lit._ZN13TasmotaModbusD0Ev + 0x00000000 0x0 + .xt.lit._ZN13TasmotaModbusD0Ev + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN13TasmotaModbusD2Ev + 0x00000000 0x24 + .xt.prop._ZN13TasmotaModbusD2Ev + 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.prop._ZN13TasmotaModbusD0Ev + 0x00000000 0x24 + .xt.prop._ZN13TasmotaModbusD0Ev + 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.prop._ZTV13TasmotaModbus + 0x00000000 0xc + .xt.prop._ZTV13TasmotaModbus + 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x0 + .xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ + 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + +.xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x24 + .xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + +.xt.lit._ZN14HardwareSerialD2Ev + 0x00000000 0x8 + .xt.lit._ZN14HardwareSerialD2Ev + 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + +.xt.lit._ZN14HardwareSerialD0Ev + 0x00000000 0x0 + .xt.lit._ZN14HardwareSerialD0Ev + 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN14HardwareSerialD2Ev + 0x00000000 0x24 + .xt.prop._ZN14HardwareSerialD2Ev + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + +.xt.prop._ZN14HardwareSerialD0Ev + 0x00000000 0x24 + .xt.prop._ZN14HardwareSerialD0Ev + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + +.xt.prop._ZTV14HardwareSerial + 0x00000000 0xc + .xt.prop._ZTV14HardwareSerial + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + +.xt.prop._ZTV9IPAddress + 0x00000000 0xc + .xt.prop._ZTV9IPAddress + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + +.xt.prop._ZTV6Stream + 0x00000000 0xc + .xt.prop._ZTV6Stream + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + +.xt.prop._ZTV12StreamString + 0x00000000 0xc + .xt.prop._ZTV12StreamString + 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + +.xt.prop._ZNSt8functionIFvvEE4swapERS1_ + 0x00000000 0x24 + .xt.prop._ZNSt8functionIFvvEE4swapERS1_ + 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + +.xt.lit._ZN10WiFiServerD2Ev + 0x00000000 0x8 + .xt.lit._ZN10WiFiServerD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + +.xt.lit._ZN10WiFiServerD0Ev + 0x00000000 0x0 + .xt.lit._ZN10WiFiServerD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN10WiFiServerD2Ev + 0x00000000 0x24 + .xt.prop._ZN10WiFiServerD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + +.xt.prop._ZN10WiFiServerD0Ev + 0x00000000 0x24 + .xt.prop._ZN10WiFiServerD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + +.xt.prop._ZTV10WiFiServer + 0x00000000 0xc + .xt.prop._ZTV10WiFiServer + 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + +.xt.lit._ZN15TransportTraitsD2Ev + 0x00000000 0x8 + .xt.lit._ZN15TransportTraitsD2Ev + 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.lit._ZN15TransportTraitsD0Ev + 0x00000000 0x0 + .xt.lit._ZN15TransportTraitsD0Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZN15TransportTraits6createEv + 0x00000000 0x0 + .xt.lit._ZN15TransportTraits6createEv + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev + 0x00000000 0x0 + .xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x8 (size before relaxing) + +.xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x00000000 0x0 + .xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN15TransportTraitsD2Ev + 0x00000000 0x24 + .xt.prop._ZN15TransportTraitsD2Ev + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZN15TransportTraits6verifyER10WiFiClientPKc + 0x00000000 0x24 + .xt.prop._ZN15TransportTraits6verifyER10WiFiClientPKc + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZN15TransportTraitsD0Ev + 0x00000000 0x24 + .xt.prop._ZN15TransportTraitsD0Ev + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZN15TransportTraits6createEv + 0x00000000 0x24 + .xt.prop._ZN15TransportTraits6createEv + 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev + 0x00000000 0x30 + .xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x00000000 0x30 + .xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ + 0x00000000 0x30 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.xt.prop._ZTV15TransportTraits + 0x00000000 0xc + .xt.prop._ZTV15TransportTraits + 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + +.debug_frame 0x00000000 0x42bc + .debug_frame 0x00000000 0x244 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_frame 0x00000244 0x47c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_frame 0x000006c0 0x404 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_frame 0x00000ac4 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_frame 0x00000bfc 0x394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_frame 0x00000f90 0x13c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_frame 0x000010cc 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_frame 0x000010fc 0x164 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_frame 0x00001260 0x264 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_frame 0x000014c4 0x2e4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_frame 0x000017a8 0x404 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_frame 0x00001bac 0x210 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_frame 0x00001dbc 0x1a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_frame 0x00001f60 0x148 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_frame 0x000020a8 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_frame 0x000022d0 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_frame 0x00002338 0x1d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_frame 0x0000250c 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_frame 0x000025d8 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_frame 0x000026d4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_frame 0x00002794 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_frame 0x00002894 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_frame 0x00002938 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_frame 0x00002968 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_frame 0x00002998 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_frame 0x000029c8 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_frame 0x000029f8 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_frame 0x00002a58 0x6c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_frame 0x00003118 0xbc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_frame 0x000031d4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_frame 0x00003294 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_frame 0x00003354 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_frame 0x00003430 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_frame 0x000034c8 0x590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_frame 0x00003a58 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_frame 0x00003ad0 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_frame 0x00003b84 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_frame 0x00003bc8 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_frame 0x00003d0c 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_frame 0x00003da0 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_frame 0x00003e44 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_frame 0x00003eac 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_frame 0x00003f44 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_frame 0x000041c4 0xf8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_info 0x00000000 0x2ea28 + .debug_info 0x00000000 0x1e25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_info 0x00001e25 0x1e6a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_info 0x00003c8f 0x2b2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_info 0x000067be 0x15fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_info 0x00007dbc 0x2524 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_info 0x0000a2e0 0xe7f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_info 0x0000b15f 0xeb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_info 0x0000b24a 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_info 0x0000c3ea 0x1098 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_info 0x0000d482 0x13ea C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_info 0x0000e86c 0x1c46 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_info 0x000104b2 0x18b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_info 0x00011d65 0xc49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_info 0x000129ae 0xf7f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_info 0x0001392d 0x191e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_info 0x0001524b 0x9be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_info 0x00015c09 0x1033 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_info 0x00016c3c 0x40d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_info 0x00017049 0xfbe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_info 0x00018007 0x6d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_info 0x000186da 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .debug_info 0x00018802 0xa23 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_info 0x00019225 0x167d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_info 0x0001a8a2 0xcd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .debug_info 0x0001a96f 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_info 0x0001aa3e 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_info 0x0001aae2 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_info 0x0001ab86 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_info 0x0001ac2a 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_info 0x0001acce 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_info 0x0001ad72 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .debug_info 0x0001ae16 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_info 0x0001aeba 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .debug_info 0x0001af5e 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_info 0x0001b003 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_info 0x0001b0a8 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_info 0x0001b14d 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_info 0x0001b1f2 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_info 0x0001b297 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_info 0x0001b33c 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_info 0x0001b3e1 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_info 0x0001b486 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_info 0x0001b52b 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_info 0x0001b5d0 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_info 0x0001b675 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_info 0x0001b71a 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_info 0x0001b7bf 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_info 0x0001b864 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_info 0x0001b909 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_info 0x0001b9ae 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_info 0x0001ba53 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_info 0x0001bbc7 0x60c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_info 0x0001c1d3 0x5da c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_info 0x0001c7ad 0x61d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_info 0x0001cdca 0x3fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_info 0x0001d1c8 0x420b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_info 0x000213d3 0x1494 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_info 0x00022867 0x13ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_info 0x00023c53 0x1acb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_info 0x0002571e 0x5e7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_info 0x00025d05 0xb05 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_info 0x0002680a 0x2935 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_info 0x0002913f 0x641 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_info 0x00029780 0x48f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_info 0x00029c0f 0x1f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_info 0x00029e05 0xe07 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_info 0x0002ac0c 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_info 0x0002af31 0x3e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_info 0x0002b319 0x2ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_info 0x0002b5e3 0x3dd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_info 0x0002b9c0 0x18b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_info 0x0002d272 0x17b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_abbrev 0x00000000 0x7da8 + .debug_abbrev 0x00000000 0x499 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_abbrev 0x00000499 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_abbrev 0x0000086f 0x4e5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_abbrev 0x00000d54 0x359 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_abbrev 0x000010ad 0x448 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_abbrev 0x000014f5 0x33e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_abbrev 0x00001833 0x7e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_abbrev 0x000018b1 0x355 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_abbrev 0x00001c06 0x2e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_abbrev 0x00001ee6 0x37e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_abbrev 0x00002264 0x46e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_abbrev 0x000026d2 0x3d2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_abbrev 0x00002aa4 0x25a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_abbrev 0x00002cfe 0x272 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_abbrev 0x00002f70 0x3c1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_abbrev 0x00003331 0x255 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_abbrev 0x00003586 0x3c5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_abbrev 0x0000394b 0x15e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_abbrev 0x00003aa9 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_abbrev 0x00003d29 0x23a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_abbrev 0x00003f63 0x73 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .debug_abbrev 0x00003fd6 0x24f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_abbrev 0x00004225 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_abbrev 0x000045fb 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .debug_abbrev 0x0000460f 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_abbrev 0x00004623 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_abbrev 0x00004637 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_abbrev 0x0000464b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_abbrev 0x0000465f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_abbrev 0x00004673 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_abbrev 0x00004687 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .debug_abbrev 0x0000469b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_abbrev 0x000046af 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .debug_abbrev 0x000046c3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_abbrev 0x000046d7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_abbrev 0x000046eb 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_abbrev 0x000046ff 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_abbrev 0x00004713 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_abbrev 0x00004727 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_abbrev 0x0000473b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_abbrev 0x0000474f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_abbrev 0x00004763 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_abbrev 0x00004777 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_abbrev 0x0000478b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_abbrev 0x0000479f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_abbrev 0x000047b3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_abbrev 0x000047c7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_abbrev 0x000047db 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_abbrev 0x000047ef 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_abbrev 0x00004803 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_abbrev 0x00004817 0xfd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_abbrev 0x00004914 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_abbrev 0x00004ab7 0x194 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_abbrev 0x00004c4b 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_abbrev 0x00004dee 0x212 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_abbrev 0x00005000 0x54e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_abbrev 0x0000554e 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_abbrev 0x000058c8 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_abbrev 0x00005c4c 0x3b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_abbrev 0x00005fff 0x2c2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_abbrev 0x000062c1 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_abbrev 0x00006577 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_abbrev 0x00006970 0x139 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_abbrev 0x00006aa9 0x219 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_abbrev 0x00006cc2 0xf2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_abbrev 0x00006db4 0x23f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_abbrev 0x00006ff3 0x189 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_abbrev 0x0000717c 0x14b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_abbrev 0x000072c7 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_abbrev 0x00007423 0x1a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_abbrev 0x000075c9 0x3e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_abbrev 0x000079b2 0x3f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_loc 0x00000000 0x21bf2 + .debug_loc 0x00000000 0x14ed C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_loc 0x000014ed 0x1624 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_loc 0x00002b11 0x1827 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_loc 0x00004338 0x9b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_loc 0x00004cf0 0x10ad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_loc 0x00005d9d 0x918 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_loc 0x000066b5 0x45d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_loc 0x00006b12 0xecd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_loc 0x000079df 0x9af C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_loc 0x0000838e 0xdf5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_loc 0x00009183 0x132a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_loc 0x0000a4ad 0x306 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_loc 0x0000a7b3 0x788 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_loc 0x0000af3b 0xe2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_loc 0x0000bd6a 0x24a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_loc 0x0000bfb4 0x6e2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_loc 0x0000c696 0x639 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_loc 0x0000cccf 0x92d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_loc 0x0000d5fc 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_loc 0x0000dc78 0x3cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_loc 0x0000e044 0x906 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_loc 0x0000e94a 0x50 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_loc 0x0000e99a 0xb8b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_loc 0x0000f525 0xcf5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_loc 0x0001021a 0xa45 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_loc 0x00010c5f 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_loc 0x00010e57 0x2e24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_loc 0x00013c7b 0x8d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_loc 0x0001454f 0xa49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_loc 0x00014f98 0x873 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_loc 0x0001580b 0x4fb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_loc 0x00015d06 0x1ab6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_loc 0x000177bc 0x2583 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_loc 0x00019d3f 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_loc 0x00019f71 0x665 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_loc 0x0001a5d6 0x1e3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_loc 0x0001a7b9 0x943 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_loc 0x0001b0fc 0x44e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_loc 0x0001b54a 0x3fb9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_loc 0x0001f503 0xbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_loc 0x0001f5be 0x699 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_loc 0x0001fc57 0x138c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_loc 0x00020fe3 0xc0f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_aranges 0x00000000 0x11e8 + .debug_aranges + 0x00000000 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_aranges + 0x00000098 0x168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_aranges + 0x00000200 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_aranges + 0x000002e8 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_aranges + 0x00000340 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_aranges + 0x00000428 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_aranges + 0x00000488 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_aranges + 0x000004a8 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_aranges + 0x00000528 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_aranges + 0x000005d0 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_aranges + 0x000006a0 0x118 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_aranges + 0x000007b8 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_aranges + 0x00000838 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_aranges + 0x000008b0 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_aranges + 0x00000918 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_aranges + 0x00000990 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_aranges + 0x000009b8 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_aranges + 0x00000a30 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_aranges + 0x00000a70 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_aranges + 0x00000ab8 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_aranges + 0x00000b00 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .debug_aranges + 0x00000b18 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_aranges + 0x00000b70 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_aranges + 0x00000ba8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .debug_aranges + 0x00000bc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_aranges + 0x00000be8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_aranges + 0x00000c08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_aranges + 0x00000c28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_aranges + 0x00000c48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_aranges + 0x00000c68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_aranges + 0x00000c88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .debug_aranges + 0x00000ca8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_aranges + 0x00000cc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .debug_aranges + 0x00000ce8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_aranges + 0x00000d08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_aranges + 0x00000d28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_aranges + 0x00000d48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_aranges + 0x00000d68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_aranges + 0x00000d88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_aranges + 0x00000da8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_aranges + 0x00000dc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_aranges + 0x00000de8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_aranges + 0x00000e08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_aranges + 0x00000e28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_aranges + 0x00000e48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_aranges + 0x00000e68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_aranges + 0x00000e88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_aranges + 0x00000ea8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_aranges + 0x00000ec8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_aranges + 0x00000ee8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_aranges + 0x00000f08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_aranges + 0x00000f28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_aranges + 0x00000f48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_aranges + 0x00000f68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_aranges + 0x00000f88 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_aranges + 0x00000fc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_aranges + 0x00000fe8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_aranges + 0x00001008 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_aranges + 0x00001028 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_aranges + 0x00001048 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_aranges + 0x00001068 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_aranges + 0x00001088 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_aranges + 0x000010a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_aranges + 0x000010c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_aranges + 0x000010e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_aranges + 0x00001108 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_aranges + 0x00001128 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_aranges + 0x00001148 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_aranges + 0x00001168 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_aranges + 0x00001188 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_aranges + 0x000011a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_aranges + 0x000011c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_ranges 0x00000000 0x1a10 + .debug_ranges 0x00000000 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_ranges 0x00000128 0x170 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_ranges 0x00000298 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_ranges 0x000003d0 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_ranges 0x00000448 0x1b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_ranges 0x000005f8 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_ranges 0x00000660 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_ranges 0x00000670 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_ranges 0x000006f8 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_ranges 0x000007c8 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_ranges 0x000008b8 0x1a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_ranges 0x00000a58 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_ranges 0x00000b38 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_ranges 0x00000ba0 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_ranges 0x00000bf8 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_ranges 0x00000cc8 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_ranges 0x00000d08 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_ranges 0x00000d90 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_ranges 0x00000dc0 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_ranges 0x00000e68 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_ranges 0x00000ed8 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_ranges 0x00000f20 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_ranges 0x00000f90 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_ranges 0x00000ff0 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_ranges 0x00001050 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_ranges 0x000010e8 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_ranges 0x00001118 0x2a8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_ranges 0x000013c0 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_ranges 0x000013f0 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_ranges 0x00001460 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_ranges 0x00001498 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_ranges 0x000014c8 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_ranges 0x000015c8 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_ranges 0x000017e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_ranges 0x00001808 0x158 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_ranges 0x00001960 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_line 0x00000000 0x1c7ab + .debug_line 0x00000000 0xf97 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + .debug_line 0x00000f97 0x1039 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + .debug_line 0x00001fd0 0x123f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .debug_line 0x0000320f 0x655 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + .debug_line 0x00003864 0x1351 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + .debug_line 0x00004bb5 0x763 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + .debug_line 0x00005318 0x12e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + .debug_line 0x00005446 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + .debug_line 0x000058fd 0x9df C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .debug_line 0x000062dc 0xc1f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .debug_line 0x00006efb 0x1112 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + .debug_line 0x0000800d 0xe50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + .debug_line 0x00008e5d 0x612 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + .debug_line 0x0000946f 0x82c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + .debug_line 0x00009c9b 0xa0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + .debug_line 0x0000a6a6 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + .debug_line 0x0000aa42 0x7cf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .debug_line 0x0000b211 0x413 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + .debug_line 0x0000b624 0x753 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .debug_line 0x0000bd77 0x4b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + .debug_line 0x0000c22a 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + .debug_line 0x0000c2ea 0x42b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + .debug_line 0x0000c715 0x110c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .debug_line 0x0000d821 0xbd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) + .debug_line 0x0000d8de 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_line 0x0000d968 0x127 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_line 0x0000da8f 0xe5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_line 0x0000db74 0xf7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_line 0x0000dc6b 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_line 0x0000dd32 0x103 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_line 0x0000de35 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + .debug_line 0x0000deba 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_line 0x0000df3f 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + .debug_line 0x0000dfc4 0x488 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_line 0x0000e44c 0x34a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_line 0x0000e796 0x2e4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_line 0x0000ea7a 0x2c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_line 0x0000ed40 0xe0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_line 0x0000ee20 0x110 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_line 0x0000ef30 0xec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_line 0x0000f01c 0x15e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_line 0x0000f17a 0x686 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_line 0x0000f800 0x5f8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_line 0x0000fdf8 0x4a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_line 0x00010298 0x35c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_line 0x000105f4 0xf2 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_line 0x000106e6 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_line 0x00010808 0xce c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_line 0x000108d6 0x1a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_line 0x00010a76 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_line 0x00010b98 0x96 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_line 0x00010c2e 0x1dd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_line 0x00010e0b 0x1a7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_line 0x00010fb2 0x200 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_line 0x000111b2 0x49a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_line 0x0001164c 0x1d1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_line 0x00013369 0x729 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_line 0x00013a92 0x595 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_line 0x00014027 0x8f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_line 0x00014920 0x373 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_line 0x00014c93 0xc17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_line 0x000158aa 0x1709 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_line 0x00016fb3 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_line 0x000171db 0x70a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_line 0x000178e5 0x1a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_line 0x00017a8a 0x566 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_line 0x00017ff0 0x4cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_line 0x000184bc 0x28a1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_line 0x0001ad5d 0x19c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_line 0x0001aef9 0x586 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_line 0x0001b47f 0xd0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_line 0x0001c18a 0x621 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + +.debug_str 0x00000000 0x5851 + .debug_str 0x00000000 0x850 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0xa12 (size before relaxing) + .debug_str 0x00000850 0xaf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0xf6d (size before relaxing) + .debug_str 0x00001349 0x66f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x107a (size before relaxing) + .debug_str 0x000019b8 0x149 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + 0x9da (size before relaxing) + .debug_str 0x00001b01 0x4d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0xa17 (size before relaxing) + .debug_str 0x00001fd4 0x1aa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x625 (size before relaxing) + .debug_str 0x0000217e 0x3d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + 0x1b4 (size before relaxing) + .debug_str 0x000021bb 0x10f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + 0x933 (size before relaxing) + .debug_str 0x000022ca 0x1b4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + 0x7f9 (size before relaxing) + .debug_str 0x0000247e 0x4e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x890 (size before relaxing) + .debug_str 0x00002967 0x27a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0xa76 (size before relaxing) + .debug_str 0x00002be1 0x1b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + 0x9bf (size before relaxing) + .debug_str 0x00002d98 0x105 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x72f (size before relaxing) + .debug_str 0x00002e9d 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + 0x7ba (size before relaxing) + .debug_str 0x00002f8d 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x96e (size before relaxing) + .debug_str 0x00003275 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + 0x505 (size before relaxing) + .debug_str 0x000032ed 0x17f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + 0x6c8 (size before relaxing) + .debug_str 0x0000346c 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + 0x26d (size before relaxing) + .debug_str 0x000034d8 0xa6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x7ce (size before relaxing) + .debug_str 0x0000357e 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + 0x378 (size before relaxing) + .debug_str 0x00003608 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + 0x234 (size before relaxing) + .debug_str 0x00003624 0x7c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + 0x56a (size before relaxing) + .debug_str 0x000036a0 0x13e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x9cf (size before relaxing) + .debug_str 0x000037de 0x13a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + 0x1be (size before relaxing) + .debug_str 0x00003918 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + 0x214 (size before relaxing) + .debug_str 0x000039df 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + 0x215 (size before relaxing) + .debug_str 0x000039e9 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + 0x215 (size before relaxing) + .debug_str 0x000039f3 0x34f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x3ec (size before relaxing) + .debug_str 0x00003d42 0xd2a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + 0xf9f (size before relaxing) + .debug_str 0x00004a6c 0xd2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + 0x92e (size before relaxing) + .debug_str 0x00004b3e 0x137 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + 0x975 (size before relaxing) + .debug_str 0x00004c75 0x338 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + 0x751 (size before relaxing) + .debug_str 0x00004fad 0xd1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + 0x2a6 (size before relaxing) + .debug_str 0x0000507e 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + 0x241 (size before relaxing) + .debug_str 0x0000511e 0x254 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + 0x505 (size before relaxing) + .debug_str 0x00005372 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + 0x236 (size before relaxing) + .debug_str 0x00005396 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + 0x1bc (size before relaxing) + .debug_str 0x000053da 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + 0x145 (size before relaxing) + .debug_str 0x000053f1 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + 0x42d (size before relaxing) + .debug_str 0x000054d1 0x35 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + 0x1e4 (size before relaxing) + .debug_str 0x00005506 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + 0x1cb (size before relaxing) + .debug_str 0x00005551 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + 0x1bd (size before relaxing) + .debug_str 0x00005561 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + 0x1c6 (size before relaxing) + .debug_str 0x0000558c 0x196 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + 0x637 (size before relaxing) + .debug_str 0x00005722 0x12f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + 0x87e (size before relaxing) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 94d87c958555..cff50939ce50 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index ca5bb903a55b..c1c673aa627b 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 0516a40ece6a..defd9dc69cc6 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 86e6c50764c8..98c8f378c298 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -547,6 +547,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index d04832c21843..5a6ea7385337 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 8a6ffede3bba..5f97f6614f7e 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 8461dfa0455a..96503bacfd79 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index 126ad8c011c8..e13879e00ce7 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 14c73fcd5318..9e3d82f70bf8 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "p" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 9884c050aca0..a1f7c0c10dce 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 2025b6912f59..721c01ee15b6 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index df4853066a7d..e245519907e0 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 73536e49a7a7..e1581c3eb120 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "M" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 9247a62ad731..fe2761af4a56 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 42da36d055d3..75229f8083af 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "мкм" #define D_UNIT_MICROSECOND "мкс" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLIMETER_MERCURY "мм рт.ст." #define D_UNIT_MILLISECOND "мс" #define D_UNIT_MINUTE "мин" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index af6d180827d2..4d39e4e82d5a 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -545,6 +545,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index c6c0b9d2b7ff..f383dc611a65 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "мкм" #define D_UNIT_MICROSECOND "мкс" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "мс" #define D_UNIT_MINUTE "хв" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 141cfdaffdb6..74d78fc08de5 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -545,6 +545,7 @@ #define D_UNIT_MICROMETER "微米" #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" #define D_UNIT_PARTS_PER_BILLION "ppb" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index d48cec44a222..b7342a79973d 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -546,6 +546,7 @@ #define D_UNIT_MICROMETER "微米" #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" #define D_UNIT_PARTS_PER_BILLION "ppb" From 2e1ba0194c561faf5fe396670deac2d6403d045e Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 1 Nov 2018 19:36:10 +0200 Subject: [PATCH 427/798] Move #define DRIVER_BOOT_DELAY to sonoff.h --- sonoff/my_user_config.h | 4 ---- sonoff/sonoff.h | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 05a97c5e6e7e..5b721af2a485 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -269,10 +269,6 @@ // -- Internal Analog input ----------------------- #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices -// -- BOOT Delay for drivers ---------------------- - -#define DRIVER_BOOT_DELAY 1 // Number of milliseconds to retard driver cycles during boot-up time to reduce overall CPU load whilst Wifi is connecting - // -- One wire sensors ---------------------------- // WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors //#define USE_DS18x20_LEGACY // Optional for more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 9bcbbb7310fc..a7cb1ce9a28a 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -173,6 +173,8 @@ typedef unsigned long power_t; // Power (Relay) type #define KNX_MAX_device_param 30 #define MAX_KNXTX_CMNDS 5 +#define DRIVER_BOOT_DELAY 1 // Number of milliseconds to retard driver cycles during boot-up time to reduce overall CPU load whilst Wifi is connecting + /*********************************************************************************************\ * Enumeration \*********************************************************************************************/ From 835e3f670c94f4120148a10ec4bc7e67597bae39 Mon Sep 17 00:00:00 2001 From: Andrei eeak Date: Thu, 1 Nov 2018 19:37:25 +0200 Subject: [PATCH 428/798] Delete D_MMHG --- firmware.map | 2957 +++++++++++++++++++-------------------- sonoff/language/bg-BG.h | 1 - sonoff/language/cs-CZ.h | 1 - sonoff/language/de-DE.h | 1 - sonoff/language/el-GR.h | 1 - sonoff/language/en-GB.h | 1 - sonoff/language/es-AR.h | 1 - sonoff/language/fr-FR.h | 1 - sonoff/language/he-HE.h | 1 - sonoff/language/hu-HU.h | 1 - sonoff/language/it-IT.h | 1 - sonoff/language/nl-NL.h | 1 - sonoff/language/pl-PL.h | 1 - sonoff/language/pt-BR.h | 1 - sonoff/language/pt-PT.h | 1 - sonoff/language/ru-RU.h | 1 - sonoff/language/tr-TR.h | 1 - sonoff/language/uk-UK.h | 1 - sonoff/language/zh-CN.h | 1 - sonoff/language/zh-TW.h | 1 - 20 files changed, 1478 insertions(+), 1498 deletions(-) diff --git a/firmware.map b/firmware.map index 59a68ad4dc14..951ba7123295 100644 --- a/firmware.map +++ b/firmware.map @@ -22,14 +22,6 @@ Archive member included because of file (symbol) .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendSony(unsigned long long, unsigned short, unsigned short)) .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) (reverseBits(unsigned long long, unsigned short)) -.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) -.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFi) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) @@ -44,6 +36,16 @@ Archive member included because of file (symbol) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiClient::connect(IPAddress, unsigned short)) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiUDP::endPacket()) +.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) +.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) +.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (MDNSResponder::hostname(int)) .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) @@ -52,8 +54,6 @@ Archive member included because of file (symbol) .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WebServer::ESP8266WebServer(int)) .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (ESP8266WebServer::_parseRequest(WiFiClient&)) -.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (RCSwitch::setProtocol(int)) .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) @@ -79,7 +79,7 @@ Archive member included because of file (symbol) .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) (Print::write(unsigned char const*, unsigned int)) .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (Stream::readBytes(char*, unsigned int)) + .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (Stream::readBytes(char*, unsigned int)) .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (vtable for StreamString) .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) @@ -2199,188 +2199,6 @@ Discarded input sections 0x00000000 0x43 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) .xt.prop 0x00000000 0xcc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWireC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4pinsEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire8setClockEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire20setClockStretchLimitEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhjb - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEiii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire4pinsEii - 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEh - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire6statusEv - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEi - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire8setClockEj - 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire20setClockStretchLimitEj - 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEhhh - 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEiii - 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onReceiveE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onRequestE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN6TickerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker10_attach_msEjbPFvPvEj - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker6detachEv - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6TickerD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._Z10C2D_enableb$part$0 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL6c2_bitb - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z16c2_address_writeh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_address_readv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_data_writejh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRjh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRhh$isra$1 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z8c2_resetv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z19c2_programming_initv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_block_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_eeprom_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_block_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_eeprom_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_page_eraseh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_device_erasev - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z18c2_sfr_write_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z17c2_sfr_read_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z23c2_print_status_by_nameh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z15c2_eeprom_writejPhh - 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_block_readjPhh - 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z14c2_eeprom_readjPhh - 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_page_eraseh - 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z18c2_sfr_write_pagedhh - 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z17c2_sfr_read_pagedhRh - 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.str1.4 - 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z23c2_print_status_by_nameh - 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.CSWTCH$90 - 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL12value_of_hexh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .literal._Z10ihx_decodePht - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .literal._ZN16ESP8266WiFiClass9printDiagER5Print 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .literal.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print @@ -2777,8 +2595,6 @@ Discarded input sections .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN10WiFiClient5writeEh 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN10WiFiClient4peekEv @@ -2848,8 +2664,6 @@ Discarded input sections .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .text._ZN10WiFiClient4_errEa 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .text._ZN10WiFiClient10getNoDelayEv @@ -2865,8 +2679,6 @@ Discarded input sections .rodata._ZTV6Client 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.lit 0x00000000 0xc0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.prop 0x00000000 0x81c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.prop._ZTV6Client 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) @@ -2952,6 +2764,225 @@ Discarded input sections .xt.prop 0x00000000 0x678 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) .xt.prop._ZTV3UDP 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .literal._ZN9DNSServerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer6setTTLERKj + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer11replyWithIPEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer19replyWithCustomCodeEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer18processNextRequestEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer6setTTLERKj + 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer4stopEv + 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWireC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4pinsEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire8setClockEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire20setClockStretchLimitEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhjb + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEiii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire4pinsEii + 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEh + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire6statusEv + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEi + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire8setClockEj + 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire20setClockStretchLimitEj + 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEhhh + 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEiii + 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onReceiveE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onRequestE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN6TickerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker10_attach_msEjbPFvPvEj + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker6detachEv + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6TickerD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._Z10C2D_enableb$part$0 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL6c2_bitb + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z16c2_address_writeh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_address_readv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_data_writejh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRjh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRhh$isra$1 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z8c2_resetv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z19c2_programming_initv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_block_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_eeprom_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_block_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_eeprom_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_page_eraseh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_device_erasev + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z18c2_sfr_write_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z17c2_sfr_read_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z23c2_print_status_by_nameh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z15c2_eeprom_writejPhh + 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_block_readjPhh + 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z14c2_eeprom_readjPhh + 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_page_eraseh + 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z18c2_sfr_write_pagedhh + 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z17c2_sfr_read_pagedhRh + 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.str1.4 + 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z23c2_print_status_by_nameh + 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.CSWTCH$90 + 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL12value_of_hexh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .literal._Z10ihx_decodePht + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) @@ -3313,42 +3344,11 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .literal._ZN16ESP8266WebServer13_parseRequestER10WiFiClient 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN9DNSServerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer6setTTLERKj - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer11replyWithIPEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer19replyWithCustomCodeEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer18processNextRequestEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer6setTTLERKj - 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer4stopEv - 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .literal._ZN8RCSwitch11setProtocolENS_8ProtocolE 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .literal._ZN8RCSwitch11setProtocolEi @@ -7299,14 +7299,14 @@ Linker script and memory map .data.serial_config 0x3ffe860c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3ffe860c serial_config + .data._ZN23ESP8266WiFiGenericClass11_persistentE + 0x3ffe8610 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe8610 ESP8266WiFiGenericClass::_persistent + *fill* 0x3ffe8611 0x3 .data._ZL15default_scl_pin - 0x3ffe8610 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data._ZL15default_sda_pin 0x3ffe8614 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data._ZN23ESP8266WiFiGenericClass11_persistentE - 0x3ffe8618 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe8618 ESP8266WiFiGenericClass::_persistent - *fill* 0x3ffe8619 0x3 + .data._ZL15default_sda_pin + 0x3ffe8618 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) .data.AUTHORIZATION_HEADER 0x3ffe861c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x3ffe861c AUTHORIZATION_HEADER @@ -7475,63 +7475,62 @@ Linker script and memory map .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE 0x3ffe9720 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3ffe9720 vtable for ArduinoJson::StaticJsonBuffer<150u> - *fill* 0x3ffe972c 0x4 - .rodata._ZTV7TwoWire - 0x3ffe9730 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3ffe9730 vtable for TwoWire .rodata.str1.4 - 0x3ffe9758 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x3ffe976f 0x1 - .rodata.str1.4 - 0x3ffe9770 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x3ffe972c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .rodata.str1.4 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - *fill* 0x3ffe978e 0x2 + *fill* 0x3ffe974a 0x6 .rodata._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE - 0x3ffe9790 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe9790 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> - *fill* 0x3ffe97ac 0x4 + 0x3ffe9750 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe9750 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> + *fill* 0x3ffe976c 0x4 .rodata._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE - 0x3ffe97b0 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe97b0 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> + 0x3ffe9770 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe9770 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> .rodata.str1.4 0x00000000 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) .rodata.CSWTCH$69 - 0x3ffe97cc 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3ffe978c 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) .rodata.str1.4 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe97d2 0x2 + *fill* 0x3ffe9792 0x2 .rodata.CSWTCH$36 - 0x3ffe97d4 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe97d9 0x7 + 0x3ffe9794 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + *fill* 0x3ffe9799 0x7 .rodata._ZTV10WiFiClient - 0x3ffe97e0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3ffe97e0 vtable for WiFiClient - *fill* 0x3ffe982c 0x4 + 0x3ffe97a0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3ffe97a0 vtable for WiFiClient + *fill* 0x3ffe97ec 0x4 .rodata._ZTV7WiFiUDP - 0x3ffe9830 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3ffe9830 vtable for WiFiUDP + 0x3ffe97f0 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3ffe97f0 vtable for WiFiUDP + .rodata.str1.4 + 0x3ffe9844 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x12 (size before relaxing) + *fill* 0x3ffe9849 0x7 + .rodata._ZTV7TwoWire + 0x3ffe9850 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3ffe9850 vtable for TwoWire .rodata.str1.4 - 0x3ffe9884 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3ffe9878 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x3ffe988f 0x1 + .rodata.str1.4 + 0x3ffe9890 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x88 (size before relaxing) .rodata.str1.4 - 0x3ffe9900 0x322 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe990c 0x322 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x33e (size before relaxing) - *fill* 0x3ffe9c22 0x6 + *fill* 0x3ffe9c2e 0x2 .rodata._ZTV14RequestHandler - 0x3ffe9c28 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9c28 vtable for RequestHandler + 0x3ffe9c30 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9c30 vtable for RequestHandler .rodata._ZTV22FunctionRequestHandler - 0x3ffe9c48 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9c48 vtable for FunctionRequestHandler + 0x3ffe9c50 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9c50 vtable for FunctionRequestHandler .rodata.str1.4 - 0x3ffe9c68 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x3ffe9c70 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0xaf (size before relaxing) - *fill* 0x3ffe9cdb 0x1 - .rodata.str1.4 - 0x3ffe9cdc 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x12 (size before relaxing) - *fill* 0x3ffe9ce1 0x3 + *fill* 0x3ffe9ce3 0x1 .rodata._ZL5proto 0x3ffe9ce4 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) *fill* 0x3ffe9d2a 0x2 @@ -7733,9 +7732,9 @@ Linker script and memory map *crtbegin.o(.ctors) *(EXCLUDE_FILE(*crtend.o) .ctors) .ctors 0x3ffea700 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .ctors 0x3ffea704 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .ctors 0x3ffea708 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .ctors 0x3ffea70c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .ctors 0x3ffea704 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .ctors 0x3ffea708 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .ctors 0x3ffea70c 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) .ctors 0x3ffea710 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .ctors 0x3ffea714 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .ctors 0x3ffea718 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) @@ -9043,69 +9042,69 @@ Linker script and memory map 0x3fff397c irparams .bss._ZL5timer 0x3fff398c 0x14 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .bss.Wire 0x3fff39a0 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39a0 Wire - .bss._ZN7TwoWire12transmittingE - 0x3fff39b0 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39b0 TwoWire::transmitting - .bss._ZN7TwoWire14txBufferLengthE - 0x3fff39b1 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39b1 TwoWire::txBufferLength - .bss._ZN7TwoWire13txBufferIndexE - 0x3fff39b2 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39b2 TwoWire::txBufferIndex - *fill* 0x3fff39b3 0x1 - .bss._ZN7TwoWire8txBufferE - 0x3fff39b4 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39b4 TwoWire::txBuffer - .bss._ZN7TwoWire9txAddressE - 0x3fff39d4 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d4 TwoWire::txAddress - .bss._ZN7TwoWire14rxBufferLengthE - 0x3fff39d5 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d5 TwoWire::rxBufferLength - .bss._ZN7TwoWire13rxBufferIndexE - 0x3fff39d6 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d6 TwoWire::rxBufferIndex - *fill* 0x3fff39d7 0x1 - .bss._ZN7TwoWire8rxBufferE - 0x3fff39d8 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d8 TwoWire::rxBuffer - .bss.WiFi 0x3fff39f8 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - 0x3fff39f8 WiFi - *fill* 0x3fff39f9 0x3 + .bss.WiFi 0x3fff39a0 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x3fff39a0 WiFi + *fill* 0x3fff39a1 0x3 .bss._ZL12sCbEventList - 0x3fff39fc 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3fff39a4 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .bss._ZN19ESP8266WiFiSTAClass12_useStaticIpE - 0x3fff3a04 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x3fff3a04 ESP8266WiFiSTAClass::_useStaticIp - *fill* 0x3fff3a05 0x3 + 0x3fff39ac 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3fff39ac ESP8266WiFiSTAClass::_useStaticIp + *fill* 0x3fff39ad 0x3 .bss._ZN20ESP8266WiFiScanClass11_scanResultE - 0x3fff3a08 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3a08 ESP8266WiFiScanClass::_scanResult + 0x3fff39b0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff39b0 ESP8266WiFiScanClass::_scanResult .bss._ZN20ESP8266WiFiScanClass10_scanCountE - 0x3fff3a0c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3a0c ESP8266WiFiScanClass::_scanCount + 0x3fff39b4 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff39b4 ESP8266WiFiScanClass::_scanCount .bss._ZN20ESP8266WiFiScanClass13_scanCompleteE - 0x3fff3a10 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3a10 ESP8266WiFiScanClass::_scanComplete + 0x3fff39b8 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff39b8 ESP8266WiFiScanClass::_scanComplete .bss._ZN20ESP8266WiFiScanClass12_scanStartedE - 0x3fff3a11 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3a11 ESP8266WiFiScanClass::_scanStarted + 0x3fff39b9 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff39b9 ESP8266WiFiScanClass::_scanStarted .bss._ZN20ESP8266WiFiScanClass10_scanAsyncE - 0x3fff3a12 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3a12 ESP8266WiFiScanClass::_scanAsync - *fill* 0x3fff3a13 0x1 + 0x3fff39ba 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff39ba ESP8266WiFiScanClass::_scanAsync + *fill* 0x3fff39bb 0x1 .bss._ZN5SListI10WiFiClientE8_s_firstE - 0x3fff3a14 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff3a14 SList::_s_first + 0x3fff39bc 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff39bc SList::_s_first .bss._ZN10WiFiClient10_localPortE - 0x3fff3a18 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff3a18 WiFiClient::_localPort - *fill* 0x3fff3a1a 0x2 + 0x3fff39c0 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff39c0 WiFiClient::_localPort + *fill* 0x3fff39c2 0x2 .bss._ZN5SListI7WiFiUDPE8_s_firstE - 0x3fff3a1c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3fff3a1c SList::_s_first + 0x3fff39c4 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3fff39c4 SList::_s_first + .bss.Wire 0x3fff39c8 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39c8 Wire + .bss._ZN7TwoWire12transmittingE + 0x3fff39d8 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d8 TwoWire::transmitting + .bss._ZN7TwoWire14txBufferLengthE + 0x3fff39d9 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39d9 TwoWire::txBufferLength + .bss._ZN7TwoWire13txBufferIndexE + 0x3fff39da 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39da TwoWire::txBufferIndex + *fill* 0x3fff39db 0x1 + .bss._ZN7TwoWire8txBufferE + 0x3fff39dc 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39dc TwoWire::txBuffer + .bss._ZN7TwoWire9txAddressE + 0x3fff39fc 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39fc TwoWire::txAddress + .bss._ZN7TwoWire14rxBufferLengthE + 0x3fff39fd 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39fd TwoWire::rxBufferLength + .bss._ZN7TwoWire13rxBufferIndexE + 0x3fff39fe 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff39fe TwoWire::rxBufferIndex + *fill* 0x3fff39ff 0x1 + .bss._ZN7TwoWire8rxBufferE + 0x3fff3a00 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff3a00 TwoWire::rxBuffer .bss.MDNS 0x3fff3a20 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x3fff3a20 MDNS .bss._ZL19MDNS_MULTICAST_ADDR @@ -9539,1086 +9538,1086 @@ Linker script and memory map 0x62 (size before relaxing) 0x40202d84 reverseBits(unsigned long long, unsigned short) *fill* 0x40202de2 0x2 - .text._ZN7TwoWire5writeEPKhj - 0x40202de4 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40202de8 TwoWire::write(unsigned char const*, unsigned int) - *fill* 0x40202e37 0x1 - .text._ZN7TwoWire4readEv - 0x40202e38 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40202e44 TwoWire::read() - *fill* 0x40202e66 0x2 - .text._ZN7TwoWire4peekEv - 0x40202e68 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x29 (size before relaxing) - 0x40202e68 TwoWire::peek() - *fill* 0x40202e85 0x3 - .text._ZN7TwoWire5flushEv - 0x40202e88 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2c (size before relaxing) - 0x40202e90 TwoWire::flush() - .text._ZN7TwoWire9availableEv - 0x40202eac 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x38 (size before relaxing) - 0x40202eac TwoWire::available() - .text._ZN7TwoWire5writeEh - 0x40202ed8 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x4b (size before relaxing) - 0x40202edc TwoWire::write(unsigned char) - *fill* 0x40202f17 0x1 - .text._ZN7TwoWireC2Ev - 0x40202f18 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40202f1c TwoWire::TwoWire() - 0x40202f1c TwoWire::TwoWire() - .text._ZN7TwoWire5beginEii - 0x40202f2c 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3e (size before relaxing) - 0x40202f34 TwoWire::begin(int, int) - *fill* 0x40202f62 0x2 - .text._ZN7TwoWire5beginEv - 0x40202f64 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x28 (size before relaxing) - 0x40202f64 TwoWire::begin() - .text._ZN7TwoWire11requestFromEhjb - 0x40202f80 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x50 (size before relaxing) - 0x40202f80 TwoWire::requestFrom(unsigned char, unsigned int, bool) - .text._ZN7TwoWire11requestFromEhh - 0x40202fc0 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x22 (size before relaxing) - 0x40202fc0 TwoWire::requestFrom(unsigned char, unsigned char) - *fill* 0x40202fda 0x2 - .text._ZN7TwoWire11requestFromEii - 0x40202fdc 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1e (size before relaxing) - 0x40202fdc TwoWire::requestFrom(int, int) - *fill* 0x40202ff6 0x2 - .text._ZN7TwoWire17beginTransmissionEh - 0x40202ff8 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2e (size before relaxing) - 0x40202ffc TwoWire::beginTransmission(unsigned char) - *fill* 0x4020301a 0x2 - .text._ZN7TwoWire17beginTransmissionEi - 0x4020301c 0x15 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x19 (size before relaxing) - 0x4020301c TwoWire::beginTransmission(int) - *fill* 0x40203031 0x3 - .text._ZN7TwoWire15endTransmissionEh - 0x40203034 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x52 (size before relaxing) - 0x40203034 TwoWire::endTransmission(unsigned char) - *fill* 0x4020306a 0x2 - .text._ZN7TwoWire15endTransmissionEv - 0x4020306c 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x18 (size before relaxing) - 0x4020306c TwoWire::endTransmission() - .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x40203080 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1d (size before relaxing) - *fill* 0x40203099 0x3 - .text._ZN6Ticker10_attach_msEjbPFvPvEj - 0x4020309c 0x5f .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x6b (size before relaxing) - 0x402030a0 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) - *fill* 0x402030fb 0x1 - .text._ZN6Ticker6detachEv - 0x402030fc 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x31 (size before relaxing) - 0x402030fc Ticker::detach() - *fill* 0x40203125 0x3 - .text._ZN6TickerD2Ev - 0x40203128 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x17 (size before relaxing) - 0x40203128 Ticker::~Ticker() - 0x40203128 Ticker::~Ticker() - *fill* 0x40203137 0x1 - .text._Z10C2D_enableb$part$0 - 0x40203138 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1b (size before relaxing) - *fill* 0x4020314b 0x1 - .text._ZL6c2_bitb - 0x4020314c 0x44 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x50 (size before relaxing) - .text._Z16c2_address_writeh - 0x40203190 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x77 (size before relaxing) - 0x40203190 c2_address_write(unsigned char) - *fill* 0x402031d7 0x1 - .text._Z15c2_address_readv - 0x402031d8 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x89 (size before relaxing) - 0x402031d8 c2_address_read() - *fill* 0x40203231 0x3 - .text._Z13c2_data_writejh - 0x40203234 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xc8 (size before relaxing) - 0x40203234 c2_data_write(unsigned int, unsigned char) - .text._Z12c2_data_readRjh - 0x402032bc 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xdb (size before relaxing) - 0x402032bc c2_data_read(unsigned int&, unsigned char) - *fill* 0x40203357 0x1 - .text._Z12c2_data_readRhh$isra$1 - 0x40203358 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x26 (size before relaxing) - *fill* 0x40203376 0x2 - .text._Z8c2_resetv - 0x40203378 0x33 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x43 (size before relaxing) - 0x40203378 c2_reset() - *fill* 0x402033ab 0x1 - .text._Z19c2_programming_initv - 0x402033ac 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x6b (size before relaxing) - 0x402033ac c2_programming_init() - *fill* 0x402033ef 0x1 - .text._Z14c2_block_writejPhh - 0x402033f0 0x193 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x21b (size before relaxing) - 0x402033f0 c2_block_write(unsigned int, unsigned char*, unsigned char) - *fill* 0x40203583 0x1 - .text._Z15c2_device_erasev - 0x40203584 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1f7 (size before relaxing) - 0x40203584 c2_device_erase() - *fill* 0x402036f3 0x1 - .text._ZL12value_of_hexh - 0x402036f4 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x40203726 0x2 - .text._Z10ihx_decodePht - 0x40203728 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - 0xcb (size before relaxing) - 0x40203728 ihx_decode(unsigned char*, unsigned short) - *fill* 0x402037e7 0x1 .text.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print - 0x402037e8 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x40202de4 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) 0x1d (size before relaxing) - *fill* 0x40203801 0x3 + *fill* 0x40202dfd 0x3 .text._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ - 0x40203804 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40202e00 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0xfd (size before relaxing) - 0x40203808 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) - *fill* 0x402038c1 0x3 + 0x40202e04 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) + *fill* 0x40202ebd 0x3 .text._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii - 0x402038c4 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40202ec0 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x21a (size before relaxing) - 0x402038e4 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) - *fill* 0x40203a7e 0x2 + 0x40202ee0 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) + *fill* 0x4020307a 0x2 .text._ZN18ESP8266WiFiAPClass8softAPIPEv - 0x40203a80 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x4020307c 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x31 (size before relaxing) - 0x40203a80 ESP8266WiFiAPClass::softAPIP() - *fill* 0x40203aa5 0x3 + 0x4020307c ESP8266WiFiAPClass::softAPIP() + *fill* 0x402030a1 0x3 .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEv - 0x40203aa8 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x402030a4 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x70 (size before relaxing) - 0x40203ab4 ESP8266WiFiAPClass::softAPmacAddress() + 0x402030b0 ESP8266WiFiAPClass::softAPmacAddress() .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x40203b08 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40203b0c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - 0x40203b0c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x40203b13 0x1 + 0x40203104 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203108 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + 0x40203108 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x4020310f 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x40203b14 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203110 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xb (size before relaxing) - 0x40203b14 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - 0x40203b14 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40203b1b 0x1 + 0x40203110 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + 0x40203110 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40203117 0x1 .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x40203b1c 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203118 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203b1c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x40203b33 0x1 + 0x40203118 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x4020312f 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x40203b34 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203130 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203b34 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40203b4b 0x1 + 0x40203130 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40203147 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x40203b4c 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203148 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203b4c std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x40203b63 0x1 + 0x40203148 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x4020315f 0x1 .text._Z23wifi_dns_found_callbackPKcP7ip_addrPv - 0x40203b64 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203160 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x26 (size before relaxing) - 0x40203b64 wifi_dns_found_callback(char const*, ip_addr*, void*) - *fill* 0x40203b7f 0x1 + 0x40203160 wifi_dns_found_callback(char const*, ip_addr*, void*) + *fill* 0x4020317b 0x1 .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x40203b80 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020317c 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x83 (size before relaxing) - *fill* 0x40203bcf 0x1 + *fill* 0x402031cb 0x1 .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x40203bd0 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402031cc 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x94 (size before relaxing) .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x40203c3c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203238 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x2a (size before relaxing) - 0x40203c3c std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() - *fill* 0x40203c5a 0x2 + 0x40203238 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() + *fill* 0x40203256 0x2 .text._ZN23ESP8266WiFiGenericClassC2Ev - 0x40203c5c 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203258 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1d (size before relaxing) - 0x40203c60 ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - 0x40203c60 ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - *fill* 0x40203c75 0x3 + 0x4020325c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + 0x4020325c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + *fill* 0x40203271 0x3 .text._ZN23ESP8266WiFiGenericClass7channelEv - 0x40203c78 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203274 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x17 (size before relaxing) - 0x40203c78 ESP8266WiFiGenericClass::channel() - *fill* 0x40203c87 0x1 + 0x40203274 ESP8266WiFiGenericClass::channel() + *fill* 0x40203283 0x1 .text._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType - 0x40203c88 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203284 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x18 (size before relaxing) - 0x40203c88 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) + 0x40203284 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) .text._ZN23ESP8266WiFiGenericClass10getPhyModeEv - 0x40203c9c 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203298 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x17 (size before relaxing) - 0x40203c9c ESP8266WiFiGenericClass::getPhyMode() - *fill* 0x40203cab 0x1 + 0x40203298 ESP8266WiFiGenericClass::getPhyMode() + *fill* 0x402032a7 0x1 .text._ZN23ESP8266WiFiGenericClass10persistentEb - 0x40203cac 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402032a8 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xc (size before relaxing) - 0x40203cac ESP8266WiFiGenericClass::persistent(bool) + 0x402032a8 ESP8266WiFiGenericClass::persistent(bool) .text._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode - 0x40203cb4 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402032b0 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x69 (size before relaxing) - 0x40203cb4 ESP8266WiFiGenericClass::mode(WiFiMode) - *fill* 0x40203d01 0x3 + 0x402032b0 ESP8266WiFiGenericClass::mode(WiFiMode) + *fill* 0x402032fd 0x3 .text._ZN23ESP8266WiFiGenericClass9enableSTAEb - 0x40203d04 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203300 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x51 (size before relaxing) - 0x40203d04 ESP8266WiFiGenericClass::enableSTA(bool) - *fill* 0x40203d4d 0x3 + 0x40203300 ESP8266WiFiGenericClass::enableSTA(bool) + *fill* 0x40203349 0x3 .text._ZN23ESP8266WiFiGenericClass8enableAPEb - 0x40203d50 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020334c 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x51 (size before relaxing) - 0x40203d50 ESP8266WiFiGenericClass::enableAP(bool) - *fill* 0x40203d99 0x3 + 0x4020334c ESP8266WiFiGenericClass::enableAP(bool) + *fill* 0x40203395 0x3 .text._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress - 0x40203d9c 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203398 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x8d (size before relaxing) - 0x40203da0 ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) - *fill* 0x40203e05 0x3 + 0x4020339c ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) + *fill* 0x40203401 0x3 .text._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv - 0x40203e08 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203404 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xaa (size before relaxing) - 0x40203e10 ESP8266WiFiGenericClass::_eventCallback(void*) - *fill* 0x40203e9a 0x2 + 0x4020340c ESP8266WiFiGenericClass::_eventCallback(void*) + *fill* 0x40203496 0x2 .text._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x40203e9c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203498 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x48 (size before relaxing) - 0x40203ea0 std::list, std::allocator > >::push_back(std::shared_ptr const&) + 0x4020349c std::list, std::allocator > >::push_back(std::shared_ptr const&) .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x40203ee0 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402034dc 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x6b (size before relaxing) - *fill* 0x40203f33 0x1 + *fill* 0x4020352f 0x1 .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x40203f34 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203530 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x6b (size before relaxing) - *fill* 0x40203f87 0x1 + *fill* 0x40203583 0x1 .text._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x40203f88 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40203584 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x3e (size before relaxing) - 0x40203f88 std::_List_base, std::allocator > >::_M_clear() - *fill* 0x40203fba 0x2 + 0x40203584 std::_List_base, std::allocator > >::_M_clear() + *fill* 0x402035b6 0x2 .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x40203fbc 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402035b8 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x3d (size before relaxing) - 0x40203fc0 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - 0x40203fc0 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - *fill* 0x40203ff5 0x3 + 0x402035bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + 0x402035bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + *fill* 0x402035f1 0x3 .text._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE - 0x40203ff8 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402035f4 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x136 (size before relaxing) - 0x40204000 ESP8266WiFiGenericClass::onStationModeGotIP(std::function) - *fill* 0x402040d2 0x2 + 0x402035fc ESP8266WiFiGenericClass::onStationModeGotIP(std::function) + *fill* 0x402036ce 0x2 .text._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE - 0x402040d4 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402036d0 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x133 (size before relaxing) - 0x402040dc ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) - *fill* 0x402041af 0x1 + 0x402036d8 ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) + *fill* 0x402037ab 0x1 .text.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402041b0 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402037ac 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xd (size before relaxing) - *fill* 0x402041b9 0x3 + *fill* 0x402037b5 0x3 .text.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402041bc 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402037b8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1d (size before relaxing) - *fill* 0x402041d1 0x3 + *fill* 0x402037cd 0x3 .text._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ - 0x402041d4 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402037d0 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0xcb (size before relaxing) - 0x402041d8 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) - *fill* 0x4020427b 0x1 + 0x402037d4 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) + *fill* 0x40203877 0x1 .text._ZN19ESP8266WiFiSTAClass10disconnectEb - 0x4020427c 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203878 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x8b (size before relaxing) - 0x4020427c ESP8266WiFiSTAClass::disconnect(bool) - *fill* 0x402042db 0x1 + 0x40203878 ESP8266WiFiSTAClass::disconnect(bool) + *fill* 0x402038d7 0x1 .text._ZN19ESP8266WiFiSTAClass14setAutoConnectEb - 0x402042dc 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402038d8 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x3b (size before relaxing) - 0x402042dc ESP8266WiFiSTAClass::setAutoConnect(bool) - *fill* 0x4020430b 0x1 + 0x402038d8 ESP8266WiFiSTAClass::setAutoConnect(bool) + *fill* 0x40203907 0x1 .text._ZN19ESP8266WiFiSTAClass14getAutoConnectEv - 0x4020430c 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203908 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x20 (size before relaxing) - 0x4020430c ESP8266WiFiSTAClass::getAutoConnect() + 0x40203908 ESP8266WiFiSTAClass::getAutoConnect() .text._ZN19ESP8266WiFiSTAClass7localIPEv - 0x40204324 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203920 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x40204324 ESP8266WiFiSTAClass::localIP() - *fill* 0x40204349 0x3 + 0x40203920 ESP8266WiFiSTAClass::localIP() + *fill* 0x40203945 0x3 .text._ZN19ESP8266WiFiSTAClass10macAddressEv - 0x4020434c 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203948 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x70 (size before relaxing) - 0x40204350 ESP8266WiFiSTAClass::macAddress() + 0x4020394c ESP8266WiFiSTAClass::macAddress() .text._ZN19ESP8266WiFiSTAClass10subnetMaskEv - 0x402043a4 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402039a0 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x402043a4 ESP8266WiFiSTAClass::subnetMask() - *fill* 0x402043c9 0x3 + 0x402039a0 ESP8266WiFiSTAClass::subnetMask() + *fill* 0x402039c5 0x3 .text._ZN19ESP8266WiFiSTAClass9gatewayIPEv - 0x402043cc 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402039c8 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x402043cc ESP8266WiFiSTAClass::gatewayIP() - *fill* 0x402043f1 0x3 + 0x402039c8 ESP8266WiFiSTAClass::gatewayIP() + *fill* 0x402039ed 0x3 .text._ZN19ESP8266WiFiSTAClass5dnsIPEh - 0x402043f4 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402039f0 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x2f (size before relaxing) - 0x402043f4 ESP8266WiFiSTAClass::dnsIP(unsigned char) - *fill* 0x40204417 0x1 + 0x402039f0 ESP8266WiFiSTAClass::dnsIP(unsigned char) + *fill* 0x40203a13 0x1 .text._ZN19ESP8266WiFiSTAClass8hostnameEPc - 0x40204418 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203a14 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x35 (size before relaxing) - 0x40204418 ESP8266WiFiSTAClass::hostname(char*) - *fill* 0x40204445 0x3 + 0x40203a14 ESP8266WiFiSTAClass::hostname(char*) + *fill* 0x40203a41 0x3 .text._ZN19ESP8266WiFiSTAClass6statusEv - 0x40204448 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203a44 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x2a (size before relaxing) - 0x4020444c ESP8266WiFiSTAClass::status() - *fill* 0x4020446a 0x2 + 0x40203a48 ESP8266WiFiSTAClass::status() + *fill* 0x40203a66 0x2 .text._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb - 0x4020446c 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203a68 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x228 (size before relaxing) - 0x40204470 ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) + 0x40203a6c ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) .text._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb - 0x40204614 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203c10 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x19 (size before relaxing) - 0x40204614 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) - *fill* 0x40204629 0x3 + 0x40203c10 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) + *fill* 0x40203c25 0x3 .text._ZN19ESP8266WiFiSTAClass8BSSIDstrEv - 0x4020462c 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203c28 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x77 (size before relaxing) - 0x4020462c ESP8266WiFiSTAClass::BSSIDstr() - *fill* 0x40204687 0x1 + 0x40203c28 ESP8266WiFiSTAClass::BSSIDstr() + *fill* 0x40203c83 0x1 .text._ZN19ESP8266WiFiSTAClass4RSSIEv - 0x40204688 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40203c84 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x1d (size before relaxing) - 0x40204688 ESP8266WiFiSTAClass::RSSI() - *fill* 0x4020469d 0x3 + 0x40203c84 ESP8266WiFiSTAClass::RSSI() + *fill* 0x40203c99 0x3 .text._ZN20ESP8266WiFiScanClass9_scanDoneEPvi - 0x402046a0 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203c9c 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0xbb (size before relaxing) - 0x402046b8 ESP8266WiFiScanClass::_scanDone(void*, int) - *fill* 0x4020474f 0x1 + 0x40203cb4 ESP8266WiFiScanClass::_scanDone(void*, int) + *fill* 0x40203d4b 0x1 .text._ZN20ESP8266WiFiScanClass10scanDeleteEv - 0x40204750 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203d4c 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x3e (size before relaxing) - 0x40204750 ESP8266WiFiScanClass::scanDelete() - *fill* 0x4020477e 0x2 + 0x40203d4c ESP8266WiFiScanClass::scanDelete() + *fill* 0x40203d7a 0x2 .text._ZN20ESP8266WiFiScanClass12scanNetworksEbb - 0x40204780 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203d7c 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0xef (size before relaxing) - 0x40204784 ESP8266WiFiScanClass::scanNetworks(bool, bool) - *fill* 0x4020482f 0x1 + 0x40203d80 ESP8266WiFiScanClass::scanNetworks(bool, bool) + *fill* 0x40203e2b 0x1 .text._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi - 0x40204830 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203e2c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x26 (size before relaxing) - 0x40204830 ESP8266WiFiScanClass::_getScanInfoByIndex(int) - *fill* 0x4020484e 0x2 + 0x40203e2c ESP8266WiFiScanClass::_getScanInfoByIndex(int) + *fill* 0x40203e4a 0x2 .text._ZN20ESP8266WiFiScanClass4SSIDEh - 0x40204850 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203e4c 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x3d (size before relaxing) - 0x40204854 ESP8266WiFiScanClass::SSID(unsigned char) - *fill* 0x40204885 0x3 + 0x40203e50 ESP8266WiFiScanClass::SSID(unsigned char) + *fill* 0x40203e81 0x3 .text._ZN20ESP8266WiFiScanClass14encryptionTypeEh - 0x40204888 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203e84 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x31 (size before relaxing) - 0x4020488c ESP8266WiFiScanClass::encryptionType(unsigned char) - *fill* 0x402048b5 0x3 + 0x40203e88 ESP8266WiFiScanClass::encryptionType(unsigned char) + *fill* 0x40203eb1 0x3 .text._ZN20ESP8266WiFiScanClass4RSSIEh - 0x402048b8 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203eb4 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x24 (size before relaxing) - 0x402048b8 ESP8266WiFiScanClass::RSSI(unsigned char) - *fill* 0x402048d5 0x3 + 0x40203eb4 ESP8266WiFiScanClass::RSSI(unsigned char) + *fill* 0x40203ed1 0x3 .text._ZN20ESP8266WiFiScanClass8BSSIDstrEh - 0x402048d8 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203ed4 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x82 (size before relaxing) - 0x402048dc ESP8266WiFiScanClass::BSSIDstr(unsigned char) - *fill* 0x40204942 0x2 + 0x40203ed8 ESP8266WiFiScanClass::BSSIDstr(unsigned char) + *fill* 0x40203f3e 0x2 .text._ZN20ESP8266WiFiScanClass7channelEh - 0x40204944 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40203f40 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x1f (size before relaxing) - 0x40204944 ESP8266WiFiScanClass::channel(unsigned char) - *fill* 0x4020495c 0x0 + 0x40203f40 ESP8266WiFiScanClass::channel(unsigned char) + *fill* 0x40203f58 0x0 .text._ZN10WiFiClient7connectEPKct - 0x4020495c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203f58 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x58 (size before relaxing) - 0x4020495c WiFiClient::connect(char const*, unsigned short) + 0x40203f58 WiFiClient::connect(char const*, unsigned short) .text._ZN10WiFiClient7connectE9IPAddresst - 0x402049a0 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203f9c 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xb4 (size before relaxing) - 0x402049ac WiFiClient::connect(IPAddress, unsigned short) + 0x40203fa8 WiFiClient::connect(IPAddress, unsigned short) .text._ZN10WiFiClient6_s_errEPva - 0x40204a2c 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204028 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x17 (size before relaxing) - 0x40204a2c WiFiClient::_s_err(void*, signed char) - *fill* 0x40204a3b 0x1 + 0x40204028 WiFiClient::_s_err(void*, signed char) + *fill* 0x40204037 0x1 .text._ZN10WiFiClient9availableEv - 0x40204a3c 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204038 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2f (size before relaxing) - 0x40204a3c WiFiClient::available() - *fill* 0x40204a64 0x0 + 0x40204038 WiFiClient::available() + *fill* 0x40204060 0x0 .text._ZN10WiFiClient9peekBytesEPhj - 0x40204a64 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204060 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xbe (size before relaxing) - 0x40204a6c WiFiClient::peekBytes(unsigned char*, unsigned int) - *fill* 0x40204b1a 0x2 + 0x40204068 WiFiClient::peekBytes(unsigned char*, unsigned int) + *fill* 0x40204116 0x2 .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x40204b1c 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204118 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x40204b1c ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) - *fill* 0x40204b41 0x3 + 0x40204118 ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) + *fill* 0x4020413d 0x3 .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x40204b44 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204140 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x99 (size before relaxing) - 0x40204b44 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) - *fill* 0x40204bb1 0x3 + 0x40204140 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) + *fill* 0x402041ad 0x3 .text._ZN13ClientContext8_s_errorEPva - 0x40204bb4 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402041b0 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x62 (size before relaxing) - 0x40204bb4 ClientContext::_s_error(void*, signed char) - *fill* 0x40204bf2 0x2 + 0x402041b0 ClientContext::_s_error(void*, signed char) + *fill* 0x402041ee 0x2 .text._ZN13ClientContext5flushEv - 0x40204bf4 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402041f0 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x39 (size before relaxing) - 0x40204bf4 ClientContext::flush() - *fill* 0x40204c25 0x3 + 0x402041f0 ClientContext::flush() + *fill* 0x40204221 0x3 .text._ZN13ClientContext5unrefEv - 0x40204c28 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204224 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x9f (size before relaxing) - 0x40204c28 ClientContext::unref() - *fill* 0x40204c90 0x0 + 0x40204224 ClientContext::unref() + *fill* 0x4020428c 0x0 .text._ZN10WiFiClient4stopEv - 0x40204c90 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020428c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x25 (size before relaxing) - 0x40204c90 WiFiClient::stop() - *fill* 0x40204cb1 0x3 + 0x4020428c WiFiClient::stop() + *fill* 0x402042ad 0x3 .text._ZN10WiFiClientD2Ev - 0x40204cb4 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402042b0 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x4f (size before relaxing) - 0x40204cbc WiFiClient::~WiFiClient() - 0x40204cbc WiFiClient::~WiFiClient() - *fill* 0x40204cff 0x1 + 0x402042b8 WiFiClient::~WiFiClient() + 0x402042b8 WiFiClient::~WiFiClient() + *fill* 0x402042fb 0x1 .text._ZN10WiFiClientD0Ev - 0x40204d00 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402042fc 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x40204d00 WiFiClient::~WiFiClient() - *fill* 0x40204d1d 0x3 + 0x402042fc WiFiClient::~WiFiClient() + *fill* 0x40204319 0x3 .text._ZN10WiFiClient5flushEv - 0x40204d20 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020431c 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x1b (size before relaxing) - 0x40204d20 WiFiClient::flush() - *fill* 0x40204d34 0x0 + 0x4020431c WiFiClient::flush() + *fill* 0x40204330 0x0 .text._ZN13ClientContext5writeEPKcj - 0x40204d34 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204330 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x73 (size before relaxing) - 0x40204d34 ClientContext::write(char const*, unsigned int) - *fill* 0x40204d8f 0x1 + 0x40204330 ClientContext::write(char const*, unsigned int) + *fill* 0x4020438b 0x1 .text._ZN10WiFiClient5writeEPKhj - 0x40204d90 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020438c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x40204d90 WiFiClient::write(unsigned char const*, unsigned int) - *fill* 0x40204db1 0x3 + 0x4020438c WiFiClient::write(unsigned char const*, unsigned int) + *fill* 0x402043ad 0x3 .text._ZN13ClientContext8_consumeEj - 0x40204db4 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402043b0 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x7f (size before relaxing) - 0x40204db4 ClientContext::_consume(unsigned int) - *fill* 0x40204e1b 0x1 + 0x402043b0 ClientContext::_consume(unsigned int) + *fill* 0x40204417 0x1 .text._ZN10WiFiClient4readEv - 0x40204e1c 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204418 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x44 (size before relaxing) - 0x40204e1c WiFiClient::read() + 0x40204418 WiFiClient::read() .text._ZN10WiFiClient4readEPhj - 0x40204e5c 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204458 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x7d (size before relaxing) - 0x40204e5c WiFiClient::read(unsigned char*, unsigned int) - *fill* 0x40204ed1 0x3 + 0x40204458 WiFiClient::read(unsigned char*, unsigned int) + *fill* 0x402044cd 0x3 .text._ZN10WiFiClientC2Ev - 0x40204ed4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402044d0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x23 (size before relaxing) - 0x40204ed4 WiFiClient::WiFiClient() - 0x40204ed4 WiFiClient::WiFiClient() - *fill* 0x40204eef 0x1 + 0x402044d0 WiFiClient::WiFiClient() + 0x402044d0 WiFiClient::WiFiClient() + *fill* 0x402044eb 0x1 .text._ZN10WiFiClientC2EP13ClientContext - 0x40204ef0 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402044ec 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x40204ef0 WiFiClient::WiFiClient(ClientContext*) - 0x40204ef0 WiFiClient::WiFiClient(ClientContext*) - *fill* 0x40204f11 0x3 + 0x402044ec WiFiClient::WiFiClient(ClientContext*) + 0x402044ec WiFiClient::WiFiClient(ClientContext*) + *fill* 0x4020450d 0x3 .text._ZN10WiFiClientC2ERKS_ - 0x40204f14 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204510 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2f (size before relaxing) - 0x40204f14 WiFiClient::WiFiClient(WiFiClient const&) - 0x40204f14 WiFiClient::WiFiClient(WiFiClient const&) - *fill* 0x40204f3b 0x1 + 0x40204510 WiFiClient::WiFiClient(WiFiClient const&) + 0x40204510 WiFiClient::WiFiClient(WiFiClient const&) + *fill* 0x40204537 0x1 .text._ZN10WiFiClientaSERKS_ - 0x40204f3c 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204538 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x35 (size before relaxing) - 0x40204f3c WiFiClient::operator=(WiFiClient const&) - *fill* 0x40204f6d 0x3 + 0x40204538 WiFiClient::operator=(WiFiClient const&) + *fill* 0x40204569 0x3 .text._ZN10WiFiClient10_connectedEPva - 0x40204f70 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020456c 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xaf (size before relaxing) - 0x40204f7c WiFiClient::_connected(void*, signed char) - *fill* 0x40204feb 0x1 + 0x40204578 WiFiClient::_connected(void*, signed char) + *fill* 0x402045e7 0x1 .text._ZN10WiFiClient12_s_connectedEPvS0_a - 0x40204fec 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402045e8 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x1f (size before relaxing) - 0x40204fec WiFiClient::_s_connected(void*, void*, signed char) - *fill* 0x40205007 0x1 + 0x402045e8 WiFiClient::_s_connected(void*, void*, signed char) + *fill* 0x40204603 0x1 .text._ZN10WiFiClient8remoteIPEv - 0x40205008 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204604 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2d (size before relaxing) - 0x40205008 WiFiClient::remoteIP() - *fill* 0x40205031 0x3 + 0x40204604 WiFiClient::remoteIP() + *fill* 0x4020462d 0x3 .text._ZN10WiFiClient7localIPEv - 0x40205034 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204630 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2d (size before relaxing) - 0x40205034 WiFiClient::localIP() - *fill* 0x4020505d 0x3 + 0x40204630 WiFiClient::localIP() + *fill* 0x40204659 0x3 .text._ZN10WiFiClient7stopAllEv - 0x40205060 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020465c 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2b (size before relaxing) - 0x40205060 WiFiClient::stopAll() - *fill* 0x40205087 0x1 + 0x4020465c WiFiClient::stopAll() + *fill* 0x40204683 0x1 .text._ZN10WiFiClient13stopAllExceptEPS_ - 0x40205088 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40204684 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x34 (size before relaxing) - 0x40205088 WiFiClient::stopAllExcept(WiFiClient*) + 0x40204684 WiFiClient::stopAllExcept(WiFiClient*) .text._ZN7WiFiUDP9availableEv - 0x402050b8 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402046b4 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x2f (size before relaxing) - 0x402050b8 WiFiUDP::available() - *fill* 0x402050e0 0x0 + 0x402046b4 WiFiUDP::available() + *fill* 0x402046dc 0x0 .text._ZN7WiFiUDP11beginPacketEPKct - 0x402050e0 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402046dc 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x58 (size before relaxing) - 0x402050e0 WiFiUDP::beginPacket(char const*, unsigned short) + 0x402046dc WiFiUDP::beginPacket(char const*, unsigned short) .text._ZN7WiFiUDP5writeEPKhj - 0x40205124 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204720 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xed (size before relaxing) - 0x40205124 WiFiUDP::write(unsigned char const*, unsigned int) - *fill* 0x402051fd 0x3 + 0x40204720 WiFiUDP::write(unsigned char const*, unsigned int) + *fill* 0x402047f9 0x3 .text._ZN7WiFiUDP4readEPhj - 0x40205200 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402047fc 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4c (size before relaxing) - 0x40205200 WiFiUDP::read(unsigned char*, unsigned int) + 0x402047fc WiFiUDP::read(unsigned char*, unsigned int) .text._ZN7WiFiUDP9endPacketEv - 0x40205248 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204844 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xcf (size before relaxing) - 0x40205248 WiFiUDP::endPacket() - *fill* 0x402052fb 0x1 + 0x40204844 WiFiUDP::endPacket() + *fill* 0x402048f7 0x1 .text._ZN7WiFiUDP8remoteIPEv - 0x402052fc 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402048f8 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4f (size before relaxing) - 0x402052fc WiFiUDP::remoteIP() - *fill* 0x40205347 0x1 + 0x402048f8 WiFiUDP::remoteIP() + *fill* 0x40204943 0x1 .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x40205348 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204944 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x39 (size before relaxing) - 0x40205348 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) - *fill* 0x4020537d 0x3 + 0x40204944 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) + *fill* 0x40204979 0x3 .text._ZN7WiFiUDP11parsePacketEv - 0x40205380 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020497c 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x7b (size before relaxing) - 0x40205380 WiFiUDP::parsePacket() - *fill* 0x402053eb 0x1 + 0x4020497c WiFiUDP::parsePacket() + *fill* 0x402049e7 0x1 .text._ZN10UdpContextC2Ev - 0x402053ec 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402049e8 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x41 (size before relaxing) - 0x402053ec UdpContext::UdpContext() - 0x402053ec UdpContext::UdpContext() - *fill* 0x40205429 0x3 + 0x402049e8 UdpContext::UdpContext() + 0x402049e8 UdpContext::UdpContext() + *fill* 0x40204a25 0x3 .text._ZN7WiFiUDP11beginPacketE9IPAddresst - 0x4020542c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204a28 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x50 (size before relaxing) - 0x4020542c WiFiUDP::beginPacket(IPAddress, unsigned short) + 0x40204a28 WiFiUDP::beginPacket(IPAddress, unsigned short) .text._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i - 0x40205470 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204a6c 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x67 (size before relaxing) - 0x40205470 WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) - *fill* 0x402054cb 0x1 + 0x40204a6c WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) + *fill* 0x40204ac7 0x1 .text._ZN10UdpContext5unrefEv - 0x402054cc 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204ac8 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x71 (size before relaxing) - 0x402054cc UdpContext::unref() - *fill* 0x40205529 0x3 + 0x40204ac8 UdpContext::unref() + *fill* 0x40204b25 0x3 .text._ZN7WiFiUDP4stopEv - 0x4020552c 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204b28 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x32 (size before relaxing) - 0x4020552c WiFiUDP::stop() - *fill* 0x40205552 0x2 + 0x40204b28 WiFiUDP::stop() + *fill* 0x40204b4e 0x2 .text._ZN7WiFiUDP5beginEt - 0x40205554 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204b50 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x86 (size before relaxing) - 0x40205558 WiFiUDP::begin(unsigned short) - *fill* 0x402055ba 0x2 + 0x40204b54 WiFiUDP::begin(unsigned short) + *fill* 0x40204bb6 0x2 .text._ZN7WiFiUDPC2Ev - 0x402055bc 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402055c4 WiFiUDP::WiFiUDP() - 0x402055c4 WiFiUDP::WiFiUDP() - *fill* 0x402055df 0x1 + 0x40204bb8 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204bc0 WiFiUDP::WiFiUDP() + 0x40204bc0 WiFiUDP::WiFiUDP() + *fill* 0x40204bdb 0x1 .text._ZN7WiFiUDPD2Ev - 0x402055e0 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204bdc 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4f (size before relaxing) - 0x402055e0 WiFiUDP::~WiFiUDP() - 0x402055e0 WiFiUDP::~WiFiUDP() - *fill* 0x40205623 0x1 + 0x40204bdc WiFiUDP::~WiFiUDP() + 0x40204bdc WiFiUDP::~WiFiUDP() + *fill* 0x40204c1f 0x1 .text._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t - 0x40205624 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204c20 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xb7 (size before relaxing) - 0x40205628 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) - *fill* 0x402056af 0x1 + 0x40204c24 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) + *fill* 0x40204cab 0x1 .text._ZN7WiFiUDP7stopAllEv - 0x402056b0 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40204cac 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x2a (size before relaxing) - 0x402056b0 WiFiUDP::stopAll() - *fill* 0x402056d6 0x2 + 0x40204cac WiFiUDP::stopAll() + *fill* 0x40204cd2 0x2 + .text._ZN9DNSServerC2Ev + 0x40204cd4 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x3e (size before relaxing) + 0x40204cdc DNSServer::DNSServer() + 0x40204cdc DNSServer::DNSServer() + *fill* 0x40204d06 0x2 + .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x40204d08 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x6d (size before relaxing) + 0x40204d0c DNSServer::downcaseAndRemoveWwwPrefix(String&) + *fill* 0x40204d49 0x3 + .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x40204d4c 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xad (size before relaxing) + 0x40204d50 DNSServer::getDomainNameWithoutWwwPrefix() + *fill* 0x40204ddd 0x3 + .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x40204de0 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x7c (size before relaxing) + 0x40204de0 DNSServer::start(unsigned short const&, String const&, IPAddress const&) + .text._ZN9DNSServer11replyWithIPEv + 0x40204e44 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x109 (size before relaxing) + 0x40204e44 DNSServer::replyWithIP() + *fill* 0x40204ee1 0x3 + .text._ZN9DNSServer19replyWithCustomCodeEv + 0x40204ee4 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x89 (size before relaxing) + 0x40204ee8 DNSServer::replyWithCustomCode() + *fill* 0x40204f4d 0x3 + .text._ZN9DNSServer18processNextRequestEv + 0x40204f50 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xfd (size before relaxing) + 0x40204f54 DNSServer::processNextRequest() + *fill* 0x40204ff5 0x3 + .text._ZN7TwoWire5writeEPKhj + 0x40204ff8 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40204ffc TwoWire::write(unsigned char const*, unsigned int) + *fill* 0x4020504b 0x1 + .text._ZN7TwoWire4readEv + 0x4020504c 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40205058 TwoWire::read() + *fill* 0x4020507a 0x2 + .text._ZN7TwoWire4peekEv + 0x4020507c 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x29 (size before relaxing) + 0x4020507c TwoWire::peek() + *fill* 0x40205099 0x3 + .text._ZN7TwoWire5flushEv + 0x4020509c 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2c (size before relaxing) + 0x402050a4 TwoWire::flush() + .text._ZN7TwoWire9availableEv + 0x402050c0 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x38 (size before relaxing) + 0x402050c0 TwoWire::available() + .text._ZN7TwoWire5writeEh + 0x402050ec 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x4b (size before relaxing) + 0x402050f0 TwoWire::write(unsigned char) + *fill* 0x4020512b 0x1 + .text._ZN7TwoWireC2Ev + 0x4020512c 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40205130 TwoWire::TwoWire() + 0x40205130 TwoWire::TwoWire() + .text._ZN7TwoWire5beginEii + 0x40205140 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3e (size before relaxing) + 0x40205148 TwoWire::begin(int, int) + *fill* 0x40205176 0x2 + .text._ZN7TwoWire5beginEv + 0x40205178 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x28 (size before relaxing) + 0x40205178 TwoWire::begin() + .text._ZN7TwoWire11requestFromEhjb + 0x40205194 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x50 (size before relaxing) + 0x40205194 TwoWire::requestFrom(unsigned char, unsigned int, bool) + .text._ZN7TwoWire11requestFromEhh + 0x402051d4 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x22 (size before relaxing) + 0x402051d4 TwoWire::requestFrom(unsigned char, unsigned char) + *fill* 0x402051ee 0x2 + .text._ZN7TwoWire11requestFromEii + 0x402051f0 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1e (size before relaxing) + 0x402051f0 TwoWire::requestFrom(int, int) + *fill* 0x4020520a 0x2 + .text._ZN7TwoWire17beginTransmissionEh + 0x4020520c 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2e (size before relaxing) + 0x40205210 TwoWire::beginTransmission(unsigned char) + *fill* 0x4020522e 0x2 + .text._ZN7TwoWire17beginTransmissionEi + 0x40205230 0x15 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x19 (size before relaxing) + 0x40205230 TwoWire::beginTransmission(int) + *fill* 0x40205245 0x3 + .text._ZN7TwoWire15endTransmissionEh + 0x40205248 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x52 (size before relaxing) + 0x40205248 TwoWire::endTransmission(unsigned char) + *fill* 0x4020527e 0x2 + .text._ZN7TwoWire15endTransmissionEv + 0x40205280 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x18 (size before relaxing) + 0x40205280 TwoWire::endTransmission() + .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x40205294 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1d (size before relaxing) + *fill* 0x402052ad 0x3 + .text._ZN6Ticker10_attach_msEjbPFvPvEj + 0x402052b0 0x5f .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x6b (size before relaxing) + 0x402052b4 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) + *fill* 0x4020530f 0x1 + .text._ZN6Ticker6detachEv + 0x40205310 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x31 (size before relaxing) + 0x40205310 Ticker::detach() + *fill* 0x40205339 0x3 + .text._ZN6TickerD2Ev + 0x4020533c 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x17 (size before relaxing) + 0x4020533c Ticker::~Ticker() + 0x4020533c Ticker::~Ticker() + *fill* 0x4020534b 0x1 + .text._Z10C2D_enableb$part$0 + 0x4020534c 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1b (size before relaxing) + *fill* 0x4020535f 0x1 + .text._ZL6c2_bitb + 0x40205360 0x44 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x50 (size before relaxing) + .text._Z16c2_address_writeh + 0x402053a4 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x77 (size before relaxing) + 0x402053a4 c2_address_write(unsigned char) + *fill* 0x402053eb 0x1 + .text._Z15c2_address_readv + 0x402053ec 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x89 (size before relaxing) + 0x402053ec c2_address_read() + *fill* 0x40205445 0x3 + .text._Z13c2_data_writejh + 0x40205448 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0xc8 (size before relaxing) + 0x40205448 c2_data_write(unsigned int, unsigned char) + .text._Z12c2_data_readRjh + 0x402054d0 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0xdb (size before relaxing) + 0x402054d0 c2_data_read(unsigned int&, unsigned char) + *fill* 0x4020556b 0x1 + .text._Z12c2_data_readRhh$isra$1 + 0x4020556c 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x26 (size before relaxing) + *fill* 0x4020558a 0x2 + .text._Z8c2_resetv + 0x4020558c 0x33 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x43 (size before relaxing) + 0x4020558c c2_reset() + *fill* 0x402055bf 0x1 + .text._Z19c2_programming_initv + 0x402055c0 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x6b (size before relaxing) + 0x402055c0 c2_programming_init() + *fill* 0x40205603 0x1 + .text._Z14c2_block_writejPhh + 0x40205604 0x193 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x21b (size before relaxing) + 0x40205604 c2_block_write(unsigned int, unsigned char*, unsigned char) + *fill* 0x40205797 0x1 + .text._Z15c2_device_erasev + 0x40205798 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1f7 (size before relaxing) + 0x40205798 c2_device_erase() + *fill* 0x40205907 0x1 + .text._ZL12value_of_hexh + 0x40205908 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x4020593a 0x2 + .text._Z10ihx_decodePht + 0x4020593c 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + 0xcb (size before relaxing) + 0x4020593c ihx_decode(unsigned char*, unsigned short) + *fill* 0x402059fb 0x1 .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x402056d8 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402059fc 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x4a (size before relaxing) - *fill* 0x40205717 0x1 + *fill* 0x40205a3b 0x1 .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x40205718 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205a3c 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x4a (size before relaxing) - *fill* 0x40205757 0x1 + *fill* 0x40205a7b 0x1 .text._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x40205758 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205a7c 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x52 (size before relaxing) - 0x40205758 std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - *fill* 0x4020579f 0x1 + 0x40205a7c std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + *fill* 0x40205ac3 0x1 .text._ZN10UdpContext4readEPcj - 0x402057a0 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205ac4 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x49 (size before relaxing) - 0x402057a0 UdpContext::read(char*, unsigned int) - *fill* 0x402057e5 0x3 + 0x40205ac4 UdpContext::read(char*, unsigned int) + *fill* 0x40205b09 0x3 .text._ZN10UdpContext6appendEPKcj - 0x402057e8 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205b0c 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xe2 (size before relaxing) - 0x402057e8 UdpContext::append(char const*, unsigned int) - *fill* 0x402058b6 0x2 + 0x40205b0c UdpContext::append(char const*, unsigned int) + *fill* 0x40205bda 0x2 .text._ZN10UdpContext4sendEP7ip_addrt - 0x402058b8 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205bdc 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xdd (size before relaxing) - 0x402058b8 UdpContext::send(ip_addr*, unsigned short) - *fill* 0x40205975 0x3 + 0x40205bdc UdpContext::send(ip_addr*, unsigned short) + *fill* 0x40205c99 0x3 .text._ZN13MDNSResponderC2Ev - 0x40205978 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205c9c 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x6a (size before relaxing) - 0x4020597c MDNSResponder::MDNSResponder() - 0x4020597c MDNSResponder::MDNSResponder() - *fill* 0x402059ce 0x2 + 0x40205ca0 MDNSResponder::MDNSResponder() + 0x40205ca0 MDNSResponder::MDNSResponder() + *fill* 0x40205cf2 0x2 .text._ZN13MDNSResponder8hostnameEi - 0x402059d0 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205cf4 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x3f (size before relaxing) - 0x402059d0 MDNSResponder::hostname(int) - *fill* 0x402059ff 0x1 + 0x40205cf4 MDNSResponder::hostname(int) + *fill* 0x40205d23 0x1 .text._ZN13MDNSResponder2IPEi - 0x40205a00 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205d24 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x43 (size before relaxing) - 0x40205a00 MDNSResponder::IP(int) - *fill* 0x40205a33 0x1 + 0x40205d24 MDNSResponder::IP(int) + *fill* 0x40205d57 0x1 .text._ZN13MDNSResponder4portEi - 0x40205a34 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205d58 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1c (size before relaxing) - 0x40205a34 MDNSResponder::port(int) + 0x40205d58 MDNSResponder::port(int) .text._ZN13MDNSResponder12queryServiceEPcS0_ - 0x40205a48 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205d6c 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x21c (size before relaxing) - 0x40205a64 MDNSResponder::queryService(char*, char*) + 0x40205d88 MDNSResponder::queryService(char*, char*) .text._ZN13MDNSResponder14_getServiceTxtEPcS0_ - 0x40205be0 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205f04 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x54 (size before relaxing) - 0x40205be0 MDNSResponder::_getServiceTxt(char*, char*) + 0x40205f04 MDNSResponder::_getServiceTxt(char*, char*) .text._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ - 0x40205c2c 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205f50 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x59 (size before relaxing) - 0x40205c2c MDNSResponder::_getServiceTxtLen(char*, char*) - *fill* 0x40205c7d 0x3 + 0x40205f50 MDNSResponder::_getServiceTxtLen(char*, char*) + *fill* 0x40205fa1 0x3 .text._ZN13MDNSResponder15_getServicePortEPcS0_ - 0x40205c80 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205fa4 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x5b (size before relaxing) - 0x40205c80 MDNSResponder::_getServicePort(char*, char*) - *fill* 0x40205cd3 0x1 + 0x40205fa4 MDNSResponder::_getServicePort(char*, char*) + *fill* 0x40205ff7 0x1 .text._ZN13MDNSResponder10addServiceEPcS0_t - 0x40205cd4 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40205ff8 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xb5 (size before relaxing) - 0x40205cd4 MDNSResponder::addService(char*, char*, unsigned short) - *fill* 0x40205d69 0x3 + 0x40205ff8 MDNSResponder::addService(char*, char*, unsigned short) + *fill* 0x4020608d 0x3 .text._ZN13MDNSResponder9_getOurIpEv - 0x40205d6c 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206090 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x37 (size before relaxing) - 0x40205d6c MDNSResponder::_getOurIp() - *fill* 0x40205d97 0x1 + 0x40206090 MDNSResponder::_getOurIp() + *fill* 0x402060bb 0x1 .text._ZN13MDNSResponder7_listenEv - 0x40205d98 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402060bc 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x186 (size before relaxing) - 0x40205dac MDNSResponder::_listen() - *fill* 0x40205ece 0x2 + 0x402060d0 MDNSResponder::_listen() + *fill* 0x402061f2 0x2 .text._ZN13MDNSResponder8_restartEv - 0x40205ed0 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402061f4 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x86 (size before relaxing) - 0x40205ed0 MDNSResponder::_restart() - *fill* 0x40205f36 0x2 + 0x402061f4 MDNSResponder::_restart() + *fill* 0x4020625a 0x2 .text._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ - 0x40205f38 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020625c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1b (size before relaxing) - *fill* 0x40205f4b 0x1 + *fill* 0x4020626f 0x1 .text._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ - 0x40205f4c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206270 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1b (size before relaxing) - *fill* 0x40205f5f 0x1 + *fill* 0x40206283 0x1 .text._ZN13MDNSResponder6_replyEhPcS0_t - 0x40205f60 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206284 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x692 (size before relaxing) - 0x40205f64 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) - *fill* 0x402063e2 0x2 + 0x40206288 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) + *fill* 0x40206706 0x2 .text._ZN13MDNSResponder17advertiseServicesEv - 0x402063e4 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206708 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x42 (size before relaxing) - 0x402063e4 MDNSResponder::advertiseServices() - *fill* 0x40206422 0x2 + 0x40206708 MDNSResponder::advertiseServices() + *fill* 0x40206746 0x2 .text._ZN13MDNSResponder12_parsePacketEv - 0x40206424 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206748 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x7a5 (size before relaxing) - 0x40206440 MDNSResponder::_parsePacket() - *fill* 0x40206a1d 0x3 + 0x40206764 MDNSResponder::_parsePacket() + *fill* 0x40206d41 0x3 .text._ZN13MDNSResponder6updateEv - 0x40206a20 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206d44 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x62 (size before relaxing) - 0x40206a20 MDNSResponder::update() - *fill* 0x40206a72 0x2 + 0x40206d44 MDNSResponder::update() + *fill* 0x40206d96 0x2 .text._ZN13MDNSResponderD2Ev - 0x40206a74 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206d98 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xb9 (size before relaxing) - 0x40206a74 MDNSResponder::~MDNSResponder() - 0x40206a74 MDNSResponder::~MDNSResponder() - *fill* 0x40206af9 0x3 + 0x40206d98 MDNSResponder::~MDNSResponder() + 0x40206d98 MDNSResponder::~MDNSResponder() + *fill* 0x40206e1d 0x3 .text._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x40206afc 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206e20 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x37 (size before relaxing) - 0x40206afc std::__shared_ptr::operator=(std::__shared_ptr&&) - *fill* 0x40206b2b 0x1 + 0x40206e20 std::__shared_ptr::operator=(std::__shared_ptr&&) + *fill* 0x40206e4f 0x1 .text._ZN13MDNSResponder5beginEPKc - 0x40206b2c 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206e50 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x14f (size before relaxing) - 0x40206b3c MDNSResponder::begin(char const*) - *fill* 0x40206c03 0x1 + 0x40206e60 MDNSResponder::begin(char const*) + *fill* 0x40206f27 0x1 .text.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev - 0x40206c04 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206f28 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x38 (size before relaxing) .text.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev - 0x40206c2c 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40206f50 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1d (size before relaxing) - *fill* 0x40206c41 0x3 + *fill* 0x40206f65 0x3 .text._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth - 0x40206c44 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x40206f68 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) 0x126 (size before relaxing) - 0x40206c44 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) - *fill* 0x40206d4e 0x2 + 0x40206f68 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) + *fill* 0x40207072 0x2 .text._ZN14Adafruit_SGP307IAQinitEv - 0x40206d50 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x40207074 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) 0x2b (size before relaxing) - 0x40206d50 Adafruit_SGP30::IAQinit() - *fill* 0x40206d73 0x1 + 0x40207074 Adafruit_SGP30::IAQinit() + *fill* 0x40207097 0x1 .text._ZN14Adafruit_SGP305beginEP7TwoWire - 0x40206d74 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x40207098 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) 0x9c (size before relaxing) - 0x40206d74 Adafruit_SGP30::begin(TwoWire*) + 0x40207098 Adafruit_SGP30::begin(TwoWire*) .text._ZN14Adafruit_SGP3010IAQmeasureEv - 0x40206df4 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x40207118 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) 0x47 (size before relaxing) - 0x40206df4 Adafruit_SGP30::IAQmeasure() - *fill* 0x40206e37 0x1 + 0x40207118 Adafruit_SGP30::IAQmeasure() + *fill* 0x4020715b 0x1 .text._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ - 0x40206e38 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x4020715c 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) 0x4d (size before relaxing) - 0x40206e38 Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) - *fill* 0x40206e7d 0x3 + 0x4020715c Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) + *fill* 0x402071a1 0x3 .text._ZN14RequestHandlerD2Ev - 0x40206e80 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40206e84 RequestHandler::~RequestHandler() - 0x40206e84 RequestHandler::~RequestHandler() - *fill* 0x40206e8b 0x1 + 0x402071a4 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402071a8 RequestHandler::~RequestHandler() + 0x402071a8 RequestHandler::~RequestHandler() + *fill* 0x402071af 0x1 .text._ZN14RequestHandlerD0Ev - 0x40206e8c 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402071b0 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x1f (size before relaxing) - 0x40206e8c RequestHandler::~RequestHandler() - *fill* 0x40206ea3 0x1 + 0x402071b0 RequestHandler::~RequestHandler() + *fill* 0x402071c7 0x1 .text._ZN22FunctionRequestHandler9canUploadE6String - 0x40206ea4 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402071c8 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x54 (size before relaxing) - 0x40206ea4 FunctionRequestHandler::canUpload(String) + 0x402071c8 FunctionRequestHandler::canUpload(String) .text._ZN10HTTPUploadC2Ev - 0x40206ee8 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020720c 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x4b (size before relaxing) - *fill* 0x40206f1f 0x1 + *fill* 0x40207243 0x1 .text._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x40206f20 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207244 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x31 (size before relaxing) - 0x40206f20 FunctionRequestHandler::canHandle(HTTPMethod, String) - *fill* 0x40206f4d 0x3 + 0x40207244 FunctionRequestHandler::canHandle(HTTPMethod, String) + *fill* 0x40207271 0x3 .text._ZN22FunctionRequestHandlerD2Ev - 0x40206f50 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207274 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x4b (size before relaxing) - 0x40206f54 FunctionRequestHandler::~FunctionRequestHandler() - 0x40206f54 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x40206f83 0x1 + 0x40207278 FunctionRequestHandler::~FunctionRequestHandler() + 0x40207278 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x402072a7 0x1 .text._ZN22FunctionRequestHandlerD0Ev - 0x40206f84 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402072a8 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x29 (size before relaxing) - 0x40206f84 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x40206fa1 0x3 + 0x402072a8 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x402072c5 0x3 .text._ZN16ESP8266WebServerC2Ei - 0x40206fa4 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402072c8 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0xab (size before relaxing) - 0x40206fac ESP8266WebServer::ESP8266WebServer(int) - 0x40206fac ESP8266WebServer::ESP8266WebServer(int) - *fill* 0x4020701f 0x1 + 0x402072d0 ESP8266WebServer::ESP8266WebServer(int) + 0x402072d0 ESP8266WebServer::ESP8266WebServer(int) + *fill* 0x40207343 0x1 .text._ZN16ESP8266WebServer5closeEv - 0x40207020 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207344 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x17 (size before relaxing) - 0x40207020 ESP8266WebServer::close() - *fill* 0x4020702f 0x1 + 0x40207344 ESP8266WebServer::close() + *fill* 0x40207353 0x1 .text._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b - 0x40207030 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207354 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0xc5 (size before relaxing) - 0x40207038 ESP8266WebServer::sendHeader(String const&, String const&, bool) - *fill* 0x402070a9 0x3 + 0x4020735c ESP8266WebServer::sendHeader(String const&, String const&, bool) + *fill* 0x402073cd 0x3 .text._ZN16ESP8266WebServer11sendContentERK6String - 0x402070ac 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402073d0 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x51 (size before relaxing) - 0x402070ac ESP8266WebServer::sendContent(String const&) - *fill* 0x402070f9 0x3 + 0x402073d0 ESP8266WebServer::sendContent(String const&) + *fill* 0x4020741d 0x3 .text._ZN16ESP8266WebServer3argE6String - 0x402070fc 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207420 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x79 (size before relaxing) - 0x402070fc ESP8266WebServer::arg(String) - *fill* 0x40207161 0x3 + 0x40207420 ESP8266WebServer::arg(String) + *fill* 0x40207485 0x3 .text._ZN16ESP8266WebServer3argEi - 0x40207164 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207488 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x4b (size before relaxing) - 0x40207164 ESP8266WebServer::arg(int) - *fill* 0x4020719f 0x1 + 0x40207488 ESP8266WebServer::arg(int) + *fill* 0x402074c3 0x1 .text._ZN16ESP8266WebServer7argNameEi - 0x402071a0 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402074c4 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x47 (size before relaxing) - 0x402071a0 ESP8266WebServer::argName(int) - *fill* 0x402071db 0x1 + 0x402074c4 ESP8266WebServer::argName(int) + *fill* 0x402074ff 0x1 .text._ZN16ESP8266WebServer6hasArgE6String - 0x402071dc 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207500 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x47 (size before relaxing) - 0x402071dc ESP8266WebServer::hasArg(String) - *fill* 0x4020721f 0x1 + 0x40207500 ESP8266WebServer::hasArg(String) + *fill* 0x40207543 0x1 .text._ZN16ESP8266WebServer6headerE6String - 0x40207220 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207544 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x79 (size before relaxing) - 0x40207220 ESP8266WebServer::header(String) - *fill* 0x40207285 0x3 + 0x40207544 ESP8266WebServer::header(String) + *fill* 0x402075a9 0x3 .text._ZN16ESP8266WebServer14collectHeadersEPPKcj - 0x40207288 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402075ac 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x103 (size before relaxing) - 0x40207290 ESP8266WebServer::collectHeaders(char const**, unsigned int) - *fill* 0x4020735b 0x1 + 0x402075b4 ESP8266WebServer::collectHeaders(char const**, unsigned int) + *fill* 0x4020767f 0x1 .text._ZN16ESP8266WebServer5beginEv - 0x4020735c 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207680 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x3b (size before relaxing) - 0x4020735c ESP8266WebServer::begin() - *fill* 0x40207387 0x1 + 0x40207680 ESP8266WebServer::begin() + *fill* 0x402076ab 0x1 .text._ZN16ESP8266WebServer9hasHeaderE6String - 0x40207388 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402076ac 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x66 (size before relaxing) - 0x40207388 ESP8266WebServer::hasHeader(String) - *fill* 0x402073ea 0x2 + 0x402076ac ESP8266WebServer::hasHeader(String) + *fill* 0x4020770e 0x2 .text._ZN16ESP8266WebServer12authenticateEPKcS1_ - 0x402073ec 0x1a9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207710 0x1a9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x2b1 (size before relaxing) - 0x402073f8 ESP8266WebServer::authenticate(char const*, char const*) - *fill* 0x40207595 0x3 + 0x4020771c ESP8266WebServer::authenticate(char const*, char const*) + *fill* 0x402078b9 0x3 .text._ZN16ESP8266WebServer10hostHeaderEv - 0x40207598 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402078bc 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x27 (size before relaxing) - 0x40207598 ESP8266WebServer::hostHeader() - *fill* 0x402075b7 0x1 + 0x402078bc ESP8266WebServer::hostHeader() + *fill* 0x402078db 0x1 .text._ZN16ESP8266WebServer21_responseCodeToStringEi - 0x402075b8 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402078dc 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x3b1 (size before relaxing) - 0x40207658 ESP8266WebServer::_responseCodeToString(int) - *fill* 0x4020795d 0x3 + 0x4020797c ESP8266WebServer::_responseCodeToString(int) + *fill* 0x40207c81 0x3 .text._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj - 0x40207960 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207c84 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x27d (size before relaxing) - 0x40207984 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) - *fill* 0x40207add 0x3 + 0x40207ca8 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) + *fill* 0x40207e01 0x3 .text._ZN16ESP8266WebServer4sendEiPKcRK6String - 0x40207ae0 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207e04 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x77 (size before relaxing) - 0x40207ae0 ESP8266WebServer::send(int, char const*, String const&) - *fill* 0x40207b33 0x1 + 0x40207e04 ESP8266WebServer::send(int, char const*, String const&) + *fill* 0x40207e57 0x1 .text._ZN16ESP8266WebServer21requestAuthenticationEv - 0x40207b34 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207e58 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x95 (size before relaxing) - 0x40207b3c ESP8266WebServer::requestAuthentication() - *fill* 0x40207b8d 0x3 + 0x40207e60 ESP8266WebServer::requestAuthentication() + *fill* 0x40207eb1 0x3 .text._ZN16ESP8266WebServer4sendEiRK6StringS2_ - 0x40207b90 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207eb4 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x18 (size before relaxing) - 0x40207b90 ESP8266WebServer::send(int, String const&, String const&) + 0x40207eb4 ESP8266WebServer::send(int, String const&, String const&) .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ - 0x40207ba4 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207ec8 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0xb4 (size before relaxing) - 0x40207ba4 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) + 0x40207ec8 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE - 0x40207c14 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207f38 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x66 (size before relaxing) - 0x40207c14 ESP8266WebServer::on(char const*, HTTPMethod, std::function) - *fill* 0x40207c5a 0x2 + 0x40207f38 ESP8266WebServer::on(char const*, HTTPMethod, std::function) + *fill* 0x40207f7e 0x2 .text._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE - 0x40207c5c 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207f80 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x45 (size before relaxing) - 0x40207c5c ESP8266WebServer::on(char const*, std::function) - *fill* 0x40207c8d 0x3 + 0x40207f80 ESP8266WebServer::on(char const*, std::function) + *fill* 0x40207fb1 0x3 .text._ZNKSt8functionIFvvEEclEv - 0x40207c90 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207fb4 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x20 (size before relaxing) - 0x40207c90 std::function::operator()() const - *fill* 0x40207ca9 0x3 + 0x40207fb4 std::function::operator()() const + *fill* 0x40207fcd 0x3 .text._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x40207cac 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40207fd0 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x55 (size before relaxing) - 0x40207cac FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) - *fill* 0x40207ced 0x3 + 0x40207fd0 FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + *fill* 0x40208011 0x3 .text._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x40207cf0 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40208014 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x4c (size before relaxing) - 0x40207cf0 FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + 0x40208014 FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) .text._ZN16ESP8266WebServer14_handleRequestEv - 0x40207d28 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020804c 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x10d (size before relaxing) - 0x40207d30 ESP8266WebServer::_handleRequest() - *fill* 0x40207de1 0x3 + 0x40208054 ESP8266WebServer::_handleRequest() + *fill* 0x40208105 0x3 .text._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x40207de4 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40208108 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x4c (size before relaxing) - 0x40207de4 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - 0x40207de4 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40208108 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40208108 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) .text._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE - 0x40207e24 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40208148 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x19 (size before relaxing) - 0x40207e24 ESP8266WebServer::onNotFound(std::function) - *fill* 0x40207e39 0x3 + 0x40208148 ESP8266WebServer::onNotFound(std::function) + *fill* 0x4020815d 0x3 .text._ZN16ESP8266WebServer12handleClientEv - 0x40207e3c 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40208160 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) 0x1c1 (size before relaxing) - 0x40207e3c ESP8266WebServer::handleClient() - *fill* 0x40207f6d 0x3 + 0x40208160 ESP8266WebServer::handleClient() + *fill* 0x40208291 0x3 .text._ZNK6String9substringEj - 0x40207f70 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x40208294 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x23 (size before relaxing) - 0x40207f70 String::substring(unsigned int) const - *fill* 0x40207f8b 0x1 + 0x40208294 String::substring(unsigned int) const + *fill* 0x402082af 0x1 .text._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ - 0x40207f8c 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x402082b0 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x66 (size before relaxing) - 0x40207f8c ESP8266WebServer::_collectHeader(char const*, char const*) - *fill* 0x40207fe6 0x2 + 0x402082b0 ESP8266WebServer::_collectHeader(char const*, char const*) + *fill* 0x4020830a 0x2 .text._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x40207fe8 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x4020830c 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x37 (size before relaxing) - 0x40207fec ESP8266WebServer::RequestArgument::RequestArgument() - 0x40207fec ESP8266WebServer::RequestArgument::RequestArgument() - *fill* 0x40208013 0x1 + 0x40208310 ESP8266WebServer::RequestArgument::RequestArgument() + 0x40208310 ESP8266WebServer::RequestArgument::RequestArgument() + *fill* 0x40208337 0x1 .text._ZN16ESP8266WebServer16_uploadWriteByteEh - 0x40208014 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x40208338 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0xb5 (size before relaxing) - 0x40208018 ESP8266WebServer::_uploadWriteByte(unsigned char) - *fill* 0x402080ad 0x3 + 0x4020833c ESP8266WebServer::_uploadWriteByte(unsigned char) + *fill* 0x402083d1 0x3 .text._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient - 0x402080b0 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x402083d4 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x5a (size before relaxing) - 0x402080b0 ESP8266WebServer::_uploadReadByte(WiFiClient&) - *fill* 0x40208106 0x2 + 0x402083d4 ESP8266WebServer::_uploadReadByte(WiFiClient&) + *fill* 0x4020842a 0x2 .text._ZN16ESP8266WebServer9urlDecodeERK6String - 0x40208108 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x4020842c 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0xce (size before relaxing) - 0x4020810c ESP8266WebServer::urlDecode(String const&) - *fill* 0x402081aa 0x2 + 0x40208430 ESP8266WebServer::urlDecode(String const&) + *fill* 0x402084ce 0x2 .text._ZN16ESP8266WebServer15_parseArgumentsE6String - 0x402081ac 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x402084d0 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x1f2 (size before relaxing) - 0x402081ac ESP8266WebServer::_parseArguments(String) - *fill* 0x40208336 0x2 + 0x402084d0 ESP8266WebServer::_parseArguments(String) + *fill* 0x4020865a 0x2 .text._ZN16ESP8266WebServer23_parseFormUploadAbortedEv - 0x40208338 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x4020865c 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x89 (size before relaxing) - 0x40208338 ESP8266WebServer::_parseFormUploadAborted() - *fill* 0x402083a5 0x3 + 0x4020865c ESP8266WebServer::_parseFormUploadAborted() + *fill* 0x402086c9 0x3 .text._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj - 0x402083a8 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x402086cc 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0xc8c (size before relaxing) - 0x402083c8 ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) + 0x402086ec ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) .text._ZN16ESP8266WebServer13_parseRequestER10WiFiClient - 0x40208c10 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x40208f34 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) 0x8d5 (size before relaxing) - 0x40208c34 ESP8266WebServer::_parseRequest(WiFiClient&) - *fill* 0x402091de 0x2 - .text._ZN9DNSServerC2Ev - 0x402091e0 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x3e (size before relaxing) - 0x402091e8 DNSServer::DNSServer() - 0x402091e8 DNSServer::DNSServer() - *fill* 0x40209212 0x2 - .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x40209214 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x6d (size before relaxing) - 0x40209218 DNSServer::downcaseAndRemoveWwwPrefix(String&) - *fill* 0x40209255 0x3 - .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x40209258 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xad (size before relaxing) - 0x4020925c DNSServer::getDomainNameWithoutWwwPrefix() - *fill* 0x402092e9 0x3 - .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x402092ec 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x7c (size before relaxing) - 0x402092ec DNSServer::start(unsigned short const&, String const&, IPAddress const&) - .text._ZN9DNSServer11replyWithIPEv - 0x40209350 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x109 (size before relaxing) - 0x40209350 DNSServer::replyWithIP() - *fill* 0x402093ed 0x3 - .text._ZN9DNSServer19replyWithCustomCodeEv - 0x402093f0 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x89 (size before relaxing) - 0x402093f4 DNSServer::replyWithCustomCode() - *fill* 0x40209459 0x3 - .text._ZN9DNSServer18processNextRequestEv - 0x4020945c 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xfd (size before relaxing) - 0x40209460 DNSServer::processNextRequest() - *fill* 0x40209501 0x3 + 0x40208f58 ESP8266WebServer::_parseRequest(WiFiClient&) + *fill* 0x40209502 0x2 .text._ZN8RCSwitch11setProtocolEi 0x40209504 0x2c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x30 (size before relaxing) @@ -12147,338 +12146,338 @@ Linker script and memory map *fill* 0x4020ffc5 0x0 *fill* 0x4020ffc5 0x0 *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 + *fill* 0x4020ffc5 0x0 *fill* 0x4020ffc5 0x3 - .text._ZN6Stream9readBytesEPhj - 0x4020ffc8 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x4020ffc8 Stream::readBytes(unsigned char*, unsigned int) - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x0 - *fill* 0x4020ffdb 0x1 - .text._ZN6TickerC2Ev - 0x4020ffdc 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x4020ffdc Ticker::Ticker() - 0x4020ffdc Ticker::Ticker() - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x0 - *fill* 0x4020ffe2 0x2 .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x4020ffe4 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020ffe4 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x4020fff9 0x0 - *fill* 0x4020fff9 0x0 - *fill* 0x4020fff9 0x3 + 0x4020ffc8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020ffc8 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x4020ffdd 0x0 + *fill* 0x4020ffdd 0x0 + *fill* 0x4020ffdd 0x3 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x4020fffc 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020fffc std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 - *fill* 0x40210000 0x0 + 0x4020ffe0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020ffe0 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 + *fill* 0x4020ffe4 0x0 .text._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ - 0x40210000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210000 std::function::function(std::function const&) - 0x40210000 std::function::function(std::function const&) - *fill* 0x40210021 0x3 + 0x4020ffe4 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020ffe4 std::function::function(std::function const&) + 0x4020ffe4 std::function::function(std::function const&) + *fill* 0x40210005 0x3 .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x40210024 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210024 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - 0x40210024 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - *fill* 0x4021005d 0x0 - *fill* 0x4021005d 0x3 + 0x40210008 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210008 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + 0x40210008 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + *fill* 0x40210041 0x0 + *fill* 0x40210041 0x3 .text._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ - 0x40210060 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210060 std::function::function(std::function const&) - 0x40210060 std::function::function(std::function const&) - *fill* 0x40210081 0x0 - *fill* 0x40210081 0x3 + 0x40210044 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210044 std::function::function(std::function const&) + 0x40210044 std::function::function(std::function const&) + *fill* 0x40210065 0x0 + *fill* 0x40210065 0x3 .text._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ - 0x40210084 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210084 std::function::function(std::function const&) - 0x40210084 std::function::function(std::function const&) - *fill* 0x402100a5 0x0 - *fill* 0x402100a5 0x3 + 0x40210068 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40210068 std::function::function(std::function const&) + 0x40210068 std::function::function(std::function const&) + *fill* 0x40210089 0x0 + *fill* 0x40210089 0x3 .text._ZNSt8functionIFvvEEC2ERKS1_ - 0x402100a8 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x402100a8 std::function::function(std::function const&) - 0x402100a8 std::function::function(std::function const&) - *fill* 0x402100c9 0x0 - *fill* 0x402100c9 0x0 - *fill* 0x402100c9 0x3 + 0x4021008c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4021008c std::function::function(std::function const&) + 0x4021008c std::function::function(std::function const&) + *fill* 0x402100ad 0x0 + *fill* 0x402100ad 0x0 + *fill* 0x402100ad 0x3 .text._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x402100cc 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x402100cc void std::swap(std::_Any_data&, std::_Any_data&) - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 - *fill* 0x402100e4 0x0 + 0x402100b0 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402100b0 void std::swap(std::_Any_data&, std::_Any_data&) + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + *fill* 0x402100c8 0x0 + .text._ZN6Stream9readBytesEPhj + 0x402100c8 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402100c8 Stream::readBytes(unsigned char*, unsigned int) + *fill* 0x402100db 0x1 .text._ZN10WiFiClient5writeEh - 0x402100e4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x402100e4 WiFiClient::write(unsigned char) - *fill* 0x402100ff 0x1 + 0x402100dc 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402100dc WiFiClient::write(unsigned char) + *fill* 0x402100f7 0x1 .text._ZN10WiFiClient4peekEv - 0x40210100 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x40210100 WiFiClient::peek() - *fill* 0x40210131 0x3 + 0x402100f8 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402100f8 WiFiClient::peek() + *fill* 0x40210129 0x3 .text._ZN10WiFiClient9connectedEv - 0x40210134 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x40210134 WiFiClient::connected() - *fill* 0x40210163 0x1 + 0x4021012c 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4021012c WiFiClient::connected() + *fill* 0x4021015b 0x1 .text._ZN10WiFiClientcvbEv - 0x40210164 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x40210164 WiFiClient::operator bool() - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x0 - *fill* 0x4021016f 0x1 + 0x4021015c 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4021015c WiFiClient::operator bool() + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x0 + *fill* 0x40210167 0x1 .text._ZN10WiFiClient10setNoDelayEb - 0x40210170 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x40210170 WiFiClient::setNoDelay(bool) - *fill* 0x40210193 0x0 - *fill* 0x40210193 0x0 - *fill* 0x40210193 0x0 - *fill* 0x40210193 0x1 + 0x40210168 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40210168 WiFiClient::setNoDelay(bool) + *fill* 0x4021018b 0x0 + *fill* 0x4021018b 0x0 + *fill* 0x4021018b 0x0 + *fill* 0x4021018b 0x1 .text._ZN7WiFiUDP4readEPcj - 0x40210194 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40210194 WiFiUDP::read(char*, unsigned int) - *fill* 0x402101a7 0x1 + 0x4021018c 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4021018c WiFiUDP::read(char*, unsigned int) + *fill* 0x4021019f 0x1 .text._ZN7WiFiUDP5writeEh - 0x402101a8 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101a8 WiFiUDP::write(unsigned char) - *fill* 0x402101c3 0x1 + 0x402101a0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101a0 WiFiUDP::write(unsigned char) + *fill* 0x402101bb 0x1 .text._ZN7WiFiUDP4readEv - 0x402101c4 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101c4 WiFiUDP::read() - *fill* 0x402101e5 0x3 + 0x402101bc 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101bc WiFiUDP::read() + *fill* 0x402101dd 0x3 .text._ZN7WiFiUDP4peekEv - 0x402101e8 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101e8 WiFiUDP::peek() - *fill* 0x40210205 0x3 + 0x402101e0 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402101e0 WiFiUDP::peek() + *fill* 0x402101fd 0x3 .text._ZN7WiFiUDP5flushEv - 0x40210208 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40210208 WiFiUDP::flush() - *fill* 0x40210217 0x0 - *fill* 0x40210217 0x0 - *fill* 0x40210217 0x0 - *fill* 0x40210217 0x0 - *fill* 0x40210217 0x1 + 0x40210200 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40210200 WiFiUDP::flush() + *fill* 0x4021020f 0x0 + *fill* 0x4021020f 0x0 + *fill* 0x4021020f 0x0 + *fill* 0x4021020f 0x0 + *fill* 0x4021020f 0x1 .text._ZN7WiFiUDP10remotePortEv - 0x40210218 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40210218 WiFiUDP::remotePort() - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x0 - *fill* 0x4021023f 0x1 + 0x40210210 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40210210 WiFiUDP::remotePort() + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x0 + *fill* 0x40210237 0x1 + .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x40210238 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x40210238 DNSServer::setErrorReplyCode(DNSReplyCode const&) + *fill* 0x4021023e 0x0 + *fill* 0x4021023e 0x2 + .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x40210240 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x40210240 DNSServer::requestIncludesOnlyOneQuestion() + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + *fill* 0x40210270 0x0 + .text._ZN6TickerC2Ev + 0x40210270 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x40210270 Ticker::Ticker() + 0x40210270 Ticker::Ticker() + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x0 + *fill* 0x40210276 0x2 .text._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x40210240 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x40210240 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) - *fill* 0x40210266 0x2 + 0x40210278 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40210278 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) + *fill* 0x4021029e 0x2 .text._ZN10UdpContext4readEv - 0x40210268 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x40210268 UdpContext::read() - *fill* 0x40210288 0x0 + 0x402102a0 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402102a0 UdpContext::read() + *fill* 0x402102c0 0x0 .text._ZN10UdpContext5flushEv - 0x40210288 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x40210288 UdpContext::flush() - *fill* 0x40210293 0x0 - *fill* 0x40210293 0x0 - *fill* 0x40210293 0x0 - *fill* 0x40210293 0x1 + 0x402102c0 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402102c0 UdpContext::flush() + *fill* 0x402102cb 0x0 + *fill* 0x402102cb 0x0 + *fill* 0x402102cb 0x0 + *fill* 0x402102cb 0x1 .text._ZN13MDNSResponder17_getAnswerFromIdxEi - 0x40210294 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x40210294 MDNSResponder::_getAnswerFromIdx(int) - *fill* 0x402102ae 0x0 - *fill* 0x402102ae 0x0 - *fill* 0x402102ae 0x2 + 0x402102cc 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402102cc MDNSResponder::_getAnswerFromIdx(int) + *fill* 0x402102e6 0x0 + *fill* 0x402102e6 0x0 + *fill* 0x402102e6 0x2 .text._ZN13MDNSResponder14_getNumAnswersEv - 0x402102b0 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x402102b0 MDNSResponder::_getNumAnswers() - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x0 - *fill* 0x402102c1 0x3 + 0x402102e8 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402102e8 MDNSResponder::_getNumAnswers() + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x0 + *fill* 0x402102f9 0x3 .text._ZN14Adafruit_SGP30C2Ev - 0x402102c4 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x402102c4 Adafruit_SGP30::Adafruit_SGP30() - 0x402102c4 Adafruit_SGP30::Adafruit_SGP30() - *fill* 0x402102c6 0x2 + 0x402102fc 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x402102fc Adafruit_SGP30::Adafruit_SGP30() + 0x402102fc Adafruit_SGP30::Adafruit_SGP30() + *fill* 0x402102fe 0x2 .text._ZN14Adafruit_SGP3011generateCRCEPhh - 0x402102c8 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x402102c8 Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) - *fill* 0x40210304 0x0 - *fill* 0x40210304 0x0 - *fill* 0x40210304 0x0 - *fill* 0x40210304 0x0 - *fill* 0x40210304 0x0 + 0x40210300 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x40210300 Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) + *fill* 0x4021033c 0x0 + *fill* 0x4021033c 0x0 + *fill* 0x4021033c 0x0 + *fill* 0x4021033c 0x0 + *fill* 0x4021033c 0x0 .text._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x40210304 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210304 RequestHandler::canHandle(HTTPMethod, String) + 0x4021033c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4021033c RequestHandler::canHandle(HTTPMethod, String) .text._ZN14RequestHandler9canUploadE6String - 0x40210308 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210308 RequestHandler::canUpload(String) + 0x40210340 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210340 RequestHandler::canUpload(String) .text._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x4021030c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4021030c RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + 0x40210344 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210344 RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) .text._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x40210310 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210310 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x0 - *fill* 0x40210312 0x2 + 0x40210348 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210348 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x0 + *fill* 0x4021034a 0x2 .text._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler - 0x40210314 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210314 ESP8266WebServer::_addRequestHandler(RequestHandler*) - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x0 - *fill* 0x40210327 0x1 + 0x4021034c 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4021034c ESP8266WebServer::_addRequestHandler(RequestHandler*) + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x0 + *fill* 0x4021035f 0x1 .text._ZN16ESP8266WebServer4argsEv - 0x40210328 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210328 ESP8266WebServer::args() - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x0 - *fill* 0x4021032d 0x3 - .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x40210330 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x40210330 DNSServer::setErrorReplyCode(DNSReplyCode const&) - *fill* 0x40210336 0x0 - *fill* 0x40210336 0x2 - .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x40210338 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x40210338 DNSServer::requestIncludesOnlyOneQuestion() - *fill* 0x40210368 0x0 - *fill* 0x40210368 0x0 - *fill* 0x40210368 0x0 - *fill* 0x40210368 0x0 - *fill* 0x40210368 0x0 + 0x40210360 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x40210360 ESP8266WebServer::args() + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x0 + *fill* 0x40210365 0x3 .text._ZN8RCSwitch14setPulseLengthEi 0x40210368 0x5 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x40210368 RCSwitch::setPulseLength(int) @@ -16656,7 +16655,7 @@ Linker script and memory map 0x40238774 wifi_fpm_do_sleep 0x40238774 fpm_do_sleep *fill* 0x402387ed 0x3 - .irom0.text 0x402387f0 0x15fa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .irom0.text 0x402387f0 0x15f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) 0x1992 (size before relaxing) 0x402387fc PPWdtReset 0x40238830 pp_soft_wdt_init @@ -16669,117 +16668,117 @@ Linker script and memory map 0x402388d0 RxNodeNum 0x402388e8 TxNodeNum 0x4023890c pp_disable_noise_timer - 0x40238930 pp_enable_noise_timer - 0x40238a40 pp_noise_test - 0x40238a50 reset_noise_timer - 0x40238a88 pp_disable_idle_timer - 0x40238aac pp_enable_idle_timer - 0x40238ad4 pp_try_enable_idle_timer - 0x40238b10 ppPeocessRxPktHdr - 0x40238e4c HdlAllBuffedEb - 0x40238ed4 ppTxPkt - 0x4023904c ppProcessWaitQ - 0x4023905c ppRegisterTxCallback - 0x40239084 ppUnregisterTxCallback - 0x402390b8 ppRecycleRxPkt - 0x40239118 ppCheckTxIdle - 0x40239398 pp_tx_idle_timeout - 0x4023955c DefFreqCalTimerCB - 0x402398e8 ppGetTxQFirstAvail_Locked - 0x402399d0 pp_attach - *fill* 0x40239dea 0x2 - .irom0.text 0x40239dec 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + 0x4023892c pp_enable_noise_timer + 0x40238a3c pp_noise_test + 0x40238a4c reset_noise_timer + 0x40238a84 pp_disable_idle_timer + 0x40238aa8 pp_enable_idle_timer + 0x40238ad0 pp_try_enable_idle_timer + 0x40238b0c ppPeocessRxPktHdr + 0x40238e48 HdlAllBuffedEb + 0x40238ed0 ppTxPkt + 0x40239048 ppProcessWaitQ + 0x40239058 ppRegisterTxCallback + 0x40239080 ppUnregisterTxCallback + 0x402390b4 ppRecycleRxPkt + 0x40239114 ppCheckTxIdle + 0x40239394 pp_tx_idle_timeout + 0x40239558 DefFreqCalTimerCB + 0x402398e4 ppGetTxQFirstAvail_Locked + 0x402399cc pp_attach + *fill* 0x40239de6 0x2 + .irom0.text 0x40239de8 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) 0x2a2 (size before relaxing) - 0x4023a038 RC_SetBasicRate - *fill* 0x4023a082 0x2 - .irom0.text 0x4023a084 0x5f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + 0x4023a034 RC_SetBasicRate + *fill* 0x4023a07e 0x2 + .irom0.text 0x4023a080 0x5f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) 0x64d (size before relaxing) - 0x4023a084 phytype2mode - 0x4023a0a0 rc_set_rate_limit_id - 0x4023a1bc rcUpdatePhyMode - 0x4023a388 rcAttach - 0x4023a3d4 rcGetTrc - 0x4023a3dc trc_onDisconnect - 0x4023a3e0 trc_onScanStart - 0x4023a3f4 trc_onScanDone - 0x4023a418 rc_enable_trc - 0x4023a4f0 rc_get_mask - 0x4023a504 rc_disable_trc - 0x4023a558 rc_disable_trc_by_interface - 0x4023a574 rc_get_sta_trc - 0x4023a5b8 rc_get_trc - 0x4023a628 rc_get_trc_by_index - 0x4023a648 rc_only_sta_trc - *fill* 0x4023a675 0x3 - .irom0.text 0x4023a678 0xb17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x4023a080 phytype2mode + 0x4023a09c rc_set_rate_limit_id + 0x4023a1b8 rcUpdatePhyMode + 0x4023a384 rcAttach + 0x4023a3d0 rcGetTrc + 0x4023a3d8 trc_onDisconnect + 0x4023a3dc trc_onScanStart + 0x4023a3f0 trc_onScanDone + 0x4023a414 rc_enable_trc + 0x4023a4ec rc_get_mask + 0x4023a500 rc_disable_trc + 0x4023a554 rc_disable_trc_by_interface + 0x4023a570 rc_get_sta_trc + 0x4023a5b4 rc_get_trc + 0x4023a624 rc_get_trc_by_index + 0x4023a644 rc_only_sta_trc + *fill* 0x4023a671 0x3 + .irom0.text 0x4023a674 0xb17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) 0xc53 (size before relaxing) - 0x4023a690 wDev_Option_Init - 0x4023a784 wDev_Enable_Beacon_Tsf - 0x4023a7a0 wDev_Disable_Beacon_Tsf - 0x4023a7bc wDev_Set_Beacon_Int - 0x4023a7c4 wDev_Reset_TBTT - 0x4023a7f4 wDev_Get_Next_TBTT - 0x4023aa74 wDev_Initialize - 0x4023aae4 wDevForceAck6M - 0x4023ab00 wDev_SetMacAddress - 0x4023aba0 wDev_SetRxPolicy - 0x4023abf4 wDev_SetBssid - 0x4023accc wDev_ClearBssid - 0x4023ad04 wDev_Insert_KeyEntry - 0x4023adf8 wDev_remove_KeyEntry - 0x4023ae34 wDev_remove_KeyEntry_all_cnx - 0x4023ae84 wDev_Crypto_Conf - 0x4023af24 wDev_Crypto_Disable - 0x4023af5c wDevEnableRx - 0x4023af88 wdev_go_sniffer - 0x4023b064 wdev_set_sniffer_addr - 0x4023b0c0 wdev_exit_sniffer - *fill* 0x4023b18f 0x1 - .irom0.text 0x4023b190 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + 0x4023a68c wDev_Option_Init + 0x4023a780 wDev_Enable_Beacon_Tsf + 0x4023a79c wDev_Disable_Beacon_Tsf + 0x4023a7b8 wDev_Set_Beacon_Int + 0x4023a7c0 wDev_Reset_TBTT + 0x4023a7f0 wDev_Get_Next_TBTT + 0x4023aa70 wDev_Initialize + 0x4023aae0 wDevForceAck6M + 0x4023aafc wDev_SetMacAddress + 0x4023ab9c wDev_SetRxPolicy + 0x4023abf0 wDev_SetBssid + 0x4023acc8 wDev_ClearBssid + 0x4023ad00 wDev_Insert_KeyEntry + 0x4023adf4 wDev_remove_KeyEntry + 0x4023ae30 wDev_remove_KeyEntry_all_cnx + 0x4023ae80 wDev_Crypto_Conf + 0x4023af20 wDev_Crypto_Disable + 0x4023af58 wDevEnableRx + 0x4023af84 wdev_go_sniffer + 0x4023b060 wdev_set_sniffer_addr + 0x4023b0bc wdev_exit_sniffer + *fill* 0x4023b18b 0x1 + .irom0.text 0x4023b18c 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) 0x4c1 (size before relaxing) - 0x4023b1a4 esf_buf_alloc - 0x4023b38c esf_buf_recycle - 0x4023b4cc esf_buf_setup - *fill* 0x4023b589 0x3 - .irom0.text 0x4023b58c 0x46d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x4023b1a0 esf_buf_alloc + 0x4023b388 esf_buf_recycle + 0x4023b4c8 esf_buf_setup + *fill* 0x4023b585 0x3 + .irom0.text 0x4023b588 0x46d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) 0x581 (size before relaxing) - 0x4023b5ac ic_get_addr - 0x4023b5b8 ic_set_opmode - 0x4023b5cc ic_enable_interface - 0x4023b61c ic_interface_enabled - 0x4023b630 ic_disable_interface - 0x4023b678 ic_is_pure_sta - 0x4023b694 ic_get_ptk_alg - 0x4023b6a4 ic_get_gtk_alg - 0x4023b6b4 ic_set_ptk_alg - 0x4023b6c4 ic_set_gtk_alg - 0x4023b6d4 ic_interface_is_p2p - 0x4023b770 ic_set_vif - 0x4023b830 ic_set_sta - 0x4023b908 ic_bss_info_update - 0x4023b964 ic_set_key - 0x4023b9c0 ic_remove_key - 0x4023b9d4 ic_get_rssi - *fill* 0x4023b9f9 0x3 - .irom0.text 0x4023b9fc 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x4023b5a8 ic_get_addr + 0x4023b5b4 ic_set_opmode + 0x4023b5c8 ic_enable_interface + 0x4023b618 ic_interface_enabled + 0x4023b62c ic_disable_interface + 0x4023b674 ic_is_pure_sta + 0x4023b690 ic_get_ptk_alg + 0x4023b6a0 ic_get_gtk_alg + 0x4023b6b0 ic_set_ptk_alg + 0x4023b6c0 ic_set_gtk_alg + 0x4023b6d0 ic_interface_is_p2p + 0x4023b76c ic_set_vif + 0x4023b82c ic_set_sta + 0x4023b904 ic_bss_info_update + 0x4023b960 ic_set_key + 0x4023b9bc ic_remove_key + 0x4023b9d0 ic_get_rssi + *fill* 0x4023b9f5 0x3 + .irom0.text 0x4023b9f8 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) 0x118 (size before relaxing) - 0x4023ba00 lmacInitAc - 0x4023ba34 lmacInit - 0x4023bae0 lmacSetRetryLimit - .irom0.text 0x4023bafc 0x181d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x4023b9fc lmacInitAc + 0x4023ba30 lmacInit + 0x4023badc lmacSetRetryLimit + .irom0.text 0x4023baf8 0x1821 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) 0x1d31 (size before relaxing) - 0x4023bb08 pm_rtc_clock_cali_proc - 0x4023bb40 pm_get_ck170_period - 0x4023bb64 pm_set_sleep_time - 0x4023bec4 pm_rf_is_closed - 0x4023bef0 pm_set_sleep_type_from_upper - 0x4023bfe0 pm_get_sleep_type - 0x4023c164 uart_tx_flush - 0x4023c168 pm_suspend - 0x4023c37c pm_shutdown - 0x4023c444 pm_reset_idle_sleep - 0x4023c484 pm_idle_sleep - 0x4023c490 pm_open + 0x4023bb04 pm_rtc_clock_cali_proc + 0x4023bb3c pm_get_ck170_period + 0x4023bb60 pm_set_sleep_time + 0x4023bec0 pm_rf_is_closed + 0x4023beec pm_set_sleep_type_from_upper + 0x4023bfdc pm_get_sleep_type + 0x4023c160 uart_tx_flush + 0x4023c164 pm_suspend + 0x4023c378 pm_shutdown + 0x4023c440 pm_reset_idle_sleep + 0x4023c480 pm_idle_sleep + 0x4023c48c pm_open 0x4023c554 pm_onBcnRx 0x4023c8b8 StopLightSleepSetFunc 0x4023c8c0 LightSleepWakedCbSetFunc @@ -18397,8 +18396,6 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN6Stream9readBytesEPhj - 0x401068f8 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED5Ev @@ -18433,6 +18430,8 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .literal._ZSt4swapISt9_Any_dataEvRT_S2_ 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa @@ -19080,13 +19079,12 @@ LOAD .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o LOAD .pioenvs\sonoff\src\sonoff.ino.cpp.o START GROUP LOAD .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a +LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a +LOAD .pioenvs\sonoff\liba3d\libDNSServer.a LOAD .pioenvs\sonoff\lib8be\libWire.a -LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a -LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a LOAD .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a LOAD .pioenvs\sonoff\lib47b\libTicker.a LOAD .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a -LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a LOAD .pioenvs\sonoff\lib13e\libESP8266mDNS.a LOAD .pioenvs\sonoff\lib797\libArduinoOTA.a LOAD .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a @@ -19098,7 +19096,9 @@ LOAD .pioenvs\sonoff\libdba\libArduinoJson-5.11.2.a LOAD .pioenvs\sonoff\lib4b9\libESP8266WebServer.a LOAD .pioenvs\sonoff\lib433\libEEPROM.a LOAD .pioenvs\sonoff\lib172\libesp-knx-ip-0.5.1.a -LOAD .pioenvs\sonoff\liba3d\libDNSServer.a +LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a +LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a +LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a LOAD .pioenvs\sonoff\lib344\libTasmotaMqtt-1.1.1.a LOAD .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a LOAD .pioenvs\sonoff\lib1a6\libOneWire-2.3.3.06.a @@ -19113,7 +19113,6 @@ LOAD .pioenvs\sonoff\libc1f\libLiquidCrystal_I2C-1.1.3.a LOAD .pioenvs\sonoff\lib964\libMPU6050.a LOAD .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a LOAD .pioenvs\sonoff\lib9c8\libAdafruit_ILI9341-1.2.0-Tasmota-1.0.a -LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a LOAD .pioenvs\sonoff\lib417\libMutichannel_Gas_Sensor.a LOAD .pioenvs\sonoff\lib56e\libarduino-mqtt-2.4.0.a LOAD .pioenvs\sonoff\libFrameworkArduinoVariant.a @@ -19154,10 +19153,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) @@ -19165,11 +19160,15 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) @@ -19452,10 +19451,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) @@ -19463,11 +19458,15 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) @@ -20245,16 +20244,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - -.xt.prop._ZTV7TwoWire - 0x00000000 0xc - .xt.prop._ZTV7TwoWire - 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev 0x00000000 0x8 .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev @@ -20443,6 +20432,11 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x8 (size before relaxing) +.xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt 0x00000000 0x30 .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt @@ -20526,6 +20520,11 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZTV7WiFiUDP 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) +.xt.prop._ZTV7TwoWire + 0x00000000 0xc + .xt.prop._ZTV7TwoWire + 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation 0x00000000 0x0 .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index cff50939ce50..1503884c334d 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP адрес" #define D_LIGHT "Светлина" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Модул" #define D_MQTT "MQTT" #define D_MULTI_PRESS "множествено натискане" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index c1c673aa627b..2b667cec1ee5 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Adresa IP" #define D_LIGHT "Světlo" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "několikeré-stisknutí" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index defd9dc69cc6..d024562a6d50 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP-Adresse" #define D_LIGHT "Licht" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "Mehrfachdruck" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 98c8f378c298..79558615d613 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -111,7 +111,6 @@ #define D_IP_ADDRESS "IP Address" #define D_LIGHT "Light" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "πολλαπλή πίεση" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 5a6ea7385337..1a9304a7d0d9 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Address" #define D_LIGHT "Light" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 5f97f6614f7e..e5c3135fe954 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Dirección IP" #define D_LIGHT "Luz" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 96503bacfd79..0dfb2929cc4c 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Adresse IP" #define D_LIGHT "Lumière" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pression" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index e13879e00ce7..cb041ffba062 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP כתובת" #define D_LIGHT "אור" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "מודול" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 9e3d82f70bf8..5cee46a52b77 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Cím" #define D_LIGHT "Fény" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "több lenyomás" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index a1f7c0c10dce..0eaca9337d05 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Indirizzo IP" #define D_LIGHT "Luce" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Modulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressione" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 721c01ee15b6..0567e0849d1e 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Adres" #define D_LIGHT "Licht" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "meervoudig" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index e245519907e0..678a7b77006d 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Adres IP" #define D_LIGHT "Światło" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Moduł" #define D_MQTT "MQTT" #define D_MULTI_PRESS "wielokrotne-naciśnięcie" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index e1581c3eb120..712ea6a74cea 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Endereço IP" #define D_LIGHT "Luz" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressão" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index fe2761af4a56..0bba501bd372 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "Endereço IP" #define D_LIGHT "Luz" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Módulo" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressão" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 75229f8083af..f9062a5725ee 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Адрес" #define D_LIGHT "Свет" #define D_LWT "LWT" -#define D_MMHG "мм рт.ст." #define D_MODULE "Модуль" #define D_MQTT "MQTT" #define D_MULTI_PRESS "многократное нажатие" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 4d39e4e82d5a..f892fafbbbac 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Adresi" #define D_LIGHT "Işık" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Modül" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index f383dc611a65..4c290613a05d 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP Адрес" #define D_LIGHT "Світло" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "Модуль" #define D_MQTT "MQTT" #define D_MULTI_PRESS "багаторазове натискання" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 74d78fc08de5..fe6dabe8d394 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP地址" #define D_LIGHT "灯" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "模块" #define D_MQTT "MQTT" #define D_MULTI_PRESS "多次按键" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index b7342a79973d..92a805587667 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -110,7 +110,6 @@ #define D_IP_ADDRESS "IP地址" #define D_LIGHT "燈" #define D_LWT "LWT" -#define D_MMHG "mmHg" #define D_MODULE "模組" #define D_MQTT "MQTT" #define D_MULTI_PRESS "多次按鍵" From 2f1a4df1f0505e1e521177e82745fb449b511bad Mon Sep 17 00:00:00 2001 From: Andrei eeak Date: Thu, 1 Nov 2018 21:11:57 +0200 Subject: [PATCH 429/798] =?UTF-8?q?Fix=20=D1=8818=D1=82=D1=8E=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- firmware.map | 18720 ++++++++++++++++++++++-------------------------- sonoff/i18n.h | 7 + 2 files changed, 8471 insertions(+), 10256 deletions(-) diff --git a/firmware.map b/firmware.map index 951ba7123295..ec3ea748ae95 100644 --- a/firmware.map +++ b/firmware.map @@ -1,27 +1,13 @@ Archive member included because of file (symbol) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::IRsend(unsigned short, bool)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) (IRtimer::IRtimer()) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendDISH(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendJVC(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendNEC(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendPanasonic(unsigned short, unsigned int, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendRC5(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendSAMSUNG(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (IRsend::sendSony(unsigned long long, unsigned short, unsigned short)) -.pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) (reverseBits(unsigned long long, unsigned short)) +.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) +.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) +.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFi) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) @@ -36,24 +22,10 @@ Archive member included because of file (symbol) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiClient::connect(IPAddress, unsigned short)) .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiUDP::endPacket()) -.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) -.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) -.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (MDNSResponder::hostname(int)) -.pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_SGP30::Adafruit_SGP30()) -.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WebServer::ESP8266WebServer(int)) -.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (ESP8266WebServer::_parseRequest(WiFiClient&)) +.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (RCSwitch::setProtocol(int)) .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) @@ -62,10 +34,16 @@ Archive member included because of file (symbol) .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaSerial::TasmotaSerial(int, int, bool)) .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaModbus::TasmotaModbus(int, int)) -.pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (bitbang_send_pixels_800) +.pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_SGP30::Adafruit_SGP30()) +.pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_CCS811::available()) .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (PubSubClient::PubSubClient(Client&)) +.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WebServer::ESP8266WebServer(int)) +.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (ESP8266WebServer::_parseRequest(WiFiClient&)) .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int)) .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) @@ -79,7 +57,7 @@ Archive member included because of file (symbol) .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) (Print::write(unsigned char const*, unsigned int)) .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (Stream::readBytes(char*, unsigned int)) + .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (Stream::readBytes(char*, unsigned int)) .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (vtable for StreamString) .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) @@ -102,8 +80,6 @@ Archive member included because of file (symbol) .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (twi_setClock) .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (delay) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (pulseIn) .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (shiftIn) .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) @@ -316,8 +292,6 @@ C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tool C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (chip_v6_set_sense) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (pm_usec2rtc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) (xthal_get_ccount) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (xthal_set_intclear) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) @@ -330,12 +304,8 @@ c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106- .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o (__umodsi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) (__umulsidi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) (__ashldi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (__ashrdi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) (__lshrdi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (__addsf3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) @@ -374,20 +344,18 @@ c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106- .pioenvs\sonoff\src\sonoff.ino.cpp.o (__muldi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divdi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) (__udivdi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) (__umoddi3) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (__umoddi3) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (atan) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ceil) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (cos) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) (fabs) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fpclassifyd) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) (modf) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (sin) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) @@ -398,10 +366,14 @@ c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106- .pioenvs\sonoff\src\sonoff.ino.cpp.o (acos) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) .pioenvs\sonoff\src\sonoff.ino.cpp.o (asin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) (log) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (__ieee754_acos) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) (__ieee754_asin) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) (__ieee754_log) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__ieee754_rem_pio2) c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) @@ -498,6 +470,8 @@ C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tool C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (get_asn1_length) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (load_key_certs) +c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) (__udivdi3) .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) (mktime) @@ -604,12 +578,7 @@ Discarded input sections .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -619,18 +588,15 @@ Discarded input sections .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -651,13 +617,10 @@ Discarded input sections .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z22HandlePreflightRequestv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZL9WebGetArgPKcPcj 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17AriluxRfInterruptv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13Tx20StartReadv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -907,9 +870,7 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z27EnergySetPowerSteadyCounterv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12AriluxRfInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15AriluxRfDisablev + .literal._Z10EnergyShowh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z12LightDiPulseh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -921,6 +882,8 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z15LightMy92x1Dutyhhhhh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z9LightInitv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17LightSetColorTempt 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17LightGetColorTempv @@ -953,10 +916,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z15LightColorEntryPch 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10IrSendInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13IrReceiveInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z24rf_find_hex_record_startPhj 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z22rf_find_hex_record_endPhj @@ -985,14 +944,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z16SonoffBridgeInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22DomoticzBatteryQualityv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19DomoticzRssiQualityv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15DomoticzCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21DomoticzHumidityStatePc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z16SerialBridgeInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z19SerialBridgeCommandv @@ -1045,13 +996,11 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z8ShowPageR6String 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HandleLoggingConfigurationv$part$131 + .literal._Z26HandleLoggingConfigurationv$part$100 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleOtherConfigurationv$part$132 + .literal._Z24HandleOtherConfigurationv$part$101 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleMqttConfigurationv$part$143 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z27HandleDomoticzConfigurationv$part$144 + .literal._Z23HandleMqttConfigurationv$part$112 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z15HandleWifiLoginv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -1085,46 +1034,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11PzemDrvInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11McpChecksumPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13McpExtractIntPchh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9McpSetIntmPhhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7McpSendPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13McpGetAddressv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17McpAddressReceivev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17McpGetCalibrationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18McpCalibrationCalcP22mcp_cal_registers_typeh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17McpSetCalibrationP22mcp_cal_registers_type - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z25McpSetSystemConfigurationt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19McpParseCalibrationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15McpGetFrequencyv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15McpSetFrequencytt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17McpParseFrequencyv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10McpGetDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12McpParseDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14McpEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10McpSnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10McpDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10McpCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13PzemAcDrvInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13PzemDcDrvInitv @@ -1169,12 +1078,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9HueGroupsP6String 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z3modii - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19Ws2812GradientColorhP7WsColorttt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18Ws2812ForceSuspendv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13CounterUpdateh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14CounterUpdate1v @@ -1189,6 +1092,12 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11CounterInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11CounterShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns01h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z12SonoffScShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z12OneWireResetv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z15OneWireWriteBith @@ -1211,6 +1120,8 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11Ds18x20Nameh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z11Ds18x20Showh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11DhtReadPrepv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14DhtExpectPulsehb @@ -1221,33 +1132,13 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z7DhtInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11ShtReadDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12HtuCheckCrc8t - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8HtuResetv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20MhzCalculateChecksumPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10MhzSendCmdh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22MhzCheckAndApplyFilterth - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MhzCommandSensorv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20NovaSdsSetWorkPeriodv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Sr04Initv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Sr04Pingt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14Sr04GetSamplesht + .literal._Z7DhtShowh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Sr04ReadPt + .literal._Z7BmpShowh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Sr04Showh + .literal._Z9Sgp30Showh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns22h + .literal._Z10CCS811Showh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9HxIsReadyt 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -1279,32 +1170,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z18HueWemoAddHandlersv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14Ws2812GetColortPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22Ws2812UpdatePixelColori7WsColorf - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16Ws2812UpdateHandih - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15Ws2812StripShowv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14Ws2812Gradienth - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Ws2812Barsh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14Ws2812SetColorthhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17Ws2812ForceUpdatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ws2812Clockv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16Ws2812ShowSchemeh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ws2812Clearv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Ws2812Initv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9LightInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13RfSendCommandv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14RulesRuleMatchhR6StringS0_ @@ -1333,18 +1198,14 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z8I2cRead8hh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16HtuSetResolutionh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HtuHeaterh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7HtuInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9I2cRead16hh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17Bmp180Calibrationh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13LM75ADGetTempv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10LM75ADShowh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z10I2cReadS16hh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11I2cRead16LEhh @@ -1363,14 +1224,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13I2cReadBufferhhPht 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HtuReadDeviceIdv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7HtuReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Bh1750Readv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9Sht3xReadRfS_h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Syslogv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6AddLogh @@ -1387,7 +1240,7 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17SetSerialBaudratei 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10ShowSourcei$part$70 + .literal._Z10ShowSourcei$part$63 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z10ShowSourcei 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -1411,14 +1264,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13PzemDcSnsInitv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7MhzInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SenseairInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7PmsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11NovaSdsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13StopWebserverv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11CseReceivedv @@ -1429,16 +1274,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11Ds18x20Readh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14ShtSendCommandh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8ShtResetv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14ShtAwaitResultv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7ShtReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9ShtDetectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z12SettingsLoadv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal.setup @@ -1453,7 +1288,7 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z18HandleUpnpSetupHuev 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleInformationv$part$136 + .literal._Z17HandleInformationv$part$105 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9WifiBeginh 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -1465,32 +1300,16 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xnrg02h 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14McpSerialInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg04h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11PzemRecievehPf 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14PzemEvery200msv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xnrg03h 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14MhzEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11PmsReadDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9PmsSecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15NovaSdsReadDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13NovaSdsSecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z12AddLogMissedPch 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z18Ds18x20EverySecondv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14ShtEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14StartWebserveri9IPAddress 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z16WifiManagerBeginv @@ -1515,74 +1334,14 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13MqttSubscribePc 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21DomoticzMqttSubscribev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17MqttPublishDirectPKch 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z7SendKeyhhh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11MqttPublishPKch 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11MqttPublishPKc 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z29MqttPublishDomoticzPowerStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24DomoticzUpdatePowerStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18DomoticzMqttUpdatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15DomoticzSendKeyhhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14DomoticzSensorhPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14DomoticzSensorhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11CounterShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns01h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Bh1750Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7MhzShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns15h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SenseairShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7PmsShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns18h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9Sgp30Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21DomoticzTempHumSensorPcS_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SonoffScShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7DhtShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7ShtShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns07h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7HtuShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9Sht3xShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z29DomoticzTempHumPressureSensorPcS_S_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7BmpShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z25DomoticzSensorPowerEnergyiPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10EnergyShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ds18x20Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11NovaSdsShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns20h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10LM75ADShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z24MqttPublishPrefixTopic_PhPKch 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z24MqttPublishPrefixTopic_PhPKc @@ -1625,6 +1384,8 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17StopAllPowerBlinkv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z13SwitchHandlerh + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17EnergyMarginCheckv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xsns03h @@ -1647,18 +1408,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13MqttConnectedv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HAssDiscoverRelayv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18HAssDiscoverButtonv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13HAssDiscoveryh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv12h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7SendKeyhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SwitchHandlerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11MqttCommandv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xdrv02h @@ -1667,30 +1416,16 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14ExecuteCommandPci 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16Every100mSecondsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13TuyaResetWifiv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z16Every100mSecondsv + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13ButtonHandlerv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z16MqttDisconnectedi 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z16MqttSaveSettingsv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15AriluxRfHandlerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14IrReceiveCheckv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13IrSendCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv05h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16DomoticzMqttDatav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv07h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20DomoticzSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17TimerSaveSettingsv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14RuleSetProcesshR6String @@ -1771,32 +1506,12 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xsns06h 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HtuDetectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14HtuEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns08h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9BmpDetectv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14BmpEverySecondv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xsns09h 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12Bh1750Detectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17Bh1750EverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns10h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Sht3xDetectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns14h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13Senseair250msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns17h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z11Sgp30Updatev 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xsns21h @@ -1805,26 +1520,30 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z6Xsns26h 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleWifiConfigurationv$part$130 + .literal._Z12CCS811Updatev + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z6Xsns31h + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z23HandleWifiConfigurationv$part$99 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z20WemoRespondToMSearchi 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z19HueRespondToMSearchv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13ShowWebSourcei$part$123 + .literal._Z13ShowWebSourcei$part$92 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13ShowWebSourcei 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z17ExecuteWebCommandPci 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleHttpCommandv$part$140 + .literal._Z17HandleHttpCommandv$part$109 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleAjaxConsoleRefreshv$part$142 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10WebRestarth + .literal._Z24HandleAjaxConsoleRefreshv$part$111 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z23HandleAjaxStatusRefreshv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._Z10WebRestarth + 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z13MqttReconnectv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z9MqttCheckv @@ -1874,8 +1593,6 @@ Discarded input sections 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z23HandleMqttConfigurationv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z27HandleDomoticzConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z24HandleTimerConfigurationv 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._Z14HandleNotFoundv @@ -1908,8 +1625,6 @@ Discarded input sections 0x00000000 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z14GetPowerDevicePchj 0x00000000 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z12ConvertPressf - 0x00000000 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z17WifiWpsConfigDonev 0x00000000 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z18WifiWpsConfigBeginv @@ -1926,6 +1641,8 @@ Discarded input sections 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z27EnergySetPowerSteadyCounterv 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z14LightSetSignalttt + 0x00000000 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z19SonoffBridgeSendAckv 0x00000000 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z10map_doubleddddd @@ -1934,10 +1651,6 @@ Discarded input sections 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z8XdspCallh 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z3modii - 0x00000000 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z18Ws2812ForceSuspendv - 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z8HxWeightv 0x00000000 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z11XsnsPresentv @@ -1945,7 +1658,7 @@ Discarded input sections .text._Z10I2cWrite16hht 0x00000000 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z14I2cWriteBufferhhPht - 0x00000000 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x00000000 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z13I2cValidRead8Phhh 0x00000000 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o .text._Z16I2cValidRead16LEPthh @@ -1966,8 +1679,6 @@ Discarded input sections 0x00000000 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o .data.bmp_once 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.mcp_kWhcounter - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss.rules_quota 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss.config_xor_on @@ -1977,257 +1688,219 @@ Discarded input sections .bss.spi_flg 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss.state_second 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.lit 0x00000000 0x12b8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop 0x00000000 0x15804 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecvC2Etthb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecvD2Ev - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv11disableIRInEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv6resumeEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv10enableIRInEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv12copyIrParamsEPV10irparams_tPS0_ - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv10getBufSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv8ticksLowEjh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv9ticksHighEjh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv5matchEjjh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv12matchAtLeastEjjh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv9matchMarkEjjhs - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv10matchSpaceEjjhs - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv7compareEtt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv10decodeHashEP14decode_results - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv6decodeEP14decode_resultsP10irparams_t - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRrecv9matchDataEPVtttjtj - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .text._ZN6IRrecvD2Ev - 0x00000000 0x49 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .text._ZN6IRrecv11disableIRInEv - 0x00000000 0x34 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .text._ZN6IRrecv10getBufSizeEv - 0x00000000 0xf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .bss.irparams_save - 0x00000000 0x4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .xt.lit 0x00000000 0x90 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .xt.prop 0x00000000 0x57c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .literal._ZN6IRsendC2Etb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend5beginEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend6ledOffEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend14calcUSecPeriodEjb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend11enableIROutEjh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend4markEt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend5spaceEj - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend9calibrateEt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend8sendDataEtjtjytb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend7sendRawEPttt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN6IRsend4sendEtyt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .text._ZN6IRsend9calibrateEt - 0x00000000 0xf8 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .text._ZN6IRsend7sendRawEPttt - 0x00000000 0x6b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .text._ZN6IRsend4sendEtyt - 0x00000000 0x97 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .rodata._ZN6IRsend4sendEtyt - 0x00000000 0x34 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .xt.lit 0x00000000 0x50 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .xt.prop 0x00000000 0x3cc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .literal._ZN7IRtimer5resetEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .literal._ZN7IRtimerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .literal._ZN7IRtimer7elapsedEv - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .xt.prop 0x00000000 0x78 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .literal._ZN6IRsend8sendDISHEytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .xt.lit 0x00000000 0x8 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .xt.prop 0x00000000 0x30 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .literal._ZN6IRsend7sendJVCEytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .literal._ZN6IRsend9encodeJVCEhh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .literal._ZN6IRrecv9decodeJVCEP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .text._ZN6IRsend9encodeJVCEhh - 0x00000000 0x2a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .xt.prop 0x00000000 0xcc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .literal._ZN6IRsend7sendNECEytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .literal._ZN6IRsend9encodeNECEtt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .literal._ZN6IRrecv9decodeNECEP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .text._ZN6IRsend9encodeNECEtt - 0x00000000 0x81 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .xt.prop 0x00000000 0x18c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .literal._ZN6IRsend15sendPanasonic64Eytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .literal._ZN6IRsend13sendPanasonicEtjtt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .literal._ZN6IRsend15encodePanasonicEthhh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .literal._ZN6IRrecv15decodePanasonicEP14decode_resultstbj - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .text._ZN6IRsend15encodePanasonicEthhh - 0x00000000 0x26 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .literal._ZN6IRsend7sendRC5Eytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend9encodeRC5Ehhb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend10encodeRC5XEhhb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend9toggleRC5Ey - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend9toggleRC6Eyt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend9encodeRC6Ejht - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend7sendRC6Eytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRrecv10getRClevelEP14decode_resultsPtS2_t - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRrecv9decodeRC5EP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRrecv9decodeRC6EP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text._ZN6IRsend9encodeRC5Ehhb - 0x00000000 0x1a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text._ZN6IRsend10encodeRC5XEhhb - 0x00000000 0x26 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text._ZN6IRsend9toggleRC5Ey - 0x00000000 0xe .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text._ZN6IRsend9toggleRC6Eyt - 0x00000000 0x20 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .text._ZN6IRsend9encodeRC6Ejht - 0x00000000 0x46 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .xt.prop 0x00000000 0x528 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .literal._ZN6IRsend11sendSAMSUNGEytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .literal._ZN6IRsend13encodeSAMSUNGEhh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .literal._ZN6IRrecv13decodeSAMSUNGEP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .text._ZN6IRsend13encodeSAMSUNGEhh - 0x00000000 0x5f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .xt.prop 0x00000000 0x108 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .literal._ZN6IRsend8sendSonyEytt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .literal._ZN6IRsend10encodeSonyEtttt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .literal._ZN6IRrecv10decodeSonyEP14decode_resultstb - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .text._ZN6IRsend10encodeSonyEtttt - 0x00000000 0x5c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .literal._Z11reverseBitsyt - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .literal._Z14uint64ToStringyh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .literal._Z17serialPrintUint64yh - 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .text._Z14uint64ToStringyh - 0x00000000 0xcf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .text._Z17serialPrintUint64yh - 0x00000000 0x43 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .xt.prop 0x00000000 0xcc .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - .literal._ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .rodata.str1.4 - 0x00000000 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .rodata 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .text._ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x249 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .xt.prop 0x00000000 0x78 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .literal._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPdisconnectEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass8softAPIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .xt.lit 0x00000000 0xef8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.prop 0x00000000 0x120b4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEPKhj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4readEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4peekEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5flushEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9availableEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5writeEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWireC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire4pinsEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire6statusEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire5beginEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire8setClockEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire20setClockStretchLimitEj + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhjb + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEhh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire11requestFromEiii + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire17beginTransmissionEi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEh + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire15endTransmissionEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire4pinsEii + 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEh + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire6statusEv + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire5beginEi + 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire8setClockEj + 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEhhh + 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire11requestFromEiii + 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire17beginTransmissionEi + 0x00000000 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onReceiveServiceEPhi + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire16onRequestServiceEv + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onReceiveEPFviE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .text._ZN7TwoWire9onRequestEPFvvE + 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onReceiveE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .bss._ZN7TwoWire14user_onRequestE + 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .literal._ZN6TickerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker10_attach_msEjbPFvPvEj + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6Ticker6detachEv + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._ZN6TickerD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .literal._Z10C2D_enableb$part$0 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL6c2_bitb + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z16c2_address_writeh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_address_readv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_data_writejh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRjh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z12c2_data_readRhh$isra$1 + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z8c2_resetv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z19c2_programming_initv + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_block_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_eeprom_writejPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_block_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z14c2_eeprom_readjPhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z13c2_page_eraseh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z15c2_device_erasev + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z18c2_sfr_write_pagedhh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z17c2_sfr_read_pagedhRh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._Z23c2_print_status_by_nameh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z15c2_eeprom_writejPhh + 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_block_readjPhh + 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z14c2_eeprom_readjPhh + 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z13c2_page_eraseh + 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z22c2_sfr_write_non_pagedhh + 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z18c2_sfr_write_pagedhh + 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z21c2_sfr_read_non_pagedhRh + 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z17c2_sfr_read_pagedhRh + 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.str1.4 + 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .text._Z23c2_print_status_by_nameh + 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .rodata.CSWTCH$90 + 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .literal._ZL12value_of_hexh + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .literal._Z10ihx_decodePht + 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + .literal._ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .rodata.str1.4 + 0x00000000 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .rodata 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .text._ZN16ESP8266WiFiClass9printDiagER5Print + 0x00000000 0x249 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .xt.lit 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .xt.prop 0x00000000 0x78 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .literal._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPdisconnectEb + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass8softAPIPEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEv + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .text._ZN18ESP8266WiFiAPClass16softAPdisconnectEb @@ -2595,6 +2268,8 @@ Discarded input sections .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .literal._ZN6Stream9readBytesEPhj + 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN10WiFiClient5writeEh 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN10WiFiClient4peekEv @@ -2664,6 +2339,8 @@ Discarded input sections .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .text._ZN6Stream9readBytesEPhj + 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .text._ZN10WiFiClient4_errEa 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .text._ZN10WiFiClient10getNoDelayEv @@ -2679,6 +2356,8 @@ Discarded input sections .rodata._ZTV6Client 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.lit 0x00000000 0xc0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.prop 0x00000000 0x81c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.prop._ZTV6Client 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) @@ -2764,225 +2443,6 @@ Discarded input sections .xt.prop 0x00000000 0x678 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) .xt.prop._ZTV3UDP 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN9DNSServerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer6setTTLERKj - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer11replyWithIPEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer19replyWithCustomCodeEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer18processNextRequestEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer6setTTLERKj - 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer4stopEv - 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWireC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4pinsEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire8setClockEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire20setClockStretchLimitEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhjb - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEiii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire4pinsEii - 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEh - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire6statusEv - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEi - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire8setClockEj - 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire20setClockStretchLimitEj - 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEhhh - 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEiii - 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onReceiveE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onRequestE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN6TickerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker10_attach_msEjbPFvPvEj - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker6detachEv - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6TickerD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._Z10C2D_enableb$part$0 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL6c2_bitb - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z16c2_address_writeh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_address_readv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_data_writejh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRjh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRhh$isra$1 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z8c2_resetv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z19c2_programming_initv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_block_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_eeprom_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_block_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_eeprom_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_page_eraseh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_device_erasev - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z18c2_sfr_write_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z17c2_sfr_read_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z23c2_print_status_by_nameh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z15c2_eeprom_writejPhh - 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_block_readjPhh - 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z14c2_eeprom_readjPhh - 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_page_eraseh - 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z18c2_sfr_write_pagedhh - 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z17c2_sfr_read_pagedhRh - 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.str1.4 - 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z23c2_print_status_by_nameh - 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.CSWTCH$90 - 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL12value_of_hexh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .literal._Z10ihx_decodePht - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) @@ -3047,308 +2507,73 @@ Discarded input sections .literal._ZN13MDNSResponder12_parsePacketEv 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .literal._ZN13MDNSResponder6updateEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponderD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder5beginEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder15setInstanceNameE6String - 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ - 0x00000000 0x16e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder13enableArduinoEtb - 0x00000000 0xbf .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.lit 0x00000000 0xd8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop 0x00000000 0xbe8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN14Adafruit_SGP30C2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3011generateCRCEPhh - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP307IAQinitEv - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP305beginEP7TwoWire - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3010IAQmeasureEv - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3014setIAQBaselineEtt - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .text._ZN14Adafruit_SGP3014setIAQBaselineEtt - 0x00000000 0x74 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xt.lit 0x00000000 0x30 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xt.prop 0x00000000 0x240 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN10HTTPUploadC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN5Print5writeEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerC2E9IPAddressi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerC2Ei - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10addHandlerEP14RequestHandler - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer5closeEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer11sendContentERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer13sendContent_PEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer13sendContent_PEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer3argE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer3argEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer7argNameEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4argsEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6hasArgE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6headerE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14collectHeadersEPPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6headerEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10headerNameEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer7headersEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer9hasHeaderE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12authenticateEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10hostHeaderEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer21_responseCodeToStringEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiPKcRK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer21requestAuthenticationEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiPcRK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiRK6StringS2_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6send_PEiPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6send_PEiPKcS1_j - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandlerD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt8functionIFvvEEC5ERKS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14_handleRequestEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12handleClientEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x52 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN5Print5writeEPKcj - 0x00000000 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x511 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServerC2E9IPAddressi - 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10addHandlerEP14RequestHandler - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ - 0x00000000 0xac .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer4stopEv - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer13sendContent_PEPKc - 0x00000000 0x63 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer13sendContent_PEPKcj - 0x00000000 0x72 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6headerEi - 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10headerNameEi - 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer7headersEv - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer4sendEiPcRK6String - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6send_PEiPKcS1_ - 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6send_PEiPKcS1_j - 0x00000000 0x9f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponderD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN13MDNSResponder5beginEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder15setInstanceNameE6String + 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ + 0x00000000 0x16e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .text._ZN13MDNSResponder13enableArduinoEtb + 0x00000000 0xbf .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x39 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x58 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x29 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x21 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x1b9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x266 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE - 0x00000000 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServerD2Ev - 0x00000000 0x118 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .rodata._ZTV20StaticRequestHandler - 0x00000000 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit 0x00000000 0x138 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop 0x00000000 0x1188 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN5Print5writeEPKcj - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.lit 0x00000000 0xd8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop 0x00000000 0xbe8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt + 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZTV20StaticRequestHandler - 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer16_uploadWriteByteEh - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer9urlDecodeERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer15_parseArgumentsE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer23_parseFormUploadAbortedEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer13_parseRequestER10WiFiClient - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZN9DNSServerC2Ev + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer6setTTLERKj + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer11replyWithIPEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer19replyWithCustomCodeEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .literal._ZN9DNSServer18processNextRequestEv + 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer6setTTLERKj + 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .text._ZN9DNSServer4stopEv + 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) .literal._ZN8RCSwitch11setProtocolENS_8ProtocolE 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .literal._ZN8RCSwitch11setProtocolEi @@ -3630,18 +2855,81 @@ Discarded input sections .bss 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .text._ZN6Stream9readBytesEPhj 0x00000000 0x13 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .text._ZN13TasmotaModbus20Receive16BitRegisterEPt + 0x00000000 0x32 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .text._ZN13TasmotaModbus20Receive32BitRegisterEPf 0x00000000 0x43 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .xt.prop._ZN6Stream9readBytesEPhj 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) .xt.prop 0x00000000 0x228 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - .xt.prop 0x00000000 0xc0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .literal._ZN14Adafruit_SGP30C2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3011generateCRCEPhh + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP307IAQinitEv + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP305beginEP7TwoWire + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3010IAQmeasureEv + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .literal._ZN14Adafruit_SGP3014setIAQBaselineEtt + 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .text._ZN14Adafruit_SGP3014setIAQBaselineEtt + 0x00000000 0x74 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xt.lit 0x00000000 0x30 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xt.prop 0x00000000 0x240 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8119_i2c_initEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8114readEhPhh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81120calculateTemperatureEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8115read8Eh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8119availableEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81110checkErrorEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8118readDataEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8115writeEhPhh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81120setEnvironmentalDataEhd + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81113setThresholdsEtth + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8117SWResetEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8116write8Ehh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81112setDriveModeEh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81115enableInterruptEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS81116disableInterruptEv + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZN15Adafruit_CCS8115beginEh + 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .text._ZN15Adafruit_CCS81120calculateTemperatureEv + 0x00000000 0x109 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .text._ZN15Adafruit_CCS81113setThresholdsEtth + 0x00000000 0x3d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .text._ZN15Adafruit_CCS81115enableInterruptEv + 0x00000000 0x39 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .xt.lit 0x00000000 0x80 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .xt.prop 0x00000000 0x2dc .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) .group 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) @@ -3801,14 +3089,257 @@ Discarded input sections 0x00000000 0x8 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .xt.lit 0x00000000 0x120 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZN12PubSubClientD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZN12PubSubClientD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop 0x00000000 0x9fc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZTV12PubSubClient - 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZN12PubSubClientD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZN12PubSubClientD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop 0x00000000 0x9fc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.prop._ZTV12PubSubClient + 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN10HTTPUploadC2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN5Print5writeEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt14_Function_baseD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerC2E9IPAddressi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerC2Ei + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10addHandlerEP14RequestHandler + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer5closeEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4stopEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer11sendContentERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer13sendContent_PEPKc + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer13sendContent_PEPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer3argE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer3argEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer7argNameEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4argsEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6hasArgE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6headerE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14collectHeadersEPPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer5beginEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6headerEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10headerNameEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer7headersEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer9hasHeaderE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12authenticateEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10hostHeaderEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer21_responseCodeToStringEi + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiPKcRK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer21requestAuthenticationEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiPcRK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer4sendEiRK6StringS2_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6send_PEiPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer6send_PEiPKcS1_j + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandlerD5Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZNSt8functionIFvvEEC5ERKS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer14_handleRequestEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServerD2Ev + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .literal._ZN16ESP8266WebServer12handleClientEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x52 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN5Print5writeEPKcj + 0x00000000 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt14_Function_baseD2Ev + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x511 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServerC2E9IPAddressi + 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10addHandlerEP14RequestHandler + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ + 0x00000000 0xac .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer4stopEv + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer13sendContent_PEPKc + 0x00000000 0x63 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer13sendContent_PEPKcj + 0x00000000 0x72 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6headerEi + 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10headerNameEi + 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer7headersEv + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer4sendEiPcRK6String + 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6send_PEiPKcS1_ + 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer6send_PEiPKcS1_j + 0x00000000 0x9f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x39 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x58 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x29 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x21 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x1b9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x266 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE + 0x00000000 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .text._ZN16ESP8266WebServerD2Ev + 0x00000000 0x118 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .rodata._ZTV20StaticRequestHandler + 0x00000000 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit 0x00000000 0x138 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.lit._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop 0x00000000 0x1188 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String + 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN5Print5writeEPKcj + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt14_Function_baseD2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler14getContentTypeERK6String + 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandlerD2Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandlerD0Ev + 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ + 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String + 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xt.prop._ZTV20StaticRequestHandler + 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer16_uploadWriteByteEh + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer9urlDecodeERK6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer15_parseArgumentsE6String + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer23_parseFormUploadAbortedEv + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .literal._ZN16ESP8266WebServer13_parseRequestER10WiFiClient + 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .literal.__tcf_0 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) .literal._Zli4_kHzy @@ -4527,6 +4058,8 @@ Discarded input sections 0x00000000 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) .text._Z12secureRandomll 0x00000000 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + .text._Z3maplllll + 0x00000000 0x2b .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) .text._Z8makeWordj 0x00000000 0x2 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) .text._Z8makeWordhh @@ -4944,8 +4477,6 @@ Discarded input sections .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .text.twi_setClock 0x00000000 0x3f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text.twi_setClockStretchLimit - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .text.twi_stop 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .text.twi_status @@ -4965,17 +4496,6 @@ Discarded input sections .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .xt.prop 0x00000000 0x168 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .literal.pulseIn - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .literal.pulseInLong - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .text.pulseInLong - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - .xt.prop 0x00000000 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) .literal.shiftIn 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .literal.shiftOut @@ -4983,6 +4503,8 @@ Discarded input sections .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + .text.shiftOut + 0x00000000 0x76 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .xt.prop 0x00000000 0x90 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) @@ -5120,6 +4642,8 @@ Discarded input sections 0x00000000 0x2c .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) .text._Z8memmem_PPKvjS0_j 0x00000000 0x8b .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + .text._Z9strncmp_PPKcS0_j + 0x00000000 0x44 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) .text._Z8printf_PPKcz 0x00000000 0x87 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) .text._Z9sprintf_PPcPKcz @@ -5946,9 +5470,6 @@ Discarded input sections .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) .xt.lit 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) .xt.prop 0x00000000 0x8ac C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) @@ -5967,15 +5488,9 @@ Discarded input sections .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) @@ -6050,13 +5565,6 @@ Discarded input sections .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) .xt.prop 0x00000000 0x204 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .literal 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .text 0x00000000 0x3b5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .xt.prop 0x00000000 0x1e0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) @@ -6066,11 +5574,6 @@ Discarded input sections .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - .xt.prop 0x00000000 0x15c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) @@ -6083,6 +5586,11 @@ Discarded input sections .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) .xt.prop 0x00000000 0xe4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) @@ -6103,6 +5611,13 @@ Discarded input sections .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .literal 0x00000000 0x54 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .text 0x00000000 0x125 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .rodata 0x00000000 0x5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) + .xt.prop 0x00000000 0xf0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) .rodata 0x00000000 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) @@ -6113,6 +5628,13 @@ Discarded input sections .rodata 0x00000000 0x78 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) .xt.prop 0x00000000 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .literal 0x00000000 0x19c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .text 0x00000000 0x552 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .rodata 0x00000000 0x58 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) + .xt.prop 0x00000000 0x1b0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) @@ -6918,6 +6440,13 @@ Discarded input sections .rodata 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .literal 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .text 0x00000000 0x3b5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .xt.prop 0x00000000 0x1e0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .literal.configTime 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) .literal.clock_gettime @@ -7009,7 +6538,7 @@ Linker script and memory map *(.dport.data) 0x3ff00000 _dport0_data_end = ABSOLUTE (.) -.data 0x3ffe8000 0x640 +.data 0x3ffe8000 0x528 0x3ffe8000 _data_start = ABSOLUTE (.) *(.data) .data 0x3ffe8000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) @@ -7075,263 +6604,161 @@ Linker script and memory map .data.lm75ad_addresses 0x3ffe8380 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3ffe8380 lm75ad_addresses - .data.novasds_querydata - 0x3ffe8388 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8388 novasds_querydata - *fill* 0x3ffe839b 0x1 - .data.novasds_setquerymode - 0x3ffe839c 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe839c novasds_setquerymode - *fill* 0x3ffe83af 0x1 - .data.novasds_workperiod - 0x3ffe83b0 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b0 novasds_workperiod - .data.novasds_type - 0x3ffe83c3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c3 novasds_type - .data.pms_type - 0x3ffe83c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c4 pms_type - .data.senseair_type - 0x3ffe83c5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c5 senseair_type - .data.mhz_retry - 0x3ffe83c6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c6 mhz_retry - .data.mhz_abc_enable - 0x3ffe83c7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c7 mhz_abc_enable - .data.mhz_filter - 0x3ffe83c8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c8 mhz_filter - .data.mhz_type - 0x3ffe83c9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83c9 mhz_type - *fill* 0x3ffe83ca 0x2 - .data.sht3x_addresses - 0x3ffe83cc 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83cc sht3x_addresses - *fill* 0x3ffe83cf 0x1 - .data.bh1750_types - 0x3ffe83d0 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83d0 bh1750_types - *fill* 0x3ffe83d7 0x1 - .data.bh1750_addresses - 0x3ffe83d8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83d8 bh1750_addresses - *fill* 0x3ffe83da 0x2 .data.bmp_addresses - 0x3ffe83dc 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83dc bmp_addresses - .data.htu_delay_humidity - 0x3ffe83de 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83de htu_delay_humidity - *fill* 0x3ffe83df 0x1 - .data.sht_types - 0x3ffe83e0 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83e0 sht_types - *fill* 0x3ffe83e6 0x2 + 0x3ffe8388 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8388 bmp_addresses + *fill* 0x3ffe838a 0x2 .data.ds18x20_chipids - 0x3ffe83e8 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83e8 ds18x20_chipids - .data.ws_show_next - 0x3ffe83ed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83ed ws_show_next - *fill* 0x3ffe83ee 0x2 - .data.kRepeat 0x3ffe83f0 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83f0 kRepeat - *fill* 0x3ffe83f5 0x3 - .data.kWidth 0x3ffe83f8 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83f8 kWidth - *fill* 0x3ffe83fd 0x3 - .data.kSchemes - 0x3ffe8400 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8400 kSchemes - .data.kFire 0x3ffe8438 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8438 kFire - *fill* 0x3ffe8441 0x3 - .data.kRainbow - 0x3ffe8444 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8444 kRainbow - *fill* 0x3ffe8459 0x3 - .data.kwanzaa 0x3ffe845c 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe845c kwanzaa - *fill* 0x3ffe8465 0x3 - .data.kHanukkah - 0x3ffe8468 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8468 kHanukkah - *fill* 0x3ffe846e 0x2 - .data.kChristmas - 0x3ffe8470 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8470 kChristmas - *fill* 0x3ffe8476 0x2 - .data.kRgb 0x3ffe8478 0x9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8478 kRgb - *fill* 0x3ffe8481 0x3 - .data.kIncandescent - 0x3ffe8484 0x6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8484 kIncandescent - *fill* 0x3ffe848a 0x2 + 0x3ffe838c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe838c ds18x20_chipids + *fill* 0x3ffe8391 0x3 .data.port_multicast - 0x3ffe848c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe848c port_multicast - .data.mcp_system_configuration - 0x3ffe8490 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8490 mcp_system_configuration + 0x3ffe8394 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8394 port_multicast .data.cse_power_invalid - 0x3ffe8494 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8494 cse_power_invalid - *fill* 0x3ffe8495 0x3 + 0x3ffe8398 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe8398 cse_power_invalid + *fill* 0x3ffe8399 0x3 .data.cf_pulses_last_time - 0x3ffe8498 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8498 cf_pulses_last_time + 0x3ffe839c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe839c cf_pulses_last_time .data.hlw_ui_flag - 0x3ffe849c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe849c hlw_ui_flag + 0x3ffe83a0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83a0 hlw_ui_flag .data.tuya_wifi_state - 0x3ffe849d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe849d tuya_wifi_state + 0x3ffe83a1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83a1 tuya_wifi_state .data.rules_last_minute - 0x3ffe849e 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe849e rules_last_minute + 0x3ffe83a2 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83a2 rules_last_minute .data.rules_old_dimm - 0x3ffe84a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84a0 rules_old_dimm + 0x3ffe83a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83a4 rules_old_dimm .data.rules_old_power - 0x3ffe84a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84a4 rules_old_power + 0x3ffe83a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83a8 rules_old_power .data.rules_new_power - 0x3ffe84a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84a8 rules_new_power + 0x3ffe83ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83ac rules_new_power .data.timer_last_minute - 0x3ffe84ac 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84ac timer_last_minute + 0x3ffe83b0 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b0 timer_last_minute .data.serial_bridge_active - 0x3ffe84ae 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84ae serial_bridge_active - .data.domoticz_update_flag - 0x3ffe84af 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84af domoticz_update_flag - .data.domoticz_out_topic - 0x3ffe84b0 0xd .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84b0 domoticz_out_topic - *fill* 0x3ffe84bd 0x3 - .data.domoticz_in_topic - 0x3ffe84c0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84c0 domoticz_in_topic + 0x3ffe83b2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b2 serial_bridge_active .data.sonoff_bridge_learn_key - 0x3ffe84cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84cc sonoff_bridge_learn_key + 0x3ffe83b3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b3 sonoff_bridge_learn_key .data.light_fixed_color_index - 0x3ffe84cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84cd light_fixed_color_index + 0x3ffe83b4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b4 light_fixed_color_index .data.light_update - 0x3ffe84ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84ce light_update - *fill* 0x3ffe84cf 0x1 + 0x3ffe83b5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b5 light_update + *fill* 0x3ffe83b6 0x2 .data.ledTable - 0x3ffe84d0 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84d0 ledTable + 0x3ffe83b8 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe83b8 ledTable .data.energy_power_steady_cntr - 0x3ffe85d0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85d0 energy_power_steady_cntr + 0x3ffe84b8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84b8 energy_power_steady_cntr .data.energy_power_on - 0x3ffe85d1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85d1 energy_power_on - *fill* 0x3ffe85d2 0x2 + 0x3ffe84b9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84b9 energy_power_on + *fill* 0x3ffe84ba 0x2 .data.energy_frequency - 0x3ffe85d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85d4 energy_frequency + 0x3ffe84bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84bc energy_frequency .data.energy_power_factor - 0x3ffe85d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85d8 energy_power_factor + 0x3ffe84c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84c0 energy_power_factor .data.energy_reactive_power - 0x3ffe85dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85dc energy_reactive_power + 0x3ffe84c4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84c4 energy_reactive_power .data.energy_apparent_power - 0x3ffe85e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85e0 energy_apparent_power + 0x3ffe84c8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84c8 energy_apparent_power .data.mqtt_initial_connection_state - 0x3ffe85e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85e4 mqtt_initial_connection_state + 0x3ffe84cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84cc mqtt_initial_connection_state .data.mqtt_retry_counter - 0x3ffe85e5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85e5 mqtt_retry_counter + 0x3ffe84cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84cd mqtt_retry_counter .data.config_xor_on_set - 0x3ffe85e6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85e6 config_xor_on_set - *fill* 0x3ffe85e7 0x1 + 0x3ffe84ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84ce config_xor_on_set + *fill* 0x3ffe84cf 0x1 .data.minimum_signal_quality - 0x3ffe85e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85e8 minimum_signal_quality + 0x3ffe84d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84d0 minimum_signal_quality .data.remove_duplicate_access_points - 0x3ffe85ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85ec remove_duplicate_access_points - *fill* 0x3ffe85ed 0x3 + 0x3ffe84d4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84d4 remove_duplicate_access_points + *fill* 0x3ffe84d5 0x3 .data.midnight - 0x3ffe85f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85f0 midnight + 0x3ffe84d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84d8 midnight .data.latest_uptime_flag - 0x3ffe85f4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85f4 latest_uptime_flag + 0x3ffe84dc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84dc latest_uptime_flag .data.web_log_index - 0x3ffe85f5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85f5 web_log_index + 0x3ffe84dd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84dd web_log_index .data.ota_retry_counter - 0x3ffe85f6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85f6 ota_retry_counter - *fill* 0x3ffe85f7 0x1 + 0x3ffe84de 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84de ota_retry_counter + *fill* 0x3ffe84df 0x1 .data.lastbutton - 0x3ffe85f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85f8 lastbutton + 0x3ffe84e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84e0 lastbutton .data.blinkspeed - 0x3ffe85fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe85fc blinkspeed - *fill* 0x3ffe85fd 0x3 - .data.blinks 0x3ffe8600 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8600 blinks + 0x3ffe84e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84e4 blinkspeed + *fill* 0x3ffe84e5 0x3 + .data.blinks 0x3ffe84e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84e8 blinks .data.tele_period - 0x3ffe8604 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8604 tele_period + 0x3ffe84ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84ec tele_period .data.baudrate - 0x3ffe8608 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8608 baudrate + 0x3ffe84f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84f0 baudrate .data.serial_config - 0x3ffe860c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe860c serial_config - .data._ZN23ESP8266WiFiGenericClass11_persistentE - 0x3ffe8610 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe8610 ESP8266WiFiGenericClass::_persistent - *fill* 0x3ffe8611 0x3 + 0x3ffe84f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe84f4 serial_config .data._ZL15default_scl_pin - 0x3ffe8614 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3ffe84f8 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) .data._ZL15default_sda_pin - 0x3ffe8618 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data.AUTHORIZATION_HEADER - 0x3ffe861c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe861c AUTHORIZATION_HEADER + 0x3ffe84fc 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .data._ZN23ESP8266WiFiGenericClass11_persistentE + 0x3ffe8500 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe8500 ESP8266WiFiGenericClass::_persistent + *fill* 0x3ffe8501 0x3 .data._ZN8RCSwitch17nReceiveToleranceE - 0x3ffe8620 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3ffe8620 RCSwitch::nReceiveTolerance + 0x3ffe8504 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3ffe8504 RCSwitch::nReceiveTolerance + .data.AUTHORIZATION_HEADER + 0x3ffe8508 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe8508 AUTHORIZATION_HEADER .data.twi_dcount - 0x3ffe8624 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x3ffe8624 twi_dcount - *fill* 0x3ffe8625 0x3 + 0x3ffe850c 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x3ffe850c twi_dcount + *fill* 0x3ffe850d 0x3 .data.dhcps_lease_time - 0x3ffe8628 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0x3ffe8628 dhcps_lease_time - .data.offer 0x3ffe862c 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x3ffe862d 0x3 + 0x3ffe8510 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3ffe8510 dhcps_lease_time + .data.offer 0x3ffe8514 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x3ffe8515 0x3 .data.xid$2648 - 0x3ffe8630 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x3ffe8518 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) .data.time_zone - 0x3ffe8634 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3ffe8634 time_zone - *fill* 0x3ffe8635 0x3 + 0x3ffe851c 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffe851c time_zone + *fill* 0x3ffe851d 0x3 .data.iss$2741 - 0x3ffe8638 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x3ffe8520 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) .data.port$2594 - 0x3ffe863c 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x3ffe8524 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) *(.gnu.linkonce.d.*) *(.data1) *(.sdata) @@ -7341,330 +6768,311 @@ Linker script and memory map *(.sdata2.*) *(.gnu.linkonce.s2.*) *(.jcr) - 0x3ffe8640 . = ALIGN (0x4) - *fill* 0x3ffe863e 0x2 - 0x3ffe8640 _Pri_3_HandlerAddress = ABSOLUTE (.) - 0x3ffe8640 _data_end = ABSOLUTE (.) + 0x3ffe8528 . = ALIGN (0x4) + *fill* 0x3ffe8526 0x2 + 0x3ffe8528 _Pri_3_HandlerAddress = ABSOLUTE (.) + 0x3ffe8528 _data_end = ABSOLUTE (.) -.rodata 0x3ffe8640 0x2100 - 0x3ffe8640 _rodata_start = ABSOLUTE (.) +.rodata 0x3ffe8530 0x1ff0 + 0x3ffe8530 _rodata_start = ABSOLUTE (.) *(.sdk.version) - .sdk.version 0x3ffe8640 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x3ffe8640 SDK_VERSION + .sdk.version 0x3ffe8530 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x3ffe8530 SDK_VERSION *(.rodata) - .rodata 0x3ffe8650 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata 0x3ffe8694 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - *fill* 0x3ffe86a6 0x2 - .rodata 0x3ffe86a8 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - *fill* 0x3ffe86af 0x1 - .rodata 0x3ffe86b0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .rodata 0x3ffe86b4 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .rodata 0x3ffe86f8 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .rodata 0x3ffe870c 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .rodata 0x3ffe872c 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .rodata 0x3ffe8734 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - *fill* 0x3ffe873d 0x3 - .rodata 0x3ffe8740 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .rodata 0x3ffe8748 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .rodata 0x3ffe87f0 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - *fill* 0x3ffe87f9 0x3 - .rodata 0x3ffe87fc 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - *fill* 0x3ffe8805 0x3 - .rodata 0x3ffe8808 0x1d8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .rodata 0x3ffe89e0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .rodata 0x3ffe8540 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata 0x3ffe8560 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + *fill* 0x3ffe8572 0x2 + .rodata 0x3ffe8574 0x4 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .rodata 0x3ffe8578 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + *fill* 0x3ffe857f 0x1 + .rodata 0x3ffe8580 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + .rodata 0x3ffe8584 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + .rodata 0x3ffe85c8 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + .rodata 0x3ffe85dc 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .rodata 0x3ffe85fc 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + .rodata 0x3ffe8604 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + *fill* 0x3ffe860d 0x3 + .rodata 0x3ffe8610 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + .rodata 0x3ffe8618 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .rodata 0x3ffe86c0 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + *fill* 0x3ffe86c9 0x3 + .rodata 0x3ffe86cc 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + *fill* 0x3ffe86d5 0x3 + .rodata 0x3ffe86d8 0x1d8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .rodata 0x3ffe88b0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) *(.rodata.*) .rodata.str1.4 - 0x3ffe8a50 0x859 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8a9 (size before relaxing) - *fill* 0x3ffe92a9 0x3 + 0x3ffe8920 0x879 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8b5 (size before relaxing) + *fill* 0x3ffe9199 0x3 .rodata._Z8UnescapePcPt - 0x3ffe92ac 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe919c 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z13LightHsbToRgbv - 0x3ffe9318 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9208 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z12RulesCommandv - 0x3ffe932c 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe9358 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe9370 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe9388 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe921c 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe93a0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9248 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x3ffe9260 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x3ffe93b8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata.setup 0x3ffe93d0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xsns15h - 0x3ffe93e8 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9278 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z13RfSendCommandv + 0x3ffe9290 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata.setup 0x3ffe92a8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z9HxCommandv - 0x3ffe9418 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe92c0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z6Xsns34h - 0x3ffe9430 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xsns03h - 0x3ffe9460 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe92d8 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z13SwitchHandlerh - 0x3ffe948c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z15AriluxRfHandlerv - 0x3ffe94ac 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z13IrSendCommandv - 0x3ffe94d0 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z16DomoticzMqttDatav - 0x3ffe9504 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xdrv07h - 0x3ffe951c 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9308 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata._Z6Xsns03h + 0x3ffe9328 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z14RulesEvery50msv - 0x3ffe9568 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9354 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z6Xdrv10h - 0x3ffe9580 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe936c 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z12LightAnimatev - 0x3ffe95d0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z13Senseair250msv - 0x3ffe95e4 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe93bc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._Z16HandleUploadDonev - 0x3ffe9600 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata.CSWTCH$4740 - 0x3ffe9634 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe93d0 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .rodata.CSWTCH$3978 + 0x3ffe9404 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._ZZ15OneWireWriteBithE10delay_high - 0x3ffe9638 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe963a 0x2 + 0x3ffe9408 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe940a 0x2 .rodata._ZZ15OneWireWriteBithE9delay_low - 0x3ffe963c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe963e 0x2 - .rodata._ZL15start_addresses - 0x3ffe9640 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe9647 0x1 + 0x3ffe940c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe940e 0x2 .rodata._ZL14pzem_responses - 0x3ffe9648 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe964d 0x3 + 0x3ffe9410 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe9415 0x3 .rodata._ZL13pzem_commands - 0x3ffe9650 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe9655 0x3 + 0x3ffe9418 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe941d 0x3 .rodata._ZL18kMonthNamesEnglish - 0x3ffe9658 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe967d 0x3 + 0x3ffe9420 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe9445 0x3 .rodata._ZL12kDaysInMonth - 0x3ffe9680 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9448 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._ZL12kIFan02Speed - 0x3ffe968c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9454 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o .rodata._ZL11kMonthNames - 0x3ffe9698 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe96bd 0x3 + 0x3ffe9460 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3ffe94a9 0x7 .rodata._ZTVN11ArduinoJson10JsonBufferE - 0x3ffe96c0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe96c0 vtable for ArduinoJson::JsonBuffer - *fill* 0x3ffe96cc 0x4 + 0x3ffe94b0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe94b0 vtable for ArduinoJson::JsonBuffer + *fill* 0x3ffe94bc 0x4 .rodata._ZTV12PubSubClient - 0x3ffe96d0 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe96d0 vtable for PubSubClient - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE - 0x3ffe96e0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe96e0 vtable for ArduinoJson::StaticJsonBuffer<128u> - *fill* 0x3ffe96ec 0x4 - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x3ffe96f0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe96f0 vtable for ArduinoJson::StaticJsonBuffer<400u> - *fill* 0x3ffe96fc 0x4 + 0x3ffe94c0 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe94c0 vtable for PubSubClient .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE - 0x3ffe9700 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe9700 vtable for ArduinoJson::StaticJsonBuffer<256u> - *fill* 0x3ffe970c 0x4 + 0x3ffe94d0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe94d0 vtable for ArduinoJson::StaticJsonBuffer<256u> + *fill* 0x3ffe94dc 0x4 .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE - 0x3ffe9710 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe9710 vtable for ArduinoJson::StaticJsonBuffer<1024u> - *fill* 0x3ffe971c 0x4 + 0x3ffe94e0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe94e0 vtable for ArduinoJson::StaticJsonBuffer<1024u> + *fill* 0x3ffe94ec 0x4 .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE - 0x3ffe9720 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe9720 vtable for ArduinoJson::StaticJsonBuffer<150u> + 0x3ffe94f0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe94f0 vtable for ArduinoJson::StaticJsonBuffer<150u> + *fill* 0x3ffe94fc 0x4 + .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x3ffe9500 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3ffe9500 vtable for ArduinoJson::StaticJsonBuffer<400u> + *fill* 0x3ffe950c 0x4 + .rodata._ZTV7TwoWire + 0x3ffe9510 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3ffe9510 vtable for TwoWire .rodata.str1.4 - 0x3ffe972c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x3ffe9538 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x3ffe954f 0x1 + .rodata.str1.4 + 0x3ffe9550 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .rodata.str1.4 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - *fill* 0x3ffe974a 0x6 + *fill* 0x3ffe956e 0x2 .rodata._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE - 0x3ffe9750 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe9750 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> - *fill* 0x3ffe976c 0x4 + 0x3ffe9570 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe9570 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> + *fill* 0x3ffe958c 0x4 .rodata._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE - 0x3ffe9770 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe9770 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> + 0x3ffe9590 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3ffe9590 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> .rodata.str1.4 0x00000000 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) .rodata.CSWTCH$69 - 0x3ffe978c 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3ffe95ac 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) .rodata.str1.4 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe9792 0x2 + *fill* 0x3ffe95b2 0x2 .rodata.CSWTCH$36 - 0x3ffe9794 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe9799 0x7 + 0x3ffe95b4 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + *fill* 0x3ffe95b9 0x7 .rodata._ZTV10WiFiClient - 0x3ffe97a0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3ffe97a0 vtable for WiFiClient - *fill* 0x3ffe97ec 0x4 + 0x3ffe95c0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3ffe95c0 vtable for WiFiClient + *fill* 0x3ffe960c 0x4 .rodata._ZTV7WiFiUDP - 0x3ffe97f0 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3ffe97f0 vtable for WiFiUDP - .rodata.str1.4 - 0x3ffe9844 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x12 (size before relaxing) - *fill* 0x3ffe9849 0x7 - .rodata._ZTV7TwoWire - 0x3ffe9850 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3ffe9850 vtable for TwoWire + 0x3ffe9610 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3ffe9610 vtable for WiFiUDP .rodata.str1.4 - 0x3ffe9878 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x3ffe988f 0x1 - .rodata.str1.4 - 0x3ffe9890 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3ffe9664 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x88 (size before relaxing) .rodata.str1.4 - 0x3ffe990c 0x322 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x33e (size before relaxing) - *fill* 0x3ffe9c2e 0x2 - .rodata._ZTV14RequestHandler - 0x3ffe9c30 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9c30 vtable for RequestHandler - .rodata._ZTV22FunctionRequestHandler - 0x3ffe9c50 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9c50 vtable for FunctionRequestHandler - .rodata.str1.4 - 0x3ffe9c70 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xaf (size before relaxing) - *fill* 0x3ffe9ce3 0x1 + 0x3ffe96e0 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x12 (size before relaxing) + *fill* 0x3ffe96e5 0x3 .rodata._ZL5proto - 0x3ffe9ce4 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - *fill* 0x3ffe9d2a 0x2 + 0x3ffe96e8 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + *fill* 0x3ffe972e 0x2 .rodata.str1.4 - 0x3ffe9d2c 0x6 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x3ffe9730 0x6 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) 0xa (size before relaxing) - *fill* 0x3ffe9d32 0x2 + *fill* 0x3ffe9736 0x2 .rodata._ZN17ESP8266HTTPUpdate18getLastErrorStringEv - 0x3ffe9d34 0x20 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - *fill* 0x3ffe9d54 0x4 + 0x3ffe9738 0x20 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .rodata._ZTV13TasmotaSerial - 0x3ffe9d58 0x30 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x3ffe9d58 vtable for TasmotaSerial + 0x3ffe9758 0x30 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3ffe9758 vtable for TasmotaSerial .rodata._ZL7ISRList - 0x3ffe9d88 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3ffe9788 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) .rodata._ZTV13TasmotaModbus - 0x3ffe9dc8 0x30 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x3ffe9dc8 vtable for TasmotaModbus + 0x3ffe97c8 0x30 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x3ffe97c8 vtable for TasmotaModbus .rodata.str1.4 0x00000000 0x1 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .rodata.str1.4 - 0x3ffe9df8 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x3ffe97f8 0x326 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x33e (size before relaxing) + *fill* 0x3ffe9b1e 0x2 + .rodata._ZTV14RequestHandler + 0x3ffe9b20 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9b20 vtable for RequestHandler + .rodata._ZTV22FunctionRequestHandler + 0x3ffe9b40 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3ffe9b40 vtable for FunctionRequestHandler + .rodata.str1.4 + 0x3ffe9b60 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xaf (size before relaxing) + *fill* 0x3ffe9bd3 0x1 + .rodata.str1.4 + 0x3ffe9bd4 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0xc1 (size before relaxing) .rodata.CSWTCH$82 - 0x3ffe9eb8 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x3ffe9c94 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + *fill* 0x3ffe9cb4 0x4 .rodata._ZTV14HardwareSerial - 0x3ffe9ed8 0x30 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3ffe9ed8 vtable for HardwareSerial + 0x3ffe9cb8 0x30 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3ffe9cb8 vtable for HardwareSerial .rodata.str1.4 - 0x3ffe9f08 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - *fill* 0x3ffe9f14 0x4 + 0x3ffe9ce8 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + *fill* 0x3ffe9cf4 0x4 .rodata._ZTV9IPAddress - 0x3ffe9f18 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x3ffe9f18 vtable for IPAddress + 0x3ffe9cf8 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x3ffe9cf8 vtable for IPAddress .rodata.str1.4 - 0x3ffe9f24 0x5 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - *fill* 0x3ffe9f29 0x3 + 0x3ffe9d04 0x5 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + *fill* 0x3ffe9d09 0x3 .rodata.str1.4 - 0x3ffe9f2c 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x3ffe9d0c 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x12 (size before relaxing) .rodata.str1.4 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) .rodata._ZTV6Stream - 0x3ffe9f38 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x3ffe9f38 vtable for Stream + 0x3ffe9d18 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x3ffe9d18 vtable for Stream .rodata._ZTV12StreamString - 0x3ffe9f60 0x28 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x3ffe9f60 vtable for StreamString + 0x3ffe9d40 0x28 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x3ffe9d40 vtable for StreamString .rodata.str1.4 - 0x3ffe9f88 0x114 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x3ffe9d68 0x114 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x118 (size before relaxing) .rodata.str1.4 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) .rodata.str1.4 - 0x3ffea09c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffea0fe 0x2 + 0x3ffe9e7c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffe9ede 0x2 .rodata._ZZSt25__throw_bad_function_callvE8__func__ - 0x3ffea100 0x1a .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffea11a 0x2 + 0x3ffe9ee0 0x1a .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffe9efa 0x2 .rodata._ZZ18__cxa_pure_virtualE8__func__ - 0x3ffea11c 0x13 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffea12f 0x1 + 0x3ffe9efc 0x13 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + *fill* 0x3ffe9f0f 0x1 .rodata.str1.4 - 0x3ffea130 0x7e .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3ffea1ae 0x2 + 0x3ffe9f10 0x7e .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3ffe9f8e 0x2 .rodata._ZZL9loop_taskP11ETSEventTagE8__func__ - 0x3ffea1b0 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3ffea1ba 0x2 + 0x3ffe9f90 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3ffe9f9a 0x2 .rodata._ZZ7__yieldE8__func__ - 0x3ffea1bc 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3ffe9f9c 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) .rodata.str1.4 - 0x3ffea1c4 0x11 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x3ffe9fa4 0x11 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x1c (size before relaxing) - *fill* 0x3ffea1d5 0x3 + *fill* 0x3ffe9fb5 0x3 .rodata.str1.4 - 0x3ffea1d8 0x109 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - *fill* 0x3ffea2e1 0x3 + 0x3ffe9fb8 0x109 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + *fill* 0x3ffea0c1 0x3 .rodata.str1.4 - 0x3ffea2e4 0x41 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x3ffea0c4 0x41 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) .rodata.str1.4 0x00000000 0x3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - *fill* 0x3ffea325 0x3 + *fill* 0x3ffea105 0x3 .rodata.str1.4 - 0x3ffea328 0x123 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - *fill* 0x3ffea44b 0x1 + 0x3ffea108 0x123 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x3ffea22b 0x1 .rodata.str1.4 - 0x3ffea44c 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + 0x3ffea22c 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) .rodata.str1.4 - 0x3ffea458 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x3ffea238 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) 0x10 (size before relaxing) .rodata.str1.4 - 0x3ffea460 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x3ffea240 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) 0xc (size before relaxing) .rodata.str1.4 - 0x3ffea464 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x3ffea244 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) 0xc (size before relaxing) .rodata.str1.4 - 0x3ffea468 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x3ffea248 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) 0xc (size before relaxing) .rodata.str1.4 - 0x3ffea46c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x3ffea24c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) 0xc (size before relaxing) .rodata.str1.1 - 0x3ffea470 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3ffea250 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) 0x26 (size before relaxing) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) .rodata.str1.1 - 0x3ffea495 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x3ffea275 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) 0x62 (size before relaxing) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) .rodata.str1.1 - 0x3ffea4f6 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x3ffea2d6 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) 0xf (size before relaxing) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) .rodata.str1.1 - 0x3ffea504 0x3f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffea2e4 0x3f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .rodata.mon_name$2393 - 0x3ffea543 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffea323 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .rodata.day_name$2392 - 0x3ffea573 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - *fill* 0x3ffea58f 0x1 + 0x3ffea353 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + *fill* 0x3ffea36f 0x1 .rodata.year_lengths - 0x3ffea590 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffea370 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .rodata.mon_lengths - 0x3ffea598 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3ffea378 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) .rodata.tcp_close_shutdown - 0x3ffea5f8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x3ffea3d8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) .rodata.str1.1 @@ -7674,101 +7082,101 @@ Linker script and memory map .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) .rodata.ethzero - 0x3ffea618 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0x3ffea618 ethzero + 0x3ffea3f8 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x3ffea3f8 ethzero .rodata.ethbroadcast - 0x3ffea61e 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0x3ffea61e ethbroadcast + 0x3ffea3fe 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x3ffea3fe ethbroadcast .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) .rodata.str1.1 - 0x3ffea624 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x3ffea404 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .rodata.str1.1 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3ffea635 0x3 + *fill* 0x3ffea415 0x3 .rodata.str1.4 - 0x3ffea638 0x3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x3ffea418 0x3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) 0x8 (size before relaxing) - *fill* 0x3ffea63b 0x1 + *fill* 0x3ffea41b 0x1 .rodata.str1.4 - 0x3ffea63c 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + 0x3ffea41c 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) .rodata.str1.4 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) .rodata.str1.4 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) .rodata.str1.4 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - *fill* 0x3ffea643 0x5 + *fill* 0x3ffea423 0x5 .rodata._ZTV10WiFiServer - 0x3ffea648 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x3ffea648 vtable for WiFiServer + 0x3ffea428 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x3ffea428 vtable for WiFiServer .rodata.str1.4 - 0x3ffea664 0x4a .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x3ffea444 0x4a .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x9a (size before relaxing) - *fill* 0x3ffea6ae 0x2 + *fill* 0x3ffea48e 0x2 .rodata._ZN10HTTPClient13errorToStringEi - 0x3ffea6b0 0x2c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x3ffea6dc 0x4 + 0x3ffea490 0x2c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x3ffea4bc 0x4 .rodata._ZTV15TransportTraits - 0x3ffea6e0 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x3ffea6e0 vtable for TransportTraits + 0x3ffea4c0 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x3ffea4c0 vtable for TransportTraits .rodata.str1.4 - 0x3ffea6f8 0x8 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0x3ffea4d8 0x8 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) 0x7 (size before relaxing) .rodata.str1.4 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) *(.gnu.linkonce.r.*) *(.rodata1) - 0x3ffea700 __XT_EXCEPTION_TABLE__ = ABSOLUTE (.) + 0x3ffea4e0 __XT_EXCEPTION_TABLE__ = ABSOLUTE (.) *(.xt_except_table) *(.gcc_except_table) *(.gnu.linkonce.e.*) *(.gnu.version_r) *(.eh_frame) - 0x3ffea700 . = ((. + 0x3) & 0xfffffffc) - 0x3ffea700 __init_array_start = ABSOLUTE (.) + 0x3ffea4e0 . = ((. + 0x3) & 0xfffffffc) + 0x3ffea4e0 __init_array_start = ABSOLUTE (.) *crtbegin.o(.ctors) *(EXCLUDE_FILE(*crtend.o) .ctors) - .ctors 0x3ffea700 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .ctors 0x3ffea704 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .ctors 0x3ffea708 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .ctors 0x3ffea70c 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .ctors 0x3ffea710 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .ctors 0x3ffea714 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .ctors 0x3ffea718 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .ctors 0x3ffea71c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .ctors 0x3ffea720 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .ctors 0x3ffea4e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .ctors 0x3ffea4e4 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .ctors 0x3ffea4e8 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + .ctors 0x3ffea4ec 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .ctors 0x3ffea4f0 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .ctors 0x3ffea4f4 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .ctors 0x3ffea4f8 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .ctors 0x3ffea4fc 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + .ctors 0x3ffea500 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) *(SORT(.ctors.*)) *(.ctors) - 0x3ffea724 __init_array_end = ABSOLUTE (.) + 0x3ffea504 __init_array_end = ABSOLUTE (.) *crtbegin.o(.dtors) *(EXCLUDE_FILE(*crtend.o) .dtors) - .dtors 0x3ffea724 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .dtors 0x3ffea728 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .dtors 0x3ffea72c 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .dtors 0x3ffea730 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .dtors 0x3ffea734 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + .dtors 0x3ffea504 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .dtors 0x3ffea508 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + .dtors 0x3ffea50c 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .dtors 0x3ffea510 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + .dtors 0x3ffea514 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) *(SORT(.dtors.*)) *(.dtors) - 0x3ffea738 __XT_EXCEPTION_DESCS__ = ABSOLUTE (.) + 0x3ffea518 __XT_EXCEPTION_DESCS__ = ABSOLUTE (.) *(.xt_except_desc) *(.gnu.linkonce.h.*) - 0x3ffea738 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE (.) + 0x3ffea518 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE (.) *(.xt_except_desc_end) *(.dynamic) *(.gnu.version_d) - 0x3ffea738 . = ALIGN (0x4) - 0x3ffea738 _bss_table_start = ABSOLUTE (.) - 0x3ffea738 0x4 LONG 0x3ffea740 _bss_start - 0x3ffea73c 0x4 LONG 0x3fff5648 _bss_end - 0x3ffea740 _bss_table_end = ABSOLUTE (.) - 0x3ffea740 _rodata_end = ABSOLUTE (.) - -.bss 0x3ffea740 0xaf08 - 0x3ffea740 . = ALIGN (0x8) - 0x3ffea740 _bss_start = ABSOLUTE (.) + 0x3ffea518 . = ALIGN (0x4) + 0x3ffea518 _bss_table_start = ABSOLUTE (.) + 0x3ffea518 0x4 LONG 0x3ffea520 _bss_start + 0x3ffea51c 0x4 LONG 0x3fff5268 _bss_end + 0x3ffea520 _bss_table_end = ABSOLUTE (.) + 0x3ffea520 _rodata_end = ABSOLUTE (.) + +.bss 0x3ffea520 0xad48 + 0x3ffea520 . = ALIGN (0x8) + 0x3ffea520 _bss_start = ABSOLUTE (.) *(.dynsbss) *(.sbss) *(.sbss.*) @@ -7779,10179 +7187,9111 @@ Linker script and memory map *(.gnu.linkonce.sb2.*) *(.dynbss) *(.bss) - .bss 0x3ffea740 0x34 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - *fill* 0x3ffea774 0xc - .bss 0x3ffea780 0x322 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x3ffea798 pend_flag_noise_check - 0x3ffea7a0 pend_flag_periodic_cal - 0x3ffea7b8 idle_timer_reopen_flag - 0x3ffea7ba dbg_stop_sw_wdt - 0x3ffea7bb dbg_stop_hw_wdt - 0x3ffea7bd total_buffed_eb_num - 0x3ffea7c0 HighestFreqOffsetInOneChk - 0x3ffea7c2 LowestFreqOffsetInOneChk - 0x3ffea7c4 DefFreqCalTimer - 0x3ffea7d8 PktNumInOneChk - 0x3ffea960 buffed_eb_arr - *fill* 0x3ffeaaa2 0xe - .bss 0x3ffeaab0 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .bss 0x3ffeabb0 0x46c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - *fill* 0x3ffeb01c 0x4 - .bss 0x3ffeb020 0x2f88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0x3ffeb020 wDevCtrl - 0x3ffeb1c8 WdevTimOffSet - *fill* 0x3ffedfa8 0x8 - .bss 0x3ffedfb0 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - *fill* 0x3ffeea54 0xc - .bss 0x3ffeea60 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - 0x3ffeea60 interface_mask - 0x3ffeea80 if_ctrl - .bss 0x3ffeeaa0 0x150 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0x3ffeeaa4 lmacConfMib - 0x3ffeeac8 our_tx_eb - .bss 0x3ffeebf0 0x11a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - 0x3ffeebf0 pmc - 0x3ffeecd0 flash_tmp - *fill* 0x3ffeed0a 0x2 - .bss 0x3ffeed0c 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x3ffeed10 info - 0x3ffeed34 lwip_timer_interval - 0x3ffeed38 check_timeouts_timer - 0x3ffeed4c user_init_flag - *fill* 0x3ffeed4d 0x3 - .bss 0x3ffeed50 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0x3ffeed50 dbg_timer_flag - 0x3ffeed54 timer_list - 0x3ffeed58 debug_timer - 0x3ffeed5c debug_timerfn - .bss 0x3ffeed80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - 0x3ffeed80 flash_read - *fill* 0x3ffeed84 0xc - .bss 0x3ffeed90 0x242 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x3ffeee87 deep_sleep_flag - 0x3ffeee88 cpu_overclock - 0x3ffeee8c event_cb - 0x3ffeee90 status_led_output_level - 0x3ffeee94 done_cb - 0x3ffeee98 rst_if - 0x3ffeeeb4 default_interface - 0x3ffeeeb5 OpmodChgIsOnGoing - 0x3ffeeeb8 promiscuous_cb - 0x3ffeeed0 event_TaskQueue - *fill* 0x3ffeefd2 0xe - .bss 0x3ffeefe0 0x1c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .bss 0x3ffef1a0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - 0x3ffef1a0 hostname - .bss 0x3ffef1ac 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x3ffef1ac g_ic - .bss 0x3ffef828 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x3ffef828 BcnEb_update - 0x3ffef835 BcnWithMcastSendStart - 0x3ffef836 BcnWithMcastSendCnt - 0x3ffef850 PendFreeBcnEb - 0x3ffef854 ApFreqCalTimer - 0x3ffef868 APRecvBcnStartTick - *fill* 0x3ffef87e 0x2 - .bss 0x3ffef880 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - 0x3ffef880 gScanStruct - 0x3ffef92c connect_scan_flag - 0x3ffef92d FreqCalCntForScan - 0x3ffef92e TestStaFreqCalValInput - 0x3ffef930 auth_type - 0x3ffef932 scannum - .bss 0x3ffef948 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .bss 0x3ffef958 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - *fill* 0x3ffef994 0x4 - .bss 0x3ffef998 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - 0x3ffefcf8 sta_con_timer - 0x3ffefd0c g_cnx_probe_rc_list_cb - 0x3ffefd10 reconnect_flag - 0x3ffefd11 no_ap_found_index - *fill* 0x3ffefd12 0x2 - .bss 0x3ffefd14 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .bss 0x3ffefd24 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .bss 0x3ffefd28 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - 0x3ffefd28 tout_dis_txpwr_track - 0x3ffefd29 sleep_mode_flag - *fill* 0x3ffefd2a 0x6 - .bss 0x3ffefd30 0x15b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - 0x3ffefd30 g_phyFuns - 0x3ffefd34 rxiq_compute_num - 0x3ffefd38 rx_table_renew_en - 0x3ffefd3c check_result - 0x3ffefd40 chip6_sleep_params - 0x3ffefdd4 chip6_phy_init_ctrl - 0x3ffefe48 phy_freq_offset - 0x3ffefe4a do_pwctrl_flag - 0x3ffefe4b txbk_dpdby_flag - 0x3ffefe4d sw_scan_mode - 0x3ffefe4e rxmax_ext_level - 0x3ffefe50 phy_rx_gain_dc_table - 0x3ffefe64 periodic_cal_dc_num - 0x3ffefe68 periodic_cal_flag - 0x3ffefe69 bbpll_cal_flag - 0x3ffefe6a phy_in_most_power - 0x3ffefe6b init_rf_no_cal - 0x3ffefe6c test_print_time - 0x3ffefe70 phy_rx_gain_dc_flag - 0x3ffefe71 phy_in_vdd33_offset - 0x3ffefe72 phy_set_most_tpw_disbg - 0x3ffefe73 phy_set_most_tpw_index - 0x3ffefe74 adc_rand_noise - 0x3ffefe78 dpd_bypass_original - 0x3ffefe7a phy_txpwr_diff_flash - 0x3ffefe80 noise_array - *fill* 0x3ffefe8b 0x1 - .bss 0x3ffefe8c 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - 0x3ffefe8c phy_tx_power_out - 0x3ffefe8e phy_tx_pwr_error - 0x3ffefe90 tx_pwctrl_track_num - 0x3ffefe91 rxiq_cover_fail_num - 0x3ffefe92 phy_meas_freq_offset - 0x3ffefe94 tx_pwctrl_pk_num - *fill* 0x3ffefe95 0x3 - .bss 0x3ffefe98 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - 0x3ffefe98 periodic_cal_sat - 0x3ffefe9a lslp_mem_opt_8266 - 0x3ffefe9c software_slp_reject - 0x3ffefe9d SDIO_slp_reject - 0x3ffefe9e hardware_reject - *fill* 0x3ffefe9f 0x1 - .bss 0x3ffefea0 0x26a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - *fill* 0x3fff010a 0x6 - .bss 0x3fff0110 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + .bss 0x3ffea520 0x34 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + *fill* 0x3ffea554 0xc + .bss 0x3ffea560 0x322 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x3ffea578 pend_flag_noise_check + 0x3ffea580 pend_flag_periodic_cal + 0x3ffea598 idle_timer_reopen_flag + 0x3ffea59a dbg_stop_sw_wdt + 0x3ffea59b dbg_stop_hw_wdt + 0x3ffea59d total_buffed_eb_num + 0x3ffea5a0 HighestFreqOffsetInOneChk + 0x3ffea5a2 LowestFreqOffsetInOneChk + 0x3ffea5a4 DefFreqCalTimer + 0x3ffea5b8 PktNumInOneChk + 0x3ffea740 buffed_eb_arr + *fill* 0x3ffea882 0xe + .bss 0x3ffea890 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + .bss 0x3ffea990 0x46c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + *fill* 0x3ffeadfc 0x4 + .bss 0x3ffeae00 0x2f88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x3ffeae00 wDevCtrl + 0x3ffeafa8 WdevTimOffSet + *fill* 0x3ffedd88 0x8 + .bss 0x3ffedd90 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + *fill* 0x3ffee834 0xc + .bss 0x3ffee840 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x3ffee840 interface_mask + 0x3ffee860 if_ctrl + .bss 0x3ffee880 0x150 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x3ffee884 lmacConfMib + 0x3ffee8a8 our_tx_eb + .bss 0x3ffee9d0 0x11a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x3ffee9d0 pmc + 0x3ffeeab0 flash_tmp + *fill* 0x3ffeeaea 0x2 + .bss 0x3ffeeaec 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x3ffeeaf0 info + 0x3ffeeb14 lwip_timer_interval + 0x3ffeeb18 check_timeouts_timer + 0x3ffeeb2c user_init_flag + *fill* 0x3ffeeb2d 0x3 + .bss 0x3ffeeb30 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x3ffeeb30 dbg_timer_flag + 0x3ffeeb34 timer_list + 0x3ffeeb38 debug_timer + 0x3ffeeb3c debug_timerfn + .bss 0x3ffeeb60 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + 0x3ffeeb60 flash_read + *fill* 0x3ffeeb64 0xc + .bss 0x3ffeeb70 0x242 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x3ffeec67 deep_sleep_flag + 0x3ffeec68 cpu_overclock + 0x3ffeec6c event_cb + 0x3ffeec70 status_led_output_level + 0x3ffeec74 done_cb + 0x3ffeec78 rst_if + 0x3ffeec94 default_interface + 0x3ffeec95 OpmodChgIsOnGoing + 0x3ffeec98 promiscuous_cb + 0x3ffeecb0 event_TaskQueue + *fill* 0x3ffeedb2 0xe + .bss 0x3ffeedc0 0x1c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) + .bss 0x3ffeef80 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x3ffeef80 hostname + .bss 0x3ffeef8c 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x3ffeef8c g_ic + .bss 0x3ffef608 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x3ffef608 BcnEb_update + 0x3ffef615 BcnWithMcastSendStart + 0x3ffef616 BcnWithMcastSendCnt + 0x3ffef630 PendFreeBcnEb + 0x3ffef634 ApFreqCalTimer + 0x3ffef648 APRecvBcnStartTick + *fill* 0x3ffef65e 0x2 + .bss 0x3ffef660 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + 0x3ffef660 gScanStruct + 0x3ffef70c connect_scan_flag + 0x3ffef70d FreqCalCntForScan + 0x3ffef70e TestStaFreqCalValInput + 0x3ffef710 auth_type + 0x3ffef712 scannum + .bss 0x3ffef728 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + .bss 0x3ffef738 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + *fill* 0x3ffef774 0x4 + .bss 0x3ffef778 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + 0x3ffefad8 sta_con_timer + 0x3ffefaec g_cnx_probe_rc_list_cb + 0x3ffefaf0 reconnect_flag + 0x3ffefaf1 no_ap_found_index + *fill* 0x3ffefaf2 0x2 + .bss 0x3ffefaf4 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + .bss 0x3ffefb04 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + .bss 0x3ffefb08 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + 0x3ffefb08 tout_dis_txpwr_track + 0x3ffefb09 sleep_mode_flag + *fill* 0x3ffefb0a 0x6 + .bss 0x3ffefb10 0x15b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + 0x3ffefb10 g_phyFuns + 0x3ffefb14 rxiq_compute_num + 0x3ffefb18 rx_table_renew_en + 0x3ffefb1c check_result + 0x3ffefb20 chip6_sleep_params + 0x3ffefbb4 chip6_phy_init_ctrl + 0x3ffefc28 phy_freq_offset + 0x3ffefc2a do_pwctrl_flag + 0x3ffefc2b txbk_dpdby_flag + 0x3ffefc2d sw_scan_mode + 0x3ffefc2e rxmax_ext_level + 0x3ffefc30 phy_rx_gain_dc_table + 0x3ffefc44 periodic_cal_dc_num + 0x3ffefc48 periodic_cal_flag + 0x3ffefc49 bbpll_cal_flag + 0x3ffefc4a phy_in_most_power + 0x3ffefc4b init_rf_no_cal + 0x3ffefc4c test_print_time + 0x3ffefc50 phy_rx_gain_dc_flag + 0x3ffefc51 phy_in_vdd33_offset + 0x3ffefc52 phy_set_most_tpw_disbg + 0x3ffefc53 phy_set_most_tpw_index + 0x3ffefc54 adc_rand_noise + 0x3ffefc58 dpd_bypass_original + 0x3ffefc5a phy_txpwr_diff_flash + 0x3ffefc60 noise_array + *fill* 0x3ffefc6b 0x1 + .bss 0x3ffefc6c 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0x3ffefc6c phy_tx_power_out + 0x3ffefc6e phy_tx_pwr_error + 0x3ffefc70 tx_pwctrl_track_num + 0x3ffefc71 rxiq_cover_fail_num + 0x3ffefc72 phy_meas_freq_offset + 0x3ffefc74 tx_pwctrl_pk_num + *fill* 0x3ffefc75 0x3 + .bss 0x3ffefc78 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0x3ffefc78 periodic_cal_sat + 0x3ffefc7a lslp_mem_opt_8266 + 0x3ffefc7c software_slp_reject + 0x3ffefc7d SDIO_slp_reject + 0x3ffefc7e hardware_reject + *fill* 0x3ffefc7f 0x1 + .bss 0x3ffefc80 0x26a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + *fill* 0x3ffefeea 0x6 + .bss 0x3ffefef0 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) *(.bss.*) .bss.timer0_user_cb - 0x3fff0118 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x3ffefef8 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o .bss.timer1_user_cb - 0x3fff011c 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x3ffefefc 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o .bss.interrupt_reg - 0x3fff0120 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x3ffeff00 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o .bss.interrupt_handlers - 0x3fff0124 0xc0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x3ffeff04 0xc0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o .bss.current_step$3695 - 0x3fff01e4 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - *fill* 0x3fff01e5 0x3 + 0x3ffeffc4 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + *fill* 0x3ffeffc5 0x3 .bss.pwm_multiplier - 0x3fff01e8 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3fff01e8 pwm_multiplier + 0x3ffeffc8 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffeffc8 pwm_multiplier .bss.pwm_steps_changed - 0x3fff01ec 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3fff01ec pwm_steps_changed - *fill* 0x3fff01ed 0x3 + 0x3ffeffcc 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffeffcc pwm_steps_changed + *fill* 0x3ffeffcd 0x3 .bss.pwm_values - 0x3fff01f0 0x22 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3fff01f0 pwm_values - *fill* 0x3fff0212 0x2 - .bss.pwm_mask 0x3fff0214 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3fff0214 pwm_mask + 0x3ffeffd0 0x22 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffeffd0 pwm_values + *fill* 0x3ffefff2 0x2 + .bss.pwm_mask 0x3ffefff4 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffefff4 pwm_mask .bss._pwm_isr_data - 0x3fff0218 0xd4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x3ffefff8 0xd4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o .bss._ZZ17PzemDcEverySecondvE10send_retry - 0x3fff02ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss._ZZ17PzemAcEverySecondvE10send_retry - 0x3fff02ed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss._ZZ23SonoffBridgeSerialInputvE11receive_len - 0x3fff02ee 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3fff02ef 0x1 + 0x3fff00cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x3fff00ce 0x2 .bss._ZZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x3fff02f0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff02f0 ArduinoJson::JsonObject::invalid()::instance + 0x3fff00d0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00d0 ArduinoJson::JsonObject::invalid()::instance .bss._ZZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x3fff02f8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff02f8 ArduinoJson::JsonArray::invalid()::instance + 0x3fff00d8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00d8 ArduinoJson::JsonArray::invalid()::instance + .bss._ZZ23SonoffBridgeSerialInputvE11receive_len + 0x3fff00e0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss.xsns_index - 0x3fff0300 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0300 xsns_index + 0x3fff00e1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00e1 xsns_index .bss.tx20_available - 0x3fff0301 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0301 tx20_available + 0x3fff00e2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00e2 tx20_available .bss.tx20_wind_direction - 0x3fff0302 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0302 tx20_wind_direction - *fill* 0x3fff0303 0x1 + 0x3fff00e3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00e3 tx20_wind_direction .bss.tx20_count - 0x3fff0304 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0304 tx20_count + 0x3fff00e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00e4 tx20_count .bss.tx20_wind_sum - 0x3fff0308 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0308 tx20_wind_sum + 0x3fff00e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00e8 tx20_wind_sum .bss.tx20_wind_speed_avg - 0x3fff030c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff030c tx20_wind_speed_avg + 0x3fff00ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00ec tx20_wind_speed_avg .bss.tx20_wind_speed_max - 0x3fff0310 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0310 tx20_wind_speed_max + 0x3fff00f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00f0 tx20_wind_speed_max .bss.tx20_wind_speed_kmh - 0x3fff0314 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0314 tx20_wind_speed_kmh - .bss.tx20_sf 0x3fff0318 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0318 tx20_sf - .bss.tx20_sc 0x3fff031a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031a tx20_sc - .bss.tx20_se 0x3fff031c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031c tx20_se - .bss.tx20_sd 0x3fff031d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031d tx20_sd - .bss.tx20_sb 0x3fff031e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031e tx20_sb - .bss.tx20_sa 0x3fff031f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031f tx20_sa + 0x3fff00f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00f4 tx20_wind_speed_kmh + .bss.tx20_sf 0x3fff00f8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00f8 tx20_sf + .bss.tx20_sc 0x3fff00fa 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00fa tx20_sc + .bss.tx20_se 0x3fff00fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00fc tx20_se + .bss.tx20_sd 0x3fff00fd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00fd tx20_sd + .bss.tx20_sb 0x3fff00fe 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00fe tx20_sb + .bss.tx20_sa 0x3fff00ff 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff00ff tx20_sa .bss.hx_pin_dout - 0x3fff0320 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0320 hx_pin_dout + 0x3fff0100 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0100 hx_pin_dout .bss.hx_pin_sck - 0x3fff0321 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0321 hx_pin_sck + 0x3fff0101 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0101 hx_pin_sck .bss.hx_calibrate_msg - 0x3fff0322 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0322 hx_calibrate_msg + 0x3fff0102 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0102 hx_calibrate_msg .bss.hx_calibrate_timer - 0x3fff0323 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0323 hx_calibrate_timer + 0x3fff0103 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0103 hx_calibrate_timer .bss.hx_calibrate_step - 0x3fff0324 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0324 hx_calibrate_step + 0x3fff0104 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0104 hx_calibrate_step .bss.hx_tare_flg - 0x3fff0325 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0325 hx_tare_flg + 0x3fff0105 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0105 hx_tare_flg .bss.hx_sample_count - 0x3fff0326 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0326 hx_sample_count - *fill* 0x3fff0327 0x1 + 0x3fff0106 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0106 hx_sample_count + *fill* 0x3fff0107 0x1 .bss.hx_offset - 0x3fff0328 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0328 hx_offset + 0x3fff0108 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0108 hx_offset .bss.hx_sum_weight - 0x3fff032c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff032c hx_sum_weight + 0x3fff010c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff010c hx_sum_weight .bss.hx_weight - 0x3fff0330 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0330 hx_weight + 0x3fff0110 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0110 hx_weight + .bss.ecnt 0x3fff0114 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0114 ecnt + .bss.tcnt 0x3fff0115 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0115 tcnt + .bss.TVOC 0x3fff0116 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0116 TVOC + .bss.eCO2 0x3fff0118 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0118 eCO2 + .bss.CCS811_type + 0x3fff011a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff011a CCS811_type + .bss.CCS811_ready + 0x3fff011b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff011b CCS811_ready + .bss.ccs 0x3fff011c 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff011c ccs .bss.lm75ad_address - 0x3fff0334 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0334 lm75ad_address + 0x3fff012c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff012c lm75ad_address .bss.lm75ad_type - 0x3fff0335 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0335 lm75ad_type - .bss.sr04_trig_pin - 0x3fff0336 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0336 sr04_trig_pin - .bss.sr04_echo_pin - 0x3fff0337 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0337 sr04_echo_pin + 0x3fff012d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff012d lm75ad_type .bss.sgp30_counter - 0x3fff0338 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0338 sgp30_counter + 0x3fff012e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff012e sgp30_counter .bss.sgp30_ready - 0x3fff0339 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0339 sgp30_ready + 0x3fff012f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff012f sgp30_ready .bss.sgp30_type - 0x3fff033a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff033a sgp30_type - *fill* 0x3fff033b 0x1 - .bss.sgp 0x3fff033c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff033c sgp - .bss.novasds_data - 0x3fff0350 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0350 novasds_data - .bss.novasds_valid - 0x3fff0354 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0354 novasds_valid - *fill* 0x3fff0355 0x3 - .bss.NovaSdsSerial - 0x3fff0358 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0358 NovaSdsSerial - .bss.pms_data 0x3fff035c 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff035c pms_data - .bss.pms_valid - 0x3fff037a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff037a pms_valid - *fill* 0x3fff037b 0x1 - .bss.PmsSerial - 0x3fff037c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff037c PmsSerial - .bss.senseair_send_retry - 0x3fff0380 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0380 senseair_send_retry - .bss.senseair_read_state - 0x3fff0381 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0381 senseair_read_state - *fill* 0x3fff0382 0x2 - .bss.senseair_humidity - 0x3fff0384 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0384 senseair_humidity - .bss.senseair_temperature - 0x3fff0388 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0388 senseair_temperature - .bss.senseair_co2 - 0x3fff038c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff038c senseair_co2 - *fill* 0x3fff038e 0x2 - .bss.senseair_types - 0x3fff0390 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0390 senseair_types - *fill* 0x3fff0397 0x1 - .bss.SenseairModbus - 0x3fff0398 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0398 SenseairModbus - .bss.mhz_state - 0x3fff039c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff039c mhz_state - .bss.mhz_received - 0x3fff039d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff039d mhz_received - *fill* 0x3fff039e 0x2 - .bss.mhz_temperature - 0x3fff03a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03a0 mhz_temperature - .bss.mhz_types - 0x3fff03a4 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03a4 mhz_types - .bss.mhz_abc_must_apply - 0x3fff03ab 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03ab mhz_abc_must_apply - .bss.mhz_last_ppm - 0x3fff03ac 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03ac mhz_last_ppm - *fill* 0x3fff03ae 0x2 - .bss.MhzSerial - 0x3fff03b0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03b0 MhzSerial - .bss.sht3x_sensors - 0x3fff03b4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03b4 sht3x_sensors - .bss.sht3x_count - 0x3fff03c9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03c9 sht3x_count - .bss.bh1750_illuminance - 0x3fff03ca 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03ca bh1750_illuminance - .bss.bh1750_valid - 0x3fff03cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03cc bh1750_valid - .bss.bh1750_type - 0x3fff03cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03cd bh1750_type - .bss.bh1750_address - 0x3fff03ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03ce bh1750_address - *fill* 0x3fff03cf 0x1 + 0x3fff0130 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0130 sgp30_type + *fill* 0x3fff0131 0x3 + .bss.sgp 0x3fff0134 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0134 sgp .bss.Bme280CalibrationData - 0x3fff03d0 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03d0 Bme280CalibrationData + 0x3fff0148 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0148 Bme280CalibrationData .bss.bmp180_cal_data - 0x3fff0414 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0414 bmp180_cal_data + 0x3fff018c 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff018c bmp180_cal_data .bss.bmp_sensors - 0x3fff043c 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff043c bmp_sensors + 0x3fff01b4 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff01b4 bmp_sensors .bss.bmp_count - 0x3fff046c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff046c bmp_count - *fill* 0x3fff046d 0x3 - .bss.htu_types - 0x3fff0470 0x7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0470 htu_types - *fill* 0x3fff0477 0x1 - .bss.htu_humidity - 0x3fff0478 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0478 htu_humidity - .bss.htu_temperature - 0x3fff047c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff047c htu_temperature - .bss.htu_valid - 0x3fff0480 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0480 htu_valid - .bss.htu_delay_temp - 0x3fff0481 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0481 htu_delay_temp - .bss.htu_type 0x3fff0482 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0482 htu_type - .bss.htu_address - 0x3fff0483 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0483 htu_address - .bss.sht_humidity - 0x3fff0484 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0484 sht_humidity - .bss.sht_temperature - 0x3fff0488 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0488 sht_temperature - .bss.sht_valid - 0x3fff048c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff048c sht_valid - .bss.sht_type 0x3fff048d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff048d sht_type - .bss.sht_scl_pin - 0x3fff048e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff048e sht_scl_pin - .bss.sht_sda_pin - 0x3fff048f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff048f sht_sda_pin - .bss.Dht 0x3fff0490 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0490 Dht + 0x3fff01e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff01e4 bmp_count + *fill* 0x3fff01e5 0x3 + .bss.Dht 0x3fff01e8 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff01e8 Dht .bss.dht_sensors - 0x3fff04f0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff04f0 dht_sensors - *fill* 0x3fff04f1 0x3 - .bss.dht_data 0x3fff04f4 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff04f4 dht_data - *fill* 0x3fff04f9 0x3 + 0x3fff0248 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0248 dht_sensors + *fill* 0x3fff0249 0x3 + .bss.dht_data 0x3fff024c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff024c dht_data + *fill* 0x3fff0251 0x3 .bss.dht_max_cycles - 0x3fff04fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff04fc dht_max_cycles + 0x3fff0254 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0254 dht_max_cycles .bss.onewire_rom_id - 0x3fff0500 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0500 onewire_rom_id + 0x3fff0258 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0258 onewire_rom_id .bss.onewire_last_device_flag - 0x3fff0508 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0508 onewire_last_device_flag + 0x3fff0260 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0260 onewire_last_device_flag .bss.onewire_last_family_discrepancy - 0x3fff0509 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0509 onewire_last_family_discrepancy + 0x3fff0261 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0261 onewire_last_family_discrepancy .bss.onewire_last_discrepancy - 0x3fff050a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff050a onewire_last_discrepancy - *fill* 0x3fff050b 0x1 + 0x3fff0262 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0262 onewire_last_discrepancy + *fill* 0x3fff0263 0x1 .bss.ds18x20_types - 0x3fff050c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff050c ds18x20_types + 0x3fff0264 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0264 ds18x20_types .bss.ds18x20_pin - 0x3fff0518 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0518 ds18x20_pin + 0x3fff0270 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0270 ds18x20_pin .bss.ds18x20_sensors - 0x3fff0519 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0519 ds18x20_sensors - *fill* 0x3fff051a 0x2 + 0x3fff0271 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0271 ds18x20_sensors + *fill* 0x3fff0272 0x2 .bss.ds18x20_sensor - 0x3fff051c 0x80 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff051c ds18x20_sensor - .bss.sc_value 0x3fff059c 0xa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff059c sc_value - *fill* 0x3fff05a6 0x2 + 0x3fff0274 0x80 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0274 ds18x20_sensor + .bss.sc_value 0x3fff02f4 0xa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff02f4 sc_value + *fill* 0x3fff02fe 0x2 .bss.last_counter_timer - 0x3fff05a8 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05a8 last_counter_timer - .bss.ws_suspend_update - 0x3fff05b8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05b8 ws_suspend_update - *fill* 0x3fff05b9 0x3 - .bss.strip 0x3fff05bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05bc strip - .bss.g_gotct 0x3fff05c0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05c0 g_gotct - *fill* 0x3fff05c1 0x1 + 0x3fff0300 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0300 last_counter_timer + .bss.g_gotct 0x3fff0310 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0310 g_gotct + *fill* 0x3fff0311 0x1 .bss.udp_remote_port - 0x3fff05c2 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05c2 udp_remote_port + 0x3fff0312 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0312 udp_remote_port .bss.udp_remote_ip - 0x3fff05c4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05c4 udp_remote_ip + 0x3fff0314 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0314 udp_remote_ip .bss.udp_response_mutex - 0x3fff05cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05cc udp_response_mutex - *fill* 0x3fff05cd 0x3 + 0x3fff031c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff031c udp_response_mutex + *fill* 0x3fff031d 0x3 .bss.ipMulticast - 0x3fff05d0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05d0 ipMulticast + 0x3fff0320 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0320 ipMulticast .bss.packet_buffer - 0x3fff05d8 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05d8 packet_buffer + 0x3fff0328 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0328 packet_buffer .bss.udp_connected - 0x3fff06a0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06a0 udp_connected - *fill* 0x3fff06a1 0x3 + 0x3fff03f0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03f0 udp_connected + *fill* 0x3fff03f1 0x3 .bss.TickerMSearch - 0x3fff06a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06a4 TickerMSearch + 0x3fff03f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03f4 TickerMSearch .bss.PzemDcModbus - 0x3fff06a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06a8 PzemDcModbus + 0x3fff03f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03f8 PzemDcModbus .bss.PzemAcModbus - 0x3fff06ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06ac PzemAcModbus - .bss.mcp_calibrate - 0x3fff06b0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b0 mcp_calibrate - .bss.mcp_timeout - 0x3fff06b1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b1 mcp_timeout - .bss.mcp_init 0x3fff06b2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b2 mcp_init - .bss.mcp_calibration_active - 0x3fff06b3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b3 mcp_calibration_active - .bss.mcp_address - 0x3fff06b4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b4 mcp_address - *fill* 0x3fff06b5 0x1 - .bss.mcp_line_frequency - 0x3fff06b6 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b6 mcp_line_frequency - .bss.mcp_voltage_rms - 0x3fff06b8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06b8 mcp_voltage_rms - *fill* 0x3fff06ba 0x2 - .bss.mcp_current_rms - 0x3fff06bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06bc mcp_current_rms - .bss.mcp_active_power - 0x3fff06c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06c0 mcp_active_power + 0x3fff03fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff03fc PzemAcModbus .bss.pzem_sendRetry - 0x3fff06c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06c4 pzem_sendRetry + 0x3fff0400 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0400 pzem_sendRetry .bss.pzem_read_state - 0x3fff06c5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06c5 pzem_read_state - *fill* 0x3fff06c6 0x2 - .bss.pzem_ip 0x3fff06c8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06c8 pzem_ip + 0x3fff0401 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0401 pzem_read_state + *fill* 0x3fff0402 0x2 + .bss.pzem_ip 0x3fff0404 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0404 pzem_ip .bss.PzemSerial - 0x3fff06d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06d0 PzemSerial + 0x3fff040c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff040c PzemSerial .bss.cf_pulses - 0x3fff06d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06d4 cf_pulses + 0x3fff0410 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0410 cf_pulses .bss.power_cycle_first - 0x3fff06d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06d8 power_cycle_first + 0x3fff0414 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0414 power_cycle_first .bss.power_cycle - 0x3fff06dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06dc power_cycle + 0x3fff0418 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0418 power_cycle .bss.current_cycle - 0x3fff06e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06e0 current_cycle + 0x3fff041c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff041c current_cycle .bss.voltage_cycle - 0x3fff06e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06e4 voltage_cycle + 0x3fff0420 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0420 voltage_cycle .bss.cse_receive_flag - 0x3fff06e8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06e8 cse_receive_flag - *fill* 0x3fff06e9 0x3 + 0x3fff0424 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0424 cse_receive_flag + *fill* 0x3fff0425 0x3 .bss.hlw_cf1_current_max_pulse_counter - 0x3fff06ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06ec hlw_cf1_current_max_pulse_counter + 0x3fff0428 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0428 hlw_cf1_current_max_pulse_counter .bss.hlw_cf1_voltage_max_pulse_counter - 0x3fff06f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06f0 hlw_cf1_voltage_max_pulse_counter + 0x3fff042c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff042c hlw_cf1_voltage_max_pulse_counter .bss.hlw_current_ratio - 0x3fff06f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06f4 hlw_current_ratio + 0x3fff0430 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0430 hlw_current_ratio .bss.hlw_voltage_ratio - 0x3fff06f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06f8 hlw_voltage_ratio + 0x3fff0434 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0434 hlw_voltage_ratio .bss.hlw_power_ratio - 0x3fff06fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06fc hlw_power_ratio + 0x3fff0438 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0438 hlw_power_ratio .bss.hlw_energy_period_counter - 0x3fff0700 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0700 hlw_energy_period_counter + 0x3fff043c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff043c hlw_energy_period_counter .bss.hlw_cf1_current_pulse_length - 0x3fff0704 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0704 hlw_cf1_current_pulse_length + 0x3fff0440 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0440 hlw_cf1_current_pulse_length .bss.hlw_cf1_voltage_pulse_length - 0x3fff0708 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0708 hlw_cf1_voltage_pulse_length + 0x3fff0444 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0444 hlw_cf1_voltage_pulse_length .bss.hlw_cf1_pulse_counter - 0x3fff070c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff070c hlw_cf1_pulse_counter + 0x3fff0448 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0448 hlw_cf1_pulse_counter .bss.hlw_cf1_summed_pulse_length - 0x3fff0710 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0710 hlw_cf1_summed_pulse_length + 0x3fff044c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff044c hlw_cf1_summed_pulse_length .bss.hlw_cf1_pulse_last_time - 0x3fff0714 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0714 hlw_cf1_pulse_last_time + 0x3fff0450 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0450 hlw_cf1_pulse_last_time .bss.hlw_cf1_pulse_length - 0x3fff0718 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0718 hlw_cf1_pulse_length + 0x3fff0454 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0454 hlw_cf1_pulse_length .bss.hlw_cf_pulse_last_time - 0x3fff071c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff071c hlw_cf_pulse_last_time + 0x3fff0458 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0458 hlw_cf_pulse_last_time .bss.hlw_cf_pulse_length - 0x3fff0720 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0720 hlw_cf_pulse_length + 0x3fff045c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff045c hlw_cf_pulse_length .bss.hlw_cf1_timer - 0x3fff0724 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0724 hlw_cf1_timer + 0x3fff0460 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0460 hlw_cf1_timer .bss.hlw_load_off - 0x3fff0725 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0725 hlw_load_off + 0x3fff0461 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0461 hlw_load_off .bss.hlw_model_type - 0x3fff0726 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0726 hlw_model_type + 0x3fff0462 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0462 hlw_model_type .bss.hlw_select_ui_flag - 0x3fff0727 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0727 hlw_select_ui_flag + 0x3fff0463 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0463 hlw_select_ui_flag .bss.rf_lasttime - 0x3fff0728 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0728 rf_lasttime - .bss.mySwitch 0x3fff072c 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff072c mySwitch + 0x3fff0464 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0464 rf_lasttime + .bss.mySwitch 0x3fff0468 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0468 mySwitch .bss.tuya_byte_counter - 0x3fff0744 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0744 tuya_byte_counter + 0x3fff0480 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0480 tuya_byte_counter .bss.tuya_buffer - 0x3fff0748 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0748 tuya_buffer + 0x3fff0484 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0484 tuya_buffer .bss.tuya_data_len - 0x3fff0848 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0848 tuya_data_len + 0x3fff0584 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0584 tuya_data_len .bss.tuya_cmd_checksum - 0x3fff0849 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0849 tuya_cmd_checksum + 0x3fff0585 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0585 tuya_cmd_checksum .bss.tuya_cmd_status - 0x3fff084a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff084a tuya_cmd_status + 0x3fff0586 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0586 tuya_cmd_status .bss.tuya_ignore_dim - 0x3fff084b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff084b tuya_ignore_dim + 0x3fff0587 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0587 tuya_ignore_dim .bss.tuya_new_dim - 0x3fff084c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff084c tuya_new_dim - *fill* 0x3fff084d 0x3 + 0x3fff0588 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0588 tuya_new_dim + *fill* 0x3fff0589 0x3 .bss.TuyaSerial - 0x3fff0850 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0850 TuyaSerial - .bss.vars 0x3fff0854 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0854 vars - *fill* 0x3fff0886 0x2 + 0x3fff058c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff058c TuyaSerial + .bss.vars 0x3fff0590 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0590 vars + *fill* 0x3fff05c2 0x2 .bss.event_data - 0x3fff0888 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0888 event_data + 0x3fff05c4 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff05c4 event_data .bss.rules_teleperiod - 0x3fff08ec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff08ec rules_teleperiod - *fill* 0x3fff08ed 0x3 + 0x3fff0628 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0628 rules_teleperiod + *fill* 0x3fff0629 0x3 .bss.rules_trigger_count - 0x3fff08f0 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff08f0 rules_trigger_count - *fill* 0x3fff08f3 0x1 + 0x3fff062c 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff062c rules_trigger_count + *fill* 0x3fff062f 0x1 .bss.rules_triggers - 0x3fff08f4 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff08f4 rules_triggers + 0x3fff0630 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0630 rules_triggers .bss.rules_timer - 0x3fff0900 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0900 rules_timer + 0x3fff063c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff063c rules_timer .bss.rules_event_value - 0x3fff0920 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0920 rules_event_value + 0x3fff065c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff065c rules_event_value .bss.timer_window - 0x3fff092c 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff092c timer_window + 0x3fff0668 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0668 timer_window .bss.serial_bridge_buffer - 0x3fff093c 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff093c serial_bridge_buffer - *fill* 0x3fff09be 0x2 + 0x3fff0678 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0678 serial_bridge_buffer + *fill* 0x3fff06fa 0x2 .bss.serial_bridge_polling_window - 0x3fff09c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09c0 serial_bridge_polling_window + 0x3fff06fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff06fc serial_bridge_polling_window .bss.serial_bridge_in_byte_counter - 0x3fff09c4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09c4 serial_bridge_in_byte_counter - *fill* 0x3fff09c5 0x3 + 0x3fff0700 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0700 serial_bridge_in_byte_counter + *fill* 0x3fff0701 0x3 .bss.SerialBridgeSerial - 0x3fff09c8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09c8 SerialBridgeSerial - .bss.domoticz_update_timer - 0x3fff09cc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09cc domoticz_update_timer - .bss.domoticz_subscribe - 0x3fff09d0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09d0 domoticz_subscribe - *fill* 0x3fff09d1 0x3 + 0x3fff0704 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0704 SerialBridgeSerial .bss.sonoff_bridge_last_learn_time - 0x3fff09d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09d4 sonoff_bridge_last_learn_time + 0x3fff0708 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0708 sonoff_bridge_last_learn_time .bss.sonoff_bridge_last_time - 0x3fff09d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09d8 sonoff_bridge_last_time + 0x3fff070c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff070c sonoff_bridge_last_time .bss.sonoff_bridge_last_send_code - 0x3fff09dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09dc sonoff_bridge_last_send_code + 0x3fff0710 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0710 sonoff_bridge_last_send_code .bss.sonoff_bridge_last_received_id - 0x3fff09e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e0 sonoff_bridge_last_received_id + 0x3fff0714 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0714 sonoff_bridge_last_received_id .bss.sonoff_bridge_expected_bytes - 0x3fff09e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e4 sonoff_bridge_expected_bytes + 0x3fff0718 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0718 sonoff_bridge_expected_bytes .bss.sonoff_bridge_learn_active - 0x3fff09e5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e5 sonoff_bridge_learn_active + 0x3fff0719 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0719 sonoff_bridge_learn_active .bss.sonoff_bridge_receive_raw_flag - 0x3fff09e6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e6 sonoff_bridge_receive_raw_flag + 0x3fff071a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff071a sonoff_bridge_receive_raw_flag .bss.sonoff_bridge_receive_flag - 0x3fff09e7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e7 sonoff_bridge_receive_flag - .bss.ir_lasttime - 0x3fff09e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09e8 ir_lasttime - .bss.irrecv 0x3fff09ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09ec irrecv - .bss.irsend 0x3fff09f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09f0 irsend + 0x3fff071b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff071b sonoff_bridge_receive_flag .bss.light_brightness - 0x3fff09f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09f4 light_brightness + 0x3fff071c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff071c light_brightness .bss.light_saturation - 0x3fff09f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09f8 light_saturation + 0x3fff0720 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0720 light_saturation .bss.light_hue - 0x3fff09fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff09fc light_hue + 0x3fff0724 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0724 light_hue .bss.light_pdcki_pin - 0x3fff0a00 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a00 light_pdcki_pin + 0x3fff0728 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0728 light_pdcki_pin .bss.light_pdi_pin - 0x3fff0a01 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a01 light_pdi_pin - .bss.arilux_rf_toggle - 0x3fff0a02 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a02 arilux_rf_toggle - *fill* 0x3fff0a03 0x1 - .bss.arilux_rf_repeat_count - 0x3fff0a04 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a04 arilux_rf_repeat_count - .bss.arilux_rf_change_count - 0x3fff0a08 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a08 arilux_rf_change_count - .bss.arilux_rf_lasttime - 0x3fff0a0c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a0c arilux_rf_lasttime - .bss.arilux_rf_last_time - 0x3fff0a10 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a10 arilux_rf_last_time - .bss.arilux_rf_last_received_value - 0x3fff0a14 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a14 arilux_rf_last_received_value - .bss.arilux_rf_received_value - 0x3fff0a18 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a18 arilux_rf_received_value - .bss.arilux_rf_timings - 0x3fff0a1c 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0a1c arilux_rf_timings + 0x3fff0729 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0729 light_pdi_pin + *fill* 0x3fff072a 0x2 .bss.strip_timer_counter - 0x3fff0ae8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0ae8 strip_timer_counter + 0x3fff072c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff072c strip_timer_counter .bss.light_wakeup_counter - 0x3fff0aec 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0aec light_wakeup_counter + 0x3fff0730 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0730 light_wakeup_counter .bss.light_wakeup_dimmer - 0x3fff0aee 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0aee light_wakeup_dimmer + 0x3fff0732 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0732 light_wakeup_dimmer .bss.light_wakeup_active - 0x3fff0aef 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0aef light_wakeup_active + 0x3fff0733 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0733 light_wakeup_active .bss.light_power - 0x3fff0af0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0af0 light_power + 0x3fff0734 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0734 light_power .bss.light_device - 0x3fff0af1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0af1 light_device + 0x3fff0735 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0735 light_device .bss.light_subtype - 0x3fff0af2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0af2 light_subtype + 0x3fff0736 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0736 light_subtype .bss.light_wheel - 0x3fff0af3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0af3 light_wheel + 0x3fff0737 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0737 light_wheel .bss.light_signal_color - 0x3fff0af4 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0af4 light_signal_color - *fill* 0x3fff0af9 0x3 + 0x3fff0738 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0738 light_signal_color + *fill* 0x3fff073d 0x3 .bss.light_last_color - 0x3fff0afc 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0afc light_last_color - *fill* 0x3fff0b01 0x3 + 0x3fff0740 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0740 light_last_color + *fill* 0x3fff0745 0x3 .bss.light_new_color - 0x3fff0b04 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b04 light_new_color - *fill* 0x3fff0b09 0x3 + 0x3fff0748 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0748 light_new_color + *fill* 0x3fff074d 0x3 .bss.light_current_color - 0x3fff0b0c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b0c light_current_color - *fill* 0x3fff0b11 0x3 + 0x3fff0750 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0750 light_current_color + *fill* 0x3fff0755 0x3 .bss.light_entry_color - 0x3fff0b14 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b14 light_entry_color - *fill* 0x3fff0b19 0x3 + 0x3fff0758 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0758 light_entry_color + *fill* 0x3fff075d 0x3 .bss.energy_command_code - 0x3fff0b1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b1c energy_command_code + 0x3fff0760 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0760 energy_command_code .bss.ticker_energy - 0x3fff0b20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b20 ticker_energy + 0x3fff0764 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0764 ticker_energy .bss.energy_fifth_second - 0x3fff0b24 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b24 energy_fifth_second - *fill* 0x3fff0b25 0x1 + 0x3fff0768 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0768 energy_fifth_second + *fill* 0x3fff0769 0x1 .bss.energy_mplw_counter - 0x3fff0b26 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b26 energy_mplw_counter + 0x3fff076a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff076a energy_mplw_counter .bss.energy_mplh_counter - 0x3fff0b28 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b28 energy_mplh_counter + 0x3fff076c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff076c energy_mplh_counter .bss.energy_mplr_counter - 0x3fff0b2a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2a energy_mplr_counter + 0x3fff076e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff076e energy_mplr_counter .bss.energy_max_energy_state - 0x3fff0b2b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2b energy_max_energy_state + 0x3fff076f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff076f energy_max_energy_state .bss.energy_max_current_flag - 0x3fff0b2c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2c energy_max_current_flag + 0x3fff0770 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0770 energy_max_current_flag .bss.energy_min_current_flag - 0x3fff0b2d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2d energy_min_current_flag + 0x3fff0771 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0771 energy_min_current_flag .bss.energy_max_voltage_flag - 0x3fff0b2e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2e energy_max_voltage_flag + 0x3fff0772 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0772 energy_max_voltage_flag .bss.energy_min_voltage_flag - 0x3fff0b2f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b2f energy_min_voltage_flag + 0x3fff0773 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0773 energy_min_voltage_flag .bss.energy_max_power_flag - 0x3fff0b30 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b30 energy_max_power_flag + 0x3fff0774 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0774 energy_max_power_flag .bss.energy_min_power_flag - 0x3fff0b31 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b31 energy_min_power_flag + 0x3fff0775 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0775 energy_min_power_flag .bss.energy_type_dc - 0x3fff0b32 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b32 energy_type_dc + 0x3fff0776 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0776 energy_type_dc .bss.energy_power_delta - 0x3fff0b33 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b33 energy_power_delta + 0x3fff0777 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0777 energy_power_delta .bss.energy_power_last - 0x3fff0b34 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b34 energy_power_last + 0x3fff0778 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0778 energy_power_last .bss.energy_period - 0x3fff0b40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b40 energy_period + 0x3fff0784 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0784 energy_period .bss.energy_kWhtoday - 0x3fff0b44 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b44 energy_kWhtoday + 0x3fff0788 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0788 energy_kWhtoday .bss.energy_kWhtoday_delta - 0x3fff0b48 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b48 energy_kWhtoday_delta + 0x3fff078c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff078c energy_kWhtoday_delta .bss.energy_total - 0x3fff0b4c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b4c energy_total + 0x3fff0790 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0790 energy_total .bss.energy_daily - 0x3fff0b50 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b50 energy_daily + 0x3fff0794 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0794 energy_daily .bss.energy_start - 0x3fff0b54 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b54 energy_start + 0x3fff0798 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0798 energy_start .bss.energy_active_power - 0x3fff0b58 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b58 energy_active_power + 0x3fff079c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff079c energy_active_power .bss.energy_current - 0x3fff0b5c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b5c energy_current + 0x3fff07a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff07a0 energy_current .bss.energy_voltage - 0x3fff0b60 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b60 energy_voltage + 0x3fff07a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff07a4 energy_voltage .bss.MqttClient - 0x3fff0b64 0x430 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0b64 MqttClient + 0x3fff07a8 0x430 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff07a8 MqttClient .bss.mqtt_connected - 0x3fff0f94 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f94 mqtt_connected + 0x3fff0bd8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bd8 mqtt_connected .bss.config_block_count - 0x3fff0f95 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f95 config_block_count + 0x3fff0bd9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bd9 config_block_count .bss.upload_progress_dot_count - 0x3fff0f96 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f96 upload_progress_dot_count + 0x3fff0bda 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bda upload_progress_dot_count .bss.upload_file_type - 0x3fff0f97 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f97 upload_file_type + 0x3fff0bdb 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bdb upload_file_type .bss.upload_error - 0x3fff0f98 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f98 upload_error + 0x3fff0bdc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bdc upload_error .bss.webserver_state - 0x3fff0f99 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f99 webserver_state - *fill* 0x3fff0f9a 0x2 + 0x3fff0bdd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bdd webserver_state + *fill* 0x3fff0bde 0x2 .bss.WebServer - 0x3fff0f9c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0f9c WebServer + 0x3fff0be0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0be0 WebServer .bss.DnsServer - 0x3fff0fa0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fa0 DnsServer + 0x3fff0be4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0be4 DnsServer .bss.efm8bb1_update - 0x3fff0fa4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fa4 efm8bb1_update + 0x3fff0be8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0be8 efm8bb1_update .bss.ntp_sync_minute - 0x3fff0fa8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fa8 ntp_sync_minute + 0x3fff0bec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bec ntp_sync_minute .bss.midnight_now - 0x3fff0fa9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fa9 midnight_now - *fill* 0x3fff0faa 0x2 + 0x3fff0bed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bed midnight_now + *fill* 0x3fff0bee 0x2 .bss.time_timezone - 0x3fff0fac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fac time_timezone + 0x3fff0bf0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bf0 time_timezone .bss.restart_time - 0x3fff0fb0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fb0 restart_time - .bss.ntp_time 0x3fff0fb4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fb4 ntp_time + 0x3fff0bf4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bf4 restart_time + .bss.ntp_time 0x3fff0bf8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bf8 ntp_time .bss.standard_time - 0x3fff0fb8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fb8 standard_time + 0x3fff0bfc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0bfc standard_time .bss.daylight_saving_time - 0x3fff0fbc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fbc daylight_saving_time + 0x3fff0c00 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c00 daylight_saving_time .bss.local_time - 0x3fff0fc0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fc0 local_time - .bss.utc_time 0x3fff0fc4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fc4 utc_time + 0x3fff0c04 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c04 local_time + .bss.utc_time 0x3fff0c08 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c08 utc_time .bss.TickerRtc - 0x3fff0fc8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fc8 TickerRtc + 0x3fff0c0c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c0c TickerRtc .bss.i2c_buffer - 0x3fff0fcc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fcc i2c_buffer + 0x3fff0c10 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c10 i2c_buffer .bss.wifi_config_counter - 0x3fff0fd0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd0 wifi_config_counter + 0x3fff0c14 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c14 wifi_config_counter .bss.wifi_config_type - 0x3fff0fd1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd1 wifi_config_type + 0x3fff0c15 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c15 wifi_config_type .bss.wifi_status - 0x3fff0fd2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd2 wifi_status + 0x3fff0c16 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c16 wifi_status .bss.wifi_retry - 0x3fff0fd3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd3 wifi_retry + 0x3fff0c17 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c17 wifi_retry .bss.wifi_retry_init - 0x3fff0fd4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd4 wifi_retry_init + 0x3fff0c18 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c18 wifi_retry_init .bss.wifi_counter - 0x3fff0fd5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd5 wifi_counter + 0x3fff0c19 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c19 wifi_counter .bss.oswatch_blocked_loop - 0x3fff0fd6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fd6 oswatch_blocked_loop - *fill* 0x3fff0fd7 0x1 + 0x3fff0c1a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c1a oswatch_blocked_loop + *fill* 0x3fff0c1b 0x1 .bss._ZL22oswatch_last_loop_time - 0x3fff0fd8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o .bss.tickerOSWatch - 0x3fff0fdc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fdc tickerOSWatch + 0x3fff0c20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c20 tickerOSWatch .bss.syslog_host_hash - 0x3fff0fe0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fe0 syslog_host_hash + 0x3fff0c24 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c24 syslog_host_hash .bss.syslog_host_addr - 0x3fff0fe4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fe4 syslog_host_addr + 0x3fff0c28 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c28 syslog_host_addr .bss.settings_buffer - 0x3fff0fec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0fec settings_buffer + 0x3fff0c30 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c30 settings_buffer .bss.settings_location - 0x3fff0ff0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0ff0 settings_location + 0x3fff0c34 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c34 settings_location .bss.settings_crc - 0x3fff0ff4 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0ff4 settings_crc - *fill* 0x3fff0ff6 0x2 + 0x3fff0c38 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c38 settings_crc + *fill* 0x3fff0c3a 0x2 .bss.rtc_reboot_crc - 0x3fff0ff8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0ff8 rtc_reboot_crc + 0x3fff0c3c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c3c rtc_reboot_crc .bss.rtc_settings_crc - 0x3fff0ffc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0ffc rtc_settings_crc - .bss.backlog 0x3fff1000 0x168 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff1000 backlog - .bss.web_log 0x3fff1168 0xfa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff1168 web_log - .bss.log_data 0x3fff2108 0x200 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2108 log_data + 0x3fff0c40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c40 rtc_settings_crc + .bss.backlog 0x3fff0c44 0x168 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0c44 backlog + .bss.web_log 0x3fff0dac 0xfa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff0dac web_log + .bss.log_data 0x3fff1d4c 0x200 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff1d4c log_data .bss.mqtt_data - 0x3fff2308 0x37d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2308 mqtt_data - *fill* 0x3fff2685 0x3 + 0x3fff1f4c 0x37d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff1f4c mqtt_data + *fill* 0x3fff22c9 0x3 .bss.serial_in_buffer - 0x3fff2688 0x208 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2688 serial_in_buffer + 0x3fff22cc 0x208 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff22cc serial_in_buffer .bss.mqtt_topic - 0x3fff2890 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2890 mqtt_topic - *fill* 0x3fff28b1 0x3 + 0x3fff24d4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff24d4 mqtt_topic + *fill* 0x3fff24f5 0x3 .bss.mqtt_client - 0x3fff28b4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff28b4 mqtt_client - *fill* 0x3fff28d5 0x3 + 0x3fff24f8 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff24f8 mqtt_client + *fill* 0x3fff2519 0x3 .bss.my_hostname - 0x3fff28d8 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff28d8 my_hostname - *fill* 0x3fff28f9 0x3 + 0x3fff251c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff251c my_hostname + *fill* 0x3fff253d 0x3 .bss.my_version - 0x3fff28fc 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff28fc my_version - *fill* 0x3fff291d 0x3 + 0x3fff2540 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2540 my_version + *fill* 0x3fff2561 0x3 .bss.global_state - 0x3fff2920 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2920 global_state - *fill* 0x3fff2921 0x3 + 0x3fff2564 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2564 global_state + *fill* 0x3fff2565 0x3 .bss.my_module - 0x3fff2924 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2924 my_module + 0x3fff2568 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2568 my_module .bss.mdns_begun - 0x3fff2945 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2945 mdns_begun + 0x3fff2589 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2589 mdns_begun .bss.pwm_present - 0x3fff2946 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2946 pwm_present + 0x3fff258a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258a pwm_present .bss.mdns_delayed_start - 0x3fff2947 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2947 mdns_delayed_start + 0x3fff258b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258b mdns_delayed_start .bss.syslog_level - 0x3fff2948 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2948 syslog_level + 0x3fff258c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258c syslog_level .bss.seriallog_level - 0x3fff2949 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2949 seriallog_level + 0x3fff258d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258d seriallog_level .bss.devices_present - 0x3fff294a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294a devices_present + 0x3fff258e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258e devices_present .bss.reset_web_log_flag - 0x3fff294b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294b reset_web_log_flag + 0x3fff258f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff258f reset_web_log_flag .bss.dual_hex_code - 0x3fff294c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294c dual_hex_code + 0x3fff2590 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2590 dual_hex_code .bss.serial_in_byte - 0x3fff294d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294d serial_in_byte + 0x3fff2591 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2591 serial_in_byte .bss.ntp_force_sync - 0x3fff294e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294e ntp_force_sync + 0x3fff2592 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2592 ntp_force_sync .bss.light_type - 0x3fff294f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff294f light_type - .bss.i2c_flg 0x3fff2950 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2950 i2c_flg + 0x3fff2593 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2593 light_type + .bss.i2c_flg 0x3fff2594 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2594 i2c_flg .bss.energy_flg - 0x3fff2951 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2951 energy_flg - .bss.dht_flg 0x3fff2952 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2952 dht_flg + 0x3fff2595 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2595 energy_flg + .bss.dht_flg 0x3fff2596 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2596 dht_flg .bss.counter_no_pullup - 0x3fff2953 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2953 counter_no_pullup + 0x3fff2597 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2597 counter_no_pullup .bss.pwm_inverted - 0x3fff2954 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2954 pwm_inverted + 0x3fff2598 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2598 pwm_inverted .bss.led_inverted - 0x3fff2955 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2955 led_inverted - *fill* 0x3fff2956 0x2 - .bss.pin 0x3fff2958 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2958 pin + 0x3fff2599 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2599 led_inverted + *fill* 0x3fff259a 0x2 + .bss.pin 0x3fff259c 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff259c pin .bss.virtualswitch - 0x3fff29d4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29d4 virtualswitch + 0x3fff2618 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2618 virtualswitch .bss.holdwallswitch - 0x3fff29dc 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29dc holdwallswitch + 0x3fff2620 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2620 holdwallswitch .bss.lastwallswitch - 0x3fff29e4 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29e4 lastwallswitch + 0x3fff2628 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2628 lastwallswitch .bss.multipress - 0x3fff29ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29ec multipress + 0x3fff2630 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2630 multipress .bss.multiwindow - 0x3fff29f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f0 multiwindow + 0x3fff2634 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2634 multiwindow .bss.blinkstate - 0x3fff29f4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f4 blinkstate + 0x3fff2638 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2638 blinkstate .bss.stop_flash_rotate - 0x3fff29f5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f5 stop_flash_rotate - .bss.sleep 0x3fff29f6 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f6 sleep + 0x3fff2639 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2639 stop_flash_rotate + .bss.sleep 0x3fff263a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263a sleep .bss.interlock_mutex - 0x3fff29f7 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f7 interlock_mutex + 0x3fff263b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263b interlock_mutex .bss.backlog_mutex - 0x3fff29f8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f8 backlog_mutex + 0x3fff263c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263c backlog_mutex .bss.backlog_pointer - 0x3fff29f9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29f9 backlog_pointer + 0x3fff263d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263d backlog_pointer .bss.backlog_index - 0x3fff29fa 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29fa backlog_index + 0x3fff263e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263e backlog_index .bss.latching_relay_pulse - 0x3fff29fb 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29fb latching_relay_pulse + 0x3fff263f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff263f latching_relay_pulse .bss.state_250mS - 0x3fff29fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29fc state_250mS + 0x3fff2640 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2640 state_250mS .bss.fallback_topic_flag - 0x3fff29fd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29fd fallback_topic_flag + 0x3fff2641 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2641 fallback_topic_flag .bss.serial_local - 0x3fff29fe 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff29fe serial_local - *fill* 0x3fff29ff 0x1 + 0x3fff2642 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2642 serial_local + *fill* 0x3fff2643 0x1 .bss.rules_flag - 0x3fff2a00 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a00 rules_flag + 0x3fff2644 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2644 rules_flag .bss.save_data_counter - 0x3fff2a02 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a02 save_data_counter + 0x3fff2646 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2646 save_data_counter .bss.switch_no_pullup - 0x3fff2a04 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a04 switch_no_pullup - *fill* 0x3fff2a06 0x2 + 0x3fff2648 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2648 switch_no_pullup + *fill* 0x3fff264a 0x2 .bss.holdbutton - 0x3fff2a08 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a08 holdbutton + 0x3fff264c 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff264c holdbutton .bss.syslog_timer - 0x3fff2a10 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a10 syslog_timer + 0x3fff2654 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2654 syslog_timer .bss.seriallog_timer - 0x3fff2a12 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a12 seriallog_timer + 0x3fff2656 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2656 seriallog_timer .bss.blink_counter - 0x3fff2a14 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a14 blink_counter + 0x3fff2658 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2658 blink_counter .bss.mqtt_cmnd_publish - 0x3fff2a16 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a16 mqtt_cmnd_publish + 0x3fff265a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff265a mqtt_cmnd_publish .bss.dual_button_code - 0x3fff2a18 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a18 dual_button_code - *fill* 0x3fff2a1a 0x2 - .bss.ota_url 0x3fff2a1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a1c ota_url + 0x3fff265c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff265c dual_button_code + *fill* 0x3fff265e 0x2 + .bss.ota_url 0x3fff2660 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2660 ota_url .bss.global_humidity - 0x3fff2a20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a20 global_humidity + 0x3fff2664 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2664 global_humidity .bss.global_temperature - 0x3fff2a24 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a24 global_temperature + 0x3fff2668 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2668 global_temperature .bss.global_update - 0x3fff2a28 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a28 global_update - .bss.uptime 0x3fff2a2c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a2c uptime + 0x3fff266c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff266c global_update + .bss.uptime 0x3fff2670 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2670 uptime .bss.wifi_state_flag - 0x3fff2a30 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a30 wifi_state_flag + 0x3fff2674 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2674 wifi_state_flag .bss.restart_flag - 0x3fff2a34 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a34 restart_flag + 0x3fff2678 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2678 restart_flag .bss.ota_result - 0x3fff2a38 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a38 ota_result + 0x3fff267c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff267c ota_result .bss.ota_state_flag - 0x3fff2a3c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a3c ota_state_flag + 0x3fff2680 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2680 ota_state_flag .bss.serial_in_byte_counter - 0x3fff2a40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a40 serial_in_byte_counter + 0x3fff2684 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2684 serial_in_byte_counter .bss.rel_inverted - 0x3fff2a44 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a44 rel_inverted + 0x3fff2688 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2688 rel_inverted .bss.latching_power - 0x3fff2a48 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a48 latching_power + 0x3fff268c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff268c latching_power .bss.blink_powersave - 0x3fff2a4c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a4c blink_powersave + 0x3fff2690 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2690 blink_powersave .bss.blink_mask - 0x3fff2a50 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a50 blink_mask + 0x3fff2694 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2694 blink_mask .bss.blink_power - 0x3fff2a54 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a54 blink_power - .bss.power 0x3fff2a58 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a58 power + 0x3fff2698 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2698 blink_power + .bss.power 0x3fff269c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff269c power .bss.switch_debounce - 0x3fff2a5c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a5c switch_debounce + 0x3fff26a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26a0 switch_debounce .bss.button_debounce - 0x3fff2a60 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a60 button_debounce + 0x3fff26a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26a4 button_debounce .bss.backlog_delay - 0x3fff2a64 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a64 backlog_delay + 0x3fff26a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26a8 backlog_delay .bss.blink_timer - 0x3fff2a68 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a68 blink_timer + 0x3fff26ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26ac blink_timer .bss.pulse_timer - 0x3fff2a6c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a6c pulse_timer + 0x3fff26b0 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26b0 pulse_timer .bss.state_250msecond - 0x3fff2a8c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a8c state_250msecond + 0x3fff26d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26d0 state_250msecond .bss.state_100msecond - 0x3fff2a90 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a90 state_100msecond + 0x3fff26d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26d4 state_100msecond .bss.state_50msecond - 0x3fff2a94 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a94 state_50msecond + 0x3fff26d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26d8 state_50msecond .bss.serial_polling_window - 0x3fff2a98 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a98 serial_polling_window + 0x3fff26dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26dc serial_polling_window .bss.feature_sns2 - 0x3fff2a9c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2a9c feature_sns2 + 0x3fff26e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26e0 feature_sns2 .bss.feature_sns1 - 0x3fff2aa0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2aa0 feature_sns1 + 0x3fff26e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26e4 feature_sns1 .bss.feature_drv2 - 0x3fff2aa4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2aa4 feature_drv2 + 0x3fff26e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26e8 feature_drv2 .bss.feature_drv1 - 0x3fff2aa8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2aa8 feature_drv1 - .bss.PortUdp 0x3fff2aac 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2aac PortUdp + 0x3fff26ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26ec feature_drv1 + .bss.PortUdp 0x3fff26f0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff26f0 PortUdp .bss.EspClient - 0x3fff2ac4 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2ac4 EspClient + 0x3fff2708 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2708 EspClient .bss.XdrvMailbox - 0x3fff2adc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2adc XdrvMailbox - .bss.RtcTime 0x3fff2af0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2af0 RtcTime + 0x3fff2720 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2720 XdrvMailbox + .bss.RtcTime 0x3fff2734 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff2734 RtcTime .bss.RtcSettings - 0x3fff2b08 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2b08 RtcSettings + 0x3fff274c 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff274c RtcSettings .bss.RtcReboot - 0x3fff2b64 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2b64 RtcReboot - .bss.Settings 0x3fff2b68 0xe00 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2b68 Settings + 0x3fff27a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff27a8 RtcReboot + .bss.Settings 0x3fff27ac 0xe00 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff27ac Settings + *fill* 0x3fff35ac 0x4 .bss._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x3fff3968 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff3968 guard variable for ArduinoJson::JsonObject::invalid()::instance + 0x3fff35b0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff35b0 guard variable for ArduinoJson::JsonObject::invalid()::instance .bss._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x3fff3970 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff3970 guard variable for ArduinoJson::JsonArray::invalid()::instance - .bss._ZZL9gpio_intrvE5start - 0x3fff3978 0x4 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .bss.irparams 0x3fff397c 0x10 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x3fff397c irparams - .bss._ZL5timer - 0x3fff398c 0x14 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .bss.WiFi 0x3fff39a0 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - 0x3fff39a0 WiFi - *fill* 0x3fff39a1 0x3 + 0x3fff35b8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x3fff35b8 guard variable for ArduinoJson::JsonArray::invalid()::instance + .bss.Wire 0x3fff35c0 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35c0 Wire + .bss._ZN7TwoWire12transmittingE + 0x3fff35d0 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35d0 TwoWire::transmitting + .bss._ZN7TwoWire14txBufferLengthE + 0x3fff35d1 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35d1 TwoWire::txBufferLength + .bss._ZN7TwoWire13txBufferIndexE + 0x3fff35d2 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35d2 TwoWire::txBufferIndex + *fill* 0x3fff35d3 0x1 + .bss._ZN7TwoWire8txBufferE + 0x3fff35d4 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35d4 TwoWire::txBuffer + .bss._ZN7TwoWire9txAddressE + 0x3fff35f4 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35f4 TwoWire::txAddress + .bss._ZN7TwoWire14rxBufferLengthE + 0x3fff35f5 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35f5 TwoWire::rxBufferLength + .bss._ZN7TwoWire13rxBufferIndexE + 0x3fff35f6 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35f6 TwoWire::rxBufferIndex + *fill* 0x3fff35f7 0x1 + .bss._ZN7TwoWire8rxBufferE + 0x3fff35f8 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3fff35f8 TwoWire::rxBuffer + .bss.WiFi 0x3fff3618 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x3fff3618 WiFi + *fill* 0x3fff3619 0x3 .bss._ZL12sCbEventList - 0x3fff39a4 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x3fff361c 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .bss._ZN19ESP8266WiFiSTAClass12_useStaticIpE - 0x3fff39ac 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x3fff39ac ESP8266WiFiSTAClass::_useStaticIp - *fill* 0x3fff39ad 0x3 + 0x3fff3624 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x3fff3624 ESP8266WiFiSTAClass::_useStaticIp + *fill* 0x3fff3625 0x3 .bss._ZN20ESP8266WiFiScanClass11_scanResultE - 0x3fff39b0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff39b0 ESP8266WiFiScanClass::_scanResult + 0x3fff3628 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3628 ESP8266WiFiScanClass::_scanResult .bss._ZN20ESP8266WiFiScanClass10_scanCountE - 0x3fff39b4 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff39b4 ESP8266WiFiScanClass::_scanCount + 0x3fff362c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff362c ESP8266WiFiScanClass::_scanCount .bss._ZN20ESP8266WiFiScanClass13_scanCompleteE - 0x3fff39b8 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff39b8 ESP8266WiFiScanClass::_scanComplete + 0x3fff3630 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3630 ESP8266WiFiScanClass::_scanComplete .bss._ZN20ESP8266WiFiScanClass12_scanStartedE - 0x3fff39b9 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff39b9 ESP8266WiFiScanClass::_scanStarted + 0x3fff3631 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3631 ESP8266WiFiScanClass::_scanStarted .bss._ZN20ESP8266WiFiScanClass10_scanAsyncE - 0x3fff39ba 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff39ba ESP8266WiFiScanClass::_scanAsync - *fill* 0x3fff39bb 0x1 + 0x3fff3632 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x3fff3632 ESP8266WiFiScanClass::_scanAsync + *fill* 0x3fff3633 0x1 .bss._ZN5SListI10WiFiClientE8_s_firstE - 0x3fff39bc 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff39bc SList::_s_first + 0x3fff3634 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff3634 SList::_s_first .bss._ZN10WiFiClient10_localPortE - 0x3fff39c0 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff39c0 WiFiClient::_localPort - *fill* 0x3fff39c2 0x2 + 0x3fff3638 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x3fff3638 WiFiClient::_localPort + *fill* 0x3fff363a 0x2 .bss._ZN5SListI7WiFiUDPE8_s_firstE - 0x3fff39c4 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3fff39c4 SList::_s_first - .bss.Wire 0x3fff39c8 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39c8 Wire - .bss._ZN7TwoWire12transmittingE - 0x3fff39d8 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d8 TwoWire::transmitting - .bss._ZN7TwoWire14txBufferLengthE - 0x3fff39d9 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39d9 TwoWire::txBufferLength - .bss._ZN7TwoWire13txBufferIndexE - 0x3fff39da 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39da TwoWire::txBufferIndex - *fill* 0x3fff39db 0x1 - .bss._ZN7TwoWire8txBufferE - 0x3fff39dc 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39dc TwoWire::txBuffer - .bss._ZN7TwoWire9txAddressE - 0x3fff39fc 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39fc TwoWire::txAddress - .bss._ZN7TwoWire14rxBufferLengthE - 0x3fff39fd 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39fd TwoWire::rxBufferLength - .bss._ZN7TwoWire13rxBufferIndexE - 0x3fff39fe 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff39fe TwoWire::rxBufferIndex - *fill* 0x3fff39ff 0x1 - .bss._ZN7TwoWire8rxBufferE - 0x3fff3a00 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff3a00 TwoWire::rxBuffer - .bss.MDNS 0x3fff3a20 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x3fff3a20 MDNS + 0x3fff363c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x3fff363c SList::_s_first + .bss.MDNS 0x3fff3640 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3fff3640 MDNS .bss._ZL19MDNS_MULTICAST_ADDR - 0x3fff3a5c 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x3fff367c 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .bss._ZZN8RCSwitch15handleInterruptEvE11changeCount - 0x3fff3a64 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3684 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .bss._ZZN8RCSwitch15handleInterruptEvE11repeatCount - 0x3fff3a68 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3688 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .bss._ZZN8RCSwitch15handleInterruptEvE8lastTime - 0x3fff3a6c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff368c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .bss._ZN8RCSwitch7timingsE - 0x3fff3a70 0x10c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3a70 RCSwitch::timings + 0x3fff3690 0x10c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff3690 RCSwitch::timings .bss._ZN8RCSwitch17nReceivedProtocolE - 0x3fff3b7c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3b7c RCSwitch::nReceivedProtocol + 0x3fff379c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff379c RCSwitch::nReceivedProtocol .bss._ZN8RCSwitch14nReceivedDelayE - 0x3fff3b80 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3b80 RCSwitch::nReceivedDelay + 0x3fff37a0 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff37a0 RCSwitch::nReceivedDelay .bss._ZN8RCSwitch18nReceivedBitlengthE - 0x3fff3b84 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3b84 RCSwitch::nReceivedBitlength + 0x3fff37a4 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff37a4 RCSwitch::nReceivedBitlength .bss._ZN8RCSwitch14nReceivedValueE - 0x3fff3b88 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3b88 RCSwitch::nReceivedValue + 0x3fff37a8 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x3fff37a8 RCSwitch::nReceivedValue .bss.ESPhttpUpdate - 0x3fff3b8c 0x8 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x3fff3b8c ESPhttpUpdate + 0x3fff37ac 0x8 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x3fff37ac ESPhttpUpdate .bss.tms_obj_list - 0x3fff3b94 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x3fff3b94 tms_obj_list + 0x3fff37b4 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x3fff37b4 tms_obj_list .bss._ZZN8EspClass13getSketchSizeEvE6result - 0x3fff3bd4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .bss.ESP 0x3fff3bd8 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x3fff3bd8 ESP - *fill* 0x3fff3bd9 0x3 - .bss.Serial1 0x3fff3bdc 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3fff3bdc Serial1 - .bss.Serial 0x3fff3bf8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3fff3bf8 Serial + 0x3fff37f4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + .bss.ESP 0x3fff37f8 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x3fff37f8 ESP + *fill* 0x3fff37f9 0x3 + .bss.Serial1 0x3fff37fc 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3fff37fc Serial1 + .bss.Serial 0x3fff3818 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x3fff3818 Serial .bss.INADDR_NONE - 0x3fff3c14 0x8 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x3fff3c14 INADDR_NONE - .bss.Update 0x3fff3c1c 0x90 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x3fff3c1c Update + 0x3fff3834 0x8 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x3fff3834 INADDR_NONE + .bss.Update 0x3fff383c 0x90 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x3fff383c Update .bss._ZL18s_randomSeedCalled - 0x3fff3cac 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x3fff38cc 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) .bss._ZZL12loop_wrappervE10setup_done - 0x3fff3cad 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3fff3cae 0x2 + 0x3fff38cd 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3fff38ce 0x2 .bss._ZL22g_micros_at_task_start - 0x3fff3cb0 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3fff38d0 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) .bss._ZL12g_loop_queue - 0x3fff3cb4 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3fff3cbc 0x4 - .bss.g_cont 0x3fff3cc0 0x1028 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x3fff3cc0 g_cont + 0x3fff38d4 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + *fill* 0x3fff38dc 0x4 + .bss.g_cont 0x3fff38e0 0x1028 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3fff38e0 g_cont .bss.resetInfo - 0x3fff4ce8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x3fff4ce8 resetInfo + 0x3fff4908 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x3fff4908 resetInfo .bss.s_abort_called - 0x3fff4d04 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - *fill* 0x3fff4d05 0x3 + 0x3fff4924 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + *fill* 0x3fff4925 0x3 .bss.s_panic_func - 0x3fff4d08 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x3fff4928 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) .bss.s_panic_line - 0x3fff4d0c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x3fff492c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) .bss.s_panic_file - 0x3fff4d10 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x3fff4930 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) .bss.twi_clockStretchLimit - 0x3fff4d14 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .bss.twi_scl 0x3fff4d18 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .bss.twi_sda 0x3fff4d19 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - *fill* 0x3fff4d1a 0x2 + 0x3fff4934 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .bss.twi_scl 0x3fff4938 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + .bss.twi_sda 0x3fff4939 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + *fill* 0x3fff493a 0x2 .bss.micros_overflow_count - 0x3fff4d1c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x3fff493c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .bss.micros_at_last_overflow_tick - 0x3fff4d20 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x3fff4940 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .bss.micros_overflow_timer - 0x3fff4d24 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x3fff4944 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .bss.delay_timer - 0x3fff4d38 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x3fff4958 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) .bss.last$4361 - 0x3fff4d4c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x3fff496c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) .bss.errno_var - 0x3fff4d50 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x3fff4970 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) .bss.s_uart_debug_nr - 0x3fff4d54 0x4 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x3fff4974 0x4 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) .bss.umm_numblocks - 0x3fff4d58 0x2 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff4d58 umm_numblocks - *fill* 0x3fff4d5a 0x2 - .bss.umm_heap 0x3fff4d5c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff4d5c umm_heap + 0x3fff4978 0x2 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff4978 umm_numblocks + *fill* 0x3fff497a 0x2 + .bss.umm_heap 0x3fff497c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff497c umm_heap .bss._ZL11sLastUnused - 0x3fff4d60 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x3fff4980 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) .bss._ZL12sFirstUnused - 0x3fff4d64 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x3fff4984 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) .bss._ZL5sLast - 0x3fff4d68 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x3fff4988 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) .bss._ZL6sFirst - 0x3fff4d6c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss.renew 0x3fff4d70 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x3fff4d71 0x3 - .bss.plist 0x3fff4d74 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff498c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + .bss.renew 0x3fff4990 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x3fff4991 0x3 + .bss.plist 0x3fff4994 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.dhcps_lease - 0x3fff4d78 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff4998 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.client_address - 0x3fff4d84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff49a4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.server_address - 0x3fff4d88 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff49a8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.broadcast_dhcps - 0x3fff4d8c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff49ac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.pcb_dhcps - 0x3fff4d90 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x3fff49b0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .bss.randnum$3659 - 0x3fff4d94 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff49b4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) .bss.pserver_list - 0x3fff4d98 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff4d98 pserver_list + 0x3fff49b8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff49b8 pserver_list .bss.plink_active - 0x3fff4d9c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff4d9c plink_active + 0x3fff49bc 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff49bc plink_active .bss.dns_random - 0x3fff4da0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - *fill* 0x3fff4da1 0x3 + 0x3fff49c0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + *fill* 0x3fff49c1 0x3 .bss.dns_payload - 0x3fff4da4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x3fff49c4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) .bss.dns_servers - 0x3fff4da8 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x3fff49c8 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) .bss.dns_table - 0x3fff4db0 0x460 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x3fff49d0 0x460 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) .bss.dns_seqno - 0x3fff5210 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - *fill* 0x3fff5211 0x3 - .bss.dns_pcb 0x3fff5214 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x3fff4e30 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + *fill* 0x3fff4e31 0x3 + .bss.dns_pcb 0x3fff4e34 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) .bss.netifnum$2695 - 0x3fff5218 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - *fill* 0x3fff5219 0x3 + 0x3fff4e38 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + *fill* 0x3fff4e39 0x3 .bss.sntp_timer - 0x3fff521c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff4e3c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .bss.realtime_stamp - 0x3fff5230 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3fff5230 realtime_stamp + 0x3fff4e50 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff4e50 realtime_stamp .bss.sntp_retry_timeout - 0x3fff5234 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff4e54 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .bss.sntp_current_server - 0x3fff5238 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - *fill* 0x3fff5239 0x3 + 0x3fff4e58 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + *fill* 0x3fff4e59 0x3 .bss.sntp_servers - 0x3fff523c 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss.sntp_pcb 0x3fff5254 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff4e5c 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + .bss.sntp_pcb 0x3fff4e74 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) .bss.tcp_timer - 0x3fff5258 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - *fill* 0x3fff5259 0x3 + 0x3fff4e78 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + *fill* 0x3fff4e79 0x3 .bss.tcpip_tcp_timer_active - 0x3fff525c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x3fff4e7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) .bss.timeouts_last_time - 0x3fff5260 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x3fff4e80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) .bss.next_timeout - 0x3fff5264 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x3fff4e84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) .bss.etharp_cached_entry - 0x3fff5268 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - *fill* 0x3fff5269 0x3 + 0x3fff4e88 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + *fill* 0x3fff4e89 0x3 .bss.arp_table - 0x3fff526c 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x3fff4e8c 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) .bss.allrouters - 0x3fff535c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + 0x3fff4f7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) .bss.allsystems - 0x3fff5360 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + 0x3fff4f80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) .bss.igmp_group_list - 0x3fff5364 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .bss.ip_id 0x3fff5368 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .bss.str$2146 0x3fff536a 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - *fill* 0x3fff537a 0x2 - .bss.raw_pcbs 0x3fff537c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + 0x3fff4f84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + .bss.ip_id 0x3fff4f88 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + .bss.str$2146 0x3fff4f8a 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + *fill* 0x3fff4f9a 0x2 + .bss.raw_pcbs 0x3fff4f9c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .bss.recv_data - 0x3fff5380 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x3fff4fa0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) .bss.recv_flags - 0x3fff5384 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3fff5385 0x1 - .bss.tcplen 0x3fff5386 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.flags 0x3fff5388 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3fff5389 0x3 - .bss.ackno 0x3fff538c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.seqno 0x3fff5390 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.iphdr 0x3fff5394 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.tcphdr 0x3fff5398 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.inseg 0x3fff539c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x3fff4fa4 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *fill* 0x3fff4fa5 0x1 + .bss.tcplen 0x3fff4fa6 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.flags 0x3fff4fa8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + *fill* 0x3fff4fa9 0x3 + .bss.ackno 0x3fff4fac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.seqno 0x3fff4fb0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.iphdr 0x3fff4fb4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.tcphdr 0x3fff4fb8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + .bss.inseg 0x3fff4fbc 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) *(.gnu.linkonce.b.*) *(COMMON) - COMMON 0x3fff53b0 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff53b0 ummHeapInfo - *fill* 0x3fff53be 0x2 - COMMON 0x3fff53c0 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff53c0 pktinfo - 0x3fff53e8 premot - COMMON 0x3fff549c 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - 0x3fff549c espconn_TaskQueue - COMMON 0x3fff5514 0x32 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - 0x3fff5514 dhcp_rx_options_val - 0x3fff553c dhcp_rx_options_given - *fill* 0x3fff5546 0x2 - COMMON 0x3fff5548 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - 0x3fff5548 netif_default - 0x3fff554c netif_list - COMMON 0x3fff5550 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3fff5550 __tznorth - 0x3fff5554 __tzyear - 0x3fff5558 res_buf - 0x3fff557c sntp__tzrule - 0x3fff55b4 reult - COMMON 0x3fff5618 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x3fff5618 tcp_tw_pcbs - 0x3fff561c tcp_ticks - 0x3fff5620 tcp_tmp_pcb - 0x3fff5624 tcp_listen_pcbs - 0x3fff5628 tcp_active_pcbs - 0x3fff562c tcp_bound_pcbs - COMMON 0x3fff5630 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - 0x3fff5630 udp_pcbs - COMMON 0x3fff5634 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - 0x3fff5634 current_iphdr_src - 0x3fff5638 current_netif - 0x3fff563c current_header - 0x3fff5640 current_iphdr_dest - COMMON 0x3fff5644 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - 0x3fff5644 tcp_input_pcb - 0x3fff5648 . = ALIGN (0x8) - 0x3fff5648 _bss_end = ABSOLUTE (.) - 0x3fff5648 _heap_start = ABSOLUTE (.) - -.irom0.text 0x40201010 0x70058 + COMMON 0x3fff4fd0 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x3fff4fd0 ummHeapInfo + *fill* 0x3fff4fde 0x2 + COMMON 0x3fff4fe0 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x3fff4fe0 pktinfo + 0x3fff5008 premot + COMMON 0x3fff50bc 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x3fff50bc espconn_TaskQueue + COMMON 0x3fff5134 0x32 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x3fff5134 dhcp_rx_options_val + 0x3fff515c dhcp_rx_options_given + *fill* 0x3fff5166 0x2 + COMMON 0x3fff5168 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + 0x3fff5168 netif_default + 0x3fff516c netif_list + COMMON 0x3fff5170 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x3fff5170 __tznorth + 0x3fff5174 __tzyear + 0x3fff5178 res_buf + 0x3fff519c sntp__tzrule + 0x3fff51d4 reult + COMMON 0x3fff5238 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x3fff5238 tcp_tw_pcbs + 0x3fff523c tcp_ticks + 0x3fff5240 tcp_tmp_pcb + 0x3fff5244 tcp_listen_pcbs + 0x3fff5248 tcp_active_pcbs + 0x3fff524c tcp_bound_pcbs + COMMON 0x3fff5250 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + 0x3fff5250 udp_pcbs + COMMON 0x3fff5254 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x3fff5254 current_iphdr_src + 0x3fff5258 current_netif + 0x3fff525c current_header + 0x3fff5260 current_iphdr_dest + COMMON 0x3fff5264 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x3fff5264 tcp_input_pcb + 0x3fff5268 . = ALIGN (0x8) + 0x3fff5268 _bss_end = ABSOLUTE (.) + 0x3fff5268 _heap_start = ABSOLUTE (.) + +.irom0.text 0x40201010 0x69188 0x40201010 _irom0_text_start = ABSOLUTE (.) *(.ver_number) *.pioenvs\\*\\lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - .text._ZN6IRrecvC2Etthb - 0x40201010 0x95 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0xb5 (size before relaxing) - 0x40201018 IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool) - 0x40201018 IRrecv::IRrecv(unsigned short, unsigned short, unsigned char, bool) - *fill* 0x402010a5 0x3 - .text._ZN6IRrecv6resumeEv - 0x402010a8 0x1b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x1f (size before relaxing) - 0x402010a8 IRrecv::resume() - *fill* 0x402010c3 0x1 - .text._ZN6IRrecv10enableIRInEv - 0x402010c4 0x5a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x62 (size before relaxing) - 0x402010dc IRrecv::enableIRIn() - *fill* 0x4020111e 0x2 - .text._ZN6IRrecv8ticksLowEjh - 0x40201120 0x8c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x90 (size before relaxing) - 0x40201144 IRrecv::ticksLow(unsigned int, unsigned char) - .text._ZN6IRrecv9ticksHighEjh - 0x402011ac 0x69 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x89 (size before relaxing) - 0x402011b4 IRrecv::ticksHigh(unsigned int, unsigned char) - *fill* 0x40201215 0x3 - .text._ZN6IRrecv5matchEjjh - 0x40201218 0x4d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x5d (size before relaxing) - 0x40201218 IRrecv::match(unsigned int, unsigned int, unsigned char) - *fill* 0x40201265 0x3 - .text._ZN6IRrecv12matchAtLeastEjjh - 0x40201268 0x4b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x53 (size before relaxing) - 0x40201268 IRrecv::matchAtLeast(unsigned int, unsigned int, unsigned char) - *fill* 0x402012b3 0x1 - .text._ZN6IRrecv9matchMarkEjjhs - 0x402012b4 0x1d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x21 (size before relaxing) - 0x402012b4 IRrecv::matchMark(unsigned int, unsigned int, unsigned char, short) - *fill* 0x402012d1 0x3 - .text._ZN6IRrecv10matchSpaceEjjhs - 0x402012d4 0x1b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x23 (size before relaxing) - 0x402012d4 IRrecv::matchSpace(unsigned int, unsigned int, unsigned char, short) - *fill* 0x402012ef 0x1 - .text._ZN6IRrecv7compareEtt - 0x402012f0 0x8d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0xa1 (size before relaxing) - 0x402012fc IRrecv::compare(unsigned short, unsigned short) - *fill* 0x4020137d 0x3 - .text._ZN6IRrecv10decodeHashEP14decode_results - 0x40201380 0x87 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x8f (size before relaxing) - 0x40201388 IRrecv::decodeHash(decode_results*) - *fill* 0x40201407 0x1 - .text._ZN6IRrecv6decodeEP14decode_resultsP10irparams_t - 0x40201408 0x13c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x198 (size before relaxing) - 0x4020140c IRrecv::decode(decode_results*, irparams_t*) - .text._ZN6IRrecv9matchDataEPVtttjtj - 0x40201544 0x1c1 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x1e1 (size before relaxing) - 0x40201544 IRrecv::matchData(unsigned short volatile*, unsigned short, unsigned short, unsigned int, unsigned short, unsigned int) - *fill* 0x40201705 0x3 - .text._ZN6IRsend5beginEv - 0x40201708 0x17 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x1b (size before relaxing) - 0x40201708 IRsend::begin() - *fill* 0x4020171f 0x1 - .text._ZN6IRsend6ledOffEv - 0x40201720 0x1f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x40201724 IRsend::ledOff() - *fill* 0x4020173f 0x1 - .text._ZN6IRsend14calcUSecPeriodEjb - 0x40201740 0x4c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x40201748 IRsend::calcUSecPeriod(unsigned int, bool) - .text._ZN6IRsend11enableIROutEjh - 0x4020178c 0x63 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) + .text._ZN7TwoWire5writeEPKhj + 0x40201010 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40201014 TwoWire::write(unsigned char const*, unsigned int) + *fill* 0x40201063 0x1 + .text._ZN7TwoWire4readEv + 0x40201064 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40201070 TwoWire::read() + *fill* 0x40201092 0x2 + .text._ZN7TwoWire4peekEv + 0x40201094 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x29 (size before relaxing) + 0x40201094 TwoWire::peek() + *fill* 0x402010b1 0x3 + .text._ZN7TwoWire5flushEv + 0x402010b4 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2c (size before relaxing) + 0x402010bc TwoWire::flush() + .text._ZN7TwoWire9availableEv + 0x402010d8 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x38 (size before relaxing) + 0x402010d8 TwoWire::available() + .text._ZN7TwoWire5writeEh + 0x40201104 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x4b (size before relaxing) + 0x40201108 TwoWire::write(unsigned char) + *fill* 0x40201143 0x1 + .text._ZN7TwoWireC2Ev + 0x40201144 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x40201148 TwoWire::TwoWire() + 0x40201148 TwoWire::TwoWire() + .text._ZN7TwoWire5beginEii + 0x40201158 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x3e (size before relaxing) + 0x40201160 TwoWire::begin(int, int) + *fill* 0x4020118e 0x2 + .text._ZN7TwoWire5beginEv + 0x40201190 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x28 (size before relaxing) + 0x40201190 TwoWire::begin() + .text._ZN7TwoWire20setClockStretchLimitEj + 0x402011ac 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x18 (size before relaxing) + 0x402011ac TwoWire::setClockStretchLimit(unsigned int) + .text._ZN7TwoWire11requestFromEhjb + 0x402011c0 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x50 (size before relaxing) + 0x402011c0 TwoWire::requestFrom(unsigned char, unsigned int, bool) + .text._ZN7TwoWire11requestFromEhh + 0x40201200 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x22 (size before relaxing) + 0x40201200 TwoWire::requestFrom(unsigned char, unsigned char) + *fill* 0x4020121a 0x2 + .text._ZN7TwoWire11requestFromEii + 0x4020121c 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1e (size before relaxing) + 0x4020121c TwoWire::requestFrom(int, int) + *fill* 0x40201236 0x2 + .text._ZN7TwoWire17beginTransmissionEh + 0x40201238 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x2e (size before relaxing) + 0x4020123c TwoWire::beginTransmission(unsigned char) + *fill* 0x4020125a 0x2 + .text._ZN7TwoWire15endTransmissionEh + 0x4020125c 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x52 (size before relaxing) + 0x4020125c TwoWire::endTransmission(unsigned char) + *fill* 0x40201292 0x2 + .text._ZN7TwoWire15endTransmissionEv + 0x40201294 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x18 (size before relaxing) + 0x40201294 TwoWire::endTransmission() + .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE + 0x402012a8 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x1d (size before relaxing) + *fill* 0x402012c1 0x3 + .text._ZN6Ticker10_attach_msEjbPFvPvEj + 0x402012c4 0x67 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) 0x6b (size before relaxing) - 0x4020178c IRsend::enableIROut(unsigned int, unsigned char) - *fill* 0x402017ef 0x1 - .text._ZN6IRsend4markEt - 0x402017f0 0x91 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0xb1 (size before relaxing) - 0x402017f4 IRsend::mark(unsigned short) - *fill* 0x40201881 0x3 - .text._ZN6IRsend5spaceEj - 0x40201884 0x4c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x60 (size before relaxing) - 0x4020188c IRsend::space(unsigned int) - .text._ZN6IRsend8sendDataEtjtjytb - 0x402018d0 0x109 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x139 (size before relaxing) - 0x402018d8 IRsend::sendData(unsigned short, unsigned int, unsigned short, unsigned int, unsigned long long, unsigned short, bool) - *fill* 0x402019d9 0x3 - .text._ZN7IRtimer5resetEv - 0x402019dc 0x1f .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - 0x402019e0 IRtimer::reset() - *fill* 0x402019fb 0x1 - .text._ZN7IRtimerC2Ev - 0x402019fc 0xf .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) + 0x402012d0 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) + *fill* 0x4020132b 0x1 + .text._ZN6Ticker6detachEv + 0x4020132c 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x31 (size before relaxing) + 0x4020132c Ticker::detach() + *fill* 0x40201355 0x3 + .text._ZN6TickerD2Ev + 0x40201358 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) 0x17 (size before relaxing) - 0x402019fc IRtimer::IRtimer() - 0x402019fc IRtimer::IRtimer() - *fill* 0x40201a0b 0x1 - .text._ZN7IRtimer7elapsedEv - 0x40201a0c 0x27 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - 0x2b (size before relaxing) - 0x40201a0c IRtimer::elapsed() - *fill* 0x40201a33 0x1 - .text._ZN6IRsend8sendDISHEytt - 0x40201a34 0x91 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - 0xbd (size before relaxing) - 0x40201a40 IRsend::sendDISH(unsigned long long, unsigned short, unsigned short) - *fill* 0x40201ac5 0x3 - .text._ZN6IRsend7sendJVCEytt - 0x40201ac8 0xb0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - 0xf0 (size before relaxing) - 0x40201ad8 IRsend::sendJVC(unsigned long long, unsigned short, unsigned short) - .text._ZN6IRrecv9decodeJVCEP14decode_resultstb - 0x40201b78 0x18d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - 0x1cd (size before relaxing) - 0x40201b78 IRrecv::decodeJVC(decode_results*, unsigned short, bool) - *fill* 0x40201d05 0x3 - .text._ZN6IRsend7sendNECEytt - 0x40201d08 0xef .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - 0x14f (size before relaxing) - 0x40201d1c IRsend::sendNEC(unsigned long long, unsigned short, unsigned short) - *fill* 0x40201df7 0x1 - .text._ZN6IRrecv9decodeNECEP14decode_resultstb - 0x40201df8 0x1d9 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - 0x221 (size before relaxing) - 0x40201dfc IRrecv::decodeNEC(decode_results*, unsigned short, bool) - *fill* 0x40201fd1 0x3 - .text._ZN6IRsend15sendPanasonic64Eytt - 0x40201fd4 0xb7 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - 0xf3 (size before relaxing) - 0x40201fe8 IRsend::sendPanasonic64(unsigned long long, unsigned short, unsigned short) - *fill* 0x4020208b 0x1 - .text._ZN6IRsend13sendPanasonicEtjtt - 0x4020208c 0x1d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - 0x21 (size before relaxing) - 0x4020208c IRsend::sendPanasonic(unsigned short, unsigned int, unsigned short, unsigned short) - *fill* 0x402020a9 0x3 - .text._ZN6IRrecv15decodePanasonicEP14decode_resultstbj - 0x402020ac 0x157 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - 0x17f (size before relaxing) - 0x402020b0 IRrecv::decodePanasonic(decode_results*, unsigned short, bool, unsigned int) - *fill* 0x40202203 0x1 - .text._ZN6IRsend7sendRC5Eytt - 0x40202204 0x14c .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - 0x1b8 (size before relaxing) - 0x40202210 IRsend::sendRC5(unsigned long long, unsigned short, unsigned short) - .text._ZN6IRsend7sendRC6Eytt - 0x40202350 0x118 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - 0x164 (size before relaxing) - 0x40202358 IRsend::sendRC6(unsigned long long, unsigned short, unsigned short) - .text._ZN6IRrecv10getRClevelEP14decode_resultsPtS2_t - 0x40202468 0xcb .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - 0xdf (size before relaxing) - 0x4020246c IRrecv::getRClevel(decode_results*, unsigned short*, unsigned short*, unsigned short) - *fill* 0x40202533 0x1 - .text._ZN6IRrecv9decodeRC5EP14decode_resultstb - 0x40202534 0x179 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - 0x199 (size before relaxing) - 0x40202534 IRrecv::decodeRC5(decode_results*, unsigned short, bool) - *fill* 0x402026ad 0x3 - .text._ZN6IRrecv9decodeRC6EP14decode_resultstb - 0x402026b0 0x202 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - 0x23e (size before relaxing) - 0x402026b0 IRrecv::decodeRC6(decode_results*, unsigned short, bool) - *fill* 0x402028b2 0x2 - .text._ZN6IRsend11sendSAMSUNGEytt - 0x402028b4 0xa3 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - 0xeb (size before relaxing) - 0x402028b8 IRsend::sendSAMSUNG(unsigned long long, unsigned short, unsigned short) - *fill* 0x40202957 0x1 - .text._ZN6IRrecv13decodeSAMSUNGEP14decode_resultstb - 0x40202958 0x16a .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - 0x19e (size before relaxing) - 0x40202958 IRrecv::decodeSAMSUNG(decode_results*, unsigned short, bool) - *fill* 0x40202ac2 0x2 - .text._ZN6IRsend8sendSonyEytt - 0x40202ac4 0xa3 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) + 0x40201358 Ticker::~Ticker() + 0x40201358 Ticker::~Ticker() + *fill* 0x40201367 0x1 + .text._Z10C2D_enableb$part$0 + 0x40201368 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1b (size before relaxing) + *fill* 0x4020137b 0x1 + .text._ZL6c2_bitb + 0x4020137c 0x48 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x50 (size before relaxing) + .text._Z16c2_address_writeh + 0x402013c4 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x77 (size before relaxing) + 0x402013c4 c2_address_write(unsigned char) + *fill* 0x4020140b 0x1 + .text._Z15c2_address_readv + 0x4020140c 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x89 (size before relaxing) + 0x4020140c c2_address_read() + *fill* 0x40201465 0x3 + .text._Z13c2_data_writejh + 0x40201468 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0xc8 (size before relaxing) + 0x40201468 c2_data_write(unsigned int, unsigned char) + .text._Z12c2_data_readRjh + 0x402014f0 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) 0xdb (size before relaxing) - 0x40202ad0 IRsend::sendSony(unsigned long long, unsigned short, unsigned short) - *fill* 0x40202b67 0x1 - .text._ZN6IRrecv10decodeSonyEP14decode_resultstb - 0x40202b68 0x21b .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - 0x253 (size before relaxing) - 0x40202b68 IRrecv::decodeSony(decode_results*, unsigned short, bool) - *fill* 0x40202d83 0x1 - .text._Z11reverseBitsyt - 0x40202d84 0x5e .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) - 0x62 (size before relaxing) - 0x40202d84 reverseBits(unsigned long long, unsigned short) - *fill* 0x40202de2 0x2 + 0x402014f0 c2_data_read(unsigned int&, unsigned char) + *fill* 0x4020158b 0x1 + .text._Z12c2_data_readRhh$isra$1 + 0x4020158c 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x26 (size before relaxing) + *fill* 0x402015aa 0x2 + .text._Z8c2_resetv + 0x402015ac 0x37 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x43 (size before relaxing) + 0x402015b0 c2_reset() + *fill* 0x402015e3 0x1 + .text._Z19c2_programming_initv + 0x402015e4 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x6b (size before relaxing) + 0x402015e4 c2_programming_init() + *fill* 0x40201627 0x1 + .text._Z14c2_block_writejPhh + 0x40201628 0x197 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x21b (size before relaxing) + 0x4020162c c2_block_write(unsigned int, unsigned char*, unsigned char) + *fill* 0x402017bf 0x1 + .text._Z15c2_device_erasev + 0x402017c0 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + 0x1f7 (size before relaxing) + 0x402017c0 c2_device_erase() + *fill* 0x4020192f 0x1 + .text._ZL12value_of_hexh + 0x40201930 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + *fill* 0x40201962 0x2 + .text._Z10ihx_decodePht + 0x40201964 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) + 0xcb (size before relaxing) + 0x40201964 ihx_decode(unsigned char*, unsigned short) + *fill* 0x40201a23 0x1 .text.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print - 0x40202de4 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) + 0x40201a24 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) 0x1d (size before relaxing) - *fill* 0x40202dfd 0x3 + *fill* 0x40201a3d 0x3 .text._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ - 0x40202e00 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40201a40 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0xfd (size before relaxing) - 0x40202e04 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) - *fill* 0x40202ebd 0x3 + 0x40201a44 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) + *fill* 0x40201afd 0x3 .text._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii - 0x40202ec0 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40201b00 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x21a (size before relaxing) - 0x40202ee0 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) - *fill* 0x4020307a 0x2 + 0x40201b20 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) + *fill* 0x40201cba 0x2 .text._ZN18ESP8266WiFiAPClass8softAPIPEv - 0x4020307c 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40201cbc 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x31 (size before relaxing) - 0x4020307c ESP8266WiFiAPClass::softAPIP() - *fill* 0x402030a1 0x3 + 0x40201cbc ESP8266WiFiAPClass::softAPIP() + *fill* 0x40201ce1 0x3 .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEv - 0x402030a4 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) + 0x40201ce4 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) 0x70 (size before relaxing) - 0x402030b0 ESP8266WiFiAPClass::softAPmacAddress() + 0x40201cf0 ESP8266WiFiAPClass::softAPmacAddress() .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x40203104 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40203108 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - 0x40203108 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x4020310f 0x1 + 0x40201d44 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201d48 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + 0x40201d48 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x40201d4f 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x40203110 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201d50 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xb (size before relaxing) - 0x40203110 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - 0x40203110 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40203117 0x1 + 0x40201d50 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + 0x40201d50 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40201d57 0x1 .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x40203118 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201d58 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203118 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x4020312f 0x1 + 0x40201d58 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() + *fill* 0x40201d6f 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x40203130 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201d70 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203130 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40203147 0x1 + 0x40201d70 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() + *fill* 0x40201d87 0x1 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x40203148 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201d88 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1f (size before relaxing) - 0x40203148 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x4020315f 0x1 + 0x40201d88 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x40201d9f 0x1 .text._Z23wifi_dns_found_callbackPKcP7ip_addrPv - 0x40203160 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201da0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x26 (size before relaxing) - 0x40203160 wifi_dns_found_callback(char const*, ip_addr*, void*) - *fill* 0x4020317b 0x1 + 0x40201da0 wifi_dns_found_callback(char const*, ip_addr*, void*) + *fill* 0x40201dbb 0x1 .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x4020317c 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201dbc 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x83 (size before relaxing) - *fill* 0x402031cb 0x1 + *fill* 0x40201e0b 0x1 .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x402031cc 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201e0c 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x94 (size before relaxing) .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x40203238 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201e78 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x2a (size before relaxing) - 0x40203238 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() - *fill* 0x40203256 0x2 + 0x40201e78 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() + *fill* 0x40201e96 0x2 .text._ZN23ESP8266WiFiGenericClassC2Ev - 0x40203258 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201e98 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1d (size before relaxing) - 0x4020325c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - 0x4020325c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - *fill* 0x40203271 0x3 + 0x40201e9c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + 0x40201e9c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() + *fill* 0x40201eb1 0x3 .text._ZN23ESP8266WiFiGenericClass7channelEv - 0x40203274 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201eb4 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x17 (size before relaxing) - 0x40203274 ESP8266WiFiGenericClass::channel() - *fill* 0x40203283 0x1 + 0x40201eb4 ESP8266WiFiGenericClass::channel() + *fill* 0x40201ec3 0x1 .text._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType - 0x40203284 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201ec4 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x18 (size before relaxing) - 0x40203284 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) + 0x40201ec4 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) .text._ZN23ESP8266WiFiGenericClass10getPhyModeEv - 0x40203298 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201ed8 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x17 (size before relaxing) - 0x40203298 ESP8266WiFiGenericClass::getPhyMode() - *fill* 0x402032a7 0x1 + 0x40201ed8 ESP8266WiFiGenericClass::getPhyMode() + *fill* 0x40201ee7 0x1 .text._ZN23ESP8266WiFiGenericClass10persistentEb - 0x402032a8 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201ee8 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xc (size before relaxing) - 0x402032a8 ESP8266WiFiGenericClass::persistent(bool) + 0x40201ee8 ESP8266WiFiGenericClass::persistent(bool) .text._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode - 0x402032b0 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201ef0 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x69 (size before relaxing) - 0x402032b0 ESP8266WiFiGenericClass::mode(WiFiMode) - *fill* 0x402032fd 0x3 + 0x40201ef0 ESP8266WiFiGenericClass::mode(WiFiMode) + *fill* 0x40201f3d 0x3 .text._ZN23ESP8266WiFiGenericClass9enableSTAEb - 0x40203300 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201f40 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x51 (size before relaxing) - 0x40203300 ESP8266WiFiGenericClass::enableSTA(bool) - *fill* 0x40203349 0x3 + 0x40201f40 ESP8266WiFiGenericClass::enableSTA(bool) + *fill* 0x40201f89 0x3 .text._ZN23ESP8266WiFiGenericClass8enableAPEb - 0x4020334c 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201f8c 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x51 (size before relaxing) - 0x4020334c ESP8266WiFiGenericClass::enableAP(bool) - *fill* 0x40203395 0x3 + 0x40201f8c ESP8266WiFiGenericClass::enableAP(bool) + *fill* 0x40201fd5 0x3 .text._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress - 0x40203398 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40201fd8 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x8d (size before relaxing) - 0x4020339c ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) - *fill* 0x40203401 0x3 + 0x40201fdc ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) + *fill* 0x40202041 0x3 .text._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv - 0x40203404 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40202044 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xaa (size before relaxing) - 0x4020340c ESP8266WiFiGenericClass::_eventCallback(void*) - *fill* 0x40203496 0x2 + 0x4020204c ESP8266WiFiGenericClass::_eventCallback(void*) + *fill* 0x402020d6 0x2 .text._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x40203498 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402020d8 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x48 (size before relaxing) - 0x4020349c std::list, std::allocator > >::push_back(std::shared_ptr const&) + 0x402020dc std::list, std::allocator > >::push_back(std::shared_ptr const&) .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x402034dc 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020211c 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x6b (size before relaxing) - *fill* 0x4020352f 0x1 + *fill* 0x4020216f 0x1 .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x40203530 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40202170 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x6b (size before relaxing) - *fill* 0x40203583 0x1 + *fill* 0x402021c3 0x1 .text._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x40203584 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402021c4 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x3e (size before relaxing) - 0x40203584 std::_List_base, std::allocator > >::_M_clear() - *fill* 0x402035b6 0x2 + 0x402021c4 std::_List_base, std::allocator > >::_M_clear() + *fill* 0x402021f6 0x2 .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x402035b8 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402021f8 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x3d (size before relaxing) - 0x402035bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - 0x402035bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - *fill* 0x402035f1 0x3 + 0x402021fc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + 0x402021fc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) + *fill* 0x40202231 0x3 .text._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE - 0x402035f4 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40202234 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x136 (size before relaxing) - 0x402035fc ESP8266WiFiGenericClass::onStationModeGotIP(std::function) - *fill* 0x402036ce 0x2 + 0x4020223c ESP8266WiFiGenericClass::onStationModeGotIP(std::function) + *fill* 0x4020230e 0x2 .text._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE - 0x402036d0 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x40202310 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x133 (size before relaxing) - 0x402036d8 ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) - *fill* 0x402037ab 0x1 + 0x40202318 ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) + *fill* 0x402023eb 0x1 .text.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402037ac 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402023ec 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0xd (size before relaxing) - *fill* 0x402037b5 0x3 + *fill* 0x402023f5 0x3 .text.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402037b8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x402023f8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) 0x1d (size before relaxing) - *fill* 0x402037cd 0x3 + *fill* 0x4020240d 0x3 .text._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ - 0x402037d0 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202410 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0xcb (size before relaxing) - 0x402037d4 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) - *fill* 0x40203877 0x1 + 0x40202414 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) + *fill* 0x402024b7 0x1 .text._ZN19ESP8266WiFiSTAClass10disconnectEb - 0x40203878 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402024b8 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x8b (size before relaxing) - 0x40203878 ESP8266WiFiSTAClass::disconnect(bool) - *fill* 0x402038d7 0x1 + 0x402024b8 ESP8266WiFiSTAClass::disconnect(bool) + *fill* 0x40202517 0x1 .text._ZN19ESP8266WiFiSTAClass14setAutoConnectEb - 0x402038d8 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202518 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x3b (size before relaxing) - 0x402038d8 ESP8266WiFiSTAClass::setAutoConnect(bool) - *fill* 0x40203907 0x1 + 0x40202518 ESP8266WiFiSTAClass::setAutoConnect(bool) + *fill* 0x40202547 0x1 .text._ZN19ESP8266WiFiSTAClass14getAutoConnectEv - 0x40203908 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202548 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x20 (size before relaxing) - 0x40203908 ESP8266WiFiSTAClass::getAutoConnect() + 0x40202548 ESP8266WiFiSTAClass::getAutoConnect() .text._ZN19ESP8266WiFiSTAClass7localIPEv - 0x40203920 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202560 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x40203920 ESP8266WiFiSTAClass::localIP() - *fill* 0x40203945 0x3 + 0x40202560 ESP8266WiFiSTAClass::localIP() + *fill* 0x40202585 0x3 .text._ZN19ESP8266WiFiSTAClass10macAddressEv - 0x40203948 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202588 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x70 (size before relaxing) - 0x4020394c ESP8266WiFiSTAClass::macAddress() + 0x4020258c ESP8266WiFiSTAClass::macAddress() .text._ZN19ESP8266WiFiSTAClass10subnetMaskEv - 0x402039a0 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402025e0 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x402039a0 ESP8266WiFiSTAClass::subnetMask() - *fill* 0x402039c5 0x3 + 0x402025e0 ESP8266WiFiSTAClass::subnetMask() + *fill* 0x40202605 0x3 .text._ZN19ESP8266WiFiSTAClass9gatewayIPEv - 0x402039c8 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202608 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x31 (size before relaxing) - 0x402039c8 ESP8266WiFiSTAClass::gatewayIP() - *fill* 0x402039ed 0x3 + 0x40202608 ESP8266WiFiSTAClass::gatewayIP() + *fill* 0x4020262d 0x3 .text._ZN19ESP8266WiFiSTAClass5dnsIPEh - 0x402039f0 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202630 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x2f (size before relaxing) - 0x402039f0 ESP8266WiFiSTAClass::dnsIP(unsigned char) - *fill* 0x40203a13 0x1 + 0x40202630 ESP8266WiFiSTAClass::dnsIP(unsigned char) + *fill* 0x40202653 0x1 .text._ZN19ESP8266WiFiSTAClass8hostnameEPc - 0x40203a14 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202654 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x35 (size before relaxing) - 0x40203a14 ESP8266WiFiSTAClass::hostname(char*) - *fill* 0x40203a41 0x3 + 0x40202654 ESP8266WiFiSTAClass::hostname(char*) + *fill* 0x40202681 0x3 .text._ZN19ESP8266WiFiSTAClass6statusEv - 0x40203a44 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202684 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x2a (size before relaxing) - 0x40203a48 ESP8266WiFiSTAClass::status() - *fill* 0x40203a66 0x2 + 0x40202688 ESP8266WiFiSTAClass::status() + *fill* 0x402026a6 0x2 .text._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb - 0x40203a68 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402026a8 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x228 (size before relaxing) - 0x40203a6c ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) + 0x402026ac ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) .text._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb - 0x40203c10 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202850 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x19 (size before relaxing) - 0x40203c10 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) - *fill* 0x40203c25 0x3 + 0x40202850 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) + *fill* 0x40202865 0x3 .text._ZN19ESP8266WiFiSTAClass8BSSIDstrEv - 0x40203c28 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x40202868 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x77 (size before relaxing) - 0x40203c28 ESP8266WiFiSTAClass::BSSIDstr() - *fill* 0x40203c83 0x1 + 0x40202868 ESP8266WiFiSTAClass::BSSIDstr() + *fill* 0x402028c3 0x1 .text._ZN19ESP8266WiFiSTAClass4RSSIEv - 0x40203c84 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) + 0x402028c4 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) 0x1d (size before relaxing) - 0x40203c84 ESP8266WiFiSTAClass::RSSI() - *fill* 0x40203c99 0x3 + 0x402028c4 ESP8266WiFiSTAClass::RSSI() + *fill* 0x402028d9 0x3 .text._ZN20ESP8266WiFiScanClass9_scanDoneEPvi - 0x40203c9c 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x402028dc 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0xbb (size before relaxing) - 0x40203cb4 ESP8266WiFiScanClass::_scanDone(void*, int) - *fill* 0x40203d4b 0x1 + 0x402028f4 ESP8266WiFiScanClass::_scanDone(void*, int) + *fill* 0x4020298b 0x1 .text._ZN20ESP8266WiFiScanClass10scanDeleteEv - 0x40203d4c 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x4020298c 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x3e (size before relaxing) - 0x40203d4c ESP8266WiFiScanClass::scanDelete() - *fill* 0x40203d7a 0x2 + 0x4020298c ESP8266WiFiScanClass::scanDelete() + *fill* 0x402029ba 0x2 .text._ZN20ESP8266WiFiScanClass12scanNetworksEbb - 0x40203d7c 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x402029bc 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0xef (size before relaxing) - 0x40203d80 ESP8266WiFiScanClass::scanNetworks(bool, bool) - *fill* 0x40203e2b 0x1 + 0x402029c0 ESP8266WiFiScanClass::scanNetworks(bool, bool) + *fill* 0x40202a6b 0x1 .text._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi - 0x40203e2c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202a6c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x26 (size before relaxing) - 0x40203e2c ESP8266WiFiScanClass::_getScanInfoByIndex(int) - *fill* 0x40203e4a 0x2 + 0x40202a6c ESP8266WiFiScanClass::_getScanInfoByIndex(int) + *fill* 0x40202a8a 0x2 .text._ZN20ESP8266WiFiScanClass4SSIDEh - 0x40203e4c 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202a8c 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x3d (size before relaxing) - 0x40203e50 ESP8266WiFiScanClass::SSID(unsigned char) - *fill* 0x40203e81 0x3 + 0x40202a90 ESP8266WiFiScanClass::SSID(unsigned char) + *fill* 0x40202ac1 0x3 .text._ZN20ESP8266WiFiScanClass14encryptionTypeEh - 0x40203e84 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202ac4 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x31 (size before relaxing) - 0x40203e88 ESP8266WiFiScanClass::encryptionType(unsigned char) - *fill* 0x40203eb1 0x3 + 0x40202ac8 ESP8266WiFiScanClass::encryptionType(unsigned char) + *fill* 0x40202af1 0x3 .text._ZN20ESP8266WiFiScanClass4RSSIEh - 0x40203eb4 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202af4 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x24 (size before relaxing) - 0x40203eb4 ESP8266WiFiScanClass::RSSI(unsigned char) - *fill* 0x40203ed1 0x3 + 0x40202af4 ESP8266WiFiScanClass::RSSI(unsigned char) + *fill* 0x40202b11 0x3 .text._ZN20ESP8266WiFiScanClass8BSSIDstrEh - 0x40203ed4 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202b14 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x82 (size before relaxing) - 0x40203ed8 ESP8266WiFiScanClass::BSSIDstr(unsigned char) - *fill* 0x40203f3e 0x2 + 0x40202b18 ESP8266WiFiScanClass::BSSIDstr(unsigned char) + *fill* 0x40202b7e 0x2 .text._ZN20ESP8266WiFiScanClass7channelEh - 0x40203f40 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) + 0x40202b80 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) 0x1f (size before relaxing) - 0x40203f40 ESP8266WiFiScanClass::channel(unsigned char) - *fill* 0x40203f58 0x0 + 0x40202b80 ESP8266WiFiScanClass::channel(unsigned char) + *fill* 0x40202b98 0x0 .text._ZN10WiFiClient7connectEPKct - 0x40203f58 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202b98 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x58 (size before relaxing) - 0x40203f58 WiFiClient::connect(char const*, unsigned short) + 0x40202b98 WiFiClient::connect(char const*, unsigned short) .text._ZN10WiFiClient7connectE9IPAddresst - 0x40203f9c 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202bdc 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xb4 (size before relaxing) - 0x40203fa8 WiFiClient::connect(IPAddress, unsigned short) + 0x40202be8 WiFiClient::connect(IPAddress, unsigned short) .text._ZN10WiFiClient6_s_errEPva - 0x40204028 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202c68 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x17 (size before relaxing) - 0x40204028 WiFiClient::_s_err(void*, signed char) - *fill* 0x40204037 0x1 + 0x40202c68 WiFiClient::_s_err(void*, signed char) + *fill* 0x40202c77 0x1 .text._ZN10WiFiClient9availableEv - 0x40204038 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202c78 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2f (size before relaxing) - 0x40204038 WiFiClient::available() - *fill* 0x40204060 0x0 + 0x40202c78 WiFiClient::available() + *fill* 0x40202ca0 0x0 .text._ZN10WiFiClient9peekBytesEPhj - 0x40204060 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202ca0 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xbe (size before relaxing) - 0x40204068 WiFiClient::peekBytes(unsigned char*, unsigned int) - *fill* 0x40204116 0x2 + 0x40202ca8 WiFiClient::peekBytes(unsigned char*, unsigned int) + *fill* 0x40202d56 0x2 .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x40204118 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202d58 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x40204118 ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) - *fill* 0x4020413d 0x3 + 0x40202d58 ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) + *fill* 0x40202d7d 0x3 .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x40204140 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202d80 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x99 (size before relaxing) - 0x40204140 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) - *fill* 0x402041ad 0x3 + 0x40202d80 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) + *fill* 0x40202ded 0x3 .text._ZN13ClientContext8_s_errorEPva - 0x402041b0 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202df0 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x62 (size before relaxing) - 0x402041b0 ClientContext::_s_error(void*, signed char) - *fill* 0x402041ee 0x2 + 0x40202df0 ClientContext::_s_error(void*, signed char) + *fill* 0x40202e2e 0x2 .text._ZN13ClientContext5flushEv - 0x402041f0 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202e30 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x39 (size before relaxing) - 0x402041f0 ClientContext::flush() - *fill* 0x40204221 0x3 + 0x40202e30 ClientContext::flush() + *fill* 0x40202e61 0x3 .text._ZN13ClientContext5unrefEv - 0x40204224 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202e64 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x9f (size before relaxing) - 0x40204224 ClientContext::unref() - *fill* 0x4020428c 0x0 + 0x40202e64 ClientContext::unref() + *fill* 0x40202ecc 0x0 .text._ZN10WiFiClient4stopEv - 0x4020428c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202ecc 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x25 (size before relaxing) - 0x4020428c WiFiClient::stop() - *fill* 0x402042ad 0x3 + 0x40202ecc WiFiClient::stop() + *fill* 0x40202eed 0x3 .text._ZN10WiFiClientD2Ev - 0x402042b0 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202ef0 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x4f (size before relaxing) - 0x402042b8 WiFiClient::~WiFiClient() - 0x402042b8 WiFiClient::~WiFiClient() - *fill* 0x402042fb 0x1 + 0x40202ef8 WiFiClient::~WiFiClient() + 0x40202ef8 WiFiClient::~WiFiClient() + *fill* 0x40202f3b 0x1 .text._ZN10WiFiClientD0Ev - 0x402042fc 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202f3c 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x402042fc WiFiClient::~WiFiClient() - *fill* 0x40204319 0x3 + 0x40202f3c WiFiClient::~WiFiClient() + *fill* 0x40202f59 0x3 .text._ZN10WiFiClient5flushEv - 0x4020431c 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202f5c 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x1b (size before relaxing) - 0x4020431c WiFiClient::flush() - *fill* 0x40204330 0x0 + 0x40202f5c WiFiClient::flush() + *fill* 0x40202f70 0x0 .text._ZN13ClientContext5writeEPKcj - 0x40204330 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202f70 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x73 (size before relaxing) - 0x40204330 ClientContext::write(char const*, unsigned int) - *fill* 0x4020438b 0x1 + 0x40202f74 ClientContext::write(char const*, unsigned int) + *fill* 0x40202fcf 0x1 .text._ZN10WiFiClient5writeEPKhj - 0x4020438c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202fd0 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x4020438c WiFiClient::write(unsigned char const*, unsigned int) - *fill* 0x402043ad 0x3 + 0x40202fd0 WiFiClient::write(unsigned char const*, unsigned int) + *fill* 0x40202ff1 0x3 .text._ZN13ClientContext8_consumeEj - 0x402043b0 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40202ff4 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x7f (size before relaxing) - 0x402043b0 ClientContext::_consume(unsigned int) - *fill* 0x40204417 0x1 + 0x40202ff4 ClientContext::_consume(unsigned int) + *fill* 0x4020305b 0x1 .text._ZN10WiFiClient4readEv - 0x40204418 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020305c 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x44 (size before relaxing) - 0x40204418 WiFiClient::read() + 0x4020305c WiFiClient::read() .text._ZN10WiFiClient4readEPhj - 0x40204458 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020309c 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x7d (size before relaxing) - 0x40204458 WiFiClient::read(unsigned char*, unsigned int) - *fill* 0x402044cd 0x3 + 0x4020309c WiFiClient::read(unsigned char*, unsigned int) + *fill* 0x40203111 0x3 .text._ZN10WiFiClientC2Ev - 0x402044d0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203114 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x23 (size before relaxing) - 0x402044d0 WiFiClient::WiFiClient() - 0x402044d0 WiFiClient::WiFiClient() - *fill* 0x402044eb 0x1 + 0x40203114 WiFiClient::WiFiClient() + 0x40203114 WiFiClient::WiFiClient() + *fill* 0x4020312f 0x1 .text._ZN10WiFiClientC2EP13ClientContext - 0x402044ec 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203130 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x29 (size before relaxing) - 0x402044ec WiFiClient::WiFiClient(ClientContext*) - 0x402044ec WiFiClient::WiFiClient(ClientContext*) - *fill* 0x4020450d 0x3 + 0x40203130 WiFiClient::WiFiClient(ClientContext*) + 0x40203130 WiFiClient::WiFiClient(ClientContext*) + *fill* 0x40203151 0x3 .text._ZN10WiFiClientC2ERKS_ - 0x40204510 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203154 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2f (size before relaxing) - 0x40204510 WiFiClient::WiFiClient(WiFiClient const&) - 0x40204510 WiFiClient::WiFiClient(WiFiClient const&) - *fill* 0x40204537 0x1 + 0x40203154 WiFiClient::WiFiClient(WiFiClient const&) + 0x40203154 WiFiClient::WiFiClient(WiFiClient const&) + *fill* 0x4020317b 0x1 .text._ZN10WiFiClientaSERKS_ - 0x40204538 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020317c 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x35 (size before relaxing) - 0x40204538 WiFiClient::operator=(WiFiClient const&) - *fill* 0x40204569 0x3 + 0x4020317c WiFiClient::operator=(WiFiClient const&) + *fill* 0x402031ad 0x3 .text._ZN10WiFiClient10_connectedEPva - 0x4020456c 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402031b0 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0xaf (size before relaxing) - 0x40204578 WiFiClient::_connected(void*, signed char) - *fill* 0x402045e7 0x1 + 0x402031bc WiFiClient::_connected(void*, signed char) + *fill* 0x4020322b 0x1 .text._ZN10WiFiClient12_s_connectedEPvS0_a - 0x402045e8 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020322c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x1f (size before relaxing) - 0x402045e8 WiFiClient::_s_connected(void*, void*, signed char) - *fill* 0x40204603 0x1 + 0x4020322c WiFiClient::_s_connected(void*, void*, signed char) + *fill* 0x40203247 0x1 .text._ZN10WiFiClient8remoteIPEv - 0x40204604 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203248 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2d (size before relaxing) - 0x40204604 WiFiClient::remoteIP() - *fill* 0x4020462d 0x3 + 0x40203248 WiFiClient::remoteIP() + *fill* 0x40203271 0x3 .text._ZN10WiFiClient7localIPEv - 0x40204630 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x40203274 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2d (size before relaxing) - 0x40204630 WiFiClient::localIP() - *fill* 0x40204659 0x3 + 0x40203274 WiFiClient::localIP() + *fill* 0x4020329d 0x3 .text._ZN10WiFiClient7stopAllEv - 0x4020465c 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402032a0 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x2b (size before relaxing) - 0x4020465c WiFiClient::stopAll() - *fill* 0x40204683 0x1 + 0x402032a0 WiFiClient::stopAll() + *fill* 0x402032c7 0x1 .text._ZN10WiFiClient13stopAllExceptEPS_ - 0x40204684 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x402032c8 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x34 (size before relaxing) - 0x40204684 WiFiClient::stopAllExcept(WiFiClient*) + 0x402032c8 WiFiClient::stopAllExcept(WiFiClient*) .text._ZN7WiFiUDP9availableEv - 0x402046b4 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402032f8 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x2f (size before relaxing) - 0x402046b4 WiFiUDP::available() - *fill* 0x402046dc 0x0 + 0x402032f8 WiFiUDP::available() + *fill* 0x40203320 0x0 .text._ZN7WiFiUDP11beginPacketEPKct - 0x402046dc 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203320 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x58 (size before relaxing) - 0x402046dc WiFiUDP::beginPacket(char const*, unsigned short) + 0x40203320 WiFiUDP::beginPacket(char const*, unsigned short) .text._ZN7WiFiUDP5writeEPKhj - 0x40204720 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203364 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xed (size before relaxing) - 0x40204720 WiFiUDP::write(unsigned char const*, unsigned int) - *fill* 0x402047f9 0x3 + 0x40203364 WiFiUDP::write(unsigned char const*, unsigned int) + *fill* 0x4020343d 0x3 .text._ZN7WiFiUDP4readEPhj - 0x402047fc 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203440 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4c (size before relaxing) - 0x402047fc WiFiUDP::read(unsigned char*, unsigned int) + 0x40203440 WiFiUDP::read(unsigned char*, unsigned int) .text._ZN7WiFiUDP9endPacketEv - 0x40204844 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203488 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xcf (size before relaxing) - 0x40204844 WiFiUDP::endPacket() - *fill* 0x402048f7 0x1 + 0x40203488 WiFiUDP::endPacket() + *fill* 0x4020353b 0x1 .text._ZN7WiFiUDP8remoteIPEv - 0x402048f8 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020353c 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4f (size before relaxing) - 0x402048f8 WiFiUDP::remoteIP() - *fill* 0x40204943 0x1 + 0x4020353c WiFiUDP::remoteIP() + *fill* 0x40203587 0x1 .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x40204944 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203588 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x39 (size before relaxing) - 0x40204944 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) - *fill* 0x40204979 0x3 + 0x40203588 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) + *fill* 0x402035bd 0x3 .text._ZN7WiFiUDP11parsePacketEv - 0x4020497c 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402035c0 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x7b (size before relaxing) - 0x4020497c WiFiUDP::parsePacket() - *fill* 0x402049e7 0x1 + 0x402035c0 WiFiUDP::parsePacket() + *fill* 0x4020362b 0x1 .text._ZN10UdpContextC2Ev - 0x402049e8 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020362c 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x41 (size before relaxing) - 0x402049e8 UdpContext::UdpContext() - 0x402049e8 UdpContext::UdpContext() - *fill* 0x40204a25 0x3 + 0x4020362c UdpContext::UdpContext() + 0x4020362c UdpContext::UdpContext() + *fill* 0x40203669 0x3 .text._ZN7WiFiUDP11beginPacketE9IPAddresst - 0x40204a28 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020366c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x50 (size before relaxing) - 0x40204a28 WiFiUDP::beginPacket(IPAddress, unsigned short) + 0x4020366c WiFiUDP::beginPacket(IPAddress, unsigned short) .text._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i - 0x40204a6c 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402036b0 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x67 (size before relaxing) - 0x40204a6c WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) - *fill* 0x40204ac7 0x1 + 0x402036b0 WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) + *fill* 0x4020370b 0x1 .text._ZN10UdpContext5unrefEv - 0x40204ac8 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020370c 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x71 (size before relaxing) - 0x40204ac8 UdpContext::unref() - *fill* 0x40204b25 0x3 + 0x4020370c UdpContext::unref() + *fill* 0x40203769 0x3 .text._ZN7WiFiUDP4stopEv - 0x40204b28 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020376c 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x32 (size before relaxing) - 0x40204b28 WiFiUDP::stop() - *fill* 0x40204b4e 0x2 + 0x4020376c WiFiUDP::stop() + *fill* 0x40203792 0x2 .text._ZN7WiFiUDP5beginEt - 0x40204b50 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203794 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x86 (size before relaxing) - 0x40204b54 WiFiUDP::begin(unsigned short) - *fill* 0x40204bb6 0x2 + 0x40203798 WiFiUDP::begin(unsigned short) + *fill* 0x402037fa 0x2 .text._ZN7WiFiUDPC2Ev - 0x40204bb8 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40204bc0 WiFiUDP::WiFiUDP() - 0x40204bc0 WiFiUDP::WiFiUDP() - *fill* 0x40204bdb 0x1 + 0x402037fc 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203804 WiFiUDP::WiFiUDP() + 0x40203804 WiFiUDP::WiFiUDP() + *fill* 0x4020381f 0x1 .text._ZN7WiFiUDPD2Ev - 0x40204bdc 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203820 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x4f (size before relaxing) - 0x40204bdc WiFiUDP::~WiFiUDP() - 0x40204bdc WiFiUDP::~WiFiUDP() - *fill* 0x40204c1f 0x1 + 0x40203820 WiFiUDP::~WiFiUDP() + 0x40203820 WiFiUDP::~WiFiUDP() + *fill* 0x40203863 0x1 .text._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t - 0x40204c20 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x40203864 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0xb7 (size before relaxing) - 0x40204c24 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) - *fill* 0x40204cab 0x1 + 0x40203868 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) + *fill* 0x402038ef 0x1 .text._ZN7WiFiUDP7stopAllEv - 0x40204cac 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x402038f0 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) 0x2a (size before relaxing) - 0x40204cac WiFiUDP::stopAll() - *fill* 0x40204cd2 0x2 - .text._ZN9DNSServerC2Ev - 0x40204cd4 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x3e (size before relaxing) - 0x40204cdc DNSServer::DNSServer() - 0x40204cdc DNSServer::DNSServer() - *fill* 0x40204d06 0x2 - .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x40204d08 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x6d (size before relaxing) - 0x40204d0c DNSServer::downcaseAndRemoveWwwPrefix(String&) - *fill* 0x40204d49 0x3 - .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x40204d4c 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xad (size before relaxing) - 0x40204d50 DNSServer::getDomainNameWithoutWwwPrefix() - *fill* 0x40204ddd 0x3 - .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x40204de0 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x7c (size before relaxing) - 0x40204de0 DNSServer::start(unsigned short const&, String const&, IPAddress const&) - .text._ZN9DNSServer11replyWithIPEv - 0x40204e44 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x109 (size before relaxing) - 0x40204e44 DNSServer::replyWithIP() - *fill* 0x40204ee1 0x3 - .text._ZN9DNSServer19replyWithCustomCodeEv - 0x40204ee4 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x89 (size before relaxing) - 0x40204ee8 DNSServer::replyWithCustomCode() - *fill* 0x40204f4d 0x3 - .text._ZN9DNSServer18processNextRequestEv - 0x40204f50 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xfd (size before relaxing) - 0x40204f54 DNSServer::processNextRequest() - *fill* 0x40204ff5 0x3 - .text._ZN7TwoWire5writeEPKhj - 0x40204ff8 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40204ffc TwoWire::write(unsigned char const*, unsigned int) - *fill* 0x4020504b 0x1 - .text._ZN7TwoWire4readEv - 0x4020504c 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40205058 TwoWire::read() - *fill* 0x4020507a 0x2 - .text._ZN7TwoWire4peekEv - 0x4020507c 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x29 (size before relaxing) - 0x4020507c TwoWire::peek() - *fill* 0x40205099 0x3 - .text._ZN7TwoWire5flushEv - 0x4020509c 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2c (size before relaxing) - 0x402050a4 TwoWire::flush() - .text._ZN7TwoWire9availableEv - 0x402050c0 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x38 (size before relaxing) - 0x402050c0 TwoWire::available() - .text._ZN7TwoWire5writeEh - 0x402050ec 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x4b (size before relaxing) - 0x402050f0 TwoWire::write(unsigned char) - *fill* 0x4020512b 0x1 - .text._ZN7TwoWireC2Ev - 0x4020512c 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40205130 TwoWire::TwoWire() - 0x40205130 TwoWire::TwoWire() - .text._ZN7TwoWire5beginEii - 0x40205140 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3e (size before relaxing) - 0x40205148 TwoWire::begin(int, int) - *fill* 0x40205176 0x2 - .text._ZN7TwoWire5beginEv - 0x40205178 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x28 (size before relaxing) - 0x40205178 TwoWire::begin() - .text._ZN7TwoWire11requestFromEhjb - 0x40205194 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x50 (size before relaxing) - 0x40205194 TwoWire::requestFrom(unsigned char, unsigned int, bool) - .text._ZN7TwoWire11requestFromEhh - 0x402051d4 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x22 (size before relaxing) - 0x402051d4 TwoWire::requestFrom(unsigned char, unsigned char) - *fill* 0x402051ee 0x2 - .text._ZN7TwoWire11requestFromEii - 0x402051f0 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1e (size before relaxing) - 0x402051f0 TwoWire::requestFrom(int, int) - *fill* 0x4020520a 0x2 - .text._ZN7TwoWire17beginTransmissionEh - 0x4020520c 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2e (size before relaxing) - 0x40205210 TwoWire::beginTransmission(unsigned char) - *fill* 0x4020522e 0x2 - .text._ZN7TwoWire17beginTransmissionEi - 0x40205230 0x15 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x19 (size before relaxing) - 0x40205230 TwoWire::beginTransmission(int) - *fill* 0x40205245 0x3 - .text._ZN7TwoWire15endTransmissionEh - 0x40205248 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x52 (size before relaxing) - 0x40205248 TwoWire::endTransmission(unsigned char) - *fill* 0x4020527e 0x2 - .text._ZN7TwoWire15endTransmissionEv - 0x40205280 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x18 (size before relaxing) - 0x40205280 TwoWire::endTransmission() - .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x40205294 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1d (size before relaxing) - *fill* 0x402052ad 0x3 - .text._ZN6Ticker10_attach_msEjbPFvPvEj - 0x402052b0 0x5f .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x6b (size before relaxing) - 0x402052b4 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) - *fill* 0x4020530f 0x1 - .text._ZN6Ticker6detachEv - 0x40205310 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x31 (size before relaxing) - 0x40205310 Ticker::detach() - *fill* 0x40205339 0x3 - .text._ZN6TickerD2Ev - 0x4020533c 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x17 (size before relaxing) - 0x4020533c Ticker::~Ticker() - 0x4020533c Ticker::~Ticker() - *fill* 0x4020534b 0x1 - .text._Z10C2D_enableb$part$0 - 0x4020534c 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1b (size before relaxing) - *fill* 0x4020535f 0x1 - .text._ZL6c2_bitb - 0x40205360 0x44 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x50 (size before relaxing) - .text._Z16c2_address_writeh - 0x402053a4 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x77 (size before relaxing) - 0x402053a4 c2_address_write(unsigned char) - *fill* 0x402053eb 0x1 - .text._Z15c2_address_readv - 0x402053ec 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x89 (size before relaxing) - 0x402053ec c2_address_read() - *fill* 0x40205445 0x3 - .text._Z13c2_data_writejh - 0x40205448 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xc8 (size before relaxing) - 0x40205448 c2_data_write(unsigned int, unsigned char) - .text._Z12c2_data_readRjh - 0x402054d0 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xdb (size before relaxing) - 0x402054d0 c2_data_read(unsigned int&, unsigned char) - *fill* 0x4020556b 0x1 - .text._Z12c2_data_readRhh$isra$1 - 0x4020556c 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x26 (size before relaxing) - *fill* 0x4020558a 0x2 - .text._Z8c2_resetv - 0x4020558c 0x33 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x43 (size before relaxing) - 0x4020558c c2_reset() - *fill* 0x402055bf 0x1 - .text._Z19c2_programming_initv - 0x402055c0 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x6b (size before relaxing) - 0x402055c0 c2_programming_init() - *fill* 0x40205603 0x1 - .text._Z14c2_block_writejPhh - 0x40205604 0x193 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x21b (size before relaxing) - 0x40205604 c2_block_write(unsigned int, unsigned char*, unsigned char) - *fill* 0x40205797 0x1 - .text._Z15c2_device_erasev - 0x40205798 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1f7 (size before relaxing) - 0x40205798 c2_device_erase() - *fill* 0x40205907 0x1 - .text._ZL12value_of_hexh - 0x40205908 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x4020593a 0x2 - .text._Z10ihx_decodePht - 0x4020593c 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - 0xcb (size before relaxing) - 0x4020593c ihx_decode(unsigned char*, unsigned short) - *fill* 0x402059fb 0x1 + 0x402038f0 WiFiUDP::stopAll() + *fill* 0x40203916 0x2 .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x402059fc 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203918 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x4a (size before relaxing) - *fill* 0x40205a3b 0x1 + *fill* 0x40203957 0x1 .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x40205a3c 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203958 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x4a (size before relaxing) - *fill* 0x40205a7b 0x1 + *fill* 0x40203997 0x1 .text._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x40205a7c 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203998 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x52 (size before relaxing) - 0x40205a7c std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - *fill* 0x40205ac3 0x1 + 0x40203998 std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + *fill* 0x402039df 0x1 .text._ZN10UdpContext4readEPcj - 0x40205ac4 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402039e0 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x49 (size before relaxing) - 0x40205ac4 UdpContext::read(char*, unsigned int) - *fill* 0x40205b09 0x3 + 0x402039e0 UdpContext::read(char*, unsigned int) + *fill* 0x40203a25 0x3 .text._ZN10UdpContext6appendEPKcj - 0x40205b0c 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203a28 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xe2 (size before relaxing) - 0x40205b0c UdpContext::append(char const*, unsigned int) - *fill* 0x40205bda 0x2 + 0x40203a28 UdpContext::append(char const*, unsigned int) + *fill* 0x40203af6 0x2 .text._ZN10UdpContext4sendEP7ip_addrt - 0x40205bdc 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203af8 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xdd (size before relaxing) - 0x40205bdc UdpContext::send(ip_addr*, unsigned short) - *fill* 0x40205c99 0x3 + 0x40203af8 UdpContext::send(ip_addr*, unsigned short) + *fill* 0x40203bb5 0x3 .text._ZN13MDNSResponderC2Ev - 0x40205c9c 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203bb8 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x6a (size before relaxing) - 0x40205ca0 MDNSResponder::MDNSResponder() - 0x40205ca0 MDNSResponder::MDNSResponder() - *fill* 0x40205cf2 0x2 + 0x40203bbc MDNSResponder::MDNSResponder() + 0x40203bbc MDNSResponder::MDNSResponder() + *fill* 0x40203c0e 0x2 .text._ZN13MDNSResponder8hostnameEi - 0x40205cf4 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203c10 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x3f (size before relaxing) - 0x40205cf4 MDNSResponder::hostname(int) - *fill* 0x40205d23 0x1 + 0x40203c10 MDNSResponder::hostname(int) + *fill* 0x40203c3f 0x1 .text._ZN13MDNSResponder2IPEi - 0x40205d24 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203c40 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x43 (size before relaxing) - 0x40205d24 MDNSResponder::IP(int) - *fill* 0x40205d57 0x1 + 0x40203c40 MDNSResponder::IP(int) + *fill* 0x40203c73 0x1 .text._ZN13MDNSResponder4portEi - 0x40205d58 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203c74 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1c (size before relaxing) - 0x40205d58 MDNSResponder::port(int) + 0x40203c74 MDNSResponder::port(int) .text._ZN13MDNSResponder12queryServiceEPcS0_ - 0x40205d6c 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203c88 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x21c (size before relaxing) - 0x40205d88 MDNSResponder::queryService(char*, char*) + 0x40203ca4 MDNSResponder::queryService(char*, char*) .text._ZN13MDNSResponder14_getServiceTxtEPcS0_ - 0x40205f04 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203e20 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x54 (size before relaxing) - 0x40205f04 MDNSResponder::_getServiceTxt(char*, char*) + 0x40203e20 MDNSResponder::_getServiceTxt(char*, char*) .text._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ - 0x40205f50 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203e6c 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x59 (size before relaxing) - 0x40205f50 MDNSResponder::_getServiceTxtLen(char*, char*) - *fill* 0x40205fa1 0x3 + 0x40203e6c MDNSResponder::_getServiceTxtLen(char*, char*) + *fill* 0x40203ebd 0x3 .text._ZN13MDNSResponder15_getServicePortEPcS0_ - 0x40205fa4 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203ec0 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x5b (size before relaxing) - 0x40205fa4 MDNSResponder::_getServicePort(char*, char*) - *fill* 0x40205ff7 0x1 + 0x40203ec0 MDNSResponder::_getServicePort(char*, char*) + *fill* 0x40203f13 0x1 .text._ZN13MDNSResponder10addServiceEPcS0_t - 0x40205ff8 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203f14 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0xb5 (size before relaxing) - 0x40205ff8 MDNSResponder::addService(char*, char*, unsigned short) - *fill* 0x4020608d 0x3 + 0x40203f14 MDNSResponder::addService(char*, char*, unsigned short) + *fill* 0x40203fa9 0x3 .text._ZN13MDNSResponder9_getOurIpEv - 0x40206090 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203fac 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x37 (size before relaxing) - 0x40206090 MDNSResponder::_getOurIp() - *fill* 0x402060bb 0x1 + 0x40203fac MDNSResponder::_getOurIp() + *fill* 0x40203fd7 0x1 .text._ZN13MDNSResponder7_listenEv - 0x402060bc 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40203fd8 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x186 (size before relaxing) - 0x402060d0 MDNSResponder::_listen() - *fill* 0x402061f2 0x2 + 0x40203fec MDNSResponder::_listen() + *fill* 0x4020410e 0x2 .text._ZN13MDNSResponder8_restartEv - 0x402061f4 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40204110 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x86 (size before relaxing) - 0x402061f4 MDNSResponder::_restart() - *fill* 0x4020625a 0x2 + 0x40204110 MDNSResponder::_restart() + *fill* 0x40204176 0x2 .text._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ - 0x4020625c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40204178 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1b (size before relaxing) - *fill* 0x4020626f 0x1 + *fill* 0x4020418b 0x1 .text._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ - 0x40206270 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020418c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x1b (size before relaxing) - *fill* 0x40206283 0x1 + *fill* 0x4020419f 0x1 .text._ZN13MDNSResponder6_replyEhPcS0_t - 0x40206284 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x402041a0 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x692 (size before relaxing) - 0x40206288 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) - *fill* 0x40206706 0x2 + 0x402041a4 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) + *fill* 0x40204622 0x2 .text._ZN13MDNSResponder17advertiseServicesEv - 0x40206708 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40204624 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x42 (size before relaxing) - 0x40206708 MDNSResponder::advertiseServices() - *fill* 0x40206746 0x2 + 0x40204624 MDNSResponder::advertiseServices() + *fill* 0x40204662 0x2 .text._ZN13MDNSResponder12_parsePacketEv - 0x40206748 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40204664 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x7a5 (size before relaxing) - 0x40206764 MDNSResponder::_parsePacket() - *fill* 0x40206d41 0x3 + 0x40204680 MDNSResponder::_parsePacket() + *fill* 0x40204c5d 0x3 .text._ZN13MDNSResponder6updateEv - 0x40206d44 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x40204c60 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x62 (size before relaxing) - 0x40206d44 MDNSResponder::update() - *fill* 0x40206d96 0x2 + 0x40204c60 MDNSResponder::update() + *fill* 0x40204cb2 0x2 .text._ZN13MDNSResponderD2Ev - 0x40206d98 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0xb9 (size before relaxing) - 0x40206d98 MDNSResponder::~MDNSResponder() - 0x40206d98 MDNSResponder::~MDNSResponder() - *fill* 0x40206e1d 0x3 - .text._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x40206e20 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x37 (size before relaxing) - 0x40206e20 std::__shared_ptr::operator=(std::__shared_ptr&&) - *fill* 0x40206e4f 0x1 - .text._ZN13MDNSResponder5beginEPKc - 0x40206e50 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x14f (size before relaxing) - 0x40206e60 MDNSResponder::begin(char const*) - *fill* 0x40206f27 0x1 - .text.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev - 0x40206f28 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x38 (size before relaxing) - .text.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev - 0x40206f50 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x1d (size before relaxing) - *fill* 0x40206f65 0x3 - .text._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth - 0x40206f68 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x126 (size before relaxing) - 0x40206f68 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) - *fill* 0x40207072 0x2 - .text._ZN14Adafruit_SGP307IAQinitEv - 0x40207074 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x2b (size before relaxing) - 0x40207074 Adafruit_SGP30::IAQinit() - *fill* 0x40207097 0x1 - .text._ZN14Adafruit_SGP305beginEP7TwoWire - 0x40207098 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x9c (size before relaxing) - 0x40207098 Adafruit_SGP30::begin(TwoWire*) - .text._ZN14Adafruit_SGP3010IAQmeasureEv - 0x40207118 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x47 (size before relaxing) - 0x40207118 Adafruit_SGP30::IAQmeasure() - *fill* 0x4020715b 0x1 - .text._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ - 0x4020715c 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x4d (size before relaxing) - 0x4020715c Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) - *fill* 0x402071a1 0x3 - .text._ZN14RequestHandlerD2Ev - 0x402071a4 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x402071a8 RequestHandler::~RequestHandler() - 0x402071a8 RequestHandler::~RequestHandler() - *fill* 0x402071af 0x1 - .text._ZN14RequestHandlerD0Ev - 0x402071b0 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x1f (size before relaxing) - 0x402071b0 RequestHandler::~RequestHandler() - *fill* 0x402071c7 0x1 - .text._ZN22FunctionRequestHandler9canUploadE6String - 0x402071c8 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x54 (size before relaxing) - 0x402071c8 FunctionRequestHandler::canUpload(String) - .text._ZN10HTTPUploadC2Ev - 0x4020720c 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - *fill* 0x40207243 0x1 - .text._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x40207244 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x31 (size before relaxing) - 0x40207244 FunctionRequestHandler::canHandle(HTTPMethod, String) - *fill* 0x40207271 0x3 - .text._ZN22FunctionRequestHandlerD2Ev - 0x40207274 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - 0x40207278 FunctionRequestHandler::~FunctionRequestHandler() - 0x40207278 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x402072a7 0x1 - .text._ZN22FunctionRequestHandlerD0Ev - 0x402072a8 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x29 (size before relaxing) - 0x402072a8 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x402072c5 0x3 - .text._ZN16ESP8266WebServerC2Ei - 0x402072c8 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xab (size before relaxing) - 0x402072d0 ESP8266WebServer::ESP8266WebServer(int) - 0x402072d0 ESP8266WebServer::ESP8266WebServer(int) - *fill* 0x40207343 0x1 - .text._ZN16ESP8266WebServer5closeEv - 0x40207344 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x17 (size before relaxing) - 0x40207344 ESP8266WebServer::close() - *fill* 0x40207353 0x1 - .text._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b - 0x40207354 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xc5 (size before relaxing) - 0x4020735c ESP8266WebServer::sendHeader(String const&, String const&, bool) - *fill* 0x402073cd 0x3 - .text._ZN16ESP8266WebServer11sendContentERK6String - 0x402073d0 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x51 (size before relaxing) - 0x402073d0 ESP8266WebServer::sendContent(String const&) - *fill* 0x4020741d 0x3 - .text._ZN16ESP8266WebServer3argE6String - 0x40207420 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x79 (size before relaxing) - 0x40207420 ESP8266WebServer::arg(String) - *fill* 0x40207485 0x3 - .text._ZN16ESP8266WebServer3argEi - 0x40207488 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - 0x40207488 ESP8266WebServer::arg(int) - *fill* 0x402074c3 0x1 - .text._ZN16ESP8266WebServer7argNameEi - 0x402074c4 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x47 (size before relaxing) - 0x402074c4 ESP8266WebServer::argName(int) - *fill* 0x402074ff 0x1 - .text._ZN16ESP8266WebServer6hasArgE6String - 0x40207500 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x47 (size before relaxing) - 0x40207500 ESP8266WebServer::hasArg(String) - *fill* 0x40207543 0x1 - .text._ZN16ESP8266WebServer6headerE6String - 0x40207544 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x79 (size before relaxing) - 0x40207544 ESP8266WebServer::header(String) - *fill* 0x402075a9 0x3 - .text._ZN16ESP8266WebServer14collectHeadersEPPKcj - 0x402075ac 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x103 (size before relaxing) - 0x402075b4 ESP8266WebServer::collectHeaders(char const**, unsigned int) - *fill* 0x4020767f 0x1 - .text._ZN16ESP8266WebServer5beginEv - 0x40207680 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3b (size before relaxing) - 0x40207680 ESP8266WebServer::begin() - *fill* 0x402076ab 0x1 - .text._ZN16ESP8266WebServer9hasHeaderE6String - 0x402076ac 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x66 (size before relaxing) - 0x402076ac ESP8266WebServer::hasHeader(String) - *fill* 0x4020770e 0x2 - .text._ZN16ESP8266WebServer12authenticateEPKcS1_ - 0x40207710 0x1a9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x2b1 (size before relaxing) - 0x4020771c ESP8266WebServer::authenticate(char const*, char const*) - *fill* 0x402078b9 0x3 - .text._ZN16ESP8266WebServer10hostHeaderEv - 0x402078bc 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x27 (size before relaxing) - 0x402078bc ESP8266WebServer::hostHeader() - *fill* 0x402078db 0x1 - .text._ZN16ESP8266WebServer21_responseCodeToStringEi - 0x402078dc 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3b1 (size before relaxing) - 0x4020797c ESP8266WebServer::_responseCodeToString(int) - *fill* 0x40207c81 0x3 - .text._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj - 0x40207c84 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x27d (size before relaxing) - 0x40207ca8 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) - *fill* 0x40207e01 0x3 - .text._ZN16ESP8266WebServer4sendEiPKcRK6String - 0x40207e04 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x77 (size before relaxing) - 0x40207e04 ESP8266WebServer::send(int, char const*, String const&) - *fill* 0x40207e57 0x1 - .text._ZN16ESP8266WebServer21requestAuthenticationEv - 0x40207e58 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x95 (size before relaxing) - 0x40207e60 ESP8266WebServer::requestAuthentication() - *fill* 0x40207eb1 0x3 - .text._ZN16ESP8266WebServer4sendEiRK6StringS2_ - 0x40207eb4 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x18 (size before relaxing) - 0x40207eb4 ESP8266WebServer::send(int, String const&, String const&) - .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ - 0x40207ec8 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xb4 (size before relaxing) - 0x40207ec8 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) - .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE - 0x40207f38 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x66 (size before relaxing) - 0x40207f38 ESP8266WebServer::on(char const*, HTTPMethod, std::function) - *fill* 0x40207f7e 0x2 - .text._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE - 0x40207f80 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x45 (size before relaxing) - 0x40207f80 ESP8266WebServer::on(char const*, std::function) - *fill* 0x40207fb1 0x3 - .text._ZNKSt8functionIFvvEEclEv - 0x40207fb4 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x20 (size before relaxing) - 0x40207fb4 std::function::operator()() const - *fill* 0x40207fcd 0x3 - .text._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x40207fd0 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x55 (size before relaxing) - 0x40207fd0 FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) - *fill* 0x40208011 0x3 - .text._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x40208014 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4c (size before relaxing) - 0x40208014 FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) - .text._ZN16ESP8266WebServer14_handleRequestEv - 0x4020804c 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x10d (size before relaxing) - 0x40208054 ESP8266WebServer::_handleRequest() - *fill* 0x40208105 0x3 - .text._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x40208108 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4c (size before relaxing) - 0x40208108 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - 0x40208108 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - .text._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE - 0x40208148 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x19 (size before relaxing) - 0x40208148 ESP8266WebServer::onNotFound(std::function) - *fill* 0x4020815d 0x3 - .text._ZN16ESP8266WebServer12handleClientEv - 0x40208160 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x1c1 (size before relaxing) - 0x40208160 ESP8266WebServer::handleClient() - *fill* 0x40208291 0x3 - .text._ZNK6String9substringEj - 0x40208294 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x23 (size before relaxing) - 0x40208294 String::substring(unsigned int) const - *fill* 0x402082af 0x1 - .text._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ - 0x402082b0 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x66 (size before relaxing) - 0x402082b0 ESP8266WebServer::_collectHeader(char const*, char const*) - *fill* 0x4020830a 0x2 - .text._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x4020830c 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x40204cb4 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0xb9 (size before relaxing) + 0x40204cb4 MDNSResponder::~MDNSResponder() + 0x40204cb4 MDNSResponder::~MDNSResponder() + *fill* 0x40204d39 0x3 + .text._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ + 0x40204d3c 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) 0x37 (size before relaxing) - 0x40208310 ESP8266WebServer::RequestArgument::RequestArgument() - 0x40208310 ESP8266WebServer::RequestArgument::RequestArgument() - *fill* 0x40208337 0x1 - .text._ZN16ESP8266WebServer16_uploadWriteByteEh - 0x40208338 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xb5 (size before relaxing) - 0x4020833c ESP8266WebServer::_uploadWriteByte(unsigned char) - *fill* 0x402083d1 0x3 - .text._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient - 0x402083d4 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x5a (size before relaxing) - 0x402083d4 ESP8266WebServer::_uploadReadByte(WiFiClient&) - *fill* 0x4020842a 0x2 - .text._ZN16ESP8266WebServer9urlDecodeERK6String - 0x4020842c 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xce (size before relaxing) - 0x40208430 ESP8266WebServer::urlDecode(String const&) - *fill* 0x402084ce 0x2 - .text._ZN16ESP8266WebServer15_parseArgumentsE6String - 0x402084d0 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x1f2 (size before relaxing) - 0x402084d0 ESP8266WebServer::_parseArguments(String) - *fill* 0x4020865a 0x2 - .text._ZN16ESP8266WebServer23_parseFormUploadAbortedEv - 0x4020865c 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x40204d3c std::__shared_ptr::operator=(std::__shared_ptr&&) + *fill* 0x40204d6b 0x1 + .text._ZN13MDNSResponder5beginEPKc + 0x40204d6c 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x14f (size before relaxing) + 0x40204d7c MDNSResponder::begin(char const*) + *fill* 0x40204e43 0x1 + .text.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev + 0x40204e44 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x38 (size before relaxing) + .text.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev + 0x40204e6c 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x1d (size before relaxing) + *fill* 0x40204e81 0x3 + .text._ZN9DNSServerC2Ev + 0x40204e84 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x3e (size before relaxing) + 0x40204e8c DNSServer::DNSServer() + 0x40204e8c DNSServer::DNSServer() + *fill* 0x40204eb6 0x2 + .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String + 0x40204eb8 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x6d (size before relaxing) + 0x40204ebc DNSServer::downcaseAndRemoveWwwPrefix(String&) + *fill* 0x40204ef9 0x3 + .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv + 0x40204efc 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xad (size before relaxing) + 0x40204f00 DNSServer::getDomainNameWithoutWwwPrefix() + *fill* 0x40204f8d 0x3 + .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress + 0x40204f90 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x7c (size before relaxing) + 0x40204f90 DNSServer::start(unsigned short const&, String const&, IPAddress const&) + .text._ZN9DNSServer11replyWithIPEv + 0x40204ff4 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x109 (size before relaxing) + 0x40204ff4 DNSServer::replyWithIP() + *fill* 0x40205091 0x3 + .text._ZN9DNSServer19replyWithCustomCodeEv + 0x40205094 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) 0x89 (size before relaxing) - 0x4020865c ESP8266WebServer::_parseFormUploadAborted() - *fill* 0x402086c9 0x3 - .text._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj - 0x402086cc 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xc8c (size before relaxing) - 0x402086ec ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) - .text._ZN16ESP8266WebServer13_parseRequestER10WiFiClient - 0x40208f34 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x8d5 (size before relaxing) - 0x40208f58 ESP8266WebServer::_parseRequest(WiFiClient&) - *fill* 0x40209502 0x2 + 0x40205098 DNSServer::replyWithCustomCode() + *fill* 0x402050fd 0x3 + .text._ZN9DNSServer18processNextRequestEv + 0x40205100 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0xfd (size before relaxing) + 0x40205104 DNSServer::processNextRequest() + *fill* 0x402051a5 0x3 .text._ZN8RCSwitch11setProtocolEi - 0x40209504 0x2c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402051a8 0x2c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x30 (size before relaxing) - 0x40209508 RCSwitch::setProtocol(int) + 0x402051ac RCSwitch::setProtocol(int) .text._ZN8RCSwitchC2Ev - 0x40209530 0x43 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402051d4 0x43 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x47 (size before relaxing) - 0x40209538 RCSwitch::RCSwitch() - 0x40209538 RCSwitch::RCSwitch() - *fill* 0x40209573 0x1 + 0x402051dc RCSwitch::RCSwitch() + 0x402051dc RCSwitch::RCSwitch() + *fill* 0x40205217 0x1 .text._ZN8RCSwitch14enableTransmitEi - 0x40209574 0x19 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40205218 0x19 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x1d (size before relaxing) - 0x40209574 RCSwitch::enableTransmit(int) - *fill* 0x4020958d 0x3 + 0x40205218 RCSwitch::enableTransmit(int) + *fill* 0x40205231 0x3 .text._ZN8RCSwitch8transmitENS_7HighLowE - 0x40209590 0x5e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40205234 0x5e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x6e (size before relaxing) - 0x40209590 RCSwitch::transmit(RCSwitch::HighLow) - *fill* 0x402095ee 0x2 + 0x40205234 RCSwitch::transmit(RCSwitch::HighLow) + *fill* 0x40205292 0x2 .text._ZN8RCSwitch13enableReceiveEv - 0x402095f0 0x39 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40205294 0x3d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x41 (size before relaxing) - 0x402095f8 RCSwitch::enableReceive() - *fill* 0x40209629 0x3 + 0x402052a0 RCSwitch::enableReceive() + *fill* 0x402052d1 0x3 .text._ZN8RCSwitch13enableReceiveEi - 0x4020962c 0x14 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402052d4 0x14 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x18 (size before relaxing) - 0x4020962c RCSwitch::enableReceive(int) + 0x402052d4 RCSwitch::enableReceive(int) .text._ZN8RCSwitch14disableReceiveEv - 0x40209640 0x23 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x40209644 RCSwitch::disableReceive() - *fill* 0x40209663 0x1 + 0x402052e8 0x23 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402052ec RCSwitch::disableReceive() + *fill* 0x4020530b 0x1 .text._ZN8RCSwitch4sendEmj - 0x40209664 0x8c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x4020530c 0x8c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0xa8 (size before relaxing) - 0x40209664 RCSwitch::send(unsigned long, unsigned int) + 0x4020530c RCSwitch::send(unsigned long, unsigned int) .text._ZN8RCSwitch9availableEv - 0x402096f0 0x11 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x40205398 0x11 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x15 (size before relaxing) - 0x402096f0 RCSwitch::available() - *fill* 0x40209701 0x3 + 0x40205398 RCSwitch::available() + *fill* 0x402053a9 0x3 .text._ZN8RCSwitch14resetAvailableEv - 0x40209704 0xc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402053ac 0xc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x10 (size before relaxing) - 0x40209704 RCSwitch::resetAvailable() + 0x402053ac RCSwitch::resetAvailable() .text._ZN8RCSwitch16getReceivedValueEv - 0x40209710 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402053b8 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0xe (size before relaxing) - 0x40209710 RCSwitch::getReceivedValue() - *fill* 0x4020971a 0x2 + 0x402053b8 RCSwitch::getReceivedValue() + *fill* 0x402053c2 0x2 .text._ZN8RCSwitch20getReceivedBitlengthEv - 0x4020971c 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402053c4 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0xe (size before relaxing) - 0x4020971c RCSwitch::getReceivedBitlength() - *fill* 0x40209726 0x2 + 0x402053c4 RCSwitch::getReceivedBitlength() + *fill* 0x402053ce 0x2 .text._ZN8RCSwitch16getReceivedDelayEv - 0x40209728 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x4020972c RCSwitch::getReceivedDelay() - *fill* 0x40209736 0x2 + 0x402053d0 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402053d4 RCSwitch::getReceivedDelay() + *fill* 0x402053de 0x2 .text._ZN8RCSwitch19getReceivedProtocolEv - 0x40209738 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x4020973c RCSwitch::getReceivedProtocol() - *fill* 0x40209746 0x2 + 0x402053e0 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x402053e4 RCSwitch::getReceivedProtocol() + *fill* 0x402053ee 0x2 .text._ZN17ESP8266HTTPUpdate18getLastErrorStringEv - 0x40209748 0x174 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x402053f0 0x174 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) 0x1fc (size before relaxing) - 0x40209784 ESP8266HTTPUpdate::getLastErrorString() + 0x4020542c ESP8266HTTPUpdate::getLastErrorString() .text._ZN17ESP8266HTTPUpdate9runUpdateER6Streamj6Stringi - 0x402098bc 0xdd .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x40205564 0xdd .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) 0x12d (size before relaxing) - 0x402098bc ESP8266HTTPUpdate::runUpdate(Stream&, unsigned int, String, int) - *fill* 0x40209999 0x3 + 0x40205564 ESP8266HTTPUpdate::runUpdate(Stream&, unsigned int, String, int) + *fill* 0x40205641 0x3 .text._ZN17ESP8266HTTPUpdate12handleUpdateER10HTTPClientRK6Stringb - 0x4020999c 0x398 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x40205644 0x39c .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) 0x584 (size before relaxing) - 0x402099e0 ESP8266HTTPUpdate::handleUpdate(HTTPClient&, String const&, bool) + 0x4020568c ESP8266HTTPUpdate::handleUpdate(HTTPClient&, String const&, bool) .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_ - 0x40209d34 0x53 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x402059e0 0x53 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) 0x7f (size before relaxing) - 0x40209d34 ESP8266HTTPUpdate::update(String const&, String const&) - *fill* 0x40209d87 0x1 + 0x402059e0 ESP8266HTTPUpdate::update(String const&, String const&) + *fill* 0x40205a33 0x1 .text.startup._GLOBAL__sub_I__ZN17ESP8266HTTPUpdateC2Ev - 0x40209d88 0xe .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - *fill* 0x40209d96 0x2 + 0x40205a34 0xe .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + *fill* 0x40205a42 0x2 .text._ZN13TasmotaSerial5flushEv - 0x40209d98 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205a44 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x2b (size before relaxing) - 0x40209d98 TasmotaSerial::flush() - *fill* 0x40209db7 0x1 + 0x40205a44 TasmotaSerial::flush() + *fill* 0x40205a63 0x1 .text._ZN13TasmotaSerialD2Ev - 0x40209db8 0x47 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205a64 0x47 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x53 (size before relaxing) - 0x40209dc0 TasmotaSerial::~TasmotaSerial() - 0x40209dc0 TasmotaSerial::~TasmotaSerial() - *fill* 0x40209dff 0x1 + 0x40205a6c TasmotaSerial::~TasmotaSerial() + 0x40205a6c TasmotaSerial::~TasmotaSerial() + *fill* 0x40205aab 0x1 .text._ZN13TasmotaSerialD0Ev - 0x40209e00 0x1d .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205aac 0x1d .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x29 (size before relaxing) - 0x40209e00 TasmotaSerial::~TasmotaSerial() - *fill* 0x40209e1d 0x3 + 0x40205aac TasmotaSerial::~TasmotaSerial() + *fill* 0x40205ac9 0x3 .text._ZN13TasmotaSerial4peekEv - 0x40209e20 0x37 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205acc 0x37 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x3f (size before relaxing) - 0x40209e20 TasmotaSerial::peek() - *fill* 0x40209e57 0x1 + 0x40205acc TasmotaSerial::peek() + *fill* 0x40205b03 0x1 .text._ZN13TasmotaSerial4readEv - 0x40209e58 0x3f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205b04 0x3f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x47 (size before relaxing) - 0x40209e58 TasmotaSerial::read() - *fill* 0x40209e97 0x1 + 0x40205b04 TasmotaSerial::read() + *fill* 0x40205b43 0x1 .text._ZN13TasmotaSerial9availableEv - 0x40209e98 0x28 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205b44 0x28 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x34 (size before relaxing) - 0x40209e98 TasmotaSerial::available() + 0x40205b44 TasmotaSerial::available() .text._ZN13TasmotaSerial5writeEh - 0x40209ec0 0xdf .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205b6c 0xdf .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0xfb (size before relaxing) - 0x40209ec8 TasmotaSerial::write(unsigned char) - *fill* 0x40209f9f 0x1 + 0x40205b74 TasmotaSerial::write(unsigned char) + *fill* 0x40205c4b 0x1 .text._ZN13TasmotaSerialC2Eiib - 0x40209fa0 0x10b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205c4c 0x113 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x14b (size before relaxing) - 0x40209fa8 TasmotaSerial::TasmotaSerial(int, int, bool) - 0x40209fa8 TasmotaSerial::TasmotaSerial(int, int, bool) - *fill* 0x4020a0ab 0x1 + 0x40205c5c TasmotaSerial::TasmotaSerial(int, int, bool) + 0x40205c5c TasmotaSerial::TasmotaSerial(int, int, bool) + *fill* 0x40205d5f 0x1 .text._ZN13TasmotaSerial5beginEli - 0x4020a0ac 0x7b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205d60 0x7b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0xa3 (size before relaxing) - 0x4020a0ac TasmotaSerial::begin(long, int) - *fill* 0x4020a127 0x1 + 0x40205d60 TasmotaSerial::begin(long, int) + *fill* 0x40205ddb 0x1 .text._ZN13TasmotaSerial6rxReadEv - 0x4020a128 0xd2 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205ddc 0xd6 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0xde (size before relaxing) - 0x4020a12c TasmotaSerial::rxRead() - *fill* 0x4020a1fa 0x2 + 0x40205de4 TasmotaSerial::rxRead() + *fill* 0x40205eb2 0x2 .text._Z9tms_isr_0v - 0x4020a1fc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205eb4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a1fc tms_isr_0() - *fill* 0x4020a213 0x1 + 0x40205eb4 tms_isr_0() + *fill* 0x40205ecb 0x1 .text._Z9tms_isr_1v - 0x4020a214 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205ecc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a214 tms_isr_1() - *fill* 0x4020a22b 0x1 + 0x40205ecc tms_isr_1() + *fill* 0x40205ee3 0x1 .text._Z9tms_isr_2v - 0x4020a22c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205ee4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a22c tms_isr_2() - *fill* 0x4020a243 0x1 + 0x40205ee4 tms_isr_2() + *fill* 0x40205efb 0x1 .text._Z9tms_isr_3v - 0x4020a244 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205efc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a244 tms_isr_3() - *fill* 0x4020a25b 0x1 + 0x40205efc tms_isr_3() + *fill* 0x40205f13 0x1 .text._Z9tms_isr_4v - 0x4020a25c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f14 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a25c tms_isr_4() - *fill* 0x4020a273 0x1 + 0x40205f14 tms_isr_4() + *fill* 0x40205f2b 0x1 .text._Z9tms_isr_5v - 0x4020a274 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f2c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a274 tms_isr_5() - *fill* 0x4020a28b 0x1 + 0x40205f2c tms_isr_5() + *fill* 0x40205f43 0x1 .text._Z10tms_isr_12v - 0x4020a28c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f44 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a28c tms_isr_12() - *fill* 0x4020a2a3 0x1 + 0x40205f44 tms_isr_12() + *fill* 0x40205f5b 0x1 .text._Z10tms_isr_13v - 0x4020a2a4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f5c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a2a4 tms_isr_13() - *fill* 0x4020a2bb 0x1 + 0x40205f5c tms_isr_13() + *fill* 0x40205f73 0x1 .text._Z10tms_isr_14v - 0x4020a2bc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f74 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a2bc tms_isr_14() - *fill* 0x4020a2d3 0x1 + 0x40205f74 tms_isr_14() + *fill* 0x40205f8b 0x1 .text._Z10tms_isr_15v - 0x4020a2d4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x40205f8c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) 0x1f (size before relaxing) - 0x4020a2d4 tms_isr_15() - *fill* 0x4020a2eb 0x1 + 0x40205f8c tms_isr_15() + *fill* 0x40205fa3 0x1 .text._ZN13TasmotaModbusD2Ev - 0x4020a2ec 0x1b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x40205fa4 0x1b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0x1f (size before relaxing) - 0x4020a2f0 TasmotaModbus::~TasmotaModbus() - 0x4020a2f0 TasmotaModbus::~TasmotaModbus() - *fill* 0x4020a307 0x1 + 0x40205fa8 TasmotaModbus::~TasmotaModbus() + 0x40205fa8 TasmotaModbus::~TasmotaModbus() + *fill* 0x40205fbf 0x1 .text._ZN13TasmotaModbusD0Ev - 0x4020a308 0x1d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x40205fc0 0x1d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0x29 (size before relaxing) - 0x4020a308 TasmotaModbus::~TasmotaModbus() - *fill* 0x4020a325 0x3 + 0x40205fc0 TasmotaModbus::~TasmotaModbus() + *fill* 0x40205fdd 0x3 .text._ZN13TasmotaModbusC2Eii - 0x4020a328 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x40205fe0 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0x2c (size before relaxing) - 0x4020a328 TasmotaModbus::TasmotaModbus(int, int) - 0x4020a328 TasmotaModbus::TasmotaModbus(int, int) + 0x40205fe0 TasmotaModbus::TasmotaModbus(int, int) + 0x40205fe0 TasmotaModbus::TasmotaModbus(int, int) .text._Z12CalculateCRCPhh - 0x4020a34c 0x47 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x4020a354 CalculateCRC(unsigned char*, unsigned char) - *fill* 0x4020a393 0x1 + 0x40206004 0x47 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x4020600c CalculateCRC(unsigned char*, unsigned char) + *fill* 0x4020604b 0x1 .text._ZN13TasmotaModbus5BeginEli - 0x4020a394 0x2b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x4020604c 0x2b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0x37 (size before relaxing) - 0x4020a394 TasmotaModbus::Begin(long, int) - *fill* 0x4020a3bf 0x1 + 0x4020604c TasmotaModbus::Begin(long, int) + *fill* 0x40206077 0x1 .text._ZN13TasmotaModbus4SendEhhtt - 0x4020a3c0 0x5d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x40206078 0x5d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0x65 (size before relaxing) - 0x4020a3c0 TasmotaModbus::Send(unsigned char, unsigned char, unsigned short, unsigned short) - *fill* 0x4020a41d 0x3 + 0x40206078 TasmotaModbus::Send(unsigned char, unsigned char, unsigned short, unsigned short) + *fill* 0x402060d5 0x3 .text._ZN13TasmotaModbus13ReceiveBufferEPhh - 0x4020a420 0xea .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x402060d8 0xea .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) 0xfa (size before relaxing) - 0x4020a420 TasmotaModbus::ReceiveBuffer(unsigned char*, unsigned char) - *fill* 0x4020a50a 0x2 - .text._ZN13TasmotaModbus20Receive16BitRegisterEPt - 0x4020a50c 0x2a .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x402060d8 TasmotaModbus::ReceiveBuffer(unsigned char*, unsigned char) + *fill* 0x402061c2 0x2 + .text._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth + 0x402061c4 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x126 (size before relaxing) + 0x402061c4 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) + *fill* 0x402062ce 0x2 + .text._ZN14Adafruit_SGP307IAQinitEv + 0x402062d0 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x2b (size before relaxing) + 0x402062d0 Adafruit_SGP30::IAQinit() + *fill* 0x402062f3 0x1 + .text._ZN14Adafruit_SGP305beginEP7TwoWire + 0x402062f4 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x9c (size before relaxing) + 0x402062f4 Adafruit_SGP30::begin(TwoWire*) + .text._ZN14Adafruit_SGP3010IAQmeasureEv + 0x40206374 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x47 (size before relaxing) + 0x40206374 Adafruit_SGP30::IAQmeasure() + *fill* 0x402063b7 0x1 + .text._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ + 0x402063b8 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x4d (size before relaxing) + 0x402063b8 Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) + *fill* 0x402063fd 0x3 + .text._ZN15Adafruit_CCS8119_i2c_initEv + 0x40206400 0x22 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) 0x32 (size before relaxing) - 0x4020a50c TasmotaModbus::Receive16BitRegister(unsigned short*) - *fill* 0x4020a536 0x2 + 0x40206400 Adafruit_CCS811::_i2c_init() + *fill* 0x40206422 0x2 + .text._ZN15Adafruit_CCS8114readEhPhh + 0x40206424 0xa1 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0xbd (size before relaxing) + 0x40206424 Adafruit_CCS811::read(unsigned char, unsigned char*, unsigned char) + *fill* 0x402064c5 0x3 + .text._ZN15Adafruit_CCS8115read8Eh + 0x402064c8 0x1c .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x20 (size before relaxing) + 0x402064c8 Adafruit_CCS811::read8(unsigned char) + .text._ZN15Adafruit_CCS8119availableEv + 0x402064e4 0x5a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x5e (size before relaxing) + 0x402064e4 Adafruit_CCS811::available() + *fill* 0x4020653e 0x2 + .text._ZN15Adafruit_CCS81110checkErrorEv + 0x40206540 0x5a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x5e (size before relaxing) + 0x40206540 Adafruit_CCS811::checkError() + *fill* 0x4020659a 0x2 + .text._ZN15Adafruit_CCS8118readDataEv + 0x4020659c 0x57 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x63 (size before relaxing) + 0x4020659c Adafruit_CCS811::readData() + *fill* 0x402065f3 0x1 + .text._ZN15Adafruit_CCS8115writeEhPhh + 0x402065f4 0x45 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x65 (size before relaxing) + 0x402065f4 Adafruit_CCS811::write(unsigned char, unsigned char*, unsigned char) + *fill* 0x40206639 0x3 + .text._ZN15Adafruit_CCS81120setEnvironmentalDataEhd + 0x4020663c 0x9b .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0xab (size before relaxing) + 0x40206654 Adafruit_CCS811::setEnvironmentalData(unsigned char, double) + *fill* 0x402066d7 0x1 + .text._ZN15Adafruit_CCS8117SWResetEv + 0x402066d8 0x38 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x3c (size before relaxing) + 0x402066dc Adafruit_CCS811::SWReset() + .text._ZN15Adafruit_CCS8116write8Ehh + 0x40206710 0x1c .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x20 (size before relaxing) + 0x40206710 Adafruit_CCS811::write8(unsigned char, unsigned char) + .text._ZN15Adafruit_CCS81112setDriveModeEh + 0x4020672c 0x36 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x42 (size before relaxing) + 0x4020672c Adafruit_CCS811::setDriveMode(unsigned char) + *fill* 0x40206762 0x2 + .text._ZN15Adafruit_CCS81116disableInterruptEv + 0x40206764 0x2d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x39 (size before relaxing) + 0x40206764 Adafruit_CCS811::disableInterrupt() + *fill* 0x40206791 0x3 + .text._ZN15Adafruit_CCS8115beginEh + 0x40206794 0x7a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0xba (size before relaxing) + 0x40206794 Adafruit_CCS811::begin(unsigned char) + *fill* 0x4020680e 0x2 .text._ZN12PubSubClientC2ER6Client - 0x4020a538 0x51 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206810 0x51 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x5d (size before relaxing) - 0x4020a540 PubSubClient::PubSubClient(Client&) - 0x4020a540 PubSubClient::PubSubClient(Client&) - *fill* 0x4020a589 0x3 + 0x40206818 PubSubClient::PubSubClient(Client&) + 0x40206818 PubSubClient::PubSubClient(Client&) + *fill* 0x40206861 0x3 .text._ZN12PubSubClient8readByteEPh - 0x4020a58c 0x65 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206864 0x65 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x75 (size before relaxing) - 0x4020a590 PubSubClient::readByte(unsigned char*) - *fill* 0x4020a5f1 0x3 + 0x40206868 PubSubClient::readByte(unsigned char*) + *fill* 0x402068c9 0x3 .text._ZN12PubSubClient8readByteEPhPt - 0x4020a5f4 0x2f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x402068cc 0x2f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x33 (size before relaxing) - 0x4020a5f4 PubSubClient::readByte(unsigned char*, unsigned short*) - *fill* 0x4020a623 0x1 + 0x402068cc PubSubClient::readByte(unsigned char*, unsigned short*) + *fill* 0x402068fb 0x1 .text._ZN12PubSubClient10readPacketEPh - 0x4020a624 0x183 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x402068fc 0x183 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x19f (size before relaxing) - 0x4020a624 PubSubClient::readPacket(unsigned char*) - *fill* 0x4020a7a7 0x1 + 0x402068fc PubSubClient::readPacket(unsigned char*) + *fill* 0x40206a7f 0x1 .text._ZN12PubSubClient5writeEhPht - 0x4020a7a8 0x8d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206a80 0x8d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x91 (size before relaxing) - 0x4020a7a8 PubSubClient::write(unsigned char, unsigned char*, unsigned short) - *fill* 0x4020a835 0x3 + 0x40206a80 PubSubClient::write(unsigned char, unsigned char*, unsigned short) + *fill* 0x40206b0d 0x3 .text._ZN12PubSubClient10disconnectEv - 0x4020a838 0x54 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206b10 0x54 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x58 (size before relaxing) - 0x4020a838 PubSubClient::disconnect() + 0x40206b10 PubSubClient::disconnect() .text._ZN12PubSubClient7connectEPKcS1_S1_S1_hhS1_ - 0x4020a88c 0x1a5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206b64 0x1a5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x1f1 (size before relaxing) - 0x4020a890 PubSubClient::connect(char const*, char const*, char const*, char const*, unsigned char, unsigned char, char const*) - *fill* 0x4020aa31 0x3 + 0x40206b68 PubSubClient::connect(char const*, char const*, char const*, char const*, unsigned char, unsigned char, char const*) + *fill* 0x40206d09 0x3 .text._ZN12PubSubClient7publishEPKcPKhjh - 0x4020aa34 0x93 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206d0c 0x93 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0xa7 (size before relaxing) - 0x4020aa34 PubSubClient::publish(char const*, unsigned char const*, unsigned int, unsigned char) - *fill* 0x4020aac7 0x1 + 0x40206d0c PubSubClient::publish(char const*, unsigned char const*, unsigned int, unsigned char) + *fill* 0x40206d9f 0x1 .text._ZN12PubSubClient7publishEPKcS1_h - 0x4020aac8 0x35 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206da0 0x35 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x3d (size before relaxing) - 0x4020aac8 PubSubClient::publish(char const*, char const*, unsigned char) - *fill* 0x4020aafd 0x3 + 0x40206da0 PubSubClient::publish(char const*, char const*, unsigned char) + *fill* 0x40206dd5 0x3 .text._ZN12PubSubClient9subscribeEPKch - 0x4020ab00 0x8c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206dd8 0x8c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0xa0 (size before relaxing) - 0x4020ab00 PubSubClient::subscribe(char const*, unsigned char) + 0x40206dd8 PubSubClient::subscribe(char const*, unsigned char) .text._ZN12PubSubClient9subscribeEPKc - 0x4020ab8c 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206e64 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x18 (size before relaxing) - 0x4020ab8c PubSubClient::subscribe(char const*) + 0x40206e64 PubSubClient::subscribe(char const*) .text._ZN12PubSubClient4loopEv - 0x4020aba0 0x1c9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40206e78 0x1c9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x1ed (size before relaxing) - 0x4020aba0 PubSubClient::loop() - *fill* 0x4020ad69 0x3 + 0x40206e78 PubSubClient::loop() + *fill* 0x40207041 0x3 .text._ZN12PubSubClient9setServerEPKct - 0x4020ad6c 0x2c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40207044 0x2c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x30 (size before relaxing) - 0x4020ad6c PubSubClient::setServer(char const*, unsigned short) + 0x40207044 PubSubClient::setServer(char const*, unsigned short) .text._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x4020ad98 0x40 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x40207070 0x40 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x4c (size before relaxing) - 0x4020ad98 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - 0x4020ad98 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40207070 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40207070 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) .text._ZN12PubSubClient11setCallbackESt8functionIFvPcPhjEE - 0x4020add8 0x1d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x402070b0 0x1d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) 0x21 (size before relaxing) - 0x4020add8 PubSubClient::setCallback(std::function) - *fill* 0x4020adf5 0x3 + 0x402070b0 PubSubClient::setCallback(std::function) + *fill* 0x402070cd 0x3 + .text._ZN14RequestHandlerD2Ev + 0x402070d0 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x402070d4 RequestHandler::~RequestHandler() + 0x402070d4 RequestHandler::~RequestHandler() + *fill* 0x402070db 0x1 + .text._ZN14RequestHandlerD0Ev + 0x402070dc 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x1f (size before relaxing) + 0x402070dc RequestHandler::~RequestHandler() + *fill* 0x402070f3 0x1 + .text._ZN22FunctionRequestHandler9canUploadE6String + 0x402070f4 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x54 (size before relaxing) + 0x402070f4 FunctionRequestHandler::canUpload(String) + .text._ZN10HTTPUploadC2Ev + 0x40207138 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + *fill* 0x4020716f 0x1 + .text._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String + 0x40207170 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x31 (size before relaxing) + 0x40207170 FunctionRequestHandler::canHandle(HTTPMethod, String) + *fill* 0x4020719d 0x3 + .text._ZN22FunctionRequestHandlerD2Ev + 0x402071a0 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + 0x402071a4 FunctionRequestHandler::~FunctionRequestHandler() + 0x402071a4 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x402071d3 0x1 + .text._ZN22FunctionRequestHandlerD0Ev + 0x402071d4 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x29 (size before relaxing) + 0x402071d4 FunctionRequestHandler::~FunctionRequestHandler() + *fill* 0x402071f1 0x3 + .text._ZN16ESP8266WebServerC2Ei + 0x402071f4 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xab (size before relaxing) + 0x402071fc ESP8266WebServer::ESP8266WebServer(int) + 0x402071fc ESP8266WebServer::ESP8266WebServer(int) + *fill* 0x4020726f 0x1 + .text._ZN16ESP8266WebServer5closeEv + 0x40207270 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x17 (size before relaxing) + 0x40207270 ESP8266WebServer::close() + *fill* 0x4020727f 0x1 + .text._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b + 0x40207280 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xc5 (size before relaxing) + 0x40207288 ESP8266WebServer::sendHeader(String const&, String const&, bool) + *fill* 0x402072f9 0x3 + .text._ZN16ESP8266WebServer11sendContentERK6String + 0x402072fc 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x51 (size before relaxing) + 0x402072fc ESP8266WebServer::sendContent(String const&) + *fill* 0x40207349 0x3 + .text._ZN16ESP8266WebServer3argE6String + 0x4020734c 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x79 (size before relaxing) + 0x4020734c ESP8266WebServer::arg(String) + *fill* 0x402073b1 0x3 + .text._ZN16ESP8266WebServer3argEi + 0x402073b4 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4b (size before relaxing) + 0x402073b4 ESP8266WebServer::arg(int) + *fill* 0x402073ef 0x1 + .text._ZN16ESP8266WebServer7argNameEi + 0x402073f0 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x47 (size before relaxing) + 0x402073f0 ESP8266WebServer::argName(int) + *fill* 0x4020742b 0x1 + .text._ZN16ESP8266WebServer6hasArgE6String + 0x4020742c 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x47 (size before relaxing) + 0x4020742c ESP8266WebServer::hasArg(String) + *fill* 0x4020746f 0x1 + .text._ZN16ESP8266WebServer6headerE6String + 0x40207470 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x79 (size before relaxing) + 0x40207470 ESP8266WebServer::header(String) + *fill* 0x402074d5 0x3 + .text._ZN16ESP8266WebServer14collectHeadersEPPKcj + 0x402074d8 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x103 (size before relaxing) + 0x402074e0 ESP8266WebServer::collectHeaders(char const**, unsigned int) + *fill* 0x402075ab 0x1 + .text._ZN16ESP8266WebServer5beginEv + 0x402075ac 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3b (size before relaxing) + 0x402075ac ESP8266WebServer::begin() + *fill* 0x402075d7 0x1 + .text._ZN16ESP8266WebServer9hasHeaderE6String + 0x402075d8 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x66 (size before relaxing) + 0x402075d8 ESP8266WebServer::hasHeader(String) + *fill* 0x4020763a 0x2 + .text._ZN16ESP8266WebServer12authenticateEPKcS1_ + 0x4020763c 0x1a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x2b1 (size before relaxing) + 0x40207644 ESP8266WebServer::authenticate(char const*, char const*) + *fill* 0x402077e1 0x3 + .text._ZN16ESP8266WebServer10hostHeaderEv + 0x402077e4 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x27 (size before relaxing) + 0x402077e4 ESP8266WebServer::hostHeader() + *fill* 0x40207803 0x1 + .text._ZN16ESP8266WebServer21_responseCodeToStringEi + 0x40207804 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x3b1 (size before relaxing) + 0x402078a4 ESP8266WebServer::_responseCodeToString(int) + *fill* 0x40207ba9 0x3 + .text._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj + 0x40207bac 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x27d (size before relaxing) + 0x40207bd0 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) + *fill* 0x40207d29 0x3 + .text._ZN16ESP8266WebServer4sendEiPKcRK6String + 0x40207d2c 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x77 (size before relaxing) + 0x40207d2c ESP8266WebServer::send(int, char const*, String const&) + *fill* 0x40207d7f 0x1 + .text._ZN16ESP8266WebServer21requestAuthenticationEv + 0x40207d80 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x95 (size before relaxing) + 0x40207d88 ESP8266WebServer::requestAuthentication() + *fill* 0x40207dd9 0x3 + .text._ZN16ESP8266WebServer4sendEiRK6StringS2_ + 0x40207ddc 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x18 (size before relaxing) + 0x40207ddc ESP8266WebServer::send(int, String const&, String const&) + .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ + 0x40207df0 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0xb4 (size before relaxing) + 0x40207df0 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) + .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE + 0x40207e60 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x66 (size before relaxing) + 0x40207e60 ESP8266WebServer::on(char const*, HTTPMethod, std::function) + *fill* 0x40207ea6 0x2 + .text._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE + 0x40207ea8 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x45 (size before relaxing) + 0x40207ea8 ESP8266WebServer::on(char const*, std::function) + *fill* 0x40207ed9 0x3 + .text._ZNKSt8functionIFvvEEclEv + 0x40207edc 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x20 (size before relaxing) + 0x40207edc std::function::operator()() const + *fill* 0x40207ef5 0x3 + .text._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x40207ef8 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x55 (size before relaxing) + 0x40207ef8 FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + *fill* 0x40207f39 0x3 + .text._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x40207f3c 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4c (size before relaxing) + 0x40207f3c FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + .text._ZN16ESP8266WebServer14_handleRequestEv + 0x40207f74 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x10d (size before relaxing) + 0x40207f7c ESP8266WebServer::_handleRequest() + *fill* 0x4020802d 0x3 + .text._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ + 0x40208030 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4c (size before relaxing) + 0x40208030 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + 0x40208030 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) + .text._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE + 0x40208070 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x19 (size before relaxing) + 0x40208070 ESP8266WebServer::onNotFound(std::function) + *fill* 0x40208085 0x3 + .text._ZN16ESP8266WebServer12handleClientEv + 0x40208088 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x1c1 (size before relaxing) + 0x40208088 ESP8266WebServer::handleClient() + *fill* 0x402081b9 0x3 + .text._ZNK6String9substringEj + 0x402081bc 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x23 (size before relaxing) + 0x402081bc String::substring(unsigned int) const + *fill* 0x402081d7 0x1 + .text._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ + 0x402081d8 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x66 (size before relaxing) + 0x402081d8 ESP8266WebServer::_collectHeader(char const*, char const*) + *fill* 0x40208232 0x2 + .text._ZN16ESP8266WebServer15RequestArgumentC2Ev + 0x40208234 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x37 (size before relaxing) + 0x40208238 ESP8266WebServer::RequestArgument::RequestArgument() + 0x40208238 ESP8266WebServer::RequestArgument::RequestArgument() + *fill* 0x4020825f 0x1 + .text._ZN16ESP8266WebServer16_uploadWriteByteEh + 0x40208260 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xb5 (size before relaxing) + 0x40208264 ESP8266WebServer::_uploadWriteByte(unsigned char) + *fill* 0x402082f9 0x3 + .text._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient + 0x402082fc 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x5a (size before relaxing) + 0x402082fc ESP8266WebServer::_uploadReadByte(WiFiClient&) + *fill* 0x40208352 0x2 + .text._ZN16ESP8266WebServer9urlDecodeERK6String + 0x40208354 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xce (size before relaxing) + 0x40208358 ESP8266WebServer::urlDecode(String const&) + *fill* 0x402083f6 0x2 + .text._ZN16ESP8266WebServer15_parseArgumentsE6String + 0x402083f8 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x1f2 (size before relaxing) + 0x402083f8 ESP8266WebServer::_parseArguments(String) + *fill* 0x40208582 0x2 + .text._ZN16ESP8266WebServer23_parseFormUploadAbortedEv + 0x40208584 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x89 (size before relaxing) + 0x40208584 ESP8266WebServer::_parseFormUploadAborted() + *fill* 0x402085f1 0x3 + .text._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj + 0x402085f4 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0xc8c (size before relaxing) + 0x40208614 ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) + .text._ZN16ESP8266WebServer13_parseRequestER10WiFiClient + 0x40208e5c 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + 0x8d5 (size before relaxing) + 0x40208e80 ESP8266WebServer::_parseRequest(WiFiClient&) + *fill* 0x4020942a 0x2 .text._ZN8EspClass17rtcUserMemoryReadEjPjj - 0x4020adf8 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020adfc EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int) - *fill* 0x4020ae23 0x1 + 0x4020942c 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209430 EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int) + *fill* 0x40209457 0x1 .text._ZN8EspClass18rtcUserMemoryWriteEjPjj - 0x4020ae24 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020ae28 EspClass::rtcUserMemoryWrite(unsigned int, unsigned int*, unsigned int) - *fill* 0x4020ae4f 0x1 + 0x40209458 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020945c EspClass::rtcUserMemoryWrite(unsigned int, unsigned int*, unsigned int) + *fill* 0x40209483 0x1 .text._ZN8EspClass5resetEv - 0x4020ae50 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209484 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020ae50 EspClass::reset() - *fill* 0x4020ae5f 0x1 + 0x40209484 EspClass::reset() + *fill* 0x40209493 0x1 .text._ZN8EspClass7restartEv - 0x4020ae60 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209494 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x21 (size before relaxing) - 0x4020ae60 EspClass::restart() - *fill* 0x4020ae75 0x3 + 0x40209494 EspClass::restart() + *fill* 0x402094a9 0x3 .text._ZN8EspClass6getVccEv - 0x4020ae78 0x1f .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402094ac 0x1f .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x23 (size before relaxing) - 0x4020ae78 EspClass::getVcc() - *fill* 0x4020ae97 0x1 + 0x402094ac EspClass::getVcc() + *fill* 0x402094cb 0x1 .text._ZN8EspClass11getFreeHeapEv - 0x4020ae98 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402094cc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020ae98 EspClass::getFreeHeap() - *fill* 0x4020aea7 0x1 + 0x402094cc EspClass::getFreeHeap() + *fill* 0x402094db 0x1 .text._ZN8EspClass9getChipIdEv - 0x4020aea8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402094dc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020aea8 EspClass::getChipId() - *fill* 0x4020aeb7 0x1 + 0x402094dc EspClass::getChipId() + *fill* 0x402094eb 0x1 .text._ZN8EspClass13getSdkVersionEv - 0x4020aeb8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402094ec 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020aeb8 EspClass::getSdkVersion() - *fill* 0x4020aec7 0x1 + 0x402094ec EspClass::getSdkVersion() + *fill* 0x402094fb 0x1 .text._ZN8EspClass14getBootVersionEv - 0x4020aec8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402094fc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020aec8 EspClass::getBootVersion() - *fill* 0x4020aed7 0x1 + 0x402094fc EspClass::getBootVersion() + *fill* 0x4020950b 0x1 .text._ZN8EspClass13getCpuFreqMHzEv - 0x4020aed8 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020950c 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x17 (size before relaxing) - 0x4020aed8 EspClass::getCpuFreqMHz() - *fill* 0x4020aee7 0x1 + 0x4020950c EspClass::getCpuFreqMHz() + *fill* 0x4020951b 0x1 .text._ZN8EspClass14getFlashChipIdEv - 0x4020aee8 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020aeec EspClass::getFlashChipId() - *fill* 0x4020aeff 0x1 + 0x4020951c 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209520 EspClass::getFlashChipId() + *fill* 0x40209533 0x1 .text._ZN8EspClass20getFlashChipRealSizeEv - 0x4020af00 0x1e .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209534 0x1e .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x22 (size before relaxing) - 0x4020af00 EspClass::getFlashChipRealSize() - *fill* 0x4020af1e 0x2 + 0x40209534 EspClass::getFlashChipRealSize() + *fill* 0x40209552 0x2 .text._ZN8EspClass16getFlashChipSizeEv - 0x4020af20 0x39 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020af28 EspClass::getFlashChipSize() - *fill* 0x4020af59 0x3 + 0x40209554 0x39 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020955c EspClass::getFlashChipSize() + *fill* 0x4020958d 0x3 .text._ZN8EspClass16getFlashChipModeEv - 0x4020af5c 0x27 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209590 0x27 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x2b (size before relaxing) - 0x4020af5c EspClass::getFlashChipMode() - *fill* 0x4020af83 0x1 + 0x40209590 EspClass::getFlashChipMode() + *fill* 0x402095b7 0x1 .text._ZN8EspClass18magicFlashChipSizeEh - 0x4020af84 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402095b8 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x16 (size before relaxing) - 0x4020af84 EspClass::magicFlashChipSize(unsigned char) - *fill* 0x4020af96 0x2 + 0x402095b8 EspClass::magicFlashChipSize(unsigned char) + *fill* 0x402095ca 0x2 .text._ZN8EspClass16checkFlashConfigEb - 0x4020af98 0x54 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402095cc 0x54 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x6c (size before relaxing) - 0x4020af98 EspClass::checkFlashConfig(bool) + 0x402095cc EspClass::checkFlashConfig(bool) .text._ZN8EspClass14getResetReasonEv - 0x4020afec 0x9b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209620 0x9b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0xa7 (size before relaxing) - 0x4020b014 EspClass::getResetReason() - *fill* 0x4020b087 0x1 + 0x40209648 EspClass::getResetReason() + *fill* 0x402096bb 0x1 .text._ZN8EspClass12getResetInfoEv - 0x4020b088 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402096bc 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0xb0 (size before relaxing) - 0x4020b0ac EspClass::getResetInfo() + 0x402096e0 EspClass::getResetInfo() .text._ZN8EspClass13getSketchSizeEv - 0x4020b12c 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209760 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x85 (size before relaxing) - 0x4020b138 EspClass::getSketchSize() - *fill* 0x4020b1a9 0x3 + 0x4020976c EspClass::getSketchSize() + *fill* 0x402097dd 0x3 .text._ZN8EspClass18getFreeSketchSpaceEv - 0x4020b1ac 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x402097e0 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x3d (size before relaxing) - 0x4020b1b8 EspClass::getFreeSketchSpace() - *fill* 0x4020b1dd 0x3 + 0x402097ec EspClass::getFreeSketchSpace() + *fill* 0x40209811 0x3 .text._ZN8EspClass16flashEraseSectorEj - 0x4020b1e0 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209814 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x44 (size before relaxing) - 0x4020b1e4 EspClass::flashEraseSector(unsigned int) + 0x40209818 EspClass::flashEraseSector(unsigned int) .text._ZN8EspClass10flashWriteEjPjj - 0x4020b21c 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x40209850 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x51 (size before relaxing) - 0x4020b220 EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) - *fill* 0x4020b265 0x3 + 0x40209854 EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) + *fill* 0x40209899 0x3 .text._ZN8EspClass9flashReadEjPjj - 0x4020b268 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + 0x4020989c 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) 0x51 (size before relaxing) - 0x4020b268 EspClass::flashRead(unsigned int, unsigned int*, unsigned int) - *fill* 0x4020b2ad 0x3 + 0x4020989c EspClass::flashRead(unsigned int, unsigned int*, unsigned int) + *fill* 0x402098e1 0x3 .text._ZN14HardwareSerialD2Ev - 0x4020b2b0 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x4020b2b4 HardwareSerial::~HardwareSerial() - 0x4020b2b4 HardwareSerial::~HardwareSerial() - *fill* 0x4020b2bb 0x1 + 0x402098e4 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x402098e8 HardwareSerial::~HardwareSerial() + 0x402098e8 HardwareSerial::~HardwareSerial() + *fill* 0x402098ef 0x1 .text._ZN14HardwareSerialD0Ev - 0x4020b2bc 0x17 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x402098f0 0x17 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x1f (size before relaxing) - 0x4020b2bc HardwareSerial::~HardwareSerial() - *fill* 0x4020b2d3 0x1 + 0x402098f0 HardwareSerial::~HardwareSerial() + *fill* 0x40209907 0x1 .text._ZN14HardwareSerial5flushEv - 0x4020b2d4 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209908 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x2f (size before relaxing) - 0x4020b2d4 HardwareSerial::flush() - *fill* 0x4020b2f7 0x1 + 0x40209908 HardwareSerial::flush() + *fill* 0x4020992b 0x1 .text._ZN14HardwareSerial5writeEh - 0x4020b2f8 0x37 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x4020992c 0x37 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x3f (size before relaxing) - 0x4020b2f8 HardwareSerial::write(unsigned char) - *fill* 0x4020b32f 0x1 + 0x4020992c HardwareSerial::write(unsigned char) + *fill* 0x40209963 0x1 .text._ZN14HardwareSerial9availableEv - 0x4020b330 0x51 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209964 0x51 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x61 (size before relaxing) - 0x4020b330 HardwareSerial::available() - *fill* 0x4020b381 0x3 + 0x40209964 HardwareSerial::available() + *fill* 0x402099b5 0x3 .text._ZN14HardwareSerial4peekEv - 0x4020b384 0x21 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x402099b8 0x21 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x25 (size before relaxing) - 0x4020b384 HardwareSerial::peek() - *fill* 0x4020b3a5 0x3 + 0x402099b8 HardwareSerial::peek() + *fill* 0x402099d9 0x3 .text._ZN14HardwareSerial4readEv - 0x4020b3a8 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x402099dc 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x4a (size before relaxing) - 0x4020b3a8 HardwareSerial::read() - *fill* 0x4020b3e6 0x2 + 0x402099dc HardwareSerial::read() + *fill* 0x40209a1a 0x2 .text._ZN14HardwareSerialC2Ei - 0x4020b3e8 0x18 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209a1c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x1c (size before relaxing) - 0x4020b3e8 HardwareSerial::HardwareSerial(int) - 0x4020b3e8 HardwareSerial::HardwareSerial(int) + 0x40209a1c HardwareSerial::HardwareSerial(int) + 0x40209a1c HardwareSerial::HardwareSerial(int) .text._ZN14HardwareSerial5beginEm12SerialConfig10SerialModeh - 0x4020b400 0x55 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209a34 0x55 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x6d (size before relaxing) - 0x4020b400 HardwareSerial::begin(unsigned long, SerialConfig, SerialMode, unsigned char) - *fill* 0x4020b455 0x3 + 0x40209a34 HardwareSerial::begin(unsigned long, SerialConfig, SerialMode, unsigned char) + *fill* 0x40209a89 0x3 .text._ZN14HardwareSerial6set_txEh - 0x4020b458 0x19 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209a8c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x1d (size before relaxing) - 0x4020b458 HardwareSerial::set_tx(unsigned char) - *fill* 0x4020b471 0x3 + 0x40209a8c HardwareSerial::set_tx(unsigned char) + *fill* 0x40209aa5 0x3 .text._ZN14HardwareSerial8baudRateEv - 0x4020b474 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209aa8 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x18 (size before relaxing) - 0x4020b474 HardwareSerial::baudRate() + 0x40209aa8 HardwareSerial::baudRate() .text.startup._GLOBAL__sub_I__ZN14HardwareSerialC2Ei - 0x4020b488 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209abc 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x33 (size before relaxing) - *fill* 0x4020b4ab 0x1 + *fill* 0x40209adf 0x1 .text.exit._GLOBAL__sub_D__ZN14HardwareSerialC2Ei - 0x4020b4ac 0xf .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) + 0x40209ae0 0xf .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) 0x1b (size before relaxing) - *fill* 0x4020b4bb 0x1 + *fill* 0x40209aef 0x1 .text._ZNK9IPAddress7printToER5Print - 0x4020b4bc 0x53 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209af0 0x53 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0x67 (size before relaxing) - 0x4020b4bc IPAddress::printTo(Print&) const - *fill* 0x4020b50f 0x1 + 0x40209af0 IPAddress::printTo(Print&) const + *fill* 0x40209b43 0x1 .text._ZN9IPAddressC2Ev - 0x4020b510 0xb .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209b44 0xb .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0xf (size before relaxing) - 0x4020b510 IPAddress::IPAddress() - 0x4020b510 IPAddress::IPAddress() - *fill* 0x4020b51b 0x1 + 0x40209b44 IPAddress::IPAddress() + 0x40209b44 IPAddress::IPAddress() + *fill* 0x40209b4f 0x1 .text._ZN9IPAddressC2Ehhhh - 0x4020b51c 0x13 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209b50 0x13 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0x17 (size before relaxing) - 0x4020b51c IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) - 0x4020b51c IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) - *fill* 0x4020b52f 0x1 + 0x40209b50 IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) + 0x40209b50 IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) + *fill* 0x40209b63 0x1 .text._ZN9IPAddressC2Ej - 0x4020b530 0x9 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209b64 0x9 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0xd (size before relaxing) - 0x4020b530 IPAddress::IPAddress(unsigned int) - 0x4020b530 IPAddress::IPAddress(unsigned int) - *fill* 0x4020b539 0x3 + 0x40209b64 IPAddress::IPAddress(unsigned int) + 0x40209b64 IPAddress::IPAddress(unsigned int) + *fill* 0x40209b6d 0x3 .text._ZN9IPAddressC2EPKh - 0x4020b53c 0x21 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209b70 0x21 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0x25 (size before relaxing) - 0x4020b53c IPAddress::IPAddress(unsigned char const*) - 0x4020b53c IPAddress::IPAddress(unsigned char const*) - *fill* 0x4020b55d 0x3 + 0x40209b70 IPAddress::IPAddress(unsigned char const*) + 0x40209b70 IPAddress::IPAddress(unsigned char const*) + *fill* 0x40209b91 0x3 .text._ZN9IPAddress8toStringEv - 0x4020b560 0x3b .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209b94 0x3b .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0x43 (size before relaxing) - 0x4020b564 IPAddress::toString() - *fill* 0x4020b59b 0x1 + 0x40209b98 IPAddress::toString() + *fill* 0x40209bcf 0x1 .text.startup._GLOBAL__sub_I__ZN9IPAddressC2Ev - 0x4020b59c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x40209bd0 0x1c .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) 0x20 (size before relaxing) .text._ZN10MD5Builder5beginEv - 0x4020b5b8 0x2b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x40209bec 0x2b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) 0x2f (size before relaxing) - 0x4020b5bc MD5Builder::begin() - *fill* 0x4020b5e3 0x1 + 0x40209bf0 MD5Builder::begin() + *fill* 0x40209c17 0x1 .text._ZN10MD5Builder3addEPht - 0x4020b5e4 0x19 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x4020b5e8 MD5Builder::add(unsigned char*, unsigned short) - *fill* 0x4020b5fd 0x3 + 0x40209c18 0x19 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x40209c1c MD5Builder::add(unsigned char*, unsigned short) + *fill* 0x40209c31 0x3 .text._ZN10MD5Builder9calculateEv - 0x4020b600 0x1b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x4020b604 MD5Builder::calculate() - *fill* 0x4020b61b 0x1 + 0x40209c34 0x1b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x40209c38 MD5Builder::calculate() + *fill* 0x40209c4f 0x1 .text._ZN10MD5Builder8getCharsEPc - 0x4020b61c 0x37 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x40209c50 0x37 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) 0x3b (size before relaxing) - 0x4020b620 MD5Builder::getChars(char*) - *fill* 0x4020b653 0x1 + 0x40209c54 MD5Builder::getChars(char*) + *fill* 0x40209c87 0x1 .text._ZN10MD5Builder8toStringEv - 0x4020b654 0x25 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) + 0x40209c88 0x25 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) 0x31 (size before relaxing) - 0x4020b654 MD5Builder::toString() - *fill* 0x4020b679 0x3 + 0x40209c88 MD5Builder::toString() + *fill* 0x40209cad 0x3 .text._ZN5Print6printfEPKcz - 0x4020b67c 0xce .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209cb0 0xce .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0xda (size before relaxing) - 0x4020b680 Print::printf(char const*, ...) - *fill* 0x4020b74a 0x2 + 0x40209cb4 Print::printf(char const*, ...) + *fill* 0x40209d7e 0x2 .text._ZN5Print5printEPKc - 0x4020b74c 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209d80 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x17 (size before relaxing) - 0x4020b74c Print::print(char const*) - *fill* 0x4020b75b 0x1 + 0x40209d80 Print::print(char const*) + *fill* 0x40209d8f 0x1 .text._ZN5Print7printlnEv - 0x4020b75c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209d90 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x1d (size before relaxing) - 0x4020b760 Print::println() - *fill* 0x4020b775 0x3 + 0x40209d94 Print::println() + *fill* 0x40209da9 0x3 .text._ZN5Print7printlnEPK19__FlashStringHelper - 0x4020b778 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209dac 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x31 (size before relaxing) - 0x4020b778 Print::println(__FlashStringHelper const*) - *fill* 0x4020b79d 0x3 + 0x40209dac Print::println(__FlashStringHelper const*) + *fill* 0x40209dd1 0x3 .text._ZN5Print7printlnEPKc - 0x4020b7a0 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209dd4 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x31 (size before relaxing) - 0x4020b7a0 Print::println(char const*) - *fill* 0x4020b7c5 0x3 + 0x40209dd4 Print::println(char const*) + *fill* 0x40209df9 0x3 .text._ZN5Print11printNumberEmh - 0x4020b7c8 0x79 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209dfc 0x79 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x84 (size before relaxing) - 0x4020b7c8 Print::printNumber(unsigned long, unsigned char) - *fill* 0x4020b841 0x3 + 0x40209dfc Print::printNumber(unsigned long, unsigned char) + *fill* 0x40209e75 0x3 .text._ZN5Print5printEmi - 0x4020b844 0x21 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209e78 0x21 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x28 (size before relaxing) - 0x4020b844 Print::print(unsigned long, int) - *fill* 0x4020b865 0x3 + 0x40209e78 Print::print(unsigned long, int) + *fill* 0x40209e99 0x3 .text._ZN5Print5printEhi - 0x4020b868 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209e9c 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x19 (size before relaxing) - 0x4020b868 Print::print(unsigned char, int) - *fill* 0x4020b87d 0x3 + 0x40209e9c Print::print(unsigned char, int) + *fill* 0x40209eb1 0x3 .text._ZN5Print5printEji - 0x4020b880 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x40209eb4 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) 0x17 (size before relaxing) - 0x4020b880 Print::print(unsigned int, int) - *fill* 0x4020b88f 0x1 + 0x40209eb4 Print::print(unsigned int, int) + *fill* 0x40209ec3 0x1 .text._ZN6Stream9timedReadEv - 0x4020b890 0x3d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x40209ec4 0x3d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) 0x4d (size before relaxing) - 0x4020b890 Stream::timedRead() - *fill* 0x4020b8cd 0x3 + 0x40209ec4 Stream::timedRead() + *fill* 0x40209f01 0x3 .text._ZN6Stream9readBytesEPcj - 0x4020b8d0 0x41 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x40209f04 0x41 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) 0x45 (size before relaxing) - 0x4020b8d0 Stream::readBytes(char*, unsigned int) - *fill* 0x4020b911 0x3 + 0x40209f04 Stream::readBytes(char*, unsigned int) + *fill* 0x40209f45 0x3 .text._ZN6Stream15readStringUntilEc - 0x4020b914 0x43 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x40209f48 0x43 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) 0x57 (size before relaxing) - 0x4020b918 Stream::readStringUntil(char) - *fill* 0x4020b957 0x1 + 0x40209f4c Stream::readStringUntil(char) + *fill* 0x40209f8b 0x1 .text._ZN12StreamString5writeEh - 0x4020b958 0x18 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x40209f8c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) 0x1c (size before relaxing) - 0x4020b958 StreamString::write(unsigned char) + 0x40209f8c StreamString::write(unsigned char) .text._ZN12StreamString4peekEv - 0x4020b970 0x29 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x40209fa4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) 0x2d (size before relaxing) - 0x4020b970 StreamString::peek() - *fill* 0x4020b999 0x3 + 0x40209fa4 StreamString::peek() + *fill* 0x40209fcd 0x3 .text._ZN12StreamString4readEv - 0x4020b99c 0x3f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x40209fd0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) 0x4b (size before relaxing) - 0x4020b99c StreamString::read() - *fill* 0x4020b9db 0x1 + 0x40209fd0 StreamString::read() + *fill* 0x4020a00f 0x1 .text._ZN12StreamString5writeEPKhj - 0x4020b9dc 0x5f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x4020a010 0x5f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) 0x67 (size before relaxing) - 0x4020b9dc StreamString::write(unsigned char const*, unsigned int) - *fill* 0x4020ba3b 0x1 + 0x4020a010 StreamString::write(unsigned char const*, unsigned int) + *fill* 0x4020a06f 0x1 .text._ZN12UpdaterClassC2Ev - 0x4020ba3c 0x2f .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a070 0x2f .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x37 (size before relaxing) - 0x4020ba40 UpdaterClass::UpdaterClass() - 0x4020ba40 UpdaterClass::UpdaterClass() - *fill* 0x4020ba6b 0x1 + 0x4020a074 UpdaterClass::UpdaterClass() + 0x4020a074 UpdaterClass::UpdaterClass() + *fill* 0x4020a09f 0x1 .text._ZN12UpdaterClass6_resetEv - 0x4020ba6c 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a0a0 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x2f (size before relaxing) - 0x4020ba6c UpdaterClass::_reset() - *fill* 0x4020ba97 0x1 + 0x4020a0a0 UpdaterClass::_reset() + *fill* 0x4020a0cb 0x1 .text._ZN12UpdaterClass5beginEji - 0x4020ba98 0xb7 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a0cc 0xb7 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0xf3 (size before relaxing) - 0x4020ba98 UpdaterClass::begin(unsigned int, int) - *fill* 0x4020bb4f 0x1 + 0x4020a0cc UpdaterClass::begin(unsigned int, int) + *fill* 0x4020a183 0x1 .text._ZN12UpdaterClass6setMD5EPKc - 0x4020bb50 0x2d .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a184 0x2d .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x39 (size before relaxing) - 0x4020bb50 UpdaterClass::setMD5(char const*) - *fill* 0x4020bb7d 0x3 + 0x4020a184 UpdaterClass::setMD5(char const*) + *fill* 0x4020a1b1 0x3 .text._ZN12UpdaterClass12_writeBufferEv - 0x4020bb80 0x89 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a1b4 0x89 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0xad (size before relaxing) - 0x4020bb80 UpdaterClass::_writeBuffer() - *fill* 0x4020bc09 0x3 + 0x4020a1b4 UpdaterClass::_writeBuffer() + *fill* 0x4020a23d 0x3 .text._ZN12UpdaterClass5writeEPhj - 0x4020bc0c 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a240 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0xe1 (size before relaxing) - 0x4020bc0c UpdaterClass::write(unsigned char*, unsigned int) - *fill* 0x4020bccd 0x3 + 0x4020a240 UpdaterClass::write(unsigned char*, unsigned int) + *fill* 0x4020a301 0x3 .text._ZN12UpdaterClass10_verifyEndEv - 0x4020bcd0 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a304 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x9f (size before relaxing) - 0x4020bcd0 UpdaterClass::_verifyEnd() - *fill* 0x4020bd5b 0x1 + 0x4020a304 UpdaterClass::_verifyEnd() + *fill* 0x4020a38f 0x1 .text._ZN12UpdaterClass3endEb - 0x4020bd5c 0xce .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a390 0xce .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x10a (size before relaxing) - 0x4020bd5c UpdaterClass::end(bool) - *fill* 0x4020be2a 0x2 + 0x4020a390 UpdaterClass::end(bool) + *fill* 0x4020a45e 0x2 .text._ZN12UpdaterClass11writeStreamER6Stream - 0x4020be2c 0xf1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a460 0xf1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x121 (size before relaxing) - 0x4020be2c UpdaterClass::writeStream(Stream&) - *fill* 0x4020bf1d 0x3 + 0x4020a460 UpdaterClass::writeStream(Stream&) + *fill* 0x4020a551 0x3 .text._ZN12UpdaterClass10printErrorER6Stream - 0x4020bf20 0x117 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a554 0x117 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x143 (size before relaxing) - 0x4020bf54 UpdaterClass::printError(Stream&) - *fill* 0x4020c037 0x1 + 0x4020a588 UpdaterClass::printError(Stream&) + *fill* 0x4020a66b 0x1 .text.startup._GLOBAL__sub_I__ZN12UpdaterClassC2Ev - 0x4020c038 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a66c 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x1d (size before relaxing) - *fill* 0x4020c04d 0x3 + *fill* 0x4020a681 0x3 .text.exit._GLOBAL__sub_D__ZN12UpdaterClassC2Ev - 0x4020c050 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020a684 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) 0x1d (size before relaxing) - *fill* 0x4020c069 0x3 + *fill* 0x4020a69d 0x3 .text._Z6randoml - 0x4020c06c 0x45 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - 0x49 (size before relaxing) - 0x4020c078 random(long) - *fill* 0x4020c0b1 0x3 + 0x4020a6a0 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x4020a6b0 random(long) + *fill* 0x4020a6e9 0x3 .text._Z6randomll - 0x4020c0b4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) + 0x4020a6ec 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) 0x27 (size before relaxing) - 0x4020c0b4 random(long, long) - *fill* 0x4020c0d3 0x1 - .text._Z3maplllll - 0x4020c0d4 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - 0x2b (size before relaxing) - 0x4020c0d4 map(long, long, long, long, long) - *fill* 0x4020c0fb 0x1 + 0x4020a6ec random(long, long) + *fill* 0x4020a70b 0x1 .text._ZN6StringD2Ev - 0x4020c0fc 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a70c 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x29 (size before relaxing) - 0x4020c0fc String::~String() - 0x4020c0fc String::~String() - *fill* 0x4020c121 0x3 + 0x4020a70c String::~String() + 0x4020a70c String::~String() + *fill* 0x4020a731 0x3 .text._ZN6String10invalidateEv - 0x4020c124 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a734 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x29 (size before relaxing) - 0x4020c124 String::invalidate() - *fill* 0x4020c149 0x3 + 0x4020a734 String::invalidate() + *fill* 0x4020a759 0x3 .text._ZN6String12changeBufferEj - 0x4020c14c 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a75c 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x5b (size before relaxing) - 0x4020c14c String::changeBuffer(unsigned int) - *fill* 0x4020c19b 0x1 + 0x4020a75c String::changeBuffer(unsigned int) + *fill* 0x4020a7ab 0x1 .text._ZN6String7reserveEj - 0x4020c19c 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a7ac 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x37 (size before relaxing) - 0x4020c19c String::reserve(unsigned int) - *fill* 0x4020c1cf 0x1 + 0x4020a7ac String::reserve(unsigned int) + *fill* 0x4020a7df 0x1 .text._ZN6String4copyEPKcj - 0x4020c1d0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a7e0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x4f (size before relaxing) - 0x4020c1d0 String::copy(char const*, unsigned int) - *fill* 0x4020c20f 0x1 + 0x4020a7e0 String::copy(char const*, unsigned int) + *fill* 0x4020a81f 0x1 .text._ZN6StringC2EPKc - 0x4020c210 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a820 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x3b (size before relaxing) - 0x4020c210 String::String(char const*) - 0x4020c210 String::String(char const*) - *fill* 0x4020c243 0x1 + 0x4020a820 String::String(char const*) + 0x4020a820 String::String(char const*) + *fill* 0x4020a853 0x1 .text._ZN6String4copyEPK19__FlashStringHelperj - 0x4020c244 0x43 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a854 0x43 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x57 (size before relaxing) - 0x4020c244 String::copy(__FlashStringHelper const*, unsigned int) - *fill* 0x4020c287 0x1 + 0x4020a854 String::copy(__FlashStringHelper const*, unsigned int) + *fill* 0x4020a897 0x1 .text._ZN6String4moveERS_ - 0x4020c288 0x4e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a898 0x4e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x56 (size before relaxing) - 0x4020c288 String::move(String&) - *fill* 0x4020c2d6 0x2 + 0x4020a898 String::move(String&) + *fill* 0x4020a8e6 0x2 .text._ZN6StringaSERKS_ - 0x4020c2d8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a8e8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x39 (size before relaxing) - 0x4020c2d8 String::operator=(String const&) - *fill* 0x4020c305 0x3 + 0x4020a8e8 String::operator=(String const&) + *fill* 0x4020a915 0x3 .text._ZN6StringC2ERKS_ - 0x4020c308 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a918 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x1f (size before relaxing) - 0x4020c308 String::String(String const&) - 0x4020c308 String::String(String const&) - *fill* 0x4020c31f 0x1 + 0x4020a918 String::String(String const&) + 0x4020a918 String::String(String const&) + *fill* 0x4020a92f 0x1 .text._ZN6StringaSEOS_ - 0x4020c320 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a930 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x21 (size before relaxing) - 0x4020c320 String::operator=(String&&) - *fill* 0x4020c33d 0x3 + 0x4020a930 String::operator=(String&&) + *fill* 0x4020a94d 0x3 .text._ZN6StringaSEPKc - 0x4020c340 0x35 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a950 0x35 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x41 (size before relaxing) - 0x4020c340 String::operator=(char const*) - *fill* 0x4020c375 0x3 + 0x4020a950 String::operator=(char const*) + *fill* 0x4020a985 0x3 .text._ZN6StringC2Ehh - 0x4020c378 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a988 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x3b (size before relaxing) - 0x4020c378 String::String(unsigned char, unsigned char) - 0x4020c378 String::String(unsigned char, unsigned char) - *fill* 0x4020c3a7 0x1 + 0x4020a988 String::String(unsigned char, unsigned char) + 0x4020a988 String::String(unsigned char, unsigned char) + *fill* 0x4020a9b7 0x1 .text._ZN6StringC2Eih - 0x4020c3a8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a9b8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x39 (size before relaxing) - 0x4020c3a8 String::String(int, unsigned char) - 0x4020c3a8 String::String(int, unsigned char) - *fill* 0x4020c3d5 0x3 + 0x4020a9b8 String::String(int, unsigned char) + 0x4020a9b8 String::String(int, unsigned char) + *fill* 0x4020a9e5 0x3 .text._ZN6StringC2Ejh - 0x4020c3d8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020a9e8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x39 (size before relaxing) - 0x4020c3d8 String::String(unsigned int, unsigned char) - 0x4020c3d8 String::String(unsigned int, unsigned char) - *fill* 0x4020c405 0x3 + 0x4020a9e8 String::String(unsigned int, unsigned char) + 0x4020a9e8 String::String(unsigned int, unsigned char) + *fill* 0x4020aa15 0x3 .text._ZN6StringC2Emh - 0x4020c408 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aa18 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x39 (size before relaxing) - 0x4020c408 String::String(unsigned long, unsigned char) - 0x4020c408 String::String(unsigned long, unsigned char) - *fill* 0x4020c435 0x3 + 0x4020aa18 String::String(unsigned long, unsigned char) + 0x4020aa18 String::String(unsigned long, unsigned char) + *fill* 0x4020aa45 0x3 .text._ZN6StringaSEPK19__FlashStringHelper - 0x4020c438 0x37 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aa48 0x37 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x4f (size before relaxing) - 0x4020c438 String::operator=(__FlashStringHelper const*) - *fill* 0x4020c46f 0x1 + 0x4020aa48 String::operator=(__FlashStringHelper const*) + *fill* 0x4020aa7f 0x1 .text._ZN6StringC2EPK19__FlashStringHelper - 0x4020c470 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aa80 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x1f (size before relaxing) - 0x4020c470 String::String(__FlashStringHelper const*) - 0x4020c470 String::String(__FlashStringHelper const*) - *fill* 0x4020c487 0x1 + 0x4020aa80 String::String(__FlashStringHelper const*) + 0x4020aa80 String::String(__FlashStringHelper const*) + *fill* 0x4020aa97 0x1 .text._ZN6String6concatEPKcj - 0x4020c488 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aa98 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x55 (size before relaxing) - 0x4020c488 String::concat(char const*, unsigned int) - *fill* 0x4020c4d1 0x3 + 0x4020aa98 String::concat(char const*, unsigned int) + *fill* 0x4020aae1 0x3 .text._ZN6String6concatERKS_ - 0x4020c4d4 0x18 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aae4 0x18 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x1c (size before relaxing) - 0x4020c4d4 String::concat(String const&) + 0x4020aae4 String::concat(String const&) .text._ZN6String6concatEPKc - 0x4020c4ec 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aafc 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x35 (size before relaxing) - 0x4020c4ec String::concat(char const*) - *fill* 0x4020c519 0x3 + 0x4020aafc String::concat(char const*) + *fill* 0x4020ab29 0x3 .text._ZN6String6concatEc - 0x4020c51c 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ab2c 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x23 (size before relaxing) - 0x4020c51c String::concat(char) - *fill* 0x4020c537 0x1 + 0x4020ab2c String::concat(char) + *fill* 0x4020ab47 0x1 .text._ZN6String6concatEh - 0x4020c538 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ab48 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x3f (size before relaxing) - 0x4020c538 String::concat(unsigned char) - *fill* 0x4020c567 0x1 + 0x4020ab48 String::concat(unsigned char) + *fill* 0x4020ab77 0x1 .text._ZN6String6concatEi - 0x4020c568 0x2e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ab78 0x2e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x3e (size before relaxing) - 0x4020c568 String::concat(int) - *fill* 0x4020c596 0x2 + 0x4020ab78 String::concat(int) + *fill* 0x4020aba6 0x2 .text._ZN6String6concatEPK19__FlashStringHelper - 0x4020c598 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aba8 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x6f (size before relaxing) - 0x4020c598 String::concat(__FlashStringHelper const*) - *fill* 0x4020c5ef 0x1 + 0x4020aba8 String::concat(__FlashStringHelper const*) + *fill* 0x4020abff 0x1 .text._ZplRK15StringSumHelperRK6String - 0x4020c5f0 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ac00 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x33 (size before relaxing) - 0x4020c5f0 operator+(StringSumHelper const&, String const&) - *fill* 0x4020c617 0x1 + 0x4020ac00 operator+(StringSumHelper const&, String const&) + *fill* 0x4020ac27 0x1 .text._ZplRK15StringSumHelperPKc - 0x4020c618 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ac28 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x43 (size before relaxing) - 0x4020c618 operator+(StringSumHelper const&, char const*) - *fill* 0x4020c648 0x0 + 0x4020ac28 operator+(StringSumHelper const&, char const*) + *fill* 0x4020ac58 0x0 .text._ZplRK15StringSumHelperPK19__FlashStringHelper - 0x4020c648 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ac58 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x2d (size before relaxing) - 0x4020c648 operator+(StringSumHelper const&, __FlashStringHelper const*) - *fill* 0x4020c669 0x3 + 0x4020ac58 operator+(StringSumHelper const&, __FlashStringHelper const*) + *fill* 0x4020ac79 0x3 .text._ZNK6String9compareToERKS_ - 0x4020c66c 0x41 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ac7c 0x41 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x45 (size before relaxing) - 0x4020c66c String::compareTo(String const&) const - *fill* 0x4020c6ad 0x3 + 0x4020ac7c String::compareTo(String const&) const + *fill* 0x4020acbd 0x3 .text._ZNK6String6equalsERKS_ - 0x4020c6b0 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020acc0 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x2d (size before relaxing) - 0x4020c6b0 String::equals(String const&) const - *fill* 0x4020c6d9 0x3 + 0x4020acc0 String::equals(String const&) const + *fill* 0x4020ace9 0x3 .text._ZNK6String6equalsEPKc - 0x4020c6dc 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020acec 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x42 (size before relaxing) - 0x4020c6dc String::equals(char const*) const - *fill* 0x4020c71a 0x2 + 0x4020acec String::equals(char const*) const + *fill* 0x4020ad2a 0x2 .text._ZNK6String16equalsIgnoreCaseERKS_ - 0x4020c71c 0x55 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ad2c 0x55 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x61 (size before relaxing) - 0x4020c71c String::equalsIgnoreCase(String const&) const - *fill* 0x4020c771 0x3 + 0x4020ad2c String::equalsIgnoreCase(String const&) const + *fill* 0x4020ad81 0x3 .text._ZNK6String10startsWithERKS_j - 0x4020c774 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020c778 String::startsWith(String const&, unsigned int) const - *fill* 0x4020c7b3 0x1 + 0x4020ad84 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ad88 String::startsWith(String const&, unsigned int) const + *fill* 0x4020adc3 0x1 .text._ZNK6String10startsWithERKS_ - 0x4020c7b4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020adc4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x23 (size before relaxing) - 0x4020c7b4 String::startsWith(String const&) const - *fill* 0x4020c7d3 0x1 + 0x4020adc4 String::startsWith(String const&) const + *fill* 0x4020ade3 0x1 .text._ZNK6String8endsWithERKS_ - 0x4020c7d4 0x38 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ade4 0x38 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x3c (size before relaxing) - 0x4020c7d4 String::endsWith(String const&) const + 0x4020ade4 String::endsWith(String const&) const .text._ZNK6String6charAtEj - 0x4020c80c 0xf .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ae1c 0xf .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x17 (size before relaxing) - 0x4020c80c String::charAt(unsigned int) const - *fill* 0x4020c81b 0x1 + 0x4020ae1c String::charAt(unsigned int) const + *fill* 0x4020ae2b 0x1 .text._ZNK6String7indexOfEcj - 0x4020c81c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ae2c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x35 (size before relaxing) - 0x4020c81c String::indexOf(char, unsigned int) const - *fill* 0x4020c84d 0x3 + 0x4020ae2c String::indexOf(char, unsigned int) const + *fill* 0x4020ae5d 0x3 .text._ZNK6String7indexOfEc - 0x4020c850 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ae60 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x1b (size before relaxing) - 0x4020c850 String::indexOf(char) const - *fill* 0x4020c867 0x1 + 0x4020ae60 String::indexOf(char) const + *fill* 0x4020ae77 0x1 .text._ZNK6String7indexOfERKS_j - 0x4020c868 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ae78 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x35 (size before relaxing) - 0x4020c868 String::indexOf(String const&, unsigned int) const - *fill* 0x4020c899 0x3 + 0x4020ae78 String::indexOf(String const&, unsigned int) const + *fill* 0x4020aea9 0x3 .text._ZNK6String7indexOfERKS_ - 0x4020c89c 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aeac 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x18 (size before relaxing) - 0x4020c89c String::indexOf(String const&) const + 0x4020aeac String::indexOf(String const&) const .text._ZNK6String11lastIndexOfERKS_j - 0x4020c8b0 0x62 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020aec0 0x62 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x66 (size before relaxing) - 0x4020c8b0 String::lastIndexOf(String const&, unsigned int) const - *fill* 0x4020c912 0x2 + 0x4020aec0 String::lastIndexOf(String const&, unsigned int) const + *fill* 0x4020af22 0x2 .text._ZNK6String9substringEjj - 0x4020c914 0x6a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020af24 0x6a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x72 (size before relaxing) - 0x4020c918 String::substring(unsigned int, unsigned int) const - *fill* 0x4020c97e 0x2 + 0x4020af28 String::substring(unsigned int, unsigned int) const + *fill* 0x4020af8e 0x2 .text._ZN6String7replaceERKS_S1_ - 0x4020c980 0x15c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020af90 0x15c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x188 (size before relaxing) - 0x4020c980 String::replace(String const&, String const&) + 0x4020af90 String::replace(String const&, String const&) .text._ZN6String6removeEjj - 0x4020cadc 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020cae0 String::remove(unsigned int, unsigned int) - *fill* 0x4020cb25 0x3 + 0x4020b0ec 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b0f0 String::remove(unsigned int, unsigned int) + *fill* 0x4020b135 0x3 .text._ZN6String6removeEj - 0x4020cb28 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b138 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x18 (size before relaxing) - 0x4020cb28 String::remove(unsigned int) + 0x4020b138 String::remove(unsigned int) .text._ZN6String11toLowerCaseEv - 0x4020cb3c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b14c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x2f (size before relaxing) - 0x4020cb3c String::toLowerCase() - *fill* 0x4020cb64 0x0 + 0x4020b14c String::toLowerCase() + *fill* 0x4020b174 0x0 .text._ZN6String11toUpperCaseEv - 0x4020cb64 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b174 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x2f (size before relaxing) - 0x4020cb64 String::toUpperCase() - *fill* 0x4020cb8c 0x0 + 0x4020b174 String::toUpperCase() + *fill* 0x4020b19c 0x0 .text._ZN6String4trimEv - 0x4020cb8c 0x77 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b19c 0x77 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x87 (size before relaxing) - 0x4020cb8c String::trim() - *fill* 0x4020cc03 0x1 + 0x4020b19c String::trim() + *fill* 0x4020b213 0x1 .text._ZNK6String5toIntEv - 0x4020cc04 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020b214 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) 0x1f (size before relaxing) - 0x4020cc04 String::toInt() const - *fill* 0x4020cc1f 0x1 - .text._Znwj 0x4020cc20 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b214 String::toInt() const + *fill* 0x4020b22f 0x1 + .text._Znwj 0x4020b230 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x17 (size before relaxing) - 0x4020cc20 operator new(unsigned int) - *fill* 0x4020cc2f 0x1 - .text._Znaj 0x4020cc30 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b230 operator new(unsigned int) + *fill* 0x4020b23f 0x1 + .text._Znaj 0x4020b240 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x17 (size before relaxing) - 0x4020cc30 operator new[](unsigned int) - *fill* 0x4020cc3f 0x1 - .text._ZdlPv 0x4020cc40 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b240 operator new[](unsigned int) + *fill* 0x4020b24f 0x1 + .text._ZdlPv 0x4020b250 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x17 (size before relaxing) - 0x4020cc40 operator delete(void*) - *fill* 0x4020cc4f 0x1 - .text._ZdaPv 0x4020cc50 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b250 operator delete(void*) + *fill* 0x4020b25f 0x1 + .text._ZdaPv 0x4020b260 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x17 (size before relaxing) - 0x4020cc50 operator delete[](void*) - *fill* 0x4020cc5f 0x1 + 0x4020b260 operator delete[](void*) + *fill* 0x4020b26f 0x1 .text.__cxa_pure_virtual - 0x4020cc60 0x18 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b270 0x18 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x20 (size before relaxing) - 0x4020cc68 __cxa_pure_virtual + 0x4020b278 __cxa_pure_virtual .text._ZSt25__throw_bad_function_callv - 0x4020cc78 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020b288 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) 0x20 (size before relaxing) - 0x4020cc7c std::__throw_bad_function_call() + 0x4020b28c std::__throw_bad_function_call() .text.crc_update - 0x4020cc8c 0x3c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - 0x4020cc90 crc_update + 0x4020b29c 0x3c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x4020b2a0 crc_update .text.eboot_command_calculate_crc32 - 0x4020ccc8 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x4020b2d8 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) 0x1d (size before relaxing) - 0x4020ccc8 eboot_command_calculate_crc32 - *fill* 0x4020cce1 0x3 + 0x4020b2d8 eboot_command_calculate_crc32 + *fill* 0x4020b2f1 0x3 .text.eboot_command_read - 0x4020cce4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x4020b2f4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) 0x6b (size before relaxing) - 0x4020ccf4 eboot_command_read - *fill* 0x4020cd43 0x1 + 0x4020b304 eboot_command_read + *fill* 0x4020b353 0x1 .text.eboot_command_write - 0x4020cd44 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) + 0x4020b354 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) 0x51 (size before relaxing) - 0x4020cd44 eboot_command_write - *fill* 0x4020cd7d 0x3 + 0x4020b354 eboot_command_write + *fill* 0x4020b38d 0x3 .text._ZL9loop_taskP11ETSEventTag - 0x4020cd80 0x5a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b390 0x5a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x66 (size before relaxing) - *fill* 0x4020cdda 0x2 + *fill* 0x4020b3ea 0x2 .text.esp_yield - 0x4020cddc 0x29 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b3ec 0x29 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x31 (size before relaxing) - 0x4020cde0 esp_yield - *fill* 0x4020ce05 0x3 + 0x4020b3f0 esp_yield + *fill* 0x4020b415 0x3 .text.esp_schedule - 0x4020ce08 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020ce0c esp_schedule + 0x4020b418 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b41c esp_schedule .text._ZL12loop_wrapperv - 0x4020ce24 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b434 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x54 (size before relaxing) - .text.__yield 0x4020ce58 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + .text.__yield 0x4020b468 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x53 (size before relaxing) - 0x4020ce5c __yield - 0x4020ce5c yield - *fill* 0x4020ce8c 0x0 + 0x4020b46c __yield + 0x4020b46c yield + *fill* 0x4020b49c 0x0 .text.optimistic_yield - 0x4020ce8c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b49c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x49 (size before relaxing) - 0x4020ce8c optimistic_yield - *fill* 0x4020cebd 0x3 + 0x4020b49c optimistic_yield + *fill* 0x4020b4cd 0x3 .text._Z9init_donev - 0x4020cec0 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b4d0 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x65 (size before relaxing) - 0x4020ced4 init_done() - *fill* 0x4020cf15 0x3 + 0x4020b4e4 init_done() + *fill* 0x4020b525 0x3 .text.user_init - 0x4020cf18 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020b528 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) 0x8d (size before relaxing) - 0x4020cf30 user_init - *fill* 0x4020cf7d 0x3 - .text.atol 0x4020cf80 0x13 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b540 user_init + *fill* 0x4020b58d 0x3 + .text.atol 0x4020b590 0x13 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x1b (size before relaxing) - 0x4020cf80 atol - *fill* 0x4020cf93 0x1 - .text.atoi 0x4020cf94 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b590 atol + *fill* 0x4020b5a3 0x1 + .text.atoi 0x4020b5a4 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x17 (size before relaxing) - 0x4020cf94 atoi - *fill* 0x4020cfa3 0x1 - .text.itoa 0x4020cfa4 0x82 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b5a4 atoi + *fill* 0x4020b5b3 0x1 + .text.itoa 0x4020b5b4 0x82 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x8a (size before relaxing) - 0x4020cfa8 itoa - *fill* 0x4020d026 0x2 - .text.utoa 0x4020d028 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b5b8 itoa + *fill* 0x4020b636 0x2 + .text.utoa 0x4020b638 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x78 (size before relaxing) - 0x4020d028 utoa - .text.ultoa 0x4020d094 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b638 utoa + .text.ultoa 0x4020b6a4 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x78 (size before relaxing) - 0x4020d094 ultoa - .text.dtostrf 0x4020d100 0x209 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020b6a4 ultoa + .text.dtostrf 0x4020b710 0x225 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) 0x255 (size before relaxing) - 0x4020d118 dtostrf - *fill* 0x4020d309 0x3 + 0x4020b744 dtostrf + *fill* 0x4020b935 0x3 .text.uart_write_char_d - 0x4020d30c 0x5b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x4020d31c uart_write_char_d - *fill* 0x4020d367 0x1 + 0x4020b938 0x5b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020b948 uart_write_char_d + *fill* 0x4020b993 0x1 .text.__wrap_system_restart_local - 0x4020d368 0x1a7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020b994 0x1a7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) 0x1eb (size before relaxing) - 0x4020d3b4 __wrap_system_restart_local - *fill* 0x4020d50f 0x1 - .text.abort 0x4020d510 0xb .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020b9e0 __wrap_system_restart_local + *fill* 0x4020bb3b 0x1 + .text.abort 0x4020bb3c 0xb .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) 0xf (size before relaxing) - 0x4020d510 abort - *fill* 0x4020d51b 0x1 + 0x4020bb3c abort + *fill* 0x4020bb47 0x1 .text.__panic_func - 0x4020d51c 0x1a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020bb48 0x1a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) 0x36 (size before relaxing) - 0x4020d51c __panic_func - *fill* 0x4020d536 0x2 + 0x4020bb48 __panic_func + *fill* 0x4020bb62 0x2 .text.twi_delay - 0x4020d538 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bb64 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .text.twi_write_stop - 0x4020d550 0x9d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bb7c 0x9d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0xb5 (size before relaxing) - *fill* 0x4020d5ed 0x3 + *fill* 0x4020bc19 0x3 .text.twi_write_bit - 0x4020d5f0 0x92 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bc1c 0x92 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0xb6 (size before relaxing) - *fill* 0x4020d682 0x2 + *fill* 0x4020bcae 0x2 .text.twi_read_bit - 0x4020d684 0x93 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bcb0 0x93 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0xb7 (size before relaxing) - *fill* 0x4020d717 0x1 + *fill* 0x4020bd43 0x1 .text.twi_write_byte - 0x4020d718 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bd44 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0x45 (size before relaxing) - *fill* 0x4020d751 0x3 + *fill* 0x4020bd7d 0x3 .text.twi_write_start - 0x4020d754 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bd80 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0x8d (size before relaxing) - *fill* 0x4020d7b9 0x3 + *fill* 0x4020bde5 0x3 + .text.twi_setClockStretchLimit + 0x4020bde8 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0xe (size before relaxing) + 0x4020bde8 twi_setClockStretchLimit + *fill* 0x4020bdf2 0x2 .text.twi_init - 0x4020d7bc 0x3d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bdf4 0x3d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0x5d (size before relaxing) - 0x4020d7bc twi_init - *fill* 0x4020d7f9 0x3 + 0x4020bdf4 twi_init + *fill* 0x4020be31 0x3 .text.twi_writeTo - 0x4020d7fc 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020be34 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0x105 (size before relaxing) - 0x4020d7fc twi_writeTo - *fill* 0x4020d8bd 0x3 + 0x4020be34 twi_writeTo + *fill* 0x4020bef5 0x3 .text.twi_readFrom - 0x4020d8c0 0x103 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) + 0x4020bef8 0x103 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) 0x15b (size before relaxing) - 0x4020d8c0 twi_readFrom - *fill* 0x4020d9c3 0x1 + 0x4020bef8 twi_readFrom + *fill* 0x4020bffb 0x1 .text.delay_end - 0x4020d9c4 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x4020bffc 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) 0x17 (size before relaxing) - 0x4020d9c4 delay_end - *fill* 0x4020d9d3 0x1 + 0x4020bffc delay_end + *fill* 0x4020c00b 0x1 .text.micros_overflow_tick - 0x4020d9d4 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x4020c00c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) 0x35 (size before relaxing) - 0x4020d9dc micros_overflow_tick - *fill* 0x4020da05 0x3 - .text.delay 0x4020da08 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x4020c014 micros_overflow_tick + *fill* 0x4020c03d 0x3 + .text.delay 0x4020c040 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) 0x6f (size before relaxing) - 0x4020da10 delay - *fill* 0x4020da5d 0x3 - .text.init 0x4020da60 0x45 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x4020c048 delay + *fill* 0x4020c095 0x3 + .text.init 0x4020c098 0x49 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) 0x59 (size before relaxing) - 0x4020da6c init - *fill* 0x4020daa5 0x3 - .text.pulseIn 0x4020daa8 0xd7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) - 0x10b (size before relaxing) - 0x4020dab0 pulseIn - *fill* 0x4020db7f 0x1 - .text.shiftIn 0x4020db80 0x74 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) + 0x4020c0a8 init + *fill* 0x4020c0e1 0x3 + .text.shiftIn 0x4020c0e4 0x74 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) 0x84 (size before relaxing) - 0x4020db80 shiftIn - .text.shiftOut - 0x4020dbf4 0x6a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - 0x76 (size before relaxing) - 0x4020dbf4 shiftOut - *fill* 0x4020dc5e 0x2 + 0x4020c0e4 shiftIn .text.xPortGetFreeHeapSize - 0x4020dc60 0xf .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + 0x4020c158 0xf .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) 0x17 (size before relaxing) - 0x4020dc60 xPortGetFreeHeapSize - *fill* 0x4020dc6f 0x1 + 0x4020c158 xPortGetFreeHeapSize + *fill* 0x4020c167 0x1 .text.base64_encode_value - 0x4020dc70 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x4020dc74 base64_encode_value + 0x4020c168 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020c16c base64_encode_value .text.base64_encode_block - 0x4020dc88 0x10d .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020c180 0x10d .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) 0x125 (size before relaxing) - 0x4020dc88 base64_encode_block - *fill* 0x4020dd95 0x3 + 0x4020c180 base64_encode_block + *fill* 0x4020c28d 0x3 .text.base64_encode_blockend - 0x4020dd98 0x56 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020c290 0x56 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) 0x5e (size before relaxing) - 0x4020dd98 base64_encode_blockend - *fill* 0x4020ddee 0x2 + 0x4020c290 base64_encode_blockend + *fill* 0x4020c2e6 0x2 .text.base64_encode_chars - 0x4020ddf0 0x31 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020c2e8 0x31 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) 0x3d (size before relaxing) - 0x4020ddf0 base64_encode_chars - *fill* 0x4020de21 0x3 - .text.strncat 0x4020de24 0x4a .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c2e8 base64_encode_chars + *fill* 0x4020c319 0x3 + .text.strncat 0x4020c31c 0x4a .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x4e (size before relaxing) - 0x4020de24 strncat - *fill* 0x4020de6e 0x2 - .text.strcat 0x4020de70 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c31c strncat + *fill* 0x4020c366 0x2 + .text.strcat 0x4020c368 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x31 (size before relaxing) - 0x4020de70 strcat - *fill* 0x4020de95 0x3 - .text.strtok 0x4020de98 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c368 strcat + *fill* 0x4020c38d 0x3 + .text.strtok 0x4020c390 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x1d (size before relaxing) - 0x4020de9c strtok - *fill* 0x4020deb1 0x3 - .text.strdup 0x4020deb4 0x35 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c394 strtok + *fill* 0x4020c3a9 0x3 + .text.strdup 0x4020c3ac 0x35 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x45 (size before relaxing) - 0x4020deb4 strdup - *fill* 0x4020dee9 0x3 - .text.isalnum 0x4020deec 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c3ac strdup + *fill* 0x4020c3e1 0x3 + .text.isalnum 0x4020c3e4 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x2d (size before relaxing) - 0x4020deec isalnum - *fill* 0x4020df11 0x3 - .text.isprint 0x4020df14 0x18 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c3e4 isalnum + *fill* 0x4020c409 0x3 + .text.isprint 0x4020c40c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x20 (size before relaxing) - 0x4020df14 isprint - .text.isspace 0x4020df2c 0x22 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020df30 isspace - *fill* 0x4020df4e 0x2 + 0x4020c40c isprint + .text.isspace 0x4020c424 0x22 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c428 isspace + *fill* 0x4020c446 0x2 .text.strcasecmp - 0x4020df50 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c448 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x47 (size before relaxing) - 0x4020df50 strcasecmp - *fill* 0x4020df8b 0x1 - .text.__errno 0x4020df8c 0x9 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020df90 __errno - *fill* 0x4020df95 0x3 - .text.strtol 0x4020df98 0x156 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c448 strcasecmp + *fill* 0x4020c483 0x1 + .text.__errno 0x4020c484 0x9 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c488 __errno + *fill* 0x4020c48d 0x3 + .text.strtol 0x4020c490 0x156 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x176 (size before relaxing) - 0x4020df98 strtol - *fill* 0x4020e0ee 0x2 - .text.strtoul 0x4020e0f0 0x137 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020c490 strtol + *fill* 0x4020c5e6 0x2 + .text.strtoul 0x4020c5e8 0x137 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x14f (size before relaxing) - 0x4020e0f0 strtoul - *fill* 0x4020e227 0x1 + 0x4020c5e8 strtoul + *fill* 0x4020c71f 0x1 .text._Z13strncasecmp_PPKcS0_j - 0x4020e228 0x79 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020c720 0x79 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) 0x85 (size before relaxing) - 0x4020e228 strncasecmp_P(char const*, char const*, unsigned int) - *fill* 0x4020e2a1 0x3 + 0x4020c720 strncasecmp_P(char const*, char const*, unsigned int) + *fill* 0x4020c799 0x3 .text._Z11vsnprintf_PPcjPKc13__va_list_tag - 0x4020e2a4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020c79c 0x5f .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) 0x83 (size before relaxing) - 0x4020e2a4 vsnprintf_P(char*, unsigned int, char const*, __va_list_tag) - *fill* 0x4020e303 0x1 + 0x4020c79c vsnprintf_P(char*, unsigned int, char const*, __va_list_tag) + *fill* 0x4020c7fb 0x1 .text._Z10snprintf_PPcjPKcz - 0x4020e304 0x23 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020c7fc 0x23 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) 0x2b (size before relaxing) - 0x4020e304 snprintf_P(char*, unsigned int, char const*, ...) - *fill* 0x4020e327 0x1 + 0x4020c7fc snprintf_P(char*, unsigned int, char const*, ...) + *fill* 0x4020c81f 0x1 .text.uart1_write_char - 0x4020e328 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c820 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x47 (size before relaxing) - *fill* 0x4020e363 0x1 + *fill* 0x4020c85b 0x1 .text.uart0_write_char - 0x4020e364 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c85c 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x47 (size before relaxing) - *fill* 0x4020e39f 0x1 + *fill* 0x4020c897 0x1 .text.uart_write_char - 0x4020e3a0 0x37 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c898 0x37 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x3f (size before relaxing) - 0x4020e3a0 uart_write_char - *fill* 0x4020e3d7 0x1 + 0x4020c898 uart_write_char + *fill* 0x4020c8cf 0x1 .text.uart_rx_available - 0x4020e3d8 0x28 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c8d0 0x28 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x2c (size before relaxing) - 0x4020e3d8 uart_rx_available + 0x4020c8d0 uart_rx_available .text.uart_read_char - 0x4020e400 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c8f8 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x4f (size before relaxing) - 0x4020e400 uart_read_char - *fill* 0x4020e443 0x1 + 0x4020c8f8 uart_read_char + *fill* 0x4020c93b 0x1 .text.uart_wait_tx_empty - 0x4020e444 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c93c 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x4b (size before relaxing) - 0x4020e444 uart_wait_tx_empty - *fill* 0x4020e487 0x1 + 0x4020c93c uart_wait_tx_empty + *fill* 0x4020c97f 0x1 .text.uart_flush - 0x4020e488 0x6a .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4020e494 uart_flush - *fill* 0x4020e4f2 0x2 + 0x4020c980 0x6a .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c98c uart_flush + *fill* 0x4020c9ea 0x2 .text.uart_set_baudrate - 0x4020e4f4 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020c9ec 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x42 (size before relaxing) - 0x4020e4fc uart_set_baudrate - *fill* 0x4020e532 0x2 + 0x4020c9f4 uart_set_baudrate + *fill* 0x4020ca2a 0x2 .text.uart_init - 0x4020e534 0x135 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020ca2c 0x135 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x165 (size before relaxing) - 0x4020e53c uart_init - *fill* 0x4020e669 0x3 + 0x4020ca34 uart_init + *fill* 0x4020cb61 0x3 .text.uart_set_tx - 0x4020e66c 0x53 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020cb64 0x53 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x67 (size before relaxing) - 0x4020e66c uart_set_tx - *fill* 0x4020e6bf 0x1 + 0x4020cb64 uart_set_tx + *fill* 0x4020cbb7 0x1 .text.uart_set_debug - 0x4020e6c0 0x54 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020cbb8 0x54 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0x64 (size before relaxing) - 0x4020e6d0 uart_set_debug + 0x4020cbc8 uart_set_debug .text.uart_get_debug - 0x4020e714 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020cc0c 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) 0xb (size before relaxing) - 0x4020e714 uart_get_debug - *fill* 0x4020e71b 0x1 + 0x4020cc0c uart_get_debug + *fill* 0x4020cc13 0x1 .text.umm_disconnect_from_free_list - 0x4020e71c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - *fill* 0x4020e77e 0x2 + 0x4020cc14 0x62 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x4020cc76 0x2 .text.umm_assimilate_up - 0x4020e780 0x82 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020cc78 0x82 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x8a (size before relaxing) - *fill* 0x4020e802 0x2 + *fill* 0x4020ccfa 0x2 .text.umm_assimilate_down - 0x4020e804 0x55 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020ccfc 0x55 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x59 (size before relaxing) - *fill* 0x4020e859 0x3 + *fill* 0x4020cd51 0x3 .text._umm_free - 0x4020e85c 0xcb .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020cd54 0xcb .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0xe7 (size before relaxing) - *fill* 0x4020e927 0x1 + *fill* 0x4020ce1f 0x1 .text.umm_make_new_block$constprop$0 - 0x4020e928 0x5a .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020ce20 0x5a .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x5e (size before relaxing) - *fill* 0x4020e982 0x2 + *fill* 0x4020ce7a 0x2 .text.umm_init - 0x4020e984 0x89 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020ce7c 0x89 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x95 (size before relaxing) - 0x4020e990 umm_init - *fill* 0x4020ea0d 0x3 + 0x4020ce88 umm_init + *fill* 0x4020cf05 0x3 .text._umm_malloc - 0x4020ea10 0x13f .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020cf08 0x13f .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x163 (size before relaxing) - *fill* 0x4020eb4f 0x1 - .text.malloc 0x4020eb50 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x4020d047 0x1 + .text.malloc 0x4020d048 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x17 (size before relaxing) - 0x4020eb50 malloc - *fill* 0x4020eb5f 0x1 - .text.calloc 0x4020eb60 0x2d .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020d048 malloc + *fill* 0x4020d057 0x1 + .text.calloc 0x4020d058 0x2d .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x35 (size before relaxing) - 0x4020eb60 calloc - *fill* 0x4020eb8d 0x3 - .text.realloc 0x4020eb90 0x168 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020d058 calloc + *fill* 0x4020d085 0x3 + .text.realloc 0x4020d088 0x168 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x1bf (size before relaxing) - 0x4020eb90 realloc - *fill* 0x4020ecf8 0x0 - .text.free 0x4020ecf8 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + 0x4020d088 realloc + *fill* 0x4020d1f0 0x0 + .text.free 0x4020d1f0 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x17 (size before relaxing) - 0x4020ecf8 free - *fill* 0x4020ed07 0x1 + 0x4020d1f0 free + *fill* 0x4020d1ff 0x1 .text._Z23run_scheduled_functionsv - 0x4020ed08 0x8a .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x4020d200 0x8a .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) 0xaa (size before relaxing) - 0x4020ed18 run_scheduled_functions() - *fill* 0x4020ed92 0x2 - .text 0x4020ed94 0x7f .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) + 0x4020d210 run_scheduled_functions() + *fill* 0x4020d28a 0x2 + .text 0x4020d28c 0x7f .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) 0x83 (size before relaxing) - 0x4020ed98 cont_yield - 0x4020edd0 cont_run - *fill* 0x4020ee13 0x1 + 0x4020d290 cont_yield + 0x4020d2c8 cont_run + *fill* 0x4020d30b 0x1 .text._ZN10WiFiServerD2Ev - 0x4020ee14 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4020ee18 WiFiServer::~WiFiServer() - 0x4020ee18 WiFiServer::~WiFiServer() - *fill* 0x4020ee1f 0x1 + 0x4020d30c 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d310 WiFiServer::~WiFiServer() + 0x4020d310 WiFiServer::~WiFiServer() + *fill* 0x4020d317 0x1 .text._ZN10WiFiServerD0Ev - 0x4020ee20 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d318 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0x1f (size before relaxing) - 0x4020ee20 WiFiServer::~WiFiServer() - *fill* 0x4020ee37 0x1 + 0x4020d318 WiFiServer::~WiFiServer() + *fill* 0x4020d32f 0x1 .text._ZN10WiFiServerC2Et - 0x4020ee38 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d330 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0x3d (size before relaxing) - 0x4020ee38 WiFiServer::WiFiServer(unsigned short) - 0x4020ee38 WiFiServer::WiFiServer(unsigned short) - *fill* 0x4020ee6d 0x3 + 0x4020d330 WiFiServer::WiFiServer(unsigned short) + 0x4020d330 WiFiServer::WiFiServer(unsigned short) + *fill* 0x4020d365 0x3 .text._ZN10WiFiServer5closeEv - 0x4020ee70 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d368 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0x25 (size before relaxing) - 0x4020ee70 WiFiServer::close() - *fill* 0x4020ee91 0x3 + 0x4020d368 WiFiServer::close() + *fill* 0x4020d389 0x3 .text._ZN10WiFiServer5beginEv - 0x4020ee94 0x77 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d38c 0x77 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0xa3 (size before relaxing) - 0x4020ee98 WiFiServer::begin() - *fill* 0x4020ef0b 0x1 + 0x4020d390 WiFiServer::begin() + *fill* 0x4020d403 0x1 .text._ZN10WiFiServer7_acceptEP7tcp_pcba - 0x4020ef0c 0x7d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d404 0x7d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0xb5 (size before relaxing) - 0x4020ef10 WiFiServer::_accept(tcp_pcb*, signed char) - *fill* 0x4020ef89 0x3 + 0x4020d408 WiFiServer::_accept(tcp_pcb*, signed char) + *fill* 0x4020d481 0x3 .text._ZN10WiFiServer9_s_acceptEPvP7tcp_pcba - 0x4020ef8c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d484 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0x1f (size before relaxing) - 0x4020ef8c WiFiServer::_s_accept(void*, tcp_pcb*, signed char) - *fill* 0x4020efa7 0x1 + 0x4020d484 WiFiServer::_s_accept(void*, tcp_pcb*, signed char) + *fill* 0x4020d49f 0x1 .text._ZN10WiFiServer9availableEPh - 0x4020efa8 0x4e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020d4a0 0x4e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) 0x76 (size before relaxing) - 0x4020efa8 WiFiServer::available(unsigned char*) - *fill* 0x4020eff6 0x2 + 0x4020d4a0 WiFiServer::available(unsigned char*) + *fill* 0x4020d4ee 0x2 .text._ZN15TransportTraitsD2Ev - 0x4020eff8 0xb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020effc TransportTraits::~TransportTraits() - 0x4020effc TransportTraits::~TransportTraits() - *fill* 0x4020f003 0x1 + 0x4020d4f0 0xb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d4f4 TransportTraits::~TransportTraits() + 0x4020d4f4 TransportTraits::~TransportTraits() + *fill* 0x4020d4fb 0x1 .text._ZN15TransportTraitsD0Ev - 0x4020f004 0x17 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d4fc 0x17 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x1f (size before relaxing) - 0x4020f004 TransportTraits::~TransportTraits() - *fill* 0x4020f01b 0x1 + 0x4020d4fc TransportTraits::~TransportTraits() + *fill* 0x4020d513 0x1 .text._ZN15TransportTraits6createEv - 0x4020f01c 0x27 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d514 0x27 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x33 (size before relaxing) - 0x4020f01c TransportTraits::create() - *fill* 0x4020f043 0x1 + 0x4020d514 TransportTraits::create() + *fill* 0x4020d53b 0x1 .text._ZN10HTTPClientC2Ev - 0x4020f044 0x81 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d53c 0x81 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xad (size before relaxing) - 0x4020f04c HTTPClient::HTTPClient() - 0x4020f04c HTTPClient::HTTPClient() - *fill* 0x4020f0c5 0x3 + 0x4020d544 HTTPClient::HTTPClient() + 0x4020d544 HTTPClient::HTTPClient() + *fill* 0x4020d5bd 0x3 .text._ZN10HTTPClient5clearEv - 0x4020f0c8 0x1f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d5c0 0x1f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x2b (size before relaxing) - 0x4020f0c8 HTTPClient::clear() - *fill* 0x4020f0e7 0x1 + 0x4020d5c0 HTTPClient::clear() + *fill* 0x4020d5df 0x1 .text._ZN10HTTPClient13beginInternalE6StringPKc - 0x4020f0e8 0x147 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d5e0 0x147 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x213 (size before relaxing) - 0x4020f0e8 HTTPClient::beginInternal(String, char const*) - *fill* 0x4020f22f 0x1 + 0x4020d5e0 HTTPClient::beginInternal(String, char const*) + *fill* 0x4020d727 0x1 .text._ZN10HTTPClient3endEv - 0x4020f230 0x57 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d728 0x57 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x5f (size before relaxing) - 0x4020f230 HTTPClient::end() - *fill* 0x4020f287 0x1 + 0x4020d728 HTTPClient::end() + *fill* 0x4020d77f 0x1 .text._ZN10HTTPClient12setUserAgentERK6String - 0x4020f288 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d780 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x19 (size before relaxing) - 0x4020f288 HTTPClient::setUserAgent(String const&) - *fill* 0x4020f29d 0x3 + 0x4020d780 HTTPClient::setUserAgent(String const&) + *fill* 0x4020d795 0x3 .text._ZN10HTTPClient10setTimeoutEt - 0x4020f2a0 0x2b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d798 0x2b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x37 (size before relaxing) - 0x4020f2a0 HTTPClient::setTimeout(unsigned short) - *fill* 0x4020f2cb 0x1 + 0x4020d798 HTTPClient::setTimeout(unsigned short) + *fill* 0x4020d7c3 0x1 .text._ZN10HTTPClient12getStreamPtrEv - 0x4020f2cc 0x19 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d7c4 0x19 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x21 (size before relaxing) - 0x4020f2cc HTTPClient::getStreamPtr() - *fill* 0x4020f2e5 0x3 + 0x4020d7c4 HTTPClient::getStreamPtr() + *fill* 0x4020d7dd 0x3 .text._ZN10HTTPClient13errorToStringEi - 0x4020f2e8 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d7e0 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xcf (size before relaxing) - 0x4020f318 HTTPClient::errorToString(int) - *fill* 0x4020f3a7 0x1 + 0x4020d810 HTTPClient::errorToString(int) + *fill* 0x4020d89f 0x1 .text._ZN10HTTPClient9addHeaderERK6StringS2_bb - 0x4020f3a8 0x19c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020d8a0 0x19c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x274 (size before relaxing) - 0x4020f3c0 HTTPClient::addHeader(String const&, String const&, bool, bool) + 0x4020d8b8 HTTPClient::addHeader(String const&, String const&, bool, bool) .text._ZN10HTTPClient14collectHeadersEPPKcj - 0x4020f544 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020da3c 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xef (size before relaxing) - 0x4020f544 HTTPClient::collectHeaders(char const**, unsigned int) - *fill* 0x4020f603 0x1 + 0x4020da3c HTTPClient::collectHeaders(char const**, unsigned int) + *fill* 0x4020dafb 0x1 .text._ZN10HTTPClient6headerEPKc - 0x4020f604 0x65 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020dafc 0x65 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x79 (size before relaxing) - 0x4020f604 HTTPClient::header(char const*) - *fill* 0x4020f669 0x3 + 0x4020dafc HTTPClient::header(char const*) + *fill* 0x4020db61 0x3 .text._ZN10HTTPClient9hasHeaderEPKc - 0x4020f66c 0x62 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020db64 0x62 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x66 (size before relaxing) - 0x4020f66c HTTPClient::hasHeader(char const*) - *fill* 0x4020f6ce 0x2 + 0x4020db64 HTTPClient::hasHeader(char const*) + *fill* 0x4020dbc6 0x2 .text._ZN10HTTPClient7connectEv - 0x4020f6d0 0xaf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020dbc8 0xaf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xd3 (size before relaxing) - 0x4020f6d0 HTTPClient::connect() - *fill* 0x4020f77f 0x1 + 0x4020dbc8 HTTPClient::connect() + *fill* 0x4020dc77 0x1 .text._ZN10HTTPClient10sendHeaderEPKc - 0x4020f780 0x1ff .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020dc78 0x1ff .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x33f (size before relaxing) - 0x4020f7b0 HTTPClient::sendHeader(char const*) - *fill* 0x4020f97f 0x1 + 0x4020dca8 HTTPClient::sendHeader(char const*) + *fill* 0x4020de77 0x1 .text._ZN10HTTPClient20handleHeaderResponseEv - 0x4020f980 0x254 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020de78 0x254 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x39c (size before relaxing) - 0x4020f998 HTTPClient::handleHeaderResponse() + 0x4020de90 HTTPClient::handleHeaderResponse() .text._ZN10HTTPClient11returnErrorEi - 0x4020fbd4 0x2e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e0cc 0x2e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x32 (size before relaxing) - 0x4020fbd4 HTTPClient::returnError(int) - *fill* 0x4020fc02 0x2 + 0x4020e0cc HTTPClient::returnError(int) + *fill* 0x4020e0fa 0x2 .text._ZN10HTTPClient11sendRequestEPKcPhj - 0x4020fc04 0xbb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e0fc 0xbb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xf3 (size before relaxing) - 0x4020fc08 HTTPClient::sendRequest(char const*, unsigned char*, unsigned int) - *fill* 0x4020fcbf 0x1 + 0x4020e100 HTTPClient::sendRequest(char const*, unsigned char*, unsigned int) + *fill* 0x4020e1b7 0x1 .text._ZN10HTTPClient3GETEv - 0x4020fcc0 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e1b8 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x21 (size before relaxing) - 0x4020fcc4 HTTPClient::GET() - *fill* 0x4020fcdd 0x3 + 0x4020e1bc HTTPClient::GET() + *fill* 0x4020e1d5 0x3 .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x4020fce0 0x21 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e1d8 0x21 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x25 (size before relaxing) - 0x4020fce0 std::unique_ptr >::~unique_ptr() - 0x4020fce0 std::unique_ptr >::~unique_ptr() - *fill* 0x4020fd01 0x3 + 0x4020e1d8 std::unique_ptr >::~unique_ptr() + 0x4020e1d8 std::unique_ptr >::~unique_ptr() + *fill* 0x4020e1f9 0x3 .text._ZN10HTTPClientD2Ev - 0x4020fd04 0x8f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e1fc 0x8f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0xd3 (size before relaxing) - 0x4020fd04 HTTPClient::~HTTPClient() - 0x4020fd04 HTTPClient::~HTTPClient() - *fill* 0x4020fd93 0x1 + 0x4020e1fc HTTPClient::~HTTPClient() + 0x4020e1fc HTTPClient::~HTTPClient() + *fill* 0x4020e28b 0x1 .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x4020fd94 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e28c 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x1f (size before relaxing) - 0x4020fd94 std::unique_ptr >::reset(TransportTraits*) - *fill* 0x4020fdaf 0x1 + 0x4020e28c std::unique_ptr >::reset(TransportTraits*) + *fill* 0x4020e2a7 0x1 .text._ZN10HTTPClient5beginE6String - 0x4020fdb0 0x5e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020e2a8 0x5e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) 0x92 (size before relaxing) - 0x4020fdb4 HTTPClient::begin(String) - *fill* 0x4020fe0e 0x2 + 0x4020e2ac HTTPClient::begin(String) + *fill* 0x4020e306 0x2 .text._ZN6base646encodeEPhj - 0x4020fe10 0xa9 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0x4020e308 0xa9 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) 0xe5 (size before relaxing) - 0x4020fe2c base64::encode(unsigned char*, unsigned int) - *fill* 0x4020feb9 0x3 + 0x4020e324 base64::encode(unsigned char*, unsigned int) + *fill* 0x4020e3b1 0x3 .text._ZN6base646encodeE6String - 0x4020febc 0x29 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) + 0x4020e3b4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) 0x2d (size before relaxing) - 0x4020febc base64::encode(String) - *fill* 0x4020fee5 0x3 + 0x4020e3b4 base64::encode(String) + *fill* 0x4020e3dd 0x3 .text.__wrap_register_chipv6_phy - 0x4020fee8 0x32 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x4020e3e0 0x32 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) 0x42 (size before relaxing) - 0x4020feec __wrap_register_chipv6_phy - *fill* 0x4020ff1a 0x2 + 0x4020e3e4 __wrap_register_chipv6_phy + *fill* 0x4020e412 0x2 .text.user_rf_pre_init - 0x4020ff1c 0x4b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x4020e414 0x4b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) 0x66 (size before relaxing) - 0x4020ff24 user_rf_pre_init - *fill* 0x4020ff67 0x0 - *fill* 0x4020ff67 0x0 - *fill* 0x4020ff67 0x1 - .text._ZN6IRrecv12copyIrParamsEPV10irparams_tPS0_ - 0x4020ff68 0x39 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x4020ff68 IRrecv::copyIrParams(irparams_t volatile*, irparams_t*) - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x0 - *fill* 0x4020ffa1 0x3 - .text._ZN6IRsendC2Etb - 0x4020ffa4 0x21 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - 0x4020ffa4 IRsend::IRsend(unsigned short, bool) - 0x4020ffa4 IRsend::IRsend(unsigned short, bool) - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x0 - *fill* 0x4020ffc5 0x3 + 0x4020e41c user_rf_pre_init + *fill* 0x4020e45f 0x1 + .text._ZN6Stream9readBytesEPhj + 0x4020e460 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + 0x4020e460 Stream::readBytes(unsigned char*, unsigned int) + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x0 + *fill* 0x4020e473 0x1 + .text._ZN6TickerC2Ev + 0x4020e474 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + 0x4020e474 Ticker::Ticker() + 0x4020e474 Ticker::Ticker() + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x0 + *fill* 0x4020e47a 0x2 .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x4020ffc8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020ffc8 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x4020ffdd 0x0 - *fill* 0x4020ffdd 0x0 - *fill* 0x4020ffdd 0x3 + 0x4020e47c 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e47c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() + *fill* 0x4020e491 0x0 + *fill* 0x4020e491 0x0 + *fill* 0x4020e491 0x3 .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x4020ffe0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020ffe0 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 - *fill* 0x4020ffe4 0x0 + 0x4020e494 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e494 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 + *fill* 0x4020e498 0x0 .text._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ - 0x4020ffe4 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020ffe4 std::function::function(std::function const&) - 0x4020ffe4 std::function::function(std::function const&) - *fill* 0x40210005 0x3 + 0x4020e498 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e498 std::function::function(std::function const&) + 0x4020e498 std::function::function(std::function const&) + *fill* 0x4020e4b9 0x3 .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x40210008 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210008 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - 0x40210008 std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - *fill* 0x40210041 0x0 - *fill* 0x40210041 0x3 + 0x4020e4bc 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e4bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + 0x4020e4bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() + *fill* 0x4020e4f5 0x0 + *fill* 0x4020e4f5 0x3 .text._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ - 0x40210044 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210044 std::function::function(std::function const&) - 0x40210044 std::function::function(std::function const&) - *fill* 0x40210065 0x0 - *fill* 0x40210065 0x3 + 0x4020e4f8 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e4f8 std::function::function(std::function const&) + 0x4020e4f8 std::function::function(std::function const&) + *fill* 0x4020e519 0x0 + *fill* 0x4020e519 0x3 .text._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ - 0x40210068 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40210068 std::function::function(std::function const&) - 0x40210068 std::function::function(std::function const&) - *fill* 0x40210089 0x0 - *fill* 0x40210089 0x3 + 0x4020e51c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e51c std::function::function(std::function const&) + 0x4020e51c std::function::function(std::function const&) + *fill* 0x4020e53d 0x0 + *fill* 0x4020e53d 0x3 .text._ZNSt8functionIFvvEEC2ERKS1_ - 0x4021008c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4021008c std::function::function(std::function const&) - 0x4021008c std::function::function(std::function const&) - *fill* 0x402100ad 0x0 - *fill* 0x402100ad 0x0 - *fill* 0x402100ad 0x3 + 0x4020e540 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e540 std::function::function(std::function const&) + 0x4020e540 std::function::function(std::function const&) + *fill* 0x4020e561 0x0 + *fill* 0x4020e561 0x0 + *fill* 0x4020e561 0x3 .text._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x402100b0 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x402100b0 void std::swap(std::_Any_data&, std::_Any_data&) - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - *fill* 0x402100c8 0x0 - .text._ZN6Stream9readBytesEPhj - 0x402100c8 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x402100c8 Stream::readBytes(unsigned char*, unsigned int) - *fill* 0x402100db 0x1 + 0x4020e564 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) + 0x4020e564 void std::swap(std::_Any_data&, std::_Any_data&) + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 + *fill* 0x4020e57c 0x0 .text._ZN10WiFiClient5writeEh - 0x402100dc 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x402100dc WiFiClient::write(unsigned char) - *fill* 0x402100f7 0x1 + 0x4020e57c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020e57c WiFiClient::write(unsigned char) + *fill* 0x4020e597 0x1 .text._ZN10WiFiClient4peekEv - 0x402100f8 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x402100f8 WiFiClient::peek() - *fill* 0x40210129 0x3 + 0x4020e598 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020e598 WiFiClient::peek() + *fill* 0x4020e5c9 0x3 .text._ZN10WiFiClient9connectedEv - 0x4021012c 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4021012c WiFiClient::connected() - *fill* 0x4021015b 0x1 + 0x4020e5cc 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020e5cc WiFiClient::connected() + *fill* 0x4020e5fb 0x1 .text._ZN10WiFiClientcvbEv - 0x4021015c 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4021015c WiFiClient::operator bool() - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x0 - *fill* 0x40210167 0x1 + 0x4020e5fc 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020e5fc WiFiClient::operator bool() + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x0 + *fill* 0x4020e607 0x1 .text._ZN10WiFiClient10setNoDelayEb - 0x40210168 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x40210168 WiFiClient::setNoDelay(bool) - *fill* 0x4021018b 0x0 - *fill* 0x4021018b 0x0 - *fill* 0x4021018b 0x0 - *fill* 0x4021018b 0x1 + 0x4020e608 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) + 0x4020e608 WiFiClient::setNoDelay(bool) + *fill* 0x4020e62b 0x0 + *fill* 0x4020e62b 0x0 + *fill* 0x4020e62b 0x0 + *fill* 0x4020e62b 0x1 .text._ZN7WiFiUDP4readEPcj - 0x4021018c 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4021018c WiFiUDP::read(char*, unsigned int) - *fill* 0x4021019f 0x1 + 0x4020e62c 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e62c WiFiUDP::read(char*, unsigned int) + *fill* 0x4020e63f 0x1 .text._ZN7WiFiUDP5writeEh - 0x402101a0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101a0 WiFiUDP::write(unsigned char) - *fill* 0x402101bb 0x1 + 0x4020e640 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e640 WiFiUDP::write(unsigned char) + *fill* 0x4020e65b 0x1 .text._ZN7WiFiUDP4readEv - 0x402101bc 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101bc WiFiUDP::read() - *fill* 0x402101dd 0x3 + 0x4020e65c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e65c WiFiUDP::read() + *fill* 0x4020e67d 0x3 .text._ZN7WiFiUDP4peekEv - 0x402101e0 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x402101e0 WiFiUDP::peek() - *fill* 0x402101fd 0x3 + 0x4020e680 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e680 WiFiUDP::peek() + *fill* 0x4020e69d 0x3 .text._ZN7WiFiUDP5flushEv - 0x40210200 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40210200 WiFiUDP::flush() - *fill* 0x4021020f 0x0 - *fill* 0x4021020f 0x0 - *fill* 0x4021020f 0x0 - *fill* 0x4021020f 0x0 - *fill* 0x4021020f 0x1 + 0x4020e6a0 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e6a0 WiFiUDP::flush() + *fill* 0x4020e6af 0x0 + *fill* 0x4020e6af 0x0 + *fill* 0x4020e6af 0x0 + *fill* 0x4020e6af 0x0 + *fill* 0x4020e6af 0x1 .text._ZN7WiFiUDP10remotePortEv - 0x40210210 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40210210 WiFiUDP::remotePort() - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x0 - *fill* 0x40210237 0x1 - .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x40210238 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x40210238 DNSServer::setErrorReplyCode(DNSReplyCode const&) - *fill* 0x4021023e 0x0 - *fill* 0x4021023e 0x2 - .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x40210240 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x40210240 DNSServer::requestIncludesOnlyOneQuestion() - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - *fill* 0x40210270 0x0 - .text._ZN6TickerC2Ev - 0x40210270 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x40210270 Ticker::Ticker() - 0x40210270 Ticker::Ticker() - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x0 - *fill* 0x40210276 0x2 + 0x4020e6b0 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) + 0x4020e6b0 WiFiUDP::remotePort() + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x0 + *fill* 0x4020e6d7 0x1 .text._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x40210278 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x40210278 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) - *fill* 0x4021029e 0x2 + 0x4020e6d8 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020e6d8 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) + *fill* 0x4020e6fe 0x2 .text._ZN10UdpContext4readEv - 0x402102a0 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x402102a0 UdpContext::read() - *fill* 0x402102c0 0x0 + 0x4020e700 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020e700 UdpContext::read() + *fill* 0x4020e720 0x0 .text._ZN10UdpContext5flushEv - 0x402102c0 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x402102c0 UdpContext::flush() - *fill* 0x402102cb 0x0 - *fill* 0x402102cb 0x0 - *fill* 0x402102cb 0x0 - *fill* 0x402102cb 0x1 + 0x4020e720 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020e720 UdpContext::flush() + *fill* 0x4020e72b 0x0 + *fill* 0x4020e72b 0x0 + *fill* 0x4020e72b 0x0 + *fill* 0x4020e72b 0x1 .text._ZN13MDNSResponder17_getAnswerFromIdxEi - 0x402102cc 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x402102cc MDNSResponder::_getAnswerFromIdx(int) - *fill* 0x402102e6 0x0 - *fill* 0x402102e6 0x0 - *fill* 0x402102e6 0x2 + 0x4020e72c 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020e72c MDNSResponder::_getAnswerFromIdx(int) + *fill* 0x4020e746 0x0 + *fill* 0x4020e746 0x0 + *fill* 0x4020e746 0x2 .text._ZN13MDNSResponder14_getNumAnswersEv - 0x402102e8 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x402102e8 MDNSResponder::_getNumAnswers() - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x0 - *fill* 0x402102f9 0x3 - .text._ZN14Adafruit_SGP30C2Ev - 0x402102fc 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x402102fc Adafruit_SGP30::Adafruit_SGP30() - 0x402102fc Adafruit_SGP30::Adafruit_SGP30() - *fill* 0x402102fe 0x2 - .text._ZN14Adafruit_SGP3011generateCRCEPhh - 0x40210300 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x40210300 Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) - *fill* 0x4021033c 0x0 - *fill* 0x4021033c 0x0 - *fill* 0x4021033c 0x0 - *fill* 0x4021033c 0x0 - *fill* 0x4021033c 0x0 - .text._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x4021033c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4021033c RequestHandler::canHandle(HTTPMethod, String) - .text._ZN14RequestHandler9canUploadE6String - 0x40210340 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210340 RequestHandler::canUpload(String) - .text._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x40210344 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210344 RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) - .text._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x40210348 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210348 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x0 - *fill* 0x4021034a 0x2 - .text._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler - 0x4021034c 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4021034c ESP8266WebServer::_addRequestHandler(RequestHandler*) - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x0 - *fill* 0x4021035f 0x1 - .text._ZN16ESP8266WebServer4argsEv - 0x40210360 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x40210360 ESP8266WebServer::args() - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x0 - *fill* 0x40210365 0x3 + 0x4020e748 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + 0x4020e748 MDNSResponder::_getNumAnswers() + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x0 + *fill* 0x4020e759 0x3 + .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode + 0x4020e75c 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x4020e75c DNSServer::setErrorReplyCode(DNSReplyCode const&) + *fill* 0x4020e762 0x0 + *fill* 0x4020e762 0x2 + .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv + 0x4020e764 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) + 0x4020e764 DNSServer::requestIncludesOnlyOneQuestion() + *fill* 0x4020e794 0x0 + *fill* 0x4020e794 0x0 + *fill* 0x4020e794 0x0 + *fill* 0x4020e794 0x0 + *fill* 0x4020e794 0x0 .text._ZN8RCSwitch14setPulseLengthEi - 0x40210368 0x5 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x40210368 RCSwitch::setPulseLength(int) - *fill* 0x4021036d 0x3 + 0x4020e794 0x5 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x4020e794 RCSwitch::setPulseLength(int) + *fill* 0x4020e799 0x3 .text._ZN8RCSwitch17setRepeatTransmitEi - 0x40210370 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x40210370 RCSwitch::setRepeatTransmit(int) - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 - *fill* 0x40210374 0x0 + 0x4020e79c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + 0x4020e79c RCSwitch::setRepeatTransmit(int) + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 + *fill* 0x4020e7a0 0x0 .text._ZNK6String14StringIfHelperEv - 0x40210374 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x40210374 String::StringIfHelper() const - *fill* 0x40210376 0x2 + 0x4020e7a0 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x4020e7a0 String::StringIfHelper() const + *fill* 0x4020e7a2 0x2 .text._ZN17ESP8266HTTPUpdate12getLastErrorEv - 0x40210378 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x40210378 ESP8266HTTPUpdate::getLastError() - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 - *fill* 0x4021037c 0x0 + 0x4020e7a4 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + 0x4020e7a4 ESP8266HTTPUpdate::getLastError() + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 + *fill* 0x4020e7a8 0x0 .text._ZN13TasmotaSerial14isValidGPIOpinEi - 0x4021037c 0x16 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x4021037c TasmotaSerial::isValidGPIOpin(int) - *fill* 0x40210392 0x0 - *fill* 0x40210392 0x0 - *fill* 0x40210392 0x2 + 0x4020e7a8 0x16 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x4020e7a8 TasmotaSerial::isValidGPIOpin(int) + *fill* 0x4020e7be 0x0 + *fill* 0x4020e7be 0x0 + *fill* 0x4020e7be 0x2 .text._ZN13TasmotaSerial14hardwareSerialEv - 0x40210394 0x5 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x40210394 TasmotaSerial::hardwareSerial() - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x0 - *fill* 0x40210399 0x3 + 0x4020e7c0 0x5 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + 0x4020e7c0 TasmotaSerial::hardwareSerial() + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x0 + *fill* 0x4020e7c5 0x3 .text._ZN13TasmotaModbus12ReceiveReadyEv - 0x4021039c 0x1e .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x4021039c TasmotaModbus::ReceiveReady() - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x0 - *fill* 0x402103ba 0x2 + 0x4020e7c8 0x1e .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x4020e7c8 TasmotaModbus::ReceiveReady() + *fill* 0x4020e7e6 0x0 + *fill* 0x4020e7e6 0x2 + .text._ZN14Adafruit_SGP30C2Ev + 0x4020e7e8 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x4020e7e8 Adafruit_SGP30::Adafruit_SGP30() + 0x4020e7e8 Adafruit_SGP30::Adafruit_SGP30() + *fill* 0x4020e7ea 0x2 + .text._ZN14Adafruit_SGP3011generateCRCEPhh + 0x4020e7ec 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + 0x4020e7ec Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) + *fill* 0x4020e828 0x0 + *fill* 0x4020e828 0x0 + *fill* 0x4020e828 0x0 + *fill* 0x4020e828 0x0 + .text._ZN15Adafruit_CCS8119meas_mode3getEv + 0x4020e828 0x1d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + 0x4020e828 Adafruit_CCS811::meas_mode::get() + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x0 + *fill* 0x4020e845 0x3 .text._ZN12PubSubClient11writeStringEPKcPht - 0x402103bc 0x42 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x402103bc PubSubClient::writeString(char const*, unsigned char*, unsigned short) - *fill* 0x402103fe 0x2 + 0x4020e848 0x42 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4020e848 PubSubClient::writeString(char const*, unsigned char*, unsigned short) + *fill* 0x4020e88a 0x2 .text._ZN12PubSubClient9connectedEv - 0x40210400 0x4b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x40210400 PubSubClient::connected() - *fill* 0x4021044b 0x0 - *fill* 0x4021044b 0x0 - *fill* 0x4021044b 0x0 - *fill* 0x4021044b 0x0 - *fill* 0x4021044b 0x1 + 0x4020e88c 0x4b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4020e88c PubSubClient::connected() + *fill* 0x4020e8d7 0x0 + *fill* 0x4020e8d7 0x0 + *fill* 0x4020e8d7 0x0 + *fill* 0x4020e8d7 0x0 + *fill* 0x4020e8d7 0x1 .text._ZN12PubSubClient5stateEv - 0x4021044c 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4021044c PubSubClient::state() - *fill* 0x40210453 0x1 + 0x4020e8d8 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4020e8d8 PubSubClient::state() + *fill* 0x4020e8df 0x1 .text._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x40210454 0x21 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x40210454 std::function::function(std::function const&) - 0x40210454 std::function::function(std::function const&) - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x0 - *fill* 0x40210475 0x3 + 0x4020e8e0 0x21 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x4020e8e0 std::function::function(std::function const&) + 0x4020e8e0 std::function::function(std::function const&) + *fill* 0x4020e901 0x0 + *fill* 0x4020e901 0x0 + *fill* 0x4020e901 0x3 + .text._ZN14RequestHandler9canHandleE10HTTPMethod6String + 0x4020e904 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e904 RequestHandler::canHandle(HTTPMethod, String) + .text._ZN14RequestHandler9canUploadE6String + 0x4020e908 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e908 RequestHandler::canUpload(String) + .text._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String + 0x4020e90c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e90c RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) + .text._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload + 0x4020e910 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e910 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x0 + *fill* 0x4020e912 0x2 + .text._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler + 0x4020e914 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e914 ESP8266WebServer::_addRequestHandler(RequestHandler*) + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x0 + *fill* 0x4020e927 0x1 + .text._ZN16ESP8266WebServer4argsEv + 0x4020e928 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + 0x4020e928 ESP8266WebServer::args() + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x0 + *fill* 0x4020e92d 0x3 .text._ZN9IPAddress10fromStringEPKc - 0x40210478 0x5e .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x40210478 IPAddress::fromString(char const*) - *fill* 0x402104d6 0x2 + 0x4020e930 0x5e .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x4020e930 IPAddress::fromString(char const*) + *fill* 0x4020e98e 0x2 .text._ZN9IPAddressaSEj - 0x402104d8 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x402104d8 IPAddress::operator=(unsigned int) - *fill* 0x402104dc 0x0 - *fill* 0x402104dc 0x0 - *fill* 0x402104dc 0x0 - *fill* 0x402104dc 0x0 - *fill* 0x402104dc 0x0 - *fill* 0x402104dc 0x0 + 0x4020e990 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) + 0x4020e990 IPAddress::operator=(unsigned int) + *fill* 0x4020e994 0x0 + *fill* 0x4020e994 0x0 + *fill* 0x4020e994 0x0 + *fill* 0x4020e994 0x0 + *fill* 0x4020e994 0x0 + *fill* 0x4020e994 0x0 .text._ZN5Print5writeEPKhj - 0x402104dc 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x402104dc Print::write(unsigned char const*, unsigned int) - *fill* 0x40210518 0x0 + 0x4020e994 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x4020e994 Print::write(unsigned char const*, unsigned int) + *fill* 0x4020e9d0 0x0 .text._ZN5Print5printEPK19__FlashStringHelper - 0x40210518 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x40210518 Print::print(__FlashStringHelper const*) - *fill* 0x40210561 0x0 - *fill* 0x40210561 0x3 + 0x4020e9d0 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x4020e9d0 Print::print(__FlashStringHelper const*) + *fill* 0x4020ea19 0x0 + *fill* 0x4020ea19 0x3 .text._ZN5Print5printEc - 0x40210564 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x40210564 Print::print(char) - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x0 - *fill* 0x4021057b 0x1 + 0x4020ea1c 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) + 0x4020ea1c Print::print(char) + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x0 + *fill* 0x4020ea33 0x1 .text._ZN6Stream10setTimeoutEm - 0x4021057c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x4021057c Stream::setTimeout(unsigned long) - *fill* 0x40210580 0x0 + 0x4020ea34 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) + 0x4020ea34 Stream::setTimeout(unsigned long) + *fill* 0x4020ea38 0x0 .text._ZN12StreamString9availableEv - 0x40210580 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x40210580 StreamString::available() + 0x4020ea38 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x4020ea38 StreamString::available() .text._ZN12StreamString5flushEv - 0x4021058c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x4021058c StreamString::flush() - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x0 - *fill* 0x4021058e 0x2 + 0x4020ea44 0x2 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) + 0x4020ea44 StreamString::flush() + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x0 + *fill* 0x4020ea46 0x2 .text._ZN12UpdaterClass13_verifyHeaderEh - 0x40210590 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x40210590 UpdaterClass::_verifyHeader(unsigned char) - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x0 - *fill* 0x402105c3 0x1 + 0x4020ea48 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) + 0x4020ea48 UpdaterClass::_verifyHeader(unsigned char) + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x0 + *fill* 0x4020ea7b 0x1 .text._ZN6StringC2EOS_ - 0x402105c4 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x402105c4 String::String(String&&) - 0x402105c4 String::String(String&&) - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 - *fill* 0x402105e0 0x0 + 0x4020ea7c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ea7c String::String(String&&) + 0x4020ea7c String::String(String&&) + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 + *fill* 0x4020ea98 0x0 .text._ZNK6StringixEj - 0x402105e0 0x15 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x402105e0 String::operator[](unsigned int) const - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x0 - *fill* 0x402105f5 0x3 + 0x4020ea98 0x15 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) + 0x4020ea98 String::operator[](unsigned int) const + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x0 + *fill* 0x4020eaad 0x3 .text.__cxa_guard_acquire - 0x402105f8 0x1c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x402105f8 __cxa_guard_acquire + 0x4020eab0 0x1c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020eab0 __cxa_guard_acquire .text.__cxa_guard_release - 0x40210614 0x10 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x40210614 __cxa_guard_release - *fill* 0x40210624 0x0 - *fill* 0x40210624 0x0 - *fill* 0x40210624 0x0 - *fill* 0x40210624 0x0 + 0x4020eacc 0x10 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) + 0x4020eacc __cxa_guard_release + *fill* 0x4020eadc 0x0 + *fill* 0x4020eadc 0x0 + *fill* 0x4020eadc 0x0 + *fill* 0x4020eadc 0x0 .text.initVariant - 0x40210624 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x40210624 initVariant - *fill* 0x40210626 0x2 + 0x4020eadc 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020eadc initVariant + *fill* 0x4020eade 0x2 .text._Z24preloop_update_frequencyv - 0x40210628 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x40210628 preloop_update_frequency() - *fill* 0x4021062a 0x0 - *fill* 0x4021062a 0x0 - *fill* 0x4021062a 0x0 - *fill* 0x4021062a 0x2 + 0x4020eae0 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020eae0 preloop_update_frequency() + *fill* 0x4020eae2 0x0 + *fill* 0x4020eae2 0x0 + *fill* 0x4020eae2 0x0 + *fill* 0x4020eae2 0x2 .text.__gdb_init - 0x4021062c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4021062c gdb_init - 0x4021062c __gdb_init - *fill* 0x4021062e 0x0 - *fill* 0x4021062e 0x2 + 0x4020eae4 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020eae4 gdb_init + 0x4020eae4 __gdb_init + *fill* 0x4020eae6 0x0 + *fill* 0x4020eae6 0x2 .text.__gdb_do_break - 0x40210630 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x40210630 __gdb_do_break - 0x40210630 gdb_do_break - *fill* 0x40210632 0x0 - *fill* 0x40210632 0x0 - *fill* 0x40210632 0x0 - *fill* 0x40210632 0x2 - .text.reverse 0x40210634 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x40210634 reverse - *fill* 0x4021064d 0x0 - *fill* 0x4021064d 0x0 - *fill* 0x4021064d 0x0 - *fill* 0x4021064d 0x3 + 0x4020eae8 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) + 0x4020eae8 __gdb_do_break + 0x4020eae8 gdb_do_break + *fill* 0x4020eaea 0x0 + *fill* 0x4020eaea 0x0 + *fill* 0x4020eaea 0x0 + *fill* 0x4020eaea 0x2 + .text.reverse 0x4020eaec 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) + 0x4020eaec reverse + *fill* 0x4020eb05 0x0 + *fill* 0x4020eb05 0x0 + *fill* 0x4020eb05 0x0 + *fill* 0x4020eb05 0x3 .text.__custom_crash_callback - 0x40210650 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x40210650 custom_crash_callback - 0x40210650 __custom_crash_callback - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x0 - *fill* 0x40210652 0x2 + 0x4020eb08 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) + 0x4020eb08 custom_crash_callback + 0x4020eb08 __custom_crash_callback + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x0 + *fill* 0x4020eb0a 0x2 .text.base64_init_encodestate - 0x40210654 0xb .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x40210654 base64_init_encodestate - *fill* 0x4021065f 0x0 - *fill* 0x4021065f 0x0 - *fill* 0x4021065f 0x0 - *fill* 0x4021065f 0x1 - .text.strchr 0x40210660 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210660 strchr - .text.strrchr 0x40210674 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210674 strrchr - *fill* 0x4021068d 0x0 - *fill* 0x4021068d 0x0 - *fill* 0x4021068d 0x3 + 0x4020eb0c 0xb .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) + 0x4020eb0c base64_init_encodestate + *fill* 0x4020eb17 0x0 + *fill* 0x4020eb17 0x0 + *fill* 0x4020eb17 0x0 + *fill* 0x4020eb17 0x1 + .text.strchr 0x4020eb18 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020eb18 strchr + .text.strrchr 0x4020eb2c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020eb2c strrchr + *fill* 0x4020eb45 0x0 + *fill* 0x4020eb45 0x0 + *fill* 0x4020eb45 0x3 .text.strtok_r - 0x40210690 0x56 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210690 strtok_r - *fill* 0x402106e6 0x0 - *fill* 0x402106e6 0x0 - *fill* 0x402106e6 0x2 - .text.isalpha 0x402106e8 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x402106e8 isalpha - *fill* 0x402106fc 0x0 - .text.iscntrl 0x402106fc 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x402106fc iscntrl - *fill* 0x40210719 0x0 - *fill* 0x40210719 0x3 + 0x4020eb48 0x56 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020eb48 strtok_r + *fill* 0x4020eb9e 0x0 + *fill* 0x4020eb9e 0x0 + *fill* 0x4020eb9e 0x2 + .text.isalpha 0x4020eba0 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020eba0 isalpha + *fill* 0x4020ebb4 0x0 + .text.iscntrl 0x4020ebb4 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ebb4 iscntrl + *fill* 0x4020ebd1 0x0 + *fill* 0x4020ebd1 0x3 .text.isxdigit - 0x4021071c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4021071c isxdigit - .text.tolower 0x40210738 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210738 tolower - *fill* 0x40210746 0x0 - *fill* 0x40210746 0x2 - .text.toupper 0x40210748 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210748 toupper - *fill* 0x40210756 0x2 - .text.isblank 0x40210758 0x10 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210758 isblank - *fill* 0x40210768 0x0 - .text.strlcpy 0x40210768 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x40210768 strlcpy - *fill* 0x402107a3 0x0 - *fill* 0x402107a3 0x0 - *fill* 0x402107a3 0x1 + 0x4020ebd4 0x1c .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ebd4 isxdigit + .text.tolower 0x4020ebf0 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ebf0 tolower + *fill* 0x4020ebfe 0x0 + *fill* 0x4020ebfe 0x2 + .text.toupper 0x4020ec00 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ec00 toupper + *fill* 0x4020ec0e 0x2 + .text.isblank 0x4020ec10 0x10 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ec10 isblank + *fill* 0x4020ec20 0x0 + .text.strlcpy 0x4020ec20 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x4020ec20 strlcpy + *fill* 0x4020ec5b 0x0 + *fill* 0x4020ec5b 0x0 + *fill* 0x4020ec5b 0x1 .text._Z9strnlen_PPKcj - 0x402107a4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x402107a4 strnlen_P(char const*, unsigned int) - *fill* 0x402107cd 0x3 + 0x4020ec5c 0x29 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020ec5c strnlen_P(char const*, unsigned int) + *fill* 0x4020ec85 0x3 .text._Z8strstr_PPKcS0_ - 0x402107d0 0x57 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x402107d0 strstr_P(char const*, char const*) - *fill* 0x40210827 0x1 + 0x4020ec88 0x57 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020ec88 strstr_P(char const*, char const*) + *fill* 0x4020ecdf 0x1 .text._Z8memcpy_PPvPKvj - 0x40210828 0x24 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x40210828 memcpy_P(void*, void const*, unsigned int) + 0x4020ece0 0x24 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020ece0 memcpy_P(void*, void const*, unsigned int) .text._Z9strncpy_PPcPKcj - 0x4021084c 0x2e .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4021084c strncpy_P(char*, char const*, unsigned int) - *fill* 0x4021087a 0x2 + 0x4020ed04 0x2e .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020ed04 strncpy_P(char*, char const*, unsigned int) + *fill* 0x4020ed32 0x2 .text._Z9strncat_PPcPKcj - 0x4021087c 0x4a .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4021087c strncat_P(char*, char const*, unsigned int) - *fill* 0x402108c6 0x2 - .text._Z9strncmp_PPKcS0_j - 0x402108c8 0x44 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x402108c8 strncmp_P(char const*, char const*, unsigned int) - *fill* 0x4021090c 0x0 - *fill* 0x4021090c 0x0 - *fill* 0x4021090c 0x0 + 0x4020ed34 0x4a .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) + 0x4020ed34 strncat_P(char*, char const*, unsigned int) + *fill* 0x4020ed7e 0x0 + *fill* 0x4020ed7e 0x0 + *fill* 0x4020ed7e 0x0 + *fill* 0x4020ed7e 0x2 .text.uart_ignore_char - 0x4021090c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x0 - *fill* 0x4021090e 0x2 + 0x4020ed80 0x2 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x0 + *fill* 0x4020ed82 0x2 .text.uart_get_baudrate - 0x40210910 0x6 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x40210910 uart_get_baudrate - *fill* 0x40210916 0x0 - *fill* 0x40210916 0x0 - *fill* 0x40210916 0x2 + 0x4020ed84 0x6 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020ed84 uart_get_baudrate + *fill* 0x4020ed8a 0x0 + *fill* 0x4020ed8a 0x0 + *fill* 0x4020ed8a 0x2 .text.uart_tx_enabled - 0x40210918 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x40210918 uart_tx_enabled - *fill* 0x4021091f 0x1 + 0x4020ed8c 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020ed8c uart_tx_enabled + *fill* 0x4020ed93 0x1 .text.uart_rx_enabled - 0x40210920 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x40210920 uart_rx_enabled - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x0 - *fill* 0x40210927 0x1 + 0x4020ed94 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) + 0x4020ed94 uart_rx_enabled + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x0 + *fill* 0x4020ed9b 0x1 .text._ZNSt8functionIFvvEE4swapERS1_ - 0x40210928 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - 0x40210928 std::function::swap(std::function&) - *fill* 0x40210950 0x0 - *fill* 0x40210950 0x0 - *fill* 0x40210950 0x0 + 0x4020ed9c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) + 0x4020ed9c std::function::swap(std::function&) + *fill* 0x4020edc4 0x0 + *fill* 0x4020edc4 0x0 + *fill* 0x4020edc4 0x0 .text._ZN10WiFiServer5writeEh - 0x40210950 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x40210950 WiFiServer::write(unsigned char) - *fill* 0x4021096b 0x1 + 0x4020edc4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020edc4 WiFiServer::write(unsigned char) + *fill* 0x4020eddf 0x1 .text._ZN10WiFiServer5writeEPKhj - 0x4021096c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4021096c WiFiServer::write(unsigned char const*, unsigned int) + 0x4020ede0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020ede0 WiFiServer::write(unsigned char const*, unsigned int) .text._ZN10WiFiServer10_s_discardEPvP13ClientContext - 0x40210970 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x40210970 WiFiServer::_s_discard(void*, ClientContext*) - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x0 - *fill* 0x40210972 0x2 + 0x4020ede4 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x4020ede4 WiFiServer::_s_discard(void*, ClientContext*) + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x0 + *fill* 0x4020ede6 0x2 .text._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x40210974 0x4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x40210974 TransportTraits::verify(WiFiClient&, char const*) - *fill* 0x40210978 0x0 - *fill* 0x40210978 0x0 + 0x4020ede8 0x4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020ede8 TransportTraits::verify(WiFiClient&, char const*) + *fill* 0x4020edec 0x0 + *fill* 0x4020edec 0x0 .text._ZNKSt14default_deleteI10WiFiClientEclEPS0_$isra$5 - 0x40210978 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x4021098d 0x3 + 0x4020edec 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x4020ee01 0x3 .text._ZNKSt14default_deleteI15TransportTraitsEclEPS0_$isra$6 - 0x40210990 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x402109a5 0x0 - *fill* 0x402109a5 0x0 - *fill* 0x402109a5 0x0 - *fill* 0x402109a5 0x3 + 0x4020ee04 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x4020ee19 0x0 + *fill* 0x4020ee19 0x0 + *fill* 0x4020ee19 0x0 + *fill* 0x4020ee19 0x3 .text._ZN10HTTPClient9connectedEv - 0x402109a8 0x3c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x402109a8 HTTPClient::connected() - *fill* 0x402109e4 0x0 - *fill* 0x402109e4 0x0 - *fill* 0x402109e4 0x0 + 0x4020ee1c 0x3c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020ee1c HTTPClient::connected() + *fill* 0x4020ee58 0x0 + *fill* 0x4020ee58 0x0 + *fill* 0x4020ee58 0x0 .text._ZN10HTTPClient9useHTTP10Eb - 0x402109e4 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x402109e4 HTTPClient::useHTTP10(bool) - *fill* 0x402109e9 0x3 + 0x4020ee58 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020ee58 HTTPClient::useHTTP10(bool) + *fill* 0x4020ee5d 0x3 .text._ZN10HTTPClient7getSizeEv - 0x402109ec 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x402109ec HTTPClient::getSize() - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x0 - *fill* 0x402109f1 0x3 + 0x4020ee60 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x4020ee60 HTTPClient::getSize() + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x0 + *fill* 0x4020ee65 0x3 .text._Z13__get_rf_modev - 0x402109f4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x402109f4 __get_rf_mode() - *fill* 0x402109f8 0x0 + 0x4020ee68 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x4020ee68 __get_rf_mode() + *fill* 0x4020ee6c 0x0 .text._Z22__run_user_rf_pre_initv - 0x402109f8 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x402109f8 __run_user_rf_pre_init() - *fill* 0x402109fa 0x0 + 0x4020ee6c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + 0x4020ee6c __run_user_rf_pre_init() + *fill* 0x4020ee6e 0x0 *.pioenvs/*/lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) *.pioenvs\\*\\lib\*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) *.pioenvs/*/lib/*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) *.pioenvs\\*\\src\\*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *fill* 0x402109fa 0x2 + *fill* 0x4020ee6e 0x2 .text.timer1_enable - 0x402109fc 0x37 .pioenvs\sonoff\src\core_esp8266_timer.c.o - 0x40210a04 timer1_enable - *fill* 0x40210a33 0x1 + 0x4020ee70 0x37 .pioenvs\sonoff\src\core_esp8266_timer.c.o + 0x4020ee78 timer1_enable + *fill* 0x4020eea7 0x1 .text.__pinMode - 0x40210a34 0x393 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x4020eea8 0x393 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o 0x39b (size before relaxing) - 0x40210a50 __pinMode - 0x40210a50 pinMode - *fill* 0x40210dc7 0x1 + 0x4020eec4 __pinMode + 0x4020eec4 pinMode + *fill* 0x4020f23b 0x1 .text.initPins - 0x40210dc8 0x78 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x4020f23c 0x78 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o 0x8c (size before relaxing) - 0x40210ddc initPins + 0x4020f250 initPins .text.pwm_get_mask - 0x40210e40 0x3b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x40210e48 pwm_get_mask - *fill* 0x40210e7b 0x1 + 0x4020f2b4 0x3b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f2bc pwm_get_mask + *fill* 0x4020f2ef 0x1 .text.prep_pwm_steps - 0x40210e7c 0x132 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f2f0 0x132 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0x152 (size before relaxing) - 0x40210e90 prep_pwm_steps - *fill* 0x40210fae 0x2 + 0x4020f304 prep_pwm_steps + *fill* 0x4020f422 0x2 .text.pwm_start_timer - 0x40210fb0 0x48 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f424 0x48 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0x54 (size before relaxing) - 0x40210fc0 pwm_start_timer + 0x4020f434 pwm_start_timer .text.__analogWrite - 0x40210ff8 0xa8 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f46c 0xa8 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0xe0 (size before relaxing) - 0x40210ff8 __analogWrite - 0x40210ff8 analogWrite + 0x4020f46c __analogWrite + 0x4020f46c analogWrite .text.__analogWriteFreq - 0x402110a0 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f514 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0x1f (size before relaxing) - 0x402110a0 __analogWriteFreq - 0x402110a0 analogWriteFreq - *fill* 0x402110b7 0x1 + 0x4020f514 __analogWriteFreq + 0x4020f514 analogWriteFreq + *fill* 0x4020f52b 0x1 .text.__analogWriteRange - 0x402110b8 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4020f52c 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0x1f (size before relaxing) - 0x402110b8 analogWriteRange - 0x402110b8 __analogWriteRange - *fill* 0x402110cf 0x1 + 0x4020f52c analogWriteRange + 0x4020f52c __analogWriteRange + *fill* 0x4020f543 0x1 .text._Z22HandlePreflightRequestv - 0x402110d0 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f544 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x16b (size before relaxing) - 0x402110f4 HandlePreflightRequest() - *fill* 0x402111ab 0x1 + 0x4020f568 HandlePreflightRequest() + *fill* 0x4020f61f 0x1 .text._ZL9WebGetArgPKcPcj - 0x402111ac 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f620 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6d (size before relaxing) - *fill* 0x402111f5 0x3 - .text._Z17AriluxRfInterruptv - 0x402111f8 0xfc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x108 (size before relaxing) - 0x40211214 AriluxRfInterrupt() + *fill* 0x4020f669 0x3 .text._Z13Tx20StartReadv - 0x402112f4 0x187 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f66c 0x187 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x197 (size before relaxing) - 0x40211314 Tx20StartRead() - *fill* 0x4021147b 0x1 + 0x4020f68c Tx20StartRead() + *fill* 0x4020f7f3 0x1 .text._ZN5Print5writeEPKc - 0x4021147c 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f7f4 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x32 (size before relaxing) - 0x4021147c Print::write(char const*) - *fill* 0x402114aa 0x2 + 0x4020f7f4 Print::write(char const*) + *fill* 0x4020f822 0x2 .text._ZN12PubSubClientD2Ev - 0x402114ac 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f824 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x37 (size before relaxing) - 0x402114ac PubSubClient::~PubSubClient() - 0x402114ac PubSubClient::~PubSubClient() - *fill* 0x402114d3 0x1 + 0x4020f824 PubSubClient::~PubSubClient() + 0x4020f824 PubSubClient::~PubSubClient() + *fill* 0x4020f84b 0x1 .text._ZN12PubSubClientD0Ev - 0x402114d4 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f84c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x402114d4 PubSubClient::~PubSubClient() - *fill* 0x402114f1 0x3 + 0x4020f84c PubSubClient::~PubSubClient() + *fill* 0x4020f869 0x3 .text._ZN11ArduinoJson9JsonArray7invalidEv - 0x402114f4 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f86c 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4b (size before relaxing) - 0x402114fc ArduinoJson::JsonArray::invalid() - *fill* 0x40211533 0x1 + 0x4020f874 ArduinoJson::JsonArray::invalid() + *fill* 0x4020f8ab 0x1 .text._ZN11ArduinoJson10JsonObject7invalidEv - 0x40211534 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f8ac 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4b (size before relaxing) - 0x4021153c ArduinoJson::JsonObject::invalid() - *fill* 0x40211573 0x1 + 0x4020f8b4 ArduinoJson::JsonObject::invalid() + *fill* 0x4020f8eb 0x1 .text._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x40211574 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f8ec 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x37 (size before relaxing) - 0x40211574 ArduinoJson::JsonBuffer::createArray() - *fill* 0x4021159f 0x1 + 0x4020f8ec ArduinoJson::JsonBuffer::createArray() + *fill* 0x4020f917 0x1 .text._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x402115a0 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f918 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x37 (size before relaxing) - 0x402115a0 ArduinoJson::JsonBuffer::createObject() - *fill* 0x402115cb 0x1 + 0x4020f918 ArduinoJson::JsonBuffer::createObject() + *fill* 0x4020f943 0x1 .text._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x402115cc 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f944 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3b (size before relaxing) - 0x402115d0 ArduinoJson::JsonVariant::variantAsString() const - *fill* 0x40211603 0x1 + 0x4020f948 ArduinoJson::JsonVariant::variantAsString() const + *fill* 0x4020f97b 0x1 .text._Z6FormatPcPKci - 0x40211604 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020f97c 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x175 (size before relaxing) - 0x40211614 Format(char*, char const*, int) - *fill* 0x40211709 0x3 + 0x4020f98c Format(char*, char const*, int) + *fill* 0x4020fa81 0x3 .text._Z9GetOtaUrlPcj - 0x4021170c 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fa84 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xaf (size before relaxing) - 0x4021171c GetOtaUrl(char*, unsigned int) - *fill* 0x40211793 0x1 + 0x4020fa94 GetOtaUrl(char*, unsigned int) + *fill* 0x4020fb0b 0x1 .text._Z10GetTopic_PPchS_PKc - 0x40211794 0x29f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fb0c 0x29f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x413 (size before relaxing) - 0x402117e0 GetTopic_P(char*, unsigned char, char*, char const*) - *fill* 0x40211a33 0x1 + 0x4020fb58 GetTopic_P(char*, unsigned char, char*, char const*) + *fill* 0x4020fdab 0x1 .text._Z16SetLatchingRelaymh - 0x40211a34 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fdac 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x95 (size before relaxing) - 0x40211a44 SetLatchingRelay(unsigned long, unsigned char) - *fill* 0x40211ac1 0x3 + 0x4020fdbc SetLatchingRelay(unsigned long, unsigned char) + *fill* 0x4020fe39 0x3 .text._Z11SetLedPowerh - 0x40211ac4 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fe3c 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3a (size before relaxing) - 0x40211ac8 SetLedPower(unsigned char) - *fill* 0x40211af6 0x2 + 0x4020fe40 SetLedPower(unsigned char) + *fill* 0x4020fe6e 0x2 .text._Z11GetFanspeedv - 0x40211af8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211afc GetFanspeed() + 0x4020fe70 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fe74 GetFanspeed() .text._Z13SetPulseTimerht - 0x40211b10 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x62 (size before relaxing) - 0x40211b14 SetPulseTimer(unsigned char, unsigned short) - *fill* 0x40211b6a 0x2 + 0x4020fe88 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x65 (size before relaxing) + 0x4020fe8c SetPulseTimer(unsigned char, unsigned short) + *fill* 0x4020fee5 0x3 .text._Z16MqttShowPWMStatev - 0x40211b6c 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020fee8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xad (size before relaxing) - 0x40211b80 MqttShowPWMState() - *fill* 0x40211bf9 0x3 + 0x4020fefc MqttShowPWMState() + *fill* 0x4020ff75 0x3 .text._Z17GpioSwitchPinModeh - 0x40211bfc 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020ff78 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x75 (size before relaxing) - 0x40211c00 GpioSwitchPinMode(unsigned char) - *fill* 0x40211c65 0x3 + 0x4020ff7c GpioSwitchPinMode(unsigned char) + *fill* 0x4020ffe1 0x3 .text._Z17GetRtcSettingsCrcv - 0x40211c68 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211c6c GetRtcSettingsCrc() + 0x4020ffe4 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4020ffe8 GetRtcSettingsCrc() .text._Z15RtcSettingsSavev - 0x40211c88 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210004 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x59 (size before relaxing) - 0x40211c90 RtcSettingsSave() - *fill* 0x40211cc5 0x3 + 0x4021000c RtcSettingsSave() + *fill* 0x40210041 0x3 .text._Z13OsWatchTickerv - 0x40211cc8 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210044 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x58 (size before relaxing) - 0x40211cd0 OsWatchTicker() + 0x4021004c OsWatchTicker() .text._Z15RtcSettingsLoadv - 0x40211d04 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210080 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa1 (size before relaxing) - 0x40211d04 RtcSettingsLoad() - *fill* 0x40211d79 0x3 + 0x40210080 RtcSettingsLoad() + *fill* 0x402100f5 0x3 .text._Z15GetRtcRebootCrcv - 0x40211d7c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211d80 GetRtcRebootCrc() + 0x402100f8 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402100fc GetRtcRebootCrc() .text._Z13RtcRebootSavev - 0x40211d9c 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210118 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x59 (size before relaxing) - 0x40211da0 RtcRebootSave() - *fill* 0x40211dd5 0x3 + 0x4021011c RtcRebootSave() + *fill* 0x40210151 0x3 .text._Z13RtcRebootLoadv - 0x40211dd8 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210154 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x68 (size before relaxing) - 0x40211dd8 RtcRebootLoad() + 0x40210154 RtcRebootLoad() .text._Z16SetFlashModeDoutv - 0x40211e1c 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210198 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xac (size before relaxing) - 0x40211e1c SetFlashModeDout() + 0x40210198 SetFlashModeDout() .text._Z18SettingsBufferFreev - 0x40211e98 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210214 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x40211e9c SettingsBufferFree() - *fill* 0x40211ebd 0x3 + 0x40210218 SettingsBufferFree() + *fill* 0x40210239 0x3 .text._Z14GetSettingsCrcv - 0x40211ec0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021023c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x37 (size before relaxing) - 0x40211ec4 GetSettingsCrc() - *fill* 0x40211ef3 0x1 + 0x40210240 GetSettingsCrc() + *fill* 0x4021026f 0x1 .text._Z19SettingsEraseConfigv - 0x40211ef4 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210270 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49 (size before relaxing) - 0x40211ef4 SettingsEraseConfig() - *fill* 0x40211f2a 0x2 + 0x40210270 SettingsEraseConfig() + *fill* 0x402102a6 0x2 .text._Z19SettingsDefaultSet1v - 0x40211f2c 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402102a8 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49 (size before relaxing) - 0x40211f34 SettingsDefaultSet1() - *fill* 0x40211f69 0x3 + 0x402102b0 SettingsDefaultSet1() + *fill* 0x402102e5 0x3 .text._Z24SettingsDefaultSet_5_8_1v - 0x40211f6c 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402102e8 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3a (size before relaxing) - 0x40211f6c SettingsDefaultSet_5_8_1() - *fill* 0x40211fa2 0x2 + 0x402102e8 SettingsDefaultSet_5_8_1() + *fill* 0x4021031e 0x2 .text._Z25SettingsDefaultSet_5_10_1v - 0x40211fa4 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210320 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x61 (size before relaxing) - 0x40211fa4 SettingsDefaultSet_5_10_1() - *fill* 0x40212001 0x3 + 0x40210320 SettingsDefaultSet_5_10_1() + *fill* 0x4021037d 0x3 .text._Z16SettingsResetStdv - 0x40212004 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x40212008 SettingsResetStd() - *fill* 0x40212049 0x3 + 0x40210380 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x40210384 SettingsResetStd() + *fill* 0x402103c6 0x2 .text._Z16SettingsResetDstv - 0x4021204c 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402103c8 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49 (size before relaxing) - 0x4021204c SettingsResetDst() - *fill* 0x4021208d 0x3 + 0x402103c8 SettingsResetDst() + *fill* 0x40210409 0x3 .text._Z26SettingsDefaultSet_5_13_1cv - 0x40212090 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021040c 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21 (size before relaxing) - 0x40212090 SettingsDefaultSet_5_13_1c() - *fill* 0x402120a5 0x3 + 0x4021040c SettingsDefaultSet_5_13_1c() + *fill* 0x40210421 0x3 .text._Z11OsWatchInitv - 0x402120a8 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210424 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5b (size before relaxing) - 0x402120b8 OsWatchInit() - *fill* 0x402120f3 0x1 + 0x40210434 OsWatchInit() + *fill* 0x4021046f 0x1 .text._Z11OsWatchLoopv - 0x402120f4 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210470 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x20 (size before relaxing) - 0x402120f4 OsWatchLoop() + 0x40210470 OsWatchLoop() .text._Z14GetResetReasonv - 0x4021210c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210488 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5b (size before relaxing) - 0x40212110 GetResetReason() - *fill* 0x4021214f 0x1 + 0x4021048c GetResetReason() + *fill* 0x402104cb 0x1 .text._Z9strchrspnPKci - 0x40212150 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402104cc 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x27 (size before relaxing) - 0x40212150 strchrspn(char const*, int) - *fill* 0x4021216f 0x1 + 0x402104cc strchrspn(char const*, int) + *fill* 0x402104eb 0x1 .text._Z12CharToDoublePc - 0x40212170 0xf7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x14f (size before relaxing) - 0x40212174 CharToDouble(char*) - *fill* 0x40212267 0x1 + 0x402104ec 0xfb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x153 (size before relaxing) + 0x402104f0 CharToDouble(char*) + *fill* 0x402105e7 0x1 .text._Z8dtostrfddhPc - 0x40212268 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402105e8 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x71 (size before relaxing) - 0x40212268 dtostrfd(double, unsigned char, char*) - *fill* 0x402122bd 0x3 + 0x402105e8 dtostrfd(double, unsigned char, char*) + *fill* 0x4021063d 0x3 .text._Z8UnescapePcPt - 0x402122c0 0xad .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402122c4 Unescape(char*, unsigned short*) - *fill* 0x4021236d 0x3 + 0x40210640 0xad .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210644 Unescape(char*, unsigned short*) + *fill* 0x402106ed 0x3 .text._Z11RemoveSpacePc - 0x40212370 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402106f0 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x45 (size before relaxing) - 0x40212370 RemoveSpace(char*) - *fill* 0x402123ad 0x3 + 0x402106f0 RemoveSpace(char*) + *fill* 0x4021072d 0x3 .text._Z9UpperCasePcPKc - 0x402123b0 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210730 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3e (size before relaxing) - 0x402123b0 UpperCase(char*, char const*) - *fill* 0x402123ea 0x2 + 0x40210730 UpperCase(char*, char const*) + *fill* 0x4021076a 0x2 .text._Z11UpperCase_PPcPKc - 0x402123ec 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021076c 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x402123ec UpperCase_P(char*, char const*) + 0x4021076c UpperCase_P(char*, char const*) .text._Z5LTrimPc - 0x40212438 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402107b8 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2b (size before relaxing) - 0x40212438 LTrim(char*) - *fill* 0x4021245c 0x0 + 0x402107b8 LTrim(char*) + *fill* 0x402107dc 0x0 .text._Z4TrimPc - 0x4021245c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402107dc 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x4021245c Trim(char*) - *fill* 0x402124bb 0x1 + 0x402107dc Trim(char*) + *fill* 0x4021083b 0x1 .text._Z6subStrPcS_PKci - 0x402124bc 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021083c 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x73 (size before relaxing) - 0x402124bc subStr(char*, char*, char const*, int) - *fill* 0x4021251f 0x1 + 0x4021083c subStr(char*, char*, char const*, int) + *fill* 0x4021089f 0x1 .text._Z19NoAlNumToUnderscorePcPKc - 0x40212520 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402108a0 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x54 (size before relaxing) - 0x40212520 NoAlNumToUnderscore(char*, char const*) + 0x402108a0 NoAlNumToUnderscore(char*, char const*) .text._Z8ShortcutPKc - 0x40212570 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402108f0 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x43 (size before relaxing) - 0x40212570 Shortcut(char const*) - *fill* 0x402125af 0x1 + 0x402108f0 Shortcut(char const*) + *fill* 0x4021092f 0x1 .text._Z7ParseIpPjPKc - 0x402125b0 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210930 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x66 (size before relaxing) - 0x402125b0 ParseIp(unsigned int*, char const*) - *fill* 0x4021260a 0x2 + 0x40210930 ParseIp(unsigned int*, char const*) + *fill* 0x4021098a 0x2 .text._Z19SettingsDefaultSet2v - 0x4021260c 0x5b6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021098c 0x5c2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x71e (size before relaxing) - 0x40212748 SettingsDefaultSet2() - *fill* 0x40212bc2 0x2 + 0x40210ad4 SettingsDefaultSet2() + *fill* 0x40210f4e 0x2 .text._Z12NewerVersionPc - 0x40212bc4 0xc6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40210f50 0xc6 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xfa (size before relaxing) - 0x40212bc4 NewerVersion(char*) - *fill* 0x40212c8a 0x2 + 0x40210f50 NewerVersion(char*) + *fill* 0x40211016 0x2 .text._Z14GetPowerDevicePchjh - 0x40212c8c 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211018 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x40212c94 GetPowerDevice(char*, unsigned char, unsigned int, unsigned char) - *fill* 0x40212ce3 0x1 + 0x40211020 GetPowerDevice(char*, unsigned char, unsigned int, unsigned char) + *fill* 0x4021106f 0x1 .text._Z11ConvertTempf - 0x40212ce4 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211070 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x77 (size before relaxing) - 0x40212cf8 ConvertTemp(float) - *fill* 0x40212d43 0x1 + 0x4021107c ConvertTemp(float) + *fill* 0x402110c7 0x1 .text._Z8TempUnitv - 0x40212d44 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402110c8 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x15 (size before relaxing) - 0x40212d44 TempUnit() - *fill* 0x40212d55 0x3 + 0x402110c8 TempUnit() + *fill* 0x402110d9 0x3 + .text._Z12ConvertPressf + 0x402110dc 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x53 (size before relaxing) + 0x402110e4 ConvertPress(float) + *fill* 0x4021111b 0x1 .text._Z15SetGlobalValuesff - 0x40212d58 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40212d68 SetGlobalValues(float, float) - *fill* 0x40212d7e 0x2 + 0x4021111c 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021112c SetGlobalValues(float, float) + *fill* 0x40211142 0x2 .text._Z17ResetGlobalValuesv - 0x40212d80 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211144 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3a (size before relaxing) - 0x40212d80 ResetGlobalValues() - *fill* 0x40212da6 0x2 + 0x40211144 ResetGlobalValues() + *fill* 0x4021116a 0x2 .text._Z14FastPrecisePowdd - 0x40212da8 0xe1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021116c 0xe1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x115 (size before relaxing) - 0x40212db0 FastPrecisePow(double, double) - *fill* 0x40212e89 0x3 + 0x40211174 FastPrecisePow(double, double) + *fill* 0x4021124d 0x3 .text._Z7SqrtIntj - 0x40212e8c 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211250 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3d (size before relaxing) - 0x40212e8c SqrtInt(unsigned int) - *fill* 0x40212ec5 0x3 + 0x40211250 SqrtInt(unsigned int) + *fill* 0x40211289 0x3 .text._Z12RoundSqrtIntj - 0x40212ec8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021128c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21 (size before relaxing) - 0x40212ec8 RoundSqrtInt(unsigned int) - *fill* 0x40212ee5 0x3 + 0x4021128c RoundSqrtInt(unsigned int) + *fill* 0x402112a9 0x3 .text._Z14GetTextIndexedPcjtPKc - 0x40212ee8 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402112ac 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x64 (size before relaxing) - 0x40212ee8 GetTextIndexed(char*, unsigned int, unsigned short, char const*) + 0x402112ac GetTextIndexed(char*, unsigned int, unsigned short, char const*) .text._Z14GetCommandCodePcjPKcS1_ - 0x40212f48 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021130c 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x85 (size before relaxing) - 0x40212f48 GetCommandCode(char*, unsigned int, char const*, char const*) - *fill* 0x40212fc9 0x3 + 0x4021130c GetCommandCode(char*, unsigned int, char const*, char const*) + *fill* 0x4021138d 0x3 .text._Z14GetStateNumberPc - 0x40212fcc 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211390 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa3 (size before relaxing) - 0x40212fe0 GetStateNumber(char*) - *fill* 0x4021304b 0x1 + 0x402113a4 GetStateNumber(char*) + *fill* 0x4021140f 0x1 .text._Z13SerialSendRawPc - 0x4021304c 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211410 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x65 (size before relaxing) - 0x4021304c SerialSendRaw(char*) - *fill* 0x40213095 0x3 + 0x40211410 SerialSendRaw(char*) + *fill* 0x4021145d 0x3 .text._Z9ValidGPIOhh - 0x40213098 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211460 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2f (size before relaxing) - 0x40213098 ValidGPIO(unsigned char, unsigned char) - *fill* 0x402130c3 0x1 + 0x40211460 ValidGPIO(unsigned char, unsigned char) + *fill* 0x4021148b 0x1 .text._Z15TimePassedSincem - 0x402130c4 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021148c 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2b (size before relaxing) - 0x402130c4 TimePassedSince(unsigned long) - *fill* 0x402130e3 0x1 + 0x4021148c TimePassedSince(unsigned long) + *fill* 0x402114ab 0x1 .text._Z13GetPulseTimerh - 0x402130e4 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402114ac 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5f (size before relaxing) - 0x402130e8 GetPulseTimer(unsigned char) - *fill* 0x4021312f 0x1 + 0x402114b0 GetPulseTimer(unsigned char) + *fill* 0x402114f7 0x1 .text._Z11TimeReachedm - 0x40213130 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402114f8 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1f (size before relaxing) - 0x40213130 TimeReached(unsigned long) - *fill* 0x40213147 0x1 + 0x402114f8 TimeReached(unsigned long) + *fill* 0x4021150f 0x1 .text._Z19SetNextTimeIntervalRmm - 0x40213148 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x55 (size before relaxing) - 0x40213148 SetNextTimeInterval(unsigned long&, unsigned long) - *fill* 0x4021318d 0x3 + 0x40211510 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x56 (size before relaxing) + 0x40211510 SetNextTimeInterval(unsigned long&, unsigned long) + *fill* 0x40211556 0x2 .text._Z11GetFeaturesv - 0x40213190 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402131b0 GetFeatures() - *fill* 0x402131d2 0x2 + 0x40211558 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211578 GetFeatures() + *fill* 0x4021159a 0x2 .text._Z17WifiConfigCounterv - 0x402131d4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402131d8 WifiConfigCounter() - *fill* 0x402131eb 0x1 + 0x4021159c 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402115a0 WifiConfigCounter() + *fill* 0x402115b3 0x1 .text._Z16WiFiSetSleepModev - 0x402131ec 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402115b4 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x30 (size before relaxing) - 0x402131f0 WiFiSetSleepMode() + 0x402115b8 WiFiSetSleepMode() .text._Z12WifiSetStateh - 0x40213214 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021321c WifiSetState(unsigned char) - *fill* 0x40213256 0x2 + 0x402115dc 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402115e4 WifiSetState(unsigned char) + *fill* 0x4021161e 0x2 .text._Z9WifiStatev - 0x40213258 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211620 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5b (size before relaxing) - 0x4021325c WifiState() - *fill* 0x4021329f 0x1 + 0x40211624 WifiState() + *fill* 0x40211667 0x1 .text._Z11WifiConnectv - 0x402132a0 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211668 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x70 (size before relaxing) - 0x402132b0 WifiConnect() + 0x40211678 WifiConnect() .text._Z10EspRestartv - 0x402132f4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402116bc 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x402132f4 EspRestart() - *fill* 0x40213309 0x3 + 0x402116bc EspRestart() + *fill* 0x402116d1 0x3 .text._Z7I2cScanPcj - 0x4021330c 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd0 (size before relaxing) - 0x40213320 I2cScan(char*, unsigned int) + 0x402116d4 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xcc (size before relaxing) + 0x402116e8 I2cScan(char*, unsigned int) .text._Z19GetBuildDateAndTimev - 0x402133ac 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211774 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x10b (size before relaxing) - 0x402133c0 GetBuildDateAndTime() - *fill* 0x40213487 0x1 + 0x40211788 GetBuildDateAndTime() + *fill* 0x4021184f 0x1 .text._Z11GetTimeZonev - 0x40213488 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211850 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6b (size before relaxing) - 0x40213494 GetTimeZone() - *fill* 0x402134e3 0x1 + 0x4021185c GetTimeZone() + *fill* 0x402118ab 0x1 .text._Z7GetTimei - 0x402134e4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402118ac 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6d (size before relaxing) - 0x402134f8 GetTime(int) - *fill* 0x40213545 0x3 + 0x402118c0 GetTime(int) + *fill* 0x4021190d 0x3 .text._Z22GetMinutesPastMidnightv - 0x40213548 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021354c GetMinutesPastMidnight() - *fill* 0x40213567 0x1 + 0x40211910 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211914 GetMinutesPastMidnight() + *fill* 0x4021192f 0x1 .text._Z9BreakTimejR6TIME_T - 0x40213568 0x17d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211930 0x17d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1b5 (size before relaxing) - 0x40213574 BreakTime(unsigned int, TIME_T&) - *fill* 0x402136e5 0x3 + 0x4021193c BreakTime(unsigned int, TIME_T&) + *fill* 0x40211aad 0x3 .text._Z14GetDateAndTimeh - 0x402136e8 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211ab0 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x108 (size before relaxing) - 0x402136f0 GetDateAndTime(unsigned char) + 0x40211ab8 GetDateAndTime(unsigned char) .text._Z9GetUptimev - 0x402137b4 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211b7c 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7d (size before relaxing) - 0x402137b8 GetUptime() - *fill* 0x4021380d 0x3 + 0x40211b80 GetUptime() + *fill* 0x40211bd5 0x3 .text._Z16GetMinutesUptimev - 0x40213810 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211bd8 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5b (size before relaxing) - 0x40213810 GetMinutesUptime() - *fill* 0x4021385b 0x1 + 0x40211bd8 GetMinutesUptime() + *fill* 0x40211c23 0x1 .text._Z8MakeTimeR6TIME_T - 0x4021385c 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211c24 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x10c (size before relaxing) - 0x40213868 MakeTime(TIME_T&) + 0x40211c30 MakeTime(TIME_T&) .text._Z10RuleToTime8TimeRulei - 0x40213954 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211d1c 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa2 (size before relaxing) - 0x40213958 RuleToTime(TimeRule, int) - *fill* 0x402139e2 0x2 + 0x40211d20 RuleToTime(TimeRule, int) + *fill* 0x40211daa 0x2 .text._Z11MidnightNowv - 0x402139e4 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402139e8 MidnightNow() - *fill* 0x402139f7 0x1 + 0x40211dac 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211db0 MidnightNow() + *fill* 0x40211dbf 0x1 .text._Z7RtcInitv - 0x402139f8 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211dc0 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xad (size before relaxing) - 0x40213a00 RtcInit() - *fill* 0x40213a55 0x3 + 0x40211dc8 RtcInit() + *fill* 0x40211e1d 0x3 .text._Z12SetSeriallogh - 0x40213a58 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211e20 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x25 (size before relaxing) - 0x40213a60 SetSeriallog(unsigned char) - *fill* 0x40213a79 0x3 + 0x40211e28 SetSeriallog(unsigned char) + *fill* 0x40211e41 0x3 .text._Z6GetLoghPPcPj - 0x40213a7c 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211e44 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x69 (size before relaxing) - 0x40213a84 GetLog(unsigned char, char**, unsigned int*) - *fill* 0x40213ae1 0x3 + 0x40211e4c GetLog(unsigned char, char**, unsigned int*) + *fill* 0x40211ea9 0x3 .text._Z16PollDnsWebserverv - 0x40213ae4 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211eac 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x38 (size before relaxing) - 0x40213ae8 PollDnsWebserver() - *fill* 0x40213b09 0x3 + 0x40211eb0 PollDnsWebserver() + *fill* 0x40211ed1 0x3 .text._Z9SetHeaderv - 0x40213b0c 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211ed4 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x115 (size before relaxing) - 0x40213b24 SetHeader() - *fill* 0x40213bb1 0x3 + 0x40211eec SetHeader() + *fill* 0x40211f79 0x3 .text._Z15WebAuthenticatev - 0x40213bb4 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211f7c 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f (size before relaxing) - 0x40213bb8 WebAuthenticate() - *fill* 0x40213bdf 0x1 + 0x40211f80 WebAuthenticate() + *fill* 0x40211fa7 0x1 .text._Z10htmlEscape6String - 0x40213be0 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40211fa8 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x207 (size before relaxing) - 0x40213c0c htmlEscape(String) - *fill* 0x40213cff 0x1 + 0x40211fd4 htmlEscape(String) + *fill* 0x402120c7 0x1 .text._Z14ValidIpAddress6String - 0x40213d00 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402120c8 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x55 (size before relaxing) - 0x40213d00 ValidIpAddress(String) - *fill* 0x40213d4d 0x3 + 0x402120c8 ValidIpAddress(String) + *fill* 0x40212115 0x3 .text._Z9UrlEncodeRK6String - 0x40213d50 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212118 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x84 (size before relaxing) - 0x40213d50 UrlEncode(String const&) + 0x40212118 UrlEncode(String const&) .text._Z15MqttIsConnectedv - 0x40213db0 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212178 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x26 (size before relaxing) - 0x40213db4 MqttIsConnected() - *fill* 0x40213dd2 0x2 + 0x4021217c MqttIsConnected() + *fill* 0x4021219a 0x2 .text._Z14MqttDisconnectv - 0x40213dd4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021219c 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x40213dd4 MqttDisconnect() - *fill* 0x40213de9 0x3 + 0x4021219c MqttDisconnect() + *fill* 0x402121b1 0x3 .text._Z16MqttSubscribeLibPc - 0x40213dec 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402121b4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x31 (size before relaxing) - 0x40213dec MqttSubscribeLib(char*) - *fill* 0x40213e0d 0x3 + 0x402121b4 MqttSubscribeLib(char*) + *fill* 0x402121d5 0x3 .text._Z14MqttPublishLibPKch - 0x40213e10 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402121d8 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x42 (size before relaxing) - 0x40213e10 MqttPublishLib(char const*, unsigned char) - *fill* 0x40213e3e 0x2 + 0x402121d8 MqttPublishLib(char const*, unsigned char) + *fill* 0x40212206 0x2 .text._Z8MqttLoopv - 0x40213e40 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212208 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x40213e40 MqttLoop() - *fill* 0x40213e55 0x3 + 0x40212208 MqttLoop() + *fill* 0x4021221d 0x3 .text._Z17EnergyUpdateTodayv - 0x40213e58 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212220 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa7 (size before relaxing) - 0x40213e70 EnergyUpdateToday() - *fill* 0x40213eeb 0x1 + 0x40212238 EnergyUpdateToday() + *fill* 0x402122b3 0x1 .text._Z15EnergySaveStatev - 0x40213eec 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402122b4 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3d (size before relaxing) - 0x40213eec EnergySaveState() - *fill* 0x40213f19 0x3 - .text._Z12AriluxRfInitv - 0x40213f1c 0x6f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x87 (size before relaxing) - 0x40213f20 AriluxRfInit() - *fill* 0x40213f8b 0x1 - .text._Z15AriluxRfDisablev - 0x40213f8c 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x40213f8c AriluxRfDisable() - *fill* 0x40213fc7 0x1 + 0x402122b4 EnergySaveState() + *fill* 0x402122e1 0x3 + .text._Z10EnergyShowh + 0x402122e4 0x4aa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x626 (size before relaxing) + 0x40212354 EnergyShow(unsigned char) + *fill* 0x4021278e 0x2 .text._Z12LightDiPulseh - 0x40213fc8 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212790 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x40213fcc LightDiPulse(unsigned char) + 0x40212794 LightDiPulse(unsigned char) .text._Z14LightDckiPulseh - 0x40214010 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402127d8 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x40214014 LightDckiPulse(unsigned char) + 0x402127dc LightDckiPulse(unsigned char) .text._Z16LightMy92x1Writeh - 0x40214058 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212820 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa9 (size before relaxing) - 0x40214058 LightMy92x1Write(unsigned char) - *fill* 0x402140e1 0x3 + 0x40212820 LightMy92x1Write(unsigned char) + *fill* 0x402128a9 0x3 .text._Z15LightMy92x1Initv - 0x402140e4 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402128ac 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x99 (size before relaxing) - 0x402140ec LightMy92x1Init() - *fill* 0x40214159 0x3 + 0x402128b4 LightMy92x1Init() + *fill* 0x40212921 0x3 .text._Z15LightMy92x1Dutyhhhhh - 0x4021415c 0xbc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212924 0xbc .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdc (size before relaxing) - 0x40214160 LightMy92x1Duty(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + 0x40212928 LightMy92x1Duty(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + .text._Z9LightInitv + 0x402129e0 0x19e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20a (size before relaxing) + 0x402129fc LightInit() + *fill* 0x40212b7e 0x2 .text._Z17LightSetColorTempt - 0x40214218 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212b80 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x9e (size before relaxing) - 0x4021421c LightSetColorTemp(unsigned short) - *fill* 0x402142aa 0x2 + 0x40212b80 LightSetColorTemp(unsigned short) + *fill* 0x40212c0e 0x2 .text._Z17LightGetColorTempv - 0x402142ac 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212c10 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x74 (size before relaxing) - 0x402142ac LightGetColorTemp() + 0x40212c10 LightGetColorTemp() .text._Z14LightSetDimmerh - 0x40214310 0xf6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212c74 0xf2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x12e (size before relaxing) - 0x4021431c LightSetDimmer(unsigned char) - *fill* 0x40214406 0x2 + 0x40212c7c LightSetDimmer(unsigned char) + *fill* 0x40212d66 0x2 .text._Z13LightSetColorv - 0x40214408 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212d68 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xf6 (size before relaxing) - 0x40214410 LightSetColor() - *fill* 0x402144ca 0x2 - .text._Z14LightSetSignalttt - 0x402144cc 0x8b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x97 (size before relaxing) - 0x402144cc LightSetSignal(unsigned short, unsigned short, unsigned short) - *fill* 0x40214557 0x1 + 0x40212d70 LightSetColor() + *fill* 0x40212e2a 0x2 .text._Z13LightGetColorhPc - 0x40214558 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212e2c 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb7 (size before relaxing) - 0x40214560 LightGetColor(unsigned char, char*) - *fill* 0x402145ef 0x1 + 0x40212e34 LightGetColor(unsigned char, char*) + *fill* 0x40212ec3 0x1 .text._Z9LightFadev - 0x402145f0 0xb5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212ec4 0xb5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc5 (size before relaxing) - 0x402145f8 LightFade() - *fill* 0x402146a5 0x3 + 0x40212ecc LightFade() + *fill* 0x40212f79 0x3 .text._Z10LightWheelh - 0x402146a8 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40212f7c 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xe4 (size before relaxing) - 0x402146ac LightWheel(unsigned char) + 0x40212f80 LightWheel(unsigned char) .text._Z15LightCycleColora - 0x40214770 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213044 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6d (size before relaxing) - 0x40214774 LightCycleColor(signed char) - *fill* 0x402147c1 0x3 + 0x40213048 LightCycleColor(signed char) + *fill* 0x40213095 0x3 .text._Z16LightRandomColorv - 0x402147c4 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213098 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7c (size before relaxing) - 0x402147c4 LightRandomColor() + 0x40213098 LightRandomColor() .text._Z13LightRgbToHsbv - 0x40214820 0x1d8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x24c (size before relaxing) - 0x4021484c LightRgbToHsb() + 0x402130f4 0x1c5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x249 (size before relaxing) + 0x40213110 LightRgbToHsb() + *fill* 0x402132b9 0x3 .text._Z13LightHsbToRgbv - 0x402149f8 0x1a8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402132bc 0x1a8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x220 (size before relaxing) - 0x40214a04 LightHsbToRgb() + 0x402132c8 LightHsbToRgb() .text._Z11LightGetHsbPfS_S_b - 0x40214ba0 0x70 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213464 0x70 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x94 (size before relaxing) - 0x40214ba4 LightGetHsb(float*, float*, float*, bool) + 0x40213468 LightGetHsb(float*, float*, float*, bool) .text._Z10LightStateh - 0x40214c10 0x3a6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4ba (size before relaxing) - 0x40214c54 LightState(unsigned char) - *fill* 0x40214fb6 0x2 + 0x402134d4 0x3a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4be (size before relaxing) + 0x40213510 LightState(unsigned char) + *fill* 0x40213876 0x2 .text._Z13MqttShowStatev - 0x40214fb8 0x1ad .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213878 0x1b1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x269 (size before relaxing) - 0x40214fd8 MqttShowState() - *fill* 0x40215165 0x3 + 0x4021389c MqttShowState() + *fill* 0x40213a29 0x3 .text._Z15LightColorEntryPch - 0x40215168 0x1af .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213a2c 0x1af .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1eb (size before relaxing) - 0x40215180 LightColorEntry(char*, unsigned char) - *fill* 0x40215317 0x1 - .text._Z10IrSendInitv - 0x40215318 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x4021531c IrSendInit() - *fill* 0x4021534a 0x2 - .text._Z13IrReceiveInitv - 0x4021534c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4f (size before relaxing) - 0x40215350 IrReceiveInit() - *fill* 0x40215383 0x1 + 0x40213a44 LightColorEntry(char*, unsigned char) + *fill* 0x40213bdb 0x1 .text._Z19rf_decode_and_writePhj - 0x40215384 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213bdc 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8d (size before relaxing) - 0x40215384 rf_decode_and_write(unsigned char*, unsigned int) - *fill* 0x402153f5 0x3 + 0x40213bdc rf_decode_and_write(unsigned char*, unsigned int) + *fill* 0x40213c4d 0x3 .text._Z39rf_glue_remnant_with_new_data_and_writePKhPhj - 0x402153f8 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213c50 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xcf (size before relaxing) - 0x402153f8 rf_glue_remnant_with_new_data_and_write(unsigned char const*, unsigned char*, unsigned int) - *fill* 0x4021548f 0x1 + 0x40213c50 rf_glue_remnant_with_new_data_and_write(unsigned char const*, unsigned char*, unsigned int) + *fill* 0x40213ce7 0x1 .text._Z19rf_search_and_writePhj - 0x40215490 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213ce8 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x79 (size before relaxing) - 0x40215490 rf_search_and_write(unsigned char*, unsigned int) - *fill* 0x402154f5 0x3 + 0x40213ce8 rf_search_and_write(unsigned char*, unsigned int) + *fill* 0x40213d4d 0x3 .text._Z14rf_erase_flashv - 0x402154f8 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213d50 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x45 (size before relaxing) - 0x402154f8 rf_erase_flash() - *fill* 0x40215529 0x3 + 0x40213d50 rf_erase_flash() + *fill* 0x40213d81 0x3 .text._Z15SnfBrUpdateInitv - 0x4021552c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213d84 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x35 (size before relaxing) - 0x4021552c SnfBrUpdateInit() - *fill* 0x40215549 0x3 + 0x40213d84 SnfBrUpdateInit() + *fill* 0x40213da1 0x3 .text._Z23SonoffBridgeSendCommandh - 0x4021554c 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213da4 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49 (size before relaxing) - 0x4021554c SonoffBridgeSendCommand(unsigned char) - *fill* 0x4021557d 0x3 + 0x40213da4 SonoffBridgeSendCommand(unsigned char) + *fill* 0x40213dd5 0x3 .text._Z20SonoffBridgeSendCodej - 0x40215580 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213dd8 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb1 (size before relaxing) - 0x40215580 SonoffBridgeSendCode(unsigned int) - *fill* 0x402155f1 0x3 + 0x40213dd8 SonoffBridgeSendCode(unsigned int) + *fill* 0x40213e49 0x3 .text._Z16SonoffBridgeSendhh - 0x402155f4 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213e4c 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdd (size before relaxing) - 0x402155f4 SonoffBridgeSend(unsigned char, unsigned char) - *fill* 0x402156a5 0x3 + 0x40213e4c SonoffBridgeSend(unsigned char, unsigned char) + *fill* 0x40213efd 0x3 .text._Z17SonoffBridgeLearnh - 0x402156a8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213f00 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x402156b4 SonoffBridgeLearn(unsigned char) - *fill* 0x402156f7 0x1 + 0x40213f0c SonoffBridgeLearn(unsigned char) + *fill* 0x40213f4f 0x1 .text._Z19SonoffBridgeCommandv - 0x402156f8 0x488 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40213f50 0x488 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4f8 (size before relaxing) - 0x40215744 SonoffBridgeCommand() + 0x40213f9c SonoffBridgeCommand() .text._Z16SonoffBridgeInitv - 0x40215b80 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402143d8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x25 (size before relaxing) - 0x40215b80 SonoffBridgeInit() - *fill* 0x40215b9d 0x3 - .text._Z22DomoticzBatteryQualityv - 0x40215ba0 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x47 (size before relaxing) - 0x40215ba8 DomoticzBatteryQuality() - *fill* 0x40215bdb 0x1 - .text._Z19DomoticzRssiQualityv - 0x40215bdc 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33 (size before relaxing) - 0x40215bdc DomoticzRssiQuality() - *fill* 0x40215bfb 0x1 - .text._Z15DomoticzCommandv - 0x40215bfc 0x16c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x194 (size before relaxing) - 0x40215c1c DomoticzCommand() - .text._Z21DomoticzHumidityStatePc - 0x40215d68 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2f (size before relaxing) - 0x40215d68 DomoticzHumidityState(char*) - *fill* 0x40215d8f 0x1 + 0x402143d8 SonoffBridgeInit() + *fill* 0x402143f5 0x3 .text._Z16SerialBridgeInitv - 0x40215d90 0x7e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402143f8 0x7e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x9a (size before relaxing) - 0x40215d98 SerialBridgeInit() - *fill* 0x40215e0e 0x2 + 0x40214400 SerialBridgeInit() + *fill* 0x40214476 0x2 .text._Z19SerialBridgeCommandv - 0x40215e10 0x113 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40214478 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x15f (size before relaxing) - 0x40215e28 SerialBridgeCommand() - *fill* 0x40215f23 0x1 + 0x4021448c SerialBridgeCommand() + *fill* 0x40214587 0x1 .text._Z17JulianischesDatumv - 0x40215f24 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40214588 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x167 (size before relaxing) - 0x40215f38 JulianischesDatum() - *fill* 0x40216033 0x1 + 0x4021459c JulianischesDatum() + *fill* 0x40214697 0x1 .text._Z4InPid - 0x40216034 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40214698 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa3 (size before relaxing) - 0x4021603c InPi(double) - *fill* 0x402160b3 0x1 - .text._Z3epsd 0x402160b4 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402146a0 InPi(double) + *fill* 0x40214717 0x1 + .text._Z3epsd 0x40214718 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x113 (size before relaxing) - 0x402160e0 eps(double) - *fill* 0x40216197 0x1 + 0x40214744 eps(double) + *fill* 0x402147fb 0x1 .text._Z21BerechneZeitgleichungPdd - 0x40216198 0x36f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402147fc 0x36b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49b (size before relaxing) - 0x40216200 BerechneZeitgleichung(double*, double) - *fill* 0x40216507 0x1 + 0x40214860 BerechneZeitgleichung(double*, double) + *fill* 0x40214b67 0x1 .text._Z12DuskTillDawnPhS_S_S_ - 0x40216508 0x4a5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40214b68 0x4a5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x62d (size before relaxing) - 0x40216524 DuskTillDawn(unsigned char*, unsigned char*, unsigned char*, unsigned char*) - *fill* 0x402169ad 0x3 + 0x40214b84 DuskTillDawn(unsigned char*, unsigned char*, unsigned char*, unsigned char*) + *fill* 0x4021500d 0x3 .text._Z17ApplyTimerOffsetsP5Timer - 0x402169b0 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215010 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdf (size before relaxing) - 0x402169b8 ApplyTimerOffsets(Timer*) - *fill* 0x40216a8b 0x1 + 0x40215018 ApplyTimerOffsets(Timer*) + *fill* 0x402150eb 0x1 .text._Z6GetSunh - 0x40216a8c 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402150ec 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x61 (size before relaxing) - 0x40216a90 GetSun(unsigned char) - *fill* 0x40216ad9 0x3 + 0x402150f0 GetSun(unsigned char) + *fill* 0x40215139 0x3 .text._Z13GetSunMinutesh - 0x40216adc 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021513c 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x40 (size before relaxing) - 0x40216adc GetSunMinutes(unsigned char) + 0x4021513c GetSunMinutes(unsigned char) .text._Z20TimerSetRandomWindowh - 0x40216b18 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215178 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x57 (size before relaxing) - 0x40216b1c TimerSetRandomWindow(unsigned char) - *fill* 0x40216b67 0x1 + 0x4021517c TimerSetRandomWindow(unsigned char) + *fill* 0x402151c7 0x1 .text._Z21TimerSetRandomWindowsv - 0x40216b68 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402151c8 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x24 (size before relaxing) - 0x40216b68 TimerSetRandomWindows() + 0x402151c8 TimerSetRandomWindows() .text._Z13PrepShowTimerh - 0x40216b88 0x1ea .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402151e8 0x1ea .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21e (size before relaxing) - 0x40216bb0 PrepShowTimer(unsigned char) - *fill* 0x40216d72 0x2 + 0x40215210 PrepShowTimer(unsigned char) + *fill* 0x402153d2 0x2 .text._Z9RulesInitv - 0x40216d74 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402153d4 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5d (size before relaxing) - 0x40216d78 RulesInit() - *fill* 0x40216dc9 0x3 + 0x402153d8 RulesInit() + *fill* 0x40215429 0x3 .text._Z13RulesSetPowerv - 0x40216dcc 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021542c 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x15 (size before relaxing) - 0x40216dd0 RulesSetPower() - *fill* 0x40216ddd 0x3 + 0x40215430 RulesSetPower() + *fill* 0x4021543d 0x3 .text._Z12RulesCommandv - 0x40216de0 0x670 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7a0 (size before relaxing) - 0x40216e08 RulesCommand() + 0x40215440 0x670 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7a4 (size before relaxing) + 0x40215468 RulesCommand() .text._Z18TuyaModuleSelectedv - 0x40217450 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215ab0 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x30 (size before relaxing) - 0x40217450 TuyaModuleSelected() + 0x40215ab0 TuyaModuleSelected() .text._Z6RfInitv - 0x40217478 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215ad8 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4b (size before relaxing) - 0x4021747c RfInit() - *fill* 0x402174b3 0x1 + 0x40215adc RfInit() + *fill* 0x40215b13 0x1 .text._Z8XdrvCallh - 0x402174b4 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215b14 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4d (size before relaxing) - 0x402174b8 XdrvCall(unsigned char) - *fill* 0x402174f9 0x3 + 0x40215b18 XdrvCall(unsigned char) + *fill* 0x40215b59 0x3 .text._Z11XdrvCommandhPctS_tst - 0x402174fc 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215b5c 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x35 (size before relaxing) - 0x402174fc XdrvCommand(unsigned char, char*, unsigned short, char*, unsigned short, short, unsigned short) - *fill* 0x40217529 0x3 + 0x40215b5c XdrvCommand(unsigned char, char*, unsigned short, char*, unsigned short, short, unsigned short) + *fill* 0x40215b89 0x3 .text._Z12XdrvMqttDataPctS_t - 0x4021752c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215b8c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x4021752c XdrvMqttData(char*, unsigned short, char*, unsigned short) - *fill* 0x4021754d 0x3 + 0x40215b8c XdrvMqttData(char*, unsigned short, char*, unsigned short) + *fill* 0x40215bad 0x3 .text._Z16XdrvRulesProcessv - 0x40217550 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215bb0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x40217550 XdrvRulesProcess() + 0x40215bb0 XdrvRulesProcess() .text._Z11ShowFreeMemPKc - 0x40217564 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215bc4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x31 (size before relaxing) - 0x40217564 ShowFreeMem(char const*) - *fill* 0x40217585 0x3 + 0x40215bc4 ShowFreeMem(char const*) + *fill* 0x40215be5 0x3 .text._Z8ShowPageR6Stringb - 0x40217588 0x26f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215be8 0x26b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x41f (size before relaxing) - 0x402175d4 ShowPage(String&, bool) - *fill* 0x402177f7 0x1 + 0x40215c30 ShowPage(String&, bool) + *fill* 0x40215e53 0x1 .text._Z8ShowPageR6String - 0x402177f8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215e54 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x402177f8 ShowPage(String&) - .text._Z26HandleLoggingConfigurationv$part$131 - 0x4021780c 0x424 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40215e54 ShowPage(String&) + .text._Z26HandleLoggingConfigurationv$part$100 + 0x40215e68 0x424 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6e4 (size before relaxing) - .text._Z24HandleOtherConfigurationv$part$132 - 0x40217c30 0x30e .pioenvs\sonoff\src\sonoff.ino.cpp.o + .text._Z24HandleOtherConfigurationv$part$101 + 0x4021628c 0x30e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4c9 (size before relaxing) - *fill* 0x40217f3e 0x2 - .text._Z23HandleMqttConfigurationv$part$143 - 0x40217f40 0x219 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x4021659a 0x2 + .text._Z23HandleMqttConfigurationv$part$112 + 0x4021659c 0x219 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3c1 (size before relaxing) - *fill* 0x40218159 0x3 - .text._Z27HandleDomoticzConfigurationv$part$144 - 0x4021815c 0x299 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x451 (size before relaxing) - *fill* 0x402183f5 0x3 + *fill* 0x402167b5 0x3 .text._Z15HandleWifiLoginv - 0x402183f8 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402167b8 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb4 (size before relaxing) - 0x40218404 HandleWifiLogin() + 0x402167c4 HandleWifiLogin() .text._Z13HlwEvery200msv - 0x40218460 0x1e9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216820 0x1d9 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x229 (size before relaxing) - 0x402184bc HlwEvery200ms() - *fill* 0x40218649 0x3 + 0x4021686c HlwEvery200ms() + *fill* 0x402169f9 0x3 .text._Z14HlwEverySecondv - 0x4021864c 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402169fc 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x79 (size before relaxing) - 0x40218650 HlwEverySecond() - *fill* 0x402186a1 0x3 + 0x40216a00 HlwEverySecond() + *fill* 0x40216a51 0x3 .text._Z10HlwSnsInitv - 0x402186a4 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216a54 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18f (size before relaxing) - 0x402186c4 HlwSnsInit() - *fill* 0x402187c3 0x1 + 0x40216a74 HlwSnsInit() + *fill* 0x40216b73 0x1 .text._Z10HlwDrvInitv - 0x402187c4 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216b74 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x78 (size before relaxing) - 0x402187c8 HlwDrvInit() + 0x40216b78 HlwDrvInit() .text._Z10HlwCommandv - 0x40218830 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216be0 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x147 (size before relaxing) - 0x40218834 HlwCommand() - *fill* 0x40218917 0x1 + 0x40216be4 HlwCommand() + *fill* 0x40216cc7 0x1 .text._Z6Xnrg01h - 0x40218918 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216cc8 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x89 (size before relaxing) - 0x40218918 Xnrg01(unsigned char) - *fill* 0x40218981 0x3 + 0x40216cc8 Xnrg01(unsigned char) + *fill* 0x40216d31 0x3 .text._Z14CseEverySecondv - 0x40218984 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216d34 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x99 (size before relaxing) - 0x40218990 CseEverySecond() - *fill* 0x40218a01 0x3 + 0x40216d40 CseEverySecond() + *fill* 0x40216db1 0x3 .text._Z10CseDrvInitv - 0x40218a04 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216db4 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x46 (size before relaxing) - 0x40218a10 CseDrvInit() - *fill* 0x40218a42 0x2 + 0x40216dc0 CseDrvInit() + *fill* 0x40216df2 0x2 .text._Z10CseCommandv - 0x40218a44 0xd4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216df4 0xd4 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x108 (size before relaxing) - 0x40218a50 CseCommand() + 0x40216e00 CseCommand() .text._Z8PzemSendh - 0x40218b18 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216ec8 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x66 (size before relaxing) - 0x40218b20 PzemSend(unsigned char) - *fill* 0x40218b76 0x2 + 0x40216ed0 PzemSend(unsigned char) + *fill* 0x40216f26 0x2 .text._Z16PzemReceiveReadyv - 0x40218b78 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216f28 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x26 (size before relaxing) - 0x40218b78 PzemReceiveReady() - *fill* 0x40218b9a 0x2 + 0x40216f28 PzemReceiveReady() + *fill* 0x40216f4a 0x2 .text._Z11PzemDrvInitv - 0x40218b9c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216f4c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2a (size before relaxing) - 0x40218b9c PzemDrvInit() - *fill* 0x40218bbe 0x2 - .text._Z7McpSendPh - 0x40218bc0 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6c (size before relaxing) - 0x40218bc4 McpSend(unsigned char*) - .text._Z13McpGetAddressv - 0x40218c1c 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d (size before relaxing) - 0x40218c20 McpGetAddress() - *fill* 0x40218c41 0x3 - .text._Z17McpAddressReceivev - 0x40218c44 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40218c4c McpAddressReceive() - *fill* 0x40218c5a 0x2 - .text._Z17McpGetCalibrationv - 0x40218c5c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x40218c64 McpGetCalibration() - *fill* 0x40218c8f 0x1 - .text._Z18McpCalibrationCalcP22mcp_cal_registers_typeh - 0x40218c90 0xd0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd4 (size before relaxing) - 0x40218ca4 McpCalibrationCalc(mcp_cal_registers_type*, unsigned char) - .text._Z17McpSetCalibrationP22mcp_cal_registers_type - 0x40218d60 0x117 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1af (size before relaxing) - 0x40218d60 McpSetCalibration(mcp_cal_registers_type*) - *fill* 0x40218e77 0x1 - .text._Z25McpSetSystemConfigurationt - 0x40218e78 0x67 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b (size before relaxing) - 0x40218e7c McpSetSystemConfiguration(unsigned short) - *fill* 0x40218edf 0x1 - .text._Z19McpParseCalibrationv - 0x40218ee0 0x18d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x249 (size before relaxing) - 0x40218ee4 McpParseCalibration() - *fill* 0x4021906d 0x3 - .text._Z15McpGetFrequencyv - 0x40219070 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x40219074 McpGetFrequency() - *fill* 0x4021909f 0x1 - .text._Z15McpSetFrequencytt - 0x402190a0 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b (size before relaxing) - 0x402190a0 McpSetFrequency(unsigned short, unsigned short) - *fill* 0x40219103 0x1 - .text._Z17McpParseFrequencyv - 0x40219104 0x9f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xbb (size before relaxing) - 0x40219110 McpParseFrequency() - *fill* 0x402191a3 0x1 - .text._Z10McpGetDatav - 0x402191a4 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d (size before relaxing) - 0x402191a8 McpGetData() - *fill* 0x402191c9 0x3 - .text._Z12McpParseDatav - 0x402191cc 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x16c (size before relaxing) - 0x402191d4 McpParseData() - .text._Z14McpEverySecondv - 0x402192c4 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc0 (size before relaxing) - 0x402192c8 McpEverySecond() - .text._Z10McpSnsInitv - 0x40219354 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x27 (size before relaxing) - 0x40219354 McpSnsInit() - *fill* 0x4021936f 0x1 - .text._Z10McpDrvInitv - 0x40219370 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x84 (size before relaxing) - 0x40219370 McpDrvInit() - .text._Z10McpCommandv - 0x402193d0 0x167 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1df (size before relaxing) - 0x402193e0 McpCommand() - *fill* 0x40219537 0x1 + 0x40216f4c PzemDrvInit() + *fill* 0x40216f6e 0x2 .text._Z13PzemAcDrvInitv - 0x40219538 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216f70 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2a (size before relaxing) - 0x40219538 PzemAcDrvInit() - *fill* 0x4021955a 0x2 + 0x40216f70 PzemAcDrvInit() + *fill* 0x40216f92 0x2 .text._Z13PzemDcDrvInitv - 0x4021955c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216f94 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2a (size before relaxing) - 0x4021955c PzemDcDrvInit() - *fill* 0x4021957e 0x2 + 0x40216f94 PzemDcDrvInit() + *fill* 0x40216fb6 0x2 .text._Z8XnrgCallh - 0x40219580 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40219584 XnrgCall(unsigned char) - *fill* 0x402195b9 0x3 + 0x40216fb8 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216fbc XnrgCall(unsigned char) + *fill* 0x40216ff1 0x3 .text._Z11Energy200msv - 0x402195bc 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40216ff4 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xfd (size before relaxing) - 0x402195cc Energy200ms() - *fill* 0x40219685 0x3 + 0x40217000 Energy200ms() + *fill* 0x402170b9 0x3 .text._Z13EnergyCommandv - 0x40219688 0x468 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x530 (size before relaxing) - 0x402196a0 EnergyCommand() + 0x402170bc 0x468 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x52c (size before relaxing) + 0x402170dc EnergyCommand() .text._Z13EnergyDrvInitv - 0x40219af0 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217524 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x24 (size before relaxing) - 0x40219af0 EnergyDrvInit() + 0x40217524 EnergyDrvInit() .text._Z13EnergySnsInitv - 0x40219b0c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217540 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xad (size before relaxing) - 0x40219b14 EnergySnsInit() - *fill* 0x40219b85 0x3 + 0x40217548 EnergySnsInit() + *fill* 0x402175b9 0x3 .text._Z6Xdrv03h - 0x40219b88 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402175bc 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x40219b8c Xdrv03(unsigned char) - *fill* 0x40219be0 0x0 + 0x402175c0 Xdrv03(unsigned char) + *fill* 0x40217614 0x0 .text._Z16WemoSerialnumberv - 0x40219be0 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217614 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4d (size before relaxing) - 0x40219be4 WemoSerialnumber() - *fill* 0x40219c11 0x3 + 0x40217618 WemoSerialnumber() + *fill* 0x40217645 0x3 .text._Z8WemoUuidv - 0x40219c14 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217648 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x53 (size before relaxing) - 0x40219c18 WemoUuid() - *fill* 0x40219c4b 0x1 + 0x4021764c WemoUuid() + *fill* 0x4021767f 0x1 .text._Z11HueBridgeIdv - 0x40219c4c 0x99 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217680 0x99 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x119 (size before relaxing) - 0x40219c50 HueBridgeId() - *fill* 0x40219ce5 0x3 + 0x40217684 HueBridgeId() + *fill* 0x40217719 0x3 .text._Z15HueSerialnumberv - 0x40219ce8 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021771c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x83 (size before relaxing) - 0x40219ce8 HueSerialnumber() - *fill* 0x40219d2b 0x1 + 0x4021771c HueSerialnumber() + *fill* 0x4021775f 0x1 .text._Z7HueUuidv - 0x40219d2c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217760 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4b (size before relaxing) - 0x40219d30 HueUuid() - *fill* 0x40219d5b 0x1 + 0x40217764 HueUuid() + *fill* 0x4021778f 0x1 .text._Z14GetHueDeviceIdh - 0x40219d5c 0x6b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217790 0x6b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb7 (size before relaxing) - 0x40219d60 GetHueDeviceId(unsigned char) - *fill* 0x40219dc7 0x1 + 0x40217794 GetHueDeviceId(unsigned char) + *fill* 0x402177fb 0x1 .text._Z12GetHueUserIdv - 0x40219dc8 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402177fc 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4d (size before relaxing) - 0x40219dcc GetHueUserId() - *fill* 0x40219df9 0x3 + 0x40217800 GetHueUserId() + *fill* 0x4021782d 0x3 .text._Z17HueConfigResponseP6String - 0x40219dfc 0x144 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217830 0x144 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x264 (size before relaxing) - 0x40219e1c HueConfigResponse(String*) + 0x40217850 HueConfigResponse(String*) .text._Z9HueConfigP6String - 0x40219f40 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217974 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x76 (size before relaxing) - 0x40219f44 HueConfig(String*) - *fill* 0x40219f86 0x2 + 0x40217978 HueConfig(String*) + *fill* 0x402179ba 0x2 .text._Z15HueLightStatus1hP6String - 0x40219f88 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402179bc 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2db (size before relaxing) - 0x40219fc0 HueLightStatus1(unsigned char, String*) - *fill* 0x4021a14f 0x1 + 0x402179f4 HueLightStatus1(unsigned char, String*) + *fill* 0x40217b83 0x1 .text._Z15HueLightStatus2hP6String - 0x4021a150 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217b84 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd5 (size before relaxing) - 0x4021a15c HueLightStatus2(unsigned char, String*) - *fill* 0x4021a1d5 0x3 + 0x40217b90 HueLightStatus2(unsigned char, String*) + *fill* 0x40217c09 0x3 .text._Z15HueGlobalConfigP6String - 0x4021a1d8 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217c0c 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x13b (size before relaxing) - 0x4021a1ec HueGlobalConfig(String*) - *fill* 0x4021a29f 0x1 + 0x40217c20 HueGlobalConfig(String*) + *fill* 0x40217cd3 0x1 .text._Z17HueAuthenticationP6String - 0x4021a2a0 0x62 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217cd4 0x62 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xa2 (size before relaxing) - 0x4021a2a4 HueAuthentication(String*) - *fill* 0x4021a302 0x2 + 0x40217cd8 HueAuthentication(String*) + *fill* 0x40217d36 0x2 .text._Z9HueGroupsP6String - 0x4021a304 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217d38 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1c5 (size before relaxing) - 0x4021a31c HueGroups(String*) - *fill* 0x4021a40d 0x3 - .text._Z19Ws2812GradientColorhP7WsColorttt - 0x4021a410 0x154 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b0 (size before relaxing) - 0x4021a414 Ws2812GradientColor(unsigned char, WsColor*, unsigned short, unsigned short, unsigned short) + 0x40217d50 HueGroups(String*) + *fill* 0x40217e41 0x3 .text._Z13CounterUpdateh - 0x4021a564 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217e44 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x83 (size before relaxing) - 0x4021a568 CounterUpdate(unsigned char) - *fill* 0x4021a5d7 0x1 + 0x40217e48 CounterUpdate(unsigned char) + *fill* 0x40217eb7 0x1 .text._Z14CounterUpdate1v - 0x4021a5d8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217eb8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x4021a5d8 CounterUpdate1() + 0x40217eb8 CounterUpdate1() .text._Z14CounterUpdate2v - 0x4021a5ec 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217ecc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x4021a5ec CounterUpdate2() + 0x40217ecc CounterUpdate2() .text._Z14CounterUpdate3v - 0x4021a600 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217ee0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x4021a600 CounterUpdate3() + 0x40217ee0 CounterUpdate3() .text._Z14CounterUpdate4v - 0x4021a614 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217ef4 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x4021a614 CounterUpdate4() + 0x40217ef4 CounterUpdate4() .text._Z16CounterSaveStatev - 0x4021a628 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217f08 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x39 (size before relaxing) - 0x4021a628 CounterSaveState() - *fill* 0x4021a655 0x3 + 0x40217f08 CounterSaveState() + *fill* 0x40217f35 0x3 .text._Z11CounterInitv - 0x4021a658 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40217f38 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x84 (size before relaxing) - 0x4021a660 CounterInit() + 0x40217f40 CounterInit() + .text._Z11CounterShowh + 0x40217fb0 0x149 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x195 (size before relaxing) + 0x40217fc8 CounterShow(unsigned char) + *fill* 0x402180f9 0x3 + .text._Z6Xsns01h + 0x402180fc 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x58 (size before relaxing) + 0x402180fc Xsns01(unsigned char) + .text._Z12SonoffScShowh + 0x40218148 0xfb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x153 (size before relaxing) + 0x4021815c SonoffScShow(unsigned char) + *fill* 0x40218243 0x1 .text._Z12OneWireResetv - 0x4021a6d0 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40218244 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc2 (size before relaxing) - 0x4021a6d4 OneWireReset() - *fill* 0x4021a75e 0x2 + 0x40218248 OneWireReset() + *fill* 0x402182d2 0x2 .text._Z15OneWireWriteBith - 0x4021a760 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402182d4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7d (size before relaxing) - 0x4021a768 OneWireWriteBit(unsigned char) - *fill* 0x4021a7c1 0x3 + 0x402182dc OneWireWriteBit(unsigned char) + *fill* 0x40218335 0x3 .text._Z14OneWireReadBitv - 0x4021a7c4 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40218338 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7c (size before relaxing) - 0x4021a7c4 OneWireReadBit() + 0x40218338 OneWireReadBit() .text._Z12OneWireWriteh - 0x4021a818 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021838c 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4a (size before relaxing) - 0x4021a818 OneWireWrite(unsigned char) - *fill* 0x4021a85e 0x2 + 0x4021838c OneWireWrite(unsigned char) + *fill* 0x402183d2 0x2 .text._Z11OneWireReadv - 0x4021a860 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402183d4 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3b (size before relaxing) - 0x4021a860 OneWireRead() - *fill* 0x4021a897 0x1 + 0x402183d4 OneWireRead() + *fill* 0x4021840b 0x1 .text._Z13OneWireSelectPKh - 0x4021a898 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021840c 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x38 (size before relaxing) - 0x4021a898 OneWireSelect(unsigned char const*) + 0x4021840c OneWireSelect(unsigned char const*) .text._Z18OneWireResetSearchv - 0x4021a8c8 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021a8d8 OneWireResetSearch() + 0x4021843c 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021844c OneWireResetSearch() .text._Z13OneWireSearchPh - 0x4021a900 0x16b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40218474 0x16b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x197 (size before relaxing) - 0x4021a900 OneWireSearch(unsigned char*) - *fill* 0x4021aa6b 0x1 + 0x40218474 OneWireSearch(unsigned char*) + *fill* 0x402185df 0x1 .text._Z14Ds18x20Convertv - 0x4021aa6c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402185e0 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x30 (size before relaxing) - 0x4021aa6c Ds18x20Convert() + 0x402185e0 Ds18x20Convert() .text._Z11Ds18x20Nameh - 0x4021aa88 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402185fc 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x89 (size before relaxing) - 0x4021aaa0 Ds18x20Name(unsigned char) - *fill* 0x4021ab05 0x3 + 0x40218614 Ds18x20Name(unsigned char) + *fill* 0x40218679 0x3 + .text._Z11Ds18x20Showh + 0x4021867c 0x103 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x143 (size before relaxing) + 0x40218688 Ds18x20Show(unsigned char) + *fill* 0x4021877f 0x1 .text._Z11DhtReadPrepv - 0x4021ab08 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40218780 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x42 (size before relaxing) - 0x4021ab10 DhtReadPrep() - *fill* 0x4021ab46 0x2 - .text._Z14DhtExpectPulsehb - 0x4021ab48 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x58 (size before relaxing) - 0x4021ab4c DhtExpectPulse(unsigned char, bool) - .text._Z8DhtSetuphh - 0x4021ab98 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x4021ab98 DhtSetup(unsigned char, unsigned char) - .text._Z8GpioInitv - 0x4021abc0 0x502 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5b2 (size before relaxing) - 0x4021abe4 GpioInit() - *fill* 0x4021b0c2 0x2 - .text._Z7DhtInitv - 0x4021b0c4 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9f (size before relaxing) - 0x4021b0d0 DhtInit() - *fill* 0x4021b143 0x1 - .text._Z11ShtReadDatav - 0x4021b144 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc0 (size before relaxing) - 0x4021b14c ShtReadData() - .text._Z12HtuCheckCrc8t - 0x4021b1d0 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021b1d4 HtuCheckCrc8(unsigned short) - *fill* 0x4021b1fb 0x1 - .text._Z8HtuResetv - 0x4021b1fc 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x4021b1fc HtuReset() - *fill* 0x4021b229 0x3 - .text._Z10MhzSendCmdh - 0x4021b22c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x4021b234 MhzSendCmd(unsigned char) - *fill* 0x4021b28b 0x1 - .text._Z22MhzCheckAndApplyFilterth - 0x4021b28c 0x76 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021b298 MhzCheckAndApplyFilter(unsigned short, unsigned char) - *fill* 0x4021b302 0x2 - .text._Z16MhzCommandSensorv - 0x4021b304 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7a (size before relaxing) - 0x4021b310 MhzCommandSensor() - *fill* 0x4021b362 0x2 - .text._Z20NovaSdsSetWorkPeriodv - 0x4021b364 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021b370 NovaSdsSetWorkPeriod() - *fill* 0x4021b426 0x2 - .text._Z8Sr04Initv - 0x4021b428 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x4021b430 Sr04Init() - *fill* 0x4021b465 0x3 - .text._Z8Sr04Pingt - 0x4021b468 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa7 (size before relaxing) - 0x4021b470 Sr04Ping(unsigned short) - *fill* 0x4021b4ef 0x1 - .text._Z14Sr04GetSamplesht - 0x4021b4f0 0xde .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xf6 (size before relaxing) - 0x4021b4f8 Sr04GetSamples(unsigned char, unsigned short) - *fill* 0x4021b5ce 0x2 - .text._Z8Sr04ReadPt - 0x4021b5d0 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x4021b5d0 Sr04Read(unsigned short*) - *fill* 0x4021b611 0x3 - .text._Z8Sr04Showh - 0x4021b614 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x4021b61c Sr04Show(unsigned char) - *fill* 0x4021b64f 0x1 - .text._Z6Xsns22h - 0x4021b650 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x52 (size before relaxing) - 0x4021b650 Xsns22(unsigned char) - *fill* 0x4021b68f 0x1 + 0x40218788 DhtReadPrep() + *fill* 0x402187be 0x2 + .text._Z14DhtExpectPulsehb + 0x402187c0 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x58 (size before relaxing) + 0x402187c4 DhtExpectPulse(unsigned char, bool) + .text._Z8DhtSetuphh + 0x40218810 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30 (size before relaxing) + 0x40218810 DhtSetup(unsigned char, unsigned char) + .text._Z8GpioInitv + 0x40218838 0x4d6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x586 (size before relaxing) + 0x4021885c GpioInit() + *fill* 0x40218d0e 0x2 + .text._Z7DhtInitv + 0x40218d10 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x9f (size before relaxing) + 0x40218d1c DhtInit() + *fill* 0x40218d8f 0x1 + .text._Z7DhtShowh + 0x40218d90 0xd9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x125 (size before relaxing) + 0x40218d94 DhtShow(unsigned char) + *fill* 0x40218e69 0x3 + .text._Z7BmpShowh + 0x40218e6c 0x270 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x334 (size before relaxing) + 0x40218ea0 BmpShow(unsigned char) + .text._Z9Sgp30Showh + 0x402190dc 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x57 (size before relaxing) + 0x402190ec Sgp30Show(unsigned char) + *fill* 0x40219127 0x1 + .text._Z10CCS811Showh + 0x40219128 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5f (size before relaxing) + 0x4021913c CCS811Show(unsigned char) + *fill* 0x4021917c 0x0 .text._Z9HxIsReadyt - 0x4021b690 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021917c 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x80 (size before relaxing) - 0x4021b694 HxIsReady(unsigned short) + 0x40219180 HxIsReady(unsigned short) .text._Z6HxReadv - 0x4021b6fc 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402191e8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb5 (size before relaxing) - 0x4021b700 HxRead() - *fill* 0x4021b789 0x3 + 0x402191ec HxRead() + *fill* 0x40219275 0x3 .text._Z7HxResetv - 0x4021b78c 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021b798 HxReset() - *fill* 0x4021b7af 0x1 + 0x40219278 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219284 HxReset() + *fill* 0x4021929b 0x1 .text._Z6HxInitv - 0x4021b7b0 0xa2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021929c 0xa2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xda (size before relaxing) - 0x4021b7b8 HxInit() - *fill* 0x4021b852 0x2 + 0x402192a4 HxInit() + *fill* 0x4021933e 0x2 .text._Z6HxShowh - 0x4021b854 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219340 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x184 (size before relaxing) - 0x4021b878 HxShow(unsigned char) + 0x40219364 HxShow(unsigned char) .text._Z8Tx20Readv - 0x4021b988 0xe2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219474 0xe2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x11a (size before relaxing) - 0x4021b9a8 Tx20Read() - *fill* 0x4021ba6a 0x2 + 0x40219494 Tx20Read() + *fill* 0x40219556 0x2 .text._Z8Tx20Initv - 0x4021ba6c 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219558 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3d (size before relaxing) - 0x4021ba70 Tx20Init() - *fill* 0x4021ba99 0x3 + 0x4021955c Tx20Init() + *fill* 0x40219585 0x3 .text._Z8Tx20Showh - 0x4021ba9c 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219588 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xe1 (size before relaxing) - 0x4021baa8 Tx20Show(unsigned char) - *fill* 0x4021bb36 0x2 + 0x40219594 Tx20Show(unsigned char) + *fill* 0x40219622 0x2 .text._Z6Xsns35h - 0x4021bb38 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219624 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x67 (size before relaxing) - 0x4021bb38 Xsns35(unsigned char) - *fill* 0x4021bb8b 0x1 + 0x40219624 Xsns35(unsigned char) + *fill* 0x40219677 0x1 .text._Z12XsnsNextCallh - 0x4021bb8c 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219678 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x63 (size before relaxing) - 0x4021bb94 XsnsNextCall(unsigned char) - *fill* 0x4021bbe4 0x0 + 0x40219680 XsnsNextCall(unsigned char) + *fill* 0x402196d0 0x0 .text._Z8XsnsCallh - 0x4021bbe4 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402196d0 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4d (size before relaxing) - 0x4021bbe4 XsnsCall(unsigned char) - *fill* 0x4021bc25 0x3 + 0x402196d0 XsnsCall(unsigned char) + *fill* 0x40219711 0x3 .text._Z14MqttShowSensorv - 0x4021bc28 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219714 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x177 (size before relaxing) - 0x4021bc3c MqttShowSensor() - *fill* 0x4021bd47 0x1 + 0x40219728 MqttShowSensor() + *fill* 0x40219833 0x1 .text._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x4021bd48 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021bd50 std::function::function(void (*)()) - 0x4021bd50 std::function::function(void (*)()) - *fill* 0x4021bd66 0x2 + 0x40219834 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021983c std::function::function(void (*)()) + 0x4021983c std::function::function(void (*)()) + *fill* 0x40219852 0x2 .text._Z18HueWemoAddHandlersv - 0x4021bd68 0xfe .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219854 0xfe .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x172 (size before relaxing) - 0x4021bd9c HueWemoAddHandlers() - *fill* 0x4021be66 0x2 - .text._Z14Ws2812GetColortPc - 0x4021be68 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc3 (size before relaxing) - 0x4021be74 Ws2812GetColor(unsigned short, char*) - *fill* 0x4021bf0f 0x1 - .text._Z22Ws2812UpdatePixelColori7WsColorf - 0x4021bf10 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21b (size before relaxing) - 0x4021bf10 Ws2812UpdatePixelColor(int, WsColor, float) - *fill* 0x4021c0ab 0x1 - .text._Z16Ws2812UpdateHandih - 0x4021c0ac 0xea .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x11a (size before relaxing) - 0x4021c0ac Ws2812UpdateHand(int, unsigned char) - *fill* 0x4021c196 0x2 - .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv - 0x4021c198 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x70 (size before relaxing) - 0x4021c19c NeoPixelBus >::Show() - .text._Z15Ws2812StripShowv - 0x4021c1fc 0x84 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa0 (size before relaxing) - 0x4021c200 Ws2812StripShow() - .text._Z14Ws2812Gradienth - 0x4021c280 0x1b9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x245 (size before relaxing) - 0x4021c284 Ws2812Gradient(unsigned char) - *fill* 0x4021c439 0x3 - .text._Z10Ws2812Barsh - 0x4021c43c 0x1b5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21d (size before relaxing) - 0x4021c440 Ws2812Bars(unsigned char) - *fill* 0x4021c5f1 0x3 - .text._Z14Ws2812SetColorthhhh - 0x4021c5f4 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x94 (size before relaxing) - 0x4021c5fc Ws2812SetColor(unsigned short, unsigned char, unsigned char, unsigned char, unsigned char) - .text._Z17Ws2812ForceUpdatev - 0x4021c670 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37 (size before relaxing) - 0x4021c670 Ws2812ForceUpdate() - *fill* 0x4021c697 0x1 - .text._Z11Ws2812Clockv - 0x4021c698 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x154 (size before relaxing) - 0x4021c698 Ws2812Clock() - .text._Z16Ws2812ShowSchemeh - 0x4021c790 0x52 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x71 (size before relaxing) - 0x4021c794 Ws2812ShowScheme(unsigned char) - *fill* 0x4021c7e2 0x2 - .text._Z11Ws2812Clearv - 0x4021c7e4 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x4021c7e4 Ws2812Clear() - *fill* 0x4021c819 0x3 - .text._Z10Ws2812Initv - 0x4021c81c 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa3 (size before relaxing) - 0x4021c81c Ws2812Init() - *fill* 0x4021c88f 0x1 - .text._Z9LightInitv - 0x4021c890 0x19e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x222 (size before relaxing) - 0x4021c898 LightInit() - *fill* 0x4021ca2e 0x2 + 0x40219888 HueWemoAddHandlers() + *fill* 0x40219952 0x2 + .text._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + 0x40219954 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x32 (size before relaxing) + 0x40219954 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char* const&) const + *fill* 0x40219982 0x2 + .text._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x40219984 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x20 (size before relaxing) + 0x40219984 ArduinoJson::TypeTraits::EnableIf::value, bool>::type ArduinoJson::JsonObject::containsKey(char* const&) const .text._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x4021ca30 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021999c 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x32 (size before relaxing) - 0x4021ca30 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(char const*) - *fill* 0x4021ca5e 0x2 + 0x4021999c ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(char const*) + *fill* 0x402199ca 0x2 .text._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x4021ca60 0xf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402199cc 0xf .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x17 (size before relaxing) - 0x4021ca60 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char const*) const - *fill* 0x4021ca6f 0x1 + 0x402199cc ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char const*) const + *fill* 0x402199db 0x1 .text._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x4021ca70 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20 (size before relaxing) - 0x4021ca70 bool ArduinoJson::JsonObject::containsKey(char const*) const - .text._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x4021ca88 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x32 (size before relaxing) - 0x4021ca88 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char* const&) const - *fill* 0x4021cab6 0x2 - .text._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x4021cab8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402199dc 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x20 (size before relaxing) - 0x4021cab8 ArduinoJson::TypeTraits::EnableIf::value, bool>::type ArduinoJson::JsonObject::containsKey(char* const&) const + 0x402199dc bool ArduinoJson::JsonObject::containsKey(char const*) const .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x4021cad0 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402199f4 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x33 (size before relaxing) - 0x4021cad0 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::eat(ArduinoJson::Internals::CharPointerTraits::Reader&, char) - *fill* 0x4021caff 0x1 + 0x402199f4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::eat(ArduinoJson::Internals::CharPointerTraits::Reader&, char) + *fill* 0x40219a23 0x1 .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x4021cb00 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdf (size before relaxing) - 0x4021cb04 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseString() - *fill* 0x4021cbdb 0x1 + 0x40219a24 0xdc .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xe0 (size before relaxing) + 0x40219a28 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseString() .text._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x4021cbdc 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219b00 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x69 (size before relaxing) - 0x4021cbdc bool ArduinoJson::JsonObject::set_impl(char const*, ArduinoJson::JsonVariant const&) - *fill* 0x4021cc39 0x3 - .text._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021cc3c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25 (size before relaxing) - 0x4021cc3c ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const - *fill* 0x4021cc55 0x3 - .text._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021cc58 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa1 (size before relaxing) - 0x4021cc5c ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const - *fill* 0x4021cced 0x3 - .text._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021ccf0 0xa3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xaf (size before relaxing) - 0x4021ccf4 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - *fill* 0x4021cd93 0x1 - .text._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021cd94 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25 (size before relaxing) - 0x4021cd94 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - *fill* 0x4021cdad 0x3 - .text._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021cdb0 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x4021cdb4 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - *fill* 0x4021ce51 0x3 + 0x40219b00 bool ArduinoJson::JsonObject::set_impl(char const*, ArduinoJson::JsonVariant const&) + *fill* 0x40219b5d 0x3 .text._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021ce54 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219b60 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xac (size before relaxing) - 0x4021ce58 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + 0x40219b64 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + .text._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x40219c00 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x25 (size before relaxing) + 0x40219c00 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + *fill* 0x40219c19 0x3 .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x4021cef4 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219c1c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x33 (size before relaxing) - 0x4021cef4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::eat(ArduinoJson::Internals::StdStringTraits::Reader&, char) - *fill* 0x4021cf23 0x1 + 0x40219c1c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::eat(ArduinoJson::Internals::StdStringTraits::Reader&, char) + *fill* 0x40219c4b 0x1 .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x4021cf24 0x10d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x115 (size before relaxing) - 0x4021cf24 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseString() - *fill* 0x4021d031 0x3 + 0x40219c4c 0x10b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x113 (size before relaxing) + 0x40219c4c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseString() + *fill* 0x40219d57 0x1 .text._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x4021d034 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219d58 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x32 (size before relaxing) - 0x4021d034 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(String const&) - *fill* 0x4021d062 0x2 + 0x40219d58 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(String const&) + *fill* 0x40219d86 0x2 .text._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021d064 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219d88 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2d (size before relaxing) - 0x4021d064 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(String const&) const - *fill* 0x4021d082 0x2 + 0x40219d88 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(String const&) const + *fill* 0x40219da6 0x2 + .text._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x40219da8 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xad (size before relaxing) + 0x40219dac ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const + *fill* 0x40219e49 0x3 .text._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x4021d084 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219e4c 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x89 (size before relaxing) - 0x4021d088 int ArduinoJson::JsonVariant::variantAsInteger() const - *fill* 0x4021d109 0x3 + 0x40219e50 int ArduinoJson::JsonVariant::variantAsInteger() const + *fill* 0x40219ed1 0x3 .text._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x4021d10c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219ed4 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f (size before relaxing) - 0x4021d10c bool ArduinoJson::operator!=(ArduinoJson::JsonVariantComparisons > const&, int) - *fill* 0x4021d13f 0x1 + 0x40219ed4 bool ArduinoJson::operator!=(ArduinoJson::JsonVariantComparisons > const&, int) + *fill* 0x40219f07 0x1 .text._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x4021d140 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219f08 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2b (size before relaxing) - 0x4021d140 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const - *fill* 0x4021d15b 0x1 + 0x40219f08 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const + *fill* 0x40219f23 0x1 .text._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x4021d15c 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219f24 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4f (size before relaxing) - 0x4021d15c bool ArduinoJson::JsonArray::add_impl(ArduinoJson::JsonVariant const&) - *fill* 0x4021d1a3 0x1 + 0x40219f24 bool ArduinoJson::JsonArray::add_impl(ArduinoJson::JsonVariant const&) + *fill* 0x40219f6b 0x1 .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x4021d1a4 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219f6c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xad (size before relaxing) - 0x4021d1a4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseArray() - *fill* 0x4021d21d 0x3 + 0x40219f6c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseArray() + *fill* 0x40219fe5 0x3 .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x4021d220 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40219fe8 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc1 (size before relaxing) - 0x4021d220 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseAnythingTo(ArduinoJson::JsonVariant*) - *fill* 0x4021d2d1 0x3 + 0x40219fe8 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseAnythingTo(ArduinoJson::JsonVariant*) + *fill* 0x4021a099 0x3 .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x4021d2d4 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a09c 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd6 (size before relaxing) - 0x4021d2d4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseObject() - *fill* 0x4021d366 0x2 + 0x4021a09c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseObject() + *fill* 0x4021a12e 0x2 .text._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x4021d368 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a130 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2b (size before relaxing) - 0x4021d368 ArduinoJson::JsonObject& ArduinoJson::JsonBufferBase::parseObject(char*, unsigned char) - *fill* 0x4021d38b 0x1 + 0x4021a130 ArduinoJson::JsonObject& ArduinoJson::JsonBufferBase::parseObject(char*, unsigned char) + *fill* 0x4021a153 0x1 .text._Z13RfSendCommandv - 0x4021d38c 0x238 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x304 (size before relaxing) - 0x4021d3b8 RfSendCommand() + 0x4021a154 0x2c0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x394 (size before relaxing) + 0x4021a184 RfSendCommand() .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x4021d5c4 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a414 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xad (size before relaxing) - 0x4021d5c4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseArray() - *fill* 0x4021d63d 0x3 + 0x4021a414 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseArray() + *fill* 0x4021a48d 0x3 .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x4021d640 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a490 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc1 (size before relaxing) - 0x4021d640 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseAnythingTo(ArduinoJson::JsonVariant*) - *fill* 0x4021d6f1 0x3 + 0x4021a490 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseAnythingTo(ArduinoJson::JsonVariant*) + *fill* 0x4021a541 0x3 .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x4021d6f4 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021a544 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd6 (size before relaxing) - 0x4021d6f4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseObject() - *fill* 0x4021d786 0x2 + 0x4021a544 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseObject() + *fill* 0x4021a5d6 0x2 .text._Z14RulesRuleMatchhR6StringS0_ - 0x4021d788 0x5b3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x84a (size before relaxing) - 0x4021d7b8 RulesRuleMatch(unsigned char, String&, String&) - *fill* 0x4021dd3b 0x1 + 0x4021a5d8 0x5af .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x846 (size before relaxing) + 0x4021a608 RulesRuleMatch(unsigned char, String&, String&) + *fill* 0x4021ab87 0x1 .text._Z8I2cWritehhjh - 0x4021dd3c 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ab88 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb2 (size before relaxing) - 0x4021dd3c I2cWrite(unsigned char, unsigned char, unsigned int, unsigned char) - *fill* 0x4021ddd6 0x2 + 0x4021ab88 I2cWrite(unsigned char, unsigned char, unsigned int, unsigned char) + *fill* 0x4021ac22 0x2 .text._Z9I2cWrite8hht - 0x4021ddd8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ac24 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21 (size before relaxing) - 0x4021ddd8 I2cWrite8(unsigned char, unsigned char, unsigned short) - *fill* 0x4021ddf5 0x3 + 0x4021ac24 I2cWrite8(unsigned char, unsigned char, unsigned short) + *fill* 0x4021ac41 0x3 .text._Z12I2cValidReadhhh - 0x4021ddf8 0xbd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ac44 0xbd .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xf1 (size before relaxing) - 0x4021ddfc I2cValidRead(unsigned char, unsigned char, unsigned char) - *fill* 0x4021deb5 0x3 + 0x4021ac48 I2cValidRead(unsigned char, unsigned char, unsigned char) + *fill* 0x4021ad01 0x3 .text._Z14I2cValidRead16Pthh - 0x4021deb8 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ad04 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x31 (size before relaxing) - 0x4021deb8 I2cValidRead16(unsigned short*, unsigned char, unsigned char) - *fill* 0x4021dedd 0x3 + 0x4021ad04 I2cValidRead16(unsigned short*, unsigned char, unsigned char) + *fill* 0x4021ad29 0x3 .text._Z8I2cRead8hh - 0x4021dee0 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ad2c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x4021dee0 I2cRead8(unsigned char, unsigned char) - *fill* 0x4021defd 0x3 - .text._Z16HtuSetResolutionh - 0x4021df00 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3a (size before relaxing) - 0x4021df00 HtuSetResolution(unsigned char) - *fill* 0x4021df2e 0x2 - .text._Z9HtuHeaterh - 0x4021df30 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x55 (size before relaxing) - 0x4021df30 HtuHeater(unsigned char) - *fill* 0x4021df7d 0x3 - .text._Z7HtuInitv - 0x4021df80 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x4021df80 HtuInit() + 0x4021ad2c I2cRead8(unsigned char, unsigned char) + *fill* 0x4021ad49 0x3 .text._Z9I2cRead16hh - 0x4021df9c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ad4c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x4021df9c I2cRead16(unsigned char, unsigned char) - *fill* 0x4021dfb9 0x3 + 0x4021ad4c I2cRead16(unsigned char, unsigned char) + *fill* 0x4021ad69 0x3 .text._Z17Bmp180Calibrationh - 0x4021dfbc 0x194 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d8 (size before relaxing) - 0x4021dfc8 Bmp180Calibration(unsigned char) + 0x4021ad6c 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1d9 (size before relaxing) + 0x4021ad74 Bmp180Calibration(unsigned char) + *fill* 0x4021aefd 0x3 .text._Z13LM75ADGetTempv - 0x4021e150 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021af00 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x4021e158 LM75ADGetTemp() - *fill* 0x4021e1a0 0x0 + 0x4021af08 LM75ADGetTemp() + *fill* 0x4021af50 0x0 + .text._Z10LM75ADShowh + 0x4021af50 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa9 (size before relaxing) + 0x4021af5c LM75ADShow(unsigned char) + *fill* 0x4021afc9 0x3 .text._Z11I2cRead16LEhh - 0x4021e1a0 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021afcc 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x35 (size before relaxing) - 0x4021e1a0 I2cRead16LE(unsigned char, unsigned char) - *fill* 0x4021e1c9 0x3 + 0x4021afcc I2cRead16LE(unsigned char, unsigned char) + *fill* 0x4021aff5 0x3 .text._Z15Bmx280Calibrateh - 0x4021e1cc 0x185 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021aff8 0x185 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x231 (size before relaxing) - 0x4021e1d0 Bmx280Calibrate(unsigned char) - *fill* 0x4021e351 0x3 + 0x4021affc Bmx280Calibrate(unsigned char) + *fill* 0x4021b17d 0x3 .text._Z9I2cRead24hh - 0x4021e354 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b180 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x28 (size before relaxing) - 0x4021e354 I2cRead24(unsigned char, unsigned char) + 0x4021b180 I2cRead24(unsigned char, unsigned char) .text._Z10Bmp180Readh - 0x4021e370 0x175 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b19c 0x175 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d9 (size before relaxing) - 0x4021e384 Bmp180Read(unsigned char) - *fill* 0x4021e4e5 0x3 + 0x4021b1b0 Bmp180Read(unsigned char) + *fill* 0x4021b311 0x3 .text._Z10Bme280Readh - 0x4021e4e8 0x3d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b314 0x3d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x43d (size before relaxing) - 0x4021e518 Bme280Read(unsigned char) - *fill* 0x4021e8b9 0x3 + 0x4021b344 Bme280Read(unsigned char) + *fill* 0x4021b6e5 0x3 .text._Z7BmpReadv - 0x4021e8bc 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa9 (size before relaxing) - 0x4021e8c0 BmpRead() - *fill* 0x4021e945 0x3 - .text._Z15HtuReadDeviceIdv - 0x4021e948 0x76 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xba (size before relaxing) - 0x4021e948 HtuReadDeviceId() - *fill* 0x4021e9be 0x2 - .text._Z7HtuReadv - 0x4021e9c0 0x24b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x35b (size before relaxing) - 0x4021e9f8 HtuRead() - *fill* 0x4021ec0b 0x1 - .text._Z10Bh1750Readv - 0x4021ec0c 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x4021ec1c Bh1750Read() - .text._Z9Sht3xReadRfS_h - 0x4021ec98 0x141 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1c9 (size before relaxing) - 0x4021eca4 Sht3xRead(float&, float&, unsigned char) - *fill* 0x4021edd9 0x3 + 0x4021b6e8 0xac .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xdc (size before relaxing) + 0x4021b6e8 BmpRead() .text._Z6Syslogv - 0x4021eddc 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b794 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x165 (size before relaxing) - 0x4021edfc Syslog() - *fill* 0x4021eee5 0x3 + 0x4021b7b4 Syslog() + *fill* 0x4021b89d 0x3 .text._Z6AddLogh - 0x4021eee8 0x12a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b8a0 0x12a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x182 (size before relaxing) - 0x4021ef00 AddLog(unsigned char) - *fill* 0x4021f012 0x2 + 0x4021b8b8 AddLog(unsigned char) + *fill* 0x4021b9ca 0x2 .text._Z12SettingsSaveh - 0x4021f014 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021b9cc 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x169 (size before relaxing) - 0x4021f028 SettingsSave(unsigned char) - *fill* 0x4021f131 0x3 + 0x4021b9e0 SettingsSave(unsigned char) + *fill* 0x4021bae9 0x3 .text._Z15SettingsSaveAllv - 0x4021f134 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021baec 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f (size before relaxing) - 0x4021f134 SettingsSaveAll() - *fill* 0x4021f15f 0x1 + 0x4021baec SettingsSaveAll() + *fill* 0x4021bb17 0x1 .text._Z13SettingsDeltav - 0x4021f160 0x402 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021bb18 0x406 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x466 (size before relaxing) - 0x4021f1e8 SettingsDelta() - *fill* 0x4021f562 0x2 + 0x4021bba0 SettingsDelta() + *fill* 0x4021bf1e 0x2 .text._Z13SettingsEraseh - 0x4021f564 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021bf20 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x120 (size before relaxing) - 0x4021f574 SettingsErase(unsigned char) + 0x4021bf30 SettingsErase(unsigned char) .text._Z16SettingsSdkErasev - 0x4021f628 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021bfe4 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x43 (size before relaxing) - 0x4021f628 SettingsSdkErase() - *fill* 0x4021f64b 0x1 + 0x4021bfe4 SettingsSdkErase() + *fill* 0x4021c007 0x1 .text._Z17SetSerialBaudratei - 0x4021f64c 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c008 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc4 (size before relaxing) - 0x4021f650 SetSerialBaudrate(int) - .text._Z10ShowSourcei$part$70 - 0x4021f6c4 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c00c SetSerialBaudrate(int) + .text._Z10ShowSourcei$part$63 + 0x4021c080 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4d (size before relaxing) - *fill* 0x4021f6f9 0x3 + *fill* 0x4021c0b5 0x3 .text._Z10ShowSourcei - 0x4021f6fc 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c0b8 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x4021f6fc ShowSource(int) - *fill* 0x4021f715 0x3 + 0x4021c0b8 ShowSource(int) + *fill* 0x4021c0d1 0x3 .text._Z14SetDevicePowermi - 0x4021f718 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18b (size before relaxing) - 0x4021f718 SetDevicePower(unsigned long, int) - *fill* 0x4021f847 0x1 + 0x4021c0d4 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x18f (size before relaxing) + 0x4021c0d4 SetDevicePower(unsigned long, int) + *fill* 0x4021c203 0x1 .text._Z9RtcSecondv - 0x4021f848 0x291 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33d (size before relaxing) - 0x4021f860 RtcSecond() - *fill* 0x4021fad9 0x3 + 0x4021c204 0x293 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x33f (size before relaxing) + 0x4021c21c RtcSecond() + *fill* 0x4021c497 0x1 .text._Z8AddLog_PhPKc - 0x4021fadc 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c498 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x35 (size before relaxing) - 0x4021fadc AddLog_P(unsigned char, char const*) - *fill* 0x4021fb01 0x3 + 0x4021c498 AddLog_P(unsigned char, char const*) + *fill* 0x4021c4bd 0x3 .text._Z19SettingsBufferAllocv - 0x4021fb04 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c4c0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4f (size before relaxing) - 0x4021fb08 SettingsBufferAlloc() - *fill* 0x4021fb37 0x1 + 0x4021c4c4 SettingsBufferAlloc() + *fill* 0x4021c4f3 0x1 .text._Z15SettingsDefaultv - 0x4021fb38 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c4f4 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f (size before relaxing) - 0x4021fb3c SettingsDefault() - *fill* 0x4021fb5b 0x1 + 0x4021c4f8 SettingsDefault() + *fill* 0x4021c517 0x1 .text._Z11ClaimSerialv - 0x4021fb5c 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c518 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x69 (size before relaxing) - 0x4021fb64 ClaimSerial() - *fill* 0x4021fba1 0x3 + 0x4021c520 ClaimSerial() + *fill* 0x4021c55d 0x3 .text._Z11PzemSnsInitv - 0x4021fba4 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c560 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x81 (size before relaxing) - 0x4021fba4 PzemSnsInit() - *fill* 0x4021fbf5 0x3 + 0x4021c560 PzemSnsInit() + *fill* 0x4021c5b1 0x3 .text._Z13PzemAcSnsInitv - 0x4021fbf8 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c5b4 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x74 (size before relaxing) - 0x4021fbfc PzemAcSnsInit() + 0x4021c5b8 PzemAcSnsInit() .text._Z13PzemDcSnsInitv - 0x4021fc44 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c600 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x80 (size before relaxing) - 0x4021fc4c PzemDcSnsInit() - .text._Z7MhzInitv - 0x4021fc9c 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x98 (size before relaxing) - 0x4021fca0 MhzInit() - .text._Z12SenseairInitv - 0x4021fd04 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x90 (size before relaxing) - 0x4021fd0c SenseairInit() - .text._Z7PmsInitv - 0x4021fd70 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x92 (size before relaxing) - 0x4021fd78 PmsInit() - *fill* 0x4021fdda 0x2 - .text._Z11NovaSdsInitv - 0x4021fddc 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa5 (size before relaxing) - 0x4021fde0 NovaSdsInit() - *fill* 0x4021fe4a 0x2 + 0x4021c604 PzemDcSnsInit() .text._Z13StopWebserverv - 0x4021fe4c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c654 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x47 (size before relaxing) - 0x4021fe50 StopWebserver() - *fill* 0x4021fe7f 0x1 + 0x4021c658 StopWebserver() + *fill* 0x4021c687 0x1 .text._Z11CseReceivedv - 0x4021fe80 0x27b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c688 0x27f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2e3 (size before relaxing) - 0x4021fe98 CseReceived() - *fill* 0x402200fb 0x1 + 0x4021c6a4 CseReceived() + *fill* 0x4021c907 0x1 .text._Z13UdpDisconnectv - 0x402200fc 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c908 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x41 (size before relaxing) - 0x40220104 UdpDisconnect() - *fill* 0x40220131 0x3 + 0x4021c910 UdpDisconnect() + *fill* 0x4021c93d 0x3 .text._Z10UdpConnectv - 0x40220134 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021c940 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb0 (size before relaxing) - 0x40220148 UdpConnect() - *fill* 0x402201b5 0x3 + 0x4021c954 UdpConnect() + *fill* 0x4021c9c1 0x3 .text._Z11Ds18x20Readh - 0x402201b8 0x23a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x306 (size before relaxing) - 0x402201c8 Ds18x20Read(unsigned char) - *fill* 0x402203f2 0x2 - .text._Z14ShtSendCommandh - 0x402203f4 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x140 (size before relaxing) - 0x402203fc ShtSendCommand(unsigned char) - .text._Z8ShtResetv - 0x402204d8 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x93 (size before relaxing) - 0x402204d8 ShtReset() - *fill* 0x4022053b 0x1 - .text._Z14ShtAwaitResultv - 0x4022053c 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x60 (size before relaxing) - 0x40220540 ShtAwaitResult() - .text._Z7ShtReadv - 0x40220584 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1af (size before relaxing) - 0x402205a4 ShtRead() - *fill* 0x402206b3 0x1 - .text._Z9ShtDetectv - 0x402206b4 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8e (size before relaxing) - 0x402206b8 ShtDetect() - *fill* 0x4022071e 0x2 + 0x4021c9c4 0x23d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x305 (size before relaxing) + 0x4021c9d4 Ds18x20Read(unsigned char) + *fill* 0x4021cc01 0x3 .text._Z12SettingsLoadv - 0x40220720 0xdf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021cc04 0xdf .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x13f (size before relaxing) - 0x40220728 SettingsLoad() - *fill* 0x402207ff 0x1 - .text.setup 0x40220800 0x384 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4e0 (size before relaxing) - 0x40220828 setup + 0x4021cc0c SettingsLoad() + *fill* 0x4021cce3 0x1 + .text.setup 0x4021cce4 0x383 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4e3 (size before relaxing) + 0x4021cd0c setup + *fill* 0x4021d067 0x1 .text._Z8AddLog_PhPKcS0_ - 0x40220b84 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d068 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x70 (size before relaxing) - 0x40220b84 AddLog_P(unsigned char, char const*, char const*) + 0x4021d068 AddLog_P(unsigned char, char const*, char const*) .text._Z17HandleUpnpServicev - 0x40220bd4 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d0b8 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x85 (size before relaxing) - 0x40220be4 HandleUpnpService() - *fill* 0x40220c2d 0x3 + 0x4021d0c8 HandleUpnpService() + *fill* 0x4021d111 0x3 .text._Z21HandleUpnpMetaServicev - 0x40220c30 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d114 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x85 (size before relaxing) - 0x40220c38 HandleUpnpMetaService() - *fill* 0x40220c81 0x3 + 0x4021d11c HandleUpnpMetaService() + *fill* 0x4021d165 0x3 .text._Z19HandleUpnpSetupWemov - 0x40220c84 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d168 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x167 (size before relaxing) - 0x40220c9c HandleUpnpSetupWemo() - *fill* 0x40220d4b 0x1 + 0x4021d180 HandleUpnpSetupWemo() + *fill* 0x4021d22f 0x1 .text._Z18HandleUpnpSetupHuev - 0x40220d4c 0xc3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d230 0xc3 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x177 (size before relaxing) - 0x40220d54 HandleUpnpSetupHue() - *fill* 0x40220e0f 0x1 - .text._Z17HandleInformationv$part$136 - 0x40220e10 0x7f3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021d238 HandleUpnpSetupHue() + *fill* 0x4021d2f3 0x1 + .text._Z17HandleInformationv$part$105 + 0x4021d2f4 0x7f3 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd4b (size before relaxing) - *fill* 0x40221603 0x1 + *fill* 0x4021dae7 0x1 .text._Z9WifiBeginh - 0x40221604 0x178 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021dae8 0x178 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21c (size before relaxing) - 0x40221614 WifiBegin(unsigned char) + 0x4021daf8 WifiBegin(unsigned char) .text._Z12AddLogSerialhPhi - 0x4022177c 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021dc60 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x77 (size before relaxing) - 0x40221784 AddLogSerial(unsigned char, unsigned char*, int) - *fill* 0x402217df 0x1 + 0x4021dc68 AddLogSerial(unsigned char, unsigned char*, int) + *fill* 0x4021dcc3 0x1 .text._Z12AddLogSerialh - 0x402217e0 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021dcc4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x29 (size before relaxing) - 0x402217e4 AddLogSerial(unsigned char) - *fill* 0x40221801 0x3 + 0x4021dcc8 AddLogSerial(unsigned char) + *fill* 0x4021dce5 0x3 .text._Z14CseSerialInputv - 0x40221804 0xf4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x114 (size before relaxing) - 0x40221818 CseSerialInput() + 0x4021dce8 0xf6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x116 (size before relaxing) + 0x4021dcfc CseSerialInput() + *fill* 0x4021ddde 0x2 .text._Z6Xnrg02h - 0x402218f8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021dde0 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6a (size before relaxing) - 0x402218f8 Xnrg02(unsigned char) - *fill* 0x40221947 0x1 - .text._Z14McpSerialInputv - 0x40221948 0xf5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x155 (size before relaxing) - 0x4022194c McpSerialInput() - *fill* 0x40221a3d 0x3 - .text._Z6Xnrg04h - 0x40221a40 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8d (size before relaxing) - 0x40221a40 Xnrg04(unsigned char) - *fill* 0x40221aad 0x3 + 0x4021dde0 Xnrg02(unsigned char) + *fill* 0x4021de2f 0x1 .text._Z11PzemRecievehPf - 0x40221ab0 0x1ee .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021de30 0x1f2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x262 (size before relaxing) - 0x40221ab0 PzemRecieve(unsigned char, float*) - *fill* 0x40221c9e 0x2 + 0x4021de34 PzemRecieve(unsigned char, float*) + *fill* 0x4021e022 0x2 .text._Z14PzemEvery200msv - 0x40221ca0 0x12c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e024 0x12c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x17c (size before relaxing) - 0x40221cb4 PzemEvery200ms() + 0x4021e038 PzemEvery200ms() .text._Z6Xnrg03h - 0x40221dcc 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e150 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x40221dcc Xnrg03(unsigned char) - .text._Z14MhzEverySecondv - 0x40221e0c 0x205 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x255 (size before relaxing) - 0x40221e2c MhzEverySecond() - *fill* 0x40222011 0x3 - .text._Z11PmsReadDatav - 0x40222014 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x10e (size before relaxing) - 0x40222020 PmsReadData() - *fill* 0x4022210e 0x2 - .text._Z9PmsSecondv - 0x40222110 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31 (size before relaxing) - 0x40222110 PmsSecond() - *fill* 0x40222135 0x3 - .text._Z15NovaSdsReadDatav - 0x40222138 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x119 (size before relaxing) - 0x40222148 NovaSdsReadData() - *fill* 0x4022223d 0x3 - .text._Z13NovaSdsSecondv - 0x40222240 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31 (size before relaxing) - 0x40222240 NovaSdsSecond() - *fill* 0x40222265 0x3 + 0x4021e150 Xnrg03(unsigned char) .text._Z12AddLogMissedPch - 0x40222268 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e190 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3d (size before relaxing) - 0x4022226c AddLogMissed(char*, unsigned char) - *fill* 0x40222295 0x3 + 0x4021e194 AddLogMissed(char*, unsigned char) + *fill* 0x4021e1bd 0x3 .text._Z18Ds18x20EverySecondv - 0x40222298 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e1c0 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x83 (size before relaxing) - 0x40222298 Ds18x20EverySecond() - *fill* 0x402222ef 0x1 - .text._Z14ShtEverySecondv - 0x402222f0 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x402222f4 ShtEverySecond() - *fill* 0x40222325 0x3 + 0x4021e1c0 Ds18x20EverySecond() + *fill* 0x4021e217 0x1 .text._Z14StartWebserveri9IPAddress - 0x40222328 0x38f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e218 0x38f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5af (size before relaxing) - 0x402223cc StartWebserver(int, IPAddress) - *fill* 0x402226b7 0x1 + 0x4021e2bc StartWebserver(int, IPAddress) + *fill* 0x4021e5a7 0x1 .text._Z16WifiManagerBeginv - 0x402226b8 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e5a8 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x149 (size before relaxing) - 0x402226c4 WifiManagerBegin() - *fill* 0x4022277d 0x3 + 0x4021e5b4 WifiManagerBegin() + *fill* 0x4021e66d 0x3 .text._Z10WifiConfigh - 0x40222780 0xaf .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e670 0xb3 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xe7 (size before relaxing) - 0x4022278c WifiConfig(unsigned char) - *fill* 0x4022282f 0x1 + 0x4021e680 WifiConfig(unsigned char) + *fill* 0x4021e723 0x1 .text._Z11WifiCheckIpv - 0x40222830 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e724 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x247 (size before relaxing) - 0x40222848 WifiCheckIp() - *fill* 0x402229f7 0x1 + 0x4021e73c WifiCheckIp() + *fill* 0x4021e8eb 0x1 .text._Z9WifiCheckh - 0x402229f8 0x16f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021e8ec 0x16f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x21b (size before relaxing) - 0x40222a14 WifiCheck(unsigned char) - *fill* 0x40222b67 0x1 + 0x4021e908 WifiCheck(unsigned char) + *fill* 0x4021ea5b 0x1 .text._Z18ModuleSaveSettingsv - 0x40222b68 0x1a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ea5c 0x1a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x242 (size before relaxing) - 0x40222b7c ModuleSaveSettings() - *fill* 0x40222d0a 0x2 + 0x4021ea70 ModuleSaveSettings() + *fill* 0x4021ebfe 0x2 .text._Z16WifiSaveSettingsv - 0x40222d0c 0x123 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b3 (size before relaxing) - 0x40222d24 WifiSaveSettings() - *fill* 0x40222e2f 0x1 + 0x4021ec00 0x123 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1bf (size before relaxing) + 0x4021ec18 WifiSaveSettings() + *fill* 0x4021ed23 0x1 .text._Z19LoggingSaveSettingsv - 0x40222e30 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ed24 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1cf (size before relaxing) - 0x40222e4c LoggingSaveSettings() - *fill* 0x40222f83 0x1 + 0x4021ed40 LoggingSaveSettings() + *fill* 0x4021ee77 0x1 .text._Z17OtherSaveSettingsv - 0x40222f84 0x17e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ee78 0x17e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x20e (size before relaxing) - 0x40222f9c OtherSaveSettings() - *fill* 0x40223102 0x2 + 0x4021ee90 OtherSaveSettings() + *fill* 0x4021eff6 0x2 .text._Z16HandleUploadLoopv - 0x40223104 0x44b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x557 (size before relaxing) - 0x40223128 HandleUploadLoop() - *fill* 0x4022354f 0x1 + 0x4021eff8 0x447 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x54f (size before relaxing) + 0x4021f01c HandleUploadLoop() + *fill* 0x4021f43f 0x1 .text._Z18MqttDiscoverServerv - 0x40223550 0xca .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f440 0xca .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x13a (size before relaxing) - 0x4022355c MqttDiscoverServer() - *fill* 0x4022361a 0x2 + 0x4021f44c MqttDiscoverServer() + *fill* 0x4021f50a 0x2 .text._Z13MqttSubscribePc - 0x4022361c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f50c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x47 (size before relaxing) - 0x40223620 MqttSubscribe(char*) - *fill* 0x4022364b 0x1 - .text._Z21DomoticzMqttSubscribev - 0x4022364c 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7e (size before relaxing) - 0x40223658 DomoticzMqttSubscribe() - *fill* 0x402236b6 0x2 + 0x4021f510 MqttSubscribe(char*) + *fill* 0x4021f53b 0x1 .text._Z17MqttPublishDirectPKch - 0x402236b8 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f53c 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x165 (size before relaxing) - 0x402236d4 MqttPublishDirect(char const*, unsigned char) - *fill* 0x402237b9 0x3 + 0x4021f558 MqttPublishDirect(char const*, unsigned char) + *fill* 0x4021f63d 0x3 + .text._Z7SendKeyhhh + 0x4021f640 0x14c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1ac (size before relaxing) + 0x4021f64c SendKey(unsigned char, unsigned char, unsigned char) .text._Z11MqttPublishPKch - 0x402237bc 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f78c 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x69 (size before relaxing) - 0x402237c0 MqttPublish(char const*, unsigned char) - *fill* 0x40223811 0x3 + 0x4021f790 MqttPublish(char const*, unsigned char) + *fill* 0x4021f7e1 0x3 .text._Z11MqttPublishPKc - 0x40223814 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f7e4 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18 (size before relaxing) - 0x40223814 MqttPublish(char const*) - .text._Z29MqttPublishDomoticzPowerStateh - 0x40223828 0xac .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xe8 (size before relaxing) - 0x40223834 MqttPublishDomoticzPowerState(unsigned char) - .text._Z24DomoticzUpdatePowerStateh - 0x402238d4 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x402238d8 DomoticzUpdatePowerState(unsigned char) - .text._Z18DomoticzMqttUpdatev - 0x40223900 0x52 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x65 (size before relaxing) - 0x40223904 DomoticzMqttUpdate() - *fill* 0x40223952 0x2 - .text._Z15DomoticzSendKeyhhhh - 0x40223954 0x83 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9b (size before relaxing) - 0x40223964 DomoticzSendKey(unsigned char, unsigned char, unsigned char, unsigned char) - *fill* 0x402239d7 0x1 - .text._Z14DomoticzSensorhPc - 0x402239d8 0xa6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xf2 (size before relaxing) - 0x402239dc DomoticzSensor(unsigned char, char*) - *fill* 0x40223a7e 0x2 - .text._Z14DomoticzSensorhj - 0x40223a80 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x39 (size before relaxing) - 0x40223a84 DomoticzSensor(unsigned char, unsigned int) - *fill* 0x40223aad 0x3 - .text._Z11CounterShowh - 0x40223ab0 0x171 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1cd (size before relaxing) - 0x40223ac8 CounterShow(unsigned char) - *fill* 0x40223c21 0x3 - .text._Z6Xsns01h - 0x40223c24 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x57 (size before relaxing) - 0x40223c24 Xsns01(unsigned char) - *fill* 0x40223c6b 0x1 - .text._Z10Bh1750Showh - 0x40223c6c 0x67 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8a (size before relaxing) - 0x40223c78 Bh1750Show(unsigned char) - *fill* 0x40223cd3 0x1 - .text._Z7MhzShowh - 0x40223cd4 0xd0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x11c (size before relaxing) - 0x40223ce8 MhzShow(unsigned char) - .text._Z6Xsns15h - 0x40223da4 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x85 (size before relaxing) - 0x40223da8 Xsns15(unsigned char) - *fill* 0x40223e0d 0x3 - .text._Z12SenseairShowh - 0x40223e10 0x131 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a1 (size before relaxing) - 0x40223e34 SenseairShow(unsigned char) - *fill* 0x40223f41 0x3 - .text._Z7PmsShowh - 0x40223f44 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x101 (size before relaxing) - 0x40223f4c PmsShow(unsigned char) - *fill* 0x40224011 0x3 - .text._Z6Xsns18h - 0x40224014 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x62 (size before relaxing) - 0x40224014 Xsns18(unsigned char) - *fill* 0x4022405f 0x1 - .text._Z9Sgp30Showh - 0x40224060 0x6a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x89 (size before relaxing) - 0x40224070 Sgp30Show(unsigned char) - *fill* 0x402240ca 0x2 - .text._Z21DomoticzTempHumSensorPcS_ - 0x402240cc 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x402240d0 DomoticzTempHumSensor(char*, char*) - *fill* 0x40224105 0x3 - .text._Z12SonoffScShowh - 0x40224108 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1af (size before relaxing) - 0x40224114 SonoffScShow(unsigned char) - *fill* 0x40224237 0x1 - .text._Z7DhtShowh - 0x40224238 0xe5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x13d (size before relaxing) - 0x4022423c DhtShow(unsigned char) - *fill* 0x4022431d 0x3 - .text._Z7ShtShowh - 0x40224320 0xc0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x120 (size before relaxing) - 0x40224320 ShtShow(unsigned char) - .text._Z6Xsns07h - 0x402243e0 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x402243e0 Xsns07(unsigned char) - *fill* 0x4022442f 0x1 - .text._Z7HtuShowh - 0x40224430 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x120 (size before relaxing) - 0x40224434 HtuShow(unsigned char) - .text._Z9Sht3xShowh - 0x402244f4 0x126 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18e (size before relaxing) - 0x40224500 Sht3xShow(unsigned char) - *fill* 0x4022461a 0x2 - .text._Z29DomoticzTempHumPressureSensorPcS_S_ - 0x4022461c 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x59 (size before relaxing) - 0x40224620 DomoticzTempHumPressureSensor(char*, char*, char*) - *fill* 0x40224661 0x3 - .text._Z7BmpShowh - 0x40224664 0x280 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x358 (size before relaxing) - 0x4022468c BmpShow(unsigned char) - .text._Z25DomoticzSensorPowerEnergyiPc - 0x402248e4 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33 (size before relaxing) - 0x402248e8 DomoticzSensorPowerEnergy(int, char*) - *fill* 0x4022490b 0x1 - .text._Z10EnergyShowh - 0x4022490c 0x4aa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x686 (size before relaxing) - 0x40224944 EnergyShow(unsigned char) - *fill* 0x40224db6 0x2 - .text._Z11Ds18x20Showh - 0x40224db8 0x117 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x167 (size before relaxing) - 0x40224dc4 Ds18x20Show(unsigned char) - *fill* 0x40224ecf 0x1 - .text._Z11NovaSdsShowh - 0x40224ed0 0xab .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x102 (size before relaxing) - 0x40224ed8 NovaSdsShow(unsigned char) - *fill* 0x40224f7b 0x1 - .text._Z6Xsns20h - 0x40224f7c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x40224f7c Xsns20(unsigned char) - *fill* 0x40224fcb 0x1 - .text._Z10LM75ADShowh - 0x40224fcc 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc1 (size before relaxing) - 0x40224fd8 LM75ADShow(unsigned char) - *fill* 0x40225051 0x3 + 0x4021f7e4 MqttPublish(char const*) .text._Z24MqttPublishPrefixTopic_PhPKch - 0x40225054 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f7f8 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb6 (size before relaxing) - 0x40225058 MqttPublishPrefixTopic_P(unsigned char, char const*, unsigned char) - *fill* 0x402250e2 0x2 + 0x4021f7fc MqttPublishPrefixTopic_P(unsigned char, char const*, unsigned char) + *fill* 0x4021f886 0x2 .text._Z24MqttPublishPrefixTopic_PhPKc - 0x402250e4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021f888 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1b (size before relaxing) - 0x402250e4 MqttPublishPrefixTopic_P(unsigned char, char const*) - *fill* 0x402250fb 0x1 + 0x4021f888 MqttPublishPrefixTopic_P(unsigned char, char const*) + *fill* 0x4021f89f 0x1 .text._Z13PublishStatush - 0x402250fc 0x6ea .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x992 (size before relaxing) - 0x40225174 PublishStatus(unsigned char) - *fill* 0x402257e6 0x2 + 0x4021f8a0 0x6e6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x98e (size before relaxing) + 0x4021f914 PublishStatus(unsigned char) + *fill* 0x4021ff86 0x2 .text._Z26MqttPublishPowerBlinkStateh - 0x402257e8 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4021ff88 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x9f (size before relaxing) - 0x402257f0 MqttPublishPowerBlinkState(unsigned char) - *fill* 0x4022585f 0x1 + 0x4021ff90 MqttPublishPowerBlinkState(unsigned char) + *fill* 0x4021ffff 0x1 .text._Z23SonoffBridgeReceivedRawv - 0x40225860 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220000 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xfd (size before relaxing) - 0x40225874 SonoffBridgeReceivedRaw() - *fill* 0x40225929 0x3 + 0x40220014 SonoffBridgeReceivedRaw() + *fill* 0x402200c9 0x3 .text._Z23SonoffBridgeLearnFailedv - 0x4022592c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402200cc 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5f (size before relaxing) - 0x40225938 SonoffBridgeLearnFailed() - *fill* 0x4022596f 0x1 + 0x402200d8 SonoffBridgeLearnFailed() + *fill* 0x4022010f 0x1 .text._Z20SonoffBridgeReceivedv - 0x40225970 0x1ec .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x250 (size before relaxing) - 0x4022599c SonoffBridgeReceived() + 0x40220110 0x1e2 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x242 (size before relaxing) + 0x4022013c SonoffBridgeReceived() + *fill* 0x402202f2 0x2 .text._Z23SonoffBridgeSerialInputv - 0x40225b5c 0x122 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402202f4 0x122 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x142 (size before relaxing) - 0x40225b68 SonoffBridgeSerialInput() - *fill* 0x40225c7e 0x2 + 0x40220300 SonoffBridgeSerialInput() + *fill* 0x40220416 0x2 .text._Z6Xdrv06h - 0x40225c80 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220418 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5a (size before relaxing) - 0x40225c80 Xdrv06(unsigned char) - *fill* 0x40225cc7 0x1 + 0x40220418 Xdrv06(unsigned char) + *fill* 0x4022045f 0x1 .text._Z17SerialBridgeInputv - 0x40225cc8 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220460 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x113 (size before relaxing) - 0x40225cdc SerialBridgeInput() - *fill* 0x40225dab 0x1 + 0x40220474 SerialBridgeInput() + *fill* 0x40220547 0x1 .text._Z6Xdrv08h - 0x40225dac 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220548 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x58 (size before relaxing) - 0x40225dac Xdrv08(unsigned char) - *fill* 0x40225ded 0x3 + 0x40220548 Xdrv08(unsigned char) + *fill* 0x40220589 0x3 .text._Z12TimerCommandv - 0x40225df0 0x62e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022058c 0x62e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7c6 (size before relaxing) - 0x40225e38 TimerCommand() - *fill* 0x4022641e 0x2 + 0x402205d4 TimerCommand() + *fill* 0x40220bba 0x2 .text._Z26HxCalibrationStateTextJsonh - 0x40226420 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220bbc 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6b (size before relaxing) - 0x40226424 HxCalibrationStateTextJson(unsigned char) - *fill* 0x40226467 0x1 + 0x40220bc4 HxCalibrationStateTextJson(unsigned char) + *fill* 0x40220c07 0x1 .text._Z9HxCommandv - 0x40226468 0x211 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220c08 0x215 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2e5 (size before relaxing) - 0x40226474 HxCommand() - *fill* 0x40226679 0x3 + 0x40220c18 HxCommand() + *fill* 0x40220e1d 0x3 .text._Z17HxEvery100mSecondv - 0x4022667c 0x160 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a0 (size before relaxing) - 0x40226680 HxEvery100mSecond() + 0x40220e20 0x164 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a4 (size before relaxing) + 0x40220e24 HxEvery100mSecond() .text._Z6Xsns34h - 0x402267dc 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220f84 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x85 (size before relaxing) - 0x402267e0 Xsns34(unsigned char) - *fill* 0x40226845 0x3 + 0x40220f88 Xsns34(unsigned char) + *fill* 0x40220fed 0x3 .text._Z14EnergyMqttShowv - 0x40226848 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40220ff0 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb7 (size before relaxing) - 0x40226858 EnergyMqttShow() - *fill* 0x402268c7 0x1 + 0x40221000 EnergyMqttShow() + *fill* 0x4022106f 0x1 .text._Z21MqttPublishPowerStateh - 0x402268c8 0x13b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40221070 0x13b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1af (size before relaxing) - 0x402268d0 MqttPublishPowerState(unsigned char) - *fill* 0x40226a03 0x1 + 0x40221078 MqttPublishPowerState(unsigned char) + *fill* 0x402211ab 0x1 .text._Z19ExecuteCommandPowerhhi - 0x40226a04 0x24f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29b (size before relaxing) - 0x40226a1c ExecuteCommandPower(unsigned char, unsigned char, int) - *fill* 0x40226c53 0x1 + 0x402211ac 0x24f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x28f (size before relaxing) + 0x402211c4 ExecuteCommandPower(unsigned char, unsigned char, int) + *fill* 0x402213fb 0x1 .text._Z11SetFanspeedh - 0x40226c54 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402213fc 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x42 (size before relaxing) - 0x40226c58 SetFanspeed(unsigned char) - *fill* 0x40226c8e 0x2 + 0x40221400 SetFanspeed(unsigned char) + *fill* 0x40221436 0x2 .text._Z17StopAllPowerBlinkv - 0x40226c90 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7f (size before relaxing) - 0x40226c90 StopAllPowerBlink() - *fill* 0x40226cf3 0x1 + 0x40221438 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7b (size before relaxing) + 0x40221438 StopAllPowerBlink() + *fill* 0x4022149b 0x1 + .text._Z13SwitchHandlerh + 0x4022149c 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1a0 (size before relaxing) + 0x402214a4 SwitchHandler(unsigned char) .text._Z17EnergyMarginCheckv - 0x40226cf4 0x545 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022160c 0x545 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6b5 (size before relaxing) - 0x40226d68 EnergyMarginCheck() - *fill* 0x40227239 0x3 + 0x40221680 EnergyMarginCheck() + *fill* 0x40221b51 0x3 .text._Z6Xsns03h - 0x4022723c 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40221b54 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x6f (size before relaxing) - 0x40227240 Xsns03(unsigned char) - *fill* 0x40227297 0x1 + 0x40221b58 Xsns03(unsigned char) + *fill* 0x40221baf 0x1 .text._Z12LightPowerOnv - 0x40227298 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40221bb0 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f (size before relaxing) - 0x40227298 LightPowerOn() - *fill* 0x402272c7 0x1 + 0x40221bb0 LightPowerOn() + *fill* 0x40221bdf 0x1 .text._Z17LightPreparePowerv - 0x402272c8 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b (size before relaxing) - 0x402272c8 LightPreparePower() - *fill* 0x40227317 0x1 + 0x40221be0 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5d (size before relaxing) + 0x40221be0 LightPreparePower() + *fill* 0x40221c29 0x3 .text._Z11LightSetHsbffftb - 0x40227318 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40221c2c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x118 (size before relaxing) - 0x40227324 LightSetHsb(float, float, float, unsigned short, bool) + 0x40221c38 LightSetHsb(float, float, float, unsigned short, bool) .text._Z12LightCommandv - 0x402273d0 0xa8c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc98 (size before relaxing) - 0x402273f4 LightCommand() + 0x40221ce4 0x8be .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xa9a (size before relaxing) + 0x40221d08 LightCommand() + *fill* 0x402225a2 0x2 .text._Z16TimerEverySecondv - 0x40227e5c 0x159 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402225a4 0x159 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1a5 (size before relaxing) - 0x40227e68 TimerEverySecond() - *fill* 0x40227fb5 0x3 + 0x402225b0 TimerEverySecond() + *fill* 0x402226fd 0x3 .text._Z6Xdrv09h - 0x40227fb8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40222700 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xbd (size before relaxing) - 0x40227fc4 Xdrv09(unsigned char) - *fill* 0x40228045 0x3 + 0x4022270c Xdrv09(unsigned char) + *fill* 0x4022278d 0x3 .text._Z15HandleUpnpEventv - 0x40228048 0x173 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40222790 0x173 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x26b (size before relaxing) - 0x40228068 HandleUpnpEvent() - *fill* 0x402281bb 0x1 + 0x402227b0 HandleUpnpEvent() + *fill* 0x40222903 0x1 .text._Z9HueLightsP6String - 0x402281bc 0x85a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40222904 0x85a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd26 (size before relaxing) - 0x40228200 HueLights(String*) - *fill* 0x40228a16 0x2 + 0x40222948 HueLights(String*) + *fill* 0x4022315e 0x2 .text._Z13MqttConnectedv - 0x40228a18 0x296 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40223160 0x296 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3b2 (size before relaxing) - 0x40228a64 MqttConnected() - *fill* 0x40228cae 0x2 - .text._Z17HAssDiscoverRelayv - 0x40228cb0 0x299 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x355 (size before relaxing) - 0x40228ce8 HAssDiscoverRelay() - *fill* 0x40228f49 0x3 - .text._Z18HAssDiscoverButtonv - 0x40228f4c 0x17a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1e2 (size before relaxing) - 0x40228f64 HAssDiscoverButton() - *fill* 0x402290c6 0x2 - .text._Z13HAssDiscoveryh - 0x402290c8 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x48 (size before relaxing) - 0x402290c8 HAssDiscovery(unsigned char) - *fill* 0x402290fd 0x3 - .text._Z6Xdrv12h - 0x40229100 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d (size before relaxing) - 0x40229100 Xdrv12(unsigned char) - *fill* 0x40229121 0x3 - .text._Z7SendKeyhhh - 0x40229124 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d8 (size before relaxing) - 0x40229130 SendKey(unsigned char, unsigned char, unsigned char) - .text._Z13SwitchHandlerh - 0x40229294 0x174 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a0 (size before relaxing) - 0x4022929c SwitchHandler(unsigned char) + 0x402231ac MqttConnected() + *fill* 0x402233f6 0x2 .text._Z11MqttCommandv - 0x40229408 0x6d0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8ac (size before relaxing) - 0x40229428 MqttCommand() + 0x402233f8 0x6ca .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x8aa (size before relaxing) + 0x40223418 MqttCommand() + *fill* 0x40223ac2 0x2 .text._Z6Xdrv02h - 0x40229ad8 0x8f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40223ac4 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xbf (size before relaxing) - 0x40229ae4 Xdrv02(unsigned char) - *fill* 0x40229b67 0x1 + 0x40223ad0 Xdrv02(unsigned char) + *fill* 0x40223b57 0x1 .text._Z15MqttDataHandlerPcPhj - 0x40229b68 0x1e29 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x22d1 (size before relaxing) - 0x40229c94 MqttDataHandler(char*, unsigned char*, unsigned int) - *fill* 0x4022b991 0x3 + 0x40223b58 0x1e25 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x22d9 (size before relaxing) + 0x40223c84 MqttDataHandler(char*, unsigned char*, unsigned int) + *fill* 0x4022597d 0x3 .text._Z14ExecuteCommandPci - 0x4022b994 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40225980 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xd4 (size before relaxing) - 0x4022b99c ExecuteCommand(char*, int) - .text._Z16Every100mSecondsv - 0x4022ba24 0x12b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x197 (size before relaxing) - 0x4022ba28 Every100mSeconds() - *fill* 0x4022bb4f 0x1 + 0x40225988 ExecuteCommand(char*, int) .text._Z13TuyaResetWifiv - 0x4022bb50 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40225a10 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x49 (size before relaxing) - 0x4022bb58 TuyaResetWifi() - *fill* 0x4022bb89 0x3 + 0x40225a18 TuyaResetWifi() + *fill* 0x40225a49 0x3 + .text._Z16Every100mSecondsv + 0x40225a4c 0x12b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x197 (size before relaxing) + 0x40225a50 Every100mSeconds() + *fill* 0x40225b77 0x1 .text._Z13ButtonHandlerv - 0x4022bb8c 0x435 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50d (size before relaxing) - 0x4022bbc8 ButtonHandler() - *fill* 0x4022bfc1 0x3 + 0x40225b78 0x437 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x50b (size before relaxing) + 0x40225bb4 ButtonHandler() + *fill* 0x40225faf 0x1 .text._Z16MqttDisconnectedi - 0x4022bfc4 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40225fb0 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x79 (size before relaxing) - 0x4022bfc8 MqttDisconnected(int) - *fill* 0x4022c019 0x3 + 0x40225fb4 MqttDisconnected(int) + *fill* 0x40226005 0x3 .text._Z16MqttSaveSettingsv - 0x4022c01c 0x20a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30a (size before relaxing) - 0x4022c03c MqttSaveSettings() - *fill* 0x4022c226 0x2 - .text._Z15AriluxRfHandlerv - 0x4022c228 0x165 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18d (size before relaxing) - 0x4022c254 AriluxRfHandler() - *fill* 0x4022c38d 0x3 - .text._Z14IrReceiveCheckv - 0x4022c390 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x160 (size before relaxing) - 0x4022c3ac IrReceiveCheck() - *fill* 0x4022c495 0x3 - .text._Z13IrSendCommandv - 0x4022c498 0x276 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31e (size before relaxing) - 0x4022c4c4 IrSendCommand() - *fill* 0x4022c70e 0x2 - .text._Z6Xdrv05h - 0x4022c710 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8d (size before relaxing) - 0x4022c710 Xdrv05(unsigned char) - *fill* 0x4022c779 0x3 - .text._Z16DomoticzMqttDatav - 0x4022c77c 0x3da .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4da (size before relaxing) - 0x4022c7cc DomoticzMqttData() - *fill* 0x4022cb56 0x2 - .text._Z6Xdrv07h - 0x4022cb58 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdd (size before relaxing) - 0x4022cb68 Xdrv07(unsigned char) - *fill* 0x4022cbf9 0x3 - .text._Z20DomoticzSaveSettingsv - 0x4022cbfc 0x1da .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25e (size before relaxing) - 0x4022cc18 DomoticzSaveSettings() - *fill* 0x4022cdd6 0x2 + 0x40226008 0x20a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x30e (size before relaxing) + 0x40226028 MqttSaveSettings() + *fill* 0x40226212 0x2 .text._Z17TimerSaveSettingsv - 0x4022cdd8 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226214 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x146 (size before relaxing) - 0x4022cde8 TimerSaveSettings() - *fill* 0x4022ced2 0x2 + 0x40226224 TimerSaveSettings() + *fill* 0x4022630e 0x2 .text._Z14RuleSetProcesshR6String - 0x4022ced4 0x38d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226310 0x38d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5f5 (size before relaxing) - 0x4022cf0c RuleSetProcess(unsigned char, String&) - *fill* 0x4022d261 0x3 + 0x40226348 RuleSetProcess(unsigned char, String&) + *fill* 0x4022669d 0x3 .text._Z17RulesProcessEventPc - 0x4022d264 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402266a0 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x91 (size before relaxing) - 0x4022d268 RulesProcessEvent(char*) - *fill* 0x4022d2d1 0x3 + 0x402266a4 RulesProcessEvent(char*) + *fill* 0x4022670d 0x3 .text._Z12RulesProcessv - 0x4022d2d4 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226710 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x4022d2d4 RulesProcess() - *fill* 0x4022d2e9 0x3 + 0x40226710 RulesProcess() + *fill* 0x40226725 0x3 .text._Z15RulesEvery100msv - 0x4022d2ec 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226728 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x88 (size before relaxing) - 0x4022d2f0 RulesEvery100ms() + 0x4022672c RulesEvery100ms() .text._Z15RulesTeleperiodv - 0x4022d350 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022678c 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2b (size before relaxing) - 0x4022d350 RulesTeleperiod() - *fill* 0x4022d373 0x1 + 0x4022678c RulesTeleperiod() + *fill* 0x402267af 0x1 .text._Z18PerformEverySecondv - 0x4022d374 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402267b0 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x249 (size before relaxing) - 0x4022d390 PerformEverySecond() - *fill* 0x4022d505 0x3 + 0x402267cc PerformEverySecond() + *fill* 0x40226941 0x3 .text._Z14RulesEvery50msv - 0x4022d508 0x2b4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x344 (size before relaxing) - 0x4022d548 RulesEvery50ms() + 0x40226944 0x2b7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x34b (size before relaxing) + 0x40226984 RulesEvery50ms() + *fill* 0x40226bfb 0x1 .text._Z16RulesEverySecondv - 0x4022d7bc 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226bfc 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdf (size before relaxing) - 0x4022d7c8 RulesEverySecond() - *fill* 0x4022d863 0x1 + 0x40226c08 RulesEverySecond() + *fill* 0x40226ca3 0x1 .text._Z6Xdrv10h - 0x4022d864 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226ca4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8d (size before relaxing) - 0x4022d868 Xdrv10(unsigned char) - *fill* 0x4022d8c5 0x3 + 0x40226ca8 Xdrv10(unsigned char) + *fill* 0x40226d05 0x3 .text._Z12TuyaSetPowerv - 0x4022d8c8 0xed .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40226d08 0xed .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x10d (size before relaxing) - 0x4022d8d0 TuyaSetPower() - *fill* 0x4022d9b5 0x3 + 0x40226d10 TuyaSetPower() + *fill* 0x40226df5 0x3 .text._Z15LightSerialDutyh - 0x4022d9b8 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x160 (size before relaxing) - 0x4022d9c4 LightSerialDuty(unsigned char) + 0x40226df8 0x133 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x15f (size before relaxing) + 0x40226e04 LightSerialDuty(unsigned char) + *fill* 0x40226f2b 0x1 .text._Z12LightAnimatev - 0x4022daec 0x344 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3d7 (size before relaxing) - 0x4022db04 LightAnimate() - *fill* 0x4022de30 0x0 + 0x40226f2c 0x30c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x38f (size before relaxing) + 0x40226f48 LightAnimate() + *fill* 0x40227238 0x0 .text._Z13LightSetPowerv - 0x4022de30 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227238 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x61 (size before relaxing) - 0x4022de30 LightSetPower() - *fill* 0x4022de76 0x2 + 0x40227238 LightSetPower() + *fill* 0x4022727e 0x2 .text._Z6Xdrv04h - 0x4022de78 0x7b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa7 (size before relaxing) - 0x4022de78 Xdrv04(unsigned char) - *fill* 0x4022def3 0x1 + 0x40227280 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x7b (size before relaxing) + 0x40227280 Xdrv04(unsigned char) + *fill* 0x402272db 0x1 .text._Z17TuyaPacketProcessv - 0x4022def4 0x21c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402272dc 0x220 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2d4 (size before relaxing) - 0x4022df2c TuyaPacketProcess() + 0x4022731c TuyaPacketProcess() .text._Z15TuyaSerialInputv - 0x4022e110 0x18e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1ca (size before relaxing) - 0x4022e12c TuyaSerialInput() - *fill* 0x4022e29e 0x2 + 0x402274fc 0x18b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x1cb (size before relaxing) + 0x40227518 TuyaSerialInput() + *fill* 0x40227687 0x1 .text._Z14TuyaSetWifiLedv - 0x4022e2a0 0xb0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227688 0xb0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdc (size before relaxing) - 0x4022e2a8 TuyaSetWifiLed() + 0x40227690 TuyaSetWifiLed() .text._Z8TuyaInitv - 0x4022e350 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227738 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x110 (size before relaxing) - 0x4022e354 TuyaInit() + 0x4022773c TuyaInit() .text._Z17TuyaButtonPressedv - 0x4022e414 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402277fc 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5f (size before relaxing) - 0x4022e418 TuyaButtonPressed() - *fill* 0x4022e453 0x1 + 0x40227800 TuyaButtonPressed() + *fill* 0x4022783b 0x1 .text._Z6Xdrv16h - 0x4022e454 0xa9 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022783c 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xdd (size before relaxing) - 0x4022e454 Xdrv16(unsigned char) - *fill* 0x4022e4fd 0x3 + 0x4022783c Xdrv16(unsigned char) + *fill* 0x402278e1 0x3 .text._Z14RfReceiveCheckv - 0x4022e500 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x14b (size before relaxing) - 0x4022e518 RfReceiveCheck() - *fill* 0x4022e5d8 0x0 + 0x402278e4 0xd5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x13d (size before relaxing) + 0x402278fc RfReceiveCheck() + *fill* 0x402279b9 0x3 .text._Z6Xdrv17h - 0x4022e5d8 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402279bc 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x79 (size before relaxing) - 0x4022e5d8 Xdrv17(unsigned char) - *fill* 0x4022e63d 0x3 + 0x402279bc Xdrv17(unsigned char) + *fill* 0x40227a21 0x3 .text._Z17PzemAcEverySecondv - 0x4022e640 0x1d7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x27f (size before relaxing) - 0x4022e648 PzemAcEverySecond() - *fill* 0x4022e817 0x1 + 0x40227a24 0x1d8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x280 (size before relaxing) + 0x40227a2c PzemAcEverySecond() .text._Z6Xnrg05h - 0x4022e818 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227bfc 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x4022e818 Xnrg05(unsigned char) + 0x40227bfc Xnrg05(unsigned char) .text._Z17PzemDcEverySecondv - 0x4022e858 0x188 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227c3c 0x188 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x214 (size before relaxing) - 0x4022e860 PzemDcEverySecond() + 0x40227c44 PzemDcEverySecond() .text._Z6Xnrg06h - 0x4022e9e0 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227dc4 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x50 (size before relaxing) - 0x4022e9e0 Xnrg06(unsigned char) + 0x40227dc4 Xnrg06(unsigned char) .text._Z17HueNotImplementedP6String - 0x4022ea20 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227e04 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x99 (size before relaxing) - 0x4022ea24 HueNotImplemented(String*) - *fill* 0x4022ea75 0x3 + 0x40227e08 HueNotImplemented(String*) + *fill* 0x40227e59 0x3 .text._Z12HandleHueApiP6String - 0x4022ea78 0x1cb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40227e5c 0x1cf .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2f3 (size before relaxing) - 0x4022ea9c HandleHueApi(String*) - *fill* 0x4022ec43 0x1 + 0x40227e80 HandleHueApi(String*) + *fill* 0x4022802b 0x1 .text._Z12SonoffScSendPKc - 0x4022ec44 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022802c 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x64 (size before relaxing) - 0x4022ec48 SonoffScSend(char const*) + 0x40228030 SonoffScSend(char const*) .text._Z12SonoffScInitv - 0x4022ec84 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022806c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x4022ec88 SonoffScInit() - *fill* 0x4022ec9d 0x3 + 0x40228070 SonoffScInit() + *fill* 0x40228085 0x3 .text._Z6Xsns04h - 0x4022eca0 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228088 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4e (size before relaxing) - 0x4022eca0 Xsns04(unsigned char) - *fill* 0x4022ecdb 0x1 + 0x40228088 Xsns04(unsigned char) + *fill* 0x402280c3 0x1 .text._Z19SonoffScSerialInputPc - 0x4022ecdc 0x118 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402280c4 0x114 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x160 (size before relaxing) - 0x4022ecf4 SonoffScSerialInput(char*) + 0x402280dc SonoffScSerialInput(char*) .text._Z11SerialInputv - 0x4022edf4 0x294 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402281d8 0x290 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x31c (size before relaxing) - 0x4022ee14 SerialInput() + 0x402281f8 SerialInput() .text._Z11Ds18x20Initv - 0x4022f088 0x149 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x181 (size before relaxing) - 0x4022f08c Ds18x20Init() - *fill* 0x4022f1d1 0x3 + 0x40228468 0x145 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x17d (size before relaxing) + 0x4022846c Ds18x20Init() + *fill* 0x402285ad 0x3 .text._Z6Xsns05h - 0x4022f1d4 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402285b0 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x67 (size before relaxing) - 0x4022f1d4 Xsns05(unsigned char) - *fill* 0x4022f227 0x1 + 0x402285b0 Xsns05(unsigned char) + *fill* 0x40228603 0x1 .text._Z7DhtReadh - 0x4022f228 0x1ba .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x232 (size before relaxing) - 0x4022f23c DhtRead(unsigned char) - *fill* 0x4022f3e2 0x2 + 0x40228604 0x1ba .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x22e (size before relaxing) + 0x40228618 DhtRead(unsigned char) + *fill* 0x402287be 0x2 .text._Z14DhtReadTempHumh - 0x4022f3e4 0x119 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x161 (size before relaxing) - 0x4022f3ec DhtReadTempHum(unsigned char) - *fill* 0x4022f4fd 0x3 + 0x402287c0 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x165 (size before relaxing) + 0x402287cc DhtReadTempHum(unsigned char) + *fill* 0x402288dd 0x3 .text._Z14DhtEverySecondv - 0x4022f500 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4e (size before relaxing) - 0x4022f500 DhtEverySecond() - *fill* 0x4022f53a 0x2 + 0x402288e0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x402288e0 DhtEverySecond() + *fill* 0x40228913 0x1 .text._Z6Xsns06h - 0x4022f53c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228914 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x63 (size before relaxing) - 0x4022f53c Xsns06(unsigned char) - *fill* 0x4022f58b 0x1 - .text._Z9HtuDetectv - 0x4022f58c 0xbe .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xf2 (size before relaxing) - 0x4022f59c HtuDetect() - *fill* 0x4022f64a 0x2 - .text._Z14HtuEverySecondv - 0x4022f64c 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x73 (size before relaxing) - 0x4022f64c HtuEverySecond() - *fill* 0x4022f697 0x1 - .text._Z6Xsns08h - 0x4022f698 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x4022f698 Xsns08(unsigned char) - *fill* 0x4022f6e7 0x1 + 0x40228914 Xsns06(unsigned char) + *fill* 0x40228963 0x1 .text._Z9BmpDetectv - 0x4022f6e8 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228964 0xdc .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x114 (size before relaxing) - 0x4022f6f4 BmpDetect() + 0x40228974 BmpDetect() .text._Z14BmpEverySecondv - 0x4022f7c0 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228a40 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x41 (size before relaxing) - 0x4022f7c0 BmpEverySecond() - *fill* 0x4022f7ea 0x2 + 0x40228a40 BmpEverySecond() + *fill* 0x40228a6a 0x2 .text._Z6Xsns09h - 0x4022f7ec 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x4022f7ec Xsns09(unsigned char) - *fill* 0x4022f83b 0x1 - .text._Z12Bh1750Detectv - 0x4022f83c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb1 (size before relaxing) - 0x4022f844 Bh1750Detect() - *fill* 0x4022f8b5 0x3 - .text._Z17Bh1750EverySecondv - 0x4022f8b8 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6c (size before relaxing) - 0x4022f8b8 Bh1750EverySecond() - *fill* 0x4022f8fd 0x3 - .text._Z6Xsns10h - 0x4022f900 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x4022f900 Xsns10(unsigned char) - *fill* 0x4022f94f 0x1 - .text._Z11Sht3xDetectv - 0x4022f950 0x8c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb8 (size before relaxing) - 0x4022f958 Sht3xDetect() - .text._Z6Xsns14h - 0x4022f9dc 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x46 (size before relaxing) - 0x4022f9dc Xsns14(unsigned char) - *fill* 0x4022fa13 0x1 - .text._Z13Senseair250msv - 0x4022fa14 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1c4 (size before relaxing) - 0x4022fa38 Senseair250ms() - .text._Z6Xsns17h - 0x4022fb84 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228a6c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x63 (size before relaxing) - 0x4022fb84 Xsns17(unsigned char) - *fill* 0x4022fbd3 0x1 + 0x40228a6c Xsns09(unsigned char) + *fill* 0x40228abb 0x1 .text._Z11Sgp30Updatev - 0x4022fbd4 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228abc 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc0 (size before relaxing) - 0x4022fbe0 Sgp30Update() + 0x40228ac8 Sgp30Update() .text._Z6Xsns21h - 0x4022fc64 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228b4c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4a (size before relaxing) - 0x4022fc64 Xsns21(unsigned char) - *fill* 0x4022fc9b 0x1 + 0x40228b4c Xsns21(unsigned char) + *fill* 0x40228b83 0x1 .text._Z12LM75ADDetectv - 0x4022fc9c 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228b84 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x9a (size before relaxing) - 0x4022fca0 LM75ADDetect() - *fill* 0x4022fd0a 0x2 + 0x40228b88 LM75ADDetect() + *fill* 0x40228bf2 0x2 .text._Z6Xsns26h - 0x4022fd0c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228bf4 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x4a (size before relaxing) - 0x4022fd0c Xsns26(unsigned char) - *fill* 0x4022fd43 0x1 - .text._Z23HandleWifiConfigurationv$part$130 - 0x4022fd44 0x535 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40228bf4 Xsns26(unsigned char) + *fill* 0x40228c2b 0x1 + .text._Z12CCS811Updatev + 0x40228c2c 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x155 (size before relaxing) + 0x40228c40 CCS811Update() + *fill* 0x40228d2d 0x3 + .text._Z6Xsns31h + 0x40228d30 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4a (size before relaxing) + 0x40228d30 Xsns31(unsigned char) + *fill* 0x40228d67 0x1 + .text._Z23HandleWifiConfigurationv$part$99 + 0x40228d68 0x535 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x7e9 (size before relaxing) - *fill* 0x40230279 0x3 + *fill* 0x4022929d 0x3 .text._Z20WemoRespondToMSearchi - 0x4023027c 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x273 (size before relaxing) - 0x402302ac WemoRespondToMSearch(int) - *fill* 0x40230417 0x1 + 0x402292a0 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x277 (size before relaxing) + 0x402292d0 WemoRespondToMSearch(int) + *fill* 0x4022943b 0x1 .text._Z19HueRespondToMSearchv - 0x40230418 0x1eb .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022943c 0x1eb .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x37b (size before relaxing) - 0x40230434 HueRespondToMSearch() - *fill* 0x40230603 0x1 - .text._Z13ShowWebSourcei$part$123 - 0x40230604 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40229458 HueRespondToMSearch() + *fill* 0x40229627 0x1 + .text._Z13ShowWebSourcei$part$92 + 0x40229628 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xac (size before relaxing) .text._Z13ShowWebSourcei - 0x4023066c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40229690 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1d (size before relaxing) - 0x4023066c ShowWebSource(int) - *fill* 0x40230685 0x3 + 0x40229690 ShowWebSource(int) + *fill* 0x402296a9 0x3 .text._Z17ExecuteWebCommandPci - 0x40230688 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402296ac 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2d (size before relaxing) - 0x40230688 ExecuteWebCommand(char*, int) - *fill* 0x402306a9 0x3 - .text._Z17HandleHttpCommandv$part$140 - 0x402306ac 0x1c6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x402296ac ExecuteWebCommand(char*, int) + *fill* 0x402296cd 0x3 + .text._Z17HandleHttpCommandv$part$109 + 0x402296d0 0x1c6 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x26e (size before relaxing) - *fill* 0x40230872 0x2 - .text._Z24HandleAjaxConsoleRefreshv$part$142 - 0x40230874 0x2aa .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x40229896 0x2 + .text._Z24HandleAjaxConsoleRefreshv$part$111 + 0x40229898 0x2aa .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x3f6 (size before relaxing) - *fill* 0x40230b1e 0x2 + *fill* 0x40229b42 0x2 + .text._Z23HandleAjaxStatusRefreshv + 0x40229b44 0x343 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x43f (size before relaxing) + 0x40229b88 HandleAjaxStatusRefresh() + *fill* 0x40229e87 0x1 .text._Z10WebRestarth - 0x40230b20 0x10c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40229e88 0x10c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1bc (size before relaxing) - 0x40230b44 WebRestart(unsigned char) - .text._Z23HandleAjaxStatusRefreshv - 0x40230c2c 0x313 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40f (size before relaxing) - 0x40230c70 HandleAjaxStatusRefresh() - *fill* 0x40230f3f 0x1 + 0x40229eac WebRestart(unsigned char) .text._Z13MqttReconnectv - 0x40230f40 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40229f94 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1f3 (size before relaxing) - 0x40230f54 MqttReconnect() - *fill* 0x40231093 0x1 + 0x40229fa8 MqttReconnect() + *fill* 0x4022a0e7 0x1 .text._Z9MqttCheckv - 0x40231094 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022a0e8 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x95 (size before relaxing) - 0x40231094 MqttCheck() - *fill* 0x40231109 0x3 + 0x4022a0e8 MqttCheck() + *fill* 0x4022a15d 0x3 .text._Z16Every250mSecondsv - 0x4023110c 0x486 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5ee (size before relaxing) - 0x40231138 Every250mSeconds() - *fill* 0x40231592 0x2 - .text.loop 0x40231594 0xd7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022a160 0x486 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x5e6 (size before relaxing) + 0x4022a190 Every250mSeconds() + *fill* 0x4022a5e6 0x2 + .text.loop 0x4022a5e8 0xd7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x18b (size before relaxing) - 0x402315a8 loop - *fill* 0x4023166b 0x1 + 0x4022a5fc loop + *fill* 0x4022a6bf 0x1 .text.startup._GLOBAL__sub_I_Settings - 0x4023166c 0xf1 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022a6c0 0xf1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1b5 (size before relaxing) - *fill* 0x4023175d 0x3 + *fill* 0x4022a7b1 0x3 .text.exit._GLOBAL__sub_D_Settings - 0x40231760 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022a7b4 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xc1 (size before relaxing) - *fill* 0x402317bd 0x3 + *fill* 0x4022a811 0x3 .text._Z13CaptivePortalv - 0x402317c0 0x107 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022a814 0x107 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1c7 (size before relaxing) - 0x402317cc CaptivePortal() - *fill* 0x402318c7 0x1 + 0x4022a820 CaptivePortal() + *fill* 0x4022a91b 0x1 .text._Z10HandleRootv - 0x402318c8 0x404 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x60c (size before relaxing) - 0x4023191c HandleRoot() + 0x4022a91c 0x404 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x608 (size before relaxing) + 0x4022a974 HandleRoot() .text._Z8HttpUserv - 0x40231ccc 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022ad20 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x34 (size before relaxing) - 0x40231ccc HttpUser() + 0x4022ad20 HttpUser() .text._Z19HandleConfigurationv - 0x40231cf8 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022ad4c 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x179 (size before relaxing) - 0x40231d08 HandleConfiguration() - *fill* 0x40231dc5 0x3 + 0x4022ad5c HandleConfiguration() + *fill* 0x4022ae19 0x3 .text._Z25HandleModuleConfigurationv - 0x40231dc8 0x3af .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x562 (size before relaxing) - 0x40231e34 HandleModuleConfiguration() - *fill* 0x40232177 0x1 + 0x4022ae1c 0x3af .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x566 (size before relaxing) + 0x4022ae88 HandleModuleConfiguration() + *fill* 0x4022b1cb 0x1 .text._Z23HandleWifiConfigurationv - 0x40232178 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x40232178 HandleWifiConfiguration() + 0x4022b1cc 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb0 (size before relaxing) + 0x4022b1cc HandleWifiConfiguration() .text._Z26HandleLoggingConfigurationv - 0x402321d8 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xaf (size before relaxing) - 0x402321d8 HandleLoggingConfiguration() - *fill* 0x40232237 0x1 + 0x4022b22c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0xb3 (size before relaxing) + 0x4022b22c HandleLoggingConfiguration() + *fill* 0x4022b28b 0x1 .text._Z24HandleOtherConfigurationv - 0x40232238 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b28c 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb4 (size before relaxing) - 0x40232238 HandleOtherConfiguration() + 0x4022b28c HandleOtherConfiguration() .text._Z25HandleBackupConfigurationv - 0x40232298 0x193 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b2ec 0x18f .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x256 (size before relaxing) - 0x402322ac HandleBackupConfiguration() - *fill* 0x4023242b 0x1 + 0x4022b300 HandleBackupConfiguration() + *fill* 0x4022b47b 0x1 .text._Z24HandleResetConfigurationv - 0x4023242c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b47c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x150 (size before relaxing) - 0x4023243c HandleResetConfiguration() + 0x4022b48c HandleResetConfiguration() .text._Z26HandleRestoreConfigurationv - 0x402324e4 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b534 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x194 (size before relaxing) - 0x402324fc HandleRestoreConfiguration() + 0x4022b54c HandleRestoreConfiguration() .text._Z17HandleInformationv - 0x402325c8 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b618 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x45 (size before relaxing) - 0x402325c8 HandleInformation() - *fill* 0x402325f1 0x3 + 0x4022b618 HandleInformation() + *fill* 0x4022b641 0x3 .text._Z21HandleUpgradeFirmwarev - 0x402325f4 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b644 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1e2 (size before relaxing) - 0x4023260c HandleUpgradeFirmware() - *fill* 0x402326fa 0x2 + 0x4022b65c HandleUpgradeFirmware() + *fill* 0x4022b74a 0x2 .text._Z26HandleUpgradeFirmwareStartv - 0x402326fc 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b74c 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1c2 (size before relaxing) - 0x40232710 HandleUpgradeFirmwareStart() - *fill* 0x40232802 0x2 + 0x4022b760 HandleUpgradeFirmwareStart() + *fill* 0x4022b852 0x2 .text._Z16HandleUploadDonev - 0x40232804 0x1fe .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022b854 0x1fe .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2e6 (size before relaxing) - 0x4023285c HandleUploadDone() - *fill* 0x40232a02 0x2 + 0x4022b8ac HandleUploadDone() + *fill* 0x4022ba52 0x2 .text._Z17HandleHttpCommandv - 0x40232a04 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022ba54 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x23 (size before relaxing) - 0x40232a04 HandleHttpCommand() - *fill* 0x40232a18 0x0 + 0x4022ba54 HandleHttpCommand() + *fill* 0x4022ba68 0x0 .text._Z13HandleConsolev - 0x40232a18 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022ba68 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1b4 (size before relaxing) - 0x40232a34 HandleConsole() + 0x4022ba84 HandleConsole() .text._Z24HandleAjaxConsoleRefreshv - 0x40232b08 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022bb58 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x45 (size before relaxing) - 0x40232b08 HandleAjaxConsoleRefresh() - *fill* 0x40232b31 0x3 + 0x4022bb58 HandleAjaxConsoleRefresh() + *fill* 0x4022bb81 0x3 .text._Z23HandleMqttConfigurationv - 0x40232b34 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x40232b34 HandleMqttConfiguration() - .text._Z27HandleDomoticzConfigurationv - 0x40232b94 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022bb84 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb4 (size before relaxing) - 0x40232b94 HandleDomoticzConfiguration() + 0x4022bb84 HandleMqttConfiguration() .text._Z24HandleTimerConfigurationv - 0x40232bf4 0x272 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022bbe4 0x272 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x456 (size before relaxing) - 0x40232c3c HandleTimerConfiguration() - *fill* 0x40232e66 0x2 + 0x4022bc2c HandleTimerConfiguration() + *fill* 0x4022be56 0x2 .text._Z14HandleNotFoundv - 0x40232e68 0x130 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022be58 0x130 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x1ec (size before relaxing) - 0x40232e7c HandleNotFound() + 0x4022be6c HandleNotFound() .text._Z7WebSendPc - 0x40232f98 0x1c8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022bf88 0x1c8 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x2e0 (size before relaxing) - 0x40232fb8 WebSend(char*) + 0x4022bfa8 WebSend(char*) .text._Z10WebCommandv - 0x40233160 0x1cd .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c150 0x1d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x269 (size before relaxing) - 0x40233170 WebCommand() - *fill* 0x4023332d 0x3 + 0x4022c164 WebCommand() + *fill* 0x4022c321 0x3 .text._Z7PollUdpv - 0x40233330 0x245 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c324 0x245 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x389 (size before relaxing) - 0x40233360 PollUdp() - *fill* 0x40233575 0x3 + 0x4022c354 PollUdp() + *fill* 0x4022c569 0x3 .text._Z6Xdrv01h - 0x40233578 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c56c 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x5f (size before relaxing) - 0x40233578 Xdrv01(unsigned char) - *fill* 0x402335bf 0x0 - *fill* 0x402335bf 0x0 - *fill* 0x402335bf 0x1 + 0x4022c56c Xdrv01(unsigned char) + *fill* 0x4022c5b3 0x0 + *fill* 0x4022c5b3 0x0 + *fill* 0x4022c5b3 0x1 .text.pwm_sort_array - 0x402335c0 0x68 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x402335c0 pwm_sort_array - *fill* 0x40233628 0x0 - *fill* 0x40233628 0x0 - *fill* 0x40233628 0x0 - *fill* 0x40233628 0x0 + 0x4022c5b4 0x68 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x4022c5b4 pwm_sort_array + *fill* 0x4022c61c 0x0 + *fill* 0x4022c61c 0x0 + *fill* 0x4022c61c 0x0 + *fill* 0x4022c61c 0x0 .text._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data - 0x40233628 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233628 std::_Function_handler::_M_invoke(std::_Any_data const&) - *fill* 0x40233639 0x3 + 0x4022c61c 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c61c std::_Function_handler::_M_invoke(std::_Any_data const&) + *fill* 0x4022c62d 0x3 .text._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation - 0x4023363c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023363c std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + 0x4022c630 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c630 std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) .text._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j - 0x40233650 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233650 std::_Function_handler::_M_invoke(std::_Any_data const&, char*, unsigned char*, unsigned int) - *fill* 0x40233667 0x1 + 0x4022c644 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c644 std::_Function_handler::_M_invoke(std::_Any_data const&, char*, unsigned char*, unsigned int) + *fill* 0x4022c65b 0x1 .text._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation - 0x40233668 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233668 std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - *fill* 0x4023367c 0x0 - *fill* 0x4023367c 0x0 - *fill* 0x4023367c 0x0 + 0x4022c65c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c65c std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) + *fill* 0x4022c670 0x0 + *fill* 0x4022c670 0x0 + *fill* 0x4022c670 0x0 .text._ZN11ArduinoJson20StaticJsonBufferBase5allocEj - 0x4023367c 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023367c ArduinoJson::StaticJsonBufferBase::alloc(unsigned int) - *fill* 0x4023369a 0x0 - *fill* 0x4023369a 0x2 + 0x4022c670 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c670 ArduinoJson::StaticJsonBufferBase::alloc(unsigned int) + *fill* 0x4022c68e 0x0 + *fill* 0x4022c68e 0x2 .text._ZN5Print5writeEPKcj - 0x4023369c 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023369c Print::write(char const*, unsigned int) - *fill* 0x402336af 0x1 + 0x4022c690 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c690 Print::write(char const*, unsigned int) + *fill* 0x4022c6a3 0x1 .text._ZN14HardwareSerial5writeEj - 0x402336b0 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402336b0 HardwareSerial::write(unsigned int) - *fill* 0x402336c7 0x1 + 0x4022c6a4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c6a4 HardwareSerial::write(unsigned int) + *fill* 0x4022c6bb 0x1 .text._ZN14HardwareSerial5writeEi - 0x402336c8 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402336c8 HardwareSerial::write(int) - *fill* 0x402336df 0x1 + 0x4022c6bc 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c6bc HardwareSerial::write(int) + *fill* 0x4022c6d3 0x1 .text._ZNSt14_Function_baseD2Ev - 0x402336e0 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402336e0 std::_Function_base::~_Function_base() - 0x402336e0 std::_Function_base::~_Function_base() - *fill* 0x402336f7 0x0 - *fill* 0x402336f7 0x0 - *fill* 0x402336f7 0x1 + 0x4022c6d4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c6d4 std::_Function_base::~_Function_base() + 0x4022c6d4 std::_Function_base::~_Function_base() + *fill* 0x4022c6eb 0x0 + *fill* 0x4022c6eb 0x0 + *fill* 0x4022c6eb 0x1 .text._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE - 0x402336f8 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402336f8 ArduinoJson::Internals::JsonBufferAllocated::operator new(unsigned int, ArduinoJson::JsonBuffer*) - *fill* 0x40233713 0x0 - *fill* 0x40233713 0x0 - *fill* 0x40233713 0x0 - *fill* 0x40233713 0x0 - *fill* 0x40233713 0x0 - *fill* 0x40233713 0x1 - .text._ZN7TwoWire5writeEi - 0x40233714 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233714 TwoWire::write(int) - *fill* 0x4023372b 0x1 + 0x4022c6ec 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c6ec ArduinoJson::Internals::JsonBufferAllocated::operator new(unsigned int, ArduinoJson::JsonBuffer*) + *fill* 0x4022c707 0x0 + *fill* 0x4022c707 0x0 + *fill* 0x4022c707 0x0 + *fill* 0x4022c707 0x0 + *fill* 0x4022c707 0x0 + *fill* 0x4022c707 0x1 .text._Z14__get_adc_modev - 0x4023372c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023372c __get_adc_mode() - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x0 - *fill* 0x40233731 0x3 - .text.memchr 0x40233734 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233734 memchr - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x0 - *fill* 0x4023374b 0x1 + 0x4022c708 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c708 __get_adc_mode() + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x0 + *fill* 0x4022c70d 0x3 + .text.memchr 0x4022c710 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c710 memchr + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x0 + *fill* 0x4022c727 0x1 .text._Z11SetShortcutPch - 0x4023374c 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023374c SetShortcut(char*, unsigned char) - *fill* 0x40233762 0x0 - *fill* 0x40233762 0x0 - *fill* 0x40233762 0x0 - *fill* 0x40233762 0x2 + 0x4022c728 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c728 SetShortcut(char*, unsigned char) + *fill* 0x4022c73e 0x0 + *fill* 0x4022c73e 0x0 + *fill* 0x4022c73e 0x0 + *fill* 0x4022c73e 0x2 .text._Z13MakeValidMqtthPc - 0x40233764 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233764 MakeValidMqtt(unsigned char, char*) - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 - *fill* 0x402337b8 0x0 + 0x4022c740 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c740 MakeValidMqtt(unsigned char, char*) + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x0 + *fill* 0x4022c793 0x1 .text._Z15GetUsedInModulehPh - 0x402337b8 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402337b8 GetUsedInModule(unsigned char, unsigned char*) - *fill* 0x4023383a 0x0 - *fill* 0x4023383a 0x2 + 0x4022c794 0xb6 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c794 GetUsedInModule(unsigned char, unsigned char*) + *fill* 0x4022c84a 0x0 + *fill* 0x4022c84a 0x2 .text._Z7GetHashPKcj - 0x4023383c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023383c GetHash(char const*, unsigned int) - *fill* 0x4023385c 0x0 + 0x4022c84c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c84c GetHash(char const*, unsigned int) + *fill* 0x4022c86c 0x0 .text._Z14TimeDifferencemm - 0x4023385c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023385c TimeDifference(unsigned long, unsigned long) - *fill* 0x40233878 0x0 - *fill* 0x40233878 0x0 - *fill* 0x40233878 0x0 - *fill* 0x40233878 0x0 - *fill* 0x40233878 0x0 + 0x4022c86c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c86c TimeDifference(unsigned long, unsigned long) + *fill* 0x4022c888 0x0 + *fill* 0x4022c888 0x0 + *fill* 0x4022c888 0x0 + *fill* 0x4022c888 0x0 + *fill* 0x4022c888 0x0 .text._Z20WifiGetRssiAsQualityi - 0x40233878 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233878 WifiGetRssiAsQuality(int) - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x0 - *fill* 0x40233892 0x2 + 0x4022c888 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c888 WifiGetRssiAsQuality(int) + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x0 + *fill* 0x4022c8a2 0x2 .text._Z12EnergyMarginhttRhS_ - 0x40233894 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233894 EnergyMargin(unsigned char, unsigned short, unsigned short, unsigned char&, unsigned char&) - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x0 - *fill* 0x402338d6 0x2 + 0x4022c8a4 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c8a4 EnergyMargin(unsigned char, unsigned short, unsigned short, unsigned char&, unsigned char&) + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x0 + *fill* 0x4022c8e6 0x2 .text._Z24rf_find_hex_record_startPhj - 0x402338d8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402338d8 rf_find_hex_record_start(unsigned char*, unsigned int) - *fill* 0x402338f5 0x3 + 0x4022c8e8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c8e8 rf_find_hex_record_start(unsigned char*, unsigned int) + *fill* 0x4022c905 0x3 .text._Z22rf_find_hex_record_endPhj - 0x402338f8 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402338f8 rf_find_hex_record_end(unsigned char*, unsigned int) - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x0 - *fill* 0x40233912 0x2 + 0x4022c908 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c908 rf_find_hex_record_end(unsigned char*, unsigned int) + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x0 + *fill* 0x4022c922 0x2 .text._Z7PzemCrcPh - 0x40233914 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233914 PzemCrc(unsigned char*) - *fill* 0x4023392c 0x0 - *fill* 0x4023392c 0x0 - *fill* 0x4023392c 0x0 - .text._Z11McpChecksumPh - 0x4023392c 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4023392c McpChecksum(unsigned char*) - *fill* 0x40233952 0x2 - .text._Z13McpExtractIntPchh - 0x40233954 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233954 McpExtractInt(char*, unsigned char, unsigned char) - *fill* 0x4023397e 0x2 - .text._Z9McpSetIntmPhhj - 0x40233980 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233980 McpSetInt(unsigned long, unsigned char*, unsigned char, unsigned int) - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x0 - *fill* 0x402339a2 0x2 + 0x4022c924 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c924 PzemCrc(unsigned char*) + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 + *fill* 0x4022c93c 0x0 .text._Z11OneWireCrc8Ph - 0x402339a4 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402339a4 OneWireCrc8(unsigned char*) - *fill* 0x402339e0 0x0 - *fill* 0x402339e0 0x0 - *fill* 0x402339e0 0x0 - *fill* 0x402339e0 0x0 - *fill* 0x402339e0 0x0 - *fill* 0x402339e0 0x0 - .text._Z20MhzCalculateChecksumPh - 0x402339e0 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402339e0 MhzCalculateChecksum(unsigned char*) - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x0 - *fill* 0x40233a02 0x2 - .text._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt - 0x40233a04 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233a04 NeoPixelBus >::GetPixelColor(unsigned short) const - *fill* 0x40233a51 0x0 - *fill* 0x40233a51 0x3 - .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor - 0x40233a54 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233a54 NeoPixelBus >::SetPixelColor(unsigned short, RgbColor) - *fill* 0x40233a8d 0x0 - *fill* 0x40233a8d 0x0 - *fill* 0x40233a8d 0x0 - *fill* 0x40233a8d 0x0 - *fill* 0x40233a8d 0x0 - *fill* 0x40233a8d 0x3 - .text._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor - 0x40233a90 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233a90 NeoPixelBus >::ClearTo(RgbColor) - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x0 - *fill* 0x40233acb 0x1 + 0x4022c93c 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c93c OneWireCrc8(unsigned char*) + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 + *fill* 0x4022c978 0x0 .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ - 0x40233acc 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233acc void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::CharPointerTraits::Reader&) - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x0 - *fill* 0x40233b3a 0x2 + 0x4022c978 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c978 void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::CharPointerTraits::Reader&) + *fill* 0x4022c9e6 0x0 + *fill* 0x4022c9e6 0x0 + *fill* 0x4022c9e6 0x0 + *fill* 0x4022c9e6 0x2 .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ - 0x40233b3c 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40233b3c void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::StdStringTraits::Reader&) - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 - *fill* 0x40233baa 0x0 + 0x4022c9e8 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x4022c9e8 void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::StdStringTraits::Reader&) + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 + *fill* 0x4022ca56 0x0 *.pioenvs/*/src/*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) *libm.a:(.literal .text .literal.* .text.*) - *fill* 0x40233baa 0x2 - .literal 0x40233bac 0xb0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + *fill* 0x4022ca56 0x2 + .literal 0x4022ca58 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) 0x17c (size before relaxing) - .literal 0x40233c5c 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - 0x3c (size before relaxing) - .literal 0x40233c60 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + .literal 0x4022caf0 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) 0x34 (size before relaxing) - .literal 0x40233c68 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + .literal 0x4022caf8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) 0x4 (size before relaxing) - .literal 0x40233c68 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .literal 0x4022caf8 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + 0x1c (size before relaxing) + .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) 0x1c (size before relaxing) - .literal 0x40233c70 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) 0x34 (size before relaxing) - .literal 0x40233c70 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) 0x24 (size before relaxing) - .literal 0x40233c70 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + .literal 0x4022cb04 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) 0x1c (size before relaxing) - .literal 0x40233c84 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + .literal 0x4022cb18 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) 0x38 (size before relaxing) - .literal 0x40233c90 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .literal 0x4022cb24 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) 0x38 (size before relaxing) - .literal 0x40233c98 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + .literal 0x4022cb2c 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) 0x1fc (size before relaxing) - .literal 0x40233cf8 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .literal 0x4022cb8c 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) 0x1c4 (size before relaxing) - .literal 0x40233d00 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + .literal 0x4022cb94 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) 0x138 (size before relaxing) - .literal 0x40233d4c 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + .literal 0x4022cbd8 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) 0x4c (size before relaxing) - .literal 0x40233d54 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + .literal 0x4022cbe0 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) 0xc8 (size before relaxing) - .literal 0x40233d94 0x1c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + .literal 0x4022cc20 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) 0x130 (size before relaxing) - .literal 0x40233db0 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + .literal 0x4022cc38 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) 0x9c (size before relaxing) - .literal 0x40233de0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + .literal 0x4022cc68 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) 0x188 (size before relaxing) - .literal 0x40233e50 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + .literal 0x4022ccd8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) 0x3c (size before relaxing) - .literal 0x40233e50 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + .literal 0x4022ccd8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) 0x4 (size before relaxing) - .literal 0x40233e50 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .literal 0x40233e54 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + .literal 0x4022ccd8 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + .literal 0x4022ccdc 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) 0x5c (size before relaxing) - .literal 0x40233e64 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + .literal 0x4022ccec 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) 0x8 (size before relaxing) - .literal 0x40233e64 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .literal 0x4022ccec 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) 0x40 (size before relaxing) - .text 0x40233e70 0x484 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) + .text 0x4022ccf0 0x484 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) 0x488 (size before relaxing) - 0x40233e70 atan - .text 0x402342f4 0x1cd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) - 0x402342f4 ceil - *fill* 0x402344c1 0x3 - .text 0x402344c4 0xfc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) + 0x4022ccf0 atan + .text 0x4022d174 0xfc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) 0x104 (size before relaxing) - 0x402344c4 cos - .text 0x402345c0 0x3e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - 0x402345c0 fabs - *fill* 0x402345fe 0x2 - .text 0x40234600 0x9d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - 0x40234600 __fpclassifyd - *fill* 0x4023469d 0x3 - .text 0x402346a0 0x101 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) + 0x4022d174 cos + .text 0x4022d270 0x3e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) + 0x4022d270 fabs + *fill* 0x4022d2ae 0x2 + .text 0x4022d2b0 0x9d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + 0x4022d2b0 __fpclassifyd + *fill* 0x4022d34d 0x3 + .text 0x4022d350 0x1ee c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) + 0x4022d350 modf + *fill* 0x4022d53e 0x2 + .text 0x4022d540 0x101 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) 0x105 (size before relaxing) - 0x402346a0 sin - *fill* 0x402347a1 0x3 - .text 0x402347a4 0x97 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) + 0x4022d540 sin + *fill* 0x4022d641 0x3 + .text 0x4022d644 0x97 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) 0x9f (size before relaxing) - 0x402347a4 tan - *fill* 0x4023483b 0x1 - .text 0x4023483c 0x89 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - 0x4023483c __fpclassifyf - *fill* 0x402348c5 0x3 - .text 0x402348c8 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) + 0x4022d644 tan + *fill* 0x4022d6db 0x1 + .text 0x4022d6dc 0x89 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) + 0x4022d6dc __fpclassifyf + *fill* 0x4022d765 0x3 + .text 0x4022d768 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) 0xce (size before relaxing) - 0x402348c8 acos - *fill* 0x40234986 0x2 - .text 0x40234988 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + 0x4022d768 acos + *fill* 0x4022d826 0x2 + .text 0x4022d828 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) 0xce (size before relaxing) - 0x40234988 asin - *fill* 0x40234a46 0x2 - .text 0x40234a48 0x5c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) + 0x4022d828 asin + *fill* 0x4022d8e6 0x2 + .text 0x4022d8e8 0x5c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) 0x5f2 (size before relaxing) - 0x40234a48 __ieee754_acos - *fill* 0x4023500e 0x2 - .text 0x40235010 0x560 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + 0x4022d8e8 __ieee754_acos + *fill* 0x4022deae 0x2 + .text 0x4022deb0 0x560 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) 0x578 (size before relaxing) - 0x40235010 __ieee754_asin - .text 0x40235570 0x626 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) + 0x4022deb0 __ieee754_asin + .text 0x4022e410 0x626 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) 0x62e (size before relaxing) - 0x40235570 __ieee754_rem_pio2 - *fill* 0x40235b96 0x2 - .text 0x40235b98 0x38e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - 0x40235b98 __ieee754_sqrt - *fill* 0x40235f26 0x2 - .text 0x40235f28 0x231 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - 0x40235f28 __kernel_cos - *fill* 0x40236159 0x3 - .text 0x4023615c 0xaff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) + 0x4022e410 __ieee754_rem_pio2 + *fill* 0x4022ea36 0x2 + .text 0x4022ea38 0x38e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) + 0x4022ea38 __ieee754_sqrt + *fill* 0x4022edc6 0x2 + .text 0x4022edc8 0x231 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) + 0x4022edc8 __kernel_cos + *fill* 0x4022eff9 0x3 + .text 0x4022effc 0xaff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) 0xb0f (size before relaxing) - 0x4023615c __kernel_rem_pio2 - *fill* 0x40236c5b 0x1 - .text 0x40236c5c 0x19b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - 0x40236c5c __kernel_sin - *fill* 0x40236df7 0x1 - .text 0x40236df8 0x526 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) + 0x4022effc __kernel_rem_pio2 + *fill* 0x4022fafb 0x1 + .text 0x4022fafc 0x19b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) + 0x4022fafc __kernel_sin + *fill* 0x4022fc97 0x1 + .text 0x4022fc98 0x526 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) 0x52a (size before relaxing) - 0x40236df8 __kernel_tan - *fill* 0x4023731e 0x2 - .text 0x40237320 0x1d1 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - 0x40237320 floor - *fill* 0x402374f1 0x3 - .text 0x402374f4 0x35 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - 0x402374f4 matherr - *fill* 0x40237529 0x3 - .text 0x4023752c 0x27 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - 0x4023752c nan - *fill* 0x40237553 0x1 - .text 0x40237554 0x19e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) + 0x4022fc98 __kernel_tan + *fill* 0x402301be 0x2 + .text 0x402301c0 0x1d1 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) + 0x402301c0 floor + *fill* 0x40230391 0x3 + .text 0x40230394 0x35 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) + 0x40230394 matherr + *fill* 0x402303c9 0x3 + .text 0x402303cc 0x27 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) + 0x402303cc nan + *fill* 0x402303f3 0x1 + .text 0x402303f4 0x19e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) 0x1a6 (size before relaxing) - 0x40237554 scalbn - *fill* 0x402376f2 0x2 - .text 0x402376f4 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - 0x402376f4 copysign - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 - *fill* 0x4023774d 0x0 + 0x402303f4 scalbn + *fill* 0x40230592 0x2 + .text 0x40230594 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) + 0x40230594 copysign + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 + *fill* 0x402305ed 0x0 *libgcc.a:_umoddi3.o(.literal .text) - *fill* 0x4023774d 0x3 - .text 0x40237750 0x366 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - 0x40237750 __umoddi3 - *fill* 0x40237ab6 0x0 + *fill* 0x402305ed 0x3 + .text 0x402305f0 0x366 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + 0x402305f0 __umoddi3 + *fill* 0x40230956 0x0 *libgcc.a:_udivdi3.o(.literal .text) *libsmartconfig.a:(.literal .text .literal.* .text.*) *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text .irom.text.*) - *fill* 0x40237ab6 0x2 - .irom0.text 0x40237ab8 0x23c .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) + *fill* 0x40230956 0x2 + .irom0.text 0x40230958 0x238 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) 0x274 (size before relaxing) - 0x40237adc umm_info - 0x40237cd8 umm_free_heap_size - .irom0.text 0x40237cf4 0xaf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + 0x40230978 umm_info + 0x40230b74 umm_free_heap_size + .irom0.text 0x40230b90 0xae9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) 0xe19 (size before relaxing) - 0x40237d1c fpm_set_type_from_upper - 0x40237d1c wifi_fpm_set_sleep_type - 0x40237dd8 wifi_fpm_get_sleep_type - 0x40237dd8 fpm_get_slp_type - 0x40237de0 fpm_rf_is_closed - 0x40237df4 fpm_is_open - 0x40237e00 fpm_allow_tx - 0x40237e30 wifi_fpm_close - 0x40237e30 fpm_close - 0x40237eac wifi_fpm_open - 0x40237eac fpm_open - 0x40237f18 fpm_attach - 0x40238124 wifi_fpm_set_wakeup_cb - 0x40238124 fpm_set_wakeup_cb - 0x402382a4 wifi_fpm_do_wakeup - 0x402382a4 fpm_do_wakeup - 0x40238774 wifi_fpm_do_sleep - 0x40238774 fpm_do_sleep - *fill* 0x402387ed 0x3 - .irom0.text 0x402387f0 0x15f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + 0x40230bb0 fpm_set_type_from_upper + 0x40230bb0 wifi_fpm_set_sleep_type + 0x40230c6c wifi_fpm_get_sleep_type + 0x40230c6c fpm_get_slp_type + 0x40230c74 fpm_rf_is_closed + 0x40230c88 fpm_is_open + 0x40230c94 fpm_allow_tx + 0x40230cc4 wifi_fpm_close + 0x40230cc4 fpm_close + 0x40230d40 wifi_fpm_open + 0x40230d40 fpm_open + 0x40230da8 fpm_attach + 0x40230fb0 wifi_fpm_set_wakeup_cb + 0x40230fb0 fpm_set_wakeup_cb + 0x40231130 wifi_fpm_do_wakeup + 0x40231130 fpm_do_wakeup + 0x40231600 wifi_fpm_do_sleep + 0x40231600 fpm_do_sleep + *fill* 0x40231679 0x3 + .irom0.text 0x4023167c 0x15f2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) 0x1992 (size before relaxing) - 0x402387fc PPWdtReset - 0x40238830 pp_soft_wdt_init - 0x40238850 pp_soft_wdt_feed - 0x40238850 system_soft_wdt_feed - 0x4023886c pp_soft_wdt_stop - 0x4023886c system_soft_wdt_stop - 0x40238898 pp_soft_wdt_restart - 0x40238898 system_soft_wdt_restart - 0x402388d0 RxNodeNum - 0x402388e8 TxNodeNum - 0x4023890c pp_disable_noise_timer - 0x4023892c pp_enable_noise_timer - 0x40238a3c pp_noise_test - 0x40238a4c reset_noise_timer - 0x40238a84 pp_disable_idle_timer - 0x40238aa8 pp_enable_idle_timer - 0x40238ad0 pp_try_enable_idle_timer - 0x40238b0c ppPeocessRxPktHdr - 0x40238e48 HdlAllBuffedEb - 0x40238ed0 ppTxPkt - 0x40239048 ppProcessWaitQ - 0x40239058 ppRegisterTxCallback - 0x40239080 ppUnregisterTxCallback - 0x402390b4 ppRecycleRxPkt - 0x40239114 ppCheckTxIdle - 0x40239394 pp_tx_idle_timeout - 0x40239558 DefFreqCalTimerCB - 0x402398e4 ppGetTxQFirstAvail_Locked - 0x402399cc pp_attach - *fill* 0x40239de6 0x2 - .irom0.text 0x40239de8 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) + 0x40231688 PPWdtReset + 0x402316bc pp_soft_wdt_init + 0x402316dc pp_soft_wdt_feed + 0x402316dc system_soft_wdt_feed + 0x402316f8 pp_soft_wdt_stop + 0x402316f8 system_soft_wdt_stop + 0x40231724 pp_soft_wdt_restart + 0x40231724 system_soft_wdt_restart + 0x4023175c RxNodeNum + 0x40231774 TxNodeNum + 0x40231798 pp_disable_noise_timer + 0x402317b8 pp_enable_noise_timer + 0x402318c8 pp_noise_test + 0x402318d8 reset_noise_timer + 0x40231910 pp_disable_idle_timer + 0x40231934 pp_enable_idle_timer + 0x4023195c pp_try_enable_idle_timer + 0x40231998 ppPeocessRxPktHdr + 0x40231cd4 HdlAllBuffedEb + 0x40231d5c ppTxPkt + 0x40231ed4 ppProcessWaitQ + 0x40231ee4 ppRegisterTxCallback + 0x40231f0c ppUnregisterTxCallback + 0x40231f40 ppRecycleRxPkt + 0x40231fa0 ppCheckTxIdle + 0x40232220 pp_tx_idle_timeout + 0x402323e4 DefFreqCalTimerCB + 0x40232770 ppGetTxQFirstAvail_Locked + 0x40232854 pp_attach + *fill* 0x40232c6e 0x2 + .irom0.text 0x40232c70 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) 0x2a2 (size before relaxing) - 0x4023a034 RC_SetBasicRate - *fill* 0x4023a07e 0x2 - .irom0.text 0x4023a080 0x5f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + 0x40232ebc RC_SetBasicRate + *fill* 0x40232f06 0x2 + .irom0.text 0x40232f08 0x5ed C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) 0x64d (size before relaxing) - 0x4023a080 phytype2mode - 0x4023a09c rc_set_rate_limit_id - 0x4023a1b8 rcUpdatePhyMode - 0x4023a384 rcAttach - 0x4023a3d0 rcGetTrc - 0x4023a3d8 trc_onDisconnect - 0x4023a3dc trc_onScanStart - 0x4023a3f0 trc_onScanDone - 0x4023a414 rc_enable_trc - 0x4023a4ec rc_get_mask - 0x4023a500 rc_disable_trc - 0x4023a554 rc_disable_trc_by_interface - 0x4023a570 rc_get_sta_trc - 0x4023a5b4 rc_get_trc - 0x4023a624 rc_get_trc_by_index - 0x4023a644 rc_only_sta_trc - *fill* 0x4023a671 0x3 - .irom0.text 0x4023a674 0xb17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + 0x40232f08 phytype2mode + 0x40232f24 rc_set_rate_limit_id + 0x40233040 rcUpdatePhyMode + 0x4023320c rcAttach + 0x40233258 rcGetTrc + 0x40233260 trc_onDisconnect + 0x40233264 trc_onScanStart + 0x40233278 trc_onScanDone + 0x40233298 rc_enable_trc + 0x40233370 rc_get_mask + 0x40233384 rc_disable_trc + 0x402333d8 rc_disable_trc_by_interface + 0x402333f4 rc_get_sta_trc + 0x40233438 rc_get_trc + 0x402334a8 rc_get_trc_by_index + 0x402334c8 rc_only_sta_trc + *fill* 0x402334f5 0x3 + .irom0.text 0x402334f8 0xb1b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) 0xc53 (size before relaxing) - 0x4023a68c wDev_Option_Init - 0x4023a780 wDev_Enable_Beacon_Tsf - 0x4023a79c wDev_Disable_Beacon_Tsf - 0x4023a7b8 wDev_Set_Beacon_Int - 0x4023a7c0 wDev_Reset_TBTT - 0x4023a7f0 wDev_Get_Next_TBTT - 0x4023aa70 wDev_Initialize - 0x4023aae0 wDevForceAck6M - 0x4023aafc wDev_SetMacAddress - 0x4023ab9c wDev_SetRxPolicy - 0x4023abf0 wDev_SetBssid - 0x4023acc8 wDev_ClearBssid - 0x4023ad00 wDev_Insert_KeyEntry - 0x4023adf4 wDev_remove_KeyEntry - 0x4023ae30 wDev_remove_KeyEntry_all_cnx - 0x4023ae80 wDev_Crypto_Conf - 0x4023af20 wDev_Crypto_Disable - 0x4023af58 wDevEnableRx - 0x4023af84 wdev_go_sniffer - 0x4023b060 wdev_set_sniffer_addr - 0x4023b0bc wdev_exit_sniffer - *fill* 0x4023b18b 0x1 - .irom0.text 0x4023b18c 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + 0x40233510 wDev_Option_Init + 0x40233604 wDev_Enable_Beacon_Tsf + 0x40233620 wDev_Disable_Beacon_Tsf + 0x4023363c wDev_Set_Beacon_Int + 0x40233644 wDev_Reset_TBTT + 0x40233674 wDev_Get_Next_TBTT + 0x402338f4 wDev_Initialize + 0x40233964 wDevForceAck6M + 0x40233980 wDev_SetMacAddress + 0x40233a20 wDev_SetRxPolicy + 0x40233a74 wDev_SetBssid + 0x40233b4c wDev_ClearBssid + 0x40233b84 wDev_Insert_KeyEntry + 0x40233c78 wDev_remove_KeyEntry + 0x40233cb4 wDev_remove_KeyEntry_all_cnx + 0x40233d04 wDev_Crypto_Conf + 0x40233da4 wDev_Crypto_Disable + 0x40233ddc wDevEnableRx + 0x40233e0c wdev_go_sniffer + 0x40233ee8 wdev_set_sniffer_addr + 0x40233f44 wdev_exit_sniffer + *fill* 0x40234013 0x1 + .irom0.text 0x40234014 0x3f5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) 0x4c1 (size before relaxing) - 0x4023b1a0 esf_buf_alloc - 0x4023b388 esf_buf_recycle - 0x4023b4c8 esf_buf_setup - *fill* 0x4023b585 0x3 - .irom0.text 0x4023b588 0x46d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + 0x40234024 esf_buf_alloc + 0x4023420c esf_buf_recycle + 0x4023434c esf_buf_setup + *fill* 0x40234409 0x3 + .irom0.text 0x4023440c 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) 0x581 (size before relaxing) - 0x4023b5a8 ic_get_addr - 0x4023b5b4 ic_set_opmode - 0x4023b5c8 ic_enable_interface - 0x4023b618 ic_interface_enabled - 0x4023b62c ic_disable_interface - 0x4023b674 ic_is_pure_sta - 0x4023b690 ic_get_ptk_alg - 0x4023b6a0 ic_get_gtk_alg - 0x4023b6b0 ic_set_ptk_alg - 0x4023b6c0 ic_set_gtk_alg - 0x4023b6d0 ic_interface_is_p2p - 0x4023b76c ic_set_vif - 0x4023b82c ic_set_sta - 0x4023b904 ic_bss_info_update - 0x4023b960 ic_set_key - 0x4023b9bc ic_remove_key - 0x4023b9d0 ic_get_rssi - *fill* 0x4023b9f5 0x3 - .irom0.text 0x4023b9f8 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + 0x4023442c ic_get_addr + 0x40234438 ic_set_opmode + 0x4023444c ic_enable_interface + 0x4023449c ic_interface_enabled + 0x402344b0 ic_disable_interface + 0x402344f8 ic_is_pure_sta + 0x40234514 ic_get_ptk_alg + 0x40234524 ic_get_gtk_alg + 0x40234534 ic_set_ptk_alg + 0x40234544 ic_set_gtk_alg + 0x40234554 ic_interface_is_p2p + 0x402345f8 ic_set_vif + 0x402346c0 ic_set_sta + 0x40234798 ic_bss_info_update + 0x402347f4 ic_set_key + 0x40234850 ic_remove_key + 0x40234864 ic_get_rssi + *fill* 0x40234889 0x3 + .irom0.text 0x4023488c 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) 0x118 (size before relaxing) - 0x4023b9fc lmacInitAc - 0x4023ba30 lmacInit - 0x4023badc lmacSetRetryLimit - .irom0.text 0x4023baf8 0x1821 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + 0x40234890 lmacInitAc + 0x402348c4 lmacInit + 0x40234970 lmacSetRetryLimit + .irom0.text 0x4023498c 0x180d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) 0x1d31 (size before relaxing) - 0x4023bb04 pm_rtc_clock_cali_proc - 0x4023bb3c pm_get_ck170_period - 0x4023bb60 pm_set_sleep_time - 0x4023bec0 pm_rf_is_closed - 0x4023beec pm_set_sleep_type_from_upper - 0x4023bfdc pm_get_sleep_type - 0x4023c160 uart_tx_flush - 0x4023c164 pm_suspend - 0x4023c378 pm_shutdown - 0x4023c440 pm_reset_idle_sleep - 0x4023c480 pm_idle_sleep - 0x4023c48c pm_open - 0x4023c554 pm_onBcnRx - 0x4023c8b8 StopLightSleepSetFunc - 0x4023c8c0 LightSleepWakedCbSetFunc - 0x4023cdb4 pm_enable_gpio_wakeup - 0x4023cdec pm_attach - 0x4023cecc pm_send_nullfunc - 0x4023d054 pm_is_waked - 0x4023d06c pm_is_open - 0x4023d084 pm_scan_lock - 0x4023d0ac pm_try_scan_unlock - 0x4023d0c4 pm_force_scan_unlock - 0x4023d13c pm_scan_unlocked - 0x4023d150 pm_allow_tx - 0x4023d16c pm_assoc_parse - 0x4023d184 pm_set_addr - 0x4023d1a4 pm_sleep_for - 0x4023d1d4 pm_post - 0x4023d2d8 pm_get_idle_wait_time - *fill* 0x4023d319 0x3 - .irom0.text 0x4023d31c 0x9a9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + 0x40234998 pm_rtc_clock_cali_proc + 0x402349d0 pm_get_ck170_period + 0x402349f4 pm_set_sleep_time + 0x40234d4c pm_rf_is_closed + 0x40234d78 pm_set_sleep_type_from_upper + 0x40234e68 pm_get_sleep_type + 0x40234fec uart_tx_flush + 0x40234ff0 pm_suspend + 0x40235200 pm_shutdown + 0x402352c8 pm_reset_idle_sleep + 0x40235308 pm_idle_sleep + 0x40235318 pm_open + 0x402353dc pm_onBcnRx + 0x40235740 StopLightSleepSetFunc + 0x40235748 LightSleepWakedCbSetFunc + 0x40235c38 pm_enable_gpio_wakeup + 0x40235c70 pm_attach + 0x40235d4c pm_send_nullfunc + 0x40235ed4 pm_is_waked + 0x40235eec pm_is_open + 0x40235f04 pm_scan_lock + 0x40235f2c pm_try_scan_unlock + 0x40235f44 pm_force_scan_unlock + 0x40235fbc pm_scan_unlocked + 0x40235fd0 pm_allow_tx + 0x40235fec pm_assoc_parse + 0x40236004 pm_set_addr + 0x40236024 pm_sleep_for + 0x40236054 pm_post + 0x40236158 pm_get_idle_wait_time + *fill* 0x40236199 0x3 + .irom0.text 0x4023619c 0x9a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) 0xc31 (size before relaxing) - 0x4023d4dc wdt_init - 0x4023d580 user_uart_wait_tx_fifo_empty - *fill* 0x4023dcc5 0x3 - .irom0.text 0x4023dcc8 0x610 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) + 0x40236358 wdt_init + 0x402363fc user_uart_wait_tx_fifo_empty + *fill* 0x40236b41 0x3 + .irom0.text 0x40236b44 0x610 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) 0x620 (size before relaxing) - 0x4023dcc8 divide - 0x4023dd04 skip_atoi - 0x4023de88 ets_vsnprintf - 0x4023e1e8 ets_vsprintf - 0x4023e20c ets_sprintf - 0x4023e234 ets_strcat - 0x4023e254 ets_strrchr - 0x4023e280 ets_strchr - 0x4023e298 bit_popcount - 0x4023e2b4 ets_snprintf - .irom0.text 0x4023e2d8 0x172 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + 0x40236b44 divide + 0x40236b80 skip_atoi + 0x40236d04 ets_vsnprintf + 0x40237064 ets_vsprintf + 0x40237088 ets_sprintf + 0x402370b0 ets_strcat + 0x402370d0 ets_strrchr + 0x402370fc ets_strchr + 0x40237114 bit_popcount + 0x40237130 ets_snprintf + .irom0.text 0x40237154 0x172 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) 0x1b2 (size before relaxing) - 0x4023e2e0 ets_timer_done - 0x4023e31c ets_timer_handler_isr - 0x4023e3e8 ets_timer_init - *fill* 0x4023e44a 0x2 - .irom0.text 0x4023e44c 0x344d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x4023715c ets_timer_done + 0x40237198 ets_timer_handler_isr + 0x40237264 ets_timer_init + *fill* 0x402372c6 0x2 + .irom0.text 0x402372c8 0x3445 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) 0x3eb1 (size before relaxing) - 0x4023e450 system_set_os_print - 0x4023e460 system_get_os_print - 0x4023e628 system_pp_recycle_rx_pkt - 0x4023e63c system_adc_read - 0x4023e654 system_get_vdd33 - 0x4023e66c system_restart_hook - 0x4023e67c system_restart_local - 0x4023e75c system_restart - 0x4023e7b8 system_restore - 0x4023e820 system_get_flash_size_map - 0x4023e840 system_get_boot_version - 0x4023e878 system_get_test_result - 0x4023e8a0 system_get_userbin_addr - 0x4023e938 system_get_boot_mode - 0x4023e968 system_restart_enhance - 0x4023ea98 system_upgrade_userbin_set - 0x4023eae4 system_upgrade_userbin_check - 0x4023eb24 system_upgrade_flag_set - 0x4023eb38 system_upgrade_flag_check - 0x4023eb5c system_upgrade_reboot - 0x4023ec84 system_deep_sleep_instant - 0x4023ee1c system_deep_sleep - 0x4023ee7c system_deep_sleep_set_option - 0x4023ee98 system_phy_temperature_alert - 0x4023eeac system_phy_set_max_tpw - 0x4023eec0 system_phy_set_tpw_via_vdd33 - 0x4023eed4 system_phy_set_rfoption - 0x4023eee8 system_phy_set_powerup_option - 0x4023eefc system_update_cpu_freq - 0x4023ef58 system_get_cpu_freq - 0x4023ef70 system_overclock - 0x4023ef9c system_restoreclock - 0x4023efcc system_timer_reinit - 0x4023efe4 system_relative_time - 0x4023f008 system_station_got_ip_set - 0x4023f130 system_print_meminfo - 0x4023f190 system_get_free_heap_size - 0x4023f1a8 system_get_chip_id - 0x4023f1cc system_rtc_clock_cali_proc - 0x4023f1e0 system_get_rtc_time - 0x4023f1f0 system_mktime - 0x4023f2c0 system_init_done_cb - 0x4023f2c8 system_get_rst_info - 0x4023f2d0 system_get_data_of_array_8 - 0x4023f2f4 system_get_data_of_array_16 - 0x4023f31c system_get_string_from_flash - 0x4023f388 wifi_softap_dhcps_start - 0x4023f3d0 wifi_softap_dhcps_stop - 0x4023f410 wifi_softap_dhcps_status - 0x4023f418 wifi_station_dhcpc_start - 0x4023f470 wifi_station_dhcpc_stop - 0x4023f4b0 wifi_station_dhcpc_event - 0x4023f524 wifi_station_dhcpc_set_maxtry - 0x4023f534 wifi_station_dhcpc_status - 0x4023f5ac wifi_get_opmode - 0x4023f5c0 wifi_get_opmode_default - 0x4023f63c wifi_get_broadcast_if - 0x4023f678 wifi_set_broadcast_if - 0x4023f7d8 wifi_set_opmode - 0x4023f7ec wifi_set_opmode_current - 0x4023f800 system_get_checksum - 0x4023f844 wifi_param_save_protect_with_check - 0x4023f900 system_param_save_with_protect - 0x4023f9a8 system_save_sys_param - 0x4023f9d4 system_param_load - 0x4023fb0c wifi_station_get_config - 0x4023fb20 wifi_station_get_config_default - 0x4023fb40 wifi_station_get_ap_info - 0x4023fbf8 wifi_station_ap_number_set - 0x4023ff84 wifi_station_set_config - 0x4023ff9c wifi_station_set_config_current - 0x4023ffb4 wifi_station_restore_config - 0x4023ffcc wifi_station_get_current_ap_id - 0x4023ffe0 wifi_station_ap_check - 0x40240028 wifi_station_ap_change - 0x40240154 wifi_station_scan - 0x402401a0 wifi_station_get_auto_connect - 0x402401b4 wifi_station_set_auto_connect - 0x40240204 wifi_station_save_pmk2cache - 0x402402b8 wifi_station_connect - 0x4024034c wifi_station_disconnect - 0x4024040c wifi_station_get_connect_status - 0x4024043c wifi_station_set_reconnect_policy - 0x40240454 wifi_station_get_reconnect_policy - 0x4024045c wifi_station_get_rssi - 0x402404ac wifi_station_set_default_hostname - 0x40240514 wifi_station_get_hostname - 0x40240544 wifi_station_set_hostname - 0x402405e4 wifi_softap_cacl_mac - 0x40240654 wifi_softap_set_default_ssid - 0x40240834 wifi_softap_get_config - 0x40240848 wifi_softap_get_config_default - 0x40240b9c wifi_softap_set_config - 0x40240bb0 wifi_softap_set_config_current - 0x40240bc4 wifi_softap_set_station_info - 0x40240c30 wifi_softap_get_station_info - 0x40240ce0 wifi_softap_free_station_info - 0x40240d28 wifi_softap_get_station_num - 0x40240d78 wifi_softap_deauth - 0x40240e28 wifi_softap_get_beacon_only_mode - 0x40240e3c wifi_softap_set_beacon_only_mode - 0x40240ea0 wifi_register_user_ie_manufacturer_recv_cb - 0x40240eb4 wifi_unregister_user_ie_manufacturer_recv_cb - 0x40240ee8 wifi_set_user_ie - 0x40240ff8 wifi_get_user_ie - 0x4024102c wifi_get_phy_mode - 0x40241034 wifi_set_phy_mode - 0x402410fc wifi_set_sleep_type - 0x40241118 wifi_get_sleep_type - 0x4024112c wifi_get_channel - 0x40241144 wifi_set_channel - 0x40241184 wifi_promiscuous_set_mac - 0x402411e0 wifi_promiscuous_enable - 0x402412c4 wifi_set_promiscuous_rx_cb - 0x402412d4 wifi_get_ip_info - 0x40241354 wifi_set_ip_info - 0x402413c8 wifi_get_macaddr - 0x40241428 wifi_set_macaddr - 0x40241544 wifi_enable_6m_rate - 0x4024154c wifi_get_user_fixed_rate - 0x4024156c wifi_set_user_fixed_rate - 0x4024158c wifi_set_user_sup_rate - 0x402415c8 wifi_set_user_rate_limit - 0x402415ec wifi_get_user_limit_rate_mask - 0x402415f4 wifi_set_user_limit_rate_mask - 0x4024160c wifi_register_send_pkt_freedom_cb - 0x40241620 wifi_unregister_send_pkt_freedom_cb - 0x4024162c wifi_send_pkt_freedom - 0x40241678 wifi_rfid_locp_recv_open - 0x4024168c wifi_rfid_locp_recv_close - 0x402416a0 wifi_register_rfid_locp_recv_cb - 0x402416b4 wifi_unregister_rfid_locp_recv_cb - 0x402416cc wifi_status_led_install - 0x40241700 wifi_status_led_uninstall - 0x40241724 wifi_set_status_led_output_level - 0x4024177c wifi_set_event_handler_cb - 0x402417c4 system_os_task - 0x40241800 system_uart_swap - 0x40241860 system_uart_de_swap - 0x40241894 system_get_sdk_version - *fill* 0x40241899 0x3 - .irom0.text 0x4024189c 0x2f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + 0x402372cc system_set_os_print + 0x402372dc system_get_os_print + 0x402374a4 system_pp_recycle_rx_pkt + 0x402374b8 system_adc_read + 0x402374d0 system_get_vdd33 + 0x402374e8 system_restart_hook + 0x402374f8 system_restart_local + 0x402375d8 system_restart + 0x40237634 system_restore + 0x4023769c system_get_flash_size_map + 0x402376bc system_get_boot_version + 0x402376f4 system_get_test_result + 0x40237718 system_get_userbin_addr + 0x402377b0 system_get_boot_mode + 0x402377e0 system_restart_enhance + 0x40237910 system_upgrade_userbin_set + 0x4023795c system_upgrade_userbin_check + 0x4023799c system_upgrade_flag_set + 0x402379b0 system_upgrade_flag_check + 0x402379d4 system_upgrade_reboot + 0x40237afc system_deep_sleep_instant + 0x40237c94 system_deep_sleep + 0x40237cf4 system_deep_sleep_set_option + 0x40237d10 system_phy_temperature_alert + 0x40237d24 system_phy_set_max_tpw + 0x40237d38 system_phy_set_tpw_via_vdd33 + 0x40237d4c system_phy_set_rfoption + 0x40237d60 system_phy_set_powerup_option + 0x40237d74 system_update_cpu_freq + 0x40237dd0 system_get_cpu_freq + 0x40237de8 system_overclock + 0x40237e14 system_restoreclock + 0x40237e44 system_timer_reinit + 0x40237e5c system_relative_time + 0x40237e7c system_station_got_ip_set + 0x40237fa4 system_print_meminfo + 0x40238004 system_get_free_heap_size + 0x4023801c system_get_chip_id + 0x40238040 system_rtc_clock_cali_proc + 0x40238054 system_get_rtc_time + 0x40238068 system_mktime + 0x40238138 system_init_done_cb + 0x40238140 system_get_rst_info + 0x40238148 system_get_data_of_array_8 + 0x4023816c system_get_data_of_array_16 + 0x40238194 system_get_string_from_flash + 0x40238200 wifi_softap_dhcps_start + 0x40238248 wifi_softap_dhcps_stop + 0x40238288 wifi_softap_dhcps_status + 0x40238290 wifi_station_dhcpc_start + 0x402382e8 wifi_station_dhcpc_stop + 0x40238328 wifi_station_dhcpc_event + 0x4023839c wifi_station_dhcpc_set_maxtry + 0x402383ac wifi_station_dhcpc_status + 0x40238424 wifi_get_opmode + 0x40238438 wifi_get_opmode_default + 0x402384b4 wifi_get_broadcast_if + 0x402384f0 wifi_set_broadcast_if + 0x40238650 wifi_set_opmode + 0x40238664 wifi_set_opmode_current + 0x40238678 system_get_checksum + 0x402386b4 wifi_param_save_protect_with_check + 0x40238770 system_param_save_with_protect + 0x40238818 system_save_sys_param + 0x40238844 system_param_load + 0x4023897c wifi_station_get_config + 0x40238990 wifi_station_get_config_default + 0x402389b0 wifi_station_get_ap_info + 0x40238a68 wifi_station_ap_number_set + 0x40238df4 wifi_station_set_config + 0x40238e0c wifi_station_set_config_current + 0x40238e24 wifi_station_restore_config + 0x40238e3c wifi_station_get_current_ap_id + 0x40238e50 wifi_station_ap_check + 0x40238e98 wifi_station_ap_change + 0x40238fc4 wifi_station_scan + 0x40239010 wifi_station_get_auto_connect + 0x40239024 wifi_station_set_auto_connect + 0x40239074 wifi_station_save_pmk2cache + 0x40239128 wifi_station_connect + 0x402391bc wifi_station_disconnect + 0x4023927c wifi_station_get_connect_status + 0x402392ac wifi_station_set_reconnect_policy + 0x402392c4 wifi_station_get_reconnect_policy + 0x402392cc wifi_station_get_rssi + 0x4023931c wifi_station_set_default_hostname + 0x40239384 wifi_station_get_hostname + 0x402393b4 wifi_station_set_hostname + 0x40239454 wifi_softap_cacl_mac + 0x402394c4 wifi_softap_set_default_ssid + 0x402396a4 wifi_softap_get_config + 0x402396b8 wifi_softap_get_config_default + 0x40239a0c wifi_softap_set_config + 0x40239a20 wifi_softap_set_config_current + 0x40239a34 wifi_softap_set_station_info + 0x40239aa0 wifi_softap_get_station_info + 0x40239b50 wifi_softap_free_station_info + 0x40239b98 wifi_softap_get_station_num + 0x40239be8 wifi_softap_deauth + 0x40239c98 wifi_softap_get_beacon_only_mode + 0x40239cac wifi_softap_set_beacon_only_mode + 0x40239d10 wifi_register_user_ie_manufacturer_recv_cb + 0x40239d24 wifi_unregister_user_ie_manufacturer_recv_cb + 0x40239d58 wifi_set_user_ie + 0x40239e68 wifi_get_user_ie + 0x40239e9c wifi_get_phy_mode + 0x40239ea4 wifi_set_phy_mode + 0x40239f6c wifi_set_sleep_type + 0x40239f88 wifi_get_sleep_type + 0x40239f9c wifi_get_channel + 0x40239fbc wifi_set_channel + 0x40239ffc wifi_promiscuous_set_mac + 0x4023a058 wifi_promiscuous_enable + 0x4023a13c wifi_set_promiscuous_rx_cb + 0x4023a14c wifi_get_ip_info + 0x4023a1cc wifi_set_ip_info + 0x4023a240 wifi_get_macaddr + 0x4023a2a0 wifi_set_macaddr + 0x4023a3bc wifi_enable_6m_rate + 0x4023a3c4 wifi_get_user_fixed_rate + 0x4023a3e4 wifi_set_user_fixed_rate + 0x4023a404 wifi_set_user_sup_rate + 0x4023a440 wifi_set_user_rate_limit + 0x4023a464 wifi_get_user_limit_rate_mask + 0x4023a46c wifi_set_user_limit_rate_mask + 0x4023a484 wifi_register_send_pkt_freedom_cb + 0x4023a498 wifi_unregister_send_pkt_freedom_cb + 0x4023a4a4 wifi_send_pkt_freedom + 0x4023a4f0 wifi_rfid_locp_recv_open + 0x4023a504 wifi_rfid_locp_recv_close + 0x4023a518 wifi_register_rfid_locp_recv_cb + 0x4023a52c wifi_unregister_rfid_locp_recv_cb + 0x4023a544 wifi_status_led_install + 0x4023a578 wifi_status_led_uninstall + 0x4023a59c wifi_set_status_led_output_level + 0x4023a5f0 wifi_set_event_handler_cb + 0x4023a638 system_os_task + 0x4023a674 system_uart_swap + 0x4023a6d4 system_uart_de_swap + 0x4023a708 system_get_sdk_version + *fill* 0x4023a70d 0x3 + .irom0.text 0x4023a710 0x2f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) 0x3b2 (size before relaxing) - 0x40241954 eagle_lwip_if_alloc - 0x40241b04 eagle_lwip_if_free - 0x40241b70 eagle_lwip_getif - *fill* 0x40241b92 0x2 - .irom0.text 0x40241b94 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + 0x4023a7c8 eagle_lwip_if_alloc + 0x4023a978 eagle_lwip_if_free + 0x4023a9e4 eagle_lwip_getif + *fill* 0x4023aa06 0x2 + .irom0.text 0x4023aa08 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) 0x302 (size before relaxing) - 0x40241b94 inc_byte_array - 0x40241be8 hex2byte - 0x40241c1c hexstr2bin - 0x40241c68 wpa_get_ntp_timestamp - 0x40241d00 wpa_config_parse_string - 0x40241e04 dup_binstr - *fill* 0x40241e4a 0x2 - .irom0.text 0x40241e4c 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + 0x4023aa08 inc_byte_array + 0x4023aa5c hex2byte + 0x4023aa90 hexstr2bin + 0x4023aadc wpa_get_ntp_timestamp + 0x4023ab74 wpa_config_parse_string + 0x4023ac78 dup_binstr + *fill* 0x4023acbe 0x2 + .irom0.text 0x4023acc0 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) 0xdc (size before relaxing) - 0x40241e50 ets_strdup - 0x40241e94 os_get_time - 0x40241e98 r_rand - 0x40241eac os_random - 0x40241ebc os_get_random - .irom0.text 0x40241f18 0xd3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + 0x4023acc4 ets_strdup + 0x4023ad08 os_get_time + 0x4023ad0c r_rand + 0x4023ad20 os_random + 0x4023ad30 os_get_random + .irom0.text 0x4023ad8c 0xd3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) 0xee8 (size before relaxing) - 0x40242118 node_insert_to_list - 0x40242154 node_remove_from_list - 0x4024218c dhcps_start - 0x40242314 dhcps_stop - 0x40242380 wifi_softap_set_dhcps_lease - 0x4024246c wifi_softap_get_dhcps_lease - 0x402424b4 dhcps_coarse_tmr - 0x40242574 wifi_softap_set_dhcps_offer_option - 0x402425b4 wifi_softap_set_dhcps_lease_time - 0x402425e4 wifi_softap_reset_dhcps_lease_time - 0x40242610 wifi_softap_get_dhcps_lease_time - 0x40242618 wifi_softap_dhcps_client_leave - 0x402426d4 wifi_softap_dhcps_client_update - .irom0.text 0x40242c54 0xbd5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) + 0x4023af8c node_insert_to_list + 0x4023afc8 node_remove_from_list + 0x4023b000 dhcps_start + 0x4023b188 dhcps_stop + 0x4023b1f4 wifi_softap_set_dhcps_lease + 0x4023b2e0 wifi_softap_get_dhcps_lease + 0x4023b328 dhcps_coarse_tmr + 0x4023b3e8 wifi_softap_set_dhcps_offer_option + 0x4023b428 wifi_softap_set_dhcps_lease_time + 0x4023b458 wifi_softap_reset_dhcps_lease_time + 0x4023b484 wifi_softap_get_dhcps_lease_time + 0x4023b48c wifi_softap_dhcps_client_leave + 0x4023b548 wifi_softap_dhcps_client_update + .irom0.text 0x4023bac8 0xbd5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) 0xcb5 (size before relaxing) - 0x40242c54 espconn_copy_partial - 0x40242d08 espconn_list_creat - 0x40242d28 espconn_list_delete - 0x40242d4c espconn_pbuf_create - 0x40242d68 espconn_pbuf_delete - 0x40242d90 espconn_find_connection - 0x40242e34 espconn_connect - 0x40242f40 espconn_create - 0x40242f90 espconn_send - 0x40242f90 espconn_sent - 0x40243080 espconn_sendto - 0x402430e0 espconn_tcp_get_wnd - 0x40243100 espconn_tcp_set_wnd - 0x40243128 espconn_tcp_get_mss - 0x40243130 espconn_tcp_get_max_con - 0x40243140 espconn_tcp_set_max_con - 0x40243164 espconn_tcp_get_max_retran - 0x40243174 espconn_tcp_set_max_retran - 0x40243198 espconn_tcp_get_max_syn - 0x402431a8 espconn_tcp_set_max_syn - 0x402431c8 espconn_tcp_get_max_con_allow - 0x402431f0 espconn_tcp_set_max_con_allow - 0x40243224 espconn_tcp_set_buf_count - 0x40243254 espconn_regist_sentcb - 0x40243264 espconn_regist_write_finish - 0x4024327c espconn_regist_connectcb - 0x40243290 espconn_regist_recvcb - 0x402432a0 espconn_regist_reconcb - 0x402432b4 espconn_regist_disconcb - 0x402432cc espconn_get_connection_info - 0x40243390 espconn_accept - 0x402433dc espconn_regist_time - 0x40243444 espconn_disconnect - 0x40243494 espconn_abort - 0x402434e8 espconn_get_packet_info - 0x40243590 espconn_set_opt - 0x402435f4 espconn_clear_opt - 0x4024365c espconn_set_keepalive - 0x402436ec espconn_get_keepalive - 0x40243778 espconn_delete - 0x402437bc espconn_port - 0x402437f4 espconn_gethostbyname - 0x40243814 espconn_dns_setserver - *fill* 0x40243829 0x3 - .irom0.text 0x4024382c 0x105c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) + 0x4023bac8 espconn_copy_partial + 0x4023bb7c espconn_list_creat + 0x4023bb9c espconn_list_delete + 0x4023bbc0 espconn_pbuf_create + 0x4023bbdc espconn_pbuf_delete + 0x4023bc04 espconn_find_connection + 0x4023bca8 espconn_connect + 0x4023bdb4 espconn_create + 0x4023be04 espconn_send + 0x4023be04 espconn_sent + 0x4023bef4 espconn_sendto + 0x4023bf54 espconn_tcp_get_wnd + 0x4023bf74 espconn_tcp_set_wnd + 0x4023bf9c espconn_tcp_get_mss + 0x4023bfa4 espconn_tcp_get_max_con + 0x4023bfb4 espconn_tcp_set_max_con + 0x4023bfd8 espconn_tcp_get_max_retran + 0x4023bfe8 espconn_tcp_set_max_retran + 0x4023c00c espconn_tcp_get_max_syn + 0x4023c01c espconn_tcp_set_max_syn + 0x4023c03c espconn_tcp_get_max_con_allow + 0x4023c064 espconn_tcp_set_max_con_allow + 0x4023c098 espconn_tcp_set_buf_count + 0x4023c0c8 espconn_regist_sentcb + 0x4023c0d8 espconn_regist_write_finish + 0x4023c0f0 espconn_regist_connectcb + 0x4023c104 espconn_regist_recvcb + 0x4023c114 espconn_regist_reconcb + 0x4023c128 espconn_regist_disconcb + 0x4023c140 espconn_get_connection_info + 0x4023c204 espconn_accept + 0x4023c250 espconn_regist_time + 0x4023c2b8 espconn_disconnect + 0x4023c308 espconn_abort + 0x4023c35c espconn_get_packet_info + 0x4023c404 espconn_set_opt + 0x4023c468 espconn_clear_opt + 0x4023c4d0 espconn_set_keepalive + 0x4023c560 espconn_get_keepalive + 0x4023c5ec espconn_delete + 0x4023c630 espconn_port + 0x4023c668 espconn_gethostbyname + 0x4023c688 espconn_dns_setserver + *fill* 0x4023c69d 0x3 + .irom0.text 0x4023c6a0 0x105c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) 0x13b0 (size before relaxing) - 0x40243ecc espconn_kill_oldest_pcb - 0x40243ff8 espconn_kill_pcb - 0x40244060 espconn_find_current_pcb - 0x40244114 espconn_tcp_memp_free - 0x4024434c espconn_tcp_sent - 0x40244430 espconn_tcp_disconnect - 0x40244460 espconn_recv_hold - 0x402444a4 espconn_recv_unhold - 0x40244508 espconn_tcp_write - 0x40244630 espconn_tcp_client - 0x40244724 espconn_tcp_server - 0x402447d8 espconn_tcp_delete - 0x4024486c espconn_init - .irom0.text 0x40244888 0x55c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) + 0x4023cd40 espconn_kill_oldest_pcb + 0x4023ce6c espconn_kill_pcb + 0x4023ced4 espconn_find_current_pcb + 0x4023cf88 espconn_tcp_memp_free + 0x4023d1c0 espconn_tcp_sent + 0x4023d2a4 espconn_tcp_disconnect + 0x4023d2d4 espconn_recv_hold + 0x4023d318 espconn_recv_unhold + 0x4023d37c espconn_tcp_write + 0x4023d4a4 espconn_tcp_client + 0x4023d598 espconn_tcp_server + 0x4023d64c espconn_tcp_delete + 0x4023d6e0 espconn_init + .irom0.text 0x4023d6fc 0x55c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) 0x6d4 (size before relaxing) - 0x4024496c espconn_udp_sendto - 0x40244b58 espconn_udp_sent - 0x40244cfc espconn_udp_disconnect - 0x40244d3c espconn_udp_server - 0x40244dac espconn_igmp_leave - 0x40244dc8 espconn_igmp_join - .irom0.text 0x40244de4 0x13f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) + 0x4023d7e0 espconn_udp_sendto + 0x4023d9cc espconn_udp_sent + 0x4023db70 espconn_udp_disconnect + 0x4023dbb0 espconn_udp_server + 0x4023dc20 espconn_igmp_leave + 0x4023dc3c espconn_igmp_join + .irom0.text 0x4023dc58 0x13f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) 0x15d8 (size before relaxing) - 0x40245b9c dhcp_set_struct - 0x40245bc8 dhcp_cleanup - 0x40245bf0 dhcp_inform - 0x40245ca0 dhcp_network_changed - 0x40245cec dhcp_arp_reply - 0x40245d9c dhcp_renew - 0x40245e80 dhcp_coarse_tmr - 0x40245f0c dhcp_release - 0x40245fdc dhcp_fine_tmr - 0x402460d8 dhcp_stop - 0x40246114 dhcp_start - .irom0.text 0x402461d8 0x5cf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) + 0x4023ea14 dhcp_set_struct + 0x4023ea40 dhcp_cleanup + 0x4023ea68 dhcp_inform + 0x4023eb18 dhcp_network_changed + 0x4023eb64 dhcp_arp_reply + 0x4023ec14 dhcp_renew + 0x4023ecf8 dhcp_coarse_tmr + 0x4023ed84 dhcp_release + 0x4023ee54 dhcp_fine_tmr + 0x4023ef50 dhcp_stop + 0x4023ef8c dhcp_start + .irom0.text 0x4023f050 0x5d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) 0x67f (size before relaxing) - 0x402465e8 dns_setserver - 0x40246610 dns_init - 0x40246654 dns_getserver - 0x4024666c dns_tmr - 0x4024669c dns_gethostbyname - *fill* 0x402467a7 0x1 - .irom0.text 0x402467a8 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) + 0x4023f464 dns_setserver + 0x4023f48c dns_init + 0x4023f4d0 dns_getserver + 0x4023f4e8 dns_tmr + 0x4023f518 dns_gethostbyname + *fill* 0x4023f623 0x1 + .irom0.text 0x4023f624 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) 0x71 (size before relaxing) - 0x402467ac lwip_init - *fill* 0x402467ed 0x3 - .irom0.text 0x402467f0 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) + 0x4023f628 lwip_init + *fill* 0x4023f669 0x3 + .irom0.text 0x4023f66c 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) 0x2dc (size before relaxing) - 0x402467f0 netif_init - 0x402467f4 netif_find - 0x4024682c netif_set_ipaddr - 0x40246898 netif_set_addr - 0x402468cc netif_add - 0x40246940 netif_set_gw - 0x40246948 netif_set_netmask - 0x40246950 netif_set_default - 0x40246958 netif_set_up - 0x40246998 netif_set_down - 0x402469bc netif_remove - 0x40246a24 netif_set_link_up - 0x40246a70 netif_set_link_down - .irom0.text 0x40246a80 0x750 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) + 0x4023f66c netif_init + 0x4023f670 netif_find + 0x4023f6a8 netif_set_ipaddr + 0x4023f714 netif_set_addr + 0x4023f748 netif_add + 0x4023f7bc netif_set_gw + 0x4023f7c4 netif_set_netmask + 0x4023f7cc netif_set_default + 0x4023f7d4 netif_set_up + 0x4023f814 netif_set_down + 0x4023f838 netif_remove + 0x4023f8a0 netif_set_link_up + 0x4023f8ec netif_set_link_down + .irom0.text 0x4023f8fc 0x750 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) 0x794 (size before relaxing) - 0x40246a80 pbuf_free_ooseq_new - 0x40246adc pbuf_header - 0x40246b6c pbuf_free - 0x40246c04 pbuf_alloc - 0x40246d84 pbuf_realloc - 0x40246dd0 pbuf_clen - 0x40246de4 pbuf_ref - 0x40246df0 pbuf_cat - 0x40246e24 pbuf_chain - 0x40246e40 pbuf_dechain - 0x40246e78 pbuf_copy - 0x40246f3c pbuf_copy_partial - 0x40246fd0 pbuf_take - 0x40247044 pbuf_coalesce - 0x40247084 pbuf_get_at - 0x402470a8 pbuf_memcmp - 0x40247124 pbuf_memfind - 0x40247188 pbuf_strstr - .irom0.text 0x402471d0 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) + 0x4023f8fc pbuf_free_ooseq_new + 0x4023f958 pbuf_header + 0x4023f9e8 pbuf_free + 0x4023fa80 pbuf_alloc + 0x4023fc00 pbuf_realloc + 0x4023fc4c pbuf_clen + 0x4023fc60 pbuf_ref + 0x4023fc6c pbuf_cat + 0x4023fca0 pbuf_chain + 0x4023fcbc pbuf_dechain + 0x4023fcf4 pbuf_copy + 0x4023fdb8 pbuf_copy_partial + 0x4023fe4c pbuf_take + 0x4023fec0 pbuf_coalesce + 0x4023ff00 pbuf_get_at + 0x4023ff24 pbuf_memcmp + 0x4023ffa0 pbuf_memfind + 0x40240004 pbuf_strstr + .irom0.text 0x4024004c 0x84c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) 0x9b8 (size before relaxing) - 0x402471d4 sntp_time_inc - 0x4024731c sntp_mktm_r - 0x402475dc sntp_localtime_r - 0x402475f4 sntp_localtime - 0x40247618 sntp__tzcalc_limits - 0x4024779c sntp_asctime_r - 0x402477e0 sntp_asctime - 0x40247940 sntp_get_timezone - 0x40247948 sntp_set_timezone - 0x40247958 sntp_init - 0x40247994 sntp_stop - 0x402479d0 sntp_setserver - 0x402479ec sntp_getserver - 0x40247a04 sntp_setservername - 0x40247a14 sntp_getservername - .irom0.text 0x40247a28 0xbbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x40240050 sntp_time_inc + 0x40240190 sntp_mktm_r + 0x40240450 sntp_localtime_r + 0x40240468 sntp_localtime + 0x40240488 sntp__tzcalc_limits + 0x4024060c sntp_asctime_r + 0x40240650 sntp_asctime + 0x402407b0 sntp_get_timezone + 0x402407b8 sntp_set_timezone + 0x402407c8 sntp_init + 0x40240804 sntp_stop + 0x40240840 sntp_setserver + 0x4024085c sntp_getserver + 0x40240874 sntp_setservername + 0x40240884 sntp_getservername + .irom0.text 0x40240898 0xbbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) 0xd07 (size before relaxing) - 0x40247a30 tcp_bind - 0x40247ae0 tcp_listen_with_backlog - 0x40247bc8 tcp_update_rcv_ann_wnd - 0x40247c14 tcp_recved - 0x40247c6c tcp_seg_free - 0x40247c98 tcp_segs_free - 0x40247cb8 tcp_setprio - 0x40247cc0 tcp_seg_copy - 0x40247cfc tcp_arg - 0x40247d00 tcp_recv - 0x40247d08 tcp_sent - 0x40247d10 tcp_err - 0x40247d18 tcp_accept - 0x40247d1c tcp_poll - 0x40247d24 tcp_pcb_purge - 0x40247d80 tcp_slowtmr - 0x4024802c tcp_pcb_remove - 0x4024809c tcp_close - 0x402480c4 tcp_recv_null - 0x402480fc tcp_fasttmr - 0x40248190 tcp_tmr - 0x402481b4 tcp_shutdown - 0x4024821c tcp_abandon - 0x402482bc tcp_abort - 0x402482d4 tcp_next_iss - 0x402482f4 tcp_alloc - 0x40248440 tcp_new - 0x40248454 tcp_eff_send_mss - 0x40248488 tcp_connect - *fill* 0x402485e3 0x1 - .irom0.text 0x402485e4 0xf47 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) + 0x402408a0 tcp_bind + 0x40240950 tcp_listen_with_backlog + 0x40240a38 tcp_update_rcv_ann_wnd + 0x40240a84 tcp_recved + 0x40240adc tcp_seg_free + 0x40240b08 tcp_segs_free + 0x40240b28 tcp_setprio + 0x40240b30 tcp_seg_copy + 0x40240b6c tcp_arg + 0x40240b70 tcp_recv + 0x40240b78 tcp_sent + 0x40240b80 tcp_err + 0x40240b88 tcp_accept + 0x40240b8c tcp_poll + 0x40240b94 tcp_pcb_purge + 0x40240bf0 tcp_slowtmr + 0x40240e9c tcp_pcb_remove + 0x40240f0c tcp_close + 0x40240f34 tcp_recv_null + 0x40240f6c tcp_fasttmr + 0x40241000 tcp_tmr + 0x40241024 tcp_shutdown + 0x4024108c tcp_abandon + 0x4024112c tcp_abort + 0x40241144 tcp_next_iss + 0x40241164 tcp_alloc + 0x402412b0 tcp_new + 0x402412c4 tcp_eff_send_mss + 0x402412f8 tcp_connect + *fill* 0x40241453 0x1 + .irom0.text 0x40241454 0xf4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) 0x1057 (size before relaxing) - 0x402487dc tcp_write - 0x40248af4 tcp_enqueue_flags - 0x40248bb4 tcp_send_fin - 0x40248c00 tcp_send_empty_ack - 0x40248c9c tcp_output - 0x402490c0 tcp_rst - 0x40249204 tcp_rexmit_rto - 0x40249288 tcp_rexmit - 0x40249334 tcp_rexmit_fast - 0x40249398 tcp_keepalive - 0x4024941c tcp_zero_window_probe - *fill* 0x4024952b 0x1 - .irom0.text 0x4024952c 0x297 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) + 0x40241650 tcp_write + 0x40241968 tcp_enqueue_flags + 0x40241a28 tcp_send_fin + 0x40241a74 tcp_send_empty_ack + 0x40241b14 tcp_output + 0x40241f38 tcp_rst + 0x4024207c tcp_rexmit_rto + 0x40242100 tcp_rexmit + 0x402421ac tcp_rexmit_fast + 0x40242210 tcp_keepalive + 0x40242294 tcp_zero_window_probe + *fill* 0x402423a3 0x1 + .irom0.text 0x402423a4 0x29b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) 0x30f (size before relaxing) - 0x40249534 sys_timeout - 0x402495c4 tcp_timer_needed - 0x40249648 sys_timeouts_init - 0x402496d4 sys_untimeout - 0x4024972c sys_check_timeouts - 0x402497b4 sys_restart_timeouts - *fill* 0x402497c3 0x1 - .irom0.text 0x402497c4 0x53d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) + 0x402423ac sys_timeout + 0x4024243c tcp_timer_needed + 0x402424c4 sys_timeouts_init + 0x40242550 sys_untimeout + 0x402425a8 sys_check_timeouts + 0x40242630 sys_restart_timeouts + *fill* 0x4024263f 0x1 + .irom0.text 0x40242640 0x53d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) 0x5b9 (size before relaxing) - 0x402497d0 udp_input - 0x402499c0 udp_bind - 0x40249a4c udp_sendto_if - 0x40249b94 udp_sendto - 0x40249be8 udp_send - 0x40249c04 udp_connect - 0x40249c6c udp_disconnect - 0x40249c80 udp_recv - 0x40249c8c udp_remove - 0x40249cc8 udp_new - *fill* 0x40249d01 0x3 - .irom0.text 0x40249d04 0x907 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) + 0x4024264c udp_input + 0x4024283c udp_bind + 0x402428c8 udp_sendto_if + 0x40242a10 udp_sendto + 0x40242a64 udp_send + 0x40242a80 udp_connect + 0x40242ae8 udp_disconnect + 0x40242afc udp_recv + 0x40242b08 udp_remove + 0x40242b44 udp_new + *fill* 0x40242b7d 0x3 + .irom0.text 0x40242b80 0x907 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) 0xa07 (size before relaxing) - 0x40249f54 etharp_tmr - 0x40249fac etharp_cleanup_netif - 0x40249fe8 etharp_find_addr - 0x4024a038 etharp_request - 0x4024a180 etharp_query - 0x4024a31c etharp_output - 0x4024a414 ethernet_input - *fill* 0x4024a60b 0x1 - .irom0.text 0x4024a60c 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) + 0x40242dd0 etharp_tmr + 0x40242e28 etharp_cleanup_netif + 0x40242e64 etharp_find_addr + 0x40242eb4 etharp_request + 0x40242ffc etharp_query + 0x40243198 etharp_output + 0x40243290 ethernet_input + *fill* 0x40243487 0x1 + .irom0.text 0x40243488 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) 0x2ac (size before relaxing) - 0x4024a60c icmp_input - 0x4024a784 icmp_dest_unreach - .irom0.text 0x4024a82c 0x5be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) + 0x40243488 icmp_input + 0x40243600 icmp_dest_unreach + .irom0.text 0x402436a8 0x5be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) 0x646 (size before relaxing) - 0x4024a9c4 igmp_init - 0x4024a9d8 igmp_stop - 0x4024aa44 igmp_report_groups - 0x4024aa74 igmp_lookfor_group - 0x4024aa90 igmp_start - 0x4024aaec igmp_input - 0x4024ac0c igmp_joingroup - 0x4024acd8 igmp_leavegroup - 0x4024adb0 igmp_tmr - *fill* 0x4024adea 0x2 - .irom0.text 0x4024adec 0x5ba C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) + 0x40243840 igmp_init + 0x40243854 igmp_stop + 0x402438c0 igmp_report_groups + 0x402438f0 igmp_lookfor_group + 0x4024390c igmp_start + 0x40243968 igmp_input + 0x40243a88 igmp_joingroup + 0x40243b54 igmp_leavegroup + 0x40243c2c igmp_tmr + *fill* 0x40243c66 0x2 + .irom0.text 0x40243c68 0x5ba C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) 0x652 (size before relaxing) - 0x4024adec ip_route - 0x4024ae68 ip_router - 0x4024aecc ip_input - 0x4024b130 ip_output_if_opt - 0x4024b330 ip_output_if - 0x4024b358 ip_output - *fill* 0x4024b3a6 0x2 - .irom0.text 0x4024b3a8 0x380 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + 0x40243c68 ip_route + 0x40243ce4 ip_router + 0x40243d48 ip_input + 0x40243fac ip_output_if_opt + 0x402441ac ip_output_if + 0x402441d4 ip_output + *fill* 0x40244222 0x2 + .irom0.text 0x40244224 0x380 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) 0x3a4 (size before relaxing) - 0x4024b3a8 ip4_addr_isbroadcast - 0x4024b3e4 ip4_addr_netmask_valid - 0x4024b434 ipaddr_aton - 0x4024b61c ipaddr_addr - 0x4024b638 ipaddr_ntoa_r - 0x4024b714 ipaddr_ntoa - .irom0.text 0x4024b728 0x1f3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) + 0x40244224 ip4_addr_isbroadcast + 0x40244260 ip4_addr_netmask_valid + 0x402442b0 ipaddr_aton + 0x40244498 ipaddr_addr + 0x402444b4 ipaddr_ntoa_r + 0x40244590 ipaddr_ntoa + .irom0.text 0x402445a4 0x1f3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) 0x23f (size before relaxing) - 0x4024b72c raw_input - 0x4024b7b4 raw_bind - 0x4024b7c0 raw_connect - 0x4024b7cc raw_recv - 0x4024b7d4 raw_sendto - 0x4024b878 raw_send - 0x4024b894 raw_remove - 0x4024b8d0 raw_new - *fill* 0x4024b91b 0x1 - .irom0.text 0x4024b91c 0x1394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) + 0x402445a8 raw_input + 0x40244630 raw_bind + 0x4024463c raw_connect + 0x40244648 raw_recv + 0x40244650 raw_sendto + 0x402446f4 raw_send + 0x40244710 raw_remove + 0x4024474c raw_new + *fill* 0x40244797 0x1 + .irom0.text 0x40244798 0x1394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) 0x156c (size before relaxing) - 0x4024c330 tcp_input - .irom0.text 0x4024ccb0 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x402451ac tcp_input + .irom0.text 0x40245b2c 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) 0x545 (size before relaxing) - 0x4024cd3c ieee80211_rate_ref_init - 0x4024cd50 ieee80211_freedom_inside_cb - 0x4024cd80 ieee80211_freedom_init - 0x4024cda4 ieee80211_user_ie_init - 0x4024cdc0 ieee80211_ifattach - 0x4024ce24 ieee80211_mhz2ieee - 0x4024ce80 ieee80211_chan2ieee - 0x4024ce9c ieee80211_ieee2mhz - 0x4024cedc ieee80211_find_channel - 0x4024cf08 ieee80211_find_channel_byieee - 0x4024cf58 wifi_mode_set - *fill* 0x4024d12d 0x3 - .irom0.text 0x4024d130 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) + 0x40245bb8 ieee80211_rate_ref_init + 0x40245bcc ieee80211_freedom_inside_cb + 0x40245bfc ieee80211_freedom_init + 0x40245c20 ieee80211_user_ie_init + 0x40245c3c ieee80211_ifattach + 0x40245ca0 ieee80211_mhz2ieee + 0x40245cfc ieee80211_chan2ieee + 0x40245d18 ieee80211_ieee2mhz + 0x40245d58 ieee80211_find_channel + 0x40245d84 ieee80211_find_channel_byieee + 0x40245dd4 wifi_mode_set + *fill* 0x40245fa9 0x3 + .irom0.text 0x40245fac 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) 0xd7 (size before relaxing) - 0x4024d130 ieee80211_crypto_attach - 0x4024d134 ieee80211_crypto_available - 0x4024d138 ieee80211_crypto_setkey - 0x4024d13c ieee80211_crypto_encap - 0x4024d194 ieee80211_crypto_decap - *fill* 0x4024d1ff 0x1 - .irom0.text 0x4024d200 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) + 0x40245fac ieee80211_crypto_attach + 0x40245fb0 ieee80211_crypto_available + 0x40245fb4 ieee80211_crypto_setkey + 0x40245fb8 ieee80211_crypto_encap + 0x40246010 ieee80211_crypto_decap + *fill* 0x4024607b 0x1 + .irom0.text 0x4024607c 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) 0x50 (size before relaxing) - 0x4024d204 ieee80211_getmgtframe - .irom0.text 0x4024d24c 0x1a10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + 0x40246080 ieee80211_getmgtframe + .irom0.text 0x402460c8 0x1a10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) 0x1f77 (size before relaxing) - 0x4024d870 ieee80211_hostap_attach - 0x4024d96c hostap_handle_timer - 0x4024da04 hostap_input - 0x4024e95c wifi_softap_start - 0x4024eac4 wifi_softap_stop - *fill* 0x4024ec5c 0x0 - .irom0.text 0x4024ec5c 0xa86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + 0x402466ec ieee80211_hostap_attach + 0x402467ec hostap_handle_timer + 0x40246884 hostap_input + 0x402477d8 wifi_softap_start + 0x40247940 wifi_softap_stop + *fill* 0x40247ad8 0x0 + .irom0.text 0x40247ad8 0xa8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) 0xb4e (size before relaxing) - 0x4024ec6c ieee80211_ht_attach - 0x4024ecc0 ieee80211_ht_node_init - 0x4024ed00 ieee80211_ht_node_cleanup - 0x4024ed38 ieee80211_parse_htcap - 0x4024ee20 ieee80211_ht_updateparams - 0x4024ef34 ieee80211_setup_htrates - 0x4024f000 ieee80211_setup_basic_htrates - 0x4024f34c ieee80211_add_htcap - 0x4024f368 ieee80211_add_htcap_vendor - 0x4024f48c ieee80211_add_htinfo - 0x4024f4a8 ieee80211_add_htinfo_vendor - *fill* 0x4024f6e2 0x2 - .irom0.text 0x4024f6e4 0xa8c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + 0x40247ae8 ieee80211_ht_attach + 0x40247b3c ieee80211_ht_node_init + 0x40247b7c ieee80211_ht_node_cleanup + 0x40247bb4 ieee80211_parse_htcap + 0x40247c9c ieee80211_ht_updateparams + 0x40247db4 ieee80211_setup_htrates + 0x40247e80 ieee80211_setup_basic_htrates + 0x402481cc ieee80211_add_htcap + 0x402481e8 ieee80211_add_htcap_vendor + 0x4024830c ieee80211_add_htinfo + 0x40248328 ieee80211_add_htinfo_vendor + *fill* 0x40248562 0x2 + .irom0.text 0x40248564 0xa8c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) 0xb1c (size before relaxing) - 0x4024f6e4 ieee80211_deliver_data - 0x4024f738 ieee80211_decap - 0x4024f83c ieee80211_setup_rates - 0x4024f8ac ieee80211_alloc_challenge - 0x4024f8e8 ieee80211_parse_beacon - 0x4024febc ieee80211_parse_wpa - 0x4024ffd0 ieee80211_parse_rsn - 0x402500d0 ieee80211_parse_action - 0x4025016c ieee80211_setup_rateset - .irom0.text 0x40250170 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + 0x40248564 ieee80211_deliver_data + 0x402485b8 ieee80211_decap + 0x402486bc ieee80211_setup_rates + 0x4024872c ieee80211_alloc_challenge + 0x40248768 ieee80211_parse_beacon + 0x40248d3c ieee80211_parse_wpa + 0x40248e50 ieee80211_parse_rsn + 0x40248f50 ieee80211_parse_action + 0x40248fec ieee80211_setup_rateset + .irom0.text 0x40248ff0 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) 0x302 (size before relaxing) - 0x4025017c ieee80211_mesh_quick_init - 0x402501ec ieee80211_mesh_quick_deinit - 0x4025021c ieee80211_mesh_quick_set - 0x40250318 ieee80211_mesh_quick_get - 0x402503e4 ieee80211_mesh_quick_ie_add - *fill* 0x40250416 0x2 - .irom0.text 0x40250418 0x1c5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + 0x40248ffc ieee80211_mesh_quick_init + 0x4024906c ieee80211_mesh_quick_deinit + 0x4024909c ieee80211_mesh_quick_set + 0x40249198 ieee80211_mesh_quick_get + 0x40249264 ieee80211_mesh_quick_ie_add + *fill* 0x40249296 0x2 + .irom0.text 0x40249298 0x1c5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) 0x1fea (size before relaxing) - 0x40250420 ieee80211_output_pbuf - 0x40250690 ieee80211_send_setup - 0x402507c4 ieee80211_mgmt_output - 0x402508a8 ieee80211_tx_mgt_cb - 0x402508b0 ieee80211_send_nulldata - 0x40250d20 ieee80211_add_rates - 0x40250d70 ieee80211_add_xrates - 0x40250e40 ieee80211_send_probereq - 0x40251054 ieee80211_getcapinfo - 0x402510b0 ieee80211_send_mgmt - 0x40251650 ieee80211_alloc_proberesp - 0x4025182c ieee80211_send_proberesp - 0x40251974 ieee80211_alloc_deauth - 0x402519b4 ieee80211_send_deauth - 0x40251aec ieee80211_freedom_output - 0x40251edc ieee80211_beacon_alloc - *fill* 0x40252072 0x2 - .irom0.text 0x40252074 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + 0x402492a4 ieee80211_output_pbuf + 0x40249514 ieee80211_send_setup + 0x40249648 ieee80211_mgmt_output + 0x4024972c ieee80211_tx_mgt_cb + 0x40249730 ieee80211_send_nulldata + 0x40249ba0 ieee80211_add_rates + 0x40249bf0 ieee80211_add_xrates + 0x40249cc0 ieee80211_send_probereq + 0x40249ed4 ieee80211_getcapinfo + 0x40249f30 ieee80211_send_mgmt + 0x4024a4d0 ieee80211_alloc_proberesp + 0x4024a6ac ieee80211_send_proberesp + 0x4024a7f4 ieee80211_alloc_deauth + 0x4024a834 ieee80211_send_deauth + 0x4024a96c ieee80211_freedom_output + 0x4024ad5c ieee80211_beacon_alloc + *fill* 0x4024aef2 0x2 + .irom0.text 0x4024aef4 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) 0x108 (size before relaxing) - 0x40252074 ieee80211_phy_init - 0x402520a8 ieee80211_phy_type_get - 0x402520c4 ieee80211_setup_ratetable - .irom0.text 0x40252154 0x1b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) + 0x4024aef4 ieee80211_phy_init + 0x4024af28 ieee80211_phy_type_get + 0x4024af44 ieee80211_setup_ratetable + .irom0.text 0x4024afd4 0x1b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) 0x1f2 (size before relaxing) - 0x40252154 ieee80211_psq_init - 0x40252174 ieee80211_psq_cleanup - 0x4025217c ieee80211_set_tim - 0x402521bc ieee80211_pwrsave - 0x40252224 pwrsave_flushq - 0x402522d4 ieee80211_node_pwrsave - *fill* 0x4025230a 0x2 - .irom0.text 0x4025230c 0x101 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + 0x4024afd4 ieee80211_psq_init + 0x4024aff4 ieee80211_psq_cleanup + 0x4024affc ieee80211_set_tim + 0x4024b03c ieee80211_pwrsave + 0x4024b0a4 pwrsave_flushq + 0x4024b154 ieee80211_node_pwrsave + *fill* 0x4024b18a 0x2 + .irom0.text 0x4024b18c 0x101 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) 0x129 (size before relaxing) - 0x40252310 ieee80211_proto_attach - 0x40252338 ieee80211_set_shortslottime - 0x40252354 ieee80211_iserp_rateset - 0x40252388 ieee80211_wme_initparams - 0x4025238c ieee80211_wme_updateparams - 0x40252394 ieee80211_mlme_connect_bss - *fill* 0x4025240d 0x3 - .irom0.text 0x40252410 0xb2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) + 0x4024b190 ieee80211_proto_attach + 0x4024b1b8 ieee80211_set_shortslottime + 0x4024b1d4 ieee80211_iserp_rateset + 0x4024b208 ieee80211_wme_initparams + 0x4024b20c ieee80211_wme_updateparams + 0x4024b214 ieee80211_mlme_connect_bss + *fill* 0x4024b28d 0x3 + .irom0.text 0x4024b290 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) 0xd6 (size before relaxing) - 0x40252414 ieee80211_rfid_locp_recv_open - 0x40252450 ieee80211_rfid_locp_recv_close - 0x40252468 ieee80211_rfid_locp_recv_reset - 0x40252488 ieee80211_rfid_locp_recv - 0x402524a4 register_ieee80211_rfid_locp_recv_cb - 0x402524b8 unregister_ieee80211_rfid_locp_recv_cb - *fill* 0x402524c2 0x2 - .irom0.text 0x402524c4 0xf55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + 0x4024b290 ieee80211_rfid_locp_recv_open + 0x4024b2c8 ieee80211_rfid_locp_recv_close + 0x4024b2e0 ieee80211_rfid_locp_recv_reset + 0x4024b300 ieee80211_rfid_locp_recv + 0x4024b31c register_ieee80211_rfid_locp_recv_cb + 0x4024b330 unregister_ieee80211_rfid_locp_recv_cb + *fill* 0x4024b33a 0x2 + .irom0.text 0x4024b33c 0xf59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) 0x12a1 (size before relaxing) - 0x402524d0 ieee80211_scan_attach - 0x40252564 scan_start - 0x40252728 scan_pm_channel_op_cb - 0x402528c8 scan_cancel - 0x40252a24 scan_add_bssid - 0x40252a48 scan_remove_bssid - 0x40252a54 scan_hidden_ssid - 0x40252a5c scan_add_probe_ssid - 0x40252ab0 scan_remove_probe_ssid - 0x40252bec scan_clear_channles - 0x40252c60 scan_set_desChan - 0x40252c6c scan_get_type - 0x40252c74 cannel_scan_connect_state - 0x40252c8c scan_connect_state - 0x40252cd4 scan_check_hidden - 0x40252d00 scan_profile_check - 0x402530a8 scan_parse_beacon - *fill* 0x40253419 0x3 - .irom0.text 0x4025341c 0x1046 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + 0x4024b348 ieee80211_scan_attach + 0x4024b3dc scan_start + 0x4024b5a0 scan_pm_channel_op_cb + 0x4024b740 scan_cancel + 0x4024b89c scan_add_bssid + 0x4024b8c0 scan_remove_bssid + 0x4024b8cc scan_hidden_ssid + 0x4024b8d4 scan_add_probe_ssid + 0x4024b928 scan_remove_probe_ssid + 0x4024ba68 scan_clear_channles + 0x4024badc scan_set_desChan + 0x4024bae8 scan_get_type + 0x4024baf0 cannel_scan_connect_state + 0x4024bb08 scan_connect_state + 0x4024bb50 scan_check_hidden + 0x4024bb7c scan_profile_check + 0x4024bf24 scan_parse_beacon + *fill* 0x4024c295 0x3 + .irom0.text 0x4024c298 0x103e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) 0x12c1 (size before relaxing) - 0x40253478 sta_status_set - 0x402534e4 ieee80211_sta_new_state - 0x40253874 sta_input - 0x40253dc0 ieee80211_parse_wmeparams - 0x402543b8 wifi_station_start - 0x40254428 wifi_station_stop - *fill* 0x40254462 0x2 - .irom0.text 0x40254464 0x29e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) + 0x4024c2f4 sta_status_set + 0x4024c360 ieee80211_sta_new_state + 0x4024c6f0 sta_input + 0x4024cc3c ieee80211_parse_wmeparams + 0x4024d22c wifi_station_start + 0x4024d29c wifi_station_stop + *fill* 0x4024d2d6 0x2 + .irom0.text 0x4024d2d8 0x29e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) 0x31e (size before relaxing) - 0x40254470 chm_init - 0x402544d4 chm_acquire_lock - 0x40254518 chm_release_lock - 0x4025452c chm_start_op - 0x402545d0 chm_end_op - 0x40254618 chm_cancel_op - 0x4025464c chm_return_home_channel - 0x4025467c chm_set_current_channel - 0x402546ac chm_freq2index - 0x402546d4 chm_check_same_channel - *fill* 0x40254702 0x2 - .irom0.text 0x40254704 0x17b9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + 0x4024d2e4 chm_init + 0x4024d348 chm_acquire_lock + 0x4024d38c chm_release_lock + 0x4024d3a0 chm_start_op + 0x4024d444 chm_end_op + 0x4024d48c chm_cancel_op + 0x4024d4c0 chm_return_home_channel + 0x4024d4f0 chm_set_current_channel + 0x4024d520 chm_freq2index + 0x4024d548 chm_check_same_channel + *fill* 0x4024d576 0x2 + .irom0.text 0x4024d578 0x17b9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) 0x1d31 (size before relaxing) - 0x40254710 cnx_attach - 0x40254750 cnx_sta_connect_led_timer_cb - 0x402547a4 cnx_sta_connect_cmd - 0x40254860 cnx_sta_scan_cmd - 0x40254abc cnx_connect_timeout - 0x40254b38 cnx_auth_timeout - 0x40254b5c cnx_assoc_timeout - 0x40254b80 cnx_handshake_timeout - 0x40254bc0 cnx_start_handoff_cb - 0x40255020 cnx_bss_alloc - 0x402550c0 cnx_rc_search - 0x40255140 cnx_add_rc - 0x402551ac cnx_remove_all_rc - 0x402551f8 cnx_remove_rc - 0x402552c8 cnx_rc_update_rssi - 0x40255350 cnx_rc_update_state_metric - 0x402553bc cnx_rc_update_age - 0x402553e0 cnx_update_bss - 0x40255414 cnx_update_bss_more - 0x402555f0 cnx_sta_leave - 0x40255880 cnx_sta_associated - 0x40255988 cnx_node_alloc - 0x402559fc cnx_node_remove - 0x40255a88 cnx_node_search - 0x40255b04 cnx_node_leave - 0x40255c04 wifi_softap_staconnected_event_policy - 0x40255c2c wifi_softap_toomany_deny - 0x40255c68 cnx_node_join - *fill* 0x40255ebd 0x3 - .irom0.text 0x40255ec0 0x16f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) + 0x4024d584 cnx_attach + 0x4024d5c4 cnx_sta_connect_led_timer_cb + 0x4024d618 cnx_sta_connect_cmd + 0x4024d6d4 cnx_sta_scan_cmd + 0x4024d930 cnx_connect_timeout + 0x4024d9ac cnx_auth_timeout + 0x4024d9d0 cnx_assoc_timeout + 0x4024d9f4 cnx_handshake_timeout + 0x4024da34 cnx_start_handoff_cb + 0x4024de94 cnx_bss_alloc + 0x4024df34 cnx_rc_search + 0x4024dfb4 cnx_add_rc + 0x4024e020 cnx_remove_all_rc + 0x4024e06c cnx_remove_rc + 0x4024e13c cnx_rc_update_rssi + 0x4024e1c4 cnx_rc_update_state_metric + 0x4024e230 cnx_rc_update_age + 0x4024e254 cnx_update_bss + 0x4024e288 cnx_update_bss_more + 0x4024e464 cnx_sta_leave + 0x4024e6f4 cnx_sta_associated + 0x4024e7fc cnx_node_alloc + 0x4024e870 cnx_node_remove + 0x4024e8fc cnx_node_search + 0x4024e978 cnx_node_leave + 0x4024ea78 wifi_softap_staconnected_event_policy + 0x4024eaa0 wifi_softap_toomany_deny + 0x4024eadc cnx_node_join + *fill* 0x4024ed31 0x3 + .irom0.text 0x4024ed34 0x16f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) 0x193 (size before relaxing) - 0x40255ed0 ieee80211_send_action_register - 0x40255f04 ieee80211_send_action_unregister - 0x40255f18 ieee80211_send_action - 0x40255f84 ieee80211_recv_action_register - 0x40255fb8 ieee80211_recv_action_unregister - 0x40255fcc ieee80211_recv_action - *fill* 0x4025602f 0x1 - .irom0.text 0x40256030 0x479 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + 0x4024ed44 ieee80211_send_action_register + 0x4024ed78 ieee80211_send_action_unregister + 0x4024ed8c ieee80211_send_action + 0x4024edf8 ieee80211_recv_action_register + 0x4024ee2c ieee80211_recv_action_unregister + 0x4024ee40 ieee80211_recv_action + *fill* 0x4024eea3 0x1 + .irom0.text 0x4024eea4 0x479 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) 0x505 (size before relaxing) - 0x40256034 get_iav_key - 0x40256054 register_ieee80211_action_vendor_get_key_cb - 0x40256068 unregister_ieee80211_action_vendor_get_key_cb - 0x4025607c ieee80211_add_action_vendor_spec_esp - 0x402560c4 ieee80211_alloc_action_vendor_spec - 0x402561b0 ieee80211_send_action_vendor_spec - 0x40256344 ieee80211_recv_action_vendor_spec - 0x4025644c ieee80211_action_vendor_spec_attach - 0x4025648c register_ieee80211_action_vendor_spec_cb - 0x402564a0 unregister_ieee80211_action_vendor_spec_cb - *fill* 0x402564a9 0x3 - .irom0.text 0x402564ac 0x15d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + 0x4024eea8 get_iav_key + 0x4024eec8 register_ieee80211_action_vendor_get_key_cb + 0x4024eedc unregister_ieee80211_action_vendor_get_key_cb + 0x4024eef0 ieee80211_add_action_vendor_spec_esp + 0x4024ef38 ieee80211_alloc_action_vendor_spec + 0x4024f024 ieee80211_send_action_vendor_spec + 0x4024f1b8 ieee80211_recv_action_vendor_spec + 0x4024f2c0 ieee80211_action_vendor_spec_attach + 0x4024f300 register_ieee80211_action_vendor_spec_cb + 0x4024f314 unregister_ieee80211_action_vendor_spec_cb + *fill* 0x4024f31d 0x3 + .irom0.text 0x4024f320 0x15d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) 0x165 (size before relaxing) - *fill* 0x40256609 0x3 - .irom0.text 0x4025660c 0x23d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) + *fill* 0x4024f47d 0x3 + .irom0.text 0x4024f480 0x23d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) 0x25d (size before relaxing) - 0x40256610 ieee80211_add_ie_vendor_esp_head - 0x40256648 ieee80211_add_ie_vendor_esp_mesh_assoc - 0x402566cc ieee80211_add_ie_vendor_esp_mesh_group - 0x402566fc ieee80211_add_ie_vendor_esp_simple_pair - 0x4025674c ieee80211_add_ie_vendor_esp_freq_annon - 0x40256784 ieee80211_add_ie_vendor_esp_now - 0x402567bc ieee80211_add_ie_vendor_esp_ssid - 0x402567fc ieee80211_add_ie_vendor_esp_manufacturer - *fill* 0x40256849 0x3 - .irom0.text 0x4025684c 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + 0x4024f484 ieee80211_add_ie_vendor_esp_head + 0x4024f4bc ieee80211_add_ie_vendor_esp_mesh_assoc + 0x4024f540 ieee80211_add_ie_vendor_esp_mesh_group + 0x4024f570 ieee80211_add_ie_vendor_esp_simple_pair + 0x4024f5c0 ieee80211_add_ie_vendor_esp_freq_annon + 0x4024f5f8 ieee80211_add_ie_vendor_esp_now + 0x4024f630 ieee80211_add_ie_vendor_esp_ssid + 0x4024f670 ieee80211_add_ie_vendor_esp_manufacturer + *fill* 0x4024f6bd 0x3 + .irom0.text 0x4024f6c0 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) 0x4df (size before relaxing) - 0x40256850 rijndaelEncrypt - 0x40256c6c aes_encrypt_init - 0x40256cc0 aes_encrypt - 0x40256cd8 aes_encrypt_deinit - *fill* 0x40256d03 0x1 - .irom0.text 0x40256d04 0x304 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) + 0x4024f6c4 rijndaelEncrypt + 0x4024fae0 aes_encrypt_init + 0x4024fb34 aes_encrypt + 0x4024fb4c aes_encrypt_deinit + *fill* 0x4024fb77 0x1 + .irom0.text 0x4024fb78 0x304 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) 0x31c (size before relaxing) - 0x40256d08 rijndaelKeySetupEnc - .irom0.text 0x40257008 0xfa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) + 0x4024fb7c rijndaelKeySetupEnc + .irom0.text 0x4024fe7c 0xfa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) 0x11e (size before relaxing) - 0x4025700c rf_init - 0x40257028 bb_init - 0x40257040 phy_init - 0x40257070 RFChannelSel - 0x4025708c phy_delete_channel - 0x402570a4 phy_enable_agc - 0x402570bc phy_disable_agc - 0x402570d4 phy_initialize_bb - 0x402570ec phy_set_sense - *fill* 0x40257102 0x2 - .irom0.text 0x40257104 0x1747 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + 0x4024fe80 rf_init + 0x4024fe9c bb_init + 0x4024feb4 phy_init + 0x4024fee4 RFChannelSel + 0x4024ff00 phy_delete_channel + 0x4024ff18 phy_enable_agc + 0x4024ff30 phy_disable_agc + 0x4024ff48 phy_initialize_bb + 0x4024ff60 phy_set_sense + *fill* 0x4024ff76 0x2 + .irom0.text 0x4024ff78 0x174f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) 0x1973 (size before relaxing) - 0x40257104 ram_pbus_set_rxgain - 0x402571d4 ram_pbus_debugmode - 0x40257288 ram_pbus_xpd_tx_on - 0x402572f4 set_rf_freq_offset - 0x40257364 chip_v6_rxmax_ext_ana - 0x402574b8 ram_chip_v6_rx_init - 0x402574e8 tsen_meas - 0x40257594 readvdd33 - 0x4025775c txpwr_offset - 0x40257818 set_txcap_reg - 0x40257898 ram_ana_inf_gating_en - 0x402579f8 ram_restart_cal - 0x40257a64 wait_rfpll_cal_end - 0x40257af8 ram_rfpll_set_freq - 0x40257bfc ram_set_channel_freq - 0x40257ef8 chip_60_set_channel - 0x40258098 chip_v6_set_chan_offset - 0x402580f0 chip_v6_set_chan - 0x40258198 chip_v6_set_chan_wakeup - 0x40258218 chip_v6_rf_init - 0x4025847c low_power_set - 0x402584cc test_tout - 0x40258644 check_data_flag - 0x40258664 phy_get_check_flag - 0x40258798 phy_get_vdd33 - *fill* 0x4025884b 0x1 - .irom0.text 0x4025884c 0x3f90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + 0x4024ff78 ram_pbus_set_rxgain + 0x40250048 ram_pbus_debugmode + 0x402500fc ram_pbus_xpd_tx_on + 0x40250168 set_rf_freq_offset + 0x402501d8 chip_v6_rxmax_ext_ana + 0x4025032c ram_chip_v6_rx_init + 0x40250360 tsen_meas + 0x4025040c readvdd33 + 0x402505d4 txpwr_offset + 0x40250690 set_txcap_reg + 0x40250710 ram_ana_inf_gating_en + 0x40250870 ram_restart_cal + 0x402508dc wait_rfpll_cal_end + 0x40250974 ram_rfpll_set_freq + 0x40250a78 ram_set_channel_freq + 0x40250d74 chip_60_set_channel + 0x40250f14 chip_v6_set_chan_offset + 0x40250f6c chip_v6_set_chan + 0x40251014 chip_v6_set_chan_wakeup + 0x40251094 chip_v6_rf_init + 0x402512f8 low_power_set + 0x40251348 test_tout + 0x402514c0 check_data_flag + 0x402514e0 phy_get_check_flag + 0x40251614 phy_get_vdd33 + *fill* 0x402516c7 0x1 + .irom0.text 0x402516c8 0x3fac C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) 0x46a8 (size before relaxing) - 0x4025884c ram_tx_mac_enable - 0x40258850 ram_tx_mac_disable - 0x40258854 rtc_mem_backup - 0x40258884 rtc_mem_recovery - 0x402588b4 set_cal_rxdc - 0x40258968 set_rx_gain_cal_iq - 0x40258cc0 gen_rx_gain_table - 0x40258e18 pbus_set_rxbbgain - 0x40258e94 set_rx_gain_testchip_50 - 0x402591cc ram_get_corr_power - 0x402592bc check_data_func - 0x402592dc do_noisefloor_lsleep_v50 - 0x40259310 do_noisefloor - 0x40259380 start_dig_rx - 0x402593c4 stop_dig_rx - 0x402593f0 chip_v6_set_chanfreq - 0x4025941c tx_cap_init - 0x40259608 target_power_add_backoff - 0x40259634 tx_pwctrl_init_cal - 0x402597ac tx_atten_set_interp - 0x40259a0c check_tx_pwr_cal - 0x40259b50 tx_pwctrl_init - 0x40259c74 ram_get_noisefloor - 0x40259c90 get_noisefloor_sat - 0x40259cc0 ram_set_noise_floor - 0x40259d1c ram_start_noisefloor - 0x40259d68 read_hw_noisefloor - 0x40259d90 noise_check_loop - 0x40259ee8 noise_init - 0x4025a0e8 target_power_backoff - 0x4025a13c sdt_on_noise_start - 0x4025a1bc chip_v6_set_chan_rx_cmp - 0x4025a348 chip_v6_set_chan_misc - 0x4025a3cc phy_dig_spur_set - 0x4025a724 phy_dig_spur_prot - 0x4025a95c chip_v6_rxmax_ext_dig - 0x4025a9a8 chip_v6_rxmax_ext - 0x4025aa44 phy_bb_rx_cfg - 0x4025ae5c uart_wait_idle - 0x4025ae90 phy_pbus_soc_cfg - 0x4025af4c phy_gpio_cfg - 0x4025b290 tx_cont_en - 0x4025b338 tx_cont_dis - 0x4025b38c tx_cont_cfg - 0x4025b3ac chip_v6_initialize_bb - 0x4025b514 periodic_cal - 0x4025b5f4 bbpll_cal - 0x4025b68c periodic_cal_top - 0x4025b6ec register_chipv6_phy_init_param - 0x4025b994 change_bbpll160_sleep - 0x4025bb44 change_bbpll160 - 0x4025bb7c set_crystal_uart - 0x4025bc0c ant_switch_init - 0x4025bcbc reduce_current_init - 0x4025bda8 rtc_mem_check - 0x4025bde4 phy_afterwake_set_rfoption - 0x4025be04 deep_sleep_set_option - 0x4025be30 write_data_to_rtc - 0x4025be68 get_data_from_rtc - 0x4025bee8 register_chipv6_phy - 0x4025c390 set_dpd_bypass - 0x4025c3b8 set_rf_gain_stage10 - 0x4025c3e8 get_vdd33_offset - 0x4025c45c get_phy_target_power - 0x4025c510 set_most_pwr_reg - 0x4025c5e4 phy_set_most_tpw - 0x4025c604 phy_vdd33_set_tpw - 0x4025c61c get_adc_rand - 0x4025c64c phy_get_rand - 0x4025c664 phy_tx_pwctrl_cali - 0x4025c68c phy_check_data_table - 0x4025c6c8 phy_after_init_enrx - 0x4025c72c phy_set_rx11b_reg - 0x4025c760 phy_set_powerup_option - 0x4025c770 phy_get_txpwr_param - 0x4025c7bc phy_get_rxnf_param - 0x4025c7c8 phy_get_freq_param - .irom0.text 0x4025c7dc 0x2168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + 0x402516c8 ram_tx_mac_enable + 0x402516cc ram_tx_mac_disable + 0x402516d0 rtc_mem_backup + 0x40251700 rtc_mem_recovery + 0x40251730 set_cal_rxdc + 0x402517e4 set_rx_gain_cal_iq + 0x40251b3c gen_rx_gain_table + 0x40251c94 pbus_set_rxbbgain + 0x40251d10 set_rx_gain_testchip_50 + 0x40252048 ram_get_corr_power + 0x40252138 check_data_func + 0x40252158 do_noisefloor_lsleep_v50 + 0x4025218c do_noisefloor + 0x402521fc start_dig_rx + 0x40252240 stop_dig_rx + 0x4025226c chip_v6_set_chanfreq + 0x40252298 tx_cap_init + 0x40252484 target_power_add_backoff + 0x402524b0 tx_pwctrl_init_cal + 0x40252628 tx_atten_set_interp + 0x40252888 check_tx_pwr_cal + 0x402529d0 tx_pwctrl_init + 0x40252af4 ram_get_noisefloor + 0x40252b10 get_noisefloor_sat + 0x40252b40 ram_set_noise_floor + 0x40252b9c ram_start_noisefloor + 0x40252be8 read_hw_noisefloor + 0x40252c10 noise_check_loop + 0x40252d68 noise_init + 0x40252f68 target_power_backoff + 0x40252fbc sdt_on_noise_start + 0x4025303c chip_v6_set_chan_rx_cmp + 0x402531c8 chip_v6_set_chan_misc + 0x40253258 phy_dig_spur_set + 0x402535b0 phy_dig_spur_prot + 0x402537e8 chip_v6_rxmax_ext_dig + 0x40253834 chip_v6_rxmax_ext + 0x402538d4 phy_bb_rx_cfg + 0x40253cec uart_wait_idle + 0x40253d20 phy_pbus_soc_cfg + 0x40253ddc phy_gpio_cfg + 0x40254120 tx_cont_en + 0x402541c8 tx_cont_dis + 0x4025421c tx_cont_cfg + 0x40254240 chip_v6_initialize_bb + 0x402543ac periodic_cal + 0x4025448c bbpll_cal + 0x40254524 periodic_cal_top + 0x40254584 register_chipv6_phy_init_param + 0x4025482c change_bbpll160_sleep + 0x402549dc change_bbpll160 + 0x40254a14 set_crystal_uart + 0x40254aa4 ant_switch_init + 0x40254b54 reduce_current_init + 0x40254c40 rtc_mem_check + 0x40254c7c phy_afterwake_set_rfoption + 0x40254c9c deep_sleep_set_option + 0x40254cc8 write_data_to_rtc + 0x40254d00 get_data_from_rtc + 0x40254d80 register_chipv6_phy + 0x40255228 set_dpd_bypass + 0x40255250 set_rf_gain_stage10 + 0x40255280 get_vdd33_offset + 0x402552f4 get_phy_target_power + 0x402553a8 set_most_pwr_reg + 0x4025547c phy_set_most_tpw + 0x4025549c phy_vdd33_set_tpw + 0x402554b4 get_adc_rand + 0x402554e4 phy_get_rand + 0x402554fc phy_tx_pwctrl_cali + 0x40255524 phy_check_data_table + 0x40255560 phy_after_init_enrx + 0x402555c4 phy_set_rx11b_reg + 0x402555f8 phy_set_powerup_option + 0x40255608 phy_get_txpwr_param + 0x40255654 phy_get_rxnf_param + 0x40255660 phy_get_freq_param + .irom0.text 0x40255674 0x2168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) 0x23a4 (size before relaxing) - 0x4025c7dc txbbgain2dcoindex - 0x4025c7fc dcoindex2txbbgain - 0x4025c820 init_cal_dcoffset - 0x4025c8e4 set_rfanagain_dc_reg - 0x4025c980 set_txdc_pbus - 0x4025c9ec get_rf_gain_qdb - 0x4025ca14 correct_rf_ana_gain - 0x4025cb1c get_sar_dout - 0x4025cba8 cal_rf_ana_gain - 0x4025ccd4 meas_tone_pwr_db - 0x4025cd44 tx_pwr_backoff - 0x4025cecc get_fcc_1m2m_pwr_offset - 0x4025cf08 ram_set_txbb_atten - 0x4025cf9c txiq_get_mis_pwr - 0x4025d040 txiq_cover - 0x4025d258 ram_rfcal_txiq - 0x4025d4c4 rc_cal - 0x4025d684 get_target_power_offset - 0x4025d78c get_pwctrl_correct - 0x4025d7e4 tx_pwctrl_cal - 0x4025dae0 tx_pwctrl_bg_init - 0x4025db58 tx_pwctrl_background - 0x4025dc10 read_sar_dout - 0x4025dc74 ram_get_fm_sar_dout - 0x4025dd18 ram_cal_tos_v60 - 0x4025dee8 ram_get_bb_atten - 0x4025df18 ram_rfcal_txcap - 0x4025e0dc ram_rfcal_pwrctrl - 0x4025e304 ram_rxiq_get_mis - 0x4025e4d0 ram_rxiq_cover_mg_mp - 0x4025e674 ram_rfcal_rxiq - 0x4025e880 dpd_scale_set - 0x4025e8c8 dpd_mem_write - .irom0.text 0x4025e944 0xd8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) + 0x40255674 txbbgain2dcoindex + 0x40255694 dcoindex2txbbgain + 0x402556b8 init_cal_dcoffset + 0x4025577c set_rfanagain_dc_reg + 0x40255818 set_txdc_pbus + 0x40255884 get_rf_gain_qdb + 0x402558ac correct_rf_ana_gain + 0x402559b4 get_sar_dout + 0x40255a40 cal_rf_ana_gain + 0x40255b6c meas_tone_pwr_db + 0x40255bdc tx_pwr_backoff + 0x40255d64 get_fcc_1m2m_pwr_offset + 0x40255da0 ram_set_txbb_atten + 0x40255e34 txiq_get_mis_pwr + 0x40255ed8 txiq_cover + 0x402560f0 ram_rfcal_txiq + 0x4025635c rc_cal + 0x4025651c get_target_power_offset + 0x40256624 get_pwctrl_correct + 0x4025667c tx_pwctrl_cal + 0x40256978 tx_pwctrl_bg_init + 0x402569f0 tx_pwctrl_background + 0x40256aa8 read_sar_dout + 0x40256b0c ram_get_fm_sar_dout + 0x40256bb0 ram_cal_tos_v60 + 0x40256d80 ram_get_bb_atten + 0x40256db0 ram_rfcal_txcap + 0x40256f74 ram_rfcal_pwrctrl + 0x4025719c ram_rxiq_get_mis + 0x40257368 ram_rxiq_cover_mg_mp + 0x4025750c ram_rfcal_rxiq + 0x40257718 dpd_scale_set + 0x40257760 dpd_mem_write + .irom0.text 0x402577dc 0xd8e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) 0xfc6 (size before relaxing) - 0x4025e944 pm_usec2rtc - 0x4025e978 pm_rtc2usec - 0x4025e984 pm_set_sleep_cycles - 0x4025e9a8 pm_sleep_opt - 0x4025eaec pm_wakeup_opt - 0x4025eb24 get_chip_version - 0x4025eb64 pm_sleep_opt_bb_off - 0x4025eba4 pm_sleep_opt_bb_on - 0x4025ebec pm_set_pll_xtal_wait_time - 0x4025ec18 pm_prepare_to_sleep - 0x4025ec20 pm_sdio_nidle - 0x4025ec94 chg_lslp_mem_opt_8266 - 0x4025ecc4 pm_goto_sleep - 0x4025ee10 pm_wait4wakeup - 0x4025ee4c pm_open_rf - 0x4025ee84 pm_sleep_set_mac - 0x4025ef08 pm_set_wakeup_mac - 0x4025efa0 pm_check_mac_idle - 0x4025eff8 pm_set_sleep_btco - 0x4025f098 pm_set_wakeup_btco - 0x4025f1b0 pm_set_sleep_mode - 0x4025f2cc pm_unmask_bt - 0x4025f334 pm_wakeup_init - 0x4025f574 sleep_opt_8266 - 0x4025f594 sleep_opt_bb_on_8266 - 0x4025f5cc sleep_reset_analog_rtcreg_8266 - *fill* 0x4025f6ce 0x2 - .irom0.text 0x4025f6d0 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + 0x402577dc pm_usec2rtc + 0x40257810 pm_rtc2usec + 0x4025781c pm_set_sleep_cycles + 0x40257840 pm_sleep_opt + 0x40257984 pm_wakeup_opt + 0x402579bc get_chip_version + 0x402579fc pm_sleep_opt_bb_off + 0x40257a3c pm_sleep_opt_bb_on + 0x40257a84 pm_set_pll_xtal_wait_time + 0x40257ab0 pm_prepare_to_sleep + 0x40257ab8 pm_sdio_nidle + 0x40257b2c chg_lslp_mem_opt_8266 + 0x40257b5c pm_goto_sleep + 0x40257ca8 pm_wait4wakeup + 0x40257ce4 pm_open_rf + 0x40257d20 pm_sleep_set_mac + 0x40257da4 pm_set_wakeup_mac + 0x40257e3c pm_check_mac_idle + 0x40257e94 pm_set_sleep_btco + 0x40257f34 pm_set_wakeup_btco + 0x4025804c pm_set_sleep_mode + 0x40258168 pm_unmask_bt + 0x402581d0 pm_wakeup_init + 0x40258410 sleep_opt_8266 + 0x40258430 sleep_opt_bb_on_8266 + 0x40258468 sleep_reset_analog_rtcreg_8266 + *fill* 0x4025856a 0x2 + .irom0.text 0x4025856c 0x2aa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) 0x2ee (size before relaxing) - 0x4025f6d0 hostapd_config_defaults_bss - 0x4025f71c hostapd_config_defaults - 0x4025f7a0 hostapd_mac_comp - 0x4025f7b4 hostapd_mac_comp_empty - 0x4025f820 hostapd_setup_wpa_psk - 0x4025f850 hostapd_wep_key_cmp - 0x4025f8a0 hostapd_maclist_found - 0x4025f908 hostapd_rate_found - 0x4025f924 hostapd_get_psk - *fill* 0x4025f976 0x2 - .irom0.text 0x4025f978 0x1c86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + 0x40258570 hostapd_config_defaults_bss + 0x402585bc hostapd_config_defaults + 0x40258640 hostapd_mac_comp + 0x40258654 hostapd_mac_comp_empty + 0x402586c0 hostapd_setup_wpa_psk + 0x402586f0 hostapd_wep_key_cmp + 0x40258740 hostapd_maclist_found + 0x402587a8 hostapd_rate_found + 0x402587c4 hostapd_get_psk + *fill* 0x40258816 0x2 + .irom0.text 0x40258818 0x1c86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) 0x1f66 (size before relaxing) - 0x4025fac4 wpa_auth_for_each_sta - 0x4025fc44 wpa_init - 0x4025fcd4 wpa_auth_sta_init - 0x4025fd1c wpa_auth_sta_associated - 0x4025fd88 wpa_auth_sta_no_wpa - 0x4025fde4 wpa_auth_sta_deinit - 0x4025feb4 wpa_receive - 0x40260318 __wpa_send_eapol - 0x4026083c wpa_remove_ptk - 0x40260888 wpa_auth_sm_event - *fill* 0x402615fe 0x2 - .irom0.text 0x40261600 0x582 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + 0x40258964 wpa_auth_for_each_sta + 0x40258ae4 wpa_init + 0x40258b74 wpa_auth_sta_init + 0x40258bbc wpa_auth_sta_associated + 0x40258c28 wpa_auth_sta_no_wpa + 0x40258c84 wpa_auth_sta_deinit + 0x40258d54 wpa_receive + 0x402591b8 __wpa_send_eapol + 0x402596dc wpa_remove_ptk + 0x40259728 wpa_auth_sm_event + *fill* 0x4025a49e 0x2 + .irom0.text 0x4025a4a0 0x582 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) 0x5f6 (size before relaxing) - 0x402616c4 wpa_write_rsn_ie - 0x402617d0 wpa_auth_gen_wpa_ie - 0x40261860 wpa_add_kde - 0x402618cc wpa_validate_wpa_ie - 0x40261ad8 wpa_parse_kde_ies - 0x40261b74 wpa_auth_uses_mfp - *fill* 0x40261b82 0x2 - .irom0.text 0x40261b84 0x14d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + 0x4025a564 wpa_write_rsn_ie + 0x4025a670 wpa_auth_gen_wpa_ie + 0x4025a700 wpa_add_kde + 0x4025a76c wpa_validate_wpa_ie + 0x4025a978 wpa_parse_kde_ies + 0x4025aa14 wpa_auth_uses_mfp + *fill* 0x4025aa22 0x2 + .irom0.text 0x4025aa24 0x14d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) 0x1708 (size before relaxing) - 0x40262b10 wpa_sm_rx_eapol - 0x40262c88 wpa_register - 0x40262cb4 wpa_set_profile - 0x40262ccc wpa_set_pmk - 0x40262cf8 wpa_set_bss - 0x40262efc pp_michael_mic_failure - 0x40262fa0 eapol_txcb - 0x4026302c wpa_sm_set_state - .irom0.text 0x40263054 0x76a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + 0x4025b9b0 wpa_sm_rx_eapol + 0x4025bb28 wpa_register + 0x4025bb54 wpa_set_profile + 0x4025bb6c wpa_set_pmk + 0x4025bb98 wpa_set_bss + 0x4025bd9c pp_michael_mic_failure + 0x4025be40 eapol_txcb + 0x4025becc wpa_sm_set_state + .irom0.text 0x4025bef4 0x76a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) 0x7fa (size before relaxing) - 0x4026319c wpa_parse_wpa_ie_rsn - 0x40263330 wpa_parse_wpa_ie_wpa - 0x402634c0 wpa_eapol_key_mic - 0x40263500 wpa_compare_rsn_ie - 0x40263528 wpa_pmk_to_ptk - 0x40263618 rsn_pmkid - 0x40263674 wpa_cipher_key_len - 0x40263698 wpa_cipher_to_alg - 0x402636c0 wpa_cipher_to_suite - 0x40263714 rsn_cipher_put_suites - 0x40263774 wpa_cipher_put_suites - *fill* 0x402637be 0x2 - .irom0.text 0x402637c0 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) + 0x4025c03c wpa_parse_wpa_ie_rsn + 0x4025c1d0 wpa_parse_wpa_ie_wpa + 0x4025c360 wpa_eapol_key_mic + 0x4025c3a0 wpa_compare_rsn_ie + 0x4025c3c8 wpa_pmk_to_ptk + 0x4025c4b8 rsn_pmkid + 0x4025c514 wpa_cipher_key_len + 0x4025c538 wpa_cipher_to_alg + 0x4025c560 wpa_cipher_to_suite + 0x4025c5b4 rsn_cipher_put_suites + 0x4025c614 wpa_cipher_put_suites + *fill* 0x4025c65e 0x2 + .irom0.text 0x4025c660 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) 0xac (size before relaxing) - 0x40263838 wpa_snprintf_hex_uppercase - 0x4026384c wpa_snprintf_hex - 0x40263860 eloop_cancel_timeout - 0x40263864 eloop_register_timeout - .irom0.text 0x40263868 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) + 0x4025c6d8 wpa_snprintf_hex_uppercase + 0x4025c6ec wpa_snprintf_hex + 0x4025c700 eloop_cancel_timeout + 0x4025c704 eloop_register_timeout + .irom0.text 0x4025c708 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) 0x341 (size before relaxing) - 0x40263868 wpa_parse_wpa_ie - 0x4026395c wpa_supplicant_parse_ies - 0x40263b5c wpa_gen_wpa_ie - *fill* 0x40263b8d 0x3 - .irom0.text 0x40263b90 0x41c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + 0x4025c708 wpa_parse_wpa_ie + 0x4025c7fc wpa_supplicant_parse_ies + 0x4025c9fc wpa_gen_wpa_ie + *fill* 0x4025ca2d 0x3 + .irom0.text 0x4025ca30 0x418 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) 0x52c (size before relaxing) - 0x40263b94 ppInstallKey - 0x40263d24 wpa_config_profile - 0x40263d58 wpa_config_bss - 0x40263d84 wpa_config_assoc_ie - 0x40263d98 dhcp_bind_check - 0x40263dd0 eagle_auth_done - 0x40263f4c wpa_neg_complete - 0x40263f74 wpa_attach - .irom0.text 0x40263fac 0xd6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) + 0x4025ca34 ppInstallKey + 0x4025cbc4 wpa_config_profile + 0x4025cbf8 wpa_config_bss + 0x4025cc24 wpa_config_assoc_ie + 0x4025cc38 dhcp_bind_check + 0x4025cc6c eagle_auth_done + 0x4025cde8 wpa_neg_complete + 0x4025ce10 wpa_attach + .irom0.text 0x4025ce48 0xd6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) 0xe2 (size before relaxing) - 0x4026401c wpa_sm_alloc_eapol - 0x4026405c wpa_sm_deauthenticate - 0x40264078 wpa_sm_mlme_setprotection - 0x4026407c wpa_sm_get_beacon_ie - 0x40264080 wpa_sm_disassociate - *fill* 0x40264082 0x2 - .irom0.text 0x40264084 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + 0x4025ceb8 wpa_sm_alloc_eapol + 0x4025cef8 wpa_sm_deauthenticate + 0x4025cf14 wpa_sm_mlme_setprotection + 0x4025cf18 wpa_sm_get_beacon_ie + 0x4025cf1c wpa_sm_disassociate + *fill* 0x4025cf1e 0x2 + .irom0.text 0x4025cf20 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) 0x197 (size before relaxing) - *fill* 0x4026420b 0x1 - .irom0.text 0x4026420c 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + *fill* 0x4025d0a7 0x1 + .irom0.text 0x4025d0a8 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) 0x7c (size before relaxing) - .irom0.text 0x40264284 0xdf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) + .irom0.text 0x4025d120 0xdf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) 0x103 (size before relaxing) - 0x40264284 aes_wrap - *fill* 0x40264363 0x1 - .irom.text 0x40264364 0xa9f1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x4026ed55 0x3 - .irom.text 0x4026ed58 0x2bd .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - *fill* 0x4026f015 0x3 - .irom.text 0x4026f018 0x19f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - *fill* 0x4026f1b7 0x1 - .irom.text 0x4026f1b8 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - *fill* 0x4026f235 0x0 - *fill* 0x4026f235 0xb - .irom.text 0x4026f240 0x145 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - *fill* 0x4026f385 0x0 - *fill* 0x4026f385 0xb - .irom.text 0x4026f390 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - *fill* 0x4026f3eb 0x0 - *fill* 0x4026f3eb 0x0 - *fill* 0x4026f3eb 0x5 - .irom.text 0x4026f3f0 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - *fill* 0x4026f428 0x0 - .irom.text 0x4026f428 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - *fill* 0x4026f42f 0x0 - *fill* 0x4026f42f 0x1 - .irom.text 0x4026f430 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - *fill* 0x4026f43a 0x0 - *fill* 0x4026f43a 0x6 - .irom.text 0x4026f440 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - *fill* 0x4026f490 0x0 - .irom.text 0x4026f490 0x2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - *fill* 0x4026f4bf 0x0 - *fill* 0x4026f4bf 0x1 - .irom.text 0x4026f4c0 0x10d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - *fill* 0x4026f5cd 0x0 - *fill* 0x4026f5cd 0x3 - .irom.text 0x4026f5d0 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - *fill* 0x4026fa60 0x0 - .irom.text 0x4026fa60 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - *fill* 0x4026fbac 0x4 - .irom.text 0x4026fbb0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - *fill* 0x4026fc0b 0x0 - *fill* 0x4026fc0b 0x5 - .irom.text 0x4026fc10 0x2d5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x4026fc30 default_ssid - *fill* 0x4026fee5 0x0 - *fill* 0x4026fee5 0xb - .irom.text 0x4026fef0 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - *fill* 0x4026ff53 0x0 - *fill* 0x4026ff53 0xd - .irom.text 0x4026ff60 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - *fill* 0x4026ff69 0x0 - *fill* 0x4026ff69 0x7 - .irom.text 0x4026ff70 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .irom.text 0x4026ff7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x4026ff80 0x0 - *fill* 0x4026ff80 0x0 - *fill* 0x4026ff80 0x0 - *fill* 0x4026ff80 0x0 - .irom.text 0x4026ff80 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x4026ff80 tcp_pcb_lists - 0x4026ff90 tcp_persist_backoff - 0x4026ff97 tcp_backoff - *fill* 0x4026ffa4 0x0 - *fill* 0x4026ffa4 0x0 - *fill* 0x4026ffa4 0x0 - *fill* 0x4026ffa4 0x0 - *fill* 0x4026ffa4 0x0 - .irom0.text 0x4026ffa4 0x28c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - 0x4027000c inet_chksum_pseudo - 0x402700cc inet_chksum_pseudo_partial - 0x402701a8 inet_chksum - 0x402701c4 inet_chksum_pbuf - *fill* 0x40270230 0x0 - .irom.text 0x40270230 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - 0x40270230 ip_addr_broadcast - 0x40270234 ip_addr_any - .irom.text 0x40270238 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - 0x40270238 memp_sizes - *fill* 0x40270260 0x0 - *fill* 0x40270260 0x0 - .irom.text 0x40270260 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x40270270 ieee80211_opcap - *fill* 0x402702e2 0x0 - *fill* 0x402702e2 0x0 - *fill* 0x402702e2 0xe - .irom.text 0x402702f0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - *fill* 0x4027034b 0x0 - *fill* 0x4027034b 0x5 - .irom.text 0x40270350 0x19 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - *fill* 0x40270369 0x0 - *fill* 0x40270369 0x7 - .irom.text 0x40270370 0x12 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - *fill* 0x40270382 0x0 - *fill* 0x40270382 0xe - .irom.text 0x40270390 0x43 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - *fill* 0x402703d3 0x0 - *fill* 0x402703d3 0xd - .irom.text 0x402703e0 0x1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - *fill* 0x402703fd 0x0 - *fill* 0x402703fd 0x3 - .irom.text 0x40270400 0x1b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - *fill* 0x402705b8 0x0 - *fill* 0x402705b8 0x8 - .irom.text 0x402705c0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - *fill* 0x402705dc 0x0 - *fill* 0x402705dc 0x4 - .irom.text 0x402705e0 0x99 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - *fill* 0x40270679 0x0 - *fill* 0x40270679 0x7 - .irom.text 0x40270680 0x26 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - *fill* 0x402706a6 0x0 - *fill* 0x402706a6 0x0 - *fill* 0x402706a6 0xa - .irom.text 0x402706b0 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - *fill* 0x40270837 0x0 - *fill* 0x40270837 0x0 - *fill* 0x40270837 0x9 - .irom.text 0x40270840 0x83 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - *fill* 0x402708c3 0x0 - *fill* 0x402708c3 0x1 - .irom.text 0x402708c4 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - 0x402708c4 ccmp - *fill* 0x402708dc 0x0 - *fill* 0x402708dc 0x4 - .irom.text 0x402708e0 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - *fill* 0x402708f3 0x0 - *fill* 0x402708f3 0x0 - *fill* 0x402708f3 0xd - .irom.text 0x40270900 0x65 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - *fill* 0x40270965 0xb - .irom.text 0x40270970 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - *fill* 0x40270abc 0x4 - .irom.text 0x40270ac0 0x1f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .irom0.text 0x40270cb4 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - 0x40270cb4 chip_v6_set_sense - 0x40270cb8 chip_v6_get_sense - 0x40270cbc chip_v6_unset_chanfreq - *fill* 0x40270cc0 0x0 - .irom.text 0x40270cc0 0x1a3 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x40270e63 0x1 - .irom0.text 0x40270e64 0x80 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - *fill* 0x40270ee4 0xc - .irom.text 0x40270ef0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - *fill* 0x40270efc 0x4 - .irom.text 0x40270f00 0x74 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - *fill* 0x40270f74 0xc - .irom.text 0x40270f80 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - *fill* 0x40270f8e 0x0 - *fill* 0x40270f8e 0x2 - .irom.text 0x40270f90 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - *fill* 0x40270fa7 0x0 - *fill* 0x40270fa7 0x9 - .irom.text 0x40270fb0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - *fill* 0x40270fcc 0x0 - *fill* 0x40270fcc 0x4 - .irom.text 0x40270fd0 0x67 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - *fill* 0x40271037 0x0 - *fill* 0x40271037 0x0 - *fill* 0x40271037 0x1 - .irom.text 0x40271038 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - 0x40271038 tkip - .irom.text 0x40271050 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - 0x40271050 wep - 0x40271068 _irom0_text_end = ABSOLUTE (.) - 0x40271068 _flash_code_end = ABSOLUTE (.) - -.text 0x40100000 0x7843 + 0x4025d120 aes_wrap + *fill* 0x4025d1ff 0x1 + .irom.text 0x4025d200 0xac81 .pioenvs\sonoff\src\sonoff.ino.cpp.o + *fill* 0x40267e81 0x3 + .irom.text 0x40267e84 0x19f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + *fill* 0x40268023 0x1 + .irom.text 0x40268024 0x2bd .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + *fill* 0x402682e1 0x3 + .irom.text 0x402682e4 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) + *fill* 0x40268361 0x0 + *fill* 0x40268361 0xf + .irom.text 0x40268370 0x145 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) + *fill* 0x402684b5 0x0 + *fill* 0x402684b5 0xb + .irom.text 0x402684c0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) + *fill* 0x4026851b 0x0 + *fill* 0x4026851b 0x0 + *fill* 0x4026851b 0x5 + .irom.text 0x40268520 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) + *fill* 0x40268558 0x0 + .irom.text 0x40268558 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) + *fill* 0x4026855f 0x0 + *fill* 0x4026855f 0x1 + .irom.text 0x40268560 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) + *fill* 0x4026856a 0x0 + *fill* 0x4026856a 0x6 + .irom.text 0x40268570 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) + *fill* 0x402685c0 0x0 + .irom.text 0x402685c0 0x2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) + *fill* 0x402685ef 0x0 + *fill* 0x402685ef 0x1 + .irom.text 0x402685f0 0x10d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) + *fill* 0x402686fd 0x0 + *fill* 0x402686fd 0x3 + .irom.text 0x40268700 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) + *fill* 0x40268b90 0x0 + .irom.text 0x40268b90 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) + *fill* 0x40268cdc 0x4 + .irom.text 0x40268ce0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) + *fill* 0x40268d3b 0x0 + *fill* 0x40268d3b 0x5 + .irom.text 0x40268d40 0x2d5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) + 0x40268d60 default_ssid + *fill* 0x40269015 0x0 + *fill* 0x40269015 0xb + .irom.text 0x40269020 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) + *fill* 0x40269083 0x0 + *fill* 0x40269083 0xd + .irom.text 0x40269090 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) + *fill* 0x40269099 0x0 + *fill* 0x40269099 0x7 + .irom.text 0x402690a0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) + .irom.text 0x402690ac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) + *fill* 0x402690b0 0x0 + *fill* 0x402690b0 0x0 + *fill* 0x402690b0 0x0 + *fill* 0x402690b0 0x0 + .irom.text 0x402690b0 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) + 0x402690b0 tcp_pcb_lists + 0x402690c0 tcp_persist_backoff + 0x402690c7 tcp_backoff + *fill* 0x402690d4 0x0 + *fill* 0x402690d4 0x0 + *fill* 0x402690d4 0x0 + *fill* 0x402690d4 0x0 + *fill* 0x402690d4 0x0 + .irom0.text 0x402690d4 0x28c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) + 0x4026913c inet_chksum_pseudo + 0x402691fc inet_chksum_pseudo_partial + 0x402692d8 inet_chksum + 0x402692f4 inet_chksum_pbuf + *fill* 0x40269360 0x0 + .irom.text 0x40269360 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) + 0x40269360 ip_addr_broadcast + 0x40269364 ip_addr_any + .irom.text 0x40269368 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) + 0x40269368 memp_sizes + *fill* 0x40269390 0x0 + *fill* 0x40269390 0x0 + .irom.text 0x40269390 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) + 0x402693a0 ieee80211_opcap + *fill* 0x40269412 0x0 + *fill* 0x40269412 0x0 + *fill* 0x40269412 0xe + .irom.text 0x40269420 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) + *fill* 0x4026947b 0x0 + *fill* 0x4026947b 0x5 + .irom.text 0x40269480 0x19 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) + *fill* 0x40269499 0x0 + *fill* 0x40269499 0x7 + .irom.text 0x402694a0 0x12 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) + *fill* 0x402694b2 0x0 + *fill* 0x402694b2 0xe + .irom.text 0x402694c0 0x43 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) + *fill* 0x40269503 0x0 + *fill* 0x40269503 0xd + .irom.text 0x40269510 0x1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) + *fill* 0x4026952d 0x0 + *fill* 0x4026952d 0x3 + .irom.text 0x40269530 0x1b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) + *fill* 0x402696e8 0x0 + *fill* 0x402696e8 0x8 + .irom.text 0x402696f0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) + *fill* 0x4026970c 0x0 + *fill* 0x4026970c 0x4 + .irom.text 0x40269710 0x99 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) + *fill* 0x402697a9 0x0 + *fill* 0x402697a9 0x7 + .irom.text 0x402697b0 0x26 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) + *fill* 0x402697d6 0x0 + *fill* 0x402697d6 0x0 + *fill* 0x402697d6 0xa + .irom.text 0x402697e0 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) + *fill* 0x40269967 0x0 + *fill* 0x40269967 0x0 + *fill* 0x40269967 0x9 + .irom.text 0x40269970 0x83 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) + *fill* 0x402699f3 0x0 + *fill* 0x402699f3 0x1 + .irom.text 0x402699f4 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) + 0x402699f4 ccmp + *fill* 0x40269a0c 0x0 + *fill* 0x40269a0c 0x4 + .irom.text 0x40269a10 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) + *fill* 0x40269a23 0x0 + *fill* 0x40269a23 0x0 + *fill* 0x40269a23 0xd + .irom.text 0x40269a30 0x65 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) + *fill* 0x40269a95 0xb + .irom.text 0x40269aa0 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) + *fill* 0x40269bec 0x4 + .irom.text 0x40269bf0 0x1f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) + .irom0.text 0x40269de4 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) + 0x40269de4 chip_v6_set_sense + 0x40269de8 chip_v6_get_sense + 0x40269dec chip_v6_unset_chanfreq + *fill* 0x40269df0 0x0 + .irom.text 0x40269df0 0x1a3 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + *fill* 0x40269f93 0x1 + .irom0.text 0x40269f94 0x80 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) + *fill* 0x4026a014 0xc + .irom.text 0x4026a020 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) + *fill* 0x4026a02c 0x4 + .irom.text 0x4026a030 0x74 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + *fill* 0x4026a0a4 0xc + .irom.text 0x4026a0b0 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) + *fill* 0x4026a0be 0x0 + *fill* 0x4026a0be 0x2 + .irom.text 0x4026a0c0 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) + *fill* 0x4026a0d7 0x0 + *fill* 0x4026a0d7 0x9 + .irom.text 0x4026a0e0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) + *fill* 0x4026a0fc 0x0 + *fill* 0x4026a0fc 0x4 + .irom.text 0x4026a100 0x67 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) + *fill* 0x4026a167 0x0 + *fill* 0x4026a167 0x0 + *fill* 0x4026a167 0x1 + .irom.text 0x4026a168 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) + 0x4026a168 tkip + .irom.text 0x4026a180 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) + 0x4026a180 wep + 0x4026a198 _irom0_text_end = ABSOLUTE (.) + 0x4026a198 _flash_code_end = ABSOLUTE (.) + +.text 0x40100000 0x7603 0x40100000 _stext = . 0x40100000 _text_start = ABSOLUTE (.) *(.UserEnter.text) @@ -18322,17 +16662,11 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNK11ArduinoJson11JsonVariant15variantAsStringEv 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN7TwoWire5writeEi - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNSt8functionIFvvEEC5IPS0_vEET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + .literal._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor + .literal._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o @@ -18340,10 +16674,6 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c @@ -18352,18 +16682,10 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c @@ -18374,6 +16696,8 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ @@ -18396,6 +16720,8 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .literal._ZN6Stream9readBytesEPhj + 0x401068f8 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED5Ev @@ -18430,8 +16756,6 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) .literal._ZSt4swapISt9_Any_dataEvRT_S2_ 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa @@ -18470,6 +16794,18 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) .literal._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .literal._ZNK6String14StringIfHelperEv + 0x401068f8 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + .literal._ZN13TasmotaModbusD5Ev + 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN13TasmotaModbusD0Ev + 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + .literal._ZN15Adafruit_CCS8119meas_mode3getEv + 0x401068f8 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + .literal._ZNSt8functionIFvPcPhjEEC5ERKS3_ + 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .literal._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .literal._ZN14RequestHandlerD5Ev 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) .literal._ZN14RequestHandler9canHandleE10HTTPMethod6String @@ -18502,16 +16838,6 @@ Linker script and memory map 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .literal._ZN16ESP8266WebServer15RequestArgumentC5Ev 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZNK6String14StringIfHelperEv - 0x401068f8 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN13TasmotaModbusD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbusD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZNSt8functionIFvPcPhjEEC5ERKS3_ - 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) .literal._ZN14HardwareSerialD5Ev 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) .literal._ZN14HardwareSerialD0Ev @@ -18545,185 +16871,167 @@ Linker script and memory map *fill* 0x40106925 0x0 *fill* 0x40106925 0x0 *fill* 0x40106925 0x3 - .text 0x40106928 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - 0x40106928 xthal_get_ccount - 0x40106930 xthal_set_ccompare - 0x4010693c xthal_get_ccompare - .text 0x40106948 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - 0x40106948 xthal_set_intclear - *fill* 0x4010694d 0x3 - .text 0x40106950 0x64 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - 0x40106950 __divsi3 - .text 0x401069b4 0x49 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - 0x401069b4 __modsi3 - *fill* 0x401069fd 0x3 - .text 0x40106a00 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - 0x40106a00 __udivsi3 - .text 0x40106a4c 0x39 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - 0x40106a4c __umodsi3 - *fill* 0x40106a85 0x3 - .text 0x40106a88 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - 0x40106a88 __umulsidi3 - .text 0x40106ad0 0x17 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - 0x40106ad0 __ashldi3 - *fill* 0x40106ae7 0x1 - .text 0x40106ae8 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - 0x40106ae8 __ashrdi3 - .text 0x40106b00 0x17 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - 0x40106b00 __lshrdi3 - *fill* 0x40106b17 0x0 - *fill* 0x40106b17 0x0 - *fill* 0x40106b17 0x0 - *fill* 0x40106b17 0x0 - *fill* 0x40106b17 0x0 - *fill* 0x40106b17 0x1 - .text 0x40106b18 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - 0x40106b18 __floatunsisf - 0x40106b20 __floatsisf - .text 0x40106b5c 0x7d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - 0x40106b5c __floatundisf - 0x40106b68 __floatdisf - *fill* 0x40106bd9 0x0 - *fill* 0x40106bd9 0x0 - *fill* 0x40106bd9 0x0 - *fill* 0x40106bd9 0x0 - *fill* 0x40106bd9 0x0 - *fill* 0x40106bd9 0x3 - .text 0x40106bdc 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - 0x40106bdc __floatunsidf - 0x40106be4 __floatsidf - *fill* 0x40106c12 0x0 - *fill* 0x40106c12 0x0 - *fill* 0x40106c12 0x0 - *fill* 0x40106c12 0x2 + .text 0x40106928 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + 0x40106928 xthal_set_intclear + *fill* 0x4010692d 0x3 + .text 0x40106930 0x64 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + 0x40106930 __divsi3 + .text 0x40106994 0x49 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + 0x40106994 __modsi3 + *fill* 0x401069dd 0x3 + .text 0x401069e0 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + 0x401069e0 __udivsi3 + .text 0x40106a2c 0x39 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + 0x40106a2c __umodsi3 + *fill* 0x40106a65 0x3 + .text 0x40106a68 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + 0x40106a68 __umulsidi3 + .text 0x40106ab0 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + 0x40106ab0 __ashrdi3 + *fill* 0x40106ac8 0x0 + *fill* 0x40106ac8 0x0 + *fill* 0x40106ac8 0x0 + *fill* 0x40106ac8 0x0 + *fill* 0x40106ac8 0x0 + .text 0x40106ac8 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + 0x40106ac8 __floatunsisf + 0x40106ad0 __floatsisf + .text 0x40106b0c 0x7d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + 0x40106b0c __floatundisf + 0x40106b18 __floatdisf + *fill* 0x40106b89 0x0 + *fill* 0x40106b89 0x0 + *fill* 0x40106b89 0x0 + *fill* 0x40106b89 0x0 + *fill* 0x40106b89 0x0 + *fill* 0x40106b89 0x3 + .text 0x40106b8c 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + 0x40106b8c __floatunsidf + 0x40106b94 __floatsidf + *fill* 0x40106bc2 0x0 + *fill* 0x40106bc2 0x0 + *fill* 0x40106bc2 0x0 + *fill* 0x40106bc2 0x2 .text._ZNSt8__detail15_List_node_base7_M_hookEPS0_ - 0x40106c14 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x40106c14 std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) - *fill* 0x40106c22 0x2 + 0x40106bc4 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x40106bc4 std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) + *fill* 0x40106bd2 0x2 .text._ZNSt8__detail15_List_node_base9_M_unhookEv - 0x40106c24 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x40106c24 std::__detail::_List_node_base::_M_unhook() - *fill* 0x40106c2e 0x2 + 0x40106bd4 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x40106bd4 std::__detail::_List_node_base::_M_unhook() + *fill* 0x40106bde 0x2 .literal._ZN10WiFiServerD5Ev - 0x40106c30 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) .literal._ZN10WiFiServerD0Ev - 0x40106c30 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) .literal._ZN15TransportTraitsD5Ev - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) .literal._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) .literal._ZN15TransportTraitsD0Ev - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) .literal._ZN15TransportTraits6createEv - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED5Ev - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x40106c30 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text 0x40106c30 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) + 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) + .text 0x40106be0 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) *.pioenvs\\*\\lib*.a:(.iram.text) - *fill* 0x40106c41 0x3 - .iram.text 0x40106c44 0x10d .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - 0x12d (size before relaxing) - *fill* 0x40106d51 0x3 - .iram.text 0x40106d54 0x1cc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) + *fill* 0x40106bf1 0x3 + .iram.text 0x40106bf4 0x1cc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) 0x1e8 (size before relaxing) - 0x40106d70 RCSwitch::receiveProtocol(int, unsigned int) - 0x40106e88 RCSwitch::handleInterrupt() - .iram.text 0x40106f20 0xf0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) - 0xf8 (size before relaxing) - 0x40106f28 bitbang_send_pixels_800 - 0x40106f9c bitbang_send_pixels_400 - .iram.text 0x40107010 0x67 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) + 0x40106c10 RCSwitch::receiveProtocol(int, unsigned int) + 0x40106d28 RCSwitch::handleInterrupt() + .iram.text 0x40106dc0 0x67 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) 0x7f (size before relaxing) - 0x4010701c millis - 0x40107054 micros - 0x40107064 delayMicroseconds - *fill* 0x40107077 0x1 - .iram.text 0x40107078 0x81 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) + 0x40106dcc millis + 0x40106e04 micros + 0x40106e14 delayMicroseconds + *fill* 0x40106e27 0x1 + .iram.text 0x40106e28 0x81 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) 0x85 (size before relaxing) - 0x4010707c pvPortMalloc - 0x40107094 vPortFree - 0x401070ac pvPortCalloc - 0x401070c4 pvPortRealloc - 0x401070d8 pvPortZalloc - 0x401070f0 xPortWantedSizeAlign - *fill* 0x401070f9 0x3 - .iram.text 0x401070fc 0xf3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) + 0x40106e2c pvPortMalloc + 0x40106e44 vPortFree + 0x40106e5c pvPortCalloc + 0x40106e74 pvPortRealloc + 0x40106e88 pvPortZalloc + 0x40106ea0 xPortWantedSizeAlign + *fill* 0x40106ea9 0x3 + .iram.text 0x40106eac 0xf3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) 0x10b (size before relaxing) - 0x40107100 puts - 0x4010711c putchar - 0x40107130 printf - 0x40107164 sprintf - 0x40107190 snprintf - 0x401071b8 vprintf - 0x401071dc vsnprintf - *fill* 0x401071ef 0x1 - .iram.text 0x401071f0 0x8f .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) + 0x40106eb0 puts + 0x40106ecc putchar + 0x40106ee0 printf + 0x40106f14 sprintf + 0x40106f40 snprintf + 0x40106f68 vprintf + 0x40106f8c vsnprintf + *fill* 0x40106f9f 0x1 + .iram.text 0x40106fa0 0x8f .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) 0x97 (size before relaxing) - 0x401071fc cont_init - 0x40107228 cont_check - 0x40107248 cont_get_free_stack - 0x40107264 cont_can_yield - *fill* 0x4010727f 0x0 - *fill* 0x4010727f 0x0 - *fill* 0x4010727f 0x0 - *fill* 0x4010727f 0x0 - *fill* 0x4010727f 0x0 + 0x40106fac cont_init + 0x40106fd8 cont_check + 0x40106ff8 cont_get_free_stack + 0x40107014 cont_can_yield + *fill* 0x4010702f 0x0 + *fill* 0x4010702f 0x0 + *fill* 0x4010702f 0x0 + *fill* 0x4010702f 0x0 *.pioenvs/*/lib*.a:(.iram.text) *.pioenvs\\*\\lib\\*.a:(.iram.text) *.pioenvs/*/lib/*.a:(.iram.text) *.pioenvs\\*\\src\\*.o(.iram.text) - *fill* 0x4010727f 0x1 - .iram.text 0x40107280 0x157 .pioenvs\sonoff\src\core_esp8266_timer.c.o + *fill* 0x4010702f 0x1 + .iram.text 0x40107030 0x157 .pioenvs\sonoff\src\core_esp8266_timer.c.o 0x17f (size before relaxing) - 0x40107290 timer1_isr_handler - 0x401072ec timer0_isr_handler - 0x40107320 timer1_isr_init - 0x40107340 timer1_detachInterrupt - 0x40107374 timer1_write - 0x401073a4 timer1_disable - 0x401073b8 timer0_detachInterrupt - *fill* 0x401073d7 0x1 - .iram.text 0x401073d8 0x295 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o + 0x40107040 timer1_isr_handler + 0x4010709c timer0_isr_handler + 0x401070d0 timer1_isr_init + 0x401070f0 timer1_detachInterrupt + 0x40107124 timer1_write + 0x40107154 timer1_disable + 0x40107168 timer0_detachInterrupt + *fill* 0x40107187 0x1 + .iram.text 0x40107188 0x2a5 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o 0x2e5 (size before relaxing) - 0x401073e8 interrupt_handler - 0x401074a0 __digitalWrite - 0x401074a0 digitalWrite - 0x40107500 __digitalRead - 0x40107500 digitalRead - 0x40107550 __attachInterruptArg - 0x401075e0 __attachInterrupt - 0x401075e0 attachInterrupt - 0x401075f8 detachInterrupt - 0x401075f8 __detachInterrupt - *fill* 0x4010766d 0x3 - .iram.text 0x40107670 0x12b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o + 0x401071a0 interrupt_handler + 0x40107260 __digitalWrite + 0x40107260 digitalWrite + 0x401072c0 __digitalRead + 0x401072c0 digitalRead + 0x40107310 __attachInterruptArg + 0x401073a0 __attachInterrupt + 0x401073a0 attachInterrupt + 0x401073b8 detachInterrupt + 0x401073b8 __detachInterrupt + *fill* 0x4010742d 0x3 + .iram.text 0x40107430 0x12b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o 0x15b (size before relaxing) - 0x40107684 pwm_timer_isr - 0x4010776c pwm_stop_pin - *fill* 0x4010779b 0x1 - .iram.text 0x4010779c 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o + 0x40107444 pwm_timer_isr + 0x4010752c pwm_stop_pin + *fill* 0x4010755b 0x1 + .iram.text 0x4010755c 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0xb7 (size before relaxing) - 0x401077ac HlwCfInterrupt() - 0x401077fc HlwCf1Interrupt() - *fill* 0x40107843 0x0 - *fill* 0x40107843 0x0 - *fill* 0x40107843 0x0 - *fill* 0x40107843 0x0 + 0x4010756c HlwCfInterrupt() + 0x401075bc HlwCf1Interrupt() + *fill* 0x40107603 0x0 + *fill* 0x40107603 0x0 + *fill* 0x40107603 0x0 + *fill* 0x40107603 0x0 *.pioenvs/*/src/*.o(.iram.text) *(.fini.literal) *(.fini) *(.gnu.version) - 0x40107843 _text_end = ABSOLUTE (.) - 0x40107843 _etext = . + 0x40107603 _text_end = ABSOLUTE (.) + 0x40107603 _etext = . -.lit4 0x40107844 0x0 - 0x40107844 _lit4_start = ABSOLUTE (.) +.lit4 0x40107604 0x0 + 0x40107604 _lit4_start = ABSOLUTE (.) *(*.lit4) *(.lit4.*) *(.gnu.linkonce.lit4.*) - 0x40107844 _lit4_end = ABSOLUTE (.) + 0x40107604 _lit4_end = ABSOLUTE (.) 0x400047f0 PROVIDE (Cache_Read_Disable, 0x400047f0) 0x40004678 PROVIDE (Cache_Read_Enable, 0x40004678) 0x400035a0 PROVIDE (FilePacketSendReqMsgProc, 0x400035a0) @@ -19079,27 +17387,24 @@ LOAD .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o LOAD .pioenvs\sonoff\src\sonoff.ino.cpp.o START GROUP LOAD .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a -LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a -LOAD .pioenvs\sonoff\liba3d\libDNSServer.a LOAD .pioenvs\sonoff\lib8be\libWire.a -LOAD .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a +LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a +LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a LOAD .pioenvs\sonoff\lib47b\libTicker.a +LOAD .pioenvs\sonoff\lib964\libMPU6050.a LOAD .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a -LOAD .pioenvs\sonoff\lib13e\libESP8266mDNS.a -LOAD .pioenvs\sonoff\lib797\libArduinoOTA.a -LOAD .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a LOAD .pioenvs\sonoff\lib99a\libSPI.a LOAD .pioenvs\sonoff\lib5a3\libAdafruit-GFX-Library-1.2.9.a -LOAD .pioenvs\sonoff\lib4e0\libAdafruit_LED_Backpack-1.1.6.a +LOAD .pioenvs\sonoff\libe00\libAdafruit_SSD1306-1.1.2.a +LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a LOAD .pioenvs\sonoff\lib36c\libBME680_driver-bme680_v3.5.9.a LOAD .pioenvs\sonoff\libdba\libArduinoJson-5.11.2.a -LOAD .pioenvs\sonoff\lib4b9\libESP8266WebServer.a -LOAD .pioenvs\sonoff\lib433\libEEPROM.a -LOAD .pioenvs\sonoff\lib172\libesp-knx-ip-0.5.1.a -LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a -LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a -LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a +LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a +LOAD .pioenvs\sonoff\lib13e\libESP8266mDNS.a +LOAD .pioenvs\sonoff\lib797\libArduinoOTA.a +LOAD .pioenvs\sonoff\liba3d\libDNSServer.a LOAD .pioenvs\sonoff\lib344\libTasmotaMqtt-1.1.1.a +LOAD .pioenvs\sonoff\lib9c8\libAdafruit_ILI9341-1.2.0-Tasmota-1.0.a LOAD .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a LOAD .pioenvs\sonoff\lib1a6\libOneWire-2.3.3.06.a LOAD .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a @@ -19107,14 +17412,17 @@ LOAD .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a LOAD .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a LOAD .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a LOAD .pioenvs\sonoff\libe09\libesp-epaper-29-ws-20171230-gemu-1.0.a -LOAD .pioenvs\sonoff\libe00\libAdafruit_SSD1306-1.1.2.a +LOAD .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a LOAD .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a LOAD .pioenvs\sonoff\libc1f\libLiquidCrystal_I2C-1.1.3.a -LOAD .pioenvs\sonoff\lib964\libMPU6050.a +LOAD .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a LOAD .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a -LOAD .pioenvs\sonoff\lib9c8\libAdafruit_ILI9341-1.2.0-Tasmota-1.0.a +LOAD .pioenvs\sonoff\lib4e0\libAdafruit_LED_Backpack-1.1.6.a +LOAD .pioenvs\sonoff\lib4b9\libESP8266WebServer.a LOAD .pioenvs\sonoff\lib417\libMutichannel_Gas_Sensor.a LOAD .pioenvs\sonoff\lib56e\libarduino-mqtt-2.4.0.a +LOAD .pioenvs\sonoff\lib433\libEEPROM.a +LOAD .pioenvs\sonoff\lib172\libesp-knx-ip-0.5.1.a LOAD .pioenvs\sonoff\libFrameworkArduinoVariant.a LOAD .pioenvs\sonoff\libFrameworkArduino.a LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmesh.a @@ -19142,17 +17450,10 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o .comment 0x00000000 0x12 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) @@ -19160,21 +17461,17 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) @@ -19193,7 +17490,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) @@ -19357,20 +17653,21 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x000016bc 0x47 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) @@ -19433,6 +17730,7 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) .xtensa.info 0x00000000 0x38 @@ -19440,17 +17738,10 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRrecv.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRsend.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRtimer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Dish.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_JVC.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_NEC.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Panasonic.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_RC5_RC6.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Samsung.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(ir_Sony.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a(IRutils.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) @@ -19458,21 +17749,17 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a(NeoPixelEsp.c.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) + .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) @@ -19491,7 +17778,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_pulse.c.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) @@ -19598,16 +17884,13 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) @@ -19627,20 +17910,21 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_ceil.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) @@ -19689,6 +17973,7 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) .xt.lit._ZN5Print5writeEPKc @@ -19741,38 +18026,33 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.lit._ZNSt8functionIFvvEEC2IPS0_vEET_ 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.lit._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv - 0x00000000 0x8 - .xt.lit._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ +.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ + .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ +.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ +.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ + .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ +.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ + .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ +.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) @@ -19793,20 +18073,9 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ @@ -19815,16 +18084,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c 0x00000000 0x0 .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c @@ -19849,6 +18108,11 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o 0x8 (size before relaxing) +.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 + .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v 0x00000000 0x8 .xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v @@ -20004,35 +18268,20 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZNK11ArduinoJson11JsonVariant15variantAsStringEv 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZN7TwoWire5writeEi - 0x00000000 0x24 - .xt.prop._ZN7TwoWire5writeEi - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ 0x00000000 0x30 .xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt - 0x00000000 0x3c - .xt.prop._ZNK11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13GetPixelColorEt - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor - 0x00000000 0x30 - .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE13SetPixelColorEt8RgbColor - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv +.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x48 - .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE4ShowEv + .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor - 0x00000000 0x3c - .xt.prop._ZN11NeoPixelBusI13NeoGrbFeature23NeoEspBitBangMethodBaseI25NeoEspBitBangSpeed800KbpsEE7ClearToE8RgbColor - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o +.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x24 + .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ + 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o .xt.prop._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ 0x00000000 0x48 @@ -20049,16 +18298,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 - .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x24 - .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ 0x00000000 0xd8 .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ @@ -20079,19 +18318,9 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ 0x00000000 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcPKcEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPcjEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcsEENS_9Internals13JsonVariantAsIT0_E4typeET_ + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ @@ -20099,16 +18328,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ 0x00000000 0xd8 .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ @@ -20134,6 +18353,11 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o +.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 + .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ + 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v 0x00000000 0xf0 .xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v @@ -20209,16 +18433,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZTV12PubSubClient 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj128EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE 0x00000000 0xc .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE @@ -20234,6 +18448,11 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o +.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x00000000 0xc + .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE + 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o + .xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance 0x00000000 0xc .xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance @@ -20244,6 +18463,16 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o +.xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 + .xt.prop._ZN6Stream9readBytesEPhj + 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + +.xt.prop._ZTV7TwoWire + 0x00000000 0xc + .xt.prop._ZTV7TwoWire + 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) + .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev 0x00000000 0x8 .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev @@ -20421,10 +18650,9 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x8 (size before relaxing) .xt.lit._ZN13ClientContext5writeEPKcj - 0x00000000 0x0 + 0x00000000 0x8 .xt.lit._ZN13ClientContext5writeEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) + 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) .xt.lit._ZN13ClientContext8_consumeEj 0x00000000 0x0 @@ -20432,11 +18660,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) 0x8 (size before relaxing) -.xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt 0x00000000 0x30 .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt @@ -20520,11 +18743,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZTV7WiFiUDP 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) -.xt.prop._ZTV7TwoWire - 0x00000000 0xc - .xt.prop._ZTV7TwoWire - 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation 0x00000000 0x0 .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation @@ -20595,6 +18813,63 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) +.xt.prop._ZNK6String14StringIfHelperEv + 0x00000000 0x24 + .xt.prop._ZNK6String14StringIfHelperEv + 0x00000000 0x24 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) + +.xt.prop._ZTV13TasmotaSerial + 0x00000000 0xc + .xt.prop._ZTV13TasmotaSerial + 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) + +.xt.lit._ZN13TasmotaModbusD2Ev + 0x00000000 0x8 + .xt.lit._ZN13TasmotaModbusD2Ev + 0x00000000 0x8 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.lit._ZN13TasmotaModbusD0Ev + 0x00000000 0x0 + .xt.lit._ZN13TasmotaModbusD0Ev + 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZN13TasmotaModbusD2Ev + 0x00000000 0x24 + .xt.prop._ZN13TasmotaModbusD2Ev + 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.prop._ZN13TasmotaModbusD0Ev + 0x00000000 0x24 + .xt.prop._ZN13TasmotaModbusD0Ev + 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.prop._ZTV13TasmotaModbus + 0x00000000 0xc + .xt.prop._ZTV13TasmotaModbus + 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) + +.xt.prop._ZN15Adafruit_CCS8119meas_mode3getEv + 0x00000000 0x24 + .xt.prop._ZN15Adafruit_CCS8119meas_mode3getEv + 0x00000000 0x24 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) + +.xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x0 + .xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + 0x8 (size before relaxing) + +.xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ + 0x00000000 0x30 + .xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ + 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + +.xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x24 + .xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ + 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) + .xt.lit._ZN14RequestHandlerD2Ev 0x00000000 0x8 .xt.lit._ZN14RequestHandlerD2Ev @@ -20754,58 +19029,6 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .xt.prop._ZN16ESP8266WebServer15RequestArgumentC2Ev 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) -.xt.prop._ZNK6String14StringIfHelperEv - 0x00000000 0x24 - .xt.prop._ZNK6String14StringIfHelperEv - 0x00000000 0x24 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - -.xt.prop._ZTV13TasmotaSerial - 0x00000000 0xc - .xt.prop._ZTV13TasmotaSerial - 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - -.xt.lit._ZN13TasmotaModbusD2Ev - 0x00000000 0x8 - .xt.lit._ZN13TasmotaModbusD2Ev - 0x00000000 0x8 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.lit._ZN13TasmotaModbusD0Ev - 0x00000000 0x0 - .xt.lit._ZN13TasmotaModbusD0Ev - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN13TasmotaModbusD2Ev - 0x00000000 0x24 - .xt.prop._ZN13TasmotaModbusD2Ev - 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.prop._ZN13TasmotaModbusD0Ev - 0x00000000 0x24 - .xt.prop._ZN13TasmotaModbusD0Ev - 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.prop._ZTV13TasmotaModbus - 0x00000000 0xc - .xt.prop._ZTV13TasmotaModbus - 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x0 - .xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - -.xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x24 - .xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.lit._ZN14HardwareSerialD2Ev 0x00000000 0x8 .xt.lit._ZN14HardwareSerialD2Ev @@ -20967,28 +19190,28 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_frame 0x00002894 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) .debug_frame 0x00002938 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) .debug_frame 0x00002968 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_frame 0x00002998 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_frame 0x000029c8 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_frame 0x000029f8 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_frame 0x00002a58 0x6c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_frame 0x00003118 0xbc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_frame 0x000031d4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_frame 0x00003294 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_frame 0x00003354 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_frame 0x00003430 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_frame 0x000034c8 0x590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_frame 0x00003a58 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_frame 0x00003ad0 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_frame 0x00003b84 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_frame 0x00003bc8 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_frame 0x00003d0c 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_frame 0x00003da0 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_frame 0x00003e44 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_frame 0x00003eac 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_frame 0x00003f44 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_frame 0x000041c4 0xf8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - -.debug_info 0x00000000 0x2ea28 + .debug_frame 0x00002998 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_frame 0x000029c8 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_frame 0x00002a28 0x6c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_frame 0x000030e8 0xbc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_frame 0x000031a4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_frame 0x00003264 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_frame 0x00003324 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_frame 0x00003400 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_frame 0x00003498 0x590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_frame 0x00003a28 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_frame 0x00003aa0 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_frame 0x00003b54 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_frame 0x00003b98 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_frame 0x00003cdc 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_frame 0x00003d70 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_frame 0x00003e14 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_frame 0x00003e7c 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_frame 0x00003f14 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_frame 0x00004194 0xf8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_frame 0x0000428c 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + +.debug_info 0x00000000 0x2e813 .debug_info 0x00000000 0x1e25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .debug_info 0x00001e25 0x1e6a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) .debug_info 0x00003c8f 0x2b2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) @@ -21012,57 +19235,54 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_info 0x000186da 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) .debug_info 0x00018802 0xa23 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .debug_info 0x00019225 0x167d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_info 0x0001a8a2 0xcd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .debug_info 0x0001a96f 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_info 0x0001aa3e 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_info 0x0001aae2 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_info 0x0001ab86 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_info 0x0001ac2a 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_info 0x0001acce 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_info 0x0001ad72 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .debug_info 0x0001ae16 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_info 0x0001aeba 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .debug_info 0x0001af5e 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_info 0x0001b003 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_info 0x0001b0a8 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_info 0x0001b14d 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_info 0x0001b1f2 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_info 0x0001b297 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_info 0x0001b33c 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_info 0x0001b3e1 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_info 0x0001b486 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_info 0x0001b52b 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_info 0x0001b5d0 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_info 0x0001b675 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_info 0x0001b71a 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_info 0x0001b7bf 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_info 0x0001b864 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_info 0x0001b909 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_info 0x0001b9ae 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_info 0x0001ba53 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_info 0x0001bbc7 0x60c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_info 0x0001c1d3 0x5da c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_info 0x0001c7ad 0x61d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_info 0x0001cdca 0x3fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_info 0x0001d1c8 0x420b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_info 0x000213d3 0x1494 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_info 0x00022867 0x13ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_info 0x00023c53 0x1acb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_info 0x0002571e 0x5e7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_info 0x00025d05 0xb05 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_info 0x0002680a 0x2935 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_info 0x0002913f 0x641 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_info 0x00029780 0x48f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_info 0x00029c0f 0x1f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_info 0x00029e05 0xe07 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_info 0x0002ac0c 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_info 0x0002af31 0x3e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_info 0x0002b319 0x2ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_info 0x0002b5e3 0x3dd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_info 0x0002b9c0 0x18b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_info 0x0002d272 0x17b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - -.debug_abbrev 0x00000000 0x7da8 + .debug_info 0x0001a8a2 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_info 0x0001a971 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_info 0x0001aa15 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_info 0x0001aab9 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_info 0x0001ab5d 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_info 0x0001ac01 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_info 0x0001aca5 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_info 0x0001ad49 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_info 0x0001adee 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_info 0x0001ae93 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_info 0x0001af38 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_info 0x0001afdd 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_info 0x0001b082 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_info 0x0001b127 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_info 0x0001b1cc 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_info 0x0001b271 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_info 0x0001b316 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_info 0x0001b3bb 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_info 0x0001b460 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_info 0x0001b505 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_info 0x0001b5aa 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_info 0x0001b64f 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_info 0x0001b6f4 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_info 0x0001b799 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_info 0x0001b83e 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_info 0x0001b9b2 0x60c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_info 0x0001bfbe 0x61d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_info 0x0001c5db 0x3fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_info 0x0001c9d9 0x420b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_info 0x00020be4 0x1494 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_info 0x00022078 0x13ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_info 0x00023464 0x1acb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_info 0x00024f2f 0x5e7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_info 0x00025516 0xb05 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_info 0x0002601b 0x2935 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_info 0x00028950 0x641 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_info 0x00028f91 0x48f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_info 0x00029420 0x1f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_info 0x00029616 0xe07 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_info 0x0002a41d 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_info 0x0002a742 0x3e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_info 0x0002ab2a 0x2ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_info 0x0002adf4 0x3dd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_info 0x0002b1d1 0x18b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_info 0x0002ca83 0x17b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_info 0x0002e239 0x5da c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + +.debug_abbrev 0x00000000 0x7d6c .debug_abbrev 0x00000000 0x499 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .debug_abbrev 0x00000499 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) .debug_abbrev 0x0000086f 0x4e5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) @@ -21086,55 +19306,52 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_abbrev 0x00003f63 0x73 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) .debug_abbrev 0x00003fd6 0x24f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .debug_abbrev 0x00004225 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_abbrev 0x000045fb 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .debug_abbrev 0x0000460f 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_abbrev 0x00004623 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_abbrev 0x00004637 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_abbrev 0x0000464b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_abbrev 0x0000465f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_abbrev 0x00004673 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_abbrev 0x00004687 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .debug_abbrev 0x0000469b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_abbrev 0x000046af 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .debug_abbrev 0x000046c3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_abbrev 0x000046d7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_abbrev 0x000046eb 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_abbrev 0x000046ff 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_abbrev 0x00004713 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_abbrev 0x00004727 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_abbrev 0x0000473b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_abbrev 0x0000474f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_abbrev 0x00004763 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_abbrev 0x00004777 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_abbrev 0x0000478b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_abbrev 0x0000479f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_abbrev 0x000047b3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_abbrev 0x000047c7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_abbrev 0x000047db 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_abbrev 0x000047ef 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_abbrev 0x00004803 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_abbrev 0x00004817 0xfd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_abbrev 0x00004914 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_abbrev 0x00004ab7 0x194 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_abbrev 0x00004c4b 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_abbrev 0x00004dee 0x212 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_abbrev 0x00005000 0x54e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_abbrev 0x0000554e 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_abbrev 0x000058c8 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_abbrev 0x00005c4c 0x3b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_abbrev 0x00005fff 0x2c2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_abbrev 0x000062c1 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_abbrev 0x00006577 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_abbrev 0x00006970 0x139 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_abbrev 0x00006aa9 0x219 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_abbrev 0x00006cc2 0xf2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_abbrev 0x00006db4 0x23f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_abbrev 0x00006ff3 0x189 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_abbrev 0x0000717c 0x14b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_abbrev 0x000072c7 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_abbrev 0x00007423 0x1a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_abbrev 0x000075c9 0x3e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_abbrev 0x000079b2 0x3f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_abbrev 0x000045fb 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_abbrev 0x0000460f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_abbrev 0x00004623 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_abbrev 0x00004637 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_abbrev 0x0000464b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_abbrev 0x0000465f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_abbrev 0x00004673 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_abbrev 0x00004687 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_abbrev 0x0000469b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_abbrev 0x000046af 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_abbrev 0x000046c3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_abbrev 0x000046d7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_abbrev 0x000046eb 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_abbrev 0x000046ff 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_abbrev 0x00004713 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_abbrev 0x00004727 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_abbrev 0x0000473b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_abbrev 0x0000474f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_abbrev 0x00004763 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_abbrev 0x00004777 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_abbrev 0x0000478b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_abbrev 0x0000479f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_abbrev 0x000047b3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_abbrev 0x000047c7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_abbrev 0x000047db 0xfd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_abbrev 0x000048d8 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_abbrev 0x00004a7b 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_abbrev 0x00004c1e 0x212 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_abbrev 0x00004e30 0x54e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_abbrev 0x0000537e 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_abbrev 0x000056f8 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_abbrev 0x00005a7c 0x3b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_abbrev 0x00005e2f 0x2c2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_abbrev 0x000060f1 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_abbrev 0x000063a7 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_abbrev 0x000067a0 0x139 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_abbrev 0x000068d9 0x219 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_abbrev 0x00006af2 0xf2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_abbrev 0x00006be4 0x23f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_abbrev 0x00006e23 0x189 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_abbrev 0x00006fac 0x14b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_abbrev 0x000070f7 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_abbrev 0x00007253 0x1a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_abbrev 0x000073f9 0x3e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_abbrev 0x000077e2 0x3f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_abbrev 0x00007bd8 0x194 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .debug_loc 0x00000000 0x21bf2 .debug_loc 0x00000000 0x14ed C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) @@ -21160,28 +19377,28 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_loc 0x0000e044 0x906 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) .debug_loc 0x0000e94a 0x50 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) .debug_loc 0x0000e99a 0xb8b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_loc 0x0000f525 0xcf5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_loc 0x0001021a 0xa45 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_loc 0x00010c5f 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_loc 0x00010e57 0x2e24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_loc 0x00013c7b 0x8d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_loc 0x0001454f 0xa49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_loc 0x00014f98 0x873 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_loc 0x0001580b 0x4fb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_loc 0x00015d06 0x1ab6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_loc 0x000177bc 0x2583 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_loc 0x00019d3f 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_loc 0x00019f71 0x665 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_loc 0x0001a5d6 0x1e3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_loc 0x0001a7b9 0x943 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_loc 0x0001b0fc 0x44e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_loc 0x0001b54a 0x3fb9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_loc 0x0001f503 0xbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_loc 0x0001f5be 0x699 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_loc 0x0001fc57 0x138c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_loc 0x00020fe3 0xc0f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - -.debug_aranges 0x00000000 0x11e8 + .debug_loc 0x0000f525 0xa45 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_loc 0x0000ff6a 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_loc 0x00010162 0x2e24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_loc 0x00012f86 0x8d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_loc 0x0001385a 0xa49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_loc 0x000142a3 0x873 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_loc 0x00014b16 0x4fb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_loc 0x00015011 0x1ab6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_loc 0x00016ac7 0x2583 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_loc 0x0001904a 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_loc 0x0001927c 0x665 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_loc 0x000198e1 0x1e3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_loc 0x00019ac4 0x943 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_loc 0x0001a407 0x44e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_loc 0x0001a855 0x3fb9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_loc 0x0001e80e 0xbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_loc 0x0001e8c9 0x699 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_loc 0x0001ef62 0x138c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_loc 0x000202ee 0xc0f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_loc 0x00020efd 0xcf5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + +.debug_aranges 0x00000000 0x1188 .debug_aranges 0x00000000 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .debug_aranges @@ -21229,103 +19446,97 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_aranges 0x00000b70 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) .debug_aranges - 0x00000ba8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .debug_aranges - 0x00000bc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_aranges - 0x00000be8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + 0x00000ba8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) .debug_aranges - 0x00000c08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + 0x00000bc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) .debug_aranges - 0x00000c28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + 0x00000be8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) .debug_aranges - 0x00000c48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + 0x00000c08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) .debug_aranges - 0x00000c68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + 0x00000c28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) .debug_aranges - 0x00000c88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) + 0x00000c48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) .debug_aranges - 0x00000ca8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + 0x00000c68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) .debug_aranges - 0x00000cc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) + 0x00000c88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) .debug_aranges - 0x00000ce8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + 0x00000ca8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) .debug_aranges - 0x00000d08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + 0x00000cc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) .debug_aranges - 0x00000d28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + 0x00000ce8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) .debug_aranges - 0x00000d48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + 0x00000d08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) .debug_aranges - 0x00000d68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + 0x00000d28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) .debug_aranges - 0x00000d88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + 0x00000d48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) .debug_aranges - 0x00000da8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + 0x00000d68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) .debug_aranges - 0x00000dc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + 0x00000d88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) .debug_aranges - 0x00000de8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + 0x00000da8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) .debug_aranges - 0x00000e08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + 0x00000dc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) .debug_aranges - 0x00000e28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + 0x00000de8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) .debug_aranges - 0x00000e48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + 0x00000e08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) .debug_aranges - 0x00000e68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + 0x00000e28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) .debug_aranges - 0x00000e88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + 0x00000e48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) .debug_aranges - 0x00000ea8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + 0x00000e68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) .debug_aranges - 0x00000ec8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + 0x00000e88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) .debug_aranges - 0x00000ee8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + 0x00000ea8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) .debug_aranges - 0x00000f08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + 0x00000ec8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) .debug_aranges - 0x00000f28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + 0x00000ee8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) .debug_aranges - 0x00000f48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + 0x00000f08 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) .debug_aranges - 0x00000f68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + 0x00000f48 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) .debug_aranges - 0x00000f88 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + 0x00000f68 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) .debug_aranges - 0x00000fc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + 0x00000f88 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) .debug_aranges - 0x00000fe8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + 0x00000fa8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) .debug_aranges - 0x00001008 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + 0x00000fc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) .debug_aranges - 0x00001028 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + 0x00000fe8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) .debug_aranges - 0x00001048 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + 0x00001008 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) .debug_aranges - 0x00001068 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + 0x00001028 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) .debug_aranges - 0x00001088 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + 0x00001048 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) .debug_aranges - 0x000010a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + 0x00001068 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) .debug_aranges - 0x000010c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + 0x00001088 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) .debug_aranges - 0x000010e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + 0x000010a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) .debug_aranges - 0x00001108 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + 0x000010c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) .debug_aranges - 0x00001128 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + 0x000010e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) .debug_aranges - 0x00001148 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + 0x00001108 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) .debug_aranges - 0x00001168 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + 0x00001128 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) .debug_aranges - 0x00001188 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + 0x00001148 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) .debug_aranges - 0x000011a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_aranges - 0x000011c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + 0x00001168 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .debug_ranges 0x00000000 0x1a10 .debug_ranges 0x00000000 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) @@ -21351,21 +19562,21 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_ranges 0x00000ed8 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .debug_ranges 0x00000f20 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) .debug_ranges 0x00000f90 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_ranges 0x00000ff0 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_ranges 0x00001050 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_ranges 0x000010e8 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_ranges 0x00001118 0x2a8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_ranges 0x000013c0 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_ranges 0x000013f0 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_ranges 0x00001460 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_ranges 0x00001498 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_ranges 0x000014c8 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_ranges 0x000015c8 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_ranges 0x000017e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_ranges 0x00001808 0x158 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_ranges 0x00001960 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - -.debug_line 0x00000000 0x1c7ab + .debug_ranges 0x00000ff0 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_ranges 0x00001088 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_ranges 0x000010b8 0x2a8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_ranges 0x00001360 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_ranges 0x00001390 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_ranges 0x00001400 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_ranges 0x00001438 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_ranges 0x00001468 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_ranges 0x00001568 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_ranges 0x00001788 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_ranges 0x000017a8 0x158 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_ranges 0x00001900 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_ranges 0x000019b0 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + +.debug_line 0x00000000 0x1c5e4 .debug_line 0x00000000 0xf97 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) .debug_line 0x00000f97 0x1039 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) .debug_line 0x00001fd0 0x123f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) @@ -21389,55 +19600,52 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) .debug_line 0x0000c22a 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) .debug_line 0x0000c2ea 0x42b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) .debug_line 0x0000c715 0x110c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_line 0x0000d821 0xbd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(clock.o) - .debug_line 0x0000d8de 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_line 0x0000d968 0x127 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_line 0x0000da8f 0xe5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_line 0x0000db74 0xf7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_line 0x0000dc6b 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_line 0x0000dd32 0x103 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_line 0x0000de35 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashldi3.o) - .debug_line 0x0000deba 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_line 0x0000df3f 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_lshrdi3.o) - .debug_line 0x0000dfc4 0x488 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_line 0x0000e44c 0x34a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_line 0x0000e796 0x2e4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_line 0x0000ea7a 0x2c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_line 0x0000ed40 0xe0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_line 0x0000ee20 0x110 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_line 0x0000ef30 0xec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_line 0x0000f01c 0x15e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_line 0x0000f17a 0x686 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_line 0x0000f800 0x5f8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_line 0x0000fdf8 0x4a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_line 0x00010298 0x35c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_line 0x000105f4 0xf2 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_line 0x000106e6 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_line 0x00010808 0xce c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_line 0x000108d6 0x1a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_line 0x00010a76 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_line 0x00010b98 0x96 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_line 0x00010c2e 0x1dd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_line 0x00010e0b 0x1a7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .debug_line 0x00010fb2 0x200 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_line 0x000111b2 0x49a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_line 0x0001164c 0x1d1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_line 0x00013369 0x729 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_line 0x00013a92 0x595 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_line 0x00014027 0x8f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_line 0x00014920 0x373 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_line 0x00014c93 0xc17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_line 0x000158aa 0x1709 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_line 0x00016fb3 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_line 0x000171db 0x70a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_line 0x000178e5 0x1a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_line 0x00017a8a 0x566 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_line 0x00017ff0 0x4cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_line 0x000184bc 0x28a1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_line 0x0001ad5d 0x19c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_line 0x0001aef9 0x586 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_line 0x0001b47f 0xd0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_line 0x0001c18a 0x621 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_line 0x0000d821 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) + .debug_line 0x0000d8ab 0x127 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) + .debug_line 0x0000d9d2 0xe5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) + .debug_line 0x0000dab7 0xf7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) + .debug_line 0x0000dbae 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) + .debug_line 0x0000dc75 0x103 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) + .debug_line 0x0000dd78 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) + .debug_line 0x0000ddfd 0x488 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) + .debug_line 0x0000e285 0x34a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) + .debug_line 0x0000e5cf 0x2e4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) + .debug_line 0x0000e8b3 0x2c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) + .debug_line 0x0000eb79 0xe0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) + .debug_line 0x0000ec59 0x110 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) + .debug_line 0x0000ed69 0xec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) + .debug_line 0x0000ee55 0x15e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) + .debug_line 0x0000efb3 0x686 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) + .debug_line 0x0000f639 0x5f8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) + .debug_line 0x0000fc31 0x4a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) + .debug_line 0x000100d1 0x35c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) + .debug_line 0x0001042d 0xf2 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) + .debug_line 0x0001051f 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) + .debug_line 0x00010641 0xce c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) + .debug_line 0x0001070f 0x1a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) + .debug_line 0x000108af 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) + .debug_line 0x000109d1 0x96 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) + .debug_line 0x00010a67 0x1dd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) + .debug_line 0x00010c44 0x200 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) + .debug_line 0x00010e44 0x49a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_line 0x000112de 0x1d1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_line 0x00012ffb 0x729 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_line 0x00013724 0x595 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_line 0x00013cb9 0x8f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_line 0x000145b2 0x373 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_line 0x00014925 0xc17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_line 0x0001553c 0x1709 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_line 0x00016c45 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_line 0x00016e6d 0x70a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_line 0x00017577 0x1a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_line 0x0001771c 0x566 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_line 0x00017c82 0x4cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_line 0x0001814e 0x28a1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_line 0x0001a9ef 0x19c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_line 0x0001ab8b 0x586 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_line 0x0001b111 0xd0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_line 0x0001be1c 0x621 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_line 0x0001c43d 0x1a7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) .debug_str 0x00000000 0x5851 .debug_str 0x00000000 0x850 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) @@ -21490,43 +19698,43 @@ OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) 0x1be (size before relaxing) .debug_str 0x00003918 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) 0x214 (size before relaxing) - .debug_str 0x000039df 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + .debug_str 0x000039df 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) 0x215 (size before relaxing) - .debug_str 0x000039e9 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - 0x215 (size before relaxing) - .debug_str 0x000039f3 0x34f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) + .debug_str 0x000039e9 0x34f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) 0x3ec (size before relaxing) - .debug_str 0x00003d42 0xd2a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) + .debug_str 0x00003d38 0xd2a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) 0xf9f (size before relaxing) - .debug_str 0x00004a6c 0xd2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) + .debug_str 0x00004a62 0xd2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) 0x92e (size before relaxing) - .debug_str 0x00004b3e 0x137 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) + .debug_str 0x00004b34 0x137 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) 0x975 (size before relaxing) - .debug_str 0x00004c75 0x338 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) + .debug_str 0x00004c6b 0x338 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) 0x751 (size before relaxing) - .debug_str 0x00004fad 0xd1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) + .debug_str 0x00004fa3 0xd1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) 0x2a6 (size before relaxing) - .debug_str 0x0000507e 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) + .debug_str 0x00005074 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) 0x241 (size before relaxing) - .debug_str 0x0000511e 0x254 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) + .debug_str 0x00005114 0x254 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) 0x505 (size before relaxing) - .debug_str 0x00005372 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) + .debug_str 0x00005368 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) 0x236 (size before relaxing) - .debug_str 0x00005396 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) + .debug_str 0x0000538c 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) 0x1bc (size before relaxing) - .debug_str 0x000053da 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) + .debug_str 0x000053d0 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) 0x145 (size before relaxing) - .debug_str 0x000053f1 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) + .debug_str 0x000053e7 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) 0x42d (size before relaxing) - .debug_str 0x000054d1 0x35 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) + .debug_str 0x000054c7 0x35 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) 0x1e4 (size before relaxing) - .debug_str 0x00005506 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) + .debug_str 0x000054fc 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) 0x1cb (size before relaxing) - .debug_str 0x00005551 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) + .debug_str 0x00005547 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) 0x1bd (size before relaxing) - .debug_str 0x00005561 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) + .debug_str 0x00005557 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) 0x1c6 (size before relaxing) - .debug_str 0x0000558c 0x196 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) + .debug_str 0x00005582 0x196 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) 0x637 (size before relaxing) - .debug_str 0x00005722 0x12f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) + .debug_str 0x00005718 0x12f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) 0x87e (size before relaxing) + .debug_str 0x00005847 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) + 0x215 (size before relaxing) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 3067271e9bbf..20d5bdfa7653 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -415,6 +415,7 @@ enum UnitNames { UNIT_LUX, UNIT_MICROSECOND, UNIT_MILLIAMPERE, + UNIT_MILLIMETER_MERCURY, UNIT_MILLISECOND, UNIT_MINUTE, UNIT_PPB, @@ -436,6 +437,7 @@ const char kUnitNames[] PROGMEM = D_UNIT_LUX "|" D_UNIT_MICROSECOND "|" D_UNIT_MILLIAMPERE "|" + D_UNIT_MILLIMETER_MERCURY "|" D_UNIT_MILLISECOND "|" D_UNIT_MINUTE "|" D_UNIT_PARTS_PER_BILLION "|" @@ -527,8 +529,13 @@ const char kOptionBlinkOff[] PROGMEM = "BLINKOFF|" D_BLINKOFF ; #ifdef USE_WEBSERVER const char HTTP_SNS_TEMP[] PROGMEM = "%s{s}%s " D_TEMPERATURE "{m}%s°%c{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; // {s} = , {m} = , {e} = +#ifndef USE_MMHG const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = +#else +const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = , {e} = +#endif const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} = , {m} = , {e} = #if defined(USE_MHZ19) || defined(USE_SENSEAIR) From 604a07853532b133d8e21ad8ec029b4780e3844c Mon Sep 17 00:00:00 2001 From: eeak <39026644+eeak@users.noreply.github.com> Date: Thu, 1 Nov 2018 21:24:12 +0200 Subject: [PATCH 430/798] Delete firmware.map --- firmware.map | 19740 ------------------------------------------------- 1 file changed, 19740 deletions(-) delete mode 100644 firmware.map diff --git a/firmware.map b/firmware.map deleted file mode 100644 index ec3ea748ae95..000000000000 --- a/firmware.map +++ /dev/null @@ -1,19740 +0,0 @@ -Archive member included because of file (symbol) - -.pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (TwoWire::read()) -.pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Ticker::Ticker()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (c2_reset()) -.pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ihx_decode(unsigned char*, unsigned short)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFi) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiAPClass::softAP(char const*, char const*, int, int)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) (ESP8266WiFiGenericClass::ESP8266WiFiGenericClass()) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WiFiScanClass::scanNetworks(bool, bool)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiClient::connect(IPAddress, unsigned short)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (WiFiUDP::endPacket()) -.pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (MDNSResponder::hostname(int)) -.pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (DNSServer::DNSServer()) -.pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (RCSwitch::setProtocol(int)) -.pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266HTTPUpdate::getLastError()) -.pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaSerial::TasmotaSerial(int, int, bool)) -.pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (TasmotaModbus::TasmotaModbus(int, int)) -.pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_SGP30::Adafruit_SGP30()) -.pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (Adafruit_CCS811::available()) -.pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (PubSubClient::PubSubClient(Client&)) -.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (ESP8266WebServer::ESP8266WebServer(int)) -.pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (ESP8266WebServer::_parseRequest(WiFiClient&)) -.pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int)) -.pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (vtable for fs::File) -.pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (HardwareSerial::flush()) -.pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (vtable for IPAddress) -.pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (MD5Builder::begin()) -.pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) (Print::write(unsigned char const*, unsigned int)) -.pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (Stream::readBytes(char*, unsigned int)) -.pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (vtable for StreamString) -.pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (UpdaterClass::begin(unsigned int, int)) -.pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (random(long)) -.pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (String::String(String&&)) -.pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (operator new(unsigned int)) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (eboot_command_read) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (atexit) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) (atol) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) (__panic_func) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) (twi_setClock) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (delay) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (shiftIn) -.pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) (pvPortMalloc) -.pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (base64_encode_chars) -.pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (printf) -.pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (strnlen_P(char const*, unsigned int)) -.pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) (uart_write_char) -.pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) (umm_info) -.pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (run_scheduled_functions()) -.pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (cont_yield) -.pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) (cont_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) (smartconfig_stop) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) (pAKGuideGlob) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) (pETGuideGlob) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) (wifi_fpm_set_sleep_type) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (pend_flag_noise_check) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (RC_GetAckTime) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (rcUpdateRxDone) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (wDevCtrl) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) (esf_rx_buf_alloc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (ic_is_pure_sta) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) (lmacConfMib) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (flash_tmp) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (lwip_timer_interval) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) (ets_vsnprintf) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (timer_list) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) (spi_flash_get_id) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (done_cb) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - (_DebugExceptionVector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - (_DoubleExceptionVector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - (_KernelExceptionVector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - (_NMIExceptionVector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - (_UserExceptionVector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - (call_user_start) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (hostname) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (hexstr2bin) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) (os_get_time) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (dhcps_start) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) (espconn_create) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) (espconn_tcp_disconnect) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) (espconn_udp_sendto) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (dhcp_cleanup) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) (dns_setserver) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (lwip_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) (netif_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (pbuf_free) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (sntp_get_current_timestamp) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) (tcp_pcb_lists) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (tcp_write) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) (sys_timeout) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) (udp_bind) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) (etharp_tmr) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) (icmp_dest_unreach) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) (igmp_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) (inet_chksum_pseudo) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) (ip_route) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) (ip4_addr_isbroadcast) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) (memp_sizes) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) (raw_input) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) (tcp_input_pcb) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (g_ic) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_crypto_attach) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (ieee80211_getmgtframe) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (BcnEb_update) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_ht_attach) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_decap) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_mesh_quick_get) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) (ieee80211_output_pbuf) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (ieee80211_phy_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (ieee80211_psq_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_proto_attach) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_rfid_locp_recv_open) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (gScanStruct) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (ieee80211_sta_new_state) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (chm_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) (sta_con_timer) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) (ieee80211_send_action_register) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) (ieee80211_action_vendor_spec_attach) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) (ccmp) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) (ieee80211_add_ie_vendor_esp_mesh_assoc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (wifi_wps_enable) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_generate_pin) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_build_manufacturer) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_enrollee_get_msg) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) (wps_device_store) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) (wps_validate_m1) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (eap_msg_alloc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) (uuid_bin2str) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_build_public_key) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wps_parse_msg) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) (wps_process_authenticator) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) (aes_128_cbc_encrypt) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) (aes_decrypt_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) (aes_encrypt_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) (dh5_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) (dh_groups_get) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) (hmac_sha256_vector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) (sha256_vector) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) (rijndaelKeySetupEnc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) (crypto_mod_exp) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) (bignum_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) (phy_change_channel) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) (chip_v6_set_chan_offset) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (g_phyFuns) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (phy_tx_pwr_error) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (chip_v6_set_sense) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) (pm_usec2rtc) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (xthal_set_intclear) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divsi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__modsi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o (__udivsi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o (__umodsi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) (__umulsidi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) (__ashrdi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__addsf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__mulsf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divsf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__eqsf2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixsfsi) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixunssfsi) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatunsisf) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatdisf) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__adddf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__muldf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divdf3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__gtdf2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixdfsi) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fixunsdfsi) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__floatunsidf) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__truncdfsf2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__extendsfdf2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__muldi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__divdi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) (__umoddi3) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (atan) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (cos) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) (fabs) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fpclassifyd) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) (modf) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (sin) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (tan) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (__fpclassifyf) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (acos) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .pioenvs\sonoff\src\sonoff.ino.cpp.o (asin) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) (log) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (__ieee754_acos) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) (__ieee754_asin) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) (__ieee754_log) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__ieee754_rem_pio2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) (__ieee754_sqrt) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__kernel_cos) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) (__kernel_rem_pio2) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) (__kernel_sin) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) (__kernel_tan) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) (floor) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (__fdlib_version) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (matherr) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) (nan) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) (scalbn) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) (copysign) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) (std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) (vtable for WiFiServer) -.pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) (HTTPClient::HTTPClient()) -.pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) (base64::encode(String)) -.pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) (__wrap_register_chipv6_phy) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (hostapd_setup_wpa_psk) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) (wpa_init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (wpa_auth_gen_wpa_ie) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) (wpabuf_put) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) (wpa_sm_rx_eapol) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) (wpa_parse_wpa_ie_rsn) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (eloop_cancel_timeout) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) (wpa_parse_wpa_ie) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) (ppInstallKey) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) (wpa_sm_alloc_eapol) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (tkip) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (wep) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) (aes_wrap) -.pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) (WiFiClientSecure::~WiFiClientSecure()) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) (ssl_ctx_new) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (do_client_connect) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (do_svr_handshake) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (x509_free) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RNG_initialize) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (AES_set_key) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (bi_clear_cache) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (ax_hmac_md5) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (MD5_Init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RC4_setup) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (RSA_free) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (SHA1_Init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA256_Init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA384_Init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (SHA512_Init) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) (get_asn1_length) -C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) (load_key_certs) -c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) (__udivdi3) -.pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) (mktime) - -Allocating common symbols -Common symbol size file - -hex_index 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) -current_iphdr_src 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) -hex_finish 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) -__tznorth 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) -tcp_tw_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -tcp_ticks 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -__tzyear 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) -udp_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) -tcp_tmp_pcb 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -tcp_listen_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -netif_default 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) -tcp_active_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -res_buf 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) -current_netif 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) -pktinfo 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) -sntp__tzrule 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) -tcp_bound_pcbs 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) -ummHeapInfo 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) -reult 0x64 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) -current_header 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) -tcp_input_pcb 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) -dhcp_rx_options_val - 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) -espconn_TaskQueue 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) -dhcp_rx_options_given - 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) -current_iphdr_dest 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) -premot 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) -netif_list 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - -Discarded input sections - - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .literal.timer1_attachInterrupt - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .literal.timer1_enable - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .literal.timer0_isr_init - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .literal.timer0_attachInterrupt - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .text.timer1_attachInterrupt - 0x00000000 0x25 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .text.timer0_isr_init - 0x00000000 0x21 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .text.timer0_attachInterrupt - 0x00000000 0x24 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .xt.lit 0x00000000 0x58 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .literal.__pinMode - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .literal.initPins - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .xt.lit 0x00000000 0x38 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .xt.prop 0x00000000 0x3a8 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.pwm_sort_array - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.pwm_get_mask - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.prep_pwm_steps - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.pwm_start_timer - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.__analogWrite - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.__analogWriteFreq - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .literal.__analogWriteRange - 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .text 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .data 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .bss 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .xt.prop 0x00000000 0x30c .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22HandlePreflightRequestv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZL9WebGetArgPKcPcj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13Tx20StartReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14__get_adc_modev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6FormatPcPKci - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9GetOtaUrlPcj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10GetTopic_PPchS_PKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12GetStateTexth - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SetLatchingRelaymh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11SetLedPowerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11GetFanspeedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SetPulseTimerht - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MqttShowPWMStatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17GpioSwitchPinModeh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17GetRtcSettingsCrcv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15RtcSettingsSavev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13OsWatchTickerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15RtcSettingsLoadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16RtcSettingsValidv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15GetRtcRebootCrcv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13RtcRebootSavev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13RtcRebootLoadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14RtcRebootValidv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SetFlashModeDoutv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18SettingsBufferFreev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetSettingsCrcv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18GetSettingsAddressv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SettingsEraseConfigv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SettingsDefaultSet1v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24SettingsDefaultSet_5_8_1v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z25SettingsDefaultSet_5_10_1v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SettingsResetStdv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SettingsResetDstv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26SettingsDefaultSet_5_13_1cv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11OsWatchInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11OsWatchLoopv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetResetReasonv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18OsWatchBlockedLoopv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.memchr - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.strcspn - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9strchrspnPKci - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12CharToDoublePc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9TextToIntPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8dtostrfddhPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8UnescapePcPt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11RemoveSpacePc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9UpperCasePcPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11UpperCase_PPcPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z5LTrimPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z5RTrimPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z4TrimPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6subStrPcS_PKci - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19NoAlNumToUnderscorePcPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11SetShortcutPch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8ShortcutPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7ParseIpPjPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SettingsDefaultSet2v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13MakeValidMqtthPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12NewerVersionPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetPowerDevicePchjh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetPowerDevicePchj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11ConvertTempf - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8TempUnitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12ConvertPressf - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15SetGlobalValuesff - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17ResetGlobalValuesv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14FastPrecisePowdd - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7SqrtIntj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12RoundSqrtIntj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetTextIndexedPcjtPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetCommandCodePcjPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetStateNumberPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15GetUsedInModulehPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SerialSendRawPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7GetHashPKcj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9ValidGPIOhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14TimeDifferencemm - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15TimePassedSincem - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13GetPulseTimerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11TimeReachedm - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SetNextTimeIntervalRmm - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11GetFeaturesv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20WifiGetRssiAsQualityi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17WifiConfigCounterv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17WifiWpsConfigDonev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18WifiWpsConfigBeginv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16WiFiSetSleepModev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12WifiSetStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9WifiStatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11WifiConnectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10EspRestartv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7I2cScanPcj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9I2cDeviceh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19GetBuildDateAndTimev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11GetTimeZonev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7GetTimei - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22GetMinutesPastMidnightv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9BreakTimejR6TIME_T - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetDateAndTimeh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9GetUptimev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16GetMinutesUptimev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8MakeTimeR6TIME_T - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10RuleToTime8TimeRulei - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9LocalTimev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Midnightv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11MidnightNowv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7RtcInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SetSeriallogh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6GetLoghPPcPj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16PollDnsWebserverv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9SetHeaderv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15WebAuthenticatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10htmlEscape6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14ValidIpAddress6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9UrlEncodeRK6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15MqttIsConnectedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14MqttDisconnectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MqttSubscribeLibPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14MqttPublishLibPKch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8MqttLoopv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15MqttLibraryTypev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MqttRetryCounterh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17EnergyUpdateTodayv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15EnergySaveStatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12EnergyMarginhttRhS_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z27EnergySetPowerSteadyCounterv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10EnergyShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12LightDiPulseh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14LightDckiPulseh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16LightMy92x1Writeh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15LightMy92x1Initv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15LightMy92x1Dutyhhhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9LightInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17LightSetColorTempt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17LightGetColorTempv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14LightSetDimmerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LightSetColorv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14LightSetSignalttt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LightGetColorhPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9LightFadev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10LightWheelh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15LightCycleColora - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16LightRandomColorv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LightRgbToHsbv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LightHsbToRgbv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11LightGetHsbPfS_S_b - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10LightStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13MqttShowStatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15LightColorEntryPch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24rf_find_hex_record_startPhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z22rf_find_hex_record_endPhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19rf_decode_and_writePhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z39rf_glue_remnant_with_new_data_and_writePKhPhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19rf_search_and_writePhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14rf_erase_flashv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15SnfBrUpdateInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23SonoffBridgeSendCommandh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SonoffBridgeSendAckv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20SonoffBridgeSendCodej - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SonoffBridgeSendhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17SonoffBridgeLearnh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SonoffBridgeCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SonoffBridgeInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SerialBridgeInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SerialBridgeCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17JulianischesDatumv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z4InPid - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z3epsd - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21BerechneZeitgleichungPdd - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12DuskTillDawnPhS_S_S_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17ApplyTimerOffsetsP5Timer - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6GetSunh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13GetSunMinutesh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20TimerSetRandomWindowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21TimerSetRandomWindowsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PrepShowTimerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9RulesInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13RulesSetPowerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12RulesCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10map_doubleddddd - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18TuyaModuleSelectedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6RfInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8XdrvCallh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11XdrvCommandhPctS_tst - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12XdrvMqttDataPctS_t - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16XdrvRulesProcessv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11ShowFreeMemPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8ShowPageR6Stringb - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8ShowPageR6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HandleLoggingConfigurationv$part$100 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleOtherConfigurationv$part$101 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleMqttConfigurationv$part$112 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HandleWifiLoginv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11XdspPresentv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8XdspCallh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13HlwEvery200msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14HlwEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10HlwSnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10HlwDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10HlwCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg01h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CseEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10CseDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10CseCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7PzemCrcPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8PzemSendh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16PzemReceiveReadyv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11PzemDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PzemAcDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PzemDcDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8XnrgCallh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Energy200msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13EnergyCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13EnergyDrvInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13EnergySnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv03h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16WemoSerialnumberv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8WemoUuidv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11HueBridgeIdv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HueSerialnumberv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7HueUuidv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14GetHueDeviceIdh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12GetHueUserIdv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HueConfigResponseP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HueConfigP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HueLightStatus1hP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HueLightStatus2hP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HueGlobalConfigP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HueAuthenticationP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HueGroupsP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13CounterUpdateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CounterUpdate1v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CounterUpdate2v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CounterUpdate3v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CounterUpdate4v - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16CounterSaveStatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11CounterInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11CounterShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns01h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SonoffScShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12OneWireResetv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15OneWireWriteBith - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14OneWireReadBitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12OneWireWriteh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11OneWireReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13OneWireSelectPKh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18OneWireResetSearchv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13OneWireSearchPh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11OneWireCrc8Ph - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14Ds18x20Convertv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ds18x20Nameh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ds18x20Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11DhtReadPrepv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14DhtExpectPulsehb - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8DhtSetuphh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8GpioInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7DhtInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7DhtShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7BmpShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9Sgp30Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10CCS811Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HxIsReadyt - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6HxReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7HxResetv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8HxWeightv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6HxInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6HxShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Tx20Readv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Tx20Initv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8Tx20Showh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns35h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11XsnsPresentv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12XsnsNextCallh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8XsnsCallh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14MqttShowSensorv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18HueWemoAddHandlersv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13RfSendCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14RulesRuleMatchhR6StringS0_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8I2cWritehhjh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9I2cWrite8hht - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10I2cWrite16hht - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14I2cWriteBufferhhPht - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12I2cValidReadhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13I2cValidRead8Phhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14I2cValidRead16Pthh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16I2cValidRead16LEPthh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18I2cValidReadS16_LEPshh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15I2cValidReadS16Pshh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14I2cValidRead24Pihh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8I2cRead8hh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9I2cRead16hh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17Bmp180Calibrationh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LM75ADGetTempv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10LM75ADShowh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10I2cReadS16hh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11I2cRead16LEhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13I2cReadS16_LEhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15Bmx280Calibrateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9I2cRead24hh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Bmp180Readh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10Bme280Readh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7BmpReadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13I2cReadBufferhhPht - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Syslogv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6AddLogh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SettingsSaveh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15SettingsSaveAllv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SettingsDeltav - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SettingsEraseh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16SettingsSdkErasev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17SetSerialBaudratei - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10ShowSourcei$part$63 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10ShowSourcei - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14SetDevicePowermi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.WifiWpsStatusCallback - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9RtcSecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8AddLog_PhPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SettingsBufferAllocv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15SettingsDefaultv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11ClaimSerialv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11PzemSnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PzemAcSnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PzemDcSnsInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13StopWebserverv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11CseReceivedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13UdpDisconnectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10UdpConnectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ds18x20Readh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SettingsLoadv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.setup - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8AddLog_PhPKcS0_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleUpnpServicev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21HandleUpnpMetaServicev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19HandleUpnpSetupWemov - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18HandleUpnpSetupHuev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleInformationv$part$105 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9WifiBeginh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12AddLogSerialhPhi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12AddLogSerialh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14CseSerialInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg02h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11PzemRecievehPf - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14PzemEvery200msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg03h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12AddLogMissedPch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18Ds18x20EverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14StartWebserveri9IPAddress - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16WifiManagerBeginv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10WifiConfigh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11WifiCheckIpv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9WifiCheckh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18ModuleSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16WifiSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19LoggingSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17OtherSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16HandleUploadLoopv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18MqttDiscoverServerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13MqttSubscribePc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17MqttPublishDirectPKch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7SendKeyhhh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11MqttPublishPKch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11MqttPublishPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24MqttPublishPrefixTopic_PhPKch - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24MqttPublishPrefixTopic_PhPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13PublishStatush - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26MqttPublishPowerBlinkStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23SonoffBridgeReceivedRawv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23SonoffBridgeLearnFailedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20SonoffBridgeReceivedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23SonoffBridgeSerialInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv06h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17SerialBridgeInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv08h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12TimerCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HxCalibrationStateTextJsonh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HxCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HxEvery100mSecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns34h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14EnergyMqttShowv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21MqttPublishPowerStateh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19ExecuteCommandPowerhhi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11SetFanspeedh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17StopAllPowerBlinkv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13SwitchHandlerh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17EnergyMarginCheckv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns03h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12LightPowerOnv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17LightPreparePowerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11LightSetHsbffftb - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12LightCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16TimerEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv09h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15HandleUpnpEventv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9HueLightsP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13MqttConnectedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11MqttCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv02h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15MqttDataHandlerPcPhj - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14ExecuteCommandPci - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13TuyaResetWifiv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16Every100mSecondsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13ButtonHandlerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MqttDisconnectedi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16MqttSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17TimerSaveSettingsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14RuleSetProcesshR6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17RulesProcessEventPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12RulesProcessv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15RulesEvery100msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15RulesTeleperiodv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z18PerformEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14RulesEvery50msv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16RulesEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv10h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12TuyaSetPowerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15LightSerialDutyh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12LightAnimatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13LightSetPowerv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv04h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17TuyaPacketProcessv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z15TuyaSerialInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14TuyaSetWifiLedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8TuyaInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17TuyaButtonPressedv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv16h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14RfReceiveCheckv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv17h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17PzemAcEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg05h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17PzemDcEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xnrg06h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HueNotImplementedP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12HandleHueApiP6String - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SonoffScSendPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12SonoffScInitv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns04h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19SonoffScSerialInputPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11SerialInputv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Ds18x20Initv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns05h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7DhtReadh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14DhtReadTempHumh - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14DhtEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns06h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9BmpDetectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14BmpEverySecondv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns09h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z11Sgp30Updatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns21h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12LM75ADDetectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns26h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z12CCS811Updatev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xsns31h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleWifiConfigurationv$part$99 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z20WemoRespondToMSearchi - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19HueRespondToMSearchv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13ShowWebSourcei$part$92 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13ShowWebSourcei - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17ExecuteWebCommandPci - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleHttpCommandv$part$109 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleAjaxConsoleRefreshv$part$111 - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleAjaxStatusRefreshv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10WebRestarth - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13MqttReconnectv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z9MqttCheckv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16Every250mSecondsv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.loop 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.startup._GLOBAL__sub_I_Settings - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal.exit._GLOBAL__sub_D_Settings - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13CaptivePortalv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10HandleRootv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z8HttpUserv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z19HandleConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z25HandleModuleConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleWifiConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HandleLoggingConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleOtherConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z25HandleBackupConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleResetConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HandleRestoreConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleInformationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z21HandleUpgradeFirmwarev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z26HandleUpgradeFirmwareStartv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z16HandleUploadDonev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z17HandleHttpCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z13HandleConsolev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleAjaxConsoleRefreshv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z23HandleMqttConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z24HandleTimerConfigurationv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z14HandleNotFoundv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7WebSendPc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z10WebCommandv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z7PollUdpv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._Z6Xdrv01h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .data 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z12GetStateTexth - 0x00000000 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z16RtcSettingsValidv - 0x00000000 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z14RtcRebootValidv - 0x00000000 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z18GetSettingsAddressv - 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z18OsWatchBlockedLoopv - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text.strcspn 0x00000000 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z9TextToIntPc - 0x00000000 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z5RTrimPc - 0x00000000 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z14GetPowerDevicePchj - 0x00000000 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z17WifiWpsConfigDonev - 0x00000000 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z18WifiWpsConfigBeginv - 0x00000000 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z9I2cDeviceh - 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z9LocalTimev - 0x00000000 0xb .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z8Midnightv - 0x00000000 0xb .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z15MqttLibraryTypev - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z16MqttRetryCounterh - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z27EnergySetPowerSteadyCounterv - 0x00000000 0xe .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z14LightSetSignalttt - 0x00000000 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z19SonoffBridgeSendAckv - 0x00000000 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z10map_doubleddddd - 0x00000000 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z11XdspPresentv - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z8XdspCallh - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z8HxWeightv - 0x00000000 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z11XsnsPresentv - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z10I2cWrite16hht - 0x00000000 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z14I2cWriteBufferhhPht - 0x00000000 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z13I2cValidRead8Phhh - 0x00000000 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z16I2cValidRead16LEPthh - 0x00000000 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z18I2cValidReadS16_LEPshh - 0x00000000 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z15I2cValidReadS16Pshh - 0x00000000 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z14I2cValidRead24Pihh - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z10I2cReadS16hh - 0x00000000 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z13I2cReadS16_LEhh - 0x00000000 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text._Z13I2cReadBufferhhPht - 0x00000000 0x95 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .text.WifiWpsStatusCallback - 0x00000000 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .data.bmp_once - 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.rules_quota - 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.config_xor_on - 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.wps_result - 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.spi_flg 0x00000000 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.state_second - 0x00000000 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.lit 0x00000000 0xef8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xt.prop 0x00000000 0x120b4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .group 0x00000000 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWireC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire4pinsEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire5beginEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire8setClockEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire20setClockStretchLimitEj - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhjb - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEhh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire11requestFromEiii - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire17beginTransmissionEi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEh - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire15endTransmissionEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire4pinsEii - 0x00000000 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEh - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire6statusEv - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire5beginEi - 0x00000000 0x17 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire8setClockEj - 0x00000000 0x18 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEhhh - 0x00000000 0x2a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire11requestFromEiii - 0x00000000 0x26 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire17beginTransmissionEi - 0x00000000 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onReceiveServiceEPhi - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire16onRequestServiceEv - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onReceiveEPFviE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .text._ZN7TwoWire9onRequestEPFvvE - 0x00000000 0x2 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onReceiveE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .bss._ZN7TwoWire14user_onRequestE - 0x00000000 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.lit 0x00000000 0xc8 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xt.prop 0x00000000 0x528 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZN6TickerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker10_attach_msEjbPFvPvEj - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6Ticker6detachEv - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._ZN6TickerD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xt.prop 0x00000000 0xb4 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .literal._Z10C2D_enableb$part$0 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL6c2_bitb - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z16c2_address_writeh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_address_readv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_data_writejh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRjh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z12c2_data_readRhh$isra$1 - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z8c2_resetv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z19c2_programming_initv - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_block_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_eeprom_writejPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_block_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z14c2_eeprom_readjPhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z13c2_page_eraseh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z15c2_device_erasev - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z18c2_sfr_write_pagedhh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z17c2_sfr_read_pagedhRh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._Z23c2_print_status_by_nameh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z15c2_eeprom_writejPhh - 0x00000000 0x191 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_block_readjPhh - 0x00000000 0x24f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z14c2_eeprom_readjPhh - 0x00000000 0x1fb .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z13c2_page_eraseh - 0x00000000 0x1e7 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z22c2_sfr_write_non_pagedhh - 0x00000000 0x2f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z18c2_sfr_write_pagedhh - 0x00000000 0x1a9 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z21c2_sfr_read_non_pagedhRh - 0x00000000 0x2b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z17c2_sfr_read_pagedhRh - 0x00000000 0x18b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.str1.4 - 0x00000000 0x85 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .text._Z23c2_print_status_by_nameh - 0x00000000 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .rodata.CSWTCH$90 - 0x00000000 0x24 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.lit 0x00000000 0xa0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .literal._ZL12value_of_hexh - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .literal._Z10ihx_decodePht - 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .literal._ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .rodata.str1.4 - 0x00000000 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .rodata 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .text._ZN16ESP8266WiFiClass9printDiagER5Print - 0x00000000 0x249 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .xt.prop 0x00000000 0x78 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .literal._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPdisconnectEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass8softAPIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .literal._ZN18ESP8266WiFiAPClass16softAPmacAddressEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .text._ZN18ESP8266WiFiAPClass16softAPdisconnectEb - 0x00000000 0x82 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .text._ZN18ESP8266WiFiAPClass19softAPgetStationNumEv - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEPh - 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .xt.lit 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .xt.prop 0x00000000 0x228 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._Z23wifi_dns_found_callbackPKcP7ip_addrPv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES4_EUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES2_EUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClassC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass7channelEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass12getSleepModeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass10setPhyModeE11WiFiPhyMode - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass10getPhyModeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass14setOutputPowerEf - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass10persistentEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass7getModeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass9enableSTAEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass8enableAPEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass15forceSleepBeginEj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass14forceSleepWakeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC5ERKS4_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC5ERKS4_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC5ERKS4_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC5ERKS4_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES0_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._Z24onStationModeDHCPTimeoutSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x45 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x45 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES4_EUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES2_EUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x00000000 0x4a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x00000000 0x94 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass12getSleepModeEv - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass10setPhyModeE11WiFiPhyMode - 0x00000000 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass14setOutputPowerEf - 0x00000000 0x76 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass7getModeEv - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass15forceSleepBeginEj - 0x00000000 0x79 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass14forceSleepWakeEv - 0x00000000 0x59 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC2ERKS4_ - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC2ERKS4_ - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZ24onStationModeDHCPTimeoutSt8functionIFvvEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC2ERKS4_ - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC2ERKS4_ - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass7onEventEPFv9WiFiEventES0_ - 0x00000000 0xd4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass31onSoftAPModeStationDisconnectedESt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEE - 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass28onSoftAPModeStationConnectedESt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEE - 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._Z24onStationModeDHCPTimeoutSt8functionIFvvEE - 0x00000000 0x132 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass28onStationModeAuthModeChangedESt8functionIFvRK35WiFiEventStationModeAuthModeChangedEE - 0x00000000 0x136 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .text._ZN23ESP8266WiFiGenericClass22onStationModeConnectedESt8functionIFvRK29WiFiEventStationModeConnectedEE - 0x00000000 0x132 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .bss._ZN23ESP8266WiFiGenericClass19_forceSleepLastModeE - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.lit 0x00000000 0x150 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop 0x00000000 0xa74 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop._ZNSt8functionIFvRK29WiFiEventStationModeConnectedEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop._ZNSt8functionIFvRK35WiFiEventStationModeAuthModeChangedEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop._ZNSt8functionIFvRK35WiFiEventSoftAPModeStationConnectedEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xt.prop._ZNSt8functionIFvRK38WiFiEventSoftAPModeStationDisconnectedEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._Z18wifi_wps_status_cb13wps_cb_status - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass9reconnectEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass10disconnectEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass14setAutoConnectEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass14getAutoConnectEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass16setAutoReconnectEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass7localIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass10macAddressEPh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass10macAddressEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass10subnetMaskEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass9gatewayIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass5dnsIPEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass8hostnameEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass8hostnameEPc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass8hostnameEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass8hostnameE6String - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass11isConnectedEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass20waitForConnectResultEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZNK19ESP8266WiFiSTAClass4SSIDEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZNK19ESP8266WiFiSTAClass3pskEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass5BSSIDEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass8BSSIDstrEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass4RSSIEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass14beginWPSConfigEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass16beginSmartConfigEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass15stopSmartConfigEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass20_smartConfigCallbackEjPv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN19ESP8266WiFiSTAClass15smartConfigDoneEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._Z18wifi_wps_status_cb13wps_cb_status - 0x00000000 0x2c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass9reconnectEv - 0x00000000 0x3f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass16setAutoReconnectEb - 0x00000000 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass10macAddressEPh - 0x00000000 0x20 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass8hostnameEv - 0x00000000 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass8hostnameEPKc - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass8hostnameE6String - 0x00000000 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass5beginEv - 0x00000000 0x71 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass11isConnectedEv - 0x00000000 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass20waitForConnectResultEv - 0x00000000 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZNK19ESP8266WiFiSTAClass4SSIDEv - 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZNK19ESP8266WiFiSTAClass3pskEv - 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass5BSSIDEv - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass14beginWPSConfigEv - 0x00000000 0x85 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass16beginSmartConfigEv - 0x00000000 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass15stopSmartConfigEv - 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass20_smartConfigCallbackEjPv - 0x00000000 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .text._ZN19ESP8266WiFiSTAClass15smartConfigDoneEv - 0x00000000 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .bss._ZZN19ESP8266WiFiSTAClass5BSSIDEvE4conf - 0x00000000 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .bss._ZN19ESP8266WiFiSTAClass16_smartConfigDoneE - 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .bss._ZN19ESP8266WiFiSTAClass19_smartConfigStartedE - 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .xt.lit 0x00000000 0x108 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .xt.prop 0x00000000 0x750 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .literal._ZN20ESP8266WiFiScanClass9_scanDoneEPvi - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass12scanCompleteEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass10scanDeleteEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass12scanNetworksEbb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass4SSIDEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass14encryptionTypeEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass14getNetworkInfoEhR6StringRhRiRPhS3_Rb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass4RSSIEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass5BSSIDEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass8BSSIDstrEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass7channelEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .literal._ZN20ESP8266WiFiScanClass8isHiddenEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .text._ZN20ESP8266WiFiScanClass12scanCompleteEv - 0x00000000 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .text._ZN20ESP8266WiFiScanClass14getNetworkInfoEhR6StringRhRiRPhS3_Rb - 0x00000000 0x8f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .text._ZN20ESP8266WiFiScanClass5BSSIDEh - 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .text._ZN20ESP8266WiFiScanClass8isHiddenEh - 0x00000000 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .xt.lit 0x00000000 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .xt.prop 0x00000000 0x39c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient9connectedEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientcvbEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient7connectEPKct - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient7connectE9IPAddresst - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient6_s_errEPva - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient9peekBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient4readEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientC2EP13ClientContext - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientC2ERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClientaSERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient10_connectedEPva - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient12_s_connectedEPvS0_a - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient4_errEa - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient10setNoDelayEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient10getNoDelayEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient7write_PEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient8remoteIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient10remotePortEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient7localIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient9localPortEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient7stopAllEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN10WiFiClient13stopAllExceptEPS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient4_errEa - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient10getNoDelayEv - 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient7write_PEPKcj - 0x00000000 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient6statusEv - 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient10remotePortEv - 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .text._ZN10WiFiClient9localPortEv - 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .rodata._ZTV6Client - 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.lit 0x00000000 0xc0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.prop 0x00000000 0x81c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xt.prop._ZTV6Client - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP11beginPacketEPKct - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP4readEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP9endPacketEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP8remoteIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP10remotePortEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP11parsePacketEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP11beginPacketE9IPAddresst - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP5beginEt - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDPC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDPC2ERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDPaSERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDPD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP13destinationIPEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP9localPortEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP7stopAllEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN7WiFiUDP13stopAllExceptEPS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN7WiFiUDPC2ERKS_ - 0x00000000 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN7WiFiUDPaSERKS_ - 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN7WiFiUDP13destinationIPEv - 0x00000000 0x5a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN7WiFiUDP9localPortEv - 0x00000000 0xe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .text._ZN7WiFiUDP13stopAllExceptEPS_ - 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .rodata._ZTV3UDP - 0x00000000 0x50 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xt.lit 0x00000000 0x90 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xt.prop 0x00000000 0x678 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xt.prop._ZTV3UDP - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponderC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder15setInstanceNameE6String - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder17_getAnswerFromIdxEi - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder8hostnameEi - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder2IPEi - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder4portEi - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder14_getNumAnswersEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder12queryServiceEPcS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder14_getServiceTxtEPcS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder15_getServicePortEPcS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder10addServiceEPcS0_t - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder9_getOurIpEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder7_listenEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder8_restartEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder13enableArduinoEtb - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder6_replyEhPcS0_t - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder17advertiseServicesEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder12_parsePacketEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder6updateEv - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponderD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN13MDNSResponder5beginEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder15setInstanceNameE6String - 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder13addServiceTxtEPcS0_S0_S0_ - 0x00000000 0x16e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZN13MDNSResponder13enableArduinoEtb - 0x00000000 0xbf .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x39 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.lit 0x00000000 0xd8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop 0x00000000 0xbe8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN9DNSServerC2Ev - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer6setTTLERKj - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer11replyWithIPEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer19replyWithCustomCodeEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN9DNSServer18processNextRequestEv - 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer6setTTLERKj - 0x00000000 0x28 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .text._ZN9DNSServer4stopEv - 0x00000000 0x2d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.lit 0x00000000 0x48 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xt.prop 0x00000000 0x240 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .literal._ZN8RCSwitch11setProtocolENS_8ProtocolE - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch11setProtocolEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitchC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch11setProtocolEii - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch14setPulseLengthEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch17setRepeatTransmitEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch19setReceiveToleranceEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch14enableTransmitEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch15disableTransmitEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch12getCodeWordAEPKcS1_b - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch12getCodeWordBEiib - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch12getCodeWordCEciib - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch12getCodeWordDEcib - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8transmitENS_7HighLowE - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch13enableReceiveEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch13enableReceiveEi - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch14disableReceiveEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch4sendEmj - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch12sendTriStateEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8switchOnEci - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9switchOffEci - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8switchOnEcii - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9switchOffEcii - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8switchOnEii - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9switchOffEii - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8switchOnEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch8switchOnEPKci - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9switchOffEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9switchOffEPKci - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch4sendEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch14resetAvailableEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch16getReceivedValueEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch20getReceivedBitlengthEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch16getReceivedDelayEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch19getReceivedProtocolEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .literal._ZN8RCSwitch18getReceivedRawdataEv - 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch11setProtocolENS_8ProtocolE - 0x00000000 0x16 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch11setProtocolEii - 0x00000000 0x26 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch19setReceiveToleranceEi - 0x00000000 0xb .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch15disableTransmitEv - 0x00000000 0x6 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch12getCodeWordAEPKcS1_b - 0x00000000 0x63 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch12getCodeWordBEiib - 0x00000000 0x6c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch12getCodeWordCEciib - 0x00000000 0x9c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch12getCodeWordDEcib - 0x00000000 0x84 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch12sendTriStateEPKc - 0x00000000 0x4b .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch8switchOnEci - 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch9switchOffEci - 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch8switchOnEcii - 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch9switchOffEcii - 0x00000000 0x2f .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch8switchOnEii - 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch9switchOffEii - 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch8switchOnEPKcS1_ - 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .rodata.str1.4 - 0x00000000 0x2e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .rodata 0x00000000 0x18 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch8switchOnEPKci - 0x00000000 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch9switchOffEPKcS1_ - 0x00000000 0x2d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch9switchOffEPKci - 0x00000000 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch4sendEPKc - 0x00000000 0x3b .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .text._ZN8RCSwitch18getReceivedRawdataEv - 0x00000000 0x9 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch12getCodeWordDEcibE7sReturn - 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch12getCodeWordCEciibE7sReturn - 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch12getCodeWordBEiibE7sReturn - 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch12getCodeWordAEPKcS1_bE7sReturn - 0x00000000 0xd .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .rodata._ZN8RCSwitch16nSeparationLimitE - 0x00000000 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .xt.lit 0x00000000 0x118 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .xt.prop 0x00000000 0x864 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdateC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdateD2Ev - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate12getLastErrorEv - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate18getLastErrorStringEv - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate9runUpdateER6Streamj6Stringi - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate12handleUpdateER10HTTPClientRK6Stringb - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_b - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_S2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_S2_ - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_bS2_b - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN17ESP8266HTTPUpdateC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN17ESP8266HTTPUpdateC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdateC2Ev - 0x00000000 0x7 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdateD2Ev - 0x00000000 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_ - 0x00000000 0xb0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_S2_b - 0x00000000 0x19 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_S2_ - 0x00000000 0xb0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate12updateSpiffsERK6StringS2_ - 0x00000000 0x7f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_ - 0x00000000 0xb4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_S2_ - 0x00000000 0xe4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringtS2_S2_bS2_b - 0x00000000 0x36 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .text.exit._GLOBAL__sub_D__ZN17ESP8266HTTPUpdateC2Ev - 0x00000000 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .xt.lit 0x00000000 0x60 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .xt.prop 0x00000000 0x6cc .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerialD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerialD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial14isValidGPIOpinEi - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerialC2Eiib - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial5beginEli - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial14hardwareSerialEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._ZN13TasmotaSerial6rxReadEv - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_0v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_1v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_2v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_3v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_4v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z9tms_isr_5v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z10tms_isr_12v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z10tms_isr_13v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z10tms_isr_14v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .literal._Z10tms_isr_15v - 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .text._ZN13TasmotaSerial5beginEv - 0x00000000 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .xt.lit 0x00000000 0xa8 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .xt.prop 0x00000000 0x5e8 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbusC2Eii - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._Z12CalculateCRCPhh - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus5BeginEli - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus4SendEhhtt - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus12ReceiveReadyEv - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus13ReceiveBufferEPhh - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus20Receive16BitRegisterEPt - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbus20Receive32BitRegisterEPf - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .text._ZN13TasmotaModbus20Receive16BitRegisterEPt - 0x00000000 0x32 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .text._ZN13TasmotaModbus20Receive32BitRegisterEPf - 0x00000000 0x43 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .xt.prop 0x00000000 0x228 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN14Adafruit_SGP30C2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3011generateCRCEPhh - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP307IAQinitEv - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP305beginEP7TwoWire - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3010IAQmeasureEv - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .literal._ZN14Adafruit_SGP3014setIAQBaselineEtt - 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .text._ZN14Adafruit_SGP3014setIAQBaselineEtt - 0x00000000 0x74 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xt.lit 0x00000000 0x30 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xt.prop 0x00000000 0x240 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8119_i2c_initEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8114readEhPhh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81120calculateTemperatureEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8115read8Eh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8119availableEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81110checkErrorEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8118readDataEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8115writeEhPhh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81120setEnvironmentalDataEhd - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81113setThresholdsEtth - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8117SWResetEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8116write8Ehh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81112setDriveModeEh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81115enableInterruptEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS81116disableInterruptEv - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZN15Adafruit_CCS8115beginEh - 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .text._ZN15Adafruit_CCS81120calculateTemperatureEv - 0x00000000 0x109 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .text._ZN15Adafruit_CCS81113setThresholdsEtth - 0x00000000 0x3d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .text._ZN15Adafruit_CCS81115enableInterruptEv - 0x00000000 0x39 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .xt.lit 0x00000000 0x80 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .xt.prop 0x00000000 0x2dc .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2ER6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPKctR6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPKctR6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient8readByteEPh - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient8readByteEPhPt - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient10readPacketEPh - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient5writeEhPht - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient10disconnectEv - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient11writeStringEPKcPht - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9connectedEv - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7connectEPKcS1_S1_S1_hhS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7connectEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7connectEPKcS1_S1_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7connectEPKcS1_hhS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7publishEPKcPKhjh - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7publishEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7publishEPKcS1_h - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient7publishEPKcPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9publish_PEPKcPKhjh - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9subscribeEPKch - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9subscribeEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient11unsubscribeEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient4loopEv - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9setServerE9IPAddresst - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9setServerEPht - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPhtR6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPhtR6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2E9IPAddresstR6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2E9IPAddresstR6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9setServerEPKct - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9setClientER6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient9setStreamER6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient5stateEv - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClient11setCallbackESt8functionIFvPcPhjEE - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6Client - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6ClientR6Stream - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientD2Ev - 0x00000000 0x37 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientD0Ev - 0x00000000 0x29 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPKctR6Client - 0x00000000 0x7e .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPKctR6ClientR6Stream - 0x00000000 0x80 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient7connectEPKc - 0x00000000 0x23 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient7connectEPKcS1_S1_ - 0x00000000 0x1f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient7connectEPKcS1_hhS1_ - 0x00000000 0x2b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient7publishEPKcS1_ - 0x00000000 0x36 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient7publishEPKcPKhj - 0x00000000 0x18 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient9publish_PEPKcPKhjh - 0x00000000 0xff .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient11unsubscribeEPKc - 0x00000000 0x91 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient9setServerE9IPAddresst - 0x00000000 0x34 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient9setServerEPht - 0x00000000 0x50 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPhtR6Client - 0x00000000 0x77 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPhtR6ClientR6Stream - 0x00000000 0x79 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2E9IPAddresstR6Client - 0x00000000 0x85 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2E9IPAddresstR6ClientR6Stream - 0x00000000 0x86 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient9setClientER6Client - 0x00000000 0x4 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClient9setStreamER6Stream - 0x00000000 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2Ev - 0x00000000 0x73 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6Client - 0x00000000 0xb1 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2E9IPAddresstSt8functionIFvPcPhjEER6ClientR6Stream - 0x00000000 0xb3 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6Client - 0x00000000 0xa3 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPhtSt8functionIFvPcS0_jEER6ClientR6Stream - 0x00000000 0xa5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6Client - 0x00000000 0xa9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .text._ZN12PubSubClientC2EPKctSt8functionIFvPcPhjEER6ClientR6Stream - 0x00000000 0xaf .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .rodata._ZTV12PubSubClient - 0x00000000 0x10 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.lit._ZN12PubSubClientD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.lit._ZN12PubSubClientD0Ev - 0x00000000 0x8 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.lit 0x00000000 0x120 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZN12PubSubClientD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZN12PubSubClientD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop 0x00000000 0x9fc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xt.prop._ZTV12PubSubClient - 0x00000000 0xc .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN10HTTPUploadC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN5Print5writeEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerC2E9IPAddressi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerC2Ei - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10addHandlerEP14RequestHandler - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer5closeEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer11sendContentERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer13sendContent_PEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer13sendContent_PEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer3argE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer3argEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer7argNameEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4argsEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6hasArgE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6headerE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14collectHeadersEPPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6headerEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10headerNameEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer7headersEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer9hasHeaderE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12authenticateEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10hostHeaderEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer21_responseCodeToStringEi - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiPKcRK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer21requestAuthenticationEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiPcRK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer4sendEiRK6StringS2_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6send_PEiPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer6send_PEiPKcS1_j - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandlerD5Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt8functionIFvvEEC5ERKS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer14_handleRequestEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServerD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN16ESP8266WebServer12handleClientEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x52 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN5Print5writeEPKcj - 0x00000000 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x511 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServerC2E9IPAddressi - 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10addHandlerEP14RequestHandler - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer11serveStaticEPKcRN2fs2FSES1_S1_ - 0x00000000 0xac .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer4stopEv - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer13sendContent_PEPKc - 0x00000000 0x63 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer13sendContent_PEPKcj - 0x00000000 0x72 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6headerEi - 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10headerNameEi - 0x00000000 0x4b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer7headersEv - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer4sendEiPcRK6String - 0x00000000 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6send_PEiPKcS1_ - 0x00000000 0xbb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer6send_PEiPKcS1_j - 0x00000000 0x9f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x39 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x58 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x29 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x21 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x1b9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x266 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServer12onFileUploadESt8functionIFvvEE - 0x00000000 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .text._ZN16ESP8266WebServerD2Ev - 0x00000000 0x118 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .rodata._ZTV20StaticRequestHandler - 0x00000000 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit 0x00000000 0x138 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.lit._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop 0x00000000 0x1188 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN5Print5writeEPKcj - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler14getContentTypeERK6String - 0x00000000 0x54 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandlerD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandlerD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN16ESP8266WebServer10streamFileIN2fs4FileEEEjRT_RK6String - 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZN20StaticRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x84 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xt.prop._ZTV20StaticRequestHandler - 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer16_uploadWriteByteEh - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer9urlDecodeERK6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer15_parseArgumentsE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer23_parseFormUploadAbortedEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer13_parseRequestER10WiFiClient - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xt.prop 0x00000000 0x894 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal.__tcf_0 - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli4_kHzy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli4_MHzy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli4_GHzy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli5_kBity - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli5_MBity - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli5_GBity - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli3_kBy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli3_MBy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._Zli3_GBy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass9wdtEnableEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass9wdtEnableE6WDTO_t - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass10wdtDisableEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass7wdtFeedEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass9deepSleepEj6RFMode - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass17rtcUserMemoryReadEjPjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass18rtcUserMemoryWriteEjPjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass5resetEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass7restartEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass6getVccEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass11getFreeHeapEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass9getChipIdEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass14getCoreVersionEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass13getSdkVersionEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass14getBootVersionEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass11getBootModeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass13getCpuFreqMHzEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass14getFlashChipIdEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass20getFlashChipRealSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass16getFlashChipSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass17getFlashChipSpeedEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass16getFlashChipModeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass18magicFlashChipSizeEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass19magicFlashChipSpeedEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass18magicFlashChipModeEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass24getFlashChipSizeByChipIdEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass16checkFlashConfigEb - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass14getResetReasonEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass12getResetInfoEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass15getResetInfoPtrEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass11eraseConfigEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass13getSketchSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass18getFreeSketchSpaceEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass12updateSketchER6Streamjbb - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass16flashEraseSectorEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass10flashWriteEjPjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass9flashReadEjPjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .literal._ZN8EspClass12getSketchMD5Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text.__tcf_0 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli4_kHzy - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli4_MHzy - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli4_GHzy - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli5_kBity - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli5_MBity - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli5_GBity - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli3_kBy - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli3_MBy - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._Zli3_GBy - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass9wdtEnableEj - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass9wdtEnableE6WDTO_t - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass10wdtDisableEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass7wdtFeedEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass9deepSleepEj6RFMode - 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass14getCoreVersionEv - 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass11getBootModeEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass17getFlashChipSpeedEv - 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass19magicFlashChipSpeedEh - 0x00000000 0x11 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass18magicFlashChipModeEh - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass24getFlashChipSizeByChipIdEv - 0x00000000 0x133 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass15getResetInfoPtrEv - 0x00000000 0x9 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass11eraseConfigEv - 0x00000000 0x64 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass12updateSketchER6Streamjbb - 0x00000000 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .text._ZN8EspClass12getSketchMD5Ev - 0x00000000 0x188 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .rodata.CSWTCH$85 - 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .bss._ZZN8EspClass12getSketchMD5EvE6result - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .bss._ZGVZN8EspClass12getSketchMD5EvE6result - 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .xt.lit 0x00000000 0x148 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .xt.prop 0x00000000 0xa80 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File5writeEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File9availableEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File4readEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File5flushEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZL6sflagsPKcRN2fs8OpenModeERNS1_10AccessModeE - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4FileC5ESt10shared_ptrINS_8FileImplEE - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File4readEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File9readBytesEPcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File4seekEjNS_8SeekModeE - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File4peekEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZNK2fs4File8positionEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZNK2fs4File4sizeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZNK2fs4FilecvbEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZNK2fs4File4nameEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs3Dir8fileNameEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs3Dir8fileSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs3Dir4nextEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS5beginEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS3endEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6formatEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS4infoERNS_6FSInfoE - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6existsEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6existsERK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6removeEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6removeERK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6renameEPKcS2_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS6renameERK6StringS3_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs3Dir8openFileEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS4openEPKcS2_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS4openERK6StringPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS7openDirEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs2FS7openDirERK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .literal._ZN2fs4File5closeEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File5writeEh - 0x00000000 0x23 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File5writeEPKhj - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File9availableEv - 0x00000000 0x37 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File4readEv - 0x00000000 0x26 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File5flushEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZL6sflagsPKcRN2fs8OpenModeERNS1_10AccessModeE - 0x00000000 0x4c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File4readEPhj - 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File9readBytesEPcj - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File4seekEjNS_8SeekModeE - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File4peekEv - 0x00000000 0x4c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZNK2fs4File8positionEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZNK2fs4File4sizeEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZNK2fs4FilecvbEv - 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZNK2fs4File4nameEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs3Dir8fileNameEv - 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs3Dir8fileSizeEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs3Dir4nextEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS5beginEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS3endEv - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6formatEv - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS4infoERNS_6FSInfoE - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6existsEPKc - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6existsERK6String - 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6removeEPKc - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6removeERK6String - 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6renameEPKcS2_ - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS6renameERK6StringS3_ - 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs3Dir8openFileEPKc - 0x00000000 0x67 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS4openEPKcS2_ - 0x00000000 0x6f .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS4openERK6StringPKc - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS7openDirEPKc - 0x00000000 0x48 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs2FS7openDirERK6String - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .text._ZN2fs4File5closeEv - 0x00000000 0x47 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .rodata._ZTVN2fs4FileE - 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.lit._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE - 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.lit._ZN2fs4File9readBytesEPcj - 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.lit 0x00000000 0x58 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop 0x00000000 0x6c0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop._ZN2fs4FileC2ESt10shared_ptrINS_8FileImplEE - 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop._ZN2fs4File9readBytesEPcj - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xt.prop._ZTVN2fs4FileE - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial5flushEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial5writeEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial9availableEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial4peekEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial4readEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerialC2Ei - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial5beginEm12SerialConfig10SerialModeh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial3endEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial4swapEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial6set_txEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial4pinsEhh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial14setDebugOutputEb - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial11isTxEnabledEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial11isRxEnabledEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial17availableForWriteEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerial8baudRateEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZNK14HardwareSerialcvbEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN14HardwareSerialC2Ei - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN14HardwareSerialC2Ei - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial3endEv - 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial4swapEh - 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial4pinsEhh - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial14setDebugOutputEb - 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial11isTxEnabledEv - 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial11isRxEnabledEv - 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZN14HardwareSerial17availableForWriteEv - 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .text._ZNK14HardwareSerialcvbEv - 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .xt.lit 0x00000000 0x90 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .xt.prop 0x00000000 0x4bc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZNK9IPAddress7printToER5Print - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressC2Ehhhh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressC2Ej - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressC2EPKh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddress10fromStringEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressaSEPKh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddressaSEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZNK9IPAddresseqEPKh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._ZN9IPAddress8toStringEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN9IPAddressC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .text._ZN9IPAddressaSEPKh - 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .text._ZNK9IPAddresseqEPKh - 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .rodata._ZTV9Printable - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .xt.prop 0x00000000 0x210 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .xt.prop._ZTV9Printable - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .literal._Z16hex_char_to_byteh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder5beginEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder3addEPht - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder12addHexStringEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder9addStreamER6Streamj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder9calculateEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder8getBytesEPh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder8getCharsEPc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .literal._ZN10MD5Builder8toStringEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .text._Z16hex_char_to_byteh - 0x00000000 0x34 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .text._ZN10MD5Builder12addHexStringEPKc - 0x00000000 0xa7 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .text._ZN10MD5Builder9addStreamER6Streamj - 0x00000000 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .text._ZN10MD5Builder8getBytesEPh - 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .xt.prop 0x00000000 0x204 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5writeEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print6printfEPKcz - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printERK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printERK9Printable - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnERK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnERK9Printable - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print11printNumberEmh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEli - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEii - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEii - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEli - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEmi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEhi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEhi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEji - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEji - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEmi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print10printFloatEdh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print5printEdi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .literal._ZN5Print7printlnEdi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5writeEPKc - 0x00000000 0x32 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5printERK6String - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5printERK9Printable - 0x00000000 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnERK6String - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEc - 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnERK9Printable - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5printEli - 0x00000000 0x67 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5printEii - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEii - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEli - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEhi - 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEji - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEmi - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print10printFloatEdh - 0x00000000 0x217 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print5printEdi - 0x00000000 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .text._ZN5Print7printlnEdi - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .rodata._ZTV5Print - 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xt.lit._ZN5Print5writeEPKc - 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xt.lit 0x00000000 0xb0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xt.prop 0x00000000 0x57c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xt.prop._ZN5Print5writeEPKc - 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xt.prop._ZTV5Print - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9timedReadEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9readBytesEPcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9timedPeekEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream13peekNextDigitEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream10setTimeoutEm - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9findUntilEPKcjS1_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream4findEPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream9findUntilEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream4findEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream8parseIntEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream8parseIntEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream10parseFloatEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream10parseFloatEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream14readBytesUntilEcPcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream10readStringEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .literal._ZN6Stream15readStringUntilEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream9timedPeekEv - 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream13peekNextDigitEv - 0x00000000 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream9findUntilEPKcjS1_j - 0x00000000 0x91 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream4findEPKcj - 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream9findUntilEPKcS1_ - 0x00000000 0x4d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream4findEPKc - 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream8parseIntEc - 0x00000000 0x85 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream8parseIntEv - 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream10parseFloatEc - 0x00000000 0xfb .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream10parseFloatEv - 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream14readBytesUntilEcPcj - 0x00000000 0x56 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .text._ZN6Stream10readStringEv - 0x00000000 0x4f .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .xt.lit 0x00000000 0x78 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .xt.prop 0x00000000 0x480 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString9availableEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString5flushEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString5writeEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString4peekEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString4readEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12StreamString5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .xt.lit 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .xt.prop 0x00000000 0x168 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .literal._ZN12UpdaterClassC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass6_resetEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass5beginEji - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass6setMD5EPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass12_writeBufferEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass5writeEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass13_verifyHeaderEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass10_verifyEndEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass3endEb - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass11writeStreamER6Stream - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._ZN12UpdaterClass10printErrorER6Stream - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal.startup._GLOBAL__sub_I__ZN12UpdaterClassC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal.exit._GLOBAL__sub_D__ZN12UpdaterClassC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .xt.lit 0x00000000 0x60 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .xt.prop 0x00000000 0x5f4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .literal._Z10randomSeedm - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z6randoml - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z6randomll - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z12secureRandoml - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z12secureRandomll - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z3maplllll - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z8makeWordj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._Z8makeWordhh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z10randomSeedm - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z12secureRandoml - 0x00000000 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z12secureRandomll - 0x00000000 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z3maplllll - 0x00000000 0x2b .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z8makeWordj - 0x00000000 0x2 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .text._Z8makeWordhh - 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .xt.lit 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .xt.prop 0x00000000 0x174 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .literal._ZN6StringC2EOS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2EO15StringSumHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringD2Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String10invalidateEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String12changeBufferEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String7reserveEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String4copyEPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2EPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String4copyEPK19__FlashStringHelperj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String4moveERS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringaSERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2ERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringaSEOS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringaSEO15StringSumHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringaSEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Ec - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Ehh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Eih - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Ejh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Elh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Emh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Efh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2Edh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringaSEPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringC2EPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEl - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEm - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEf - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEd - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6concatEPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperRK6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperh - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperi - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperl - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperm - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperf - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperd - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZplRK15StringSumHelperPK19__FlashStringHelper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String9compareToERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String6equalsERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String6equalsEPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6StringltERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6StringgtERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6StringleERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6StringgeERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String16equalsIgnoreCaseERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String10startsWithERKS_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String10startsWithERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String8endsWithERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String9setCharAtEjc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6StringixEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6StringixEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String6charAtEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String8getBytesEPhjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String7indexOfEcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String7indexOfEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String7indexOfERKS_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String7indexOfERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String11lastIndexOfEcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String11lastIndexOfEc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String11lastIndexOfERKS_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String11lastIndexOfERKS_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String9substringEjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String7replaceEcc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String7replaceERKS_S1_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6removeEjj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String6removeEj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String11toLowerCaseEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String11toUpperCaseEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZN6String4trimEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String5toIntEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._ZNK6String7toFloatEv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringC2EO15StringSumHelper - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringaSEO15StringSumHelper - 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringC2Ec - 0x00000000 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringC2Elh - 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringC2Efh - 0x00000000 0x51 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringC2Edh - 0x00000000 0x45 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String6concatEj - 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String6concatEl - 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String6concatEm - 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String6concatEf - 0x00000000 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String6concatEd - 0x00000000 0x47 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperc - 0x00000000 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperh - 0x00000000 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperi - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperj - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperl - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperm - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperf - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZplRK15StringSumHelperd - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6StringltERKS_ - 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6StringgtERKS_ - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6StringleERKS_ - 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6StringgeERKS_ - 0x00000000 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String9setCharAtEjc - 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6StringixEj - 0x00000000 0x1a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6String8getBytesEPhjj - 0x00000000 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6String11lastIndexOfEcj - 0x00000000 0x56 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6String11lastIndexOfEc - 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6String11lastIndexOfERKS_ - 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZN6String7replaceEcc - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .text._ZNK6String7toFloatEv - 0x00000000 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .bss._ZZN6StringixEjE19dummy_writable_char - 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .xt.lit 0x00000000 0x268 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .xt.prop 0x00000000 0x1218 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .literal._Znwj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._Znaj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZdlPv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZdaPv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.__cxa_pure_virtual - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.__cxa_deleted_virtual - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.__cxa_guard_acquire - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.__cxa_guard_release - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.__cxa_guard_abort - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZSt25__throw_bad_function_callv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZSt20__throw_length_errorPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZSt17__throw_bad_allocv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZSt19__throw_logic_errorPKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal._ZSt20__throw_out_of_rangePKc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text.__cxa_deleted_virtual - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text.__cxa_guard_abort - 0x00000000 0xb .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text._ZSt20__throw_length_errorPKc - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text._ZSt17__throw_bad_allocv - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text._ZSt19__throw_logic_errorPKc - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .text._ZSt20__throw_out_of_rangePKc - 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .rodata._ZZSt20__throw_out_of_rangePKcE8__func__ - 0x00000000 0x15 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .rodata._ZZSt19__throw_logic_errorPKcE8__func__ - 0x00000000 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .rodata._ZZSt17__throw_bad_allocvE8__func__ - 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .rodata._ZZSt20__throw_length_errorPKcE8__func__ - 0x00000000 0x15 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .rodata._ZZ21__cxa_deleted_virtualE8__func__ - 0x00000000 0x16 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .bss.__dso_handle - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .xt.lit 0x00000000 0x58 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .xt.prop 0x00000000 0x21c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .literal.crc_update - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .literal.eboot_command_calculate_crc32 - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .literal.eboot_command_read - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .literal.eboot_command_write - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .literal.eboot_command_clear - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .text.eboot_command_clear - 0x00000000 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .xt.prop 0x00000000 0x108 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .literal._ZL9loop_taskP11ETSEventTag - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.atexit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.initVariant - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal._Z24preloop_update_frequencyv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.esp_yield - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.esp_schedule - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal._ZL12loop_wrapperv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.__yield - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.optimistic_yield - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.__gdb_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal._Z9init_donev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.__gdb_do_break - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.user_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .text.atexit 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .data.core_release - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .ver_number 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .xt.prop 0x00000000 0x294 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .literal.atol 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.atoi 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.atof 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.reverse - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.itoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.ltoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.utoa 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.ultoa - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.dtostrf - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .text.atof 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .text.ltoa 0x00000000 0x8a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .xt.prop 0x00000000 0x30c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .literal.uart_write_char_d - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.__custom_crash_callback - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.__wrap_system_restart_local - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.abort - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.__assert_func - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.__panic_func - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .text.__assert_func - 0x00000000 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .xt.prop 0x00000000 0x1bc .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .literal.twi_delay - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_write_stop - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_write_bit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_read_bit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_write_byte - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_write_start - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_setClock - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_setClockStretchLimit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_stop - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_writeTo - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_readFrom - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.twi_status - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text.twi_setClock - 0x00000000 0x3f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text.twi_stop - 0x00000000 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text.twi_status - 0x00000000 0x89 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .xt.lit 0x00000000 0x68 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .xt.prop 0x00000000 0x420 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .literal.delay_end - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .literal.micros_overflow_tick - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .literal.delay - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .literal.init 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .xt.prop 0x00000000 0x168 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .literal.shiftIn - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .literal.shiftOut - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .text.shiftOut - 0x00000000 0x76 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .xt.prop 0x00000000 0x90 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .literal.xPortGetFreeHeapSize - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .literal.system_show_malloc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .text.system_show_malloc - 0x00000000 0x1b .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .xt.lit 0x00000000 0x38 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .literal.base64_init_encodestate - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .literal.base64_encode_value - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .literal.base64_encode_block - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .literal.base64_encode_blockend - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .literal.base64_encode_chars - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .rodata.CHARS_PER_LINE - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .xt.lit 0x00000000 0x20 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .xt.prop 0x00000000 0x1d4 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strnlen - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strchr - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strrchr - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strncat - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strcat - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strtok_r - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strtok - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strdup - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isalpha - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isalnum - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.iscntrl - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isdigit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.islower - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isprint - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isgraph - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.ispunct - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isspace - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strtod - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isupper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isxdigit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.tolower - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strcasecmp - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.toupper - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.isblank - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.__errno - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strlcpy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strtol - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal.strtoul - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.strnlen 0x00000000 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.isdigit 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.islower 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.isgraph 0x00000000 0x29 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.ispunct 0x00000000 0x37 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.strtod 0x00000000 0x147 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .text.isupper 0x00000000 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .xt.lit 0x00000000 0xa8 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .xt.prop 0x00000000 0xa80 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .literal._Z9strnlen_PPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z8strstr_PPKcS0_ - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z8memcpy_PPvPKvj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z8memcmp_PPKvS0_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z9memccpy_PPvPKvij - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z8memmem_PPKvjS0_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z9strncpy_PPcPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z9strncat_PPcPKcj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z9strncmp_PPKcS0_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z13strncasecmp_PPKcS0_j - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z8printf_PPKcz - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z11vsnprintf_PPcjPKc13__va_list_tag - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z9sprintf_PPcPKcz - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal._Z10snprintf_PPcjPKcz - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z8memcmp_PPKvS0_j - 0x00000000 0x33 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z9memccpy_PPvPKvij - 0x00000000 0x2c .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z8memmem_PPKvjS0_j - 0x00000000 0x8b .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z9strncmp_PPKcS0_j - 0x00000000 0x44 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z8printf_PPKcz - 0x00000000 0x87 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .text._Z9sprintf_PPcPKcz - 0x00000000 0x35 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .xt.lit 0x00000000 0x28 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .xt.prop 0x00000000 0x420 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .literal.uart_ignore_char - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart1_write_char - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart0_write_char - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_write_char - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_write - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_rx_available - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_read_char - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_tx_free - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_wait_tx_empty - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_flush - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_set_baudrate - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_get_baudrate - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_uninit - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_swap - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_set_tx - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_set_pins - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_tx_enabled - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_rx_enabled - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_set_debug - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.uart_get_debug - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text.uart_write - 0x00000000 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text.uart_tx_free - 0x00000000 0x36 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text.uart_uninit - 0x00000000 0x55 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text.uart_swap - 0x00000000 0x123 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .text.uart_set_pins - 0x00000000 0xa5 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .xt.lit 0x00000000 0x88 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .xt.prop 0x00000000 0x654 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .literal.umm_disconnect_from_free_list - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.umm_assimilate_up - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.umm_assimilate_down - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal._umm_free - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.umm_make_new_block$constprop$0 - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.umm_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .irom0.literal - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal._umm_malloc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.malloc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.calloc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.realloc - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .literal.free 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .xt.lit 0x00000000 0x68 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .xt.prop 0x00000000 0x3d8 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .literal._ZNSt14_Function_baseD5Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .literal._Z17schedule_functionSt8functionIFvvEE - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .literal._Z23run_scheduled_functionsv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .text._ZNSt14_Function_baseD2Ev - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .text._Z17schedule_functionSt8functionIFvvEE - 0x00000000 0xbd .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss._ZL6sCount - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .xt.prop 0x00000000 0x120 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .xt.prop 0x00000000 0x9c .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .iram.literal 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .xt.lit 0x00000000 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .xt.prop 0x00000000 0xd8 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .data 0x00000000 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .bss 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .irom0.text 0x00000000 0xbe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .rodata 0x00000000 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .irom.text 0x00000000 0x20d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .rodata.str1.4 - 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .xt.prop 0x00000000 0x948 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .data 0x00000000 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .bss 0x00000000 0xb8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .irom0.text 0x00000000 0x1ed4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .rodata 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .irom.text 0x00000000 0x50c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .rodata.str1.4 - 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .xt.lit 0x00000000 0x90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .xt.prop 0x00000000 0x14a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .data 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .bss 0x00000000 0xd4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .irom0.text 0x00000000 0x29e2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .irom.text 0x00000000 0x64f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .rodata.str1.4 - 0x00000000 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .xt.prop 0x00000000 0x1950 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .xt.lit 0x00000000 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .xt.prop 0x00000000 0x978 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .xt.lit 0x00000000 0x1b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .xt.prop 0x00000000 0x1b00 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .xt.prop 0x00000000 0x1d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .xt.prop 0x00000000 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .xt.lit 0x00000000 0x198 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .xt.prop 0x00000000 0x135c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .xt.prop 0x00000000 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .xt.prop 0x00000000 0x51c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .xt.lit 0x00000000 0x130 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .xt.prop 0x00000000 0x1548 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - .xt.lit 0x00000000 0x190 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - .xt.prop 0x00000000 0x1410 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - .xt.prop 0x00000000 0xe10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .xt.prop 0x00000000 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .xt.prop 0x00000000 0x630 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .irom0.text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .xt.lit 0x00000000 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - .xt.lit 0x00000000 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - .xt.prop 0x00000000 0x36fc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .NMIExceptionVector.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .xt.prop 0x00000000 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .UserExceptionVector.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .xt.prop 0x00000000 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .UserEnter.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - .xt.prop 0x00000000 0x294 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .xt.prop 0x00000000 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .xt.prop 0x00000000 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .xt.lit 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .xt.prop 0x00000000 0x924 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .xt.lit 0x00000000 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .xt.prop 0x00000000 0xf6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .xt.prop 0x00000000 0xe58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .xt.prop 0x00000000 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .xt.prop 0x00000000 0xc90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .xt.prop 0x00000000 0x3e4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .xt.prop 0x00000000 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .xt.prop 0x00000000 0x858 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .literal.sntp_try_next_server - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .literal.sntp_dns_found - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .literal.sntp_get_current_timestamp - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .literal.sntp_get_real_time - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .xt.prop 0x00000000 0x72c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .literal.tcp_accept_null - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .literal.tcp_new_port - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .literal.tcp_close_shutdown - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .xt.prop 0x00000000 0xd5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .xt.prop 0x00000000 0x798 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .literal.dns_timer - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .literal.igmp_timer - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .literal.dhcp_timer_fine - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .literal.dhcp_timer_coarse - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .xt.prop 0x00000000 0x330 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .xt.prop 0x00000000 0x4e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .xt.prop 0x00000000 0x5d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .xt.prop 0x00000000 0x90 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .xt.prop 0x00000000 0x4e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .xt.prop 0x00000000 0x180 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .xt.prop 0x00000000 0x3fc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .xt.prop 0x00000000 0x330 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .data.memp_sizes_test - 0x00000000 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .xt.prop 0x00000000 0x258 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .xt.prop 0x00000000 0xbd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .xt.prop 0x00000000 0x4c8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .xt.prop 0x00000000 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .xt.prop 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .xt.lit 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .xt.prop 0x00000000 0xf84 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .xt.lit 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .xt.prop 0x00000000 0x690 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .xt.prop 0x00000000 0x8dc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .xt.prop 0x00000000 0x468 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .xt.lit 0x00000000 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .xt.prop 0x00000000 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .xt.prop 0x00000000 0x108 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .xt.prop 0x00000000 0x1bc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .xt.prop 0x00000000 0x120 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .xt.prop 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .xt.lit 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .xt.prop 0x00000000 0xcfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .xt.prop 0x00000000 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .xt.prop 0x00000000 0x2dc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - .xt.lit 0x00000000 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - .xt.prop 0x00000000 0x1200 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .xt.prop 0x00000000 0x33c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .xt.lit 0x00000000 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .xt.prop 0x00000000 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .xt.prop 0x00000000 0x114 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .text 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .bss 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .irom0.text 0x00000000 0x1d91 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .irom.text 0x00000000 0x13a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .rodata.str1.4 - 0x00000000 0x176 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .rodata 0x00000000 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .xt.lit 0x00000000 0x170 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .xt.prop 0x00000000 0x1428 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .irom0.text 0x00000000 0x9d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .rodata.str1.4 - 0x00000000 0xe1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .rodata 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .xt.lit 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .xt.prop 0x00000000 0x510 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .text 0x00000000 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .irom0.text 0x00000000 0x8e6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .irom.text 0x00000000 0xf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .xt.lit 0x00000000 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .xt.prop 0x00000000 0x678 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .text 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .irom0.text 0x00000000 0x1868 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .irom.text 0x00000000 0x37 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .xt.lit 0x00000000 0x130 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .xt.prop 0x00000000 0xfb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .text 0x00000000 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .irom0.text 0x00000000 0x3421 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .irom.text 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .rodata.str1.4 - 0x00000000 0x95 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .rodata 0x00000000 0xf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .xt.lit 0x00000000 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .xt.prop 0x00000000 0x23f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .irom0.text 0x00000000 0x1386 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .xt.lit 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .xt.prop 0x00000000 0x162c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .irom0.text 0x00000000 0x253 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .xt.lit 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .xt.prop 0x00000000 0x1ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .irom0.text 0x00000000 0x135 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .rodata.str1.4 - 0x00000000 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .text 0x00000000 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .irom0.text 0x00000000 0x958 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .irom.text 0x00000000 0x39 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .xt.lit 0x00000000 0xb8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .xt.prop 0x00000000 0x498 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .irom0.text 0x00000000 0x573 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .xt.prop 0x00000000 0x768 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .irom0.text 0x00000000 0x33d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .xt.lit 0x00000000 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .xt.prop 0x00000000 0x3c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .irom0.text 0x00000000 0x160 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .xt.prop 0x00000000 0xd8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .irom0.text 0x00000000 0x5a3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .irom.text 0x00000000 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .xt.lit 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .xt.prop 0x00000000 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .xt.prop 0x00000000 0xe4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .irom0.text 0x00000000 0x66 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .xt.prop 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .text 0x00000000 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .data 0x00000000 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .irom0.text 0x00000000 0x1b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .rodata 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .xt.prop 0x00000000 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .irom0.text 0x00000000 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .xt.prop 0x00000000 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .irom0.text 0x00000000 0x3cb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .rodata 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .xt.prop 0x00000000 0x21c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .xt.prop 0x00000000 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .irom0.text 0x00000000 0xfd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .xt.prop 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .irom0.text 0x00000000 0x1a04 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .irom.text 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .xt.lit 0x00000000 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .xt.prop 0x00000000 0x1590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .xt.lit 0x00000000 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .xt.prop 0x00000000 0x1e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .text 0x00000000 0x276 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .rodata 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .xt.lit 0x00000000 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .xt.prop 0x00000000 0xdc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .text 0x00000000 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .xt.lit 0x00000000 0x248 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .xt.prop 0x00000000 0x231c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .xt.lit 0x00000000 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .xt.prop 0x00000000 0x1014 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .xt.lit 0x00000000 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .xt.prop 0x00000000 0x8ac C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .xt.prop 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .xt.prop 0x00000000 0x9c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .xt.prop 0x00000000 0x84 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .xt.prop 0x00000000 0x9c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .xt.prop 0x00000000 0x78 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .xt.prop 0x00000000 0x3c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .xt.prop 0x00000000 0x2e8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .xt.prop 0x00000000 0x288 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .xt.prop 0x00000000 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .xt.prop 0x00000000 0x90 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .xt.prop 0x00000000 0x408 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .xt.prop 0x00000000 0x294 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .xt.prop 0x00000000 0x264 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .xt.prop 0x00000000 0x288 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .xt.prop 0x00000000 0x54 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .xt.prop 0x00000000 0x6c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .xt.prop 0x00000000 0x204 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .xt.prop 0x00000000 0x150 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .xt.prop 0x00000000 0xe4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .xt.prop 0x00000000 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .xt.prop 0x00000000 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .xt.prop 0x00000000 0xd8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .literal 0x00000000 0x54 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .text 0x00000000 0x125 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .rodata 0x00000000 0x5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .xt.prop 0x00000000 0xf0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .rodata 0x00000000 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .xt.prop 0x00000000 0x168 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .rodata 0x00000000 0x78 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .xt.prop 0x00000000 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .literal 0x00000000 0x19c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .text 0x00000000 0x552 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .rodata 0x00000000 0x58 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .xt.prop 0x00000000 0x1b0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .xt.prop 0x00000000 0x1ec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .rodata 0x00000000 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .xt.prop 0x00000000 0x198 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .rodata 0x00000000 0x38 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .xt.prop 0x00000000 0xcc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .xt.prop 0x00000000 0x420 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .rodata 0x00000000 0x38 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .xt.prop 0x00000000 0xb4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .rodata 0x00000000 0x80 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .xt.prop 0x00000000 0xf0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .rodata 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .xt.prop 0x00000000 0x15c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .text 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - .xt.prop 0x00000000 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .xt.prop 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .rodata 0x00000000 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .xt.prop 0x00000000 0x108 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .xt.prop 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .text._ZNSt8__detail15_List_node_base4swapERS0_S1_ - 0x00000000 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .text._ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_ - 0x00000000 0x1a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .text._ZNSt8__detail15_List_node_base10_M_reverseEv - 0x00000000 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .xt.prop 0x00000000 0x114 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer5writeEh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer10_s_discardEPvP13ClientContext - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN13ClientContext8_s_errorEPva - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServerC2E9IPAddresst - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServerC2Et - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer10setNoDelayEb - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer10getNoDelayEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer9hasClientEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer6statusEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer5closeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer5beginEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer7_acceptEP7tcp_pcba - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer9_s_acceptEPvP7tcp_pcba - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer8_discardEP13ClientContext - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServer9availableEPh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x99 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN13ClientContext8_s_errorEPva - 0x00000000 0x62 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServerC2E9IPAddresst - 0x00000000 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer10setNoDelayEb - 0x00000000 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer10getNoDelayEv - 0x00000000 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer9hasClientEv - 0x00000000 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer6statusEv - 0x00000000 0xa .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer4stopEv - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .text._ZN10WiFiServer8_discardEP13ClientContext - 0x00000000 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .rodata._ZTV9Printable - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .rodata._ZTV6Server - 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.lit._ZN13ClientContext8_s_errorEPva - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop 0x00000000 0x2d0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop._ZN13ClientContext8_s_errorEPva - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop._ZTV9Printable - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xt.prop._ZTV6Server - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x10 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN9TLSTraits6createEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN9TLSTraitsD5Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN9TLSTraitsD0Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZNKSt14default_deleteI10WiFiClientEclEPS0_$isra$5 - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZNKSt14default_deleteI15TransportTraitsEclEPS0_$isra$6 - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClientC2Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5clearEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient13beginInternalE6StringPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9connectedEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient3endEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient8setReuseEb - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient12setUserAgentERK6String - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient16setAuthorizationEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient16setAuthorizationEPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient10setTimeoutEt - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9useHTTP10Eb - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient7getSizeEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9getStreamEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient12getStreamPtrEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient13errorToStringEi - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9addHeaderERK6StringS2_bb - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient14collectHeadersEPPKcj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient6headerEPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient6headerEj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient10headerNameEj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient7headersEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9hasHeaderEPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient7connectEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient10sendHeaderEPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient20handleHeaderResponseEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient22writeToStreamDataBlockEP6Streami - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient11returnErrorEi - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient13writeToStreamEP6Stream - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient9getStringEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient11sendRequestEPKcPhj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient3GETEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient4POSTEPhj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient4POSTE6String - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient11sendRequestEPKc6String - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient11sendRequestEPKcP6Streamj - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClientD2Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5beginE6String - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5beginE6StringS0_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5beginE6StringtS0_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5beginE6StringtS0_S0_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN10HTTPClient5beginE6StringtS0_bS0_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN9TLSTraits6verifyER10WiFiClientPKc - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal.__tcf_0 - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN9TLSTraits6createEv - 0x00000000 0x33 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN9TLSTraitsD2Ev - 0x00000000 0x32 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN9TLSTraitsD0Ev - 0x00000000 0x29 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient8setReuseEb - 0x00000000 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient16setAuthorizationEPKcS1_ - 0x00000000 0xa4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient16setAuthorizationEPKc - 0x00000000 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient9getStreamEv - 0x00000000 0x76 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient6headerEj - 0x00000000 0x4b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient10headerNameEj - 0x00000000 0x47 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient7headersEv - 0x00000000 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient22writeToStreamDataBlockEP6Streami - 0x00000000 0x159 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient13writeToStreamEP6Stream - 0x00000000 0x185 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient9getStringEv - 0x00000000 0xa9 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient4POSTEPhj - 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient4POSTE6String - 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient11sendRequestEPKc6String - 0x00000000 0x23 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient11sendRequestEPKcP6Streamj - 0x00000000 0x213 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient5beginE6StringS0_ - 0x00000000 0xc1 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient5beginE6StringtS0_ - 0x00000000 0x80 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient5beginE6StringtS0_S0_ - 0x00000000 0xa1 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN10HTTPClient5beginE6StringtS0_bS0_ - 0x00000000 0xdd .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text._ZN9TLSTraits6verifyER10WiFiClientPKc - 0x00000000 0x41 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text.__tcf_0 0x00000000 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .bss._ZZN10HTTPClient9getStreamEvE5empty - 0x00000000 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .rodata._ZTV9TLSTraits - 0x00000000 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .bss._ZGVZN10HTTPClient9getStreamEvE5empty - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.lit._ZN9TLSTraits6createEv - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.lit._ZN9TLSTraitsD2Ev - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.lit._ZN9TLSTraitsD0Ev - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.lit 0x00000000 0x128 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.lit._ZN9TLSTraits6verifyER10WiFiClientPKc - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop._ZN9TLSTraits6createEv - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop._ZN9TLSTraitsD2Ev - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop._ZN9TLSTraitsD0Ev - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop 0x00000000 0x1260 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop._ZN9TLSTraits6verifyER10WiFiClientPKc - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xt.prop._ZTV9TLSTraits - 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN6base646encodeEPhj - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .literal._ZN6base646encodeE6String - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .xt.prop 0x00000000 0x78 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .literal._Z13__get_rf_modev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .literal._Z14__get_adc_modev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .literal.__wrap_register_chipv6_phy - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .literal._Z22__run_user_rf_pre_initv - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .literal.user_rf_pre_init - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .text._Z14__get_adc_modev - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .xt.lit 0x00000000 0x10 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .xt.prop 0x00000000 0xe4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .xt.lit 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .xt.prop 0x00000000 0x2f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .xt.lit 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .xt.prop 0x00000000 0x1668 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .xt.lit 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .xt.prop 0x00000000 0x48c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .literal 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .text 0x00000000 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .irom0.text 0x00000000 0x350 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .irom.text 0x00000000 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .rodata.str1.4 - 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .xt.lit 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .xt.prop 0x00000000 0x390 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .xt.lit 0x00000000 0x110 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .xt.prop 0x00000000 0xdb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .xt.lit 0x00000000 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .xt.prop 0x00000000 0x7a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .xt.prop 0x00000000 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .xt.lit 0x00000000 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .xt.prop 0x00000000 0x378 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .xt.lit 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .xt.prop 0x00000000 0x33c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .xt.prop 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .xt.lit 0x00000000 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .xt.prop 0x00000000 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .xt.prop 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .irom0.literal - 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .text 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .group 0x00000000 0x10 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .group 0x00000000 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .group 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN6Stream9readBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZL17clear_private_keyv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZL17clear_certificatev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZL14parseHexNibblecPh - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZL9matchNameRK6StringS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN13ClientContext4readEPcj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN10SSLContext5unrefEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecureD2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecureD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure5writeEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN10SSLContext8_readAllEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure4readEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure4readEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure4peekEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure9peekBytesEPhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN10SSLContext9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure9availableEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure9connectedEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecureC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecureC2ERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecureaSERKS_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure11_connectSSLEPKc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure6verifyEPKcS1_ - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure14setCertificateEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure13setPrivateKeyEPKhj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure15loadCertificateER6Streamj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure14loadPrivateKeyER6Streamj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_read - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_write - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_get_file - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_malloc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_calloc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_realloc - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_port_free - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal.ax_wdt_feed - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure7connectE9IPAddresst - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure7connectEPKct - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .literal._ZN16WiFiClientSecure4stopEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .data 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN6Stream9readBytesEPhj - 0x00000000 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZL17clear_private_keyv - 0x00000000 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZL17clear_certificatev - 0x00000000 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZL14parseHexNibblecPh - 0x00000000 0x38 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZL9matchNameRK6StringS1_ - 0x00000000 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN13ClientContext4readEPcj - 0x00000000 0xdf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN10SSLContext5unrefEv - 0x00000000 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecureD2Ev - 0x00000000 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecureD0Ev - 0x00000000 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure5writeEPKhj - 0x00000000 0x3f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN10SSLContext8_readAllEv - 0x00000000 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure4readEPhj - 0x00000000 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure4readEv - 0x00000000 0x47 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure4peekEv - 0x00000000 0x33 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure9peekBytesEPhj - 0x00000000 0xbe .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN10SSLContext9availableEv - 0x00000000 0x34 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure9availableEv - 0x00000000 0x1f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure9connectedEv - 0x00000000 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecureC2Ev - 0x00000000 0x37 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecureC2ERKS_ - 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecureaSERKS_ - 0x00000000 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure11_connectSSLEPKc - 0x00000000 0x113 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure6verifyEPKcS1_ - 0x00000000 0x1a2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure14setCertificateEPKhj - 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure13setPrivateKeyEPKhj - 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure15loadCertificateER6Streamj - 0x00000000 0x7c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure14loadPrivateKeyER6Streamj - 0x00000000 0x7c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_read - 0x00000000 0x85 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_write - 0x00000000 0xb0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_get_file - 0x00000000 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_malloc - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_calloc - 0x00000000 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_realloc - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_port_free - 0x00000000 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text.ax_wdt_feed - 0x00000000 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure7connectE9IPAddresst - 0x00000000 0x41 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure7connectEPKct - 0x00000000 0x7a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .text._ZN16WiFiClientSecure4stopEv - 0x00000000 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .rodata._ZTV16WiFiClientSecure - 0x00000000 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZN10SSLContext8s_io_ctxE - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZN10SSLContext15_ssl_ctx_refcntE - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZN10SSLContext8_ssl_ctxE - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZL27default_certificate_dynamic - 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss.default_certificate_len - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss.default_certificate - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZL11s_pk_refcnt - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss._ZL27default_private_key_dynamic - 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss.default_private_key_len - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .bss.default_private_key - 0x00000000 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.lit 0x00000000 0xf8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.lit._ZN13ClientContext4readEPcj - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.lit._ZN10SSLContext5unrefEv - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.lit._ZN10SSLContext8_readAllEv - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.lit._ZN10SSLContext9availableEv - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop 0x00000000 0xa44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZN13ClientContext4readEPcj - 0x00000000 0xa8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZN10SSLContext5unrefEv - 0x00000000 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZN10SSLContext8_readAllEv - 0x00000000 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZN10SSLContext9availableEv - 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xt.prop._ZTV16WiFiClientSecure - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .irom0.literal - 0x00000000 0x408 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .irom0.text 0x00000000 0x1ccd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .rodata.str1.4 - 0x00000000 0x512 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .rodata 0x00000000 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .xt.prop 0x00000000 0x1578 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .irom0.literal - 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .irom0.text 0x00000000 0x52a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .rodata 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .xt.prop 0x00000000 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .irom0.literal - 0x00000000 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .irom0.text 0x00000000 0x485 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .rodata.str1.4 - 0x00000000 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .rodata 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .xt.prop 0x00000000 0x2d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .irom0.literal - 0x00000000 0x21c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .irom0.text 0x00000000 0x8f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .rodata.str1.4 - 0x00000000 0x266 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .rodata 0x00000000 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .xt.prop 0x00000000 0x4b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .irom0.literal - 0x00000000 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .irom0.text 0x00000000 0x22e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .bss 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .rodata.str1.4 - 0x00000000 0x4a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .rodata 0x00000000 0x84 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - COMMON 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .irom0.literal - 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .irom0.text 0x00000000 0x8f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .rodata 0x00000000 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .xt.prop 0x00000000 0x3c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .irom0.literal - 0x00000000 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .irom0.text 0x00000000 0x1477 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .rodata.str1.4 - 0x00000000 0x15a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .xt.prop 0x00000000 0x900 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .irom0.literal - 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .irom0.text 0x00000000 0x1ee C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .xt.prop 0x00000000 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .irom0.literal - 0x00000000 0x11c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .irom0.text 0x00000000 0x8f1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .rodata 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .xt.prop 0x00000000 0x108 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .irom0.text 0x00000000 0xad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .xt.prop 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .irom0.literal - 0x00000000 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .irom0.text 0x00000000 0x471 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .rodata.str1.4 - 0x00000000 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .irom0.literal - 0x00000000 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .irom0.text 0x00000000 0x35c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .xt.prop 0x00000000 0x1a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .irom0.literal - 0x00000000 0x12c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .irom0.text 0x00000000 0x2c60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .rodata 0x00000000 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .xt.prop 0x00000000 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .irom0.literal - 0x00000000 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .irom0.text 0x00000000 0xa7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .xt.prop 0x00000000 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .irom0.literal - 0x00000000 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .irom0.text 0x00000000 0x6a3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .rodata 0x00000000 0x300 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .xt.prop 0x00000000 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .irom0.literal - 0x00000000 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .irom0.text 0x00000000 0xad2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .rodata.str1.4 - 0x00000000 0x52 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .rodata 0x00000000 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .xt.prop 0x00000000 0x690 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .irom0.literal - 0x00000000 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .irom0.text 0x00000000 0x5c7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .data 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .bss 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .rodata.str1.4 - 0x00000000 0x1b4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .rodata 0x00000000 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .xt.lit 0x00000000 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .xt.prop 0x00000000 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .literal 0x00000000 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .text 0x00000000 0x3b5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .data 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .bss 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .eh_frame 0x00000000 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .xt.lit 0x00000000 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .xt.prop 0x00000000 0x1e0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .literal.configTime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.clock_gettime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.mktime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.time 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.asctime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.localtime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.ctime - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .literal.gettimeofday - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .data 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .bss 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.configTime - 0x00000000 0xa1 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.clock_gettime - 0x00000000 0x46 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.mktime 0x00000000 0x30 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.time 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.asctime 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.localtime - 0x00000000 0x17 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.ctime 0x00000000 0x21 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .text.gettimeofday - 0x00000000 0x89 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .bss.s_bootTime - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .bss.s_timezone_sec - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .bss.s_daylightOffset_sec - 0x00000000 0x4 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .xt.lit 0x00000000 0x40 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - .xt.prop 0x00000000 0x18c .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - -Memory Configuration - -Name Origin Length Attributes -dport0_0_seg 0x3ff00000 0x00000010 -dram0_0_seg 0x3ffe8000 0x00014000 -iram1_0_seg 0x40100000 0x00008000 -irom0_0_seg 0x40201010 0x000f9ff0 -*default* 0x00000000 0xffffffff - -Linker script and memory map - - 0x402fb000 PROVIDE (_SPIFFS_start, 0x402fb000) - 0x402fb000 PROVIDE (_SPIFFS_end, 0x402fb000) - 0x00000000 PROVIDE (_SPIFFS_page, 0x0) - 0x00000000 PROVIDE (_SPIFFS_block, 0x0) - 0x40000000 PROVIDE (_memmap_vecbase_reset, 0x40000000) - 0x00000110 _memmap_cacheattr_wb_base = 0x110 - 0x00000110 _memmap_cacheattr_wt_base = 0x110 - 0x00000220 _memmap_cacheattr_bp_base = 0x220 - 0xfffff00f _memmap_cacheattr_unused_mask = 0xfffff00f - 0x2222211f _memmap_cacheattr_wb_trapnull = 0x2222211f - 0x2222211f _memmap_cacheattr_wba_trapnull = 0x2222211f - 0x2222211f _memmap_cacheattr_wbna_trapnull = 0x2222211f - 0x2222211f _memmap_cacheattr_wt_trapnull = 0x2222211f - 0x2222222f _memmap_cacheattr_bp_trapnull = 0x2222222f - 0xfffff11f _memmap_cacheattr_wb_strict = 0xfffff11f - 0xfffff11f _memmap_cacheattr_wt_strict = 0xfffff11f - 0xfffff22f _memmap_cacheattr_bp_strict = 0xfffff22f - 0x22222112 _memmap_cacheattr_wb_allvalid = 0x22222112 - 0x22222112 _memmap_cacheattr_wt_allvalid = 0x22222112 - 0x22222222 _memmap_cacheattr_bp_allvalid = 0x22222222 - 0x2222211f PROVIDE (_memmap_cacheattr_reset, _memmap_cacheattr_wb_trapnull) - -.dport0.rodata 0x3ff00000 0x0 - 0x3ff00000 _dport0_rodata_start = ABSOLUTE (.) - *(.dport0.rodata) - *(.dport.rodata) - 0x3ff00000 _dport0_rodata_end = ABSOLUTE (.) - -.dport0.literal - 0x3ff00000 0x0 - 0x3ff00000 _dport0_literal_start = ABSOLUTE (.) - *(.dport0.literal) - *(.dport.literal) - 0x3ff00000 _dport0_literal_end = ABSOLUTE (.) - -.dport0.data 0x3ff00000 0x0 - 0x3ff00000 _dport0_data_start = ABSOLUTE (.) - *(.dport0.data) - *(.dport.data) - 0x3ff00000 _dport0_data_end = ABSOLUTE (.) - -.data 0x3ffe8000 0x528 - 0x3ffe8000 _data_start = ABSOLUTE (.) - *(.data) - .data 0x3ffe8000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - *fill* 0x3ffe8001 0x3 - .data 0x3ffe8004 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x3ffe8004 soft_wdt_interval - 0x3ffe8008 NoiseTimerInterval - 0x3ffe8010 sleep_start_wait_time - 0x3ffe8018 CanDoFreqCal - 0x3ffe801c tcb - .data 0x3ffe8020 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .data 0x3ffe8060 0x24c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .data 0x3ffe82ac 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .data 0x3ffe82b4 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - *fill* 0x3ffe82b5 0x3 - .data 0x3ffe82b8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - *fill* 0x3ffe82b9 0x3 - .data 0x3ffe82bc 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x3ffe82bd timer2_ms_flag - 0x3ffe82be dhcps_flag - 0x3ffe82bf dhcpc_flag - 0x3ffe82c1 reconnect_internal - .data 0x3ffe82c2 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - *fill* 0x3ffe82c6 0x2 - .data 0x3ffe82c8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - 0x3ffe82c8 default_hostname - *fill* 0x3ffe82c9 0x3 - .data 0x3ffe82cc 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x3ffe82cc TmpSTAAPCloseAP - *fill* 0x3ffe82cd 0x3 - .data 0x3ffe82d0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - *fill* 0x3ffe82d1 0x7 - .data 0x3ffe82d8 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - *fill* 0x3ffe82f4 0xc - .data 0x3ffe8300 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - 0x3ffe8302 tx_rf_ana_gain - 0x3ffe8330 rx_gain_swp - 0x3ffe8350 test_rffreq_txcap - *fill* 0x3ffe8353 0x1 - .data 0x3ffe8354 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - 0x3ffe8354 rfcal_bb_atten_init - *fill* 0x3ffe8355 0x3 - .data 0x3ffe8358 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - 0x3ffe8358 chip_version - .data 0x3ffe835c 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - 0x3ffe835c __fdlib_version - *(.data.*) - .data.esp8266_gpioToFn - 0x3ffe8360 0x10 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - 0x3ffe8360 esp8266_gpioToFn - .data.pwm_range - 0x3ffe8370 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffe8370 pwm_range - .data.pwm_freq - 0x3ffe8374 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffe8374 pwm_freq - .data.hx_type 0x3ffe8378 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8378 hx_type - *fill* 0x3ffe8379 0x3 - .data.hx_scale - 0x3ffe837c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe837c hx_scale - .data.lm75ad_addresses - 0x3ffe8380 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8380 lm75ad_addresses - .data.bmp_addresses - 0x3ffe8388 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8388 bmp_addresses - *fill* 0x3ffe838a 0x2 - .data.ds18x20_chipids - 0x3ffe838c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe838c ds18x20_chipids - *fill* 0x3ffe8391 0x3 - .data.port_multicast - 0x3ffe8394 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8394 port_multicast - .data.cse_power_invalid - 0x3ffe8398 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe8398 cse_power_invalid - *fill* 0x3ffe8399 0x3 - .data.cf_pulses_last_time - 0x3ffe839c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe839c cf_pulses_last_time - .data.hlw_ui_flag - 0x3ffe83a0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83a0 hlw_ui_flag - .data.tuya_wifi_state - 0x3ffe83a1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83a1 tuya_wifi_state - .data.rules_last_minute - 0x3ffe83a2 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83a2 rules_last_minute - .data.rules_old_dimm - 0x3ffe83a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83a4 rules_old_dimm - .data.rules_old_power - 0x3ffe83a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83a8 rules_old_power - .data.rules_new_power - 0x3ffe83ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83ac rules_new_power - .data.timer_last_minute - 0x3ffe83b0 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b0 timer_last_minute - .data.serial_bridge_active - 0x3ffe83b2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b2 serial_bridge_active - .data.sonoff_bridge_learn_key - 0x3ffe83b3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b3 sonoff_bridge_learn_key - .data.light_fixed_color_index - 0x3ffe83b4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b4 light_fixed_color_index - .data.light_update - 0x3ffe83b5 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b5 light_update - *fill* 0x3ffe83b6 0x2 - .data.ledTable - 0x3ffe83b8 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe83b8 ledTable - .data.energy_power_steady_cntr - 0x3ffe84b8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84b8 energy_power_steady_cntr - .data.energy_power_on - 0x3ffe84b9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84b9 energy_power_on - *fill* 0x3ffe84ba 0x2 - .data.energy_frequency - 0x3ffe84bc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84bc energy_frequency - .data.energy_power_factor - 0x3ffe84c0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84c0 energy_power_factor - .data.energy_reactive_power - 0x3ffe84c4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84c4 energy_reactive_power - .data.energy_apparent_power - 0x3ffe84c8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84c8 energy_apparent_power - .data.mqtt_initial_connection_state - 0x3ffe84cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84cc mqtt_initial_connection_state - .data.mqtt_retry_counter - 0x3ffe84cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84cd mqtt_retry_counter - .data.config_xor_on_set - 0x3ffe84ce 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84ce config_xor_on_set - *fill* 0x3ffe84cf 0x1 - .data.minimum_signal_quality - 0x3ffe84d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84d0 minimum_signal_quality - .data.remove_duplicate_access_points - 0x3ffe84d4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84d4 remove_duplicate_access_points - *fill* 0x3ffe84d5 0x3 - .data.midnight - 0x3ffe84d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84d8 midnight - .data.latest_uptime_flag - 0x3ffe84dc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84dc latest_uptime_flag - .data.web_log_index - 0x3ffe84dd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84dd web_log_index - .data.ota_retry_counter - 0x3ffe84de 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84de ota_retry_counter - *fill* 0x3ffe84df 0x1 - .data.lastbutton - 0x3ffe84e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84e0 lastbutton - .data.blinkspeed - 0x3ffe84e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84e4 blinkspeed - *fill* 0x3ffe84e5 0x3 - .data.blinks 0x3ffe84e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84e8 blinks - .data.tele_period - 0x3ffe84ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84ec tele_period - .data.baudrate - 0x3ffe84f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84f0 baudrate - .data.serial_config - 0x3ffe84f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe84f4 serial_config - .data._ZL15default_scl_pin - 0x3ffe84f8 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data._ZL15default_sda_pin - 0x3ffe84fc 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .data._ZN23ESP8266WiFiGenericClass11_persistentE - 0x3ffe8500 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe8500 ESP8266WiFiGenericClass::_persistent - *fill* 0x3ffe8501 0x3 - .data._ZN8RCSwitch17nReceiveToleranceE - 0x3ffe8504 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3ffe8504 RCSwitch::nReceiveTolerance - .data.AUTHORIZATION_HEADER - 0x3ffe8508 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe8508 AUTHORIZATION_HEADER - .data.twi_dcount - 0x3ffe850c 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x3ffe850c twi_dcount - *fill* 0x3ffe850d 0x3 - .data.dhcps_lease_time - 0x3ffe8510 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0x3ffe8510 dhcps_lease_time - .data.offer 0x3ffe8514 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x3ffe8515 0x3 - .data.xid$2648 - 0x3ffe8518 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .data.time_zone - 0x3ffe851c 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3ffe851c time_zone - *fill* 0x3ffe851d 0x3 - .data.iss$2741 - 0x3ffe8520 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .data.port$2594 - 0x3ffe8524 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - *(.gnu.linkonce.d.*) - *(.data1) - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.jcr) - 0x3ffe8528 . = ALIGN (0x4) - *fill* 0x3ffe8526 0x2 - 0x3ffe8528 _Pri_3_HandlerAddress = ABSOLUTE (.) - 0x3ffe8528 _data_end = ABSOLUTE (.) - -.rodata 0x3ffe8530 0x1ff0 - 0x3ffe8530 _rodata_start = ABSOLUTE (.) - *(.sdk.version) - .sdk.version 0x3ffe8530 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x3ffe8530 SDK_VERSION - *(.rodata) - .rodata 0x3ffe8540 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata 0x3ffe8560 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - *fill* 0x3ffe8572 0x2 - .rodata 0x3ffe8574 0x4 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .rodata 0x3ffe8578 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - *fill* 0x3ffe857f 0x1 - .rodata 0x3ffe8580 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .rodata 0x3ffe8584 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .rodata 0x3ffe85c8 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .rodata 0x3ffe85dc 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .rodata 0x3ffe85fc 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .rodata 0x3ffe8604 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - *fill* 0x3ffe860d 0x3 - .rodata 0x3ffe8610 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .rodata 0x3ffe8618 0xa8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .rodata 0x3ffe86c0 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - *fill* 0x3ffe86c9 0x3 - .rodata 0x3ffe86cc 0x9 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - *fill* 0x3ffe86d5 0x3 - .rodata 0x3ffe86d8 0x1d8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .rodata 0x3ffe88b0 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - *(.rodata.*) - .rodata.str1.4 - 0x3ffe8920 0x879 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8b5 (size before relaxing) - *fill* 0x3ffe9199 0x3 - .rodata._Z8UnescapePcPt - 0x3ffe919c 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z13LightHsbToRgbv - 0x3ffe9208 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z12RulesCommandv - 0x3ffe921c 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe9248 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x3ffe9260 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x3ffe9278 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z13RfSendCommandv - 0x3ffe9290 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata.setup 0x3ffe92a8 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z9HxCommandv - 0x3ffe92c0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xsns34h - 0x3ffe92d8 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z13SwitchHandlerh - 0x3ffe9308 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xsns03h - 0x3ffe9328 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z14RulesEvery50msv - 0x3ffe9354 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z6Xdrv10h - 0x3ffe936c 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z12LightAnimatev - 0x3ffe93bc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._Z16HandleUploadDonev - 0x3ffe93d0 0x34 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata.CSWTCH$3978 - 0x3ffe9404 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZZ15OneWireWriteBithE10delay_high - 0x3ffe9408 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe940a 0x2 - .rodata._ZZ15OneWireWriteBithE9delay_low - 0x3ffe940c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe940e 0x2 - .rodata._ZL14pzem_responses - 0x3ffe9410 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe9415 0x3 - .rodata._ZL13pzem_commands - 0x3ffe9418 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe941d 0x3 - .rodata._ZL18kMonthNamesEnglish - 0x3ffe9420 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe9445 0x3 - .rodata._ZL12kDaysInMonth - 0x3ffe9448 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZL12kIFan02Speed - 0x3ffe9454 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - .rodata._ZL11kMonthNames - 0x3ffe9460 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3ffe94a9 0x7 - .rodata._ZTVN11ArduinoJson10JsonBufferE - 0x3ffe94b0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe94b0 vtable for ArduinoJson::JsonBuffer - *fill* 0x3ffe94bc 0x4 - .rodata._ZTV12PubSubClient - 0x3ffe94c0 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe94c0 vtable for PubSubClient - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE - 0x3ffe94d0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe94d0 vtable for ArduinoJson::StaticJsonBuffer<256u> - *fill* 0x3ffe94dc 0x4 - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE - 0x3ffe94e0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe94e0 vtable for ArduinoJson::StaticJsonBuffer<1024u> - *fill* 0x3ffe94ec 0x4 - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE - 0x3ffe94f0 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe94f0 vtable for ArduinoJson::StaticJsonBuffer<150u> - *fill* 0x3ffe94fc 0x4 - .rodata._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x3ffe9500 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3ffe9500 vtable for ArduinoJson::StaticJsonBuffer<400u> - *fill* 0x3ffe950c 0x4 - .rodata._ZTV7TwoWire - 0x3ffe9510 0x28 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3ffe9510 vtable for TwoWire - .rodata.str1.4 - 0x3ffe9538 0x17 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x3ffe954f 0x1 - .rodata.str1.4 - 0x3ffe9550 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - *fill* 0x3ffe956e 0x2 - .rodata._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE - 0x3ffe9570 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe9570 vtable for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0> - *fill* 0x3ffe958c 0x4 - .rodata._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE - 0x3ffe9590 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3ffe9590 vtable for std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0> - .rodata.str1.4 - 0x00000000 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .rodata.CSWTCH$69 - 0x3ffe95ac 0x6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .rodata.str1.4 - 0x00000000 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe95b2 0x2 - .rodata.CSWTCH$36 - 0x3ffe95b4 0x5 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - *fill* 0x3ffe95b9 0x7 - .rodata._ZTV10WiFiClient - 0x3ffe95c0 0x4c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3ffe95c0 vtable for WiFiClient - *fill* 0x3ffe960c 0x4 - .rodata._ZTV7WiFiUDP - 0x3ffe9610 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3ffe9610 vtable for WiFiUDP - .rodata.str1.4 - 0x3ffe9664 0x7c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x88 (size before relaxing) - .rodata.str1.4 - 0x3ffe96e0 0x5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x12 (size before relaxing) - *fill* 0x3ffe96e5 0x3 - .rodata._ZL5proto - 0x3ffe96e8 0x46 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - *fill* 0x3ffe972e 0x2 - .rodata.str1.4 - 0x3ffe9730 0x6 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0xa (size before relaxing) - *fill* 0x3ffe9736 0x2 - .rodata._ZN17ESP8266HTTPUpdate18getLastErrorStringEv - 0x3ffe9738 0x20 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .rodata._ZTV13TasmotaSerial - 0x3ffe9758 0x30 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x3ffe9758 vtable for TasmotaSerial - .rodata._ZL7ISRList - 0x3ffe9788 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .rodata._ZTV13TasmotaModbus - 0x3ffe97c8 0x30 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x3ffe97c8 vtable for TasmotaModbus - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .rodata.str1.4 - 0x3ffe97f8 0x326 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x33e (size before relaxing) - *fill* 0x3ffe9b1e 0x2 - .rodata._ZTV14RequestHandler - 0x3ffe9b20 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9b20 vtable for RequestHandler - .rodata._ZTV22FunctionRequestHandler - 0x3ffe9b40 0x20 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3ffe9b40 vtable for FunctionRequestHandler - .rodata.str1.4 - 0x3ffe9b60 0x73 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xaf (size before relaxing) - *fill* 0x3ffe9bd3 0x1 - .rodata.str1.4 - 0x3ffe9bd4 0xc0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0xc1 (size before relaxing) - .rodata.CSWTCH$82 - 0x3ffe9c94 0x20 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - *fill* 0x3ffe9cb4 0x4 - .rodata._ZTV14HardwareSerial - 0x3ffe9cb8 0x30 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3ffe9cb8 vtable for HardwareSerial - .rodata.str1.4 - 0x3ffe9ce8 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - *fill* 0x3ffe9cf4 0x4 - .rodata._ZTV9IPAddress - 0x3ffe9cf8 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x3ffe9cf8 vtable for IPAddress - .rodata.str1.4 - 0x3ffe9d04 0x5 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - *fill* 0x3ffe9d09 0x3 - .rodata.str1.4 - 0x3ffe9d0c 0xc .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x12 (size before relaxing) - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .rodata._ZTV6Stream - 0x3ffe9d18 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x3ffe9d18 vtable for Stream - .rodata._ZTV12StreamString - 0x3ffe9d40 0x28 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x3ffe9d40 vtable for StreamString - .rodata.str1.4 - 0x3ffe9d68 0x114 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x118 (size before relaxing) - .rodata.str1.4 - 0x00000000 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .rodata.str1.4 - 0x3ffe9e7c 0x62 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffe9ede 0x2 - .rodata._ZZSt25__throw_bad_function_callvE8__func__ - 0x3ffe9ee0 0x1a .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffe9efa 0x2 - .rodata._ZZ18__cxa_pure_virtualE8__func__ - 0x3ffe9efc 0x13 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - *fill* 0x3ffe9f0f 0x1 - .rodata.str1.4 - 0x3ffe9f10 0x7e .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3ffe9f8e 0x2 - .rodata._ZZL9loop_taskP11ETSEventTagE8__func__ - 0x3ffe9f90 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3ffe9f9a 0x2 - .rodata._ZZ7__yieldE8__func__ - 0x3ffe9f9c 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .rodata.str1.4 - 0x3ffe9fa4 0x11 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x1c (size before relaxing) - *fill* 0x3ffe9fb5 0x3 - .rodata.str1.4 - 0x3ffe9fb8 0x109 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - *fill* 0x3ffea0c1 0x3 - .rodata.str1.4 - 0x3ffea0c4 0x41 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .rodata.str1.4 - 0x00000000 0x3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - *fill* 0x3ffea105 0x3 - .rodata.str1.4 - 0x3ffea108 0x123 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - *fill* 0x3ffea22b 0x1 - .rodata.str1.4 - 0x3ffea22c 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .rodata.str1.4 - 0x3ffea238 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x10 (size before relaxing) - .rodata.str1.4 - 0x3ffea240 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0xc (size before relaxing) - .rodata.str1.4 - 0x3ffea244 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0xc (size before relaxing) - .rodata.str1.4 - 0x3ffea248 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0xc (size before relaxing) - .rodata.str1.4 - 0x3ffea24c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0xc (size before relaxing) - .rodata.str1.1 - 0x3ffea250 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0x26 (size before relaxing) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .rodata.str1.1 - 0x3ffea275 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - 0x62 (size before relaxing) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .rodata.str1.1 - 0x3ffea2d6 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - 0xf (size before relaxing) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .rodata.str1.1 - 0x3ffea2e4 0x3f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .rodata.mon_name$2393 - 0x3ffea323 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .rodata.day_name$2392 - 0x3ffea353 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - *fill* 0x3ffea36f 0x1 - .rodata.year_lengths - 0x3ffea370 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .rodata.mon_lengths - 0x3ffea378 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .rodata.tcp_close_shutdown - 0x3ffea3d8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .rodata.ethzero - 0x3ffea3f8 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0x3ffea3f8 ethzero - .rodata.ethbroadcast - 0x3ffea3fe 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0x3ffea3fe ethbroadcast - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .rodata.str1.1 - 0x3ffea404 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .rodata.str1.1 - 0x00000000 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3ffea415 0x3 - .rodata.str1.4 - 0x3ffea418 0x3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x8 (size before relaxing) - *fill* 0x3ffea41b 0x1 - .rodata.str1.4 - 0x3ffea41c 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .rodata.str1.4 - 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .rodata.str1.4 - 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .rodata.str1.4 - 0x00000000 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - *fill* 0x3ffea423 0x5 - .rodata._ZTV10WiFiServer - 0x3ffea428 0x1c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x3ffea428 vtable for WiFiServer - .rodata.str1.4 - 0x3ffea444 0x4a .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x9a (size before relaxing) - *fill* 0x3ffea48e 0x2 - .rodata._ZN10HTTPClient13errorToStringEi - 0x3ffea490 0x2c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x3ffea4bc 0x4 - .rodata._ZTV15TransportTraits - 0x3ffea4c0 0x18 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x3ffea4c0 vtable for TransportTraits - .rodata.str1.4 - 0x3ffea4d8 0x8 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - 0x7 (size before relaxing) - .rodata.str1.4 - 0x00000000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - *(.gnu.linkonce.r.*) - *(.rodata1) - 0x3ffea4e0 __XT_EXCEPTION_TABLE__ = ABSOLUTE (.) - *(.xt_except_table) - *(.gcc_except_table) - *(.gnu.linkonce.e.*) - *(.gnu.version_r) - *(.eh_frame) - 0x3ffea4e0 . = ((. + 0x3) & 0xfffffffc) - 0x3ffea4e0 __init_array_start = ABSOLUTE (.) - *crtbegin.o(.ctors) - *(EXCLUDE_FILE(*crtend.o) .ctors) - .ctors 0x3ffea4e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .ctors 0x3ffea4e4 0x4 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .ctors 0x3ffea4e8 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .ctors 0x3ffea4ec 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .ctors 0x3ffea4f0 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .ctors 0x3ffea4f4 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .ctors 0x3ffea4f8 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .ctors 0x3ffea4fc 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .ctors 0x3ffea500 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - *(SORT(.ctors.*)) - *(.ctors) - 0x3ffea504 __init_array_end = ABSOLUTE (.) - *crtbegin.o(.dtors) - *(EXCLUDE_FILE(*crtend.o) .dtors) - .dtors 0x3ffea504 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .dtors 0x3ffea508 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .dtors 0x3ffea50c 0x4 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .dtors 0x3ffea510 0x4 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .dtors 0x3ffea514 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - *(SORT(.dtors.*)) - *(.dtors) - 0x3ffea518 __XT_EXCEPTION_DESCS__ = ABSOLUTE (.) - *(.xt_except_desc) - *(.gnu.linkonce.h.*) - 0x3ffea518 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE (.) - *(.xt_except_desc_end) - *(.dynamic) - *(.gnu.version_d) - 0x3ffea518 . = ALIGN (0x4) - 0x3ffea518 _bss_table_start = ABSOLUTE (.) - 0x3ffea518 0x4 LONG 0x3ffea520 _bss_start - 0x3ffea51c 0x4 LONG 0x3fff5268 _bss_end - 0x3ffea520 _bss_table_end = ABSOLUTE (.) - 0x3ffea520 _rodata_end = ABSOLUTE (.) - -.bss 0x3ffea520 0xad48 - 0x3ffea520 . = ALIGN (0x8) - 0x3ffea520 _bss_start = ABSOLUTE (.) - *(.dynsbss) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - *(.dynbss) - *(.bss) - .bss 0x3ffea520 0x34 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - *fill* 0x3ffea554 0xc - .bss 0x3ffea560 0x322 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x3ffea578 pend_flag_noise_check - 0x3ffea580 pend_flag_periodic_cal - 0x3ffea598 idle_timer_reopen_flag - 0x3ffea59a dbg_stop_sw_wdt - 0x3ffea59b dbg_stop_hw_wdt - 0x3ffea59d total_buffed_eb_num - 0x3ffea5a0 HighestFreqOffsetInOneChk - 0x3ffea5a2 LowestFreqOffsetInOneChk - 0x3ffea5a4 DefFreqCalTimer - 0x3ffea5b8 PktNumInOneChk - 0x3ffea740 buffed_eb_arr - *fill* 0x3ffea882 0xe - .bss 0x3ffea890 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .bss 0x3ffea990 0x46c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - *fill* 0x3ffeadfc 0x4 - .bss 0x3ffeae00 0x2f88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0x3ffeae00 wDevCtrl - 0x3ffeafa8 WdevTimOffSet - *fill* 0x3ffedd88 0x8 - .bss 0x3ffedd90 0xaa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - *fill* 0x3ffee834 0xc - .bss 0x3ffee840 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - 0x3ffee840 interface_mask - 0x3ffee860 if_ctrl - .bss 0x3ffee880 0x150 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0x3ffee884 lmacConfMib - 0x3ffee8a8 our_tx_eb - .bss 0x3ffee9d0 0x11a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - 0x3ffee9d0 pmc - 0x3ffeeab0 flash_tmp - *fill* 0x3ffeeaea 0x2 - .bss 0x3ffeeaec 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x3ffeeaf0 info - 0x3ffeeb14 lwip_timer_interval - 0x3ffeeb18 check_timeouts_timer - 0x3ffeeb2c user_init_flag - *fill* 0x3ffeeb2d 0x3 - .bss 0x3ffeeb30 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0x3ffeeb30 dbg_timer_flag - 0x3ffeeb34 timer_list - 0x3ffeeb38 debug_timer - 0x3ffeeb3c debug_timerfn - .bss 0x3ffeeb60 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - 0x3ffeeb60 flash_read - *fill* 0x3ffeeb64 0xc - .bss 0x3ffeeb70 0x242 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x3ffeec67 deep_sleep_flag - 0x3ffeec68 cpu_overclock - 0x3ffeec6c event_cb - 0x3ffeec70 status_led_output_level - 0x3ffeec74 done_cb - 0x3ffeec78 rst_if - 0x3ffeec94 default_interface - 0x3ffeec95 OpmodChgIsOnGoing - 0x3ffeec98 promiscuous_cb - 0x3ffeecb0 event_TaskQueue - *fill* 0x3ffeedb2 0xe - .bss 0x3ffeedc0 0x1c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .bss 0x3ffeef80 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - 0x3ffeef80 hostname - .bss 0x3ffeef8c 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x3ffeef8c g_ic - .bss 0x3ffef608 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x3ffef608 BcnEb_update - 0x3ffef615 BcnWithMcastSendStart - 0x3ffef616 BcnWithMcastSendCnt - 0x3ffef630 PendFreeBcnEb - 0x3ffef634 ApFreqCalTimer - 0x3ffef648 APRecvBcnStartTick - *fill* 0x3ffef65e 0x2 - .bss 0x3ffef660 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - 0x3ffef660 gScanStruct - 0x3ffef70c connect_scan_flag - 0x3ffef70d FreqCalCntForScan - 0x3ffef70e TestStaFreqCalValInput - 0x3ffef710 auth_type - 0x3ffef712 scannum - .bss 0x3ffef728 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .bss 0x3ffef738 0x3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - *fill* 0x3ffef774 0x4 - .bss 0x3ffef778 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - 0x3ffefad8 sta_con_timer - 0x3ffefaec g_cnx_probe_rc_list_cb - 0x3ffefaf0 reconnect_flag - 0x3ffefaf1 no_ap_found_index - *fill* 0x3ffefaf2 0x2 - .bss 0x3ffefaf4 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .bss 0x3ffefb04 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .bss 0x3ffefb08 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - 0x3ffefb08 tout_dis_txpwr_track - 0x3ffefb09 sleep_mode_flag - *fill* 0x3ffefb0a 0x6 - .bss 0x3ffefb10 0x15b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - 0x3ffefb10 g_phyFuns - 0x3ffefb14 rxiq_compute_num - 0x3ffefb18 rx_table_renew_en - 0x3ffefb1c check_result - 0x3ffefb20 chip6_sleep_params - 0x3ffefbb4 chip6_phy_init_ctrl - 0x3ffefc28 phy_freq_offset - 0x3ffefc2a do_pwctrl_flag - 0x3ffefc2b txbk_dpdby_flag - 0x3ffefc2d sw_scan_mode - 0x3ffefc2e rxmax_ext_level - 0x3ffefc30 phy_rx_gain_dc_table - 0x3ffefc44 periodic_cal_dc_num - 0x3ffefc48 periodic_cal_flag - 0x3ffefc49 bbpll_cal_flag - 0x3ffefc4a phy_in_most_power - 0x3ffefc4b init_rf_no_cal - 0x3ffefc4c test_print_time - 0x3ffefc50 phy_rx_gain_dc_flag - 0x3ffefc51 phy_in_vdd33_offset - 0x3ffefc52 phy_set_most_tpw_disbg - 0x3ffefc53 phy_set_most_tpw_index - 0x3ffefc54 adc_rand_noise - 0x3ffefc58 dpd_bypass_original - 0x3ffefc5a phy_txpwr_diff_flash - 0x3ffefc60 noise_array - *fill* 0x3ffefc6b 0x1 - .bss 0x3ffefc6c 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - 0x3ffefc6c phy_tx_power_out - 0x3ffefc6e phy_tx_pwr_error - 0x3ffefc70 tx_pwctrl_track_num - 0x3ffefc71 rxiq_cover_fail_num - 0x3ffefc72 phy_meas_freq_offset - 0x3ffefc74 tx_pwctrl_pk_num - *fill* 0x3ffefc75 0x3 - .bss 0x3ffefc78 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - 0x3ffefc78 periodic_cal_sat - 0x3ffefc7a lslp_mem_opt_8266 - 0x3ffefc7c software_slp_reject - 0x3ffefc7d SDIO_slp_reject - 0x3ffefc7e hardware_reject - *fill* 0x3ffefc7f 0x1 - .bss 0x3ffefc80 0x26a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - *fill* 0x3ffefeea 0x6 - .bss 0x3ffefef0 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - *(.bss.*) - .bss.timer0_user_cb - 0x3ffefef8 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .bss.timer1_user_cb - 0x3ffefefc 0x4 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .bss.interrupt_reg - 0x3ffeff00 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .bss.interrupt_handlers - 0x3ffeff04 0xc0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .bss.current_step$3695 - 0x3ffeffc4 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - *fill* 0x3ffeffc5 0x3 - .bss.pwm_multiplier - 0x3ffeffc8 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffeffc8 pwm_multiplier - .bss.pwm_steps_changed - 0x3ffeffcc 0x1 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffeffcc pwm_steps_changed - *fill* 0x3ffeffcd 0x3 - .bss.pwm_values - 0x3ffeffd0 0x22 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffeffd0 pwm_values - *fill* 0x3ffefff2 0x2 - .bss.pwm_mask 0x3ffefff4 0x4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x3ffefff4 pwm_mask - .bss._pwm_isr_data - 0x3ffefff8 0xd4 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .bss._ZZ17PzemDcEverySecondvE10send_retry - 0x3fff00cc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss._ZZ17PzemAcEverySecondvE10send_retry - 0x3fff00cd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x3fff00ce 0x2 - .bss._ZZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x3fff00d0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00d0 ArduinoJson::JsonObject::invalid()::instance - .bss._ZZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x3fff00d8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00d8 ArduinoJson::JsonArray::invalid()::instance - .bss._ZZ23SonoffBridgeSerialInputvE11receive_len - 0x3fff00e0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.xsns_index - 0x3fff00e1 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00e1 xsns_index - .bss.tx20_available - 0x3fff00e2 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00e2 tx20_available - .bss.tx20_wind_direction - 0x3fff00e3 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00e3 tx20_wind_direction - .bss.tx20_count - 0x3fff00e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00e4 tx20_count - .bss.tx20_wind_sum - 0x3fff00e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00e8 tx20_wind_sum - .bss.tx20_wind_speed_avg - 0x3fff00ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00ec tx20_wind_speed_avg - .bss.tx20_wind_speed_max - 0x3fff00f0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00f0 tx20_wind_speed_max - .bss.tx20_wind_speed_kmh - 0x3fff00f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00f4 tx20_wind_speed_kmh - .bss.tx20_sf 0x3fff00f8 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00f8 tx20_sf - .bss.tx20_sc 0x3fff00fa 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00fa tx20_sc - .bss.tx20_se 0x3fff00fc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00fc tx20_se - .bss.tx20_sd 0x3fff00fd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00fd tx20_sd - .bss.tx20_sb 0x3fff00fe 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00fe tx20_sb - .bss.tx20_sa 0x3fff00ff 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff00ff tx20_sa - .bss.hx_pin_dout - 0x3fff0100 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0100 hx_pin_dout - .bss.hx_pin_sck - 0x3fff0101 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0101 hx_pin_sck - .bss.hx_calibrate_msg - 0x3fff0102 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0102 hx_calibrate_msg - .bss.hx_calibrate_timer - 0x3fff0103 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0103 hx_calibrate_timer - .bss.hx_calibrate_step - 0x3fff0104 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0104 hx_calibrate_step - .bss.hx_tare_flg - 0x3fff0105 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0105 hx_tare_flg - .bss.hx_sample_count - 0x3fff0106 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0106 hx_sample_count - *fill* 0x3fff0107 0x1 - .bss.hx_offset - 0x3fff0108 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0108 hx_offset - .bss.hx_sum_weight - 0x3fff010c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff010c hx_sum_weight - .bss.hx_weight - 0x3fff0110 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0110 hx_weight - .bss.ecnt 0x3fff0114 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0114 ecnt - .bss.tcnt 0x3fff0115 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0115 tcnt - .bss.TVOC 0x3fff0116 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0116 TVOC - .bss.eCO2 0x3fff0118 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0118 eCO2 - .bss.CCS811_type - 0x3fff011a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff011a CCS811_type - .bss.CCS811_ready - 0x3fff011b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff011b CCS811_ready - .bss.ccs 0x3fff011c 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff011c ccs - .bss.lm75ad_address - 0x3fff012c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff012c lm75ad_address - .bss.lm75ad_type - 0x3fff012d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff012d lm75ad_type - .bss.sgp30_counter - 0x3fff012e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff012e sgp30_counter - .bss.sgp30_ready - 0x3fff012f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff012f sgp30_ready - .bss.sgp30_type - 0x3fff0130 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0130 sgp30_type - *fill* 0x3fff0131 0x3 - .bss.sgp 0x3fff0134 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0134 sgp - .bss.Bme280CalibrationData - 0x3fff0148 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0148 Bme280CalibrationData - .bss.bmp180_cal_data - 0x3fff018c 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff018c bmp180_cal_data - .bss.bmp_sensors - 0x3fff01b4 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff01b4 bmp_sensors - .bss.bmp_count - 0x3fff01e4 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff01e4 bmp_count - *fill* 0x3fff01e5 0x3 - .bss.Dht 0x3fff01e8 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff01e8 Dht - .bss.dht_sensors - 0x3fff0248 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0248 dht_sensors - *fill* 0x3fff0249 0x3 - .bss.dht_data 0x3fff024c 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff024c dht_data - *fill* 0x3fff0251 0x3 - .bss.dht_max_cycles - 0x3fff0254 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0254 dht_max_cycles - .bss.onewire_rom_id - 0x3fff0258 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0258 onewire_rom_id - .bss.onewire_last_device_flag - 0x3fff0260 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0260 onewire_last_device_flag - .bss.onewire_last_family_discrepancy - 0x3fff0261 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0261 onewire_last_family_discrepancy - .bss.onewire_last_discrepancy - 0x3fff0262 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0262 onewire_last_discrepancy - *fill* 0x3fff0263 0x1 - .bss.ds18x20_types - 0x3fff0264 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0264 ds18x20_types - .bss.ds18x20_pin - 0x3fff0270 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0270 ds18x20_pin - .bss.ds18x20_sensors - 0x3fff0271 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0271 ds18x20_sensors - *fill* 0x3fff0272 0x2 - .bss.ds18x20_sensor - 0x3fff0274 0x80 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0274 ds18x20_sensor - .bss.sc_value 0x3fff02f4 0xa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff02f4 sc_value - *fill* 0x3fff02fe 0x2 - .bss.last_counter_timer - 0x3fff0300 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0300 last_counter_timer - .bss.g_gotct 0x3fff0310 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0310 g_gotct - *fill* 0x3fff0311 0x1 - .bss.udp_remote_port - 0x3fff0312 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0312 udp_remote_port - .bss.udp_remote_ip - 0x3fff0314 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0314 udp_remote_ip - .bss.udp_response_mutex - 0x3fff031c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff031c udp_response_mutex - *fill* 0x3fff031d 0x3 - .bss.ipMulticast - 0x3fff0320 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0320 ipMulticast - .bss.packet_buffer - 0x3fff0328 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0328 packet_buffer - .bss.udp_connected - 0x3fff03f0 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03f0 udp_connected - *fill* 0x3fff03f1 0x3 - .bss.TickerMSearch - 0x3fff03f4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03f4 TickerMSearch - .bss.PzemDcModbus - 0x3fff03f8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03f8 PzemDcModbus - .bss.PzemAcModbus - 0x3fff03fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff03fc PzemAcModbus - .bss.pzem_sendRetry - 0x3fff0400 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0400 pzem_sendRetry - .bss.pzem_read_state - 0x3fff0401 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0401 pzem_read_state - *fill* 0x3fff0402 0x2 - .bss.pzem_ip 0x3fff0404 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0404 pzem_ip - .bss.PzemSerial - 0x3fff040c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff040c PzemSerial - .bss.cf_pulses - 0x3fff0410 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0410 cf_pulses - .bss.power_cycle_first - 0x3fff0414 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0414 power_cycle_first - .bss.power_cycle - 0x3fff0418 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0418 power_cycle - .bss.current_cycle - 0x3fff041c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff041c current_cycle - .bss.voltage_cycle - 0x3fff0420 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0420 voltage_cycle - .bss.cse_receive_flag - 0x3fff0424 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0424 cse_receive_flag - *fill* 0x3fff0425 0x3 - .bss.hlw_cf1_current_max_pulse_counter - 0x3fff0428 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0428 hlw_cf1_current_max_pulse_counter - .bss.hlw_cf1_voltage_max_pulse_counter - 0x3fff042c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff042c hlw_cf1_voltage_max_pulse_counter - .bss.hlw_current_ratio - 0x3fff0430 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0430 hlw_current_ratio - .bss.hlw_voltage_ratio - 0x3fff0434 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0434 hlw_voltage_ratio - .bss.hlw_power_ratio - 0x3fff0438 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0438 hlw_power_ratio - .bss.hlw_energy_period_counter - 0x3fff043c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff043c hlw_energy_period_counter - .bss.hlw_cf1_current_pulse_length - 0x3fff0440 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0440 hlw_cf1_current_pulse_length - .bss.hlw_cf1_voltage_pulse_length - 0x3fff0444 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0444 hlw_cf1_voltage_pulse_length - .bss.hlw_cf1_pulse_counter - 0x3fff0448 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0448 hlw_cf1_pulse_counter - .bss.hlw_cf1_summed_pulse_length - 0x3fff044c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff044c hlw_cf1_summed_pulse_length - .bss.hlw_cf1_pulse_last_time - 0x3fff0450 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0450 hlw_cf1_pulse_last_time - .bss.hlw_cf1_pulse_length - 0x3fff0454 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0454 hlw_cf1_pulse_length - .bss.hlw_cf_pulse_last_time - 0x3fff0458 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0458 hlw_cf_pulse_last_time - .bss.hlw_cf_pulse_length - 0x3fff045c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff045c hlw_cf_pulse_length - .bss.hlw_cf1_timer - 0x3fff0460 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0460 hlw_cf1_timer - .bss.hlw_load_off - 0x3fff0461 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0461 hlw_load_off - .bss.hlw_model_type - 0x3fff0462 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0462 hlw_model_type - .bss.hlw_select_ui_flag - 0x3fff0463 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0463 hlw_select_ui_flag - .bss.rf_lasttime - 0x3fff0464 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0464 rf_lasttime - .bss.mySwitch 0x3fff0468 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0468 mySwitch - .bss.tuya_byte_counter - 0x3fff0480 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0480 tuya_byte_counter - .bss.tuya_buffer - 0x3fff0484 0x100 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0484 tuya_buffer - .bss.tuya_data_len - 0x3fff0584 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0584 tuya_data_len - .bss.tuya_cmd_checksum - 0x3fff0585 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0585 tuya_cmd_checksum - .bss.tuya_cmd_status - 0x3fff0586 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0586 tuya_cmd_status - .bss.tuya_ignore_dim - 0x3fff0587 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0587 tuya_ignore_dim - .bss.tuya_new_dim - 0x3fff0588 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0588 tuya_new_dim - *fill* 0x3fff0589 0x3 - .bss.TuyaSerial - 0x3fff058c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff058c TuyaSerial - .bss.vars 0x3fff0590 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0590 vars - *fill* 0x3fff05c2 0x2 - .bss.event_data - 0x3fff05c4 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff05c4 event_data - .bss.rules_teleperiod - 0x3fff0628 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0628 rules_teleperiod - *fill* 0x3fff0629 0x3 - .bss.rules_trigger_count - 0x3fff062c 0x3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff062c rules_trigger_count - *fill* 0x3fff062f 0x1 - .bss.rules_triggers - 0x3fff0630 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0630 rules_triggers - .bss.rules_timer - 0x3fff063c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff063c rules_timer - .bss.rules_event_value - 0x3fff065c 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff065c rules_event_value - .bss.timer_window - 0x3fff0668 0x10 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0668 timer_window - .bss.serial_bridge_buffer - 0x3fff0678 0x82 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0678 serial_bridge_buffer - *fill* 0x3fff06fa 0x2 - .bss.serial_bridge_polling_window - 0x3fff06fc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff06fc serial_bridge_polling_window - .bss.serial_bridge_in_byte_counter - 0x3fff0700 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0700 serial_bridge_in_byte_counter - *fill* 0x3fff0701 0x3 - .bss.SerialBridgeSerial - 0x3fff0704 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0704 SerialBridgeSerial - .bss.sonoff_bridge_last_learn_time - 0x3fff0708 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0708 sonoff_bridge_last_learn_time - .bss.sonoff_bridge_last_time - 0x3fff070c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff070c sonoff_bridge_last_time - .bss.sonoff_bridge_last_send_code - 0x3fff0710 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0710 sonoff_bridge_last_send_code - .bss.sonoff_bridge_last_received_id - 0x3fff0714 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0714 sonoff_bridge_last_received_id - .bss.sonoff_bridge_expected_bytes - 0x3fff0718 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0718 sonoff_bridge_expected_bytes - .bss.sonoff_bridge_learn_active - 0x3fff0719 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0719 sonoff_bridge_learn_active - .bss.sonoff_bridge_receive_raw_flag - 0x3fff071a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff071a sonoff_bridge_receive_raw_flag - .bss.sonoff_bridge_receive_flag - 0x3fff071b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff071b sonoff_bridge_receive_flag - .bss.light_brightness - 0x3fff071c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff071c light_brightness - .bss.light_saturation - 0x3fff0720 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0720 light_saturation - .bss.light_hue - 0x3fff0724 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0724 light_hue - .bss.light_pdcki_pin - 0x3fff0728 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0728 light_pdcki_pin - .bss.light_pdi_pin - 0x3fff0729 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0729 light_pdi_pin - *fill* 0x3fff072a 0x2 - .bss.strip_timer_counter - 0x3fff072c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff072c strip_timer_counter - .bss.light_wakeup_counter - 0x3fff0730 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0730 light_wakeup_counter - .bss.light_wakeup_dimmer - 0x3fff0732 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0732 light_wakeup_dimmer - .bss.light_wakeup_active - 0x3fff0733 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0733 light_wakeup_active - .bss.light_power - 0x3fff0734 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0734 light_power - .bss.light_device - 0x3fff0735 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0735 light_device - .bss.light_subtype - 0x3fff0736 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0736 light_subtype - .bss.light_wheel - 0x3fff0737 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0737 light_wheel - .bss.light_signal_color - 0x3fff0738 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0738 light_signal_color - *fill* 0x3fff073d 0x3 - .bss.light_last_color - 0x3fff0740 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0740 light_last_color - *fill* 0x3fff0745 0x3 - .bss.light_new_color - 0x3fff0748 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0748 light_new_color - *fill* 0x3fff074d 0x3 - .bss.light_current_color - 0x3fff0750 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0750 light_current_color - *fill* 0x3fff0755 0x3 - .bss.light_entry_color - 0x3fff0758 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0758 light_entry_color - *fill* 0x3fff075d 0x3 - .bss.energy_command_code - 0x3fff0760 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0760 energy_command_code - .bss.ticker_energy - 0x3fff0764 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0764 ticker_energy - .bss.energy_fifth_second - 0x3fff0768 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0768 energy_fifth_second - *fill* 0x3fff0769 0x1 - .bss.energy_mplw_counter - 0x3fff076a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff076a energy_mplw_counter - .bss.energy_mplh_counter - 0x3fff076c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff076c energy_mplh_counter - .bss.energy_mplr_counter - 0x3fff076e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff076e energy_mplr_counter - .bss.energy_max_energy_state - 0x3fff076f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff076f energy_max_energy_state - .bss.energy_max_current_flag - 0x3fff0770 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0770 energy_max_current_flag - .bss.energy_min_current_flag - 0x3fff0771 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0771 energy_min_current_flag - .bss.energy_max_voltage_flag - 0x3fff0772 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0772 energy_max_voltage_flag - .bss.energy_min_voltage_flag - 0x3fff0773 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0773 energy_min_voltage_flag - .bss.energy_max_power_flag - 0x3fff0774 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0774 energy_max_power_flag - .bss.energy_min_power_flag - 0x3fff0775 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0775 energy_min_power_flag - .bss.energy_type_dc - 0x3fff0776 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0776 energy_type_dc - .bss.energy_power_delta - 0x3fff0777 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0777 energy_power_delta - .bss.energy_power_last - 0x3fff0778 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0778 energy_power_last - .bss.energy_period - 0x3fff0784 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0784 energy_period - .bss.energy_kWhtoday - 0x3fff0788 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0788 energy_kWhtoday - .bss.energy_kWhtoday_delta - 0x3fff078c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff078c energy_kWhtoday_delta - .bss.energy_total - 0x3fff0790 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0790 energy_total - .bss.energy_daily - 0x3fff0794 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0794 energy_daily - .bss.energy_start - 0x3fff0798 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0798 energy_start - .bss.energy_active_power - 0x3fff079c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff079c energy_active_power - .bss.energy_current - 0x3fff07a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff07a0 energy_current - .bss.energy_voltage - 0x3fff07a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff07a4 energy_voltage - .bss.MqttClient - 0x3fff07a8 0x430 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff07a8 MqttClient - .bss.mqtt_connected - 0x3fff0bd8 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bd8 mqtt_connected - .bss.config_block_count - 0x3fff0bd9 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bd9 config_block_count - .bss.upload_progress_dot_count - 0x3fff0bda 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bda upload_progress_dot_count - .bss.upload_file_type - 0x3fff0bdb 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bdb upload_file_type - .bss.upload_error - 0x3fff0bdc 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bdc upload_error - .bss.webserver_state - 0x3fff0bdd 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bdd webserver_state - *fill* 0x3fff0bde 0x2 - .bss.WebServer - 0x3fff0be0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0be0 WebServer - .bss.DnsServer - 0x3fff0be4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0be4 DnsServer - .bss.efm8bb1_update - 0x3fff0be8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0be8 efm8bb1_update - .bss.ntp_sync_minute - 0x3fff0bec 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bec ntp_sync_minute - .bss.midnight_now - 0x3fff0bed 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bed midnight_now - *fill* 0x3fff0bee 0x2 - .bss.time_timezone - 0x3fff0bf0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bf0 time_timezone - .bss.restart_time - 0x3fff0bf4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bf4 restart_time - .bss.ntp_time 0x3fff0bf8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bf8 ntp_time - .bss.standard_time - 0x3fff0bfc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0bfc standard_time - .bss.daylight_saving_time - 0x3fff0c00 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c00 daylight_saving_time - .bss.local_time - 0x3fff0c04 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c04 local_time - .bss.utc_time 0x3fff0c08 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c08 utc_time - .bss.TickerRtc - 0x3fff0c0c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c0c TickerRtc - .bss.i2c_buffer - 0x3fff0c10 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c10 i2c_buffer - .bss.wifi_config_counter - 0x3fff0c14 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c14 wifi_config_counter - .bss.wifi_config_type - 0x3fff0c15 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c15 wifi_config_type - .bss.wifi_status - 0x3fff0c16 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c16 wifi_status - .bss.wifi_retry - 0x3fff0c17 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c17 wifi_retry - .bss.wifi_retry_init - 0x3fff0c18 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c18 wifi_retry_init - .bss.wifi_counter - 0x3fff0c19 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c19 wifi_counter - .bss.oswatch_blocked_loop - 0x3fff0c1a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c1a oswatch_blocked_loop - *fill* 0x3fff0c1b 0x1 - .bss._ZL22oswatch_last_loop_time - 0x3fff0c1c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .bss.tickerOSWatch - 0x3fff0c20 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c20 tickerOSWatch - .bss.syslog_host_hash - 0x3fff0c24 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c24 syslog_host_hash - .bss.syslog_host_addr - 0x3fff0c28 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c28 syslog_host_addr - .bss.settings_buffer - 0x3fff0c30 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c30 settings_buffer - .bss.settings_location - 0x3fff0c34 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c34 settings_location - .bss.settings_crc - 0x3fff0c38 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c38 settings_crc - *fill* 0x3fff0c3a 0x2 - .bss.rtc_reboot_crc - 0x3fff0c3c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c3c rtc_reboot_crc - .bss.rtc_settings_crc - 0x3fff0c40 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c40 rtc_settings_crc - .bss.backlog 0x3fff0c44 0x168 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0c44 backlog - .bss.web_log 0x3fff0dac 0xfa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff0dac web_log - .bss.log_data 0x3fff1d4c 0x200 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff1d4c log_data - .bss.mqtt_data - 0x3fff1f4c 0x37d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff1f4c mqtt_data - *fill* 0x3fff22c9 0x3 - .bss.serial_in_buffer - 0x3fff22cc 0x208 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff22cc serial_in_buffer - .bss.mqtt_topic - 0x3fff24d4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff24d4 mqtt_topic - *fill* 0x3fff24f5 0x3 - .bss.mqtt_client - 0x3fff24f8 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff24f8 mqtt_client - *fill* 0x3fff2519 0x3 - .bss.my_hostname - 0x3fff251c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff251c my_hostname - *fill* 0x3fff253d 0x3 - .bss.my_version - 0x3fff2540 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2540 my_version - *fill* 0x3fff2561 0x3 - .bss.global_state - 0x3fff2564 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2564 global_state - *fill* 0x3fff2565 0x3 - .bss.my_module - 0x3fff2568 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2568 my_module - .bss.mdns_begun - 0x3fff2589 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2589 mdns_begun - .bss.pwm_present - 0x3fff258a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258a pwm_present - .bss.mdns_delayed_start - 0x3fff258b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258b mdns_delayed_start - .bss.syslog_level - 0x3fff258c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258c syslog_level - .bss.seriallog_level - 0x3fff258d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258d seriallog_level - .bss.devices_present - 0x3fff258e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258e devices_present - .bss.reset_web_log_flag - 0x3fff258f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff258f reset_web_log_flag - .bss.dual_hex_code - 0x3fff2590 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2590 dual_hex_code - .bss.serial_in_byte - 0x3fff2591 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2591 serial_in_byte - .bss.ntp_force_sync - 0x3fff2592 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2592 ntp_force_sync - .bss.light_type - 0x3fff2593 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2593 light_type - .bss.i2c_flg 0x3fff2594 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2594 i2c_flg - .bss.energy_flg - 0x3fff2595 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2595 energy_flg - .bss.dht_flg 0x3fff2596 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2596 dht_flg - .bss.counter_no_pullup - 0x3fff2597 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2597 counter_no_pullup - .bss.pwm_inverted - 0x3fff2598 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2598 pwm_inverted - .bss.led_inverted - 0x3fff2599 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2599 led_inverted - *fill* 0x3fff259a 0x2 - .bss.pin 0x3fff259c 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff259c pin - .bss.virtualswitch - 0x3fff2618 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2618 virtualswitch - .bss.holdwallswitch - 0x3fff2620 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2620 holdwallswitch - .bss.lastwallswitch - 0x3fff2628 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2628 lastwallswitch - .bss.multipress - 0x3fff2630 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2630 multipress - .bss.multiwindow - 0x3fff2634 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2634 multiwindow - .bss.blinkstate - 0x3fff2638 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2638 blinkstate - .bss.stop_flash_rotate - 0x3fff2639 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2639 stop_flash_rotate - .bss.sleep 0x3fff263a 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263a sleep - .bss.interlock_mutex - 0x3fff263b 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263b interlock_mutex - .bss.backlog_mutex - 0x3fff263c 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263c backlog_mutex - .bss.backlog_pointer - 0x3fff263d 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263d backlog_pointer - .bss.backlog_index - 0x3fff263e 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263e backlog_index - .bss.latching_relay_pulse - 0x3fff263f 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff263f latching_relay_pulse - .bss.state_250mS - 0x3fff2640 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2640 state_250mS - .bss.fallback_topic_flag - 0x3fff2641 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2641 fallback_topic_flag - .bss.serial_local - 0x3fff2642 0x1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2642 serial_local - *fill* 0x3fff2643 0x1 - .bss.rules_flag - 0x3fff2644 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2644 rules_flag - .bss.save_data_counter - 0x3fff2646 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2646 save_data_counter - .bss.switch_no_pullup - 0x3fff2648 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2648 switch_no_pullup - *fill* 0x3fff264a 0x2 - .bss.holdbutton - 0x3fff264c 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff264c holdbutton - .bss.syslog_timer - 0x3fff2654 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2654 syslog_timer - .bss.seriallog_timer - 0x3fff2656 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2656 seriallog_timer - .bss.blink_counter - 0x3fff2658 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2658 blink_counter - .bss.mqtt_cmnd_publish - 0x3fff265a 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff265a mqtt_cmnd_publish - .bss.dual_button_code - 0x3fff265c 0x2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff265c dual_button_code - *fill* 0x3fff265e 0x2 - .bss.ota_url 0x3fff2660 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2660 ota_url - .bss.global_humidity - 0x3fff2664 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2664 global_humidity - .bss.global_temperature - 0x3fff2668 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2668 global_temperature - .bss.global_update - 0x3fff266c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff266c global_update - .bss.uptime 0x3fff2670 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2670 uptime - .bss.wifi_state_flag - 0x3fff2674 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2674 wifi_state_flag - .bss.restart_flag - 0x3fff2678 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2678 restart_flag - .bss.ota_result - 0x3fff267c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff267c ota_result - .bss.ota_state_flag - 0x3fff2680 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2680 ota_state_flag - .bss.serial_in_byte_counter - 0x3fff2684 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2684 serial_in_byte_counter - .bss.rel_inverted - 0x3fff2688 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2688 rel_inverted - .bss.latching_power - 0x3fff268c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff268c latching_power - .bss.blink_powersave - 0x3fff2690 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2690 blink_powersave - .bss.blink_mask - 0x3fff2694 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2694 blink_mask - .bss.blink_power - 0x3fff2698 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2698 blink_power - .bss.power 0x3fff269c 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff269c power - .bss.switch_debounce - 0x3fff26a0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26a0 switch_debounce - .bss.button_debounce - 0x3fff26a4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26a4 button_debounce - .bss.backlog_delay - 0x3fff26a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26a8 backlog_delay - .bss.blink_timer - 0x3fff26ac 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26ac blink_timer - .bss.pulse_timer - 0x3fff26b0 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26b0 pulse_timer - .bss.state_250msecond - 0x3fff26d0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26d0 state_250msecond - .bss.state_100msecond - 0x3fff26d4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26d4 state_100msecond - .bss.state_50msecond - 0x3fff26d8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26d8 state_50msecond - .bss.serial_polling_window - 0x3fff26dc 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26dc serial_polling_window - .bss.feature_sns2 - 0x3fff26e0 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26e0 feature_sns2 - .bss.feature_sns1 - 0x3fff26e4 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26e4 feature_sns1 - .bss.feature_drv2 - 0x3fff26e8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26e8 feature_drv2 - .bss.feature_drv1 - 0x3fff26ec 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26ec feature_drv1 - .bss.PortUdp 0x3fff26f0 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff26f0 PortUdp - .bss.EspClient - 0x3fff2708 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2708 EspClient - .bss.XdrvMailbox - 0x3fff2720 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2720 XdrvMailbox - .bss.RtcTime 0x3fff2734 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff2734 RtcTime - .bss.RtcSettings - 0x3fff274c 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff274c RtcSettings - .bss.RtcReboot - 0x3fff27a8 0x4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff27a8 RtcReboot - .bss.Settings 0x3fff27ac 0xe00 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff27ac Settings - *fill* 0x3fff35ac 0x4 - .bss._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x3fff35b0 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff35b0 guard variable for ArduinoJson::JsonObject::invalid()::instance - .bss._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x3fff35b8 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3fff35b8 guard variable for ArduinoJson::JsonArray::invalid()::instance - .bss.Wire 0x3fff35c0 0x10 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35c0 Wire - .bss._ZN7TwoWire12transmittingE - 0x3fff35d0 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35d0 TwoWire::transmitting - .bss._ZN7TwoWire14txBufferLengthE - 0x3fff35d1 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35d1 TwoWire::txBufferLength - .bss._ZN7TwoWire13txBufferIndexE - 0x3fff35d2 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35d2 TwoWire::txBufferIndex - *fill* 0x3fff35d3 0x1 - .bss._ZN7TwoWire8txBufferE - 0x3fff35d4 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35d4 TwoWire::txBuffer - .bss._ZN7TwoWire9txAddressE - 0x3fff35f4 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35f4 TwoWire::txAddress - .bss._ZN7TwoWire14rxBufferLengthE - 0x3fff35f5 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35f5 TwoWire::rxBufferLength - .bss._ZN7TwoWire13rxBufferIndexE - 0x3fff35f6 0x1 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35f6 TwoWire::rxBufferIndex - *fill* 0x3fff35f7 0x1 - .bss._ZN7TwoWire8rxBufferE - 0x3fff35f8 0x20 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3fff35f8 TwoWire::rxBuffer - .bss.WiFi 0x3fff3618 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - 0x3fff3618 WiFi - *fill* 0x3fff3619 0x3 - .bss._ZL12sCbEventList - 0x3fff361c 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .bss._ZN19ESP8266WiFiSTAClass12_useStaticIpE - 0x3fff3624 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x3fff3624 ESP8266WiFiSTAClass::_useStaticIp - *fill* 0x3fff3625 0x3 - .bss._ZN20ESP8266WiFiScanClass11_scanResultE - 0x3fff3628 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3628 ESP8266WiFiScanClass::_scanResult - .bss._ZN20ESP8266WiFiScanClass10_scanCountE - 0x3fff362c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff362c ESP8266WiFiScanClass::_scanCount - .bss._ZN20ESP8266WiFiScanClass13_scanCompleteE - 0x3fff3630 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3630 ESP8266WiFiScanClass::_scanComplete - .bss._ZN20ESP8266WiFiScanClass12_scanStartedE - 0x3fff3631 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3631 ESP8266WiFiScanClass::_scanStarted - .bss._ZN20ESP8266WiFiScanClass10_scanAsyncE - 0x3fff3632 0x1 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3fff3632 ESP8266WiFiScanClass::_scanAsync - *fill* 0x3fff3633 0x1 - .bss._ZN5SListI10WiFiClientE8_s_firstE - 0x3fff3634 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff3634 SList::_s_first - .bss._ZN10WiFiClient10_localPortE - 0x3fff3638 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x3fff3638 WiFiClient::_localPort - *fill* 0x3fff363a 0x2 - .bss._ZN5SListI7WiFiUDPE8_s_firstE - 0x3fff363c 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x3fff363c SList::_s_first - .bss.MDNS 0x3fff3640 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x3fff3640 MDNS - .bss._ZL19MDNS_MULTICAST_ADDR - 0x3fff367c 0x8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .bss._ZZN8RCSwitch15handleInterruptEvE11changeCount - 0x3fff3684 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch15handleInterruptEvE11repeatCount - 0x3fff3688 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZZN8RCSwitch15handleInterruptEvE8lastTime - 0x3fff368c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .bss._ZN8RCSwitch7timingsE - 0x3fff3690 0x10c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff3690 RCSwitch::timings - .bss._ZN8RCSwitch17nReceivedProtocolE - 0x3fff379c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff379c RCSwitch::nReceivedProtocol - .bss._ZN8RCSwitch14nReceivedDelayE - 0x3fff37a0 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff37a0 RCSwitch::nReceivedDelay - .bss._ZN8RCSwitch18nReceivedBitlengthE - 0x3fff37a4 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff37a4 RCSwitch::nReceivedBitlength - .bss._ZN8RCSwitch14nReceivedValueE - 0x3fff37a8 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x3fff37a8 RCSwitch::nReceivedValue - .bss.ESPhttpUpdate - 0x3fff37ac 0x8 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x3fff37ac ESPhttpUpdate - .bss.tms_obj_list - 0x3fff37b4 0x40 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x3fff37b4 tms_obj_list - .bss._ZZN8EspClass13getSketchSizeEvE6result - 0x3fff37f4 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .bss.ESP 0x3fff37f8 0x1 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x3fff37f8 ESP - *fill* 0x3fff37f9 0x3 - .bss.Serial1 0x3fff37fc 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3fff37fc Serial1 - .bss.Serial 0x3fff3818 0x1c .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3fff3818 Serial - .bss.INADDR_NONE - 0x3fff3834 0x8 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x3fff3834 INADDR_NONE - .bss.Update 0x3fff383c 0x90 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x3fff383c Update - .bss._ZL18s_randomSeedCalled - 0x3fff38cc 0x1 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .bss._ZZL12loop_wrappervE10setup_done - 0x3fff38cd 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3fff38ce 0x2 - .bss._ZL22g_micros_at_task_start - 0x3fff38d0 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .bss._ZL12g_loop_queue - 0x3fff38d4 0x8 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - *fill* 0x3fff38dc 0x4 - .bss.g_cont 0x3fff38e0 0x1028 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x3fff38e0 g_cont - .bss.resetInfo - 0x3fff4908 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x3fff4908 resetInfo - .bss.s_abort_called - 0x3fff4924 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - *fill* 0x3fff4925 0x3 - .bss.s_panic_func - 0x3fff4928 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .bss.s_panic_line - 0x3fff492c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .bss.s_panic_file - 0x3fff4930 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .bss.twi_clockStretchLimit - 0x3fff4934 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .bss.twi_scl 0x3fff4938 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .bss.twi_sda 0x3fff4939 0x1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - *fill* 0x3fff493a 0x2 - .bss.micros_overflow_count - 0x3fff493c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .bss.micros_at_last_overflow_tick - 0x3fff4940 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .bss.micros_overflow_timer - 0x3fff4944 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .bss.delay_timer - 0x3fff4958 0x14 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .bss.last$4361 - 0x3fff496c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .bss.errno_var - 0x3fff4970 0x4 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .bss.s_uart_debug_nr - 0x3fff4974 0x4 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .bss.umm_numblocks - 0x3fff4978 0x2 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff4978 umm_numblocks - *fill* 0x3fff497a 0x2 - .bss.umm_heap 0x3fff497c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff497c umm_heap - .bss._ZL11sLastUnused - 0x3fff4980 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss._ZL12sFirstUnused - 0x3fff4984 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss._ZL5sLast - 0x3fff4988 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss._ZL6sFirst - 0x3fff498c 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .bss.renew 0x3fff4990 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x3fff4991 0x3 - .bss.plist 0x3fff4994 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.dhcps_lease - 0x3fff4998 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.client_address - 0x3fff49a4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.server_address - 0x3fff49a8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.broadcast_dhcps - 0x3fff49ac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.pcb_dhcps - 0x3fff49b0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .bss.randnum$3659 - 0x3fff49b4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .bss.pserver_list - 0x3fff49b8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff49b8 pserver_list - .bss.plink_active - 0x3fff49bc 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff49bc plink_active - .bss.dns_random - 0x3fff49c0 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - *fill* 0x3fff49c1 0x3 - .bss.dns_payload - 0x3fff49c4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .bss.dns_servers - 0x3fff49c8 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .bss.dns_table - 0x3fff49d0 0x460 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .bss.dns_seqno - 0x3fff4e30 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - *fill* 0x3fff4e31 0x3 - .bss.dns_pcb 0x3fff4e34 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .bss.netifnum$2695 - 0x3fff4e38 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - *fill* 0x3fff4e39 0x3 - .bss.sntp_timer - 0x3fff4e3c 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss.realtime_stamp - 0x3fff4e50 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3fff4e50 realtime_stamp - .bss.sntp_retry_timeout - 0x3fff4e54 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss.sntp_current_server - 0x3fff4e58 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - *fill* 0x3fff4e59 0x3 - .bss.sntp_servers - 0x3fff4e5c 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss.sntp_pcb 0x3fff4e74 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .bss.tcp_timer - 0x3fff4e78 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - *fill* 0x3fff4e79 0x3 - .bss.tcpip_tcp_timer_active - 0x3fff4e7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .bss.timeouts_last_time - 0x3fff4e80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .bss.next_timeout - 0x3fff4e84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .bss.etharp_cached_entry - 0x3fff4e88 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - *fill* 0x3fff4e89 0x3 - .bss.arp_table - 0x3fff4e8c 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .bss.allrouters - 0x3fff4f7c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .bss.allsystems - 0x3fff4f80 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .bss.igmp_group_list - 0x3fff4f84 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .bss.ip_id 0x3fff4f88 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .bss.str$2146 0x3fff4f8a 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - *fill* 0x3fff4f9a 0x2 - .bss.raw_pcbs 0x3fff4f9c 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .bss.recv_data - 0x3fff4fa0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.recv_flags - 0x3fff4fa4 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3fff4fa5 0x1 - .bss.tcplen 0x3fff4fa6 0x2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.flags 0x3fff4fa8 0x1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *fill* 0x3fff4fa9 0x3 - .bss.ackno 0x3fff4fac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.seqno 0x3fff4fb0 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.iphdr 0x3fff4fb4 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.tcphdr 0x3fff4fb8 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .bss.inseg 0x3fff4fbc 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - *(.gnu.linkonce.b.*) - *(COMMON) - COMMON 0x3fff4fd0 0xe .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x3fff4fd0 ummHeapInfo - *fill* 0x3fff4fde 0x2 - COMMON 0x3fff4fe0 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0x3fff4fe0 pktinfo - 0x3fff5008 premot - COMMON 0x3fff50bc 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - 0x3fff50bc espconn_TaskQueue - COMMON 0x3fff5134 0x32 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - 0x3fff5134 dhcp_rx_options_val - 0x3fff515c dhcp_rx_options_given - *fill* 0x3fff5166 0x2 - COMMON 0x3fff5168 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - 0x3fff5168 netif_default - 0x3fff516c netif_list - COMMON 0x3fff5170 0xc8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x3fff5170 __tznorth - 0x3fff5174 __tzyear - 0x3fff5178 res_buf - 0x3fff519c sntp__tzrule - 0x3fff51d4 reult - COMMON 0x3fff5238 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x3fff5238 tcp_tw_pcbs - 0x3fff523c tcp_ticks - 0x3fff5240 tcp_tmp_pcb - 0x3fff5244 tcp_listen_pcbs - 0x3fff5248 tcp_active_pcbs - 0x3fff524c tcp_bound_pcbs - COMMON 0x3fff5250 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - 0x3fff5250 udp_pcbs - COMMON 0x3fff5254 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - 0x3fff5254 current_iphdr_src - 0x3fff5258 current_netif - 0x3fff525c current_header - 0x3fff5260 current_iphdr_dest - COMMON 0x3fff5264 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - 0x3fff5264 tcp_input_pcb - 0x3fff5268 . = ALIGN (0x8) - 0x3fff5268 _bss_end = ABSOLUTE (.) - 0x3fff5268 _heap_start = ABSOLUTE (.) - -.irom0.text 0x40201010 0x69188 - 0x40201010 _irom0_text_start = ABSOLUTE (.) - *(.ver_number) - *.pioenvs\\*\\lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - .text._ZN7TwoWire5writeEPKhj - 0x40201010 0x53 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40201014 TwoWire::write(unsigned char const*, unsigned int) - *fill* 0x40201063 0x1 - .text._ZN7TwoWire4readEv - 0x40201064 0x2e .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40201070 TwoWire::read() - *fill* 0x40201092 0x2 - .text._ZN7TwoWire4peekEv - 0x40201094 0x1d .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x29 (size before relaxing) - 0x40201094 TwoWire::peek() - *fill* 0x402010b1 0x3 - .text._ZN7TwoWire5flushEv - 0x402010b4 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2c (size before relaxing) - 0x402010bc TwoWire::flush() - .text._ZN7TwoWire9availableEv - 0x402010d8 0x2c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x38 (size before relaxing) - 0x402010d8 TwoWire::available() - .text._ZN7TwoWire5writeEh - 0x40201104 0x3f .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x4b (size before relaxing) - 0x40201108 TwoWire::write(unsigned char) - *fill* 0x40201143 0x1 - .text._ZN7TwoWireC2Ev - 0x40201144 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x40201148 TwoWire::TwoWire() - 0x40201148 TwoWire::TwoWire() - .text._ZN7TwoWire5beginEii - 0x40201158 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x3e (size before relaxing) - 0x40201160 TwoWire::begin(int, int) - *fill* 0x4020118e 0x2 - .text._ZN7TwoWire5beginEv - 0x40201190 0x1c .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x28 (size before relaxing) - 0x40201190 TwoWire::begin() - .text._ZN7TwoWire20setClockStretchLimitEj - 0x402011ac 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x18 (size before relaxing) - 0x402011ac TwoWire::setClockStretchLimit(unsigned int) - .text._ZN7TwoWire11requestFromEhjb - 0x402011c0 0x40 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x50 (size before relaxing) - 0x402011c0 TwoWire::requestFrom(unsigned char, unsigned int, bool) - .text._ZN7TwoWire11requestFromEhh - 0x40201200 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x22 (size before relaxing) - 0x40201200 TwoWire::requestFrom(unsigned char, unsigned char) - *fill* 0x4020121a 0x2 - .text._ZN7TwoWire11requestFromEii - 0x4020121c 0x1a .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1e (size before relaxing) - 0x4020121c TwoWire::requestFrom(int, int) - *fill* 0x40201236 0x2 - .text._ZN7TwoWire17beginTransmissionEh - 0x40201238 0x22 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x2e (size before relaxing) - 0x4020123c TwoWire::beginTransmission(unsigned char) - *fill* 0x4020125a 0x2 - .text._ZN7TwoWire15endTransmissionEh - 0x4020125c 0x36 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x52 (size before relaxing) - 0x4020125c TwoWire::endTransmission(unsigned char) - *fill* 0x40201292 0x2 - .text._ZN7TwoWire15endTransmissionEv - 0x40201294 0x14 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x18 (size before relaxing) - 0x40201294 TwoWire::endTransmission() - .text.startup._GLOBAL__sub_I__ZN7TwoWire8rxBufferE - 0x402012a8 0x19 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x1d (size before relaxing) - *fill* 0x402012c1 0x3 - .text._ZN6Ticker10_attach_msEjbPFvPvEj - 0x402012c4 0x67 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x6b (size before relaxing) - 0x402012d0 Ticker::_attach_ms(unsigned int, bool, void (*)(void*), unsigned int) - *fill* 0x4020132b 0x1 - .text._ZN6Ticker6detachEv - 0x4020132c 0x29 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x31 (size before relaxing) - 0x4020132c Ticker::detach() - *fill* 0x40201355 0x3 - .text._ZN6TickerD2Ev - 0x40201358 0xf .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x17 (size before relaxing) - 0x40201358 Ticker::~Ticker() - 0x40201358 Ticker::~Ticker() - *fill* 0x40201367 0x1 - .text._Z10C2D_enableb$part$0 - 0x40201368 0x13 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1b (size before relaxing) - *fill* 0x4020137b 0x1 - .text._ZL6c2_bitb - 0x4020137c 0x48 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x50 (size before relaxing) - .text._Z16c2_address_writeh - 0x402013c4 0x47 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x77 (size before relaxing) - 0x402013c4 c2_address_write(unsigned char) - *fill* 0x4020140b 0x1 - .text._Z15c2_address_readv - 0x4020140c 0x59 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x89 (size before relaxing) - 0x4020140c c2_address_read() - *fill* 0x40201465 0x3 - .text._Z13c2_data_writejh - 0x40201468 0x88 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xc8 (size before relaxing) - 0x40201468 c2_data_write(unsigned int, unsigned char) - .text._Z12c2_data_readRjh - 0x402014f0 0x9b .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0xdb (size before relaxing) - 0x402014f0 c2_data_read(unsigned int&, unsigned char) - *fill* 0x4020158b 0x1 - .text._Z12c2_data_readRhh$isra$1 - 0x4020158c 0x1e .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x26 (size before relaxing) - *fill* 0x402015aa 0x2 - .text._Z8c2_resetv - 0x402015ac 0x37 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x43 (size before relaxing) - 0x402015b0 c2_reset() - *fill* 0x402015e3 0x1 - .text._Z19c2_programming_initv - 0x402015e4 0x43 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x6b (size before relaxing) - 0x402015e4 c2_programming_init() - *fill* 0x40201627 0x1 - .text._Z14c2_block_writejPhh - 0x40201628 0x197 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x21b (size before relaxing) - 0x4020162c c2_block_write(unsigned int, unsigned char*, unsigned char) - *fill* 0x402017bf 0x1 - .text._Z15c2_device_erasev - 0x402017c0 0x16f .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - 0x1f7 (size before relaxing) - 0x402017c0 c2_device_erase() - *fill* 0x4020192f 0x1 - .text._ZL12value_of_hexh - 0x40201930 0x32 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - *fill* 0x40201962 0x2 - .text._Z10ihx_decodePht - 0x40201964 0xbf .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - 0xcb (size before relaxing) - 0x40201964 ihx_decode(unsigned char*, unsigned short) - *fill* 0x40201a23 0x1 - .text.startup._GLOBAL__sub_I__ZN16ESP8266WiFiClass9printDiagER5Print - 0x40201a24 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - 0x1d (size before relaxing) - *fill* 0x40201a3d 0x3 - .text._ZN18ESP8266WiFiAPClass12softAPConfigE9IPAddressS0_S0_ - 0x40201a40 0xbd .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - 0xfd (size before relaxing) - 0x40201a44 ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress) - *fill* 0x40201afd 0x3 - .text._ZN18ESP8266WiFiAPClass6softAPEPKcS1_ii - 0x40201b00 0x1ba .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - 0x21a (size before relaxing) - 0x40201b20 ESP8266WiFiAPClass::softAP(char const*, char const*, int, int) - *fill* 0x40201cba 0x2 - .text._ZN18ESP8266WiFiAPClass8softAPIPEv - 0x40201cbc 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - 0x31 (size before relaxing) - 0x40201cbc ESP8266WiFiAPClass::softAPIP() - *fill* 0x40201ce1 0x3 - .text._ZN18ESP8266WiFiAPClass16softAPmacAddressEv - 0x40201ce4 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - 0x70 (size before relaxing) - 0x40201cf0 ESP8266WiFiAPClass::softAPmacAddress() - .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x40201d44 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x40201d48 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - 0x40201d48 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x40201d4f 0x1 - .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x40201d50 0x7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0xb (size before relaxing) - 0x40201d50 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - 0x40201d50 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40201d57 0x1 - .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x40201d58 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x1f (size before relaxing) - 0x40201d58 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::~_Sp_counted_base() - *fill* 0x40201d6f 0x1 - .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x40201d70 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x1f (size before relaxing) - 0x40201d70 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::~_Sp_counted_deleter() - *fill* 0x40201d87 0x1 - .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x40201d88 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x1f (size before relaxing) - 0x40201d88 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x40201d9f 0x1 - .text._Z23wifi_dns_found_callbackPKcP7ip_addrPv - 0x40201da0 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x26 (size before relaxing) - 0x40201da0 wifi_dns_found_callback(char const*, ip_addr*, void*) - *fill* 0x40201dbb 0x1 - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x40201dbc 0x4f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x83 (size before relaxing) - *fill* 0x40201e0b 0x1 - .text._ZNSt17_Function_handlerIFvP10_esp_eventEZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlS1_E_E9_M_invokeERKSt9_Any_dataS1_ - 0x40201e0c 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x94 (size before relaxing) - .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x40201e78 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x2a (size before relaxing) - 0x40201e78 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_dispose() - *fill* 0x40201e96 0x2 - .text._ZN23ESP8266WiFiGenericClassC2Ev - 0x40201e98 0x19 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x1d (size before relaxing) - 0x40201e9c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - 0x40201e9c ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() - *fill* 0x40201eb1 0x3 - .text._ZN23ESP8266WiFiGenericClass7channelEv - 0x40201eb4 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x17 (size before relaxing) - 0x40201eb4 ESP8266WiFiGenericClass::channel() - *fill* 0x40201ec3 0x1 - .text._ZN23ESP8266WiFiGenericClass12setSleepModeE13WiFiSleepType - 0x40201ec4 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x18 (size before relaxing) - 0x40201ec4 ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType) - .text._ZN23ESP8266WiFiGenericClass10getPhyModeEv - 0x40201ed8 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x17 (size before relaxing) - 0x40201ed8 ESP8266WiFiGenericClass::getPhyMode() - *fill* 0x40201ee7 0x1 - .text._ZN23ESP8266WiFiGenericClass10persistentEb - 0x40201ee8 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0xc (size before relaxing) - 0x40201ee8 ESP8266WiFiGenericClass::persistent(bool) - .text._ZN23ESP8266WiFiGenericClass4modeE8WiFiMode - 0x40201ef0 0x4d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x69 (size before relaxing) - 0x40201ef0 ESP8266WiFiGenericClass::mode(WiFiMode) - *fill* 0x40201f3d 0x3 - .text._ZN23ESP8266WiFiGenericClass9enableSTAEb - 0x40201f40 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x51 (size before relaxing) - 0x40201f40 ESP8266WiFiGenericClass::enableSTA(bool) - *fill* 0x40201f89 0x3 - .text._ZN23ESP8266WiFiGenericClass8enableAPEb - 0x40201f8c 0x49 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x51 (size before relaxing) - 0x40201f8c ESP8266WiFiGenericClass::enableAP(bool) - *fill* 0x40201fd5 0x3 - .text._ZN23ESP8266WiFiGenericClass10hostByNameEPKcR9IPAddress - 0x40201fd8 0x69 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8d (size before relaxing) - 0x40201fdc ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) - *fill* 0x40202041 0x3 - .text._ZN23ESP8266WiFiGenericClass14_eventCallbackEPv - 0x40202044 0x92 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0xaa (size before relaxing) - 0x4020204c ESP8266WiFiGenericClass::_eventCallback(void*) - *fill* 0x402020d6 0x2 - .text._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x402020d8 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x48 (size before relaxing) - 0x402020dc std::list, std::allocator > >::push_back(std::shared_ptr const&) - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x4020211c 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x6b (size before relaxing) - *fill* 0x4020216f 0x1 - .text._ZNSt14_Function_base13_Base_managerIZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEEEUlP10_esp_eventE_E10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation - 0x40202170 0x53 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x6b (size before relaxing) - *fill* 0x402021c3 0x1 - .text._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x402021c4 0x32 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3e (size before relaxing) - 0x402021c4 std::_List_base, std::allocator > >::_M_clear() - *fill* 0x402021f6 0x2 - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x402021f8 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x3d (size before relaxing) - 0x402021fc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - 0x402021fc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::__shared_count::_Deleter >, std::allocator >(WiFiEventHandlerOpaque*, std::__shared_ptr::_Deleter >, std::allocator) - *fill* 0x40202231 0x3 - .text._ZN23ESP8266WiFiGenericClass18onStationModeGotIPESt8functionIFvRK25WiFiEventStationModeGotIPEE - 0x40202234 0xda .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x136 (size before relaxing) - 0x4020223c ESP8266WiFiGenericClass::onStationModeGotIP(std::function) - *fill* 0x4020230e 0x2 - .text._ZN23ESP8266WiFiGenericClass25onStationModeDisconnectedESt8functionIFvRK32WiFiEventStationModeDisconnectedEE - 0x40202310 0xdb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x133 (size before relaxing) - 0x40202318 ESP8266WiFiGenericClass::onStationModeDisconnected(std::function) - *fill* 0x402023eb 0x1 - .text.startup._GLOBAL__sub_I__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402023ec 0x9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0xd (size before relaxing) - *fill* 0x402023f5 0x3 - .text.exit._GLOBAL__sub_D__ZN23ESP8266WiFiGenericClass11_persistentE - 0x402023f8 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x1d (size before relaxing) - *fill* 0x4020240d 0x3 - .text._ZN19ESP8266WiFiSTAClass6configE9IPAddressS0_S0_S0_S0_ - 0x40202410 0xa7 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0xcb (size before relaxing) - 0x40202414 ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) - *fill* 0x402024b7 0x1 - .text._ZN19ESP8266WiFiSTAClass10disconnectEb - 0x402024b8 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x8b (size before relaxing) - 0x402024b8 ESP8266WiFiSTAClass::disconnect(bool) - *fill* 0x40202517 0x1 - .text._ZN19ESP8266WiFiSTAClass14setAutoConnectEb - 0x40202518 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x3b (size before relaxing) - 0x40202518 ESP8266WiFiSTAClass::setAutoConnect(bool) - *fill* 0x40202547 0x1 - .text._ZN19ESP8266WiFiSTAClass14getAutoConnectEv - 0x40202548 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x20 (size before relaxing) - 0x40202548 ESP8266WiFiSTAClass::getAutoConnect() - .text._ZN19ESP8266WiFiSTAClass7localIPEv - 0x40202560 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x31 (size before relaxing) - 0x40202560 ESP8266WiFiSTAClass::localIP() - *fill* 0x40202585 0x3 - .text._ZN19ESP8266WiFiSTAClass10macAddressEv - 0x40202588 0x58 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x70 (size before relaxing) - 0x4020258c ESP8266WiFiSTAClass::macAddress() - .text._ZN19ESP8266WiFiSTAClass10subnetMaskEv - 0x402025e0 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x31 (size before relaxing) - 0x402025e0 ESP8266WiFiSTAClass::subnetMask() - *fill* 0x40202605 0x3 - .text._ZN19ESP8266WiFiSTAClass9gatewayIPEv - 0x40202608 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x31 (size before relaxing) - 0x40202608 ESP8266WiFiSTAClass::gatewayIP() - *fill* 0x4020262d 0x3 - .text._ZN19ESP8266WiFiSTAClass5dnsIPEh - 0x40202630 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x2f (size before relaxing) - 0x40202630 ESP8266WiFiSTAClass::dnsIP(unsigned char) - *fill* 0x40202653 0x1 - .text._ZN19ESP8266WiFiSTAClass8hostnameEPc - 0x40202654 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x35 (size before relaxing) - 0x40202654 ESP8266WiFiSTAClass::hostname(char*) - *fill* 0x40202681 0x3 - .text._ZN19ESP8266WiFiSTAClass6statusEv - 0x40202684 0x22 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x2a (size before relaxing) - 0x40202688 ESP8266WiFiSTAClass::status() - *fill* 0x402026a6 0x2 - .text._ZN19ESP8266WiFiSTAClass5beginEPKcS1_iPKhb - 0x402026a8 0x1a8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x228 (size before relaxing) - 0x402026ac ESP8266WiFiSTAClass::begin(char const*, char const*, int, unsigned char const*, bool) - .text._ZN19ESP8266WiFiSTAClass5beginEPcS0_iPKhb - 0x40202850 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x19 (size before relaxing) - 0x40202850 ESP8266WiFiSTAClass::begin(char*, char*, int, unsigned char const*, bool) - *fill* 0x40202865 0x3 - .text._ZN19ESP8266WiFiSTAClass8BSSIDstrEv - 0x40202868 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x77 (size before relaxing) - 0x40202868 ESP8266WiFiSTAClass::BSSIDstr() - *fill* 0x402028c3 0x1 - .text._ZN19ESP8266WiFiSTAClass4RSSIEv - 0x402028c4 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - 0x1d (size before relaxing) - 0x402028c4 ESP8266WiFiSTAClass::RSSI() - *fill* 0x402028d9 0x3 - .text._ZN20ESP8266WiFiScanClass9_scanDoneEPvi - 0x402028dc 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0xbb (size before relaxing) - 0x402028f4 ESP8266WiFiScanClass::_scanDone(void*, int) - *fill* 0x4020298b 0x1 - .text._ZN20ESP8266WiFiScanClass10scanDeleteEv - 0x4020298c 0x2e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3e (size before relaxing) - 0x4020298c ESP8266WiFiScanClass::scanDelete() - *fill* 0x402029ba 0x2 - .text._ZN20ESP8266WiFiScanClass12scanNetworksEbb - 0x402029bc 0xaf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0xef (size before relaxing) - 0x402029c0 ESP8266WiFiScanClass::scanNetworks(bool, bool) - *fill* 0x40202a6b 0x1 - .text._ZN20ESP8266WiFiScanClass19_getScanInfoByIndexEi - 0x40202a6c 0x1e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x26 (size before relaxing) - 0x40202a6c ESP8266WiFiScanClass::_getScanInfoByIndex(int) - *fill* 0x40202a8a 0x2 - .text._ZN20ESP8266WiFiScanClass4SSIDEh - 0x40202a8c 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x3d (size before relaxing) - 0x40202a90 ESP8266WiFiScanClass::SSID(unsigned char) - *fill* 0x40202ac1 0x3 - .text._ZN20ESP8266WiFiScanClass14encryptionTypeEh - 0x40202ac4 0x2d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x31 (size before relaxing) - 0x40202ac8 ESP8266WiFiScanClass::encryptionType(unsigned char) - *fill* 0x40202af1 0x3 - .text._ZN20ESP8266WiFiScanClass4RSSIEh - 0x40202af4 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x24 (size before relaxing) - 0x40202af4 ESP8266WiFiScanClass::RSSI(unsigned char) - *fill* 0x40202b11 0x3 - .text._ZN20ESP8266WiFiScanClass8BSSIDstrEh - 0x40202b14 0x6a .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x82 (size before relaxing) - 0x40202b18 ESP8266WiFiScanClass::BSSIDstr(unsigned char) - *fill* 0x40202b7e 0x2 - .text._ZN20ESP8266WiFiScanClass7channelEh - 0x40202b80 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - 0x1f (size before relaxing) - 0x40202b80 ESP8266WiFiScanClass::channel(unsigned char) - *fill* 0x40202b98 0x0 - .text._ZN10WiFiClient7connectEPKct - 0x40202b98 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x58 (size before relaxing) - 0x40202b98 WiFiClient::connect(char const*, unsigned short) - .text._ZN10WiFiClient7connectE9IPAddresst - 0x40202bdc 0x8c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0xb4 (size before relaxing) - 0x40202be8 WiFiClient::connect(IPAddress, unsigned short) - .text._ZN10WiFiClient6_s_errEPva - 0x40202c68 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x17 (size before relaxing) - 0x40202c68 WiFiClient::_s_err(void*, signed char) - *fill* 0x40202c77 0x1 - .text._ZN10WiFiClient9availableEv - 0x40202c78 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x2f (size before relaxing) - 0x40202c78 WiFiClient::available() - *fill* 0x40202ca0 0x0 - .text._ZN10WiFiClient9peekBytesEPhj - 0x40202ca0 0xb6 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0xbe (size before relaxing) - 0x40202ca8 WiFiClient::peekBytes(unsigned char*, unsigned int) - *fill* 0x40202d56 0x2 - .text._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x40202d58 0x25 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x29 (size before relaxing) - 0x40202d58 ClientContext::_s_sent(void*, tcp_pcb*, unsigned short) - *fill* 0x40202d7d 0x3 - .text._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x40202d80 0x6d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x99 (size before relaxing) - 0x40202d80 ClientContext::_s_recv(void*, tcp_pcb*, pbuf*, signed char) - *fill* 0x40202ded 0x3 - .text._ZN13ClientContext8_s_errorEPva - 0x40202df0 0x3e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x62 (size before relaxing) - 0x40202df0 ClientContext::_s_error(void*, signed char) - *fill* 0x40202e2e 0x2 - .text._ZN13ClientContext5flushEv - 0x40202e30 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x39 (size before relaxing) - 0x40202e30 ClientContext::flush() - *fill* 0x40202e61 0x3 - .text._ZN13ClientContext5unrefEv - 0x40202e64 0x68 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x9f (size before relaxing) - 0x40202e64 ClientContext::unref() - *fill* 0x40202ecc 0x0 - .text._ZN10WiFiClient4stopEv - 0x40202ecc 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x25 (size before relaxing) - 0x40202ecc WiFiClient::stop() - *fill* 0x40202eed 0x3 - .text._ZN10WiFiClientD2Ev - 0x40202ef0 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4f (size before relaxing) - 0x40202ef8 WiFiClient::~WiFiClient() - 0x40202ef8 WiFiClient::~WiFiClient() - *fill* 0x40202f3b 0x1 - .text._ZN10WiFiClientD0Ev - 0x40202f3c 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x29 (size before relaxing) - 0x40202f3c WiFiClient::~WiFiClient() - *fill* 0x40202f59 0x3 - .text._ZN10WiFiClient5flushEv - 0x40202f5c 0x14 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x1b (size before relaxing) - 0x40202f5c WiFiClient::flush() - *fill* 0x40202f70 0x0 - .text._ZN13ClientContext5writeEPKcj - 0x40202f70 0x5f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x73 (size before relaxing) - 0x40202f74 ClientContext::write(char const*, unsigned int) - *fill* 0x40202fcf 0x1 - .text._ZN10WiFiClient5writeEPKhj - 0x40202fd0 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x29 (size before relaxing) - 0x40202fd0 WiFiClient::write(unsigned char const*, unsigned int) - *fill* 0x40202ff1 0x3 - .text._ZN13ClientContext8_consumeEj - 0x40202ff4 0x67 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x7f (size before relaxing) - 0x40202ff4 ClientContext::_consume(unsigned int) - *fill* 0x4020305b 0x1 - .text._ZN10WiFiClient4readEv - 0x4020305c 0x40 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x44 (size before relaxing) - 0x4020305c WiFiClient::read() - .text._ZN10WiFiClient4readEPhj - 0x4020309c 0x75 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x7d (size before relaxing) - 0x4020309c WiFiClient::read(unsigned char*, unsigned int) - *fill* 0x40203111 0x3 - .text._ZN10WiFiClientC2Ev - 0x40203114 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x23 (size before relaxing) - 0x40203114 WiFiClient::WiFiClient() - 0x40203114 WiFiClient::WiFiClient() - *fill* 0x4020312f 0x1 - .text._ZN10WiFiClientC2EP13ClientContext - 0x40203130 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x29 (size before relaxing) - 0x40203130 WiFiClient::WiFiClient(ClientContext*) - 0x40203130 WiFiClient::WiFiClient(ClientContext*) - *fill* 0x40203151 0x3 - .text._ZN10WiFiClientC2ERKS_ - 0x40203154 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x2f (size before relaxing) - 0x40203154 WiFiClient::WiFiClient(WiFiClient const&) - 0x40203154 WiFiClient::WiFiClient(WiFiClient const&) - *fill* 0x4020317b 0x1 - .text._ZN10WiFiClientaSERKS_ - 0x4020317c 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x35 (size before relaxing) - 0x4020317c WiFiClient::operator=(WiFiClient const&) - *fill* 0x402031ad 0x3 - .text._ZN10WiFiClient10_connectedEPva - 0x402031b0 0x7b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0xaf (size before relaxing) - 0x402031bc WiFiClient::_connected(void*, signed char) - *fill* 0x4020322b 0x1 - .text._ZN10WiFiClient12_s_connectedEPvS0_a - 0x4020322c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x1f (size before relaxing) - 0x4020322c WiFiClient::_s_connected(void*, void*, signed char) - *fill* 0x40203247 0x1 - .text._ZN10WiFiClient8remoteIPEv - 0x40203248 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x2d (size before relaxing) - 0x40203248 WiFiClient::remoteIP() - *fill* 0x40203271 0x3 - .text._ZN10WiFiClient7localIPEv - 0x40203274 0x29 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x2d (size before relaxing) - 0x40203274 WiFiClient::localIP() - *fill* 0x4020329d 0x3 - .text._ZN10WiFiClient7stopAllEv - 0x402032a0 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x2b (size before relaxing) - 0x402032a0 WiFiClient::stopAll() - *fill* 0x402032c7 0x1 - .text._ZN10WiFiClient13stopAllExceptEPS_ - 0x402032c8 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x34 (size before relaxing) - 0x402032c8 WiFiClient::stopAllExcept(WiFiClient*) - .text._ZN7WiFiUDP9availableEv - 0x402032f8 0x28 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x2f (size before relaxing) - 0x402032f8 WiFiUDP::available() - *fill* 0x40203320 0x0 - .text._ZN7WiFiUDP11beginPacketEPKct - 0x40203320 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x58 (size before relaxing) - 0x40203320 WiFiUDP::beginPacket(char const*, unsigned short) - .text._ZN7WiFiUDP5writeEPKhj - 0x40203364 0xd9 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0xed (size before relaxing) - 0x40203364 WiFiUDP::write(unsigned char const*, unsigned int) - *fill* 0x4020343d 0x3 - .text._ZN7WiFiUDP4readEPhj - 0x40203440 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4c (size before relaxing) - 0x40203440 WiFiUDP::read(unsigned char*, unsigned int) - .text._ZN7WiFiUDP9endPacketEv - 0x40203488 0xb3 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0xcf (size before relaxing) - 0x40203488 WiFiUDP::endPacket() - *fill* 0x4020353b 0x1 - .text._ZN7WiFiUDP8remoteIPEv - 0x4020353c 0x4b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4f (size before relaxing) - 0x4020353c WiFiUDP::remoteIP() - *fill* 0x40203587 0x1 - .text._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x40203588 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x39 (size before relaxing) - 0x40203588 UdpContext::_s_recv(void*, udp_pcb*, pbuf*, ip_addr*, unsigned short) - *fill* 0x402035bd 0x3 - .text._ZN7WiFiUDP11parsePacketEv - 0x402035c0 0x6b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x7b (size before relaxing) - 0x402035c0 WiFiUDP::parsePacket() - *fill* 0x4020362b 0x1 - .text._ZN10UdpContextC2Ev - 0x4020362c 0x3d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x41 (size before relaxing) - 0x4020362c UdpContext::UdpContext() - 0x4020362c UdpContext::UdpContext() - *fill* 0x40203669 0x3 - .text._ZN7WiFiUDP11beginPacketE9IPAddresst - 0x4020366c 0x44 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x50 (size before relaxing) - 0x4020366c WiFiUDP::beginPacket(IPAddress, unsigned short) - .text._ZN7WiFiUDP20beginPacketMulticastE9IPAddresstS0_i - 0x402036b0 0x5b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x67 (size before relaxing) - 0x402036b0 WiFiUDP::beginPacketMulticast(IPAddress, unsigned short, IPAddress, int) - *fill* 0x4020370b 0x1 - .text._ZN10UdpContext5unrefEv - 0x4020370c 0x5d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x71 (size before relaxing) - 0x4020370c UdpContext::unref() - *fill* 0x40203769 0x3 - .text._ZN7WiFiUDP4stopEv - 0x4020376c 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x32 (size before relaxing) - 0x4020376c WiFiUDP::stop() - *fill* 0x40203792 0x2 - .text._ZN7WiFiUDP5beginEt - 0x40203794 0x66 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x86 (size before relaxing) - 0x40203798 WiFiUDP::begin(unsigned short) - *fill* 0x402037fa 0x2 - .text._ZN7WiFiUDPC2Ev - 0x402037fc 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x40203804 WiFiUDP::WiFiUDP() - 0x40203804 WiFiUDP::WiFiUDP() - *fill* 0x4020381f 0x1 - .text._ZN7WiFiUDPD2Ev - 0x40203820 0x43 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4f (size before relaxing) - 0x40203820 WiFiUDP::~WiFiUDP() - 0x40203820 WiFiUDP::~WiFiUDP() - *fill* 0x40203863 0x1 - .text._ZN7WiFiUDP14beginMulticastE9IPAddressS0_t - 0x40203864 0x8b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0xb7 (size before relaxing) - 0x40203868 WiFiUDP::beginMulticast(IPAddress, IPAddress, unsigned short) - *fill* 0x402038ef 0x1 - .text._ZN7WiFiUDP7stopAllEv - 0x402038f0 0x26 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x2a (size before relaxing) - 0x402038f0 WiFiUDP::stopAll() - *fill* 0x40203916 0x2 - .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK25WiFiEventStationModeGotIPE_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x40203918 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4a (size before relaxing) - *fill* 0x40203957 0x1 - .text._ZNSt14_Function_base13_Base_managerIZN13MDNSResponder5beginEPKcEUlRK32WiFiEventStationModeDisconnectedE0_E10_M_managerERSt9_Any_dataRKS9_St18_Manager_operation - 0x40203958 0x3f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4a (size before relaxing) - *fill* 0x40203997 0x1 - .text._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x40203998 0x47 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x52 (size before relaxing) - 0x40203998 std::_Function_base::_Base_manager (MDNSResponder*)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - *fill* 0x402039df 0x1 - .text._ZN10UdpContext4readEPcj - 0x402039e0 0x45 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x49 (size before relaxing) - 0x402039e0 UdpContext::read(char*, unsigned int) - *fill* 0x40203a25 0x3 - .text._ZN10UdpContext6appendEPKcj - 0x40203a28 0xce .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0xe2 (size before relaxing) - 0x40203a28 UdpContext::append(char const*, unsigned int) - *fill* 0x40203af6 0x2 - .text._ZN10UdpContext4sendEP7ip_addrt - 0x40203af8 0xbd .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0xdd (size before relaxing) - 0x40203af8 UdpContext::send(ip_addr*, unsigned short) - *fill* 0x40203bb5 0x3 - .text._ZN13MDNSResponderC2Ev - 0x40203bb8 0x56 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x6a (size before relaxing) - 0x40203bbc MDNSResponder::MDNSResponder() - 0x40203bbc MDNSResponder::MDNSResponder() - *fill* 0x40203c0e 0x2 - .text._ZN13MDNSResponder8hostnameEi - 0x40203c10 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x3f (size before relaxing) - 0x40203c10 MDNSResponder::hostname(int) - *fill* 0x40203c3f 0x1 - .text._ZN13MDNSResponder2IPEi - 0x40203c40 0x33 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x43 (size before relaxing) - 0x40203c40 MDNSResponder::IP(int) - *fill* 0x40203c73 0x1 - .text._ZN13MDNSResponder4portEi - 0x40203c74 0x14 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x1c (size before relaxing) - 0x40203c74 MDNSResponder::port(int) - .text._ZN13MDNSResponder12queryServiceEPcS0_ - 0x40203c88 0x198 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x21c (size before relaxing) - 0x40203ca4 MDNSResponder::queryService(char*, char*) - .text._ZN13MDNSResponder14_getServiceTxtEPcS0_ - 0x40203e20 0x4c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x54 (size before relaxing) - 0x40203e20 MDNSResponder::_getServiceTxt(char*, char*) - .text._ZN13MDNSResponder17_getServiceTxtLenEPcS0_ - 0x40203e6c 0x51 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x59 (size before relaxing) - 0x40203e6c MDNSResponder::_getServiceTxtLen(char*, char*) - *fill* 0x40203ebd 0x3 - .text._ZN13MDNSResponder15_getServicePortEPcS0_ - 0x40203ec0 0x53 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x5b (size before relaxing) - 0x40203ec0 MDNSResponder::_getServicePort(char*, char*) - *fill* 0x40203f13 0x1 - .text._ZN13MDNSResponder10addServiceEPcS0_t - 0x40203f14 0x95 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0xb5 (size before relaxing) - 0x40203f14 MDNSResponder::addService(char*, char*, unsigned short) - *fill* 0x40203fa9 0x3 - .text._ZN13MDNSResponder9_getOurIpEv - 0x40203fac 0x2b .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x37 (size before relaxing) - 0x40203fac MDNSResponder::_getOurIp() - *fill* 0x40203fd7 0x1 - .text._ZN13MDNSResponder7_listenEv - 0x40203fd8 0x136 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x186 (size before relaxing) - 0x40203fec MDNSResponder::_listen() - *fill* 0x4020410e 0x2 - .text._ZN13MDNSResponder8_restartEv - 0x40204110 0x66 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x86 (size before relaxing) - 0x40204110 MDNSResponder::_restart() - *fill* 0x40204176 0x2 - .text._ZNSt17_Function_handlerIFvRK25WiFiEventStationModeGotIPEZN13MDNSResponder5beginEPKcEUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ - 0x40204178 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x1b (size before relaxing) - *fill* 0x4020418b 0x1 - .text._ZNSt17_Function_handlerIFvRK32WiFiEventStationModeDisconnectedEZN13MDNSResponder5beginEPKcEUlS2_E0_E9_M_invokeERKSt9_Any_dataS2_ - 0x4020418c 0x13 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x1b (size before relaxing) - *fill* 0x4020419f 0x1 - .text._ZN13MDNSResponder6_replyEhPcS0_t - 0x402041a0 0x482 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x692 (size before relaxing) - 0x402041a4 MDNSResponder::_reply(unsigned char, char*, char*, unsigned short) - *fill* 0x40204622 0x2 - .text._ZN13MDNSResponder17advertiseServicesEv - 0x40204624 0x3e .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x42 (size before relaxing) - 0x40204624 MDNSResponder::advertiseServices() - *fill* 0x40204662 0x2 - .text._ZN13MDNSResponder12_parsePacketEv - 0x40204664 0x5f9 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x7a5 (size before relaxing) - 0x40204680 MDNSResponder::_parsePacket() - *fill* 0x40204c5d 0x3 - .text._ZN13MDNSResponder6updateEv - 0x40204c60 0x52 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x62 (size before relaxing) - 0x40204c60 MDNSResponder::update() - *fill* 0x40204cb2 0x2 - .text._ZN13MDNSResponderD2Ev - 0x40204cb4 0x85 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0xb9 (size before relaxing) - 0x40204cb4 MDNSResponder::~MDNSResponder() - 0x40204cb4 MDNSResponder::~MDNSResponder() - *fill* 0x40204d39 0x3 - .text._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x40204d3c 0x2f .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x37 (size before relaxing) - 0x40204d3c std::__shared_ptr::operator=(std::__shared_ptr&&) - *fill* 0x40204d6b 0x1 - .text._ZN13MDNSResponder5beginEPKc - 0x40204d6c 0xd7 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x14f (size before relaxing) - 0x40204d7c MDNSResponder::begin(char const*) - *fill* 0x40204e43 0x1 - .text.startup._GLOBAL__sub_I__ZN13MDNSResponderC2Ev - 0x40204e44 0x28 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x38 (size before relaxing) - .text.exit._GLOBAL__sub_D__ZN13MDNSResponderC2Ev - 0x40204e6c 0x15 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x1d (size before relaxing) - *fill* 0x40204e81 0x3 - .text._ZN9DNSServerC2Ev - 0x40204e84 0x32 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x3e (size before relaxing) - 0x40204e8c DNSServer::DNSServer() - 0x40204e8c DNSServer::DNSServer() - *fill* 0x40204eb6 0x2 - .text._ZN9DNSServer26downcaseAndRemoveWwwPrefixER6String - 0x40204eb8 0x41 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x6d (size before relaxing) - 0x40204ebc DNSServer::downcaseAndRemoveWwwPrefix(String&) - *fill* 0x40204ef9 0x3 - .text._ZN9DNSServer29getDomainNameWithoutWwwPrefixEv - 0x40204efc 0x91 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xad (size before relaxing) - 0x40204f00 DNSServer::getDomainNameWithoutWwwPrefix() - *fill* 0x40204f8d 0x3 - .text._ZN9DNSServer5startERKtRK6StringRK9IPAddress - 0x40204f90 0x64 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x7c (size before relaxing) - 0x40204f90 DNSServer::start(unsigned short const&, String const&, IPAddress const&) - .text._ZN9DNSServer11replyWithIPEv - 0x40204ff4 0x9d .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x109 (size before relaxing) - 0x40204ff4 DNSServer::replyWithIP() - *fill* 0x40205091 0x3 - .text._ZN9DNSServer19replyWithCustomCodeEv - 0x40205094 0x69 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x89 (size before relaxing) - 0x40205098 DNSServer::replyWithCustomCode() - *fill* 0x402050fd 0x3 - .text._ZN9DNSServer18processNextRequestEv - 0x40205100 0xa5 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0xfd (size before relaxing) - 0x40205104 DNSServer::processNextRequest() - *fill* 0x402051a5 0x3 - .text._ZN8RCSwitch11setProtocolEi - 0x402051a8 0x2c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x30 (size before relaxing) - 0x402051ac RCSwitch::setProtocol(int) - .text._ZN8RCSwitchC2Ev - 0x402051d4 0x43 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x47 (size before relaxing) - 0x402051dc RCSwitch::RCSwitch() - 0x402051dc RCSwitch::RCSwitch() - *fill* 0x40205217 0x1 - .text._ZN8RCSwitch14enableTransmitEi - 0x40205218 0x19 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x1d (size before relaxing) - 0x40205218 RCSwitch::enableTransmit(int) - *fill* 0x40205231 0x3 - .text._ZN8RCSwitch8transmitENS_7HighLowE - 0x40205234 0x5e .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x6e (size before relaxing) - 0x40205234 RCSwitch::transmit(RCSwitch::HighLow) - *fill* 0x40205292 0x2 - .text._ZN8RCSwitch13enableReceiveEv - 0x40205294 0x3d .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x41 (size before relaxing) - 0x402052a0 RCSwitch::enableReceive() - *fill* 0x402052d1 0x3 - .text._ZN8RCSwitch13enableReceiveEi - 0x402052d4 0x14 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x18 (size before relaxing) - 0x402052d4 RCSwitch::enableReceive(int) - .text._ZN8RCSwitch14disableReceiveEv - 0x402052e8 0x23 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x402052ec RCSwitch::disableReceive() - *fill* 0x4020530b 0x1 - .text._ZN8RCSwitch4sendEmj - 0x4020530c 0x8c .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0xa8 (size before relaxing) - 0x4020530c RCSwitch::send(unsigned long, unsigned int) - .text._ZN8RCSwitch9availableEv - 0x40205398 0x11 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x15 (size before relaxing) - 0x40205398 RCSwitch::available() - *fill* 0x402053a9 0x3 - .text._ZN8RCSwitch14resetAvailableEv - 0x402053ac 0xc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x10 (size before relaxing) - 0x402053ac RCSwitch::resetAvailable() - .text._ZN8RCSwitch16getReceivedValueEv - 0x402053b8 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0xe (size before relaxing) - 0x402053b8 RCSwitch::getReceivedValue() - *fill* 0x402053c2 0x2 - .text._ZN8RCSwitch20getReceivedBitlengthEv - 0x402053c4 0xa .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0xe (size before relaxing) - 0x402053c4 RCSwitch::getReceivedBitlength() - *fill* 0x402053ce 0x2 - .text._ZN8RCSwitch16getReceivedDelayEv - 0x402053d0 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x402053d4 RCSwitch::getReceivedDelay() - *fill* 0x402053de 0x2 - .text._ZN8RCSwitch19getReceivedProtocolEv - 0x402053e0 0xe .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x402053e4 RCSwitch::getReceivedProtocol() - *fill* 0x402053ee 0x2 - .text._ZN17ESP8266HTTPUpdate18getLastErrorStringEv - 0x402053f0 0x174 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x1fc (size before relaxing) - 0x4020542c ESP8266HTTPUpdate::getLastErrorString() - .text._ZN17ESP8266HTTPUpdate9runUpdateER6Streamj6Stringi - 0x40205564 0xdd .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x12d (size before relaxing) - 0x40205564 ESP8266HTTPUpdate::runUpdate(Stream&, unsigned int, String, int) - *fill* 0x40205641 0x3 - .text._ZN17ESP8266HTTPUpdate12handleUpdateER10HTTPClientRK6Stringb - 0x40205644 0x39c .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x584 (size before relaxing) - 0x4020568c ESP8266HTTPUpdate::handleUpdate(HTTPClient&, String const&, bool) - .text._ZN17ESP8266HTTPUpdate6updateERK6StringS2_ - 0x402059e0 0x53 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x7f (size before relaxing) - 0x402059e0 ESP8266HTTPUpdate::update(String const&, String const&) - *fill* 0x40205a33 0x1 - .text.startup._GLOBAL__sub_I__ZN17ESP8266HTTPUpdateC2Ev - 0x40205a34 0xe .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - *fill* 0x40205a42 0x2 - .text._ZN13TasmotaSerial5flushEv - 0x40205a44 0x1f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x2b (size before relaxing) - 0x40205a44 TasmotaSerial::flush() - *fill* 0x40205a63 0x1 - .text._ZN13TasmotaSerialD2Ev - 0x40205a64 0x47 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x53 (size before relaxing) - 0x40205a6c TasmotaSerial::~TasmotaSerial() - 0x40205a6c TasmotaSerial::~TasmotaSerial() - *fill* 0x40205aab 0x1 - .text._ZN13TasmotaSerialD0Ev - 0x40205aac 0x1d .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x29 (size before relaxing) - 0x40205aac TasmotaSerial::~TasmotaSerial() - *fill* 0x40205ac9 0x3 - .text._ZN13TasmotaSerial4peekEv - 0x40205acc 0x37 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x3f (size before relaxing) - 0x40205acc TasmotaSerial::peek() - *fill* 0x40205b03 0x1 - .text._ZN13TasmotaSerial4readEv - 0x40205b04 0x3f .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x47 (size before relaxing) - 0x40205b04 TasmotaSerial::read() - *fill* 0x40205b43 0x1 - .text._ZN13TasmotaSerial9availableEv - 0x40205b44 0x28 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x34 (size before relaxing) - 0x40205b44 TasmotaSerial::available() - .text._ZN13TasmotaSerial5writeEh - 0x40205b6c 0xdf .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0xfb (size before relaxing) - 0x40205b74 TasmotaSerial::write(unsigned char) - *fill* 0x40205c4b 0x1 - .text._ZN13TasmotaSerialC2Eiib - 0x40205c4c 0x113 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x14b (size before relaxing) - 0x40205c5c TasmotaSerial::TasmotaSerial(int, int, bool) - 0x40205c5c TasmotaSerial::TasmotaSerial(int, int, bool) - *fill* 0x40205d5f 0x1 - .text._ZN13TasmotaSerial5beginEli - 0x40205d60 0x7b .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0xa3 (size before relaxing) - 0x40205d60 TasmotaSerial::begin(long, int) - *fill* 0x40205ddb 0x1 - .text._ZN13TasmotaSerial6rxReadEv - 0x40205ddc 0xd6 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0xde (size before relaxing) - 0x40205de4 TasmotaSerial::rxRead() - *fill* 0x40205eb2 0x2 - .text._Z9tms_isr_0v - 0x40205eb4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205eb4 tms_isr_0() - *fill* 0x40205ecb 0x1 - .text._Z9tms_isr_1v - 0x40205ecc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205ecc tms_isr_1() - *fill* 0x40205ee3 0x1 - .text._Z9tms_isr_2v - 0x40205ee4 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205ee4 tms_isr_2() - *fill* 0x40205efb 0x1 - .text._Z9tms_isr_3v - 0x40205efc 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205efc tms_isr_3() - *fill* 0x40205f13 0x1 - .text._Z9tms_isr_4v - 0x40205f14 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f14 tms_isr_4() - *fill* 0x40205f2b 0x1 - .text._Z9tms_isr_5v - 0x40205f2c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f2c tms_isr_5() - *fill* 0x40205f43 0x1 - .text._Z10tms_isr_12v - 0x40205f44 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f44 tms_isr_12() - *fill* 0x40205f5b 0x1 - .text._Z10tms_isr_13v - 0x40205f5c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f5c tms_isr_13() - *fill* 0x40205f73 0x1 - .text._Z10tms_isr_14v - 0x40205f74 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f74 tms_isr_14() - *fill* 0x40205f8b 0x1 - .text._Z10tms_isr_15v - 0x40205f8c 0x17 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x1f (size before relaxing) - 0x40205f8c tms_isr_15() - *fill* 0x40205fa3 0x1 - .text._ZN13TasmotaModbusD2Ev - 0x40205fa4 0x1b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x1f (size before relaxing) - 0x40205fa8 TasmotaModbus::~TasmotaModbus() - 0x40205fa8 TasmotaModbus::~TasmotaModbus() - *fill* 0x40205fbf 0x1 - .text._ZN13TasmotaModbusD0Ev - 0x40205fc0 0x1d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x29 (size before relaxing) - 0x40205fc0 TasmotaModbus::~TasmotaModbus() - *fill* 0x40205fdd 0x3 - .text._ZN13TasmotaModbusC2Eii - 0x40205fe0 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x2c (size before relaxing) - 0x40205fe0 TasmotaModbus::TasmotaModbus(int, int) - 0x40205fe0 TasmotaModbus::TasmotaModbus(int, int) - .text._Z12CalculateCRCPhh - 0x40206004 0x47 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x4020600c CalculateCRC(unsigned char*, unsigned char) - *fill* 0x4020604b 0x1 - .text._ZN13TasmotaModbus5BeginEli - 0x4020604c 0x2b .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x37 (size before relaxing) - 0x4020604c TasmotaModbus::Begin(long, int) - *fill* 0x40206077 0x1 - .text._ZN13TasmotaModbus4SendEhhtt - 0x40206078 0x5d .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x65 (size before relaxing) - 0x40206078 TasmotaModbus::Send(unsigned char, unsigned char, unsigned short, unsigned short) - *fill* 0x402060d5 0x3 - .text._ZN13TasmotaModbus13ReceiveBufferEPhh - 0x402060d8 0xea .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0xfa (size before relaxing) - 0x402060d8 TasmotaModbus::ReceiveBuffer(unsigned char*, unsigned char) - *fill* 0x402061c2 0x2 - .text._ZN14Adafruit_SGP3019readWordFromCommandEPhhtPth - 0x402061c4 0x10a .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x126 (size before relaxing) - 0x402061c4 Adafruit_SGP30::readWordFromCommand(unsigned char*, unsigned char, unsigned short, unsigned short*, unsigned char) - *fill* 0x402062ce 0x2 - .text._ZN14Adafruit_SGP307IAQinitEv - 0x402062d0 0x23 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x2b (size before relaxing) - 0x402062d0 Adafruit_SGP30::IAQinit() - *fill* 0x402062f3 0x1 - .text._ZN14Adafruit_SGP305beginEP7TwoWire - 0x402062f4 0x80 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x9c (size before relaxing) - 0x402062f4 Adafruit_SGP30::begin(TwoWire*) - .text._ZN14Adafruit_SGP3010IAQmeasureEv - 0x40206374 0x43 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x47 (size before relaxing) - 0x40206374 Adafruit_SGP30::IAQmeasure() - *fill* 0x402063b7 0x1 - .text._ZN14Adafruit_SGP3014getIAQBaselineEPtS0_ - 0x402063b8 0x45 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x4d (size before relaxing) - 0x402063b8 Adafruit_SGP30::getIAQBaseline(unsigned short*, unsigned short*) - *fill* 0x402063fd 0x3 - .text._ZN15Adafruit_CCS8119_i2c_initEv - 0x40206400 0x22 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x32 (size before relaxing) - 0x40206400 Adafruit_CCS811::_i2c_init() - *fill* 0x40206422 0x2 - .text._ZN15Adafruit_CCS8114readEhPhh - 0x40206424 0xa1 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0xbd (size before relaxing) - 0x40206424 Adafruit_CCS811::read(unsigned char, unsigned char*, unsigned char) - *fill* 0x402064c5 0x3 - .text._ZN15Adafruit_CCS8115read8Eh - 0x402064c8 0x1c .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x20 (size before relaxing) - 0x402064c8 Adafruit_CCS811::read8(unsigned char) - .text._ZN15Adafruit_CCS8119availableEv - 0x402064e4 0x5a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x5e (size before relaxing) - 0x402064e4 Adafruit_CCS811::available() - *fill* 0x4020653e 0x2 - .text._ZN15Adafruit_CCS81110checkErrorEv - 0x40206540 0x5a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x5e (size before relaxing) - 0x40206540 Adafruit_CCS811::checkError() - *fill* 0x4020659a 0x2 - .text._ZN15Adafruit_CCS8118readDataEv - 0x4020659c 0x57 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x63 (size before relaxing) - 0x4020659c Adafruit_CCS811::readData() - *fill* 0x402065f3 0x1 - .text._ZN15Adafruit_CCS8115writeEhPhh - 0x402065f4 0x45 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x65 (size before relaxing) - 0x402065f4 Adafruit_CCS811::write(unsigned char, unsigned char*, unsigned char) - *fill* 0x40206639 0x3 - .text._ZN15Adafruit_CCS81120setEnvironmentalDataEhd - 0x4020663c 0x9b .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0xab (size before relaxing) - 0x40206654 Adafruit_CCS811::setEnvironmentalData(unsigned char, double) - *fill* 0x402066d7 0x1 - .text._ZN15Adafruit_CCS8117SWResetEv - 0x402066d8 0x38 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x3c (size before relaxing) - 0x402066dc Adafruit_CCS811::SWReset() - .text._ZN15Adafruit_CCS8116write8Ehh - 0x40206710 0x1c .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x20 (size before relaxing) - 0x40206710 Adafruit_CCS811::write8(unsigned char, unsigned char) - .text._ZN15Adafruit_CCS81112setDriveModeEh - 0x4020672c 0x36 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x42 (size before relaxing) - 0x4020672c Adafruit_CCS811::setDriveMode(unsigned char) - *fill* 0x40206762 0x2 - .text._ZN15Adafruit_CCS81116disableInterruptEv - 0x40206764 0x2d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x39 (size before relaxing) - 0x40206764 Adafruit_CCS811::disableInterrupt() - *fill* 0x40206791 0x3 - .text._ZN15Adafruit_CCS8115beginEh - 0x40206794 0x7a .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0xba (size before relaxing) - 0x40206794 Adafruit_CCS811::begin(unsigned char) - *fill* 0x4020680e 0x2 - .text._ZN12PubSubClientC2ER6Client - 0x40206810 0x51 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x5d (size before relaxing) - 0x40206818 PubSubClient::PubSubClient(Client&) - 0x40206818 PubSubClient::PubSubClient(Client&) - *fill* 0x40206861 0x3 - .text._ZN12PubSubClient8readByteEPh - 0x40206864 0x65 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x75 (size before relaxing) - 0x40206868 PubSubClient::readByte(unsigned char*) - *fill* 0x402068c9 0x3 - .text._ZN12PubSubClient8readByteEPhPt - 0x402068cc 0x2f .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x33 (size before relaxing) - 0x402068cc PubSubClient::readByte(unsigned char*, unsigned short*) - *fill* 0x402068fb 0x1 - .text._ZN12PubSubClient10readPacketEPh - 0x402068fc 0x183 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x19f (size before relaxing) - 0x402068fc PubSubClient::readPacket(unsigned char*) - *fill* 0x40206a7f 0x1 - .text._ZN12PubSubClient5writeEhPht - 0x40206a80 0x8d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x91 (size before relaxing) - 0x40206a80 PubSubClient::write(unsigned char, unsigned char*, unsigned short) - *fill* 0x40206b0d 0x3 - .text._ZN12PubSubClient10disconnectEv - 0x40206b10 0x54 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x58 (size before relaxing) - 0x40206b10 PubSubClient::disconnect() - .text._ZN12PubSubClient7connectEPKcS1_S1_S1_hhS1_ - 0x40206b64 0x1a5 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x1f1 (size before relaxing) - 0x40206b68 PubSubClient::connect(char const*, char const*, char const*, char const*, unsigned char, unsigned char, char const*) - *fill* 0x40206d09 0x3 - .text._ZN12PubSubClient7publishEPKcPKhjh - 0x40206d0c 0x93 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0xa7 (size before relaxing) - 0x40206d0c PubSubClient::publish(char const*, unsigned char const*, unsigned int, unsigned char) - *fill* 0x40206d9f 0x1 - .text._ZN12PubSubClient7publishEPKcS1_h - 0x40206da0 0x35 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x3d (size before relaxing) - 0x40206da0 PubSubClient::publish(char const*, char const*, unsigned char) - *fill* 0x40206dd5 0x3 - .text._ZN12PubSubClient9subscribeEPKch - 0x40206dd8 0x8c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0xa0 (size before relaxing) - 0x40206dd8 PubSubClient::subscribe(char const*, unsigned char) - .text._ZN12PubSubClient9subscribeEPKc - 0x40206e64 0x14 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x18 (size before relaxing) - 0x40206e64 PubSubClient::subscribe(char const*) - .text._ZN12PubSubClient4loopEv - 0x40206e78 0x1c9 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x1ed (size before relaxing) - 0x40206e78 PubSubClient::loop() - *fill* 0x40207041 0x3 - .text._ZN12PubSubClient9setServerEPKct - 0x40207044 0x2c .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x30 (size before relaxing) - 0x40207044 PubSubClient::setServer(char const*, unsigned short) - .text._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x40207070 0x40 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4c (size before relaxing) - 0x40207070 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - 0x40207070 std::enable_if, std::is_convertible&>)()))((declval)(), (declval)(), (declval)())), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - .text._ZN12PubSubClient11setCallbackESt8functionIFvPcPhjEE - 0x402070b0 0x1d .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x21 (size before relaxing) - 0x402070b0 PubSubClient::setCallback(std::function) - *fill* 0x402070cd 0x3 - .text._ZN14RequestHandlerD2Ev - 0x402070d0 0xb .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x402070d4 RequestHandler::~RequestHandler() - 0x402070d4 RequestHandler::~RequestHandler() - *fill* 0x402070db 0x1 - .text._ZN14RequestHandlerD0Ev - 0x402070dc 0x17 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x1f (size before relaxing) - 0x402070dc RequestHandler::~RequestHandler() - *fill* 0x402070f3 0x1 - .text._ZN22FunctionRequestHandler9canUploadE6String - 0x402070f4 0x44 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x54 (size before relaxing) - 0x402070f4 FunctionRequestHandler::canUpload(String) - .text._ZN10HTTPUploadC2Ev - 0x40207138 0x37 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - *fill* 0x4020716f 0x1 - .text._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x40207170 0x2d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x31 (size before relaxing) - 0x40207170 FunctionRequestHandler::canHandle(HTTPMethod, String) - *fill* 0x4020719d 0x3 - .text._ZN22FunctionRequestHandlerD2Ev - 0x402071a0 0x33 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - 0x402071a4 FunctionRequestHandler::~FunctionRequestHandler() - 0x402071a4 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x402071d3 0x1 - .text._ZN22FunctionRequestHandlerD0Ev - 0x402071d4 0x1d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x29 (size before relaxing) - 0x402071d4 FunctionRequestHandler::~FunctionRequestHandler() - *fill* 0x402071f1 0x3 - .text._ZN16ESP8266WebServerC2Ei - 0x402071f4 0x7b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xab (size before relaxing) - 0x402071fc ESP8266WebServer::ESP8266WebServer(int) - 0x402071fc ESP8266WebServer::ESP8266WebServer(int) - *fill* 0x4020726f 0x1 - .text._ZN16ESP8266WebServer5closeEv - 0x40207270 0xf .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x17 (size before relaxing) - 0x40207270 ESP8266WebServer::close() - *fill* 0x4020727f 0x1 - .text._ZN16ESP8266WebServer10sendHeaderERK6StringS2_b - 0x40207280 0x79 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xc5 (size before relaxing) - 0x40207288 ESP8266WebServer::sendHeader(String const&, String const&, bool) - *fill* 0x402072f9 0x3 - .text._ZN16ESP8266WebServer11sendContentERK6String - 0x402072fc 0x4d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x51 (size before relaxing) - 0x402072fc ESP8266WebServer::sendContent(String const&) - *fill* 0x40207349 0x3 - .text._ZN16ESP8266WebServer3argE6String - 0x4020734c 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x79 (size before relaxing) - 0x4020734c ESP8266WebServer::arg(String) - *fill* 0x402073b1 0x3 - .text._ZN16ESP8266WebServer3argEi - 0x402073b4 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4b (size before relaxing) - 0x402073b4 ESP8266WebServer::arg(int) - *fill* 0x402073ef 0x1 - .text._ZN16ESP8266WebServer7argNameEi - 0x402073f0 0x3b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x47 (size before relaxing) - 0x402073f0 ESP8266WebServer::argName(int) - *fill* 0x4020742b 0x1 - .text._ZN16ESP8266WebServer6hasArgE6String - 0x4020742c 0x43 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x47 (size before relaxing) - 0x4020742c ESP8266WebServer::hasArg(String) - *fill* 0x4020746f 0x1 - .text._ZN16ESP8266WebServer6headerE6String - 0x40207470 0x65 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x79 (size before relaxing) - 0x40207470 ESP8266WebServer::header(String) - *fill* 0x402074d5 0x3 - .text._ZN16ESP8266WebServer14collectHeadersEPPKcj - 0x402074d8 0xd3 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x103 (size before relaxing) - 0x402074e0 ESP8266WebServer::collectHeaders(char const**, unsigned int) - *fill* 0x402075ab 0x1 - .text._ZN16ESP8266WebServer5beginEv - 0x402075ac 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3b (size before relaxing) - 0x402075ac ESP8266WebServer::begin() - *fill* 0x402075d7 0x1 - .text._ZN16ESP8266WebServer9hasHeaderE6String - 0x402075d8 0x62 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x66 (size before relaxing) - 0x402075d8 ESP8266WebServer::hasHeader(String) - *fill* 0x4020763a 0x2 - .text._ZN16ESP8266WebServer12authenticateEPKcS1_ - 0x4020763c 0x1a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x2b1 (size before relaxing) - 0x40207644 ESP8266WebServer::authenticate(char const*, char const*) - *fill* 0x402077e1 0x3 - .text._ZN16ESP8266WebServer10hostHeaderEv - 0x402077e4 0x1f .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x27 (size before relaxing) - 0x402077e4 ESP8266WebServer::hostHeader() - *fill* 0x40207803 0x1 - .text._ZN16ESP8266WebServer21_responseCodeToStringEi - 0x40207804 0x3a5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x3b1 (size before relaxing) - 0x402078a4 ESP8266WebServer::_responseCodeToString(int) - *fill* 0x40207ba9 0x3 - .text._ZN16ESP8266WebServer14_prepareHeaderER6StringiPKcj - 0x40207bac 0x17d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x27d (size before relaxing) - 0x40207bd0 ESP8266WebServer::_prepareHeader(String&, int, char const*, unsigned int) - *fill* 0x40207d29 0x3 - .text._ZN16ESP8266WebServer4sendEiPKcRK6String - 0x40207d2c 0x53 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x77 (size before relaxing) - 0x40207d2c ESP8266WebServer::send(int, char const*, String const&) - *fill* 0x40207d7f 0x1 - .text._ZN16ESP8266WebServer21requestAuthenticationEv - 0x40207d80 0x59 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x95 (size before relaxing) - 0x40207d88 ESP8266WebServer::requestAuthentication() - *fill* 0x40207dd9 0x3 - .text._ZN16ESP8266WebServer4sendEiRK6StringS2_ - 0x40207ddc 0x14 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x18 (size before relaxing) - 0x40207ddc ESP8266WebServer::send(int, String const&, String const&) - .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEES5_ - 0x40207df0 0x70 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0xb4 (size before relaxing) - 0x40207df0 ESP8266WebServer::on(char const*, HTTPMethod, std::function, std::function) - .text._ZN16ESP8266WebServer2onEPKc10HTTPMethodSt8functionIFvvEE - 0x40207e60 0x46 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x66 (size before relaxing) - 0x40207e60 ESP8266WebServer::on(char const*, HTTPMethod, std::function) - *fill* 0x40207ea6 0x2 - .text._ZN16ESP8266WebServer2onEPKcSt8functionIFvvEE - 0x40207ea8 0x31 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x45 (size before relaxing) - 0x40207ea8 ESP8266WebServer::on(char const*, std::function) - *fill* 0x40207ed9 0x3 - .text._ZNKSt8functionIFvvEEclEv - 0x40207edc 0x19 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x20 (size before relaxing) - 0x40207edc std::function::operator()() const - *fill* 0x40207ef5 0x3 - .text._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x40207ef8 0x41 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x55 (size before relaxing) - 0x40207ef8 FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) - *fill* 0x40207f39 0x3 - .text._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x40207f3c 0x38 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4c (size before relaxing) - 0x40207f3c FunctionRequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) - .text._ZN16ESP8266WebServer14_handleRequestEv - 0x40207f74 0xb9 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x10d (size before relaxing) - 0x40207f7c ESP8266WebServer::_handleRequest() - *fill* 0x4020802d 0x3 - .text._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x40208030 0x40 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4c (size before relaxing) - 0x40208030 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - 0x40208030 std::enable_if, std::is_convertible&>)()))()), void> >::value, std::function&>::type std::function::operator=&>(std::function&) - .text._ZN16ESP8266WebServer10onNotFoundESt8functionIFvvEE - 0x40208070 0x15 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x19 (size before relaxing) - 0x40208070 ESP8266WebServer::onNotFound(std::function) - *fill* 0x40208085 0x3 - .text._ZN16ESP8266WebServer12handleClientEv - 0x40208088 0x131 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x1c1 (size before relaxing) - 0x40208088 ESP8266WebServer::handleClient() - *fill* 0x402081b9 0x3 - .text._ZNK6String9substringEj - 0x402081bc 0x1b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x23 (size before relaxing) - 0x402081bc String::substring(unsigned int) const - *fill* 0x402081d7 0x1 - .text._ZN16ESP8266WebServer14_collectHeaderEPKcS1_ - 0x402081d8 0x5a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x66 (size before relaxing) - 0x402081d8 ESP8266WebServer::_collectHeader(char const*, char const*) - *fill* 0x40208232 0x2 - .text._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x40208234 0x2b .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x37 (size before relaxing) - 0x40208238 ESP8266WebServer::RequestArgument::RequestArgument() - 0x40208238 ESP8266WebServer::RequestArgument::RequestArgument() - *fill* 0x4020825f 0x1 - .text._ZN16ESP8266WebServer16_uploadWriteByteEh - 0x40208260 0x99 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xb5 (size before relaxing) - 0x40208264 ESP8266WebServer::_uploadWriteByte(unsigned char) - *fill* 0x402082f9 0x3 - .text._ZN16ESP8266WebServer15_uploadReadByteER10WiFiClient - 0x402082fc 0x56 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x5a (size before relaxing) - 0x402082fc ESP8266WebServer::_uploadReadByte(WiFiClient&) - *fill* 0x40208352 0x2 - .text._ZN16ESP8266WebServer9urlDecodeERK6String - 0x40208354 0xa2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xce (size before relaxing) - 0x40208358 ESP8266WebServer::urlDecode(String const&) - *fill* 0x402083f6 0x2 - .text._ZN16ESP8266WebServer15_parseArgumentsE6String - 0x402083f8 0x18a .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x1f2 (size before relaxing) - 0x402083f8 ESP8266WebServer::_parseArguments(String) - *fill* 0x40208582 0x2 - .text._ZN16ESP8266WebServer23_parseFormUploadAbortedEv - 0x40208584 0x6d .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x89 (size before relaxing) - 0x40208584 ESP8266WebServer::_parseFormUploadAborted() - *fill* 0x402085f1 0x3 - .text._ZN16ESP8266WebServer10_parseFormER10WiFiClient6Stringj - 0x402085f4 0x868 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0xc8c (size before relaxing) - 0x40208614 ESP8266WebServer::_parseForm(WiFiClient&, String, unsigned int) - .text._ZN16ESP8266WebServer13_parseRequestER10WiFiClient - 0x40208e5c 0x5ce .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x8d5 (size before relaxing) - 0x40208e80 ESP8266WebServer::_parseRequest(WiFiClient&) - *fill* 0x4020942a 0x2 - .text._ZN8EspClass17rtcUserMemoryReadEjPjj - 0x4020942c 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x40209430 EspClass::rtcUserMemoryRead(unsigned int, unsigned int*, unsigned int) - *fill* 0x40209457 0x1 - .text._ZN8EspClass18rtcUserMemoryWriteEjPjj - 0x40209458 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020945c EspClass::rtcUserMemoryWrite(unsigned int, unsigned int*, unsigned int) - *fill* 0x40209483 0x1 - .text._ZN8EspClass5resetEv - 0x40209484 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x40209484 EspClass::reset() - *fill* 0x40209493 0x1 - .text._ZN8EspClass7restartEv - 0x40209494 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x21 (size before relaxing) - 0x40209494 EspClass::restart() - *fill* 0x402094a9 0x3 - .text._ZN8EspClass6getVccEv - 0x402094ac 0x1f .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x23 (size before relaxing) - 0x402094ac EspClass::getVcc() - *fill* 0x402094cb 0x1 - .text._ZN8EspClass11getFreeHeapEv - 0x402094cc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x402094cc EspClass::getFreeHeap() - *fill* 0x402094db 0x1 - .text._ZN8EspClass9getChipIdEv - 0x402094dc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x402094dc EspClass::getChipId() - *fill* 0x402094eb 0x1 - .text._ZN8EspClass13getSdkVersionEv - 0x402094ec 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x402094ec EspClass::getSdkVersion() - *fill* 0x402094fb 0x1 - .text._ZN8EspClass14getBootVersionEv - 0x402094fc 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x402094fc EspClass::getBootVersion() - *fill* 0x4020950b 0x1 - .text._ZN8EspClass13getCpuFreqMHzEv - 0x4020950c 0xf .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x17 (size before relaxing) - 0x4020950c EspClass::getCpuFreqMHz() - *fill* 0x4020951b 0x1 - .text._ZN8EspClass14getFlashChipIdEv - 0x4020951c 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x40209520 EspClass::getFlashChipId() - *fill* 0x40209533 0x1 - .text._ZN8EspClass20getFlashChipRealSizeEv - 0x40209534 0x1e .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x22 (size before relaxing) - 0x40209534 EspClass::getFlashChipRealSize() - *fill* 0x40209552 0x2 - .text._ZN8EspClass16getFlashChipSizeEv - 0x40209554 0x39 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x4020955c EspClass::getFlashChipSize() - *fill* 0x4020958d 0x3 - .text._ZN8EspClass16getFlashChipModeEv - 0x40209590 0x27 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x2b (size before relaxing) - 0x40209590 EspClass::getFlashChipMode() - *fill* 0x402095b7 0x1 - .text._ZN8EspClass18magicFlashChipSizeEh - 0x402095b8 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x16 (size before relaxing) - 0x402095b8 EspClass::magicFlashChipSize(unsigned char) - *fill* 0x402095ca 0x2 - .text._ZN8EspClass16checkFlashConfigEb - 0x402095cc 0x54 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x6c (size before relaxing) - 0x402095cc EspClass::checkFlashConfig(bool) - .text._ZN8EspClass14getResetReasonEv - 0x40209620 0x9b .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0xa7 (size before relaxing) - 0x40209648 EspClass::getResetReason() - *fill* 0x402096bb 0x1 - .text._ZN8EspClass12getResetInfoEv - 0x402096bc 0xa4 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0xb0 (size before relaxing) - 0x402096e0 EspClass::getResetInfo() - .text._ZN8EspClass13getSketchSizeEv - 0x40209760 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x85 (size before relaxing) - 0x4020976c EspClass::getSketchSize() - *fill* 0x402097dd 0x3 - .text._ZN8EspClass18getFreeSketchSpaceEv - 0x402097e0 0x31 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x3d (size before relaxing) - 0x402097ec EspClass::getFreeSketchSpace() - *fill* 0x40209811 0x3 - .text._ZN8EspClass16flashEraseSectorEj - 0x40209814 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x44 (size before relaxing) - 0x40209818 EspClass::flashEraseSector(unsigned int) - .text._ZN8EspClass10flashWriteEjPjj - 0x40209850 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x51 (size before relaxing) - 0x40209854 EspClass::flashWrite(unsigned int, unsigned int*, unsigned int) - *fill* 0x40209899 0x3 - .text._ZN8EspClass9flashReadEjPjj - 0x4020989c 0x45 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - 0x51 (size before relaxing) - 0x4020989c EspClass::flashRead(unsigned int, unsigned int*, unsigned int) - *fill* 0x402098e1 0x3 - .text._ZN14HardwareSerialD2Ev - 0x402098e4 0xb .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x402098e8 HardwareSerial::~HardwareSerial() - 0x402098e8 HardwareSerial::~HardwareSerial() - *fill* 0x402098ef 0x1 - .text._ZN14HardwareSerialD0Ev - 0x402098f0 0x17 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x1f (size before relaxing) - 0x402098f0 HardwareSerial::~HardwareSerial() - *fill* 0x40209907 0x1 - .text._ZN14HardwareSerial5flushEv - 0x40209908 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x2f (size before relaxing) - 0x40209908 HardwareSerial::flush() - *fill* 0x4020992b 0x1 - .text._ZN14HardwareSerial5writeEh - 0x4020992c 0x37 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x3f (size before relaxing) - 0x4020992c HardwareSerial::write(unsigned char) - *fill* 0x40209963 0x1 - .text._ZN14HardwareSerial9availableEv - 0x40209964 0x51 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x61 (size before relaxing) - 0x40209964 HardwareSerial::available() - *fill* 0x402099b5 0x3 - .text._ZN14HardwareSerial4peekEv - 0x402099b8 0x21 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x25 (size before relaxing) - 0x402099b8 HardwareSerial::peek() - *fill* 0x402099d9 0x3 - .text._ZN14HardwareSerial4readEv - 0x402099dc 0x3e .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x4a (size before relaxing) - 0x402099dc HardwareSerial::read() - *fill* 0x40209a1a 0x2 - .text._ZN14HardwareSerialC2Ei - 0x40209a1c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x1c (size before relaxing) - 0x40209a1c HardwareSerial::HardwareSerial(int) - 0x40209a1c HardwareSerial::HardwareSerial(int) - .text._ZN14HardwareSerial5beginEm12SerialConfig10SerialModeh - 0x40209a34 0x55 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x6d (size before relaxing) - 0x40209a34 HardwareSerial::begin(unsigned long, SerialConfig, SerialMode, unsigned char) - *fill* 0x40209a89 0x3 - .text._ZN14HardwareSerial6set_txEh - 0x40209a8c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x1d (size before relaxing) - 0x40209a8c HardwareSerial::set_tx(unsigned char) - *fill* 0x40209aa5 0x3 - .text._ZN14HardwareSerial8baudRateEv - 0x40209aa8 0x14 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x18 (size before relaxing) - 0x40209aa8 HardwareSerial::baudRate() - .text.startup._GLOBAL__sub_I__ZN14HardwareSerialC2Ei - 0x40209abc 0x23 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x33 (size before relaxing) - *fill* 0x40209adf 0x1 - .text.exit._GLOBAL__sub_D__ZN14HardwareSerialC2Ei - 0x40209ae0 0xf .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x1b (size before relaxing) - *fill* 0x40209aef 0x1 - .text._ZNK9IPAddress7printToER5Print - 0x40209af0 0x53 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x67 (size before relaxing) - 0x40209af0 IPAddress::printTo(Print&) const - *fill* 0x40209b43 0x1 - .text._ZN9IPAddressC2Ev - 0x40209b44 0xb .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0xf (size before relaxing) - 0x40209b44 IPAddress::IPAddress() - 0x40209b44 IPAddress::IPAddress() - *fill* 0x40209b4f 0x1 - .text._ZN9IPAddressC2Ehhhh - 0x40209b50 0x13 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x17 (size before relaxing) - 0x40209b50 IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) - 0x40209b50 IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char) - *fill* 0x40209b63 0x1 - .text._ZN9IPAddressC2Ej - 0x40209b64 0x9 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0xd (size before relaxing) - 0x40209b64 IPAddress::IPAddress(unsigned int) - 0x40209b64 IPAddress::IPAddress(unsigned int) - *fill* 0x40209b6d 0x3 - .text._ZN9IPAddressC2EPKh - 0x40209b70 0x21 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x25 (size before relaxing) - 0x40209b70 IPAddress::IPAddress(unsigned char const*) - 0x40209b70 IPAddress::IPAddress(unsigned char const*) - *fill* 0x40209b91 0x3 - .text._ZN9IPAddress8toStringEv - 0x40209b94 0x3b .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x43 (size before relaxing) - 0x40209b98 IPAddress::toString() - *fill* 0x40209bcf 0x1 - .text.startup._GLOBAL__sub_I__ZN9IPAddressC2Ev - 0x40209bd0 0x1c .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x20 (size before relaxing) - .text._ZN10MD5Builder5beginEv - 0x40209bec 0x2b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x2f (size before relaxing) - 0x40209bf0 MD5Builder::begin() - *fill* 0x40209c17 0x1 - .text._ZN10MD5Builder3addEPht - 0x40209c18 0x19 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x40209c1c MD5Builder::add(unsigned char*, unsigned short) - *fill* 0x40209c31 0x3 - .text._ZN10MD5Builder9calculateEv - 0x40209c34 0x1b .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x40209c38 MD5Builder::calculate() - *fill* 0x40209c4f 0x1 - .text._ZN10MD5Builder8getCharsEPc - 0x40209c50 0x37 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x3b (size before relaxing) - 0x40209c54 MD5Builder::getChars(char*) - *fill* 0x40209c87 0x1 - .text._ZN10MD5Builder8toStringEv - 0x40209c88 0x25 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - 0x31 (size before relaxing) - 0x40209c88 MD5Builder::toString() - *fill* 0x40209cad 0x3 - .text._ZN5Print6printfEPKcz - 0x40209cb0 0xce .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0xda (size before relaxing) - 0x40209cb4 Print::printf(char const*, ...) - *fill* 0x40209d7e 0x2 - .text._ZN5Print5printEPKc - 0x40209d80 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x17 (size before relaxing) - 0x40209d80 Print::print(char const*) - *fill* 0x40209d8f 0x1 - .text._ZN5Print7printlnEv - 0x40209d90 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x1d (size before relaxing) - 0x40209d94 Print::println() - *fill* 0x40209da9 0x3 - .text._ZN5Print7printlnEPK19__FlashStringHelper - 0x40209dac 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x31 (size before relaxing) - 0x40209dac Print::println(__FlashStringHelper const*) - *fill* 0x40209dd1 0x3 - .text._ZN5Print7printlnEPKc - 0x40209dd4 0x25 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x31 (size before relaxing) - 0x40209dd4 Print::println(char const*) - *fill* 0x40209df9 0x3 - .text._ZN5Print11printNumberEmh - 0x40209dfc 0x79 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x84 (size before relaxing) - 0x40209dfc Print::printNumber(unsigned long, unsigned char) - *fill* 0x40209e75 0x3 - .text._ZN5Print5printEmi - 0x40209e78 0x21 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x28 (size before relaxing) - 0x40209e78 Print::print(unsigned long, int) - *fill* 0x40209e99 0x3 - .text._ZN5Print5printEhi - 0x40209e9c 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x19 (size before relaxing) - 0x40209e9c Print::print(unsigned char, int) - *fill* 0x40209eb1 0x3 - .text._ZN5Print5printEji - 0x40209eb4 0xf .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x17 (size before relaxing) - 0x40209eb4 Print::print(unsigned int, int) - *fill* 0x40209ec3 0x1 - .text._ZN6Stream9timedReadEv - 0x40209ec4 0x3d .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x4d (size before relaxing) - 0x40209ec4 Stream::timedRead() - *fill* 0x40209f01 0x3 - .text._ZN6Stream9readBytesEPcj - 0x40209f04 0x41 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x45 (size before relaxing) - 0x40209f04 Stream::readBytes(char*, unsigned int) - *fill* 0x40209f45 0x3 - .text._ZN6Stream15readStringUntilEc - 0x40209f48 0x43 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x57 (size before relaxing) - 0x40209f4c Stream::readStringUntil(char) - *fill* 0x40209f8b 0x1 - .text._ZN12StreamString5writeEh - 0x40209f8c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x1c (size before relaxing) - 0x40209f8c StreamString::write(unsigned char) - .text._ZN12StreamString4peekEv - 0x40209fa4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x2d (size before relaxing) - 0x40209fa4 StreamString::peek() - *fill* 0x40209fcd 0x3 - .text._ZN12StreamString4readEv - 0x40209fd0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x4b (size before relaxing) - 0x40209fd0 StreamString::read() - *fill* 0x4020a00f 0x1 - .text._ZN12StreamString5writeEPKhj - 0x4020a010 0x5f .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x67 (size before relaxing) - 0x4020a010 StreamString::write(unsigned char const*, unsigned int) - *fill* 0x4020a06f 0x1 - .text._ZN12UpdaterClassC2Ev - 0x4020a070 0x2f .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x37 (size before relaxing) - 0x4020a074 UpdaterClass::UpdaterClass() - 0x4020a074 UpdaterClass::UpdaterClass() - *fill* 0x4020a09f 0x1 - .text._ZN12UpdaterClass6_resetEv - 0x4020a0a0 0x2b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x2f (size before relaxing) - 0x4020a0a0 UpdaterClass::_reset() - *fill* 0x4020a0cb 0x1 - .text._ZN12UpdaterClass5beginEji - 0x4020a0cc 0xb7 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0xf3 (size before relaxing) - 0x4020a0cc UpdaterClass::begin(unsigned int, int) - *fill* 0x4020a183 0x1 - .text._ZN12UpdaterClass6setMD5EPKc - 0x4020a184 0x2d .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x39 (size before relaxing) - 0x4020a184 UpdaterClass::setMD5(char const*) - *fill* 0x4020a1b1 0x3 - .text._ZN12UpdaterClass12_writeBufferEv - 0x4020a1b4 0x89 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0xad (size before relaxing) - 0x4020a1b4 UpdaterClass::_writeBuffer() - *fill* 0x4020a23d 0x3 - .text._ZN12UpdaterClass5writeEPhj - 0x4020a240 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0xe1 (size before relaxing) - 0x4020a240 UpdaterClass::write(unsigned char*, unsigned int) - *fill* 0x4020a301 0x3 - .text._ZN12UpdaterClass10_verifyEndEv - 0x4020a304 0x8b .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x9f (size before relaxing) - 0x4020a304 UpdaterClass::_verifyEnd() - *fill* 0x4020a38f 0x1 - .text._ZN12UpdaterClass3endEb - 0x4020a390 0xce .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x10a (size before relaxing) - 0x4020a390 UpdaterClass::end(bool) - *fill* 0x4020a45e 0x2 - .text._ZN12UpdaterClass11writeStreamER6Stream - 0x4020a460 0xf1 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x121 (size before relaxing) - 0x4020a460 UpdaterClass::writeStream(Stream&) - *fill* 0x4020a551 0x3 - .text._ZN12UpdaterClass10printErrorER6Stream - 0x4020a554 0x117 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x143 (size before relaxing) - 0x4020a588 UpdaterClass::printError(Stream&) - *fill* 0x4020a66b 0x1 - .text.startup._GLOBAL__sub_I__ZN12UpdaterClassC2Ev - 0x4020a66c 0x15 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x1d (size before relaxing) - *fill* 0x4020a681 0x3 - .text.exit._GLOBAL__sub_D__ZN12UpdaterClassC2Ev - 0x4020a684 0x19 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x1d (size before relaxing) - *fill* 0x4020a69d 0x3 - .text._Z6randoml - 0x4020a6a0 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - 0x4020a6b0 random(long) - *fill* 0x4020a6e9 0x3 - .text._Z6randomll - 0x4020a6ec 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - 0x27 (size before relaxing) - 0x4020a6ec random(long, long) - *fill* 0x4020a70b 0x1 - .text._ZN6StringD2Ev - 0x4020a70c 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x29 (size before relaxing) - 0x4020a70c String::~String() - 0x4020a70c String::~String() - *fill* 0x4020a731 0x3 - .text._ZN6String10invalidateEv - 0x4020a734 0x25 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x29 (size before relaxing) - 0x4020a734 String::invalidate() - *fill* 0x4020a759 0x3 - .text._ZN6String12changeBufferEj - 0x4020a75c 0x4f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x5b (size before relaxing) - 0x4020a75c String::changeBuffer(unsigned int) - *fill* 0x4020a7ab 0x1 - .text._ZN6String7reserveEj - 0x4020a7ac 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x37 (size before relaxing) - 0x4020a7ac String::reserve(unsigned int) - *fill* 0x4020a7df 0x1 - .text._ZN6String4copyEPKcj - 0x4020a7e0 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4f (size before relaxing) - 0x4020a7e0 String::copy(char const*, unsigned int) - *fill* 0x4020a81f 0x1 - .text._ZN6StringC2EPKc - 0x4020a820 0x33 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x3b (size before relaxing) - 0x4020a820 String::String(char const*) - 0x4020a820 String::String(char const*) - *fill* 0x4020a853 0x1 - .text._ZN6String4copyEPK19__FlashStringHelperj - 0x4020a854 0x43 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x57 (size before relaxing) - 0x4020a854 String::copy(__FlashStringHelper const*, unsigned int) - *fill* 0x4020a897 0x1 - .text._ZN6String4moveERS_ - 0x4020a898 0x4e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x56 (size before relaxing) - 0x4020a898 String::move(String&) - *fill* 0x4020a8e6 0x2 - .text._ZN6StringaSERKS_ - 0x4020a8e8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x39 (size before relaxing) - 0x4020a8e8 String::operator=(String const&) - *fill* 0x4020a915 0x3 - .text._ZN6StringC2ERKS_ - 0x4020a918 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x1f (size before relaxing) - 0x4020a918 String::String(String const&) - 0x4020a918 String::String(String const&) - *fill* 0x4020a92f 0x1 - .text._ZN6StringaSEOS_ - 0x4020a930 0x1d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x21 (size before relaxing) - 0x4020a930 String::operator=(String&&) - *fill* 0x4020a94d 0x3 - .text._ZN6StringaSEPKc - 0x4020a950 0x35 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x41 (size before relaxing) - 0x4020a950 String::operator=(char const*) - *fill* 0x4020a985 0x3 - .text._ZN6StringC2Ehh - 0x4020a988 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x3b (size before relaxing) - 0x4020a988 String::String(unsigned char, unsigned char) - 0x4020a988 String::String(unsigned char, unsigned char) - *fill* 0x4020a9b7 0x1 - .text._ZN6StringC2Eih - 0x4020a9b8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x39 (size before relaxing) - 0x4020a9b8 String::String(int, unsigned char) - 0x4020a9b8 String::String(int, unsigned char) - *fill* 0x4020a9e5 0x3 - .text._ZN6StringC2Ejh - 0x4020a9e8 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x39 (size before relaxing) - 0x4020a9e8 String::String(unsigned int, unsigned char) - 0x4020a9e8 String::String(unsigned int, unsigned char) - *fill* 0x4020aa15 0x3 - .text._ZN6StringC2Emh - 0x4020aa18 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x39 (size before relaxing) - 0x4020aa18 String::String(unsigned long, unsigned char) - 0x4020aa18 String::String(unsigned long, unsigned char) - *fill* 0x4020aa45 0x3 - .text._ZN6StringaSEPK19__FlashStringHelper - 0x4020aa48 0x37 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4f (size before relaxing) - 0x4020aa48 String::operator=(__FlashStringHelper const*) - *fill* 0x4020aa7f 0x1 - .text._ZN6StringC2EPK19__FlashStringHelper - 0x4020aa80 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x1f (size before relaxing) - 0x4020aa80 String::String(__FlashStringHelper const*) - 0x4020aa80 String::String(__FlashStringHelper const*) - *fill* 0x4020aa97 0x1 - .text._ZN6String6concatEPKcj - 0x4020aa98 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x55 (size before relaxing) - 0x4020aa98 String::concat(char const*, unsigned int) - *fill* 0x4020aae1 0x3 - .text._ZN6String6concatERKS_ - 0x4020aae4 0x18 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x1c (size before relaxing) - 0x4020aae4 String::concat(String const&) - .text._ZN6String6concatEPKc - 0x4020aafc 0x2d .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x35 (size before relaxing) - 0x4020aafc String::concat(char const*) - *fill* 0x4020ab29 0x3 - .text._ZN6String6concatEc - 0x4020ab2c 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x23 (size before relaxing) - 0x4020ab2c String::concat(char) - *fill* 0x4020ab47 0x1 - .text._ZN6String6concatEh - 0x4020ab48 0x2f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x3f (size before relaxing) - 0x4020ab48 String::concat(unsigned char) - *fill* 0x4020ab77 0x1 - .text._ZN6String6concatEi - 0x4020ab78 0x2e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x3e (size before relaxing) - 0x4020ab78 String::concat(int) - *fill* 0x4020aba6 0x2 - .text._ZN6String6concatEPK19__FlashStringHelper - 0x4020aba8 0x57 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x6f (size before relaxing) - 0x4020aba8 String::concat(__FlashStringHelper const*) - *fill* 0x4020abff 0x1 - .text._ZplRK15StringSumHelperRK6String - 0x4020ac00 0x27 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x33 (size before relaxing) - 0x4020ac00 operator+(StringSumHelper const&, String const&) - *fill* 0x4020ac27 0x1 - .text._ZplRK15StringSumHelperPKc - 0x4020ac28 0x30 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x43 (size before relaxing) - 0x4020ac28 operator+(StringSumHelper const&, char const*) - *fill* 0x4020ac58 0x0 - .text._ZplRK15StringSumHelperPK19__FlashStringHelper - 0x4020ac58 0x21 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x2d (size before relaxing) - 0x4020ac58 operator+(StringSumHelper const&, __FlashStringHelper const*) - *fill* 0x4020ac79 0x3 - .text._ZNK6String9compareToERKS_ - 0x4020ac7c 0x41 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x45 (size before relaxing) - 0x4020ac7c String::compareTo(String const&) const - *fill* 0x4020acbd 0x3 - .text._ZNK6String6equalsERKS_ - 0x4020acc0 0x29 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x2d (size before relaxing) - 0x4020acc0 String::equals(String const&) const - *fill* 0x4020ace9 0x3 - .text._ZNK6String6equalsEPKc - 0x4020acec 0x3e .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x42 (size before relaxing) - 0x4020acec String::equals(char const*) const - *fill* 0x4020ad2a 0x2 - .text._ZNK6String16equalsIgnoreCaseERKS_ - 0x4020ad2c 0x55 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x61 (size before relaxing) - 0x4020ad2c String::equalsIgnoreCase(String const&) const - *fill* 0x4020ad81 0x3 - .text._ZNK6String10startsWithERKS_j - 0x4020ad84 0x3f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020ad88 String::startsWith(String const&, unsigned int) const - *fill* 0x4020adc3 0x1 - .text._ZNK6String10startsWithERKS_ - 0x4020adc4 0x1f .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x23 (size before relaxing) - 0x4020adc4 String::startsWith(String const&) const - *fill* 0x4020ade3 0x1 - .text._ZNK6String8endsWithERKS_ - 0x4020ade4 0x38 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x3c (size before relaxing) - 0x4020ade4 String::endsWith(String const&) const - .text._ZNK6String6charAtEj - 0x4020ae1c 0xf .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x17 (size before relaxing) - 0x4020ae1c String::charAt(unsigned int) const - *fill* 0x4020ae2b 0x1 - .text._ZNK6String7indexOfEcj - 0x4020ae2c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x35 (size before relaxing) - 0x4020ae2c String::indexOf(char, unsigned int) const - *fill* 0x4020ae5d 0x3 - .text._ZNK6String7indexOfEc - 0x4020ae60 0x17 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x1b (size before relaxing) - 0x4020ae60 String::indexOf(char) const - *fill* 0x4020ae77 0x1 - .text._ZNK6String7indexOfERKS_j - 0x4020ae78 0x31 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x35 (size before relaxing) - 0x4020ae78 String::indexOf(String const&, unsigned int) const - *fill* 0x4020aea9 0x3 - .text._ZNK6String7indexOfERKS_ - 0x4020aeac 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x18 (size before relaxing) - 0x4020aeac String::indexOf(String const&) const - .text._ZNK6String11lastIndexOfERKS_j - 0x4020aec0 0x62 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x66 (size before relaxing) - 0x4020aec0 String::lastIndexOf(String const&, unsigned int) const - *fill* 0x4020af22 0x2 - .text._ZNK6String9substringEjj - 0x4020af24 0x6a .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x72 (size before relaxing) - 0x4020af28 String::substring(unsigned int, unsigned int) const - *fill* 0x4020af8e 0x2 - .text._ZN6String7replaceERKS_S1_ - 0x4020af90 0x15c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x188 (size before relaxing) - 0x4020af90 String::replace(String const&, String const&) - .text._ZN6String6removeEjj - 0x4020b0ec 0x49 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020b0f0 String::remove(unsigned int, unsigned int) - *fill* 0x4020b135 0x3 - .text._ZN6String6removeEj - 0x4020b138 0x14 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x18 (size before relaxing) - 0x4020b138 String::remove(unsigned int) - .text._ZN6String11toLowerCaseEv - 0x4020b14c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x2f (size before relaxing) - 0x4020b14c String::toLowerCase() - *fill* 0x4020b174 0x0 - .text._ZN6String11toUpperCaseEv - 0x4020b174 0x28 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x2f (size before relaxing) - 0x4020b174 String::toUpperCase() - *fill* 0x4020b19c 0x0 - .text._ZN6String4trimEv - 0x4020b19c 0x77 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x87 (size before relaxing) - 0x4020b19c String::trim() - *fill* 0x4020b213 0x1 - .text._ZNK6String5toIntEv - 0x4020b214 0x1b .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x1f (size before relaxing) - 0x4020b214 String::toInt() const - *fill* 0x4020b22f 0x1 - .text._Znwj 0x4020b230 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x17 (size before relaxing) - 0x4020b230 operator new(unsigned int) - *fill* 0x4020b23f 0x1 - .text._Znaj 0x4020b240 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x17 (size before relaxing) - 0x4020b240 operator new[](unsigned int) - *fill* 0x4020b24f 0x1 - .text._ZdlPv 0x4020b250 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x17 (size before relaxing) - 0x4020b250 operator delete(void*) - *fill* 0x4020b25f 0x1 - .text._ZdaPv 0x4020b260 0xf .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x17 (size before relaxing) - 0x4020b260 operator delete[](void*) - *fill* 0x4020b26f 0x1 - .text.__cxa_pure_virtual - 0x4020b270 0x18 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x20 (size before relaxing) - 0x4020b278 __cxa_pure_virtual - .text._ZSt25__throw_bad_function_callv - 0x4020b288 0x14 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x20 (size before relaxing) - 0x4020b28c std::__throw_bad_function_call() - .text.crc_update - 0x4020b29c 0x3c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - 0x4020b2a0 crc_update - .text.eboot_command_calculate_crc32 - 0x4020b2d8 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - 0x1d (size before relaxing) - 0x4020b2d8 eboot_command_calculate_crc32 - *fill* 0x4020b2f1 0x3 - .text.eboot_command_read - 0x4020b2f4 0x5f .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - 0x6b (size before relaxing) - 0x4020b304 eboot_command_read - *fill* 0x4020b353 0x1 - .text.eboot_command_write - 0x4020b354 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - 0x51 (size before relaxing) - 0x4020b354 eboot_command_write - *fill* 0x4020b38d 0x3 - .text._ZL9loop_taskP11ETSEventTag - 0x4020b390 0x5a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x66 (size before relaxing) - *fill* 0x4020b3ea 0x2 - .text.esp_yield - 0x4020b3ec 0x29 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x31 (size before relaxing) - 0x4020b3f0 esp_yield - *fill* 0x4020b415 0x3 - .text.esp_schedule - 0x4020b418 0x1c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020b41c esp_schedule - .text._ZL12loop_wrapperv - 0x4020b434 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x54 (size before relaxing) - .text.__yield 0x4020b468 0x34 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x53 (size before relaxing) - 0x4020b46c __yield - 0x4020b46c yield - *fill* 0x4020b49c 0x0 - .text.optimistic_yield - 0x4020b49c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x49 (size before relaxing) - 0x4020b49c optimistic_yield - *fill* 0x4020b4cd 0x3 - .text._Z9init_donev - 0x4020b4d0 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x65 (size before relaxing) - 0x4020b4e4 init_done() - *fill* 0x4020b525 0x3 - .text.user_init - 0x4020b528 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x8d (size before relaxing) - 0x4020b540 user_init - *fill* 0x4020b58d 0x3 - .text.atol 0x4020b590 0x13 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x1b (size before relaxing) - 0x4020b590 atol - *fill* 0x4020b5a3 0x1 - .text.atoi 0x4020b5a4 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x17 (size before relaxing) - 0x4020b5a4 atoi - *fill* 0x4020b5b3 0x1 - .text.itoa 0x4020b5b4 0x82 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x8a (size before relaxing) - 0x4020b5b8 itoa - *fill* 0x4020b636 0x2 - .text.utoa 0x4020b638 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x78 (size before relaxing) - 0x4020b638 utoa - .text.ultoa 0x4020b6a4 0x6c .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x78 (size before relaxing) - 0x4020b6a4 ultoa - .text.dtostrf 0x4020b710 0x225 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x255 (size before relaxing) - 0x4020b744 dtostrf - *fill* 0x4020b935 0x3 - .text.uart_write_char_d - 0x4020b938 0x5b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x4020b948 uart_write_char_d - *fill* 0x4020b993 0x1 - .text.__wrap_system_restart_local - 0x4020b994 0x1a7 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x1eb (size before relaxing) - 0x4020b9e0 __wrap_system_restart_local - *fill* 0x4020bb3b 0x1 - .text.abort 0x4020bb3c 0xb .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0xf (size before relaxing) - 0x4020bb3c abort - *fill* 0x4020bb47 0x1 - .text.__panic_func - 0x4020bb48 0x1a .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x36 (size before relaxing) - 0x4020bb48 __panic_func - *fill* 0x4020bb62 0x2 - .text.twi_delay - 0x4020bb64 0x18 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .text.twi_write_stop - 0x4020bb7c 0x9d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0xb5 (size before relaxing) - *fill* 0x4020bc19 0x3 - .text.twi_write_bit - 0x4020bc1c 0x92 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0xb6 (size before relaxing) - *fill* 0x4020bcae 0x2 - .text.twi_read_bit - 0x4020bcb0 0x93 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0xb7 (size before relaxing) - *fill* 0x4020bd43 0x1 - .text.twi_write_byte - 0x4020bd44 0x39 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x45 (size before relaxing) - *fill* 0x4020bd7d 0x3 - .text.twi_write_start - 0x4020bd80 0x65 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x8d (size before relaxing) - *fill* 0x4020bde5 0x3 - .text.twi_setClockStretchLimit - 0x4020bde8 0xa .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0xe (size before relaxing) - 0x4020bde8 twi_setClockStretchLimit - *fill* 0x4020bdf2 0x2 - .text.twi_init - 0x4020bdf4 0x3d .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x5d (size before relaxing) - 0x4020bdf4 twi_init - *fill* 0x4020be31 0x3 - .text.twi_writeTo - 0x4020be34 0xc1 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x105 (size before relaxing) - 0x4020be34 twi_writeTo - *fill* 0x4020bef5 0x3 - .text.twi_readFrom - 0x4020bef8 0x103 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - 0x15b (size before relaxing) - 0x4020bef8 twi_readFrom - *fill* 0x4020bffb 0x1 - .text.delay_end - 0x4020bffc 0xf .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - 0x17 (size before relaxing) - 0x4020bffc delay_end - *fill* 0x4020c00b 0x1 - .text.micros_overflow_tick - 0x4020c00c 0x31 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - 0x35 (size before relaxing) - 0x4020c014 micros_overflow_tick - *fill* 0x4020c03d 0x3 - .text.delay 0x4020c040 0x55 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - 0x6f (size before relaxing) - 0x4020c048 delay - *fill* 0x4020c095 0x3 - .text.init 0x4020c098 0x49 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - 0x59 (size before relaxing) - 0x4020c0a8 init - *fill* 0x4020c0e1 0x3 - .text.shiftIn 0x4020c0e4 0x74 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - 0x84 (size before relaxing) - 0x4020c0e4 shiftIn - .text.xPortGetFreeHeapSize - 0x4020c158 0xf .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - 0x17 (size before relaxing) - 0x4020c158 xPortGetFreeHeapSize - *fill* 0x4020c167 0x1 - .text.base64_encode_value - 0x4020c168 0x18 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x4020c16c base64_encode_value - .text.base64_encode_block - 0x4020c180 0x10d .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x125 (size before relaxing) - 0x4020c180 base64_encode_block - *fill* 0x4020c28d 0x3 - .text.base64_encode_blockend - 0x4020c290 0x56 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x5e (size before relaxing) - 0x4020c290 base64_encode_blockend - *fill* 0x4020c2e6 0x2 - .text.base64_encode_chars - 0x4020c2e8 0x31 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x3d (size before relaxing) - 0x4020c2e8 base64_encode_chars - *fill* 0x4020c319 0x3 - .text.strncat 0x4020c31c 0x4a .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4e (size before relaxing) - 0x4020c31c strncat - *fill* 0x4020c366 0x2 - .text.strcat 0x4020c368 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x31 (size before relaxing) - 0x4020c368 strcat - *fill* 0x4020c38d 0x3 - .text.strtok 0x4020c390 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x1d (size before relaxing) - 0x4020c394 strtok - *fill* 0x4020c3a9 0x3 - .text.strdup 0x4020c3ac 0x35 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x45 (size before relaxing) - 0x4020c3ac strdup - *fill* 0x4020c3e1 0x3 - .text.isalnum 0x4020c3e4 0x25 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x2d (size before relaxing) - 0x4020c3e4 isalnum - *fill* 0x4020c409 0x3 - .text.isprint 0x4020c40c 0x18 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x20 (size before relaxing) - 0x4020c40c isprint - .text.isspace 0x4020c424 0x22 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020c428 isspace - *fill* 0x4020c446 0x2 - .text.strcasecmp - 0x4020c448 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x47 (size before relaxing) - 0x4020c448 strcasecmp - *fill* 0x4020c483 0x1 - .text.__errno 0x4020c484 0x9 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020c488 __errno - *fill* 0x4020c48d 0x3 - .text.strtol 0x4020c490 0x156 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x176 (size before relaxing) - 0x4020c490 strtol - *fill* 0x4020c5e6 0x2 - .text.strtoul 0x4020c5e8 0x137 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x14f (size before relaxing) - 0x4020c5e8 strtoul - *fill* 0x4020c71f 0x1 - .text._Z13strncasecmp_PPKcS0_j - 0x4020c720 0x79 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x85 (size before relaxing) - 0x4020c720 strncasecmp_P(char const*, char const*, unsigned int) - *fill* 0x4020c799 0x3 - .text._Z11vsnprintf_PPcjPKc13__va_list_tag - 0x4020c79c 0x5f .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x83 (size before relaxing) - 0x4020c79c vsnprintf_P(char*, unsigned int, char const*, __va_list_tag) - *fill* 0x4020c7fb 0x1 - .text._Z10snprintf_PPcjPKcz - 0x4020c7fc 0x23 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x2b (size before relaxing) - 0x4020c7fc snprintf_P(char*, unsigned int, char const*, ...) - *fill* 0x4020c81f 0x1 - .text.uart1_write_char - 0x4020c820 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x47 (size before relaxing) - *fill* 0x4020c85b 0x1 - .text.uart0_write_char - 0x4020c85c 0x3b .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x47 (size before relaxing) - *fill* 0x4020c897 0x1 - .text.uart_write_char - 0x4020c898 0x37 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x3f (size before relaxing) - 0x4020c898 uart_write_char - *fill* 0x4020c8cf 0x1 - .text.uart_rx_available - 0x4020c8d0 0x28 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x2c (size before relaxing) - 0x4020c8d0 uart_rx_available - .text.uart_read_char - 0x4020c8f8 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4f (size before relaxing) - 0x4020c8f8 uart_read_char - *fill* 0x4020c93b 0x1 - .text.uart_wait_tx_empty - 0x4020c93c 0x43 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4b (size before relaxing) - 0x4020c93c uart_wait_tx_empty - *fill* 0x4020c97f 0x1 - .text.uart_flush - 0x4020c980 0x6a .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4020c98c uart_flush - *fill* 0x4020c9ea 0x2 - .text.uart_set_baudrate - 0x4020c9ec 0x3e .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x42 (size before relaxing) - 0x4020c9f4 uart_set_baudrate - *fill* 0x4020ca2a 0x2 - .text.uart_init - 0x4020ca2c 0x135 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x165 (size before relaxing) - 0x4020ca34 uart_init - *fill* 0x4020cb61 0x3 - .text.uart_set_tx - 0x4020cb64 0x53 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x67 (size before relaxing) - 0x4020cb64 uart_set_tx - *fill* 0x4020cbb7 0x1 - .text.uart_set_debug - 0x4020cbb8 0x54 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x64 (size before relaxing) - 0x4020cbc8 uart_set_debug - .text.uart_get_debug - 0x4020cc0c 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0xb (size before relaxing) - 0x4020cc0c uart_get_debug - *fill* 0x4020cc13 0x1 - .text.umm_disconnect_from_free_list - 0x4020cc14 0x62 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - *fill* 0x4020cc76 0x2 - .text.umm_assimilate_up - 0x4020cc78 0x82 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x8a (size before relaxing) - *fill* 0x4020ccfa 0x2 - .text.umm_assimilate_down - 0x4020ccfc 0x55 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x59 (size before relaxing) - *fill* 0x4020cd51 0x3 - .text._umm_free - 0x4020cd54 0xcb .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0xe7 (size before relaxing) - *fill* 0x4020ce1f 0x1 - .text.umm_make_new_block$constprop$0 - 0x4020ce20 0x5a .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x5e (size before relaxing) - *fill* 0x4020ce7a 0x2 - .text.umm_init - 0x4020ce7c 0x89 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x95 (size before relaxing) - 0x4020ce88 umm_init - *fill* 0x4020cf05 0x3 - .text._umm_malloc - 0x4020cf08 0x13f .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x163 (size before relaxing) - *fill* 0x4020d047 0x1 - .text.malloc 0x4020d048 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x17 (size before relaxing) - 0x4020d048 malloc - *fill* 0x4020d057 0x1 - .text.calloc 0x4020d058 0x2d .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x35 (size before relaxing) - 0x4020d058 calloc - *fill* 0x4020d085 0x3 - .text.realloc 0x4020d088 0x168 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x1bf (size before relaxing) - 0x4020d088 realloc - *fill* 0x4020d1f0 0x0 - .text.free 0x4020d1f0 0xf .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x17 (size before relaxing) - 0x4020d1f0 free - *fill* 0x4020d1ff 0x1 - .text._Z23run_scheduled_functionsv - 0x4020d200 0x8a .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - 0xaa (size before relaxing) - 0x4020d210 run_scheduled_functions() - *fill* 0x4020d28a 0x2 - .text 0x4020d28c 0x7f .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - 0x83 (size before relaxing) - 0x4020d290 cont_yield - 0x4020d2c8 cont_run - *fill* 0x4020d30b 0x1 - .text._ZN10WiFiServerD2Ev - 0x4020d30c 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4020d310 WiFiServer::~WiFiServer() - 0x4020d310 WiFiServer::~WiFiServer() - *fill* 0x4020d317 0x1 - .text._ZN10WiFiServerD0Ev - 0x4020d318 0x17 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x1f (size before relaxing) - 0x4020d318 WiFiServer::~WiFiServer() - *fill* 0x4020d32f 0x1 - .text._ZN10WiFiServerC2Et - 0x4020d330 0x35 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x3d (size before relaxing) - 0x4020d330 WiFiServer::WiFiServer(unsigned short) - 0x4020d330 WiFiServer::WiFiServer(unsigned short) - *fill* 0x4020d365 0x3 - .text._ZN10WiFiServer5closeEv - 0x4020d368 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x25 (size before relaxing) - 0x4020d368 WiFiServer::close() - *fill* 0x4020d389 0x3 - .text._ZN10WiFiServer5beginEv - 0x4020d38c 0x77 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0xa3 (size before relaxing) - 0x4020d390 WiFiServer::begin() - *fill* 0x4020d403 0x1 - .text._ZN10WiFiServer7_acceptEP7tcp_pcba - 0x4020d404 0x7d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0xb5 (size before relaxing) - 0x4020d408 WiFiServer::_accept(tcp_pcb*, signed char) - *fill* 0x4020d481 0x3 - .text._ZN10WiFiServer9_s_acceptEPvP7tcp_pcba - 0x4020d484 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x1f (size before relaxing) - 0x4020d484 WiFiServer::_s_accept(void*, tcp_pcb*, signed char) - *fill* 0x4020d49f 0x1 - .text._ZN10WiFiServer9availableEPh - 0x4020d4a0 0x4e .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x76 (size before relaxing) - 0x4020d4a0 WiFiServer::available(unsigned char*) - *fill* 0x4020d4ee 0x2 - .text._ZN15TransportTraitsD2Ev - 0x4020d4f0 0xb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020d4f4 TransportTraits::~TransportTraits() - 0x4020d4f4 TransportTraits::~TransportTraits() - *fill* 0x4020d4fb 0x1 - .text._ZN15TransportTraitsD0Ev - 0x4020d4fc 0x17 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x1f (size before relaxing) - 0x4020d4fc TransportTraits::~TransportTraits() - *fill* 0x4020d513 0x1 - .text._ZN15TransportTraits6createEv - 0x4020d514 0x27 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x33 (size before relaxing) - 0x4020d514 TransportTraits::create() - *fill* 0x4020d53b 0x1 - .text._ZN10HTTPClientC2Ev - 0x4020d53c 0x81 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xad (size before relaxing) - 0x4020d544 HTTPClient::HTTPClient() - 0x4020d544 HTTPClient::HTTPClient() - *fill* 0x4020d5bd 0x3 - .text._ZN10HTTPClient5clearEv - 0x4020d5c0 0x1f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x2b (size before relaxing) - 0x4020d5c0 HTTPClient::clear() - *fill* 0x4020d5df 0x1 - .text._ZN10HTTPClient13beginInternalE6StringPKc - 0x4020d5e0 0x147 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x213 (size before relaxing) - 0x4020d5e0 HTTPClient::beginInternal(String, char const*) - *fill* 0x4020d727 0x1 - .text._ZN10HTTPClient3endEv - 0x4020d728 0x57 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x5f (size before relaxing) - 0x4020d728 HTTPClient::end() - *fill* 0x4020d77f 0x1 - .text._ZN10HTTPClient12setUserAgentERK6String - 0x4020d780 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x19 (size before relaxing) - 0x4020d780 HTTPClient::setUserAgent(String const&) - *fill* 0x4020d795 0x3 - .text._ZN10HTTPClient10setTimeoutEt - 0x4020d798 0x2b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x37 (size before relaxing) - 0x4020d798 HTTPClient::setTimeout(unsigned short) - *fill* 0x4020d7c3 0x1 - .text._ZN10HTTPClient12getStreamPtrEv - 0x4020d7c4 0x19 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x21 (size before relaxing) - 0x4020d7c4 HTTPClient::getStreamPtr() - *fill* 0x4020d7dd 0x3 - .text._ZN10HTTPClient13errorToStringEi - 0x4020d7e0 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xcf (size before relaxing) - 0x4020d810 HTTPClient::errorToString(int) - *fill* 0x4020d89f 0x1 - .text._ZN10HTTPClient9addHeaderERK6StringS2_bb - 0x4020d8a0 0x19c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x274 (size before relaxing) - 0x4020d8b8 HTTPClient::addHeader(String const&, String const&, bool, bool) - .text._ZN10HTTPClient14collectHeadersEPPKcj - 0x4020da3c 0xbf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xef (size before relaxing) - 0x4020da3c HTTPClient::collectHeaders(char const**, unsigned int) - *fill* 0x4020dafb 0x1 - .text._ZN10HTTPClient6headerEPKc - 0x4020dafc 0x65 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x79 (size before relaxing) - 0x4020dafc HTTPClient::header(char const*) - *fill* 0x4020db61 0x3 - .text._ZN10HTTPClient9hasHeaderEPKc - 0x4020db64 0x62 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x66 (size before relaxing) - 0x4020db64 HTTPClient::hasHeader(char const*) - *fill* 0x4020dbc6 0x2 - .text._ZN10HTTPClient7connectEv - 0x4020dbc8 0xaf .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xd3 (size before relaxing) - 0x4020dbc8 HTTPClient::connect() - *fill* 0x4020dc77 0x1 - .text._ZN10HTTPClient10sendHeaderEPKc - 0x4020dc78 0x1ff .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x33f (size before relaxing) - 0x4020dca8 HTTPClient::sendHeader(char const*) - *fill* 0x4020de77 0x1 - .text._ZN10HTTPClient20handleHeaderResponseEv - 0x4020de78 0x254 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x39c (size before relaxing) - 0x4020de90 HTTPClient::handleHeaderResponse() - .text._ZN10HTTPClient11returnErrorEi - 0x4020e0cc 0x2e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x32 (size before relaxing) - 0x4020e0cc HTTPClient::returnError(int) - *fill* 0x4020e0fa 0x2 - .text._ZN10HTTPClient11sendRequestEPKcPhj - 0x4020e0fc 0xbb .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xf3 (size before relaxing) - 0x4020e100 HTTPClient::sendRequest(char const*, unsigned char*, unsigned int) - *fill* 0x4020e1b7 0x1 - .text._ZN10HTTPClient3GETEv - 0x4020e1b8 0x1d .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x21 (size before relaxing) - 0x4020e1bc HTTPClient::GET() - *fill* 0x4020e1d5 0x3 - .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x4020e1d8 0x21 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x25 (size before relaxing) - 0x4020e1d8 std::unique_ptr >::~unique_ptr() - 0x4020e1d8 std::unique_ptr >::~unique_ptr() - *fill* 0x4020e1f9 0x3 - .text._ZN10HTTPClientD2Ev - 0x4020e1fc 0x8f .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0xd3 (size before relaxing) - 0x4020e1fc HTTPClient::~HTTPClient() - 0x4020e1fc HTTPClient::~HTTPClient() - *fill* 0x4020e28b 0x1 - .text._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x4020e28c 0x1b .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x1f (size before relaxing) - 0x4020e28c std::unique_ptr >::reset(TransportTraits*) - *fill* 0x4020e2a7 0x1 - .text._ZN10HTTPClient5beginE6String - 0x4020e2a8 0x5e .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x92 (size before relaxing) - 0x4020e2ac HTTPClient::begin(String) - *fill* 0x4020e306 0x2 - .text._ZN6base646encodeEPhj - 0x4020e308 0xa9 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - 0xe5 (size before relaxing) - 0x4020e324 base64::encode(unsigned char*, unsigned int) - *fill* 0x4020e3b1 0x3 - .text._ZN6base646encodeE6String - 0x4020e3b4 0x29 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - 0x2d (size before relaxing) - 0x4020e3b4 base64::encode(String) - *fill* 0x4020e3dd 0x3 - .text.__wrap_register_chipv6_phy - 0x4020e3e0 0x32 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x42 (size before relaxing) - 0x4020e3e4 __wrap_register_chipv6_phy - *fill* 0x4020e412 0x2 - .text.user_rf_pre_init - 0x4020e414 0x4b .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x66 (size before relaxing) - 0x4020e41c user_rf_pre_init - *fill* 0x4020e45f 0x1 - .text._ZN6Stream9readBytesEPhj - 0x4020e460 0x13 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - 0x4020e460 Stream::readBytes(unsigned char*, unsigned int) - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x0 - *fill* 0x4020e473 0x1 - .text._ZN6TickerC2Ev - 0x4020e474 0x6 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - 0x4020e474 Ticker::Ticker() - 0x4020e474 Ticker::Ticker() - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x0 - *fill* 0x4020e47a 0x2 - .text._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x4020e47c 0x15 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e47c std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)0>::_M_destroy() - *fill* 0x4020e491 0x0 - *fill* 0x4020e491 0x0 - *fill* 0x4020e491 0x3 - .text._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x4020e494 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e494 std::_Sp_counted_deleter::_Deleter >, std::allocator, (__gnu_cxx::_Lock_policy)0>::_M_get_deleter(std::type_info const&) - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - *fill* 0x4020e498 0x0 - .text._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ - 0x4020e498 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e498 std::function::function(std::function const&) - 0x4020e498 std::function::function(std::function const&) - *fill* 0x4020e4b9 0x3 - .text._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x4020e4bc 0x39 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e4bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - 0x4020e4bc std::__shared_count<(__gnu_cxx::_Lock_policy)0>::~__shared_count() - *fill* 0x4020e4f5 0x0 - *fill* 0x4020e4f5 0x3 - .text._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ - 0x4020e4f8 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e4f8 std::function::function(std::function const&) - 0x4020e4f8 std::function::function(std::function const&) - *fill* 0x4020e519 0x0 - *fill* 0x4020e519 0x3 - .text._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ - 0x4020e51c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e51c std::function::function(std::function const&) - 0x4020e51c std::function::function(std::function const&) - *fill* 0x4020e53d 0x0 - *fill* 0x4020e53d 0x3 - .text._ZNSt8functionIFvvEEC2ERKS1_ - 0x4020e540 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e540 std::function::function(std::function const&) - 0x4020e540 std::function::function(std::function const&) - *fill* 0x4020e561 0x0 - *fill* 0x4020e561 0x0 - *fill* 0x4020e561 0x3 - .text._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x4020e564 0x18 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x4020e564 void std::swap(std::_Any_data&, std::_Any_data&) - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - *fill* 0x4020e57c 0x0 - .text._ZN10WiFiClient5writeEh - 0x4020e57c 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4020e57c WiFiClient::write(unsigned char) - *fill* 0x4020e597 0x1 - .text._ZN10WiFiClient4peekEv - 0x4020e598 0x31 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4020e598 WiFiClient::peek() - *fill* 0x4020e5c9 0x3 - .text._ZN10WiFiClient9connectedEv - 0x4020e5cc 0x2f .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4020e5cc WiFiClient::connected() - *fill* 0x4020e5fb 0x1 - .text._ZN10WiFiClientcvbEv - 0x4020e5fc 0xb .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4020e5fc WiFiClient::operator bool() - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x0 - *fill* 0x4020e607 0x1 - .text._ZN10WiFiClient10setNoDelayEb - 0x4020e608 0x23 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x4020e608 WiFiClient::setNoDelay(bool) - *fill* 0x4020e62b 0x0 - *fill* 0x4020e62b 0x0 - *fill* 0x4020e62b 0x0 - *fill* 0x4020e62b 0x1 - .text._ZN7WiFiUDP4readEPcj - 0x4020e62c 0x13 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e62c WiFiUDP::read(char*, unsigned int) - *fill* 0x4020e63f 0x1 - .text._ZN7WiFiUDP5writeEh - 0x4020e640 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e640 WiFiUDP::write(unsigned char) - *fill* 0x4020e65b 0x1 - .text._ZN7WiFiUDP4readEv - 0x4020e65c 0x21 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e65c WiFiUDP::read() - *fill* 0x4020e67d 0x3 - .text._ZN7WiFiUDP4peekEv - 0x4020e680 0x1d .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e680 WiFiUDP::peek() - *fill* 0x4020e69d 0x3 - .text._ZN7WiFiUDP5flushEv - 0x4020e6a0 0xf .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e6a0 WiFiUDP::flush() - *fill* 0x4020e6af 0x0 - *fill* 0x4020e6af 0x0 - *fill* 0x4020e6af 0x0 - *fill* 0x4020e6af 0x0 - *fill* 0x4020e6af 0x1 - .text._ZN7WiFiUDP10remotePortEv - 0x4020e6b0 0x27 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x4020e6b0 WiFiUDP::remotePort() - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x0 - *fill* 0x4020e6d7 0x1 - .text._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x4020e6d8 0x26 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4020e6d8 std::_Function_handler (MDNSResponder*)> >::_M_invoke(std::_Any_data const&) - *fill* 0x4020e6fe 0x2 - .text._ZN10UdpContext4readEv - 0x4020e700 0x20 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4020e700 UdpContext::read() - *fill* 0x4020e720 0x0 - .text._ZN10UdpContext5flushEv - 0x4020e720 0xb .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4020e720 UdpContext::flush() - *fill* 0x4020e72b 0x0 - *fill* 0x4020e72b 0x0 - *fill* 0x4020e72b 0x0 - *fill* 0x4020e72b 0x1 - .text._ZN13MDNSResponder17_getAnswerFromIdxEi - 0x4020e72c 0x1a .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4020e72c MDNSResponder::_getAnswerFromIdx(int) - *fill* 0x4020e746 0x0 - *fill* 0x4020e746 0x0 - *fill* 0x4020e746 0x2 - .text._ZN13MDNSResponder14_getNumAnswersEv - 0x4020e748 0x11 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x4020e748 MDNSResponder::_getNumAnswers() - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x0 - *fill* 0x4020e759 0x3 - .text._ZN9DNSServer17setErrorReplyCodeERK12DNSReplyCode - 0x4020e75c 0x6 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x4020e75c DNSServer::setErrorReplyCode(DNSReplyCode const&) - *fill* 0x4020e762 0x0 - *fill* 0x4020e762 0x2 - .text._ZN9DNSServer30requestIncludesOnlyOneQuestionEv - 0x4020e764 0x30 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - 0x4020e764 DNSServer::requestIncludesOnlyOneQuestion() - *fill* 0x4020e794 0x0 - *fill* 0x4020e794 0x0 - *fill* 0x4020e794 0x0 - *fill* 0x4020e794 0x0 - *fill* 0x4020e794 0x0 - .text._ZN8RCSwitch14setPulseLengthEi - 0x4020e794 0x5 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x4020e794 RCSwitch::setPulseLength(int) - *fill* 0x4020e799 0x3 - .text._ZN8RCSwitch17setRepeatTransmitEi - 0x4020e79c 0x4 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x4020e79c RCSwitch::setRepeatTransmit(int) - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - *fill* 0x4020e7a0 0x0 - .text._ZNK6String14StringIfHelperEv - 0x4020e7a0 0x2 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x4020e7a0 String::StringIfHelper() const - *fill* 0x4020e7a2 0x2 - .text._ZN17ESP8266HTTPUpdate12getLastErrorEv - 0x4020e7a4 0x4 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - 0x4020e7a4 ESP8266HTTPUpdate::getLastError() - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - *fill* 0x4020e7a8 0x0 - .text._ZN13TasmotaSerial14isValidGPIOpinEi - 0x4020e7a8 0x16 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x4020e7a8 TasmotaSerial::isValidGPIOpin(int) - *fill* 0x4020e7be 0x0 - *fill* 0x4020e7be 0x0 - *fill* 0x4020e7be 0x2 - .text._ZN13TasmotaSerial14hardwareSerialEv - 0x4020e7c0 0x5 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - 0x4020e7c0 TasmotaSerial::hardwareSerial() - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x0 - *fill* 0x4020e7c5 0x3 - .text._ZN13TasmotaModbus12ReceiveReadyEv - 0x4020e7c8 0x1e .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x4020e7c8 TasmotaModbus::ReceiveReady() - *fill* 0x4020e7e6 0x0 - *fill* 0x4020e7e6 0x2 - .text._ZN14Adafruit_SGP30C2Ev - 0x4020e7e8 0x2 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x4020e7e8 Adafruit_SGP30::Adafruit_SGP30() - 0x4020e7e8 Adafruit_SGP30::Adafruit_SGP30() - *fill* 0x4020e7ea 0x2 - .text._ZN14Adafruit_SGP3011generateCRCEPhh - 0x4020e7ec 0x3c .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - 0x4020e7ec Adafruit_SGP30::generateCRC(unsigned char*, unsigned char) - *fill* 0x4020e828 0x0 - *fill* 0x4020e828 0x0 - *fill* 0x4020e828 0x0 - *fill* 0x4020e828 0x0 - .text._ZN15Adafruit_CCS8119meas_mode3getEv - 0x4020e828 0x1d .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - 0x4020e828 Adafruit_CCS811::meas_mode::get() - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x0 - *fill* 0x4020e845 0x3 - .text._ZN12PubSubClient11writeStringEPKcPht - 0x4020e848 0x42 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4020e848 PubSubClient::writeString(char const*, unsigned char*, unsigned short) - *fill* 0x4020e88a 0x2 - .text._ZN12PubSubClient9connectedEv - 0x4020e88c 0x4b .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4020e88c PubSubClient::connected() - *fill* 0x4020e8d7 0x0 - *fill* 0x4020e8d7 0x0 - *fill* 0x4020e8d7 0x0 - *fill* 0x4020e8d7 0x0 - *fill* 0x4020e8d7 0x1 - .text._ZN12PubSubClient5stateEv - 0x4020e8d8 0x7 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4020e8d8 PubSubClient::state() - *fill* 0x4020e8df 0x1 - .text._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x4020e8e0 0x21 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x4020e8e0 std::function::function(std::function const&) - 0x4020e8e0 std::function::function(std::function const&) - *fill* 0x4020e901 0x0 - *fill* 0x4020e901 0x0 - *fill* 0x4020e901 0x3 - .text._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x4020e904 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e904 RequestHandler::canHandle(HTTPMethod, String) - .text._ZN14RequestHandler9canUploadE6String - 0x4020e908 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e908 RequestHandler::canUpload(String) - .text._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x4020e90c 0x4 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e90c RequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) - .text._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x4020e910 0x2 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e910 RequestHandler::upload(ESP8266WebServer&, String, HTTPUpload&) - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x0 - *fill* 0x4020e912 0x2 - .text._ZN16ESP8266WebServer18_addRequestHandlerEP14RequestHandler - 0x4020e914 0x13 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e914 ESP8266WebServer::_addRequestHandler(RequestHandler*) - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x0 - *fill* 0x4020e927 0x1 - .text._ZN16ESP8266WebServer4argsEv - 0x4020e928 0x5 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x4020e928 ESP8266WebServer::args() - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x0 - *fill* 0x4020e92d 0x3 - .text._ZN9IPAddress10fromStringEPKc - 0x4020e930 0x5e .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x4020e930 IPAddress::fromString(char const*) - *fill* 0x4020e98e 0x2 - .text._ZN9IPAddressaSEj - 0x4020e990 0x4 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - 0x4020e990 IPAddress::operator=(unsigned int) - *fill* 0x4020e994 0x0 - *fill* 0x4020e994 0x0 - *fill* 0x4020e994 0x0 - *fill* 0x4020e994 0x0 - *fill* 0x4020e994 0x0 - *fill* 0x4020e994 0x0 - .text._ZN5Print5writeEPKhj - 0x4020e994 0x3c .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x4020e994 Print::write(unsigned char const*, unsigned int) - *fill* 0x4020e9d0 0x0 - .text._ZN5Print5printEPK19__FlashStringHelper - 0x4020e9d0 0x49 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x4020e9d0 Print::print(__FlashStringHelper const*) - *fill* 0x4020ea19 0x0 - *fill* 0x4020ea19 0x3 - .text._ZN5Print5printEc - 0x4020ea1c 0x17 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - 0x4020ea1c Print::print(char) - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x0 - *fill* 0x4020ea33 0x1 - .text._ZN6Stream10setTimeoutEm - 0x4020ea34 0x4 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - 0x4020ea34 Stream::setTimeout(unsigned long) - *fill* 0x4020ea38 0x0 - .text._ZN12StreamString9availableEv - 0x4020ea38 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x4020ea38 StreamString::available() - .text._ZN12StreamString5flushEv - 0x4020ea44 0x2 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - 0x4020ea44 StreamString::flush() - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x0 - *fill* 0x4020ea46 0x2 - .text._ZN12UpdaterClass13_verifyHeaderEh - 0x4020ea48 0x33 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - 0x4020ea48 UpdaterClass::_verifyHeader(unsigned char) - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x0 - *fill* 0x4020ea7b 0x1 - .text._ZN6StringC2EOS_ - 0x4020ea7c 0x1c .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020ea7c String::String(String&&) - 0x4020ea7c String::String(String&&) - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - *fill* 0x4020ea98 0x0 - .text._ZNK6StringixEj - 0x4020ea98 0x15 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - 0x4020ea98 String::operator[](unsigned int) const - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x0 - *fill* 0x4020eaad 0x3 - .text.__cxa_guard_acquire - 0x4020eab0 0x1c .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x4020eab0 __cxa_guard_acquire - .text.__cxa_guard_release - 0x4020eacc 0x10 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - 0x4020eacc __cxa_guard_release - *fill* 0x4020eadc 0x0 - *fill* 0x4020eadc 0x0 - *fill* 0x4020eadc 0x0 - *fill* 0x4020eadc 0x0 - .text.initVariant - 0x4020eadc 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020eadc initVariant - *fill* 0x4020eade 0x2 - .text._Z24preloop_update_frequencyv - 0x4020eae0 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020eae0 preloop_update_frequency() - *fill* 0x4020eae2 0x0 - *fill* 0x4020eae2 0x0 - *fill* 0x4020eae2 0x0 - *fill* 0x4020eae2 0x2 - .text.__gdb_init - 0x4020eae4 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020eae4 gdb_init - 0x4020eae4 __gdb_init - *fill* 0x4020eae6 0x0 - *fill* 0x4020eae6 0x2 - .text.__gdb_do_break - 0x4020eae8 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - 0x4020eae8 __gdb_do_break - 0x4020eae8 gdb_do_break - *fill* 0x4020eaea 0x0 - *fill* 0x4020eaea 0x0 - *fill* 0x4020eaea 0x0 - *fill* 0x4020eaea 0x2 - .text.reverse 0x4020eaec 0x19 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - 0x4020eaec reverse - *fill* 0x4020eb05 0x0 - *fill* 0x4020eb05 0x0 - *fill* 0x4020eb05 0x0 - *fill* 0x4020eb05 0x3 - .text.__custom_crash_callback - 0x4020eb08 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - 0x4020eb08 custom_crash_callback - 0x4020eb08 __custom_crash_callback - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x0 - *fill* 0x4020eb0a 0x2 - .text.base64_init_encodestate - 0x4020eb0c 0xb .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - 0x4020eb0c base64_init_encodestate - *fill* 0x4020eb17 0x0 - *fill* 0x4020eb17 0x0 - *fill* 0x4020eb17 0x0 - *fill* 0x4020eb17 0x1 - .text.strchr 0x4020eb18 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020eb18 strchr - .text.strrchr 0x4020eb2c 0x19 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020eb2c strrchr - *fill* 0x4020eb45 0x0 - *fill* 0x4020eb45 0x0 - *fill* 0x4020eb45 0x3 - .text.strtok_r - 0x4020eb48 0x56 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020eb48 strtok_r - *fill* 0x4020eb9e 0x0 - *fill* 0x4020eb9e 0x0 - *fill* 0x4020eb9e 0x2 - .text.isalpha 0x4020eba0 0x14 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020eba0 isalpha - *fill* 0x4020ebb4 0x0 - .text.iscntrl 0x4020ebb4 0x1d .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ebb4 iscntrl - *fill* 0x4020ebd1 0x0 - *fill* 0x4020ebd1 0x3 - .text.isxdigit - 0x4020ebd4 0x1c .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ebd4 isxdigit - .text.tolower 0x4020ebf0 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ebf0 tolower - *fill* 0x4020ebfe 0x0 - *fill* 0x4020ebfe 0x2 - .text.toupper 0x4020ec00 0xe .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ec00 toupper - *fill* 0x4020ec0e 0x2 - .text.isblank 0x4020ec10 0x10 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ec10 isblank - *fill* 0x4020ec20 0x0 - .text.strlcpy 0x4020ec20 0x3b .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x4020ec20 strlcpy - *fill* 0x4020ec5b 0x0 - *fill* 0x4020ec5b 0x0 - *fill* 0x4020ec5b 0x1 - .text._Z9strnlen_PPKcj - 0x4020ec5c 0x29 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4020ec5c strnlen_P(char const*, unsigned int) - *fill* 0x4020ec85 0x3 - .text._Z8strstr_PPKcS0_ - 0x4020ec88 0x57 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4020ec88 strstr_P(char const*, char const*) - *fill* 0x4020ecdf 0x1 - .text._Z8memcpy_PPvPKvj - 0x4020ece0 0x24 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4020ece0 memcpy_P(void*, void const*, unsigned int) - .text._Z9strncpy_PPcPKcj - 0x4020ed04 0x2e .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4020ed04 strncpy_P(char*, char const*, unsigned int) - *fill* 0x4020ed32 0x2 - .text._Z9strncat_PPcPKcj - 0x4020ed34 0x4a .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - 0x4020ed34 strncat_P(char*, char const*, unsigned int) - *fill* 0x4020ed7e 0x0 - *fill* 0x4020ed7e 0x0 - *fill* 0x4020ed7e 0x0 - *fill* 0x4020ed7e 0x2 - .text.uart_ignore_char - 0x4020ed80 0x2 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x0 - *fill* 0x4020ed82 0x2 - .text.uart_get_baudrate - 0x4020ed84 0x6 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4020ed84 uart_get_baudrate - *fill* 0x4020ed8a 0x0 - *fill* 0x4020ed8a 0x0 - *fill* 0x4020ed8a 0x2 - .text.uart_tx_enabled - 0x4020ed8c 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4020ed8c uart_tx_enabled - *fill* 0x4020ed93 0x1 - .text.uart_rx_enabled - 0x4020ed94 0x7 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - 0x4020ed94 uart_rx_enabled - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x0 - *fill* 0x4020ed9b 0x1 - .text._ZNSt8functionIFvvEE4swapERS1_ - 0x4020ed9c 0x28 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - 0x4020ed9c std::function::swap(std::function&) - *fill* 0x4020edc4 0x0 - *fill* 0x4020edc4 0x0 - *fill* 0x4020edc4 0x0 - .text._ZN10WiFiServer5writeEh - 0x4020edc4 0x1b .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4020edc4 WiFiServer::write(unsigned char) - *fill* 0x4020eddf 0x1 - .text._ZN10WiFiServer5writeEPKhj - 0x4020ede0 0x4 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4020ede0 WiFiServer::write(unsigned char const*, unsigned int) - .text._ZN10WiFiServer10_s_discardEPvP13ClientContext - 0x4020ede4 0x2 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x4020ede4 WiFiServer::_s_discard(void*, ClientContext*) - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x0 - *fill* 0x4020ede6 0x2 - .text._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x4020ede8 0x4 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020ede8 TransportTraits::verify(WiFiClient&, char const*) - *fill* 0x4020edec 0x0 - *fill* 0x4020edec 0x0 - .text._ZNKSt14default_deleteI10WiFiClientEclEPS0_$isra$5 - 0x4020edec 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x4020ee01 0x3 - .text._ZNKSt14default_deleteI15TransportTraitsEclEPS0_$isra$6 - 0x4020ee04 0x15 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x4020ee19 0x0 - *fill* 0x4020ee19 0x0 - *fill* 0x4020ee19 0x0 - *fill* 0x4020ee19 0x3 - .text._ZN10HTTPClient9connectedEv - 0x4020ee1c 0x3c .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020ee1c HTTPClient::connected() - *fill* 0x4020ee58 0x0 - *fill* 0x4020ee58 0x0 - *fill* 0x4020ee58 0x0 - .text._ZN10HTTPClient9useHTTP10Eb - 0x4020ee58 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020ee58 HTTPClient::useHTTP10(bool) - *fill* 0x4020ee5d 0x3 - .text._ZN10HTTPClient7getSizeEv - 0x4020ee60 0x5 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x4020ee60 HTTPClient::getSize() - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x0 - *fill* 0x4020ee65 0x3 - .text._Z13__get_rf_modev - 0x4020ee68 0x4 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x4020ee68 __get_rf_mode() - *fill* 0x4020ee6c 0x0 - .text._Z22__run_user_rf_pre_initv - 0x4020ee6c 0x2 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - 0x4020ee6c __run_user_rf_pre_init() - *fill* 0x4020ee6e 0x0 - *.pioenvs/*/lib*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *.pioenvs\\*\\lib\*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *.pioenvs/*/lib/*.a:(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *.pioenvs\\*\\src\\*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *fill* 0x4020ee6e 0x2 - .text.timer1_enable - 0x4020ee70 0x37 .pioenvs\sonoff\src\core_esp8266_timer.c.o - 0x4020ee78 timer1_enable - *fill* 0x4020eea7 0x1 - .text.__pinMode - 0x4020eea8 0x393 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - 0x39b (size before relaxing) - 0x4020eec4 __pinMode - 0x4020eec4 pinMode - *fill* 0x4020f23b 0x1 - .text.initPins - 0x4020f23c 0x78 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - 0x8c (size before relaxing) - 0x4020f250 initPins - .text.pwm_get_mask - 0x4020f2b4 0x3b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x4020f2bc pwm_get_mask - *fill* 0x4020f2ef 0x1 - .text.prep_pwm_steps - 0x4020f2f0 0x132 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x152 (size before relaxing) - 0x4020f304 prep_pwm_steps - *fill* 0x4020f422 0x2 - .text.pwm_start_timer - 0x4020f424 0x48 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x54 (size before relaxing) - 0x4020f434 pwm_start_timer - .text.__analogWrite - 0x4020f46c 0xa8 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0xe0 (size before relaxing) - 0x4020f46c __analogWrite - 0x4020f46c analogWrite - .text.__analogWriteFreq - 0x4020f514 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x1f (size before relaxing) - 0x4020f514 __analogWriteFreq - 0x4020f514 analogWriteFreq - *fill* 0x4020f52b 0x1 - .text.__analogWriteRange - 0x4020f52c 0x17 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x1f (size before relaxing) - 0x4020f52c analogWriteRange - 0x4020f52c __analogWriteRange - *fill* 0x4020f543 0x1 - .text._Z22HandlePreflightRequestv - 0x4020f544 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x16b (size before relaxing) - 0x4020f568 HandlePreflightRequest() - *fill* 0x4020f61f 0x1 - .text._ZL9WebGetArgPKcPcj - 0x4020f620 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6d (size before relaxing) - *fill* 0x4020f669 0x3 - .text._Z13Tx20StartReadv - 0x4020f66c 0x187 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x197 (size before relaxing) - 0x4020f68c Tx20StartRead() - *fill* 0x4020f7f3 0x1 - .text._ZN5Print5writeEPKc - 0x4020f7f4 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x32 (size before relaxing) - 0x4020f7f4 Print::write(char const*) - *fill* 0x4020f822 0x2 - .text._ZN12PubSubClientD2Ev - 0x4020f824 0x27 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37 (size before relaxing) - 0x4020f824 PubSubClient::~PubSubClient() - 0x4020f824 PubSubClient::~PubSubClient() - *fill* 0x4020f84b 0x1 - .text._ZN12PubSubClientD0Ev - 0x4020f84c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x4020f84c PubSubClient::~PubSubClient() - *fill* 0x4020f869 0x3 - .text._ZN11ArduinoJson9JsonArray7invalidEv - 0x4020f86c 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x4020f874 ArduinoJson::JsonArray::invalid() - *fill* 0x4020f8ab 0x1 - .text._ZN11ArduinoJson10JsonObject7invalidEv - 0x4020f8ac 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x4020f8b4 ArduinoJson::JsonObject::invalid() - *fill* 0x4020f8eb 0x1 - .text._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x4020f8ec 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37 (size before relaxing) - 0x4020f8ec ArduinoJson::JsonBuffer::createArray() - *fill* 0x4020f917 0x1 - .text._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x4020f918 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37 (size before relaxing) - 0x4020f918 ArduinoJson::JsonBuffer::createObject() - *fill* 0x4020f943 0x1 - .text._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x4020f944 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3b (size before relaxing) - 0x4020f948 ArduinoJson::JsonVariant::variantAsString() const - *fill* 0x4020f97b 0x1 - .text._Z6FormatPcPKci - 0x4020f97c 0x105 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x175 (size before relaxing) - 0x4020f98c Format(char*, char const*, int) - *fill* 0x4020fa81 0x3 - .text._Z9GetOtaUrlPcj - 0x4020fa84 0x87 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xaf (size before relaxing) - 0x4020fa94 GetOtaUrl(char*, unsigned int) - *fill* 0x4020fb0b 0x1 - .text._Z10GetTopic_PPchS_PKc - 0x4020fb0c 0x29f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x413 (size before relaxing) - 0x4020fb58 GetTopic_P(char*, unsigned char, char*, char const*) - *fill* 0x4020fdab 0x1 - .text._Z16SetLatchingRelaymh - 0x4020fdac 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x95 (size before relaxing) - 0x4020fdbc SetLatchingRelay(unsigned long, unsigned char) - *fill* 0x4020fe39 0x3 - .text._Z11SetLedPowerh - 0x4020fe3c 0x32 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3a (size before relaxing) - 0x4020fe40 SetLedPower(unsigned char) - *fill* 0x4020fe6e 0x2 - .text._Z11GetFanspeedv - 0x4020fe70 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4020fe74 GetFanspeed() - .text._Z13SetPulseTimerht - 0x4020fe88 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x65 (size before relaxing) - 0x4020fe8c SetPulseTimer(unsigned char, unsigned short) - *fill* 0x4020fee5 0x3 - .text._Z16MqttShowPWMStatev - 0x4020fee8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x4020fefc MqttShowPWMState() - *fill* 0x4020ff75 0x3 - .text._Z17GpioSwitchPinModeh - 0x4020ff78 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x75 (size before relaxing) - 0x4020ff7c GpioSwitchPinMode(unsigned char) - *fill* 0x4020ffe1 0x3 - .text._Z17GetRtcSettingsCrcv - 0x4020ffe4 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4020ffe8 GetRtcSettingsCrc() - .text._Z15RtcSettingsSavev - 0x40210004 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x59 (size before relaxing) - 0x4021000c RtcSettingsSave() - *fill* 0x40210041 0x3 - .text._Z13OsWatchTickerv - 0x40210044 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x58 (size before relaxing) - 0x4021004c OsWatchTicker() - .text._Z15RtcSettingsLoadv - 0x40210080 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa1 (size before relaxing) - 0x40210080 RtcSettingsLoad() - *fill* 0x402100f5 0x3 - .text._Z15GetRtcRebootCrcv - 0x402100f8 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402100fc GetRtcRebootCrc() - .text._Z13RtcRebootSavev - 0x40210118 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x59 (size before relaxing) - 0x4021011c RtcRebootSave() - *fill* 0x40210151 0x3 - .text._Z13RtcRebootLoadv - 0x40210154 0x44 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x68 (size before relaxing) - 0x40210154 RtcRebootLoad() - .text._Z16SetFlashModeDoutv - 0x40210198 0x7c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xac (size before relaxing) - 0x40210198 SetFlashModeDout() - .text._Z18SettingsBufferFreev - 0x40210214 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x40210218 SettingsBufferFree() - *fill* 0x40210239 0x3 - .text._Z14GetSettingsCrcv - 0x4021023c 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37 (size before relaxing) - 0x40210240 GetSettingsCrc() - *fill* 0x4021026f 0x1 - .text._Z19SettingsEraseConfigv - 0x40210270 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x40210270 SettingsEraseConfig() - *fill* 0x402102a6 0x2 - .text._Z19SettingsDefaultSet1v - 0x402102a8 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x402102b0 SettingsDefaultSet1() - *fill* 0x402102e5 0x3 - .text._Z24SettingsDefaultSet_5_8_1v - 0x402102e8 0x36 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3a (size before relaxing) - 0x402102e8 SettingsDefaultSet_5_8_1() - *fill* 0x4021031e 0x2 - .text._Z25SettingsDefaultSet_5_10_1v - 0x40210320 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x61 (size before relaxing) - 0x40210320 SettingsDefaultSet_5_10_1() - *fill* 0x4021037d 0x3 - .text._Z16SettingsResetStdv - 0x40210380 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x40210384 SettingsResetStd() - *fill* 0x402103c6 0x2 - .text._Z16SettingsResetDstv - 0x402103c8 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x402103c8 SettingsResetDst() - *fill* 0x40210409 0x3 - .text._Z26SettingsDefaultSet_5_13_1cv - 0x4021040c 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21 (size before relaxing) - 0x4021040c SettingsDefaultSet_5_13_1c() - *fill* 0x40210421 0x3 - .text._Z11OsWatchInitv - 0x40210424 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5b (size before relaxing) - 0x40210434 OsWatchInit() - *fill* 0x4021046f 0x1 - .text._Z11OsWatchLoopv - 0x40210470 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20 (size before relaxing) - 0x40210470 OsWatchLoop() - .text._Z14GetResetReasonv - 0x40210488 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5b (size before relaxing) - 0x4021048c GetResetReason() - *fill* 0x402104cb 0x1 - .text._Z9strchrspnPKci - 0x402104cc 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x27 (size before relaxing) - 0x402104cc strchrspn(char const*, int) - *fill* 0x402104eb 0x1 - .text._Z12CharToDoublePc - 0x402104ec 0xfb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x153 (size before relaxing) - 0x402104f0 CharToDouble(char*) - *fill* 0x402105e7 0x1 - .text._Z8dtostrfddhPc - 0x402105e8 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x71 (size before relaxing) - 0x402105e8 dtostrfd(double, unsigned char, char*) - *fill* 0x4021063d 0x3 - .text._Z8UnescapePcPt - 0x40210640 0xad .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40210644 Unescape(char*, unsigned short*) - *fill* 0x402106ed 0x3 - .text._Z11RemoveSpacePc - 0x402106f0 0x3d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x45 (size before relaxing) - 0x402106f0 RemoveSpace(char*) - *fill* 0x4021072d 0x3 - .text._Z9UpperCasePcPKc - 0x40210730 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3e (size before relaxing) - 0x40210730 UpperCase(char*, char const*) - *fill* 0x4021076a 0x2 - .text._Z11UpperCase_PPcPKc - 0x4021076c 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x4021076c UpperCase_P(char*, char const*) - .text._Z5LTrimPc - 0x402107b8 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2b (size before relaxing) - 0x402107b8 LTrim(char*) - *fill* 0x402107dc 0x0 - .text._Z4TrimPc - 0x402107dc 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x402107dc Trim(char*) - *fill* 0x4021083b 0x1 - .text._Z6subStrPcS_PKci - 0x4021083c 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x73 (size before relaxing) - 0x4021083c subStr(char*, char*, char const*, int) - *fill* 0x4021089f 0x1 - .text._Z19NoAlNumToUnderscorePcPKc - 0x402108a0 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x54 (size before relaxing) - 0x402108a0 NoAlNumToUnderscore(char*, char const*) - .text._Z8ShortcutPKc - 0x402108f0 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x43 (size before relaxing) - 0x402108f0 Shortcut(char const*) - *fill* 0x4021092f 0x1 - .text._Z7ParseIpPjPKc - 0x40210930 0x5a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x66 (size before relaxing) - 0x40210930 ParseIp(unsigned int*, char const*) - *fill* 0x4021098a 0x2 - .text._Z19SettingsDefaultSet2v - 0x4021098c 0x5c2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x71e (size before relaxing) - 0x40210ad4 SettingsDefaultSet2() - *fill* 0x40210f4e 0x2 - .text._Z12NewerVersionPc - 0x40210f50 0xc6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xfa (size before relaxing) - 0x40210f50 NewerVersion(char*) - *fill* 0x40211016 0x2 - .text._Z14GetPowerDevicePchjh - 0x40211018 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x40211020 GetPowerDevice(char*, unsigned char, unsigned int, unsigned char) - *fill* 0x4021106f 0x1 - .text._Z11ConvertTempf - 0x40211070 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x77 (size before relaxing) - 0x4021107c ConvertTemp(float) - *fill* 0x402110c7 0x1 - .text._Z8TempUnitv - 0x402110c8 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x15 (size before relaxing) - 0x402110c8 TempUnit() - *fill* 0x402110d9 0x3 - .text._Z12ConvertPressf - 0x402110dc 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x53 (size before relaxing) - 0x402110e4 ConvertPress(float) - *fill* 0x4021111b 0x1 - .text._Z15SetGlobalValuesff - 0x4021111c 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021112c SetGlobalValues(float, float) - *fill* 0x40211142 0x2 - .text._Z17ResetGlobalValuesv - 0x40211144 0x26 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3a (size before relaxing) - 0x40211144 ResetGlobalValues() - *fill* 0x4021116a 0x2 - .text._Z14FastPrecisePowdd - 0x4021116c 0xe1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x115 (size before relaxing) - 0x40211174 FastPrecisePow(double, double) - *fill* 0x4021124d 0x3 - .text._Z7SqrtIntj - 0x40211250 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3d (size before relaxing) - 0x40211250 SqrtInt(unsigned int) - *fill* 0x40211289 0x3 - .text._Z12RoundSqrtIntj - 0x4021128c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21 (size before relaxing) - 0x4021128c RoundSqrtInt(unsigned int) - *fill* 0x402112a9 0x3 - .text._Z14GetTextIndexedPcjtPKc - 0x402112ac 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x64 (size before relaxing) - 0x402112ac GetTextIndexed(char*, unsigned int, unsigned short, char const*) - .text._Z14GetCommandCodePcjPKcS1_ - 0x4021130c 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x85 (size before relaxing) - 0x4021130c GetCommandCode(char*, unsigned int, char const*, char const*) - *fill* 0x4021138d 0x3 - .text._Z14GetStateNumberPc - 0x40211390 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa3 (size before relaxing) - 0x402113a4 GetStateNumber(char*) - *fill* 0x4021140f 0x1 - .text._Z13SerialSendRawPc - 0x40211410 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x65 (size before relaxing) - 0x40211410 SerialSendRaw(char*) - *fill* 0x4021145d 0x3 - .text._Z9ValidGPIOhh - 0x40211460 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2f (size before relaxing) - 0x40211460 ValidGPIO(unsigned char, unsigned char) - *fill* 0x4021148b 0x1 - .text._Z15TimePassedSincem - 0x4021148c 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2b (size before relaxing) - 0x4021148c TimePassedSince(unsigned long) - *fill* 0x402114ab 0x1 - .text._Z13GetPulseTimerh - 0x402114ac 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f (size before relaxing) - 0x402114b0 GetPulseTimer(unsigned char) - *fill* 0x402114f7 0x1 - .text._Z11TimeReachedm - 0x402114f8 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1f (size before relaxing) - 0x402114f8 TimeReached(unsigned long) - *fill* 0x4021150f 0x1 - .text._Z19SetNextTimeIntervalRmm - 0x40211510 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x56 (size before relaxing) - 0x40211510 SetNextTimeInterval(unsigned long&, unsigned long) - *fill* 0x40211556 0x2 - .text._Z11GetFeaturesv - 0x40211558 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211578 GetFeatures() - *fill* 0x4021159a 0x2 - .text._Z17WifiConfigCounterv - 0x4021159c 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402115a0 WifiConfigCounter() - *fill* 0x402115b3 0x1 - .text._Z16WiFiSetSleepModev - 0x402115b4 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x402115b8 WiFiSetSleepMode() - .text._Z12WifiSetStateh - 0x402115dc 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x402115e4 WifiSetState(unsigned char) - *fill* 0x4021161e 0x2 - .text._Z9WifiStatev - 0x40211620 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5b (size before relaxing) - 0x40211624 WifiState() - *fill* 0x40211667 0x1 - .text._Z11WifiConnectv - 0x40211668 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x70 (size before relaxing) - 0x40211678 WifiConnect() - .text._Z10EspRestartv - 0x402116bc 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x402116bc EspRestart() - *fill* 0x402116d1 0x3 - .text._Z7I2cScanPcj - 0x402116d4 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xcc (size before relaxing) - 0x402116e8 I2cScan(char*, unsigned int) - .text._Z19GetBuildDateAndTimev - 0x40211774 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x10b (size before relaxing) - 0x40211788 GetBuildDateAndTime() - *fill* 0x4021184f 0x1 - .text._Z11GetTimeZonev - 0x40211850 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b (size before relaxing) - 0x4021185c GetTimeZone() - *fill* 0x402118ab 0x1 - .text._Z7GetTimei - 0x402118ac 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6d (size before relaxing) - 0x402118c0 GetTime(int) - *fill* 0x4021190d 0x3 - .text._Z22GetMinutesPastMidnightv - 0x40211910 0x1f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211914 GetMinutesPastMidnight() - *fill* 0x4021192f 0x1 - .text._Z9BreakTimejR6TIME_T - 0x40211930 0x17d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b5 (size before relaxing) - 0x4021193c BreakTime(unsigned int, TIME_T&) - *fill* 0x40211aad 0x3 - .text._Z14GetDateAndTimeh - 0x40211ab0 0xcc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x108 (size before relaxing) - 0x40211ab8 GetDateAndTime(unsigned char) - .text._Z9GetUptimev - 0x40211b7c 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7d (size before relaxing) - 0x40211b80 GetUptime() - *fill* 0x40211bd5 0x3 - .text._Z16GetMinutesUptimev - 0x40211bd8 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5b (size before relaxing) - 0x40211bd8 GetMinutesUptime() - *fill* 0x40211c23 0x1 - .text._Z8MakeTimeR6TIME_T - 0x40211c24 0xf8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x10c (size before relaxing) - 0x40211c30 MakeTime(TIME_T&) - .text._Z10RuleToTime8TimeRulei - 0x40211d1c 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa2 (size before relaxing) - 0x40211d20 RuleToTime(TimeRule, int) - *fill* 0x40211daa 0x2 - .text._Z11MidnightNowv - 0x40211dac 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40211db0 MidnightNow() - *fill* 0x40211dbf 0x1 - .text._Z7RtcInitv - 0x40211dc0 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x40211dc8 RtcInit() - *fill* 0x40211e1d 0x3 - .text._Z12SetSeriallogh - 0x40211e20 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25 (size before relaxing) - 0x40211e28 SetSeriallog(unsigned char) - *fill* 0x40211e41 0x3 - .text._Z6GetLoghPPcPj - 0x40211e44 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x69 (size before relaxing) - 0x40211e4c GetLog(unsigned char, char**, unsigned int*) - *fill* 0x40211ea9 0x3 - .text._Z16PollDnsWebserverv - 0x40211eac 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x38 (size before relaxing) - 0x40211eb0 PollDnsWebserver() - *fill* 0x40211ed1 0x3 - .text._Z9SetHeaderv - 0x40211ed4 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x115 (size before relaxing) - 0x40211eec SetHeader() - *fill* 0x40211f79 0x3 - .text._Z15WebAuthenticatev - 0x40211f7c 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x40211f80 WebAuthenticate() - *fill* 0x40211fa7 0x1 - .text._Z10htmlEscape6String - 0x40211fa8 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x207 (size before relaxing) - 0x40211fd4 htmlEscape(String) - *fill* 0x402120c7 0x1 - .text._Z14ValidIpAddress6String - 0x402120c8 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x55 (size before relaxing) - 0x402120c8 ValidIpAddress(String) - *fill* 0x40212115 0x3 - .text._Z9UrlEncodeRK6String - 0x40212118 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x84 (size before relaxing) - 0x40212118 UrlEncode(String const&) - .text._Z15MqttIsConnectedv - 0x40212178 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x26 (size before relaxing) - 0x4021217c MqttIsConnected() - *fill* 0x4021219a 0x2 - .text._Z14MqttDisconnectv - 0x4021219c 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x4021219c MqttDisconnect() - *fill* 0x402121b1 0x3 - .text._Z16MqttSubscribeLibPc - 0x402121b4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31 (size before relaxing) - 0x402121b4 MqttSubscribeLib(char*) - *fill* 0x402121d5 0x3 - .text._Z14MqttPublishLibPKch - 0x402121d8 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x42 (size before relaxing) - 0x402121d8 MqttPublishLib(char const*, unsigned char) - *fill* 0x40212206 0x2 - .text._Z8MqttLoopv - 0x40212208 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x40212208 MqttLoop() - *fill* 0x4021221d 0x3 - .text._Z17EnergyUpdateTodayv - 0x40212220 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa7 (size before relaxing) - 0x40212238 EnergyUpdateToday() - *fill* 0x402122b3 0x1 - .text._Z15EnergySaveStatev - 0x402122b4 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3d (size before relaxing) - 0x402122b4 EnergySaveState() - *fill* 0x402122e1 0x3 - .text._Z10EnergyShowh - 0x402122e4 0x4aa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x626 (size before relaxing) - 0x40212354 EnergyShow(unsigned char) - *fill* 0x4021278e 0x2 - .text._Z12LightDiPulseh - 0x40212790 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x40212794 LightDiPulse(unsigned char) - .text._Z14LightDckiPulseh - 0x402127d8 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x402127dc LightDckiPulse(unsigned char) - .text._Z16LightMy92x1Writeh - 0x40212820 0x89 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa9 (size before relaxing) - 0x40212820 LightMy92x1Write(unsigned char) - *fill* 0x402128a9 0x3 - .text._Z15LightMy92x1Initv - 0x402128ac 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x99 (size before relaxing) - 0x402128b4 LightMy92x1Init() - *fill* 0x40212921 0x3 - .text._Z15LightMy92x1Dutyhhhhh - 0x40212924 0xbc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdc (size before relaxing) - 0x40212928 LightMy92x1Duty(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) - .text._Z9LightInitv - 0x402129e0 0x19e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20a (size before relaxing) - 0x402129fc LightInit() - *fill* 0x40212b7e 0x2 - .text._Z17LightSetColorTempt - 0x40212b80 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9e (size before relaxing) - 0x40212b80 LightSetColorTemp(unsigned short) - *fill* 0x40212c0e 0x2 - .text._Z17LightGetColorTempv - 0x40212c10 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x74 (size before relaxing) - 0x40212c10 LightGetColorTemp() - .text._Z14LightSetDimmerh - 0x40212c74 0xf2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x12e (size before relaxing) - 0x40212c7c LightSetDimmer(unsigned char) - *fill* 0x40212d66 0x2 - .text._Z13LightSetColorv - 0x40212d68 0xc2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xf6 (size before relaxing) - 0x40212d70 LightSetColor() - *fill* 0x40212e2a 0x2 - .text._Z13LightGetColorhPc - 0x40212e2c 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb7 (size before relaxing) - 0x40212e34 LightGetColor(unsigned char, char*) - *fill* 0x40212ec3 0x1 - .text._Z9LightFadev - 0x40212ec4 0xb5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc5 (size before relaxing) - 0x40212ecc LightFade() - *fill* 0x40212f79 0x3 - .text._Z10LightWheelh - 0x40212f7c 0xc8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xe4 (size before relaxing) - 0x40212f80 LightWheel(unsigned char) - .text._Z15LightCycleColora - 0x40213044 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6d (size before relaxing) - 0x40213048 LightCycleColor(signed char) - *fill* 0x40213095 0x3 - .text._Z16LightRandomColorv - 0x40213098 0x5c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7c (size before relaxing) - 0x40213098 LightRandomColor() - .text._Z13LightRgbToHsbv - 0x402130f4 0x1c5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x249 (size before relaxing) - 0x40213110 LightRgbToHsb() - *fill* 0x402132b9 0x3 - .text._Z13LightHsbToRgbv - 0x402132bc 0x1a8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x220 (size before relaxing) - 0x402132c8 LightHsbToRgb() - .text._Z11LightGetHsbPfS_S_b - 0x40213464 0x70 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x94 (size before relaxing) - 0x40213468 LightGetHsb(float*, float*, float*, bool) - .text._Z10LightStateh - 0x402134d4 0x3a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4be (size before relaxing) - 0x40213510 LightState(unsigned char) - *fill* 0x40213876 0x2 - .text._Z13MqttShowStatev - 0x40213878 0x1b1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x269 (size before relaxing) - 0x4021389c MqttShowState() - *fill* 0x40213a29 0x3 - .text._Z15LightColorEntryPch - 0x40213a2c 0x1af .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1eb (size before relaxing) - 0x40213a44 LightColorEntry(char*, unsigned char) - *fill* 0x40213bdb 0x1 - .text._Z19rf_decode_and_writePhj - 0x40213bdc 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8d (size before relaxing) - 0x40213bdc rf_decode_and_write(unsigned char*, unsigned int) - *fill* 0x40213c4d 0x3 - .text._Z39rf_glue_remnant_with_new_data_and_writePKhPhj - 0x40213c50 0x97 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xcf (size before relaxing) - 0x40213c50 rf_glue_remnant_with_new_data_and_write(unsigned char const*, unsigned char*, unsigned int) - *fill* 0x40213ce7 0x1 - .text._Z19rf_search_and_writePhj - 0x40213ce8 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x79 (size before relaxing) - 0x40213ce8 rf_search_and_write(unsigned char*, unsigned int) - *fill* 0x40213d4d 0x3 - .text._Z14rf_erase_flashv - 0x40213d50 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x45 (size before relaxing) - 0x40213d50 rf_erase_flash() - *fill* 0x40213d81 0x3 - .text._Z15SnfBrUpdateInitv - 0x40213d84 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x35 (size before relaxing) - 0x40213d84 SnfBrUpdateInit() - *fill* 0x40213da1 0x3 - .text._Z23SonoffBridgeSendCommandh - 0x40213da4 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x40213da4 SonoffBridgeSendCommand(unsigned char) - *fill* 0x40213dd5 0x3 - .text._Z20SonoffBridgeSendCodej - 0x40213dd8 0x71 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb1 (size before relaxing) - 0x40213dd8 SonoffBridgeSendCode(unsigned int) - *fill* 0x40213e49 0x3 - .text._Z16SonoffBridgeSendhh - 0x40213e4c 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdd (size before relaxing) - 0x40213e4c SonoffBridgeSend(unsigned char, unsigned char) - *fill* 0x40213efd 0x3 - .text._Z17SonoffBridgeLearnh - 0x40213f00 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x40213f0c SonoffBridgeLearn(unsigned char) - *fill* 0x40213f4f 0x1 - .text._Z19SonoffBridgeCommandv - 0x40213f50 0x488 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4f8 (size before relaxing) - 0x40213f9c SonoffBridgeCommand() - .text._Z16SonoffBridgeInitv - 0x402143d8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25 (size before relaxing) - 0x402143d8 SonoffBridgeInit() - *fill* 0x402143f5 0x3 - .text._Z16SerialBridgeInitv - 0x402143f8 0x7e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9a (size before relaxing) - 0x40214400 SerialBridgeInit() - *fill* 0x40214476 0x2 - .text._Z19SerialBridgeCommandv - 0x40214478 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x15f (size before relaxing) - 0x4021448c SerialBridgeCommand() - *fill* 0x40214587 0x1 - .text._Z17JulianischesDatumv - 0x40214588 0x10f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x167 (size before relaxing) - 0x4021459c JulianischesDatum() - *fill* 0x40214697 0x1 - .text._Z4InPid - 0x40214698 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa3 (size before relaxing) - 0x402146a0 InPi(double) - *fill* 0x40214717 0x1 - .text._Z3epsd 0x40214718 0xe3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x113 (size before relaxing) - 0x40214744 eps(double) - *fill* 0x402147fb 0x1 - .text._Z21BerechneZeitgleichungPdd - 0x402147fc 0x36b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49b (size before relaxing) - 0x40214860 BerechneZeitgleichung(double*, double) - *fill* 0x40214b67 0x1 - .text._Z12DuskTillDawnPhS_S_S_ - 0x40214b68 0x4a5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x62d (size before relaxing) - 0x40214b84 DuskTillDawn(unsigned char*, unsigned char*, unsigned char*, unsigned char*) - *fill* 0x4021500d 0x3 - .text._Z17ApplyTimerOffsetsP5Timer - 0x40215010 0xdb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdf (size before relaxing) - 0x40215018 ApplyTimerOffsets(Timer*) - *fill* 0x402150eb 0x1 - .text._Z6GetSunh - 0x402150ec 0x4d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x61 (size before relaxing) - 0x402150f0 GetSun(unsigned char) - *fill* 0x40215139 0x3 - .text._Z13GetSunMinutesh - 0x4021513c 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40 (size before relaxing) - 0x4021513c GetSunMinutes(unsigned char) - .text._Z20TimerSetRandomWindowh - 0x40215178 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x57 (size before relaxing) - 0x4021517c TimerSetRandomWindow(unsigned char) - *fill* 0x402151c7 0x1 - .text._Z21TimerSetRandomWindowsv - 0x402151c8 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x24 (size before relaxing) - 0x402151c8 TimerSetRandomWindows() - .text._Z13PrepShowTimerh - 0x402151e8 0x1ea .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21e (size before relaxing) - 0x40215210 PrepShowTimer(unsigned char) - *fill* 0x402153d2 0x2 - .text._Z9RulesInitv - 0x402153d4 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5d (size before relaxing) - 0x402153d8 RulesInit() - *fill* 0x40215429 0x3 - .text._Z13RulesSetPowerv - 0x4021542c 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x15 (size before relaxing) - 0x40215430 RulesSetPower() - *fill* 0x4021543d 0x3 - .text._Z12RulesCommandv - 0x40215440 0x670 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7a4 (size before relaxing) - 0x40215468 RulesCommand() - .text._Z18TuyaModuleSelectedv - 0x40215ab0 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x40215ab0 TuyaModuleSelected() - .text._Z6RfInitv - 0x40215ad8 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x40215adc RfInit() - *fill* 0x40215b13 0x1 - .text._Z8XdrvCallh - 0x40215b14 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x40215b18 XdrvCall(unsigned char) - *fill* 0x40215b59 0x3 - .text._Z11XdrvCommandhPctS_tst - 0x40215b5c 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x35 (size before relaxing) - 0x40215b5c XdrvCommand(unsigned char, char*, unsigned short, char*, unsigned short, short, unsigned short) - *fill* 0x40215b89 0x3 - .text._Z12XdrvMqttDataPctS_t - 0x40215b8c 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x40215b8c XdrvMqttData(char*, unsigned short, char*, unsigned short) - *fill* 0x40215bad 0x3 - .text._Z16XdrvRulesProcessv - 0x40215bb0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40215bb0 XdrvRulesProcess() - .text._Z11ShowFreeMemPKc - 0x40215bc4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31 (size before relaxing) - 0x40215bc4 ShowFreeMem(char const*) - *fill* 0x40215be5 0x3 - .text._Z8ShowPageR6Stringb - 0x40215be8 0x26b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x41f (size before relaxing) - 0x40215c30 ShowPage(String&, bool) - *fill* 0x40215e53 0x1 - .text._Z8ShowPageR6String - 0x40215e54 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40215e54 ShowPage(String&) - .text._Z26HandleLoggingConfigurationv$part$100 - 0x40215e68 0x424 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6e4 (size before relaxing) - .text._Z24HandleOtherConfigurationv$part$101 - 0x4021628c 0x30e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4c9 (size before relaxing) - *fill* 0x4021659a 0x2 - .text._Z23HandleMqttConfigurationv$part$112 - 0x4021659c 0x219 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3c1 (size before relaxing) - *fill* 0x402167b5 0x3 - .text._Z15HandleWifiLoginv - 0x402167b8 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x402167c4 HandleWifiLogin() - .text._Z13HlwEvery200msv - 0x40216820 0x1d9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x229 (size before relaxing) - 0x4021686c HlwEvery200ms() - *fill* 0x402169f9 0x3 - .text._Z14HlwEverySecondv - 0x402169fc 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x79 (size before relaxing) - 0x40216a00 HlwEverySecond() - *fill* 0x40216a51 0x3 - .text._Z10HlwSnsInitv - 0x40216a54 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18f (size before relaxing) - 0x40216a74 HlwSnsInit() - *fill* 0x40216b73 0x1 - .text._Z10HlwDrvInitv - 0x40216b74 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x78 (size before relaxing) - 0x40216b78 HlwDrvInit() - .text._Z10HlwCommandv - 0x40216be0 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x147 (size before relaxing) - 0x40216be4 HlwCommand() - *fill* 0x40216cc7 0x1 - .text._Z6Xnrg01h - 0x40216cc8 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x89 (size before relaxing) - 0x40216cc8 Xnrg01(unsigned char) - *fill* 0x40216d31 0x3 - .text._Z14CseEverySecondv - 0x40216d34 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x99 (size before relaxing) - 0x40216d40 CseEverySecond() - *fill* 0x40216db1 0x3 - .text._Z10CseDrvInitv - 0x40216db4 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x46 (size before relaxing) - 0x40216dc0 CseDrvInit() - *fill* 0x40216df2 0x2 - .text._Z10CseCommandv - 0x40216df4 0xd4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x108 (size before relaxing) - 0x40216e00 CseCommand() - .text._Z8PzemSendh - 0x40216ec8 0x5e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x66 (size before relaxing) - 0x40216ed0 PzemSend(unsigned char) - *fill* 0x40216f26 0x2 - .text._Z16PzemReceiveReadyv - 0x40216f28 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x26 (size before relaxing) - 0x40216f28 PzemReceiveReady() - *fill* 0x40216f4a 0x2 - .text._Z11PzemDrvInitv - 0x40216f4c 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2a (size before relaxing) - 0x40216f4c PzemDrvInit() - *fill* 0x40216f6e 0x2 - .text._Z13PzemAcDrvInitv - 0x40216f70 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2a (size before relaxing) - 0x40216f70 PzemAcDrvInit() - *fill* 0x40216f92 0x2 - .text._Z13PzemDcDrvInitv - 0x40216f94 0x22 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2a (size before relaxing) - 0x40216f94 PzemDcDrvInit() - *fill* 0x40216fb6 0x2 - .text._Z8XnrgCallh - 0x40216fb8 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40216fbc XnrgCall(unsigned char) - *fill* 0x40216ff1 0x3 - .text._Z11Energy200msv - 0x40216ff4 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xfd (size before relaxing) - 0x40217000 Energy200ms() - *fill* 0x402170b9 0x3 - .text._Z13EnergyCommandv - 0x402170bc 0x468 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x52c (size before relaxing) - 0x402170dc EnergyCommand() - .text._Z13EnergyDrvInitv - 0x40217524 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x24 (size before relaxing) - 0x40217524 EnergyDrvInit() - .text._Z13EnergySnsInitv - 0x40217540 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x40217548 EnergySnsInit() - *fill* 0x402175b9 0x3 - .text._Z6Xdrv03h - 0x402175bc 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x402175c0 Xdrv03(unsigned char) - *fill* 0x40217614 0x0 - .text._Z16WemoSerialnumberv - 0x40217614 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x40217618 WemoSerialnumber() - *fill* 0x40217645 0x3 - .text._Z8WemoUuidv - 0x40217648 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x53 (size before relaxing) - 0x4021764c WemoUuid() - *fill* 0x4021767f 0x1 - .text._Z11HueBridgeIdv - 0x40217680 0x99 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x119 (size before relaxing) - 0x40217684 HueBridgeId() - *fill* 0x40217719 0x3 - .text._Z15HueSerialnumberv - 0x4021771c 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x83 (size before relaxing) - 0x4021771c HueSerialnumber() - *fill* 0x4021775f 0x1 - .text._Z7HueUuidv - 0x40217760 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4b (size before relaxing) - 0x40217764 HueUuid() - *fill* 0x4021778f 0x1 - .text._Z14GetHueDeviceIdh - 0x40217790 0x6b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb7 (size before relaxing) - 0x40217794 GetHueDeviceId(unsigned char) - *fill* 0x402177fb 0x1 - .text._Z12GetHueUserIdv - 0x402177fc 0x31 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x40217800 GetHueUserId() - *fill* 0x4021782d 0x3 - .text._Z17HueConfigResponseP6String - 0x40217830 0x144 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x264 (size before relaxing) - 0x40217850 HueConfigResponse(String*) - .text._Z9HueConfigP6String - 0x40217974 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x76 (size before relaxing) - 0x40217978 HueConfig(String*) - *fill* 0x402179ba 0x2 - .text._Z15HueLightStatus1hP6String - 0x402179bc 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2db (size before relaxing) - 0x402179f4 HueLightStatus1(unsigned char, String*) - *fill* 0x40217b83 0x1 - .text._Z15HueLightStatus2hP6String - 0x40217b84 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd5 (size before relaxing) - 0x40217b90 HueLightStatus2(unsigned char, String*) - *fill* 0x40217c09 0x3 - .text._Z15HueGlobalConfigP6String - 0x40217c0c 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x13b (size before relaxing) - 0x40217c20 HueGlobalConfig(String*) - *fill* 0x40217cd3 0x1 - .text._Z17HueAuthenticationP6String - 0x40217cd4 0x62 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa2 (size before relaxing) - 0x40217cd8 HueAuthentication(String*) - *fill* 0x40217d36 0x2 - .text._Z9HueGroupsP6String - 0x40217d38 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1c5 (size before relaxing) - 0x40217d50 HueGroups(String*) - *fill* 0x40217e41 0x3 - .text._Z13CounterUpdateh - 0x40217e44 0x73 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x83 (size before relaxing) - 0x40217e48 CounterUpdate(unsigned char) - *fill* 0x40217eb7 0x1 - .text._Z14CounterUpdate1v - 0x40217eb8 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40217eb8 CounterUpdate1() - .text._Z14CounterUpdate2v - 0x40217ecc 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40217ecc CounterUpdate2() - .text._Z14CounterUpdate3v - 0x40217ee0 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40217ee0 CounterUpdate3() - .text._Z14CounterUpdate4v - 0x40217ef4 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x40217ef4 CounterUpdate4() - .text._Z16CounterSaveStatev - 0x40217f08 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x39 (size before relaxing) - 0x40217f08 CounterSaveState() - *fill* 0x40217f35 0x3 - .text._Z11CounterInitv - 0x40217f38 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x84 (size before relaxing) - 0x40217f40 CounterInit() - .text._Z11CounterShowh - 0x40217fb0 0x149 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x195 (size before relaxing) - 0x40217fc8 CounterShow(unsigned char) - *fill* 0x402180f9 0x3 - .text._Z6Xsns01h - 0x402180fc 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x58 (size before relaxing) - 0x402180fc Xsns01(unsigned char) - .text._Z12SonoffScShowh - 0x40218148 0xfb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x153 (size before relaxing) - 0x4021815c SonoffScShow(unsigned char) - *fill* 0x40218243 0x1 - .text._Z12OneWireResetv - 0x40218244 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc2 (size before relaxing) - 0x40218248 OneWireReset() - *fill* 0x402182d2 0x2 - .text._Z15OneWireWriteBith - 0x402182d4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7d (size before relaxing) - 0x402182dc OneWireWriteBit(unsigned char) - *fill* 0x40218335 0x3 - .text._Z14OneWireReadBitv - 0x40218338 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7c (size before relaxing) - 0x40218338 OneWireReadBit() - .text._Z12OneWireWriteh - 0x4021838c 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x4021838c OneWireWrite(unsigned char) - *fill* 0x402183d2 0x2 - .text._Z11OneWireReadv - 0x402183d4 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3b (size before relaxing) - 0x402183d4 OneWireRead() - *fill* 0x4021840b 0x1 - .text._Z13OneWireSelectPKh - 0x4021840c 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x38 (size before relaxing) - 0x4021840c OneWireSelect(unsigned char const*) - .text._Z18OneWireResetSearchv - 0x4021843c 0x38 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021844c OneWireResetSearch() - .text._Z13OneWireSearchPh - 0x40218474 0x16b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x197 (size before relaxing) - 0x40218474 OneWireSearch(unsigned char*) - *fill* 0x402185df 0x1 - .text._Z14Ds18x20Convertv - 0x402185e0 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x402185e0 Ds18x20Convert() - .text._Z11Ds18x20Nameh - 0x402185fc 0x7d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x89 (size before relaxing) - 0x40218614 Ds18x20Name(unsigned char) - *fill* 0x40218679 0x3 - .text._Z11Ds18x20Showh - 0x4021867c 0x103 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x143 (size before relaxing) - 0x40218688 Ds18x20Show(unsigned char) - *fill* 0x4021877f 0x1 - .text._Z11DhtReadPrepv - 0x40218780 0x3e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x42 (size before relaxing) - 0x40218788 DhtReadPrep() - *fill* 0x402187be 0x2 - .text._Z14DhtExpectPulsehb - 0x402187c0 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x58 (size before relaxing) - 0x402187c4 DhtExpectPulse(unsigned char, bool) - .text._Z8DhtSetuphh - 0x40218810 0x28 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30 (size before relaxing) - 0x40218810 DhtSetup(unsigned char, unsigned char) - .text._Z8GpioInitv - 0x40218838 0x4d6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x586 (size before relaxing) - 0x4021885c GpioInit() - *fill* 0x40218d0e 0x2 - .text._Z7DhtInitv - 0x40218d10 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9f (size before relaxing) - 0x40218d1c DhtInit() - *fill* 0x40218d8f 0x1 - .text._Z7DhtShowh - 0x40218d90 0xd9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x125 (size before relaxing) - 0x40218d94 DhtShow(unsigned char) - *fill* 0x40218e69 0x3 - .text._Z7BmpShowh - 0x40218e6c 0x270 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x334 (size before relaxing) - 0x40218ea0 BmpShow(unsigned char) - .text._Z9Sgp30Showh - 0x402190dc 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x57 (size before relaxing) - 0x402190ec Sgp30Show(unsigned char) - *fill* 0x40219127 0x1 - .text._Z10CCS811Showh - 0x40219128 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f (size before relaxing) - 0x4021913c CCS811Show(unsigned char) - *fill* 0x4021917c 0x0 - .text._Z9HxIsReadyt - 0x4021917c 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x80 (size before relaxing) - 0x40219180 HxIsReady(unsigned short) - .text._Z6HxReadv - 0x402191e8 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb5 (size before relaxing) - 0x402191ec HxRead() - *fill* 0x40219275 0x3 - .text._Z7HxResetv - 0x40219278 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x40219284 HxReset() - *fill* 0x4021929b 0x1 - .text._Z6HxInitv - 0x4021929c 0xa2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xda (size before relaxing) - 0x402192a4 HxInit() - *fill* 0x4021933e 0x2 - .text._Z6HxShowh - 0x40219340 0x134 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x184 (size before relaxing) - 0x40219364 HxShow(unsigned char) - .text._Z8Tx20Readv - 0x40219474 0xe2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x11a (size before relaxing) - 0x40219494 Tx20Read() - *fill* 0x40219556 0x2 - .text._Z8Tx20Initv - 0x40219558 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3d (size before relaxing) - 0x4021955c Tx20Init() - *fill* 0x40219585 0x3 - .text._Z8Tx20Showh - 0x40219588 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xe1 (size before relaxing) - 0x40219594 Tx20Show(unsigned char) - *fill* 0x40219622 0x2 - .text._Z6Xsns35h - 0x40219624 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x67 (size before relaxing) - 0x40219624 Xsns35(unsigned char) - *fill* 0x40219677 0x1 - .text._Z12XsnsNextCallh - 0x40219678 0x58 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x40219680 XsnsNextCall(unsigned char) - *fill* 0x402196d0 0x0 - .text._Z8XsnsCallh - 0x402196d0 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - 0x402196d0 XsnsCall(unsigned char) - *fill* 0x40219711 0x3 - .text._Z14MqttShowSensorv - 0x40219714 0x11f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x177 (size before relaxing) - 0x40219728 MqttShowSensor() - *fill* 0x40219833 0x1 - .text._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x40219834 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4021983c std::function::function(void (*)()) - 0x4021983c std::function::function(void (*)()) - *fill* 0x40219852 0x2 - .text._Z18HueWemoAddHandlersv - 0x40219854 0xfe .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x172 (size before relaxing) - 0x40219888 HueWemoAddHandlers() - *fill* 0x40219952 0x2 - .text._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x40219954 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x32 (size before relaxing) - 0x40219954 ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char* const&) const - *fill* 0x40219982 0x2 - .text._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x40219984 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20 (size before relaxing) - 0x40219984 ArduinoJson::TypeTraits::EnableIf::value, bool>::type ArduinoJson::JsonObject::containsKey(char* const&) const - .text._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x4021999c 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x32 (size before relaxing) - 0x4021999c ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(char const*) - *fill* 0x402199ca 0x2 - .text._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x402199cc 0xf .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x17 (size before relaxing) - 0x402199cc ArduinoJson::Internals::ListConstIterator ArduinoJson::JsonObject::findKey(char const*) const - *fill* 0x402199db 0x1 - .text._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x402199dc 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20 (size before relaxing) - 0x402199dc bool ArduinoJson::JsonObject::containsKey(char const*) const - .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x402199f4 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33 (size before relaxing) - 0x402199f4 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::eat(ArduinoJson::Internals::CharPointerTraits::Reader&, char) - *fill* 0x40219a23 0x1 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x40219a24 0xdc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xe0 (size before relaxing) - 0x40219a28 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseString() - .text._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x40219b00 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x69 (size before relaxing) - 0x40219b00 bool ArduinoJson::JsonObject::set_impl(char const*, ArduinoJson::JsonVariant const&) - *fill* 0x40219b5d 0x3 - .text._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x40219b60 0xa0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xac (size before relaxing) - 0x40219b64 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - .text._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x40219c00 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x25 (size before relaxing) - 0x40219c00 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - *fill* 0x40219c19 0x3 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x40219c1c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33 (size before relaxing) - 0x40219c1c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::eat(ArduinoJson::Internals::StdStringTraits::Reader&, char) - *fill* 0x40219c4b 0x1 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x40219c4c 0x10b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x113 (size before relaxing) - 0x40219c4c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseString() - *fill* 0x40219d57 0x1 - .text._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x40219d58 0x2e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x32 (size before relaxing) - 0x40219d58 ArduinoJson::Internals::ListIterator ArduinoJson::JsonObject::findKey(String const&) - *fill* 0x40219d86 0x2 - .text._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x40219d88 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d (size before relaxing) - 0x40219d88 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(String const&) const - *fill* 0x40219da6 0x2 - .text._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x40219da8 0xa1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x40219dac ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char const*) const - *fill* 0x40219e49 0x3 - .text._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x40219e4c 0x85 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x89 (size before relaxing) - 0x40219e50 int ArduinoJson::JsonVariant::variantAsInteger() const - *fill* 0x40219ed1 0x3 - .text._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x40219ed4 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x40219ed4 bool ArduinoJson::operator!=(ArduinoJson::JsonVariantComparisons > const&, int) - *fill* 0x40219f07 0x1 - .text._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x40219f08 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2b (size before relaxing) - 0x40219f08 ArduinoJson::Internals::JsonVariantAs::type ArduinoJson::JsonObject::get_impl(char* const&) const - *fill* 0x40219f23 0x1 - .text._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x40219f24 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4f (size before relaxing) - 0x40219f24 bool ArduinoJson::JsonArray::add_impl(ArduinoJson::JsonVariant const&) - *fill* 0x40219f6b 0x1 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x40219f6c 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x40219f6c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseArray() - *fill* 0x40219fe5 0x3 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x40219fe8 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc1 (size before relaxing) - 0x40219fe8 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseAnythingTo(ArduinoJson::JsonVariant*) - *fill* 0x4021a099 0x3 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x4021a09c 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd6 (size before relaxing) - 0x4021a09c ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::Internals::StringWriter >::parseObject() - *fill* 0x4021a12e 0x2 - .text._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x4021a130 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2b (size before relaxing) - 0x4021a130 ArduinoJson::JsonObject& ArduinoJson::JsonBufferBase::parseObject(char*, unsigned char) - *fill* 0x4021a153 0x1 - .text._Z13RfSendCommandv - 0x4021a154 0x2c0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x394 (size before relaxing) - 0x4021a184 RfSendCommand() - .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x4021a414 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xad (size before relaxing) - 0x4021a414 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseArray() - *fill* 0x4021a48d 0x3 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x4021a490 0xb1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc1 (size before relaxing) - 0x4021a490 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseAnythingTo(ArduinoJson::JsonVariant*) - *fill* 0x4021a541 0x3 - .text._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x4021a544 0x92 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd6 (size before relaxing) - 0x4021a544 ArduinoJson::Internals::JsonParser::Reader, ArduinoJson::StaticJsonBufferBase&>::parseObject() - *fill* 0x4021a5d6 0x2 - .text._Z14RulesRuleMatchhR6StringS0_ - 0x4021a5d8 0x5af .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x846 (size before relaxing) - 0x4021a608 RulesRuleMatch(unsigned char, String&, String&) - *fill* 0x4021ab87 0x1 - .text._Z8I2cWritehhjh - 0x4021ab88 0x9a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb2 (size before relaxing) - 0x4021ab88 I2cWrite(unsigned char, unsigned char, unsigned int, unsigned char) - *fill* 0x4021ac22 0x2 - .text._Z9I2cWrite8hht - 0x4021ac24 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21 (size before relaxing) - 0x4021ac24 I2cWrite8(unsigned char, unsigned char, unsigned short) - *fill* 0x4021ac41 0x3 - .text._Z12I2cValidReadhhh - 0x4021ac44 0xbd .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xf1 (size before relaxing) - 0x4021ac48 I2cValidRead(unsigned char, unsigned char, unsigned char) - *fill* 0x4021ad01 0x3 - .text._Z14I2cValidRead16Pthh - 0x4021ad04 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31 (size before relaxing) - 0x4021ad04 I2cValidRead16(unsigned short*, unsigned char, unsigned char) - *fill* 0x4021ad29 0x3 - .text._Z8I2cRead8hh - 0x4021ad2c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x4021ad2c I2cRead8(unsigned char, unsigned char) - *fill* 0x4021ad49 0x3 - .text._Z9I2cRead16hh - 0x4021ad4c 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x4021ad4c I2cRead16(unsigned char, unsigned char) - *fill* 0x4021ad69 0x3 - .text._Z17Bmp180Calibrationh - 0x4021ad6c 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d9 (size before relaxing) - 0x4021ad74 Bmp180Calibration(unsigned char) - *fill* 0x4021aefd 0x3 - .text._Z13LM75ADGetTempv - 0x4021af00 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x4021af08 LM75ADGetTemp() - *fill* 0x4021af50 0x0 - .text._Z10LM75ADShowh - 0x4021af50 0x79 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa9 (size before relaxing) - 0x4021af5c LM75ADShow(unsigned char) - *fill* 0x4021afc9 0x3 - .text._Z11I2cRead16LEhh - 0x4021afcc 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x35 (size before relaxing) - 0x4021afcc I2cRead16LE(unsigned char, unsigned char) - *fill* 0x4021aff5 0x3 - .text._Z15Bmx280Calibrateh - 0x4021aff8 0x185 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x231 (size before relaxing) - 0x4021affc Bmx280Calibrate(unsigned char) - *fill* 0x4021b17d 0x3 - .text._Z9I2cRead24hh - 0x4021b180 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x28 (size before relaxing) - 0x4021b180 I2cRead24(unsigned char, unsigned char) - .text._Z10Bmp180Readh - 0x4021b19c 0x175 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d9 (size before relaxing) - 0x4021b1b0 Bmp180Read(unsigned char) - *fill* 0x4021b311 0x3 - .text._Z10Bme280Readh - 0x4021b314 0x3d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x43d (size before relaxing) - 0x4021b344 Bme280Read(unsigned char) - *fill* 0x4021b6e5 0x3 - .text._Z7BmpReadv - 0x4021b6e8 0xac .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdc (size before relaxing) - 0x4021b6e8 BmpRead() - .text._Z6Syslogv - 0x4021b794 0x109 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x165 (size before relaxing) - 0x4021b7b4 Syslog() - *fill* 0x4021b89d 0x3 - .text._Z6AddLogh - 0x4021b8a0 0x12a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x182 (size before relaxing) - 0x4021b8b8 AddLog(unsigned char) - *fill* 0x4021b9ca 0x2 - .text._Z12SettingsSaveh - 0x4021b9cc 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x169 (size before relaxing) - 0x4021b9e0 SettingsSave(unsigned char) - *fill* 0x4021bae9 0x3 - .text._Z15SettingsSaveAllv - 0x4021baec 0x2b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x4021baec SettingsSaveAll() - *fill* 0x4021bb17 0x1 - .text._Z13SettingsDeltav - 0x4021bb18 0x406 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x466 (size before relaxing) - 0x4021bba0 SettingsDelta() - *fill* 0x4021bf1e 0x2 - .text._Z13SettingsEraseh - 0x4021bf20 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x120 (size before relaxing) - 0x4021bf30 SettingsErase(unsigned char) - .text._Z16SettingsSdkErasev - 0x4021bfe4 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x43 (size before relaxing) - 0x4021bfe4 SettingsSdkErase() - *fill* 0x4021c007 0x1 - .text._Z17SetSerialBaudratei - 0x4021c008 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc4 (size before relaxing) - 0x4021c00c SetSerialBaudrate(int) - .text._Z10ShowSourcei$part$63 - 0x4021c080 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4d (size before relaxing) - *fill* 0x4021c0b5 0x3 - .text._Z10ShowSourcei - 0x4021c0b8 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x4021c0b8 ShowSource(int) - *fill* 0x4021c0d1 0x3 - .text._Z14SetDevicePowermi - 0x4021c0d4 0x12f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18f (size before relaxing) - 0x4021c0d4 SetDevicePower(unsigned long, int) - *fill* 0x4021c203 0x1 - .text._Z9RtcSecondv - 0x4021c204 0x293 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x33f (size before relaxing) - 0x4021c21c RtcSecond() - *fill* 0x4021c497 0x1 - .text._Z8AddLog_PhPKc - 0x4021c498 0x25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x35 (size before relaxing) - 0x4021c498 AddLog_P(unsigned char, char const*) - *fill* 0x4021c4bd 0x3 - .text._Z19SettingsBufferAllocv - 0x4021c4c0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4f (size before relaxing) - 0x4021c4c4 SettingsBufferAlloc() - *fill* 0x4021c4f3 0x1 - .text._Z15SettingsDefaultv - 0x4021c4f4 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x4021c4f8 SettingsDefault() - *fill* 0x4021c517 0x1 - .text._Z11ClaimSerialv - 0x4021c518 0x45 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x69 (size before relaxing) - 0x4021c520 ClaimSerial() - *fill* 0x4021c55d 0x3 - .text._Z11PzemSnsInitv - 0x4021c560 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x81 (size before relaxing) - 0x4021c560 PzemSnsInit() - *fill* 0x4021c5b1 0x3 - .text._Z13PzemAcSnsInitv - 0x4021c5b4 0x4c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x74 (size before relaxing) - 0x4021c5b8 PzemAcSnsInit() - .text._Z13PzemDcSnsInitv - 0x4021c600 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x80 (size before relaxing) - 0x4021c604 PzemDcSnsInit() - .text._Z13StopWebserverv - 0x4021c654 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x47 (size before relaxing) - 0x4021c658 StopWebserver() - *fill* 0x4021c687 0x1 - .text._Z11CseReceivedv - 0x4021c688 0x27f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2e3 (size before relaxing) - 0x4021c6a4 CseReceived() - *fill* 0x4021c907 0x1 - .text._Z13UdpDisconnectv - 0x4021c908 0x35 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x41 (size before relaxing) - 0x4021c910 UdpDisconnect() - *fill* 0x4021c93d 0x3 - .text._Z10UdpConnectv - 0x4021c940 0x81 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb0 (size before relaxing) - 0x4021c954 UdpConnect() - *fill* 0x4021c9c1 0x3 - .text._Z11Ds18x20Readh - 0x4021c9c4 0x23d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x305 (size before relaxing) - 0x4021c9d4 Ds18x20Read(unsigned char) - *fill* 0x4021cc01 0x3 - .text._Z12SettingsLoadv - 0x4021cc04 0xdf .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x13f (size before relaxing) - 0x4021cc0c SettingsLoad() - *fill* 0x4021cce3 0x1 - .text.setup 0x4021cce4 0x383 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4e3 (size before relaxing) - 0x4021cd0c setup - *fill* 0x4021d067 0x1 - .text._Z8AddLog_PhPKcS0_ - 0x4021d068 0x50 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x70 (size before relaxing) - 0x4021d068 AddLog_P(unsigned char, char const*, char const*) - .text._Z17HandleUpnpServicev - 0x4021d0b8 0x59 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x85 (size before relaxing) - 0x4021d0c8 HandleUpnpService() - *fill* 0x4021d111 0x3 - .text._Z21HandleUpnpMetaServicev - 0x4021d114 0x51 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x85 (size before relaxing) - 0x4021d11c HandleUpnpMetaService() - *fill* 0x4021d165 0x3 - .text._Z19HandleUpnpSetupWemov - 0x4021d168 0xc7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x167 (size before relaxing) - 0x4021d180 HandleUpnpSetupWemo() - *fill* 0x4021d22f 0x1 - .text._Z18HandleUpnpSetupHuev - 0x4021d230 0xc3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x177 (size before relaxing) - 0x4021d238 HandleUpnpSetupHue() - *fill* 0x4021d2f3 0x1 - .text._Z17HandleInformationv$part$105 - 0x4021d2f4 0x7f3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd4b (size before relaxing) - *fill* 0x4021dae7 0x1 - .text._Z9WifiBeginh - 0x4021dae8 0x178 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21c (size before relaxing) - 0x4021daf8 WifiBegin(unsigned char) - .text._Z12AddLogSerialhPhi - 0x4021dc60 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x77 (size before relaxing) - 0x4021dc68 AddLogSerial(unsigned char, unsigned char*, int) - *fill* 0x4021dcc3 0x1 - .text._Z12AddLogSerialh - 0x4021dcc4 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x29 (size before relaxing) - 0x4021dcc8 AddLogSerial(unsigned char) - *fill* 0x4021dce5 0x3 - .text._Z14CseSerialInputv - 0x4021dce8 0xf6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x116 (size before relaxing) - 0x4021dcfc CseSerialInput() - *fill* 0x4021ddde 0x2 - .text._Z6Xnrg02h - 0x4021dde0 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6a (size before relaxing) - 0x4021dde0 Xnrg02(unsigned char) - *fill* 0x4021de2f 0x1 - .text._Z11PzemRecievehPf - 0x4021de30 0x1f2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x262 (size before relaxing) - 0x4021de34 PzemRecieve(unsigned char, float*) - *fill* 0x4021e022 0x2 - .text._Z14PzemEvery200msv - 0x4021e024 0x12c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x17c (size before relaxing) - 0x4021e038 PzemEvery200ms() - .text._Z6Xnrg03h - 0x4021e150 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x4021e150 Xnrg03(unsigned char) - .text._Z12AddLogMissedPch - 0x4021e190 0x2d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3d (size before relaxing) - 0x4021e194 AddLogMissed(char*, unsigned char) - *fill* 0x4021e1bd 0x3 - .text._Z18Ds18x20EverySecondv - 0x4021e1c0 0x57 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x83 (size before relaxing) - 0x4021e1c0 Ds18x20EverySecond() - *fill* 0x4021e217 0x1 - .text._Z14StartWebserveri9IPAddress - 0x4021e218 0x38f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5af (size before relaxing) - 0x4021e2bc StartWebserver(int, IPAddress) - *fill* 0x4021e5a7 0x1 - .text._Z16WifiManagerBeginv - 0x4021e5a8 0xc5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x149 (size before relaxing) - 0x4021e5b4 WifiManagerBegin() - *fill* 0x4021e66d 0x3 - .text._Z10WifiConfigh - 0x4021e670 0xb3 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xe7 (size before relaxing) - 0x4021e680 WifiConfig(unsigned char) - *fill* 0x4021e723 0x1 - .text._Z11WifiCheckIpv - 0x4021e724 0x1c7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x247 (size before relaxing) - 0x4021e73c WifiCheckIp() - *fill* 0x4021e8eb 0x1 - .text._Z9WifiCheckh - 0x4021e8ec 0x16f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x21b (size before relaxing) - 0x4021e908 WifiCheck(unsigned char) - *fill* 0x4021ea5b 0x1 - .text._Z18ModuleSaveSettingsv - 0x4021ea5c 0x1a2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x242 (size before relaxing) - 0x4021ea70 ModuleSaveSettings() - *fill* 0x4021ebfe 0x2 - .text._Z16WifiSaveSettingsv - 0x4021ec00 0x123 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1bf (size before relaxing) - 0x4021ec18 WifiSaveSettings() - *fill* 0x4021ed23 0x1 - .text._Z19LoggingSaveSettingsv - 0x4021ed24 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1cf (size before relaxing) - 0x4021ed40 LoggingSaveSettings() - *fill* 0x4021ee77 0x1 - .text._Z17OtherSaveSettingsv - 0x4021ee78 0x17e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x20e (size before relaxing) - 0x4021ee90 OtherSaveSettings() - *fill* 0x4021eff6 0x2 - .text._Z16HandleUploadLoopv - 0x4021eff8 0x447 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x54f (size before relaxing) - 0x4021f01c HandleUploadLoop() - *fill* 0x4021f43f 0x1 - .text._Z18MqttDiscoverServerv - 0x4021f440 0xca .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x13a (size before relaxing) - 0x4021f44c MqttDiscoverServer() - *fill* 0x4021f50a 0x2 - .text._Z13MqttSubscribePc - 0x4021f50c 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x47 (size before relaxing) - 0x4021f510 MqttSubscribe(char*) - *fill* 0x4021f53b 0x1 - .text._Z17MqttPublishDirectPKch - 0x4021f53c 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x165 (size before relaxing) - 0x4021f558 MqttPublishDirect(char const*, unsigned char) - *fill* 0x4021f63d 0x3 - .text._Z7SendKeyhhh - 0x4021f640 0x14c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1ac (size before relaxing) - 0x4021f64c SendKey(unsigned char, unsigned char, unsigned char) - .text._Z11MqttPublishPKch - 0x4021f78c 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x69 (size before relaxing) - 0x4021f790 MqttPublish(char const*, unsigned char) - *fill* 0x4021f7e1 0x3 - .text._Z11MqttPublishPKc - 0x4021f7e4 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18 (size before relaxing) - 0x4021f7e4 MqttPublish(char const*) - .text._Z24MqttPublishPrefixTopic_PhPKch - 0x4021f7f8 0x8e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb6 (size before relaxing) - 0x4021f7fc MqttPublishPrefixTopic_P(unsigned char, char const*, unsigned char) - *fill* 0x4021f886 0x2 - .text._Z24MqttPublishPrefixTopic_PhPKc - 0x4021f888 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b (size before relaxing) - 0x4021f888 MqttPublishPrefixTopic_P(unsigned char, char const*) - *fill* 0x4021f89f 0x1 - .text._Z13PublishStatush - 0x4021f8a0 0x6e6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x98e (size before relaxing) - 0x4021f914 PublishStatus(unsigned char) - *fill* 0x4021ff86 0x2 - .text._Z26MqttPublishPowerBlinkStateh - 0x4021ff88 0x77 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9f (size before relaxing) - 0x4021ff90 MqttPublishPowerBlinkState(unsigned char) - *fill* 0x4021ffff 0x1 - .text._Z23SonoffBridgeReceivedRawv - 0x40220000 0xc9 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xfd (size before relaxing) - 0x40220014 SonoffBridgeReceivedRaw() - *fill* 0x402200c9 0x3 - .text._Z23SonoffBridgeLearnFailedv - 0x402200cc 0x43 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f (size before relaxing) - 0x402200d8 SonoffBridgeLearnFailed() - *fill* 0x4022010f 0x1 - .text._Z20SonoffBridgeReceivedv - 0x40220110 0x1e2 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x242 (size before relaxing) - 0x4022013c SonoffBridgeReceived() - *fill* 0x402202f2 0x2 - .text._Z23SonoffBridgeSerialInputv - 0x402202f4 0x122 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x142 (size before relaxing) - 0x40220300 SonoffBridgeSerialInput() - *fill* 0x40220416 0x2 - .text._Z6Xdrv06h - 0x40220418 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5a (size before relaxing) - 0x40220418 Xdrv06(unsigned char) - *fill* 0x4022045f 0x1 - .text._Z17SerialBridgeInputv - 0x40220460 0xe7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x113 (size before relaxing) - 0x40220474 SerialBridgeInput() - *fill* 0x40220547 0x1 - .text._Z6Xdrv08h - 0x40220548 0x41 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x58 (size before relaxing) - 0x40220548 Xdrv08(unsigned char) - *fill* 0x40220589 0x3 - .text._Z12TimerCommandv - 0x4022058c 0x62e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7c6 (size before relaxing) - 0x402205d4 TimerCommand() - *fill* 0x40220bba 0x2 - .text._Z26HxCalibrationStateTextJsonh - 0x40220bbc 0x4b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b (size before relaxing) - 0x40220bc4 HxCalibrationStateTextJson(unsigned char) - *fill* 0x40220c07 0x1 - .text._Z9HxCommandv - 0x40220c08 0x215 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2e5 (size before relaxing) - 0x40220c18 HxCommand() - *fill* 0x40220e1d 0x3 - .text._Z17HxEvery100mSecondv - 0x40220e20 0x164 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a4 (size before relaxing) - 0x40220e24 HxEvery100mSecond() - .text._Z6Xsns34h - 0x40220f84 0x69 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x85 (size before relaxing) - 0x40220f88 Xsns34(unsigned char) - *fill* 0x40220fed 0x3 - .text._Z14EnergyMqttShowv - 0x40220ff0 0x7f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb7 (size before relaxing) - 0x40221000 EnergyMqttShow() - *fill* 0x4022106f 0x1 - .text._Z21MqttPublishPowerStateh - 0x40221070 0x13b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1af (size before relaxing) - 0x40221078 MqttPublishPowerState(unsigned char) - *fill* 0x402211ab 0x1 - .text._Z19ExecuteCommandPowerhhi - 0x402211ac 0x24f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x28f (size before relaxing) - 0x402211c4 ExecuteCommandPower(unsigned char, unsigned char, int) - *fill* 0x402213fb 0x1 - .text._Z11SetFanspeedh - 0x402213fc 0x3a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x42 (size before relaxing) - 0x40221400 SetFanspeed(unsigned char) - *fill* 0x40221436 0x2 - .text._Z17StopAllPowerBlinkv - 0x40221438 0x63 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7b (size before relaxing) - 0x40221438 StopAllPowerBlink() - *fill* 0x4022149b 0x1 - .text._Z13SwitchHandlerh - 0x4022149c 0x170 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a0 (size before relaxing) - 0x402214a4 SwitchHandler(unsigned char) - .text._Z17EnergyMarginCheckv - 0x4022160c 0x545 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6b5 (size before relaxing) - 0x40221680 EnergyMarginCheck() - *fill* 0x40221b51 0x3 - .text._Z6Xsns03h - 0x40221b54 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x6f (size before relaxing) - 0x40221b58 Xsns03(unsigned char) - *fill* 0x40221baf 0x1 - .text._Z12LightPowerOnv - 0x40221bb0 0x2f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f (size before relaxing) - 0x40221bb0 LightPowerOn() - *fill* 0x40221bdf 0x1 - .text._Z17LightPreparePowerv - 0x40221be0 0x49 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5d (size before relaxing) - 0x40221be0 LightPreparePower() - *fill* 0x40221c29 0x3 - .text._Z11LightSetHsbffftb - 0x40221c2c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x118 (size before relaxing) - 0x40221c38 LightSetHsb(float, float, float, unsigned short, bool) - .text._Z12LightCommandv - 0x40221ce4 0x8be .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xa9a (size before relaxing) - 0x40221d08 LightCommand() - *fill* 0x402225a2 0x2 - .text._Z16TimerEverySecondv - 0x402225a4 0x159 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1a5 (size before relaxing) - 0x402225b0 TimerEverySecond() - *fill* 0x402226fd 0x3 - .text._Z6Xdrv09h - 0x40222700 0x8d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xbd (size before relaxing) - 0x4022270c Xdrv09(unsigned char) - *fill* 0x4022278d 0x3 - .text._Z15HandleUpnpEventv - 0x40222790 0x173 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x26b (size before relaxing) - 0x402227b0 HandleUpnpEvent() - *fill* 0x40222903 0x1 - .text._Z9HueLightsP6String - 0x40222904 0x85a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd26 (size before relaxing) - 0x40222948 HueLights(String*) - *fill* 0x4022315e 0x2 - .text._Z13MqttConnectedv - 0x40223160 0x296 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3b2 (size before relaxing) - 0x402231ac MqttConnected() - *fill* 0x402233f6 0x2 - .text._Z11MqttCommandv - 0x402233f8 0x6ca .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8aa (size before relaxing) - 0x40223418 MqttCommand() - *fill* 0x40223ac2 0x2 - .text._Z6Xdrv02h - 0x40223ac4 0x93 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xbf (size before relaxing) - 0x40223ad0 Xdrv02(unsigned char) - *fill* 0x40223b57 0x1 - .text._Z15MqttDataHandlerPcPhj - 0x40223b58 0x1e25 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x22d9 (size before relaxing) - 0x40223c84 MqttDataHandler(char*, unsigned char*, unsigned int) - *fill* 0x4022597d 0x3 - .text._Z14ExecuteCommandPci - 0x40225980 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xd4 (size before relaxing) - 0x40225988 ExecuteCommand(char*, int) - .text._Z13TuyaResetWifiv - 0x40225a10 0x39 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x49 (size before relaxing) - 0x40225a18 TuyaResetWifi() - *fill* 0x40225a49 0x3 - .text._Z16Every100mSecondsv - 0x40225a4c 0x12b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x197 (size before relaxing) - 0x40225a50 Every100mSeconds() - *fill* 0x40225b77 0x1 - .text._Z13ButtonHandlerv - 0x40225b78 0x437 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50b (size before relaxing) - 0x40225bb4 ButtonHandler() - *fill* 0x40225faf 0x1 - .text._Z16MqttDisconnectedi - 0x40225fb0 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x79 (size before relaxing) - 0x40225fb4 MqttDisconnected(int) - *fill* 0x40226005 0x3 - .text._Z16MqttSaveSettingsv - 0x40226008 0x20a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x30e (size before relaxing) - 0x40226028 MqttSaveSettings() - *fill* 0x40226212 0x2 - .text._Z17TimerSaveSettingsv - 0x40226214 0xfa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x146 (size before relaxing) - 0x40226224 TimerSaveSettings() - *fill* 0x4022630e 0x2 - .text._Z14RuleSetProcesshR6String - 0x40226310 0x38d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f5 (size before relaxing) - 0x40226348 RuleSetProcess(unsigned char, String&) - *fill* 0x4022669d 0x3 - .text._Z17RulesProcessEventPc - 0x402266a0 0x6d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x91 (size before relaxing) - 0x402266a4 RulesProcessEvent(char*) - *fill* 0x4022670d 0x3 - .text._Z12RulesProcessv - 0x40226710 0x15 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x40226710 RulesProcess() - *fill* 0x40226725 0x3 - .text._Z15RulesEvery100msv - 0x40226728 0x64 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x88 (size before relaxing) - 0x4022672c RulesEvery100ms() - .text._Z15RulesTeleperiodv - 0x4022678c 0x23 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2b (size before relaxing) - 0x4022678c RulesTeleperiod() - *fill* 0x402267af 0x1 - .text._Z18PerformEverySecondv - 0x402267b0 0x191 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x249 (size before relaxing) - 0x402267cc PerformEverySecond() - *fill* 0x40226941 0x3 - .text._Z14RulesEvery50msv - 0x40226944 0x2b7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x34b (size before relaxing) - 0x40226984 RulesEvery50ms() - *fill* 0x40226bfb 0x1 - .text._Z16RulesEverySecondv - 0x40226bfc 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdf (size before relaxing) - 0x40226c08 RulesEverySecond() - *fill* 0x40226ca3 0x1 - .text._Z6Xdrv10h - 0x40226ca4 0x61 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8d (size before relaxing) - 0x40226ca8 Xdrv10(unsigned char) - *fill* 0x40226d05 0x3 - .text._Z12TuyaSetPowerv - 0x40226d08 0xed .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x10d (size before relaxing) - 0x40226d10 TuyaSetPower() - *fill* 0x40226df5 0x3 - .text._Z15LightSerialDutyh - 0x40226df8 0x133 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x15f (size before relaxing) - 0x40226e04 LightSerialDuty(unsigned char) - *fill* 0x40226f2b 0x1 - .text._Z12LightAnimatev - 0x40226f2c 0x30c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x38f (size before relaxing) - 0x40226f48 LightAnimate() - *fill* 0x40227238 0x0 - .text._Z13LightSetPowerv - 0x40227238 0x46 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x61 (size before relaxing) - 0x40227238 LightSetPower() - *fill* 0x4022727e 0x2 - .text._Z6Xdrv04h - 0x40227280 0x5b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7b (size before relaxing) - 0x40227280 Xdrv04(unsigned char) - *fill* 0x402272db 0x1 - .text._Z17TuyaPacketProcessv - 0x402272dc 0x220 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d4 (size before relaxing) - 0x4022731c TuyaPacketProcess() - .text._Z15TuyaSerialInputv - 0x402274fc 0x18b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1cb (size before relaxing) - 0x40227518 TuyaSerialInput() - *fill* 0x40227687 0x1 - .text._Z14TuyaSetWifiLedv - 0x40227688 0xb0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdc (size before relaxing) - 0x40227690 TuyaSetWifiLed() - .text._Z8TuyaInitv - 0x40227738 0xc4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x110 (size before relaxing) - 0x4022773c TuyaInit() - .text._Z17TuyaButtonPressedv - 0x402277fc 0x3f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f (size before relaxing) - 0x40227800 TuyaButtonPressed() - *fill* 0x4022783b 0x1 - .text._Z6Xdrv16h - 0x4022783c 0xa5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xdd (size before relaxing) - 0x4022783c Xdrv16(unsigned char) - *fill* 0x402278e1 0x3 - .text._Z14RfReceiveCheckv - 0x402278e4 0xd5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x13d (size before relaxing) - 0x402278fc RfReceiveCheck() - *fill* 0x402279b9 0x3 - .text._Z6Xdrv17h - 0x402279bc 0x65 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x79 (size before relaxing) - 0x402279bc Xdrv17(unsigned char) - *fill* 0x40227a21 0x3 - .text._Z17PzemAcEverySecondv - 0x40227a24 0x1d8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x280 (size before relaxing) - 0x40227a2c PzemAcEverySecond() - .text._Z6Xnrg05h - 0x40227bfc 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x40227bfc Xnrg05(unsigned char) - .text._Z17PzemDcEverySecondv - 0x40227c3c 0x188 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x214 (size before relaxing) - 0x40227c44 PzemDcEverySecond() - .text._Z6Xnrg06h - 0x40227dc4 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x50 (size before relaxing) - 0x40227dc4 Xnrg06(unsigned char) - .text._Z17HueNotImplementedP6String - 0x40227e04 0x55 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x99 (size before relaxing) - 0x40227e08 HueNotImplemented(String*) - *fill* 0x40227e59 0x3 - .text._Z12HandleHueApiP6String - 0x40227e5c 0x1cf .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2f3 (size before relaxing) - 0x40227e80 HandleHueApi(String*) - *fill* 0x4022802b 0x1 - .text._Z12SonoffScSendPKc - 0x4022802c 0x40 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x64 (size before relaxing) - 0x40228030 SonoffScSend(char const*) - .text._Z12SonoffScInitv - 0x4022806c 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x40228070 SonoffScInit() - *fill* 0x40228085 0x3 - .text._Z6Xsns04h - 0x40228088 0x3b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4e (size before relaxing) - 0x40228088 Xsns04(unsigned char) - *fill* 0x402280c3 0x1 - .text._Z19SonoffScSerialInputPc - 0x402280c4 0x114 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x160 (size before relaxing) - 0x402280dc SonoffScSerialInput(char*) - .text._Z11SerialInputv - 0x402281d8 0x290 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x31c (size before relaxing) - 0x402281f8 SerialInput() - .text._Z11Ds18x20Initv - 0x40228468 0x145 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x17d (size before relaxing) - 0x4022846c Ds18x20Init() - *fill* 0x402285ad 0x3 - .text._Z6Xsns05h - 0x402285b0 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x67 (size before relaxing) - 0x402285b0 Xsns05(unsigned char) - *fill* 0x40228603 0x1 - .text._Z7DhtReadh - 0x40228604 0x1ba .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x22e (size before relaxing) - 0x40228618 DhtRead(unsigned char) - *fill* 0x402287be 0x2 - .text._Z14DhtReadTempHumh - 0x402287c0 0x11d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x165 (size before relaxing) - 0x402287cc DhtReadTempHum(unsigned char) - *fill* 0x402288dd 0x3 - .text._Z14DhtEverySecondv - 0x402288e0 0x33 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x402288e0 DhtEverySecond() - *fill* 0x40228913 0x1 - .text._Z6Xsns06h - 0x40228914 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x40228914 Xsns06(unsigned char) - *fill* 0x40228963 0x1 - .text._Z9BmpDetectv - 0x40228964 0xdc .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x114 (size before relaxing) - 0x40228974 BmpDetect() - .text._Z14BmpEverySecondv - 0x40228a40 0x2a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x41 (size before relaxing) - 0x40228a40 BmpEverySecond() - *fill* 0x40228a6a 0x2 - .text._Z6Xsns09h - 0x40228a6c 0x4f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x63 (size before relaxing) - 0x40228a6c Xsns09(unsigned char) - *fill* 0x40228abb 0x1 - .text._Z11Sgp30Updatev - 0x40228abc 0x90 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc0 (size before relaxing) - 0x40228ac8 Sgp30Update() - .text._Z6Xsns21h - 0x40228b4c 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x40228b4c Xsns21(unsigned char) - *fill* 0x40228b83 0x1 - .text._Z12LM75ADDetectv - 0x40228b84 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x9a (size before relaxing) - 0x40228b88 LM75ADDetect() - *fill* 0x40228bf2 0x2 - .text._Z6Xsns26h - 0x40228bf4 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x40228bf4 Xsns26(unsigned char) - *fill* 0x40228c2b 0x1 - .text._Z12CCS811Updatev - 0x40228c2c 0x101 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x155 (size before relaxing) - 0x40228c40 CCS811Update() - *fill* 0x40228d2d 0x3 - .text._Z6Xsns31h - 0x40228d30 0x37 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4a (size before relaxing) - 0x40228d30 Xsns31(unsigned char) - *fill* 0x40228d67 0x1 - .text._Z23HandleWifiConfigurationv$part$99 - 0x40228d68 0x535 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x7e9 (size before relaxing) - *fill* 0x4022929d 0x3 - .text._Z20WemoRespondToMSearchi - 0x402292a0 0x19b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x277 (size before relaxing) - 0x402292d0 WemoRespondToMSearch(int) - *fill* 0x4022943b 0x1 - .text._Z19HueRespondToMSearchv - 0x4022943c 0x1eb .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x37b (size before relaxing) - 0x40229458 HueRespondToMSearch() - *fill* 0x40229627 0x1 - .text._Z13ShowWebSourcei$part$92 - 0x40229628 0x68 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xac (size before relaxing) - .text._Z13ShowWebSourcei - 0x40229690 0x19 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1d (size before relaxing) - 0x40229690 ShowWebSource(int) - *fill* 0x402296a9 0x3 - .text._Z17ExecuteWebCommandPci - 0x402296ac 0x21 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2d (size before relaxing) - 0x402296ac ExecuteWebCommand(char*, int) - *fill* 0x402296cd 0x3 - .text._Z17HandleHttpCommandv$part$109 - 0x402296d0 0x1c6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x26e (size before relaxing) - *fill* 0x40229896 0x2 - .text._Z24HandleAjaxConsoleRefreshv$part$111 - 0x40229898 0x2aa .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x3f6 (size before relaxing) - *fill* 0x40229b42 0x2 - .text._Z23HandleAjaxStatusRefreshv - 0x40229b44 0x343 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x43f (size before relaxing) - 0x40229b88 HandleAjaxStatusRefresh() - *fill* 0x40229e87 0x1 - .text._Z10WebRestarth - 0x40229e88 0x10c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1bc (size before relaxing) - 0x40229eac WebRestart(unsigned char) - .text._Z13MqttReconnectv - 0x40229f94 0x153 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1f3 (size before relaxing) - 0x40229fa8 MqttReconnect() - *fill* 0x4022a0e7 0x1 - .text._Z9MqttCheckv - 0x4022a0e8 0x75 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x95 (size before relaxing) - 0x4022a0e8 MqttCheck() - *fill* 0x4022a15d 0x3 - .text._Z16Every250mSecondsv - 0x4022a160 0x486 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5e6 (size before relaxing) - 0x4022a190 Every250mSeconds() - *fill* 0x4022a5e6 0x2 - .text.loop 0x4022a5e8 0xd7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x18b (size before relaxing) - 0x4022a5fc loop - *fill* 0x4022a6bf 0x1 - .text.startup._GLOBAL__sub_I_Settings - 0x4022a6c0 0xf1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b5 (size before relaxing) - *fill* 0x4022a7b1 0x3 - .text.exit._GLOBAL__sub_D_Settings - 0x4022a7b4 0x5d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xc1 (size before relaxing) - *fill* 0x4022a811 0x3 - .text._Z13CaptivePortalv - 0x4022a814 0x107 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1c7 (size before relaxing) - 0x4022a820 CaptivePortal() - *fill* 0x4022a91b 0x1 - .text._Z10HandleRootv - 0x4022a91c 0x404 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x608 (size before relaxing) - 0x4022a974 HandleRoot() - .text._Z8HttpUserv - 0x4022ad20 0x2c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x34 (size before relaxing) - 0x4022ad20 HttpUser() - .text._Z19HandleConfigurationv - 0x4022ad4c 0xcd .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x179 (size before relaxing) - 0x4022ad5c HandleConfiguration() - *fill* 0x4022ae19 0x3 - .text._Z25HandleModuleConfigurationv - 0x4022ae1c 0x3af .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x566 (size before relaxing) - 0x4022ae88 HandleModuleConfiguration() - *fill* 0x4022b1cb 0x1 - .text._Z23HandleWifiConfigurationv - 0x4022b1cc 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb0 (size before relaxing) - 0x4022b1cc HandleWifiConfiguration() - .text._Z26HandleLoggingConfigurationv - 0x4022b22c 0x5f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb3 (size before relaxing) - 0x4022b22c HandleLoggingConfiguration() - *fill* 0x4022b28b 0x1 - .text._Z24HandleOtherConfigurationv - 0x4022b28c 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x4022b28c HandleOtherConfiguration() - .text._Z25HandleBackupConfigurationv - 0x4022b2ec 0x18f .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x256 (size before relaxing) - 0x4022b300 HandleBackupConfiguration() - *fill* 0x4022b47b 0x1 - .text._Z24HandleResetConfigurationv - 0x4022b47c 0xb8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x150 (size before relaxing) - 0x4022b48c HandleResetConfiguration() - .text._Z26HandleRestoreConfigurationv - 0x4022b534 0xe4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x194 (size before relaxing) - 0x4022b54c HandleRestoreConfiguration() - .text._Z17HandleInformationv - 0x4022b618 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x45 (size before relaxing) - 0x4022b618 HandleInformation() - *fill* 0x4022b641 0x3 - .text._Z21HandleUpgradeFirmwarev - 0x4022b644 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1e2 (size before relaxing) - 0x4022b65c HandleUpgradeFirmware() - *fill* 0x4022b74a 0x2 - .text._Z26HandleUpgradeFirmwareStartv - 0x4022b74c 0x106 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1c2 (size before relaxing) - 0x4022b760 HandleUpgradeFirmwareStart() - *fill* 0x4022b852 0x2 - .text._Z16HandleUploadDonev - 0x4022b854 0x1fe .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2e6 (size before relaxing) - 0x4022b8ac HandleUploadDone() - *fill* 0x4022ba52 0x2 - .text._Z17HandleHttpCommandv - 0x4022ba54 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x23 (size before relaxing) - 0x4022ba54 HandleHttpCommand() - *fill* 0x4022ba68 0x0 - .text._Z13HandleConsolev - 0x4022ba68 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1b4 (size before relaxing) - 0x4022ba84 HandleConsole() - .text._Z24HandleAjaxConsoleRefreshv - 0x4022bb58 0x29 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x45 (size before relaxing) - 0x4022bb58 HandleAjaxConsoleRefresh() - *fill* 0x4022bb81 0x3 - .text._Z23HandleMqttConfigurationv - 0x4022bb84 0x60 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb4 (size before relaxing) - 0x4022bb84 HandleMqttConfiguration() - .text._Z24HandleTimerConfigurationv - 0x4022bbe4 0x272 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x456 (size before relaxing) - 0x4022bc2c HandleTimerConfiguration() - *fill* 0x4022be56 0x2 - .text._Z14HandleNotFoundv - 0x4022be58 0x130 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x1ec (size before relaxing) - 0x4022be6c HandleNotFound() - .text._Z7WebSendPc - 0x4022bf88 0x1c8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x2e0 (size before relaxing) - 0x4022bfa8 WebSend(char*) - .text._Z10WebCommandv - 0x4022c150 0x1d1 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x269 (size before relaxing) - 0x4022c164 WebCommand() - *fill* 0x4022c321 0x3 - .text._Z7PollUdpv - 0x4022c324 0x245 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x389 (size before relaxing) - 0x4022c354 PollUdp() - *fill* 0x4022c569 0x3 - .text._Z6Xdrv01h - 0x4022c56c 0x47 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x5f (size before relaxing) - 0x4022c56c Xdrv01(unsigned char) - *fill* 0x4022c5b3 0x0 - *fill* 0x4022c5b3 0x0 - *fill* 0x4022c5b3 0x1 - .text.pwm_sort_array - 0x4022c5b4 0x68 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x4022c5b4 pwm_sort_array - *fill* 0x4022c61c 0x0 - *fill* 0x4022c61c 0x0 - *fill* 0x4022c61c 0x0 - *fill* 0x4022c61c 0x0 - .text._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data - 0x4022c61c 0x11 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c61c std::_Function_handler::_M_invoke(std::_Any_data const&) - *fill* 0x4022c62d 0x3 - .text._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation - 0x4022c630 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c630 std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - .text._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j - 0x4022c644 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c644 std::_Function_handler::_M_invoke(std::_Any_data const&, char*, unsigned char*, unsigned int) - *fill* 0x4022c65b 0x1 - .text._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation - 0x4022c65c 0x14 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c65c std::_Function_base::_Base_manager::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation) - *fill* 0x4022c670 0x0 - *fill* 0x4022c670 0x0 - *fill* 0x4022c670 0x0 - .text._ZN11ArduinoJson20StaticJsonBufferBase5allocEj - 0x4022c670 0x1e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c670 ArduinoJson::StaticJsonBufferBase::alloc(unsigned int) - *fill* 0x4022c68e 0x0 - *fill* 0x4022c68e 0x2 - .text._ZN5Print5writeEPKcj - 0x4022c690 0x13 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c690 Print::write(char const*, unsigned int) - *fill* 0x4022c6a3 0x1 - .text._ZN14HardwareSerial5writeEj - 0x4022c6a4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c6a4 HardwareSerial::write(unsigned int) - *fill* 0x4022c6bb 0x1 - .text._ZN14HardwareSerial5writeEi - 0x4022c6bc 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c6bc HardwareSerial::write(int) - *fill* 0x4022c6d3 0x1 - .text._ZNSt14_Function_baseD2Ev - 0x4022c6d4 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c6d4 std::_Function_base::~_Function_base() - 0x4022c6d4 std::_Function_base::~_Function_base() - *fill* 0x4022c6eb 0x0 - *fill* 0x4022c6eb 0x0 - *fill* 0x4022c6eb 0x1 - .text._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE - 0x4022c6ec 0x1b .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c6ec ArduinoJson::Internals::JsonBufferAllocated::operator new(unsigned int, ArduinoJson::JsonBuffer*) - *fill* 0x4022c707 0x0 - *fill* 0x4022c707 0x0 - *fill* 0x4022c707 0x0 - *fill* 0x4022c707 0x0 - *fill* 0x4022c707 0x0 - *fill* 0x4022c707 0x1 - .text._Z14__get_adc_modev - 0x4022c708 0x5 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c708 __get_adc_mode() - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x0 - *fill* 0x4022c70d 0x3 - .text.memchr 0x4022c710 0x17 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c710 memchr - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x0 - *fill* 0x4022c727 0x1 - .text._Z11SetShortcutPch - 0x4022c728 0x16 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c728 SetShortcut(char*, unsigned char) - *fill* 0x4022c73e 0x0 - *fill* 0x4022c73e 0x0 - *fill* 0x4022c73e 0x0 - *fill* 0x4022c73e 0x2 - .text._Z13MakeValidMqtthPc - 0x4022c740 0x53 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c740 MakeValidMqtt(unsigned char, char*) - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x0 - *fill* 0x4022c793 0x1 - .text._Z15GetUsedInModulehPh - 0x4022c794 0xb6 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c794 GetUsedInModule(unsigned char, unsigned char*) - *fill* 0x4022c84a 0x0 - *fill* 0x4022c84a 0x2 - .text._Z7GetHashPKcj - 0x4022c84c 0x20 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c84c GetHash(char const*, unsigned int) - *fill* 0x4022c86c 0x0 - .text._Z14TimeDifferencemm - 0x4022c86c 0x1c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c86c TimeDifference(unsigned long, unsigned long) - *fill* 0x4022c888 0x0 - *fill* 0x4022c888 0x0 - *fill* 0x4022c888 0x0 - *fill* 0x4022c888 0x0 - *fill* 0x4022c888 0x0 - .text._Z20WifiGetRssiAsQualityi - 0x4022c888 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c888 WifiGetRssiAsQuality(int) - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x0 - *fill* 0x4022c8a2 0x2 - .text._Z12EnergyMarginhttRhS_ - 0x4022c8a4 0x42 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c8a4 EnergyMargin(unsigned char, unsigned short, unsigned short, unsigned char&, unsigned char&) - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x0 - *fill* 0x4022c8e6 0x2 - .text._Z24rf_find_hex_record_startPhj - 0x4022c8e8 0x1d .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c8e8 rf_find_hex_record_start(unsigned char*, unsigned int) - *fill* 0x4022c905 0x3 - .text._Z22rf_find_hex_record_endPhj - 0x4022c908 0x1a .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c908 rf_find_hex_record_end(unsigned char*, unsigned int) - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x0 - *fill* 0x4022c922 0x2 - .text._Z7PzemCrcPh - 0x4022c924 0x18 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c924 PzemCrc(unsigned char*) - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - *fill* 0x4022c93c 0x0 - .text._Z11OneWireCrc8Ph - 0x4022c93c 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c93c OneWireCrc8(unsigned char*) - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - *fill* 0x4022c978 0x0 - .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ - 0x4022c978 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c978 void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::CharPointerTraits::Reader&) - *fill* 0x4022c9e6 0x0 - *fill* 0x4022c9e6 0x0 - *fill* 0x4022c9e6 0x0 - *fill* 0x4022c9e6 0x2 - .text._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ - 0x4022c9e8 0x6e .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x4022c9e8 void ArduinoJson::Internals::skipSpacesAndComments::Reader>(ArduinoJson::Internals::StdStringTraits::Reader&) - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *fill* 0x4022ca56 0x0 - *.pioenvs/*/src/*.o(EXCLUDE_FILE(umm_malloc.o) .literal*, \ EXCLUDE_FILE(umm_malloc.o) .text*) - *libm.a:(.literal .text .literal.* .text.*) - *fill* 0x4022ca56 0x2 - .literal 0x4022ca58 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - 0x17c (size before relaxing) - .literal 0x4022caf0 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - 0x34 (size before relaxing) - .literal 0x4022caf8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - 0x4 (size before relaxing) - .literal 0x4022caf8 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - 0x1c (size before relaxing) - .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - 0x1c (size before relaxing) - .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - 0x34 (size before relaxing) - .literal 0x4022cb04 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - 0x24 (size before relaxing) - .literal 0x4022cb04 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - 0x1c (size before relaxing) - .literal 0x4022cb18 0xc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - 0x38 (size before relaxing) - .literal 0x4022cb24 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - 0x38 (size before relaxing) - .literal 0x4022cb2c 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - 0x1fc (size before relaxing) - .literal 0x4022cb8c 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - 0x1c4 (size before relaxing) - .literal 0x4022cb94 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - 0x138 (size before relaxing) - .literal 0x4022cbd8 0x8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - 0x4c (size before relaxing) - .literal 0x4022cbe0 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - 0xc8 (size before relaxing) - .literal 0x4022cc20 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - 0x130 (size before relaxing) - .literal 0x4022cc38 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - 0x9c (size before relaxing) - .literal 0x4022cc68 0x70 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - 0x188 (size before relaxing) - .literal 0x4022ccd8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - 0x3c (size before relaxing) - .literal 0x4022ccd8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - 0x4 (size before relaxing) - .literal 0x4022ccd8 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .literal 0x4022ccdc 0x10 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - 0x5c (size before relaxing) - .literal 0x4022ccec 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - 0x8 (size before relaxing) - .literal 0x4022ccec 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - 0x40 (size before relaxing) - .text 0x4022ccf0 0x484 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - 0x488 (size before relaxing) - 0x4022ccf0 atan - .text 0x4022d174 0xfc c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - 0x104 (size before relaxing) - 0x4022d174 cos - .text 0x4022d270 0x3e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - 0x4022d270 fabs - *fill* 0x4022d2ae 0x2 - .text 0x4022d2b0 0x9d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - 0x4022d2b0 __fpclassifyd - *fill* 0x4022d34d 0x3 - .text 0x4022d350 0x1ee c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - 0x4022d350 modf - *fill* 0x4022d53e 0x2 - .text 0x4022d540 0x101 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - 0x105 (size before relaxing) - 0x4022d540 sin - *fill* 0x4022d641 0x3 - .text 0x4022d644 0x97 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - 0x9f (size before relaxing) - 0x4022d644 tan - *fill* 0x4022d6db 0x1 - .text 0x4022d6dc 0x89 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - 0x4022d6dc __fpclassifyf - *fill* 0x4022d765 0x3 - .text 0x4022d768 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - 0xce (size before relaxing) - 0x4022d768 acos - *fill* 0x4022d826 0x2 - .text 0x4022d828 0xbe c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - 0xce (size before relaxing) - 0x4022d828 asin - *fill* 0x4022d8e6 0x2 - .text 0x4022d8e8 0x5c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - 0x5f2 (size before relaxing) - 0x4022d8e8 __ieee754_acos - *fill* 0x4022deae 0x2 - .text 0x4022deb0 0x560 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - 0x578 (size before relaxing) - 0x4022deb0 __ieee754_asin - .text 0x4022e410 0x626 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - 0x62e (size before relaxing) - 0x4022e410 __ieee754_rem_pio2 - *fill* 0x4022ea36 0x2 - .text 0x4022ea38 0x38e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - 0x4022ea38 __ieee754_sqrt - *fill* 0x4022edc6 0x2 - .text 0x4022edc8 0x231 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - 0x4022edc8 __kernel_cos - *fill* 0x4022eff9 0x3 - .text 0x4022effc 0xaff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - 0xb0f (size before relaxing) - 0x4022effc __kernel_rem_pio2 - *fill* 0x4022fafb 0x1 - .text 0x4022fafc 0x19b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - 0x4022fafc __kernel_sin - *fill* 0x4022fc97 0x1 - .text 0x4022fc98 0x526 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - 0x52a (size before relaxing) - 0x4022fc98 __kernel_tan - *fill* 0x402301be 0x2 - .text 0x402301c0 0x1d1 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - 0x402301c0 floor - *fill* 0x40230391 0x3 - .text 0x40230394 0x35 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - 0x40230394 matherr - *fill* 0x402303c9 0x3 - .text 0x402303cc 0x27 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - 0x402303cc nan - *fill* 0x402303f3 0x1 - .text 0x402303f4 0x19e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - 0x1a6 (size before relaxing) - 0x402303f4 scalbn - *fill* 0x40230592 0x2 - .text 0x40230594 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - 0x40230594 copysign - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *fill* 0x402305ed 0x0 - *libgcc.a:_umoddi3.o(.literal .text) - *fill* 0x402305ed 0x3 - .text 0x402305f0 0x366 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - 0x402305f0 __umoddi3 - *fill* 0x40230956 0x0 - *libgcc.a:_udivdi3.o(.literal .text) - *libsmartconfig.a:(.literal .text .literal.* .text.*) - *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text .irom.text.*) - *fill* 0x40230956 0x2 - .irom0.text 0x40230958 0x238 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - 0x274 (size before relaxing) - 0x40230978 umm_info - 0x40230b74 umm_free_heap_size - .irom0.text 0x40230b90 0xae9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - 0xe19 (size before relaxing) - 0x40230bb0 fpm_set_type_from_upper - 0x40230bb0 wifi_fpm_set_sleep_type - 0x40230c6c wifi_fpm_get_sleep_type - 0x40230c6c fpm_get_slp_type - 0x40230c74 fpm_rf_is_closed - 0x40230c88 fpm_is_open - 0x40230c94 fpm_allow_tx - 0x40230cc4 wifi_fpm_close - 0x40230cc4 fpm_close - 0x40230d40 wifi_fpm_open - 0x40230d40 fpm_open - 0x40230da8 fpm_attach - 0x40230fb0 wifi_fpm_set_wakeup_cb - 0x40230fb0 fpm_set_wakeup_cb - 0x40231130 wifi_fpm_do_wakeup - 0x40231130 fpm_do_wakeup - 0x40231600 wifi_fpm_do_sleep - 0x40231600 fpm_do_sleep - *fill* 0x40231679 0x3 - .irom0.text 0x4023167c 0x15f2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x1992 (size before relaxing) - 0x40231688 PPWdtReset - 0x402316bc pp_soft_wdt_init - 0x402316dc pp_soft_wdt_feed - 0x402316dc system_soft_wdt_feed - 0x402316f8 pp_soft_wdt_stop - 0x402316f8 system_soft_wdt_stop - 0x40231724 pp_soft_wdt_restart - 0x40231724 system_soft_wdt_restart - 0x4023175c RxNodeNum - 0x40231774 TxNodeNum - 0x40231798 pp_disable_noise_timer - 0x402317b8 pp_enable_noise_timer - 0x402318c8 pp_noise_test - 0x402318d8 reset_noise_timer - 0x40231910 pp_disable_idle_timer - 0x40231934 pp_enable_idle_timer - 0x4023195c pp_try_enable_idle_timer - 0x40231998 ppPeocessRxPktHdr - 0x40231cd4 HdlAllBuffedEb - 0x40231d5c ppTxPkt - 0x40231ed4 ppProcessWaitQ - 0x40231ee4 ppRegisterTxCallback - 0x40231f0c ppUnregisterTxCallback - 0x40231f40 ppRecycleRxPkt - 0x40231fa0 ppCheckTxIdle - 0x40232220 pp_tx_idle_timeout - 0x402323e4 DefFreqCalTimerCB - 0x40232770 ppGetTxQFirstAvail_Locked - 0x40232854 pp_attach - *fill* 0x40232c6e 0x2 - .irom0.text 0x40232c70 0x296 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - 0x2a2 (size before relaxing) - 0x40232ebc RC_SetBasicRate - *fill* 0x40232f06 0x2 - .irom0.text 0x40232f08 0x5ed C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - 0x64d (size before relaxing) - 0x40232f08 phytype2mode - 0x40232f24 rc_set_rate_limit_id - 0x40233040 rcUpdatePhyMode - 0x4023320c rcAttach - 0x40233258 rcGetTrc - 0x40233260 trc_onDisconnect - 0x40233264 trc_onScanStart - 0x40233278 trc_onScanDone - 0x40233298 rc_enable_trc - 0x40233370 rc_get_mask - 0x40233384 rc_disable_trc - 0x402333d8 rc_disable_trc_by_interface - 0x402333f4 rc_get_sta_trc - 0x40233438 rc_get_trc - 0x402334a8 rc_get_trc_by_index - 0x402334c8 rc_only_sta_trc - *fill* 0x402334f5 0x3 - .irom0.text 0x402334f8 0xb1b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0xc53 (size before relaxing) - 0x40233510 wDev_Option_Init - 0x40233604 wDev_Enable_Beacon_Tsf - 0x40233620 wDev_Disable_Beacon_Tsf - 0x4023363c wDev_Set_Beacon_Int - 0x40233644 wDev_Reset_TBTT - 0x40233674 wDev_Get_Next_TBTT - 0x402338f4 wDev_Initialize - 0x40233964 wDevForceAck6M - 0x40233980 wDev_SetMacAddress - 0x40233a20 wDev_SetRxPolicy - 0x40233a74 wDev_SetBssid - 0x40233b4c wDev_ClearBssid - 0x40233b84 wDev_Insert_KeyEntry - 0x40233c78 wDev_remove_KeyEntry - 0x40233cb4 wDev_remove_KeyEntry_all_cnx - 0x40233d04 wDev_Crypto_Conf - 0x40233da4 wDev_Crypto_Disable - 0x40233ddc wDevEnableRx - 0x40233e0c wdev_go_sniffer - 0x40233ee8 wdev_set_sniffer_addr - 0x40233f44 wdev_exit_sniffer - *fill* 0x40234013 0x1 - .irom0.text 0x40234014 0x3f5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - 0x4c1 (size before relaxing) - 0x40234024 esf_buf_alloc - 0x4023420c esf_buf_recycle - 0x4023434c esf_buf_setup - *fill* 0x40234409 0x3 - .irom0.text 0x4023440c 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - 0x581 (size before relaxing) - 0x4023442c ic_get_addr - 0x40234438 ic_set_opmode - 0x4023444c ic_enable_interface - 0x4023449c ic_interface_enabled - 0x402344b0 ic_disable_interface - 0x402344f8 ic_is_pure_sta - 0x40234514 ic_get_ptk_alg - 0x40234524 ic_get_gtk_alg - 0x40234534 ic_set_ptk_alg - 0x40234544 ic_set_gtk_alg - 0x40234554 ic_interface_is_p2p - 0x402345f8 ic_set_vif - 0x402346c0 ic_set_sta - 0x40234798 ic_bss_info_update - 0x402347f4 ic_set_key - 0x40234850 ic_remove_key - 0x40234864 ic_get_rssi - *fill* 0x40234889 0x3 - .irom0.text 0x4023488c 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0x118 (size before relaxing) - 0x40234890 lmacInitAc - 0x402348c4 lmacInit - 0x40234970 lmacSetRetryLimit - .irom0.text 0x4023498c 0x180d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - 0x1d31 (size before relaxing) - 0x40234998 pm_rtc_clock_cali_proc - 0x402349d0 pm_get_ck170_period - 0x402349f4 pm_set_sleep_time - 0x40234d4c pm_rf_is_closed - 0x40234d78 pm_set_sleep_type_from_upper - 0x40234e68 pm_get_sleep_type - 0x40234fec uart_tx_flush - 0x40234ff0 pm_suspend - 0x40235200 pm_shutdown - 0x402352c8 pm_reset_idle_sleep - 0x40235308 pm_idle_sleep - 0x40235318 pm_open - 0x402353dc pm_onBcnRx - 0x40235740 StopLightSleepSetFunc - 0x40235748 LightSleepWakedCbSetFunc - 0x40235c38 pm_enable_gpio_wakeup - 0x40235c70 pm_attach - 0x40235d4c pm_send_nullfunc - 0x40235ed4 pm_is_waked - 0x40235eec pm_is_open - 0x40235f04 pm_scan_lock - 0x40235f2c pm_try_scan_unlock - 0x40235f44 pm_force_scan_unlock - 0x40235fbc pm_scan_unlocked - 0x40235fd0 pm_allow_tx - 0x40235fec pm_assoc_parse - 0x40236004 pm_set_addr - 0x40236024 pm_sleep_for - 0x40236054 pm_post - 0x40236158 pm_get_idle_wait_time - *fill* 0x40236199 0x3 - .irom0.text 0x4023619c 0x9a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0xc31 (size before relaxing) - 0x40236358 wdt_init - 0x402363fc user_uart_wait_tx_fifo_empty - *fill* 0x40236b41 0x3 - .irom0.text 0x40236b44 0x610 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - 0x620 (size before relaxing) - 0x40236b44 divide - 0x40236b80 skip_atoi - 0x40236d04 ets_vsnprintf - 0x40237064 ets_vsprintf - 0x40237088 ets_sprintf - 0x402370b0 ets_strcat - 0x402370d0 ets_strrchr - 0x402370fc ets_strchr - 0x40237114 bit_popcount - 0x40237130 ets_snprintf - .irom0.text 0x40237154 0x172 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0x1b2 (size before relaxing) - 0x4023715c ets_timer_done - 0x40237198 ets_timer_handler_isr - 0x40237264 ets_timer_init - *fill* 0x402372c6 0x2 - .irom0.text 0x402372c8 0x3445 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x3eb1 (size before relaxing) - 0x402372cc system_set_os_print - 0x402372dc system_get_os_print - 0x402374a4 system_pp_recycle_rx_pkt - 0x402374b8 system_adc_read - 0x402374d0 system_get_vdd33 - 0x402374e8 system_restart_hook - 0x402374f8 system_restart_local - 0x402375d8 system_restart - 0x40237634 system_restore - 0x4023769c system_get_flash_size_map - 0x402376bc system_get_boot_version - 0x402376f4 system_get_test_result - 0x40237718 system_get_userbin_addr - 0x402377b0 system_get_boot_mode - 0x402377e0 system_restart_enhance - 0x40237910 system_upgrade_userbin_set - 0x4023795c system_upgrade_userbin_check - 0x4023799c system_upgrade_flag_set - 0x402379b0 system_upgrade_flag_check - 0x402379d4 system_upgrade_reboot - 0x40237afc system_deep_sleep_instant - 0x40237c94 system_deep_sleep - 0x40237cf4 system_deep_sleep_set_option - 0x40237d10 system_phy_temperature_alert - 0x40237d24 system_phy_set_max_tpw - 0x40237d38 system_phy_set_tpw_via_vdd33 - 0x40237d4c system_phy_set_rfoption - 0x40237d60 system_phy_set_powerup_option - 0x40237d74 system_update_cpu_freq - 0x40237dd0 system_get_cpu_freq - 0x40237de8 system_overclock - 0x40237e14 system_restoreclock - 0x40237e44 system_timer_reinit - 0x40237e5c system_relative_time - 0x40237e7c system_station_got_ip_set - 0x40237fa4 system_print_meminfo - 0x40238004 system_get_free_heap_size - 0x4023801c system_get_chip_id - 0x40238040 system_rtc_clock_cali_proc - 0x40238054 system_get_rtc_time - 0x40238068 system_mktime - 0x40238138 system_init_done_cb - 0x40238140 system_get_rst_info - 0x40238148 system_get_data_of_array_8 - 0x4023816c system_get_data_of_array_16 - 0x40238194 system_get_string_from_flash - 0x40238200 wifi_softap_dhcps_start - 0x40238248 wifi_softap_dhcps_stop - 0x40238288 wifi_softap_dhcps_status - 0x40238290 wifi_station_dhcpc_start - 0x402382e8 wifi_station_dhcpc_stop - 0x40238328 wifi_station_dhcpc_event - 0x4023839c wifi_station_dhcpc_set_maxtry - 0x402383ac wifi_station_dhcpc_status - 0x40238424 wifi_get_opmode - 0x40238438 wifi_get_opmode_default - 0x402384b4 wifi_get_broadcast_if - 0x402384f0 wifi_set_broadcast_if - 0x40238650 wifi_set_opmode - 0x40238664 wifi_set_opmode_current - 0x40238678 system_get_checksum - 0x402386b4 wifi_param_save_protect_with_check - 0x40238770 system_param_save_with_protect - 0x40238818 system_save_sys_param - 0x40238844 system_param_load - 0x4023897c wifi_station_get_config - 0x40238990 wifi_station_get_config_default - 0x402389b0 wifi_station_get_ap_info - 0x40238a68 wifi_station_ap_number_set - 0x40238df4 wifi_station_set_config - 0x40238e0c wifi_station_set_config_current - 0x40238e24 wifi_station_restore_config - 0x40238e3c wifi_station_get_current_ap_id - 0x40238e50 wifi_station_ap_check - 0x40238e98 wifi_station_ap_change - 0x40238fc4 wifi_station_scan - 0x40239010 wifi_station_get_auto_connect - 0x40239024 wifi_station_set_auto_connect - 0x40239074 wifi_station_save_pmk2cache - 0x40239128 wifi_station_connect - 0x402391bc wifi_station_disconnect - 0x4023927c wifi_station_get_connect_status - 0x402392ac wifi_station_set_reconnect_policy - 0x402392c4 wifi_station_get_reconnect_policy - 0x402392cc wifi_station_get_rssi - 0x4023931c wifi_station_set_default_hostname - 0x40239384 wifi_station_get_hostname - 0x402393b4 wifi_station_set_hostname - 0x40239454 wifi_softap_cacl_mac - 0x402394c4 wifi_softap_set_default_ssid - 0x402396a4 wifi_softap_get_config - 0x402396b8 wifi_softap_get_config_default - 0x40239a0c wifi_softap_set_config - 0x40239a20 wifi_softap_set_config_current - 0x40239a34 wifi_softap_set_station_info - 0x40239aa0 wifi_softap_get_station_info - 0x40239b50 wifi_softap_free_station_info - 0x40239b98 wifi_softap_get_station_num - 0x40239be8 wifi_softap_deauth - 0x40239c98 wifi_softap_get_beacon_only_mode - 0x40239cac wifi_softap_set_beacon_only_mode - 0x40239d10 wifi_register_user_ie_manufacturer_recv_cb - 0x40239d24 wifi_unregister_user_ie_manufacturer_recv_cb - 0x40239d58 wifi_set_user_ie - 0x40239e68 wifi_get_user_ie - 0x40239e9c wifi_get_phy_mode - 0x40239ea4 wifi_set_phy_mode - 0x40239f6c wifi_set_sleep_type - 0x40239f88 wifi_get_sleep_type - 0x40239f9c wifi_get_channel - 0x40239fbc wifi_set_channel - 0x40239ffc wifi_promiscuous_set_mac - 0x4023a058 wifi_promiscuous_enable - 0x4023a13c wifi_set_promiscuous_rx_cb - 0x4023a14c wifi_get_ip_info - 0x4023a1cc wifi_set_ip_info - 0x4023a240 wifi_get_macaddr - 0x4023a2a0 wifi_set_macaddr - 0x4023a3bc wifi_enable_6m_rate - 0x4023a3c4 wifi_get_user_fixed_rate - 0x4023a3e4 wifi_set_user_fixed_rate - 0x4023a404 wifi_set_user_sup_rate - 0x4023a440 wifi_set_user_rate_limit - 0x4023a464 wifi_get_user_limit_rate_mask - 0x4023a46c wifi_set_user_limit_rate_mask - 0x4023a484 wifi_register_send_pkt_freedom_cb - 0x4023a498 wifi_unregister_send_pkt_freedom_cb - 0x4023a4a4 wifi_send_pkt_freedom - 0x4023a4f0 wifi_rfid_locp_recv_open - 0x4023a504 wifi_rfid_locp_recv_close - 0x4023a518 wifi_register_rfid_locp_recv_cb - 0x4023a52c wifi_unregister_rfid_locp_recv_cb - 0x4023a544 wifi_status_led_install - 0x4023a578 wifi_status_led_uninstall - 0x4023a59c wifi_set_status_led_output_level - 0x4023a5f0 wifi_set_event_handler_cb - 0x4023a638 system_os_task - 0x4023a674 system_uart_swap - 0x4023a6d4 system_uart_de_swap - 0x4023a708 system_get_sdk_version - *fill* 0x4023a70d 0x3 - .irom0.text 0x4023a710 0x2f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - 0x3b2 (size before relaxing) - 0x4023a7c8 eagle_lwip_if_alloc - 0x4023a978 eagle_lwip_if_free - 0x4023a9e4 eagle_lwip_getif - *fill* 0x4023aa06 0x2 - .irom0.text 0x4023aa08 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - 0x302 (size before relaxing) - 0x4023aa08 inc_byte_array - 0x4023aa5c hex2byte - 0x4023aa90 hexstr2bin - 0x4023aadc wpa_get_ntp_timestamp - 0x4023ab74 wpa_config_parse_string - 0x4023ac78 dup_binstr - *fill* 0x4023acbe 0x2 - .irom0.text 0x4023acc0 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - 0xdc (size before relaxing) - 0x4023acc4 ets_strdup - 0x4023ad08 os_get_time - 0x4023ad0c r_rand - 0x4023ad20 os_random - 0x4023ad30 os_get_random - .irom0.text 0x4023ad8c 0xd3c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0xee8 (size before relaxing) - 0x4023af8c node_insert_to_list - 0x4023afc8 node_remove_from_list - 0x4023b000 dhcps_start - 0x4023b188 dhcps_stop - 0x4023b1f4 wifi_softap_set_dhcps_lease - 0x4023b2e0 wifi_softap_get_dhcps_lease - 0x4023b328 dhcps_coarse_tmr - 0x4023b3e8 wifi_softap_set_dhcps_offer_option - 0x4023b428 wifi_softap_set_dhcps_lease_time - 0x4023b458 wifi_softap_reset_dhcps_lease_time - 0x4023b484 wifi_softap_get_dhcps_lease_time - 0x4023b48c wifi_softap_dhcps_client_leave - 0x4023b548 wifi_softap_dhcps_client_update - .irom0.text 0x4023bac8 0xbd5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0xcb5 (size before relaxing) - 0x4023bac8 espconn_copy_partial - 0x4023bb7c espconn_list_creat - 0x4023bb9c espconn_list_delete - 0x4023bbc0 espconn_pbuf_create - 0x4023bbdc espconn_pbuf_delete - 0x4023bc04 espconn_find_connection - 0x4023bca8 espconn_connect - 0x4023bdb4 espconn_create - 0x4023be04 espconn_send - 0x4023be04 espconn_sent - 0x4023bef4 espconn_sendto - 0x4023bf54 espconn_tcp_get_wnd - 0x4023bf74 espconn_tcp_set_wnd - 0x4023bf9c espconn_tcp_get_mss - 0x4023bfa4 espconn_tcp_get_max_con - 0x4023bfb4 espconn_tcp_set_max_con - 0x4023bfd8 espconn_tcp_get_max_retran - 0x4023bfe8 espconn_tcp_set_max_retran - 0x4023c00c espconn_tcp_get_max_syn - 0x4023c01c espconn_tcp_set_max_syn - 0x4023c03c espconn_tcp_get_max_con_allow - 0x4023c064 espconn_tcp_set_max_con_allow - 0x4023c098 espconn_tcp_set_buf_count - 0x4023c0c8 espconn_regist_sentcb - 0x4023c0d8 espconn_regist_write_finish - 0x4023c0f0 espconn_regist_connectcb - 0x4023c104 espconn_regist_recvcb - 0x4023c114 espconn_regist_reconcb - 0x4023c128 espconn_regist_disconcb - 0x4023c140 espconn_get_connection_info - 0x4023c204 espconn_accept - 0x4023c250 espconn_regist_time - 0x4023c2b8 espconn_disconnect - 0x4023c308 espconn_abort - 0x4023c35c espconn_get_packet_info - 0x4023c404 espconn_set_opt - 0x4023c468 espconn_clear_opt - 0x4023c4d0 espconn_set_keepalive - 0x4023c560 espconn_get_keepalive - 0x4023c5ec espconn_delete - 0x4023c630 espconn_port - 0x4023c668 espconn_gethostbyname - 0x4023c688 espconn_dns_setserver - *fill* 0x4023c69d 0x3 - .irom0.text 0x4023c6a0 0x105c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - 0x13b0 (size before relaxing) - 0x4023cd40 espconn_kill_oldest_pcb - 0x4023ce6c espconn_kill_pcb - 0x4023ced4 espconn_find_current_pcb - 0x4023cf88 espconn_tcp_memp_free - 0x4023d1c0 espconn_tcp_sent - 0x4023d2a4 espconn_tcp_disconnect - 0x4023d2d4 espconn_recv_hold - 0x4023d318 espconn_recv_unhold - 0x4023d37c espconn_tcp_write - 0x4023d4a4 espconn_tcp_client - 0x4023d598 espconn_tcp_server - 0x4023d64c espconn_tcp_delete - 0x4023d6e0 espconn_init - .irom0.text 0x4023d6fc 0x55c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - 0x6d4 (size before relaxing) - 0x4023d7e0 espconn_udp_sendto - 0x4023d9cc espconn_udp_sent - 0x4023db70 espconn_udp_disconnect - 0x4023dbb0 espconn_udp_server - 0x4023dc20 espconn_igmp_leave - 0x4023dc3c espconn_igmp_join - .irom0.text 0x4023dc58 0x13f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - 0x15d8 (size before relaxing) - 0x4023ea14 dhcp_set_struct - 0x4023ea40 dhcp_cleanup - 0x4023ea68 dhcp_inform - 0x4023eb18 dhcp_network_changed - 0x4023eb64 dhcp_arp_reply - 0x4023ec14 dhcp_renew - 0x4023ecf8 dhcp_coarse_tmr - 0x4023ed84 dhcp_release - 0x4023ee54 dhcp_fine_tmr - 0x4023ef50 dhcp_stop - 0x4023ef8c dhcp_start - .irom0.text 0x4023f050 0x5d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - 0x67f (size before relaxing) - 0x4023f464 dns_setserver - 0x4023f48c dns_init - 0x4023f4d0 dns_getserver - 0x4023f4e8 dns_tmr - 0x4023f518 dns_gethostbyname - *fill* 0x4023f623 0x1 - .irom0.text 0x4023f624 0x45 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - 0x71 (size before relaxing) - 0x4023f628 lwip_init - *fill* 0x4023f669 0x3 - .irom0.text 0x4023f66c 0x290 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - 0x2dc (size before relaxing) - 0x4023f66c netif_init - 0x4023f670 netif_find - 0x4023f6a8 netif_set_ipaddr - 0x4023f714 netif_set_addr - 0x4023f748 netif_add - 0x4023f7bc netif_set_gw - 0x4023f7c4 netif_set_netmask - 0x4023f7cc netif_set_default - 0x4023f7d4 netif_set_up - 0x4023f814 netif_set_down - 0x4023f838 netif_remove - 0x4023f8a0 netif_set_link_up - 0x4023f8ec netif_set_link_down - .irom0.text 0x4023f8fc 0x750 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - 0x794 (size before relaxing) - 0x4023f8fc pbuf_free_ooseq_new - 0x4023f958 pbuf_header - 0x4023f9e8 pbuf_free - 0x4023fa80 pbuf_alloc - 0x4023fc00 pbuf_realloc - 0x4023fc4c pbuf_clen - 0x4023fc60 pbuf_ref - 0x4023fc6c pbuf_cat - 0x4023fca0 pbuf_chain - 0x4023fcbc pbuf_dechain - 0x4023fcf4 pbuf_copy - 0x4023fdb8 pbuf_copy_partial - 0x4023fe4c pbuf_take - 0x4023fec0 pbuf_coalesce - 0x4023ff00 pbuf_get_at - 0x4023ff24 pbuf_memcmp - 0x4023ffa0 pbuf_memfind - 0x40240004 pbuf_strstr - .irom0.text 0x4024004c 0x84c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x9b8 (size before relaxing) - 0x40240050 sntp_time_inc - 0x40240190 sntp_mktm_r - 0x40240450 sntp_localtime_r - 0x40240468 sntp_localtime - 0x40240488 sntp__tzcalc_limits - 0x4024060c sntp_asctime_r - 0x40240650 sntp_asctime - 0x402407b0 sntp_get_timezone - 0x402407b8 sntp_set_timezone - 0x402407c8 sntp_init - 0x40240804 sntp_stop - 0x40240840 sntp_setserver - 0x4024085c sntp_getserver - 0x40240874 sntp_setservername - 0x40240884 sntp_getservername - .irom0.text 0x40240898 0xbbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0xd07 (size before relaxing) - 0x402408a0 tcp_bind - 0x40240950 tcp_listen_with_backlog - 0x40240a38 tcp_update_rcv_ann_wnd - 0x40240a84 tcp_recved - 0x40240adc tcp_seg_free - 0x40240b08 tcp_segs_free - 0x40240b28 tcp_setprio - 0x40240b30 tcp_seg_copy - 0x40240b6c tcp_arg - 0x40240b70 tcp_recv - 0x40240b78 tcp_sent - 0x40240b80 tcp_err - 0x40240b88 tcp_accept - 0x40240b8c tcp_poll - 0x40240b94 tcp_pcb_purge - 0x40240bf0 tcp_slowtmr - 0x40240e9c tcp_pcb_remove - 0x40240f0c tcp_close - 0x40240f34 tcp_recv_null - 0x40240f6c tcp_fasttmr - 0x40241000 tcp_tmr - 0x40241024 tcp_shutdown - 0x4024108c tcp_abandon - 0x4024112c tcp_abort - 0x40241144 tcp_next_iss - 0x40241164 tcp_alloc - 0x402412b0 tcp_new - 0x402412c4 tcp_eff_send_mss - 0x402412f8 tcp_connect - *fill* 0x40241453 0x1 - .irom0.text 0x40241454 0xf4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - 0x1057 (size before relaxing) - 0x40241650 tcp_write - 0x40241968 tcp_enqueue_flags - 0x40241a28 tcp_send_fin - 0x40241a74 tcp_send_empty_ack - 0x40241b14 tcp_output - 0x40241f38 tcp_rst - 0x4024207c tcp_rexmit_rto - 0x40242100 tcp_rexmit - 0x402421ac tcp_rexmit_fast - 0x40242210 tcp_keepalive - 0x40242294 tcp_zero_window_probe - *fill* 0x402423a3 0x1 - .irom0.text 0x402423a4 0x29b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - 0x30f (size before relaxing) - 0x402423ac sys_timeout - 0x4024243c tcp_timer_needed - 0x402424c4 sys_timeouts_init - 0x40242550 sys_untimeout - 0x402425a8 sys_check_timeouts - 0x40242630 sys_restart_timeouts - *fill* 0x4024263f 0x1 - .irom0.text 0x40242640 0x53d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - 0x5b9 (size before relaxing) - 0x4024264c udp_input - 0x4024283c udp_bind - 0x402428c8 udp_sendto_if - 0x40242a10 udp_sendto - 0x40242a64 udp_send - 0x40242a80 udp_connect - 0x40242ae8 udp_disconnect - 0x40242afc udp_recv - 0x40242b08 udp_remove - 0x40242b44 udp_new - *fill* 0x40242b7d 0x3 - .irom0.text 0x40242b80 0x907 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0xa07 (size before relaxing) - 0x40242dd0 etharp_tmr - 0x40242e28 etharp_cleanup_netif - 0x40242e64 etharp_find_addr - 0x40242eb4 etharp_request - 0x40242ffc etharp_query - 0x40243198 etharp_output - 0x40243290 ethernet_input - *fill* 0x40243487 0x1 - .irom0.text 0x40243488 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - 0x2ac (size before relaxing) - 0x40243488 icmp_input - 0x40243600 icmp_dest_unreach - .irom0.text 0x402436a8 0x5be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - 0x646 (size before relaxing) - 0x40243840 igmp_init - 0x40243854 igmp_stop - 0x402438c0 igmp_report_groups - 0x402438f0 igmp_lookfor_group - 0x4024390c igmp_start - 0x40243968 igmp_input - 0x40243a88 igmp_joingroup - 0x40243b54 igmp_leavegroup - 0x40243c2c igmp_tmr - *fill* 0x40243c66 0x2 - .irom0.text 0x40243c68 0x5ba C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - 0x652 (size before relaxing) - 0x40243c68 ip_route - 0x40243ce4 ip_router - 0x40243d48 ip_input - 0x40243fac ip_output_if_opt - 0x402441ac ip_output_if - 0x402441d4 ip_output - *fill* 0x40244222 0x2 - .irom0.text 0x40244224 0x380 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - 0x3a4 (size before relaxing) - 0x40244224 ip4_addr_isbroadcast - 0x40244260 ip4_addr_netmask_valid - 0x402442b0 ipaddr_aton - 0x40244498 ipaddr_addr - 0x402444b4 ipaddr_ntoa_r - 0x40244590 ipaddr_ntoa - .irom0.text 0x402445a4 0x1f3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - 0x23f (size before relaxing) - 0x402445a8 raw_input - 0x40244630 raw_bind - 0x4024463c raw_connect - 0x40244648 raw_recv - 0x40244650 raw_sendto - 0x402446f4 raw_send - 0x40244710 raw_remove - 0x4024474c raw_new - *fill* 0x40244797 0x1 - .irom0.text 0x40244798 0x1394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - 0x156c (size before relaxing) - 0x402451ac tcp_input - .irom0.text 0x40245b2c 0x47d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x545 (size before relaxing) - 0x40245bb8 ieee80211_rate_ref_init - 0x40245bcc ieee80211_freedom_inside_cb - 0x40245bfc ieee80211_freedom_init - 0x40245c20 ieee80211_user_ie_init - 0x40245c3c ieee80211_ifattach - 0x40245ca0 ieee80211_mhz2ieee - 0x40245cfc ieee80211_chan2ieee - 0x40245d18 ieee80211_ieee2mhz - 0x40245d58 ieee80211_find_channel - 0x40245d84 ieee80211_find_channel_byieee - 0x40245dd4 wifi_mode_set - *fill* 0x40245fa9 0x3 - .irom0.text 0x40245fac 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - 0xd7 (size before relaxing) - 0x40245fac ieee80211_crypto_attach - 0x40245fb0 ieee80211_crypto_available - 0x40245fb4 ieee80211_crypto_setkey - 0x40245fb8 ieee80211_crypto_encap - 0x40246010 ieee80211_crypto_decap - *fill* 0x4024607b 0x1 - .irom0.text 0x4024607c 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - 0x50 (size before relaxing) - 0x40246080 ieee80211_getmgtframe - .irom0.text 0x402460c8 0x1a10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x1f77 (size before relaxing) - 0x402466ec ieee80211_hostap_attach - 0x402467ec hostap_handle_timer - 0x40246884 hostap_input - 0x402477d8 wifi_softap_start - 0x40247940 wifi_softap_stop - *fill* 0x40247ad8 0x0 - .irom0.text 0x40247ad8 0xa8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - 0xb4e (size before relaxing) - 0x40247ae8 ieee80211_ht_attach - 0x40247b3c ieee80211_ht_node_init - 0x40247b7c ieee80211_ht_node_cleanup - 0x40247bb4 ieee80211_parse_htcap - 0x40247c9c ieee80211_ht_updateparams - 0x40247db4 ieee80211_setup_htrates - 0x40247e80 ieee80211_setup_basic_htrates - 0x402481cc ieee80211_add_htcap - 0x402481e8 ieee80211_add_htcap_vendor - 0x4024830c ieee80211_add_htinfo - 0x40248328 ieee80211_add_htinfo_vendor - *fill* 0x40248562 0x2 - .irom0.text 0x40248564 0xa8c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - 0xb1c (size before relaxing) - 0x40248564 ieee80211_deliver_data - 0x402485b8 ieee80211_decap - 0x402486bc ieee80211_setup_rates - 0x4024872c ieee80211_alloc_challenge - 0x40248768 ieee80211_parse_beacon - 0x40248d3c ieee80211_parse_wpa - 0x40248e50 ieee80211_parse_rsn - 0x40248f50 ieee80211_parse_action - 0x40248fec ieee80211_setup_rateset - .irom0.text 0x40248ff0 0x2a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - 0x302 (size before relaxing) - 0x40248ffc ieee80211_mesh_quick_init - 0x4024906c ieee80211_mesh_quick_deinit - 0x4024909c ieee80211_mesh_quick_set - 0x40249198 ieee80211_mesh_quick_get - 0x40249264 ieee80211_mesh_quick_ie_add - *fill* 0x40249296 0x2 - .irom0.text 0x40249298 0x1c5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - 0x1fea (size before relaxing) - 0x402492a4 ieee80211_output_pbuf - 0x40249514 ieee80211_send_setup - 0x40249648 ieee80211_mgmt_output - 0x4024972c ieee80211_tx_mgt_cb - 0x40249730 ieee80211_send_nulldata - 0x40249ba0 ieee80211_add_rates - 0x40249bf0 ieee80211_add_xrates - 0x40249cc0 ieee80211_send_probereq - 0x40249ed4 ieee80211_getcapinfo - 0x40249f30 ieee80211_send_mgmt - 0x4024a4d0 ieee80211_alloc_proberesp - 0x4024a6ac ieee80211_send_proberesp - 0x4024a7f4 ieee80211_alloc_deauth - 0x4024a834 ieee80211_send_deauth - 0x4024a96c ieee80211_freedom_output - 0x4024ad5c ieee80211_beacon_alloc - *fill* 0x4024aef2 0x2 - .irom0.text 0x4024aef4 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - 0x108 (size before relaxing) - 0x4024aef4 ieee80211_phy_init - 0x4024af28 ieee80211_phy_type_get - 0x4024af44 ieee80211_setup_ratetable - .irom0.text 0x4024afd4 0x1b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - 0x1f2 (size before relaxing) - 0x4024afd4 ieee80211_psq_init - 0x4024aff4 ieee80211_psq_cleanup - 0x4024affc ieee80211_set_tim - 0x4024b03c ieee80211_pwrsave - 0x4024b0a4 pwrsave_flushq - 0x4024b154 ieee80211_node_pwrsave - *fill* 0x4024b18a 0x2 - .irom0.text 0x4024b18c 0x101 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - 0x129 (size before relaxing) - 0x4024b190 ieee80211_proto_attach - 0x4024b1b8 ieee80211_set_shortslottime - 0x4024b1d4 ieee80211_iserp_rateset - 0x4024b208 ieee80211_wme_initparams - 0x4024b20c ieee80211_wme_updateparams - 0x4024b214 ieee80211_mlme_connect_bss - *fill* 0x4024b28d 0x3 - .irom0.text 0x4024b290 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - 0xd6 (size before relaxing) - 0x4024b290 ieee80211_rfid_locp_recv_open - 0x4024b2c8 ieee80211_rfid_locp_recv_close - 0x4024b2e0 ieee80211_rfid_locp_recv_reset - 0x4024b300 ieee80211_rfid_locp_recv - 0x4024b31c register_ieee80211_rfid_locp_recv_cb - 0x4024b330 unregister_ieee80211_rfid_locp_recv_cb - *fill* 0x4024b33a 0x2 - .irom0.text 0x4024b33c 0xf59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - 0x12a1 (size before relaxing) - 0x4024b348 ieee80211_scan_attach - 0x4024b3dc scan_start - 0x4024b5a0 scan_pm_channel_op_cb - 0x4024b740 scan_cancel - 0x4024b89c scan_add_bssid - 0x4024b8c0 scan_remove_bssid - 0x4024b8cc scan_hidden_ssid - 0x4024b8d4 scan_add_probe_ssid - 0x4024b928 scan_remove_probe_ssid - 0x4024ba68 scan_clear_channles - 0x4024badc scan_set_desChan - 0x4024bae8 scan_get_type - 0x4024baf0 cannel_scan_connect_state - 0x4024bb08 scan_connect_state - 0x4024bb50 scan_check_hidden - 0x4024bb7c scan_profile_check - 0x4024bf24 scan_parse_beacon - *fill* 0x4024c295 0x3 - .irom0.text 0x4024c298 0x103e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - 0x12c1 (size before relaxing) - 0x4024c2f4 sta_status_set - 0x4024c360 ieee80211_sta_new_state - 0x4024c6f0 sta_input - 0x4024cc3c ieee80211_parse_wmeparams - 0x4024d22c wifi_station_start - 0x4024d29c wifi_station_stop - *fill* 0x4024d2d6 0x2 - .irom0.text 0x4024d2d8 0x29e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - 0x31e (size before relaxing) - 0x4024d2e4 chm_init - 0x4024d348 chm_acquire_lock - 0x4024d38c chm_release_lock - 0x4024d3a0 chm_start_op - 0x4024d444 chm_end_op - 0x4024d48c chm_cancel_op - 0x4024d4c0 chm_return_home_channel - 0x4024d4f0 chm_set_current_channel - 0x4024d520 chm_freq2index - 0x4024d548 chm_check_same_channel - *fill* 0x4024d576 0x2 - .irom0.text 0x4024d578 0x17b9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - 0x1d31 (size before relaxing) - 0x4024d584 cnx_attach - 0x4024d5c4 cnx_sta_connect_led_timer_cb - 0x4024d618 cnx_sta_connect_cmd - 0x4024d6d4 cnx_sta_scan_cmd - 0x4024d930 cnx_connect_timeout - 0x4024d9ac cnx_auth_timeout - 0x4024d9d0 cnx_assoc_timeout - 0x4024d9f4 cnx_handshake_timeout - 0x4024da34 cnx_start_handoff_cb - 0x4024de94 cnx_bss_alloc - 0x4024df34 cnx_rc_search - 0x4024dfb4 cnx_add_rc - 0x4024e020 cnx_remove_all_rc - 0x4024e06c cnx_remove_rc - 0x4024e13c cnx_rc_update_rssi - 0x4024e1c4 cnx_rc_update_state_metric - 0x4024e230 cnx_rc_update_age - 0x4024e254 cnx_update_bss - 0x4024e288 cnx_update_bss_more - 0x4024e464 cnx_sta_leave - 0x4024e6f4 cnx_sta_associated - 0x4024e7fc cnx_node_alloc - 0x4024e870 cnx_node_remove - 0x4024e8fc cnx_node_search - 0x4024e978 cnx_node_leave - 0x4024ea78 wifi_softap_staconnected_event_policy - 0x4024eaa0 wifi_softap_toomany_deny - 0x4024eadc cnx_node_join - *fill* 0x4024ed31 0x3 - .irom0.text 0x4024ed34 0x16f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - 0x193 (size before relaxing) - 0x4024ed44 ieee80211_send_action_register - 0x4024ed78 ieee80211_send_action_unregister - 0x4024ed8c ieee80211_send_action - 0x4024edf8 ieee80211_recv_action_register - 0x4024ee2c ieee80211_recv_action_unregister - 0x4024ee40 ieee80211_recv_action - *fill* 0x4024eea3 0x1 - .irom0.text 0x4024eea4 0x479 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - 0x505 (size before relaxing) - 0x4024eea8 get_iav_key - 0x4024eec8 register_ieee80211_action_vendor_get_key_cb - 0x4024eedc unregister_ieee80211_action_vendor_get_key_cb - 0x4024eef0 ieee80211_add_action_vendor_spec_esp - 0x4024ef38 ieee80211_alloc_action_vendor_spec - 0x4024f024 ieee80211_send_action_vendor_spec - 0x4024f1b8 ieee80211_recv_action_vendor_spec - 0x4024f2c0 ieee80211_action_vendor_spec_attach - 0x4024f300 register_ieee80211_action_vendor_spec_cb - 0x4024f314 unregister_ieee80211_action_vendor_spec_cb - *fill* 0x4024f31d 0x3 - .irom0.text 0x4024f320 0x15d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - 0x165 (size before relaxing) - *fill* 0x4024f47d 0x3 - .irom0.text 0x4024f480 0x23d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - 0x25d (size before relaxing) - 0x4024f484 ieee80211_add_ie_vendor_esp_head - 0x4024f4bc ieee80211_add_ie_vendor_esp_mesh_assoc - 0x4024f540 ieee80211_add_ie_vendor_esp_mesh_group - 0x4024f570 ieee80211_add_ie_vendor_esp_simple_pair - 0x4024f5c0 ieee80211_add_ie_vendor_esp_freq_annon - 0x4024f5f8 ieee80211_add_ie_vendor_esp_now - 0x4024f630 ieee80211_add_ie_vendor_esp_ssid - 0x4024f670 ieee80211_add_ie_vendor_esp_manufacturer - *fill* 0x4024f6bd 0x3 - .irom0.text 0x4024f6c0 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - 0x4df (size before relaxing) - 0x4024f6c4 rijndaelEncrypt - 0x4024fae0 aes_encrypt_init - 0x4024fb34 aes_encrypt - 0x4024fb4c aes_encrypt_deinit - *fill* 0x4024fb77 0x1 - .irom0.text 0x4024fb78 0x304 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - 0x31c (size before relaxing) - 0x4024fb7c rijndaelKeySetupEnc - .irom0.text 0x4024fe7c 0xfa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - 0x11e (size before relaxing) - 0x4024fe80 rf_init - 0x4024fe9c bb_init - 0x4024feb4 phy_init - 0x4024fee4 RFChannelSel - 0x4024ff00 phy_delete_channel - 0x4024ff18 phy_enable_agc - 0x4024ff30 phy_disable_agc - 0x4024ff48 phy_initialize_bb - 0x4024ff60 phy_set_sense - *fill* 0x4024ff76 0x2 - .irom0.text 0x4024ff78 0x174f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - 0x1973 (size before relaxing) - 0x4024ff78 ram_pbus_set_rxgain - 0x40250048 ram_pbus_debugmode - 0x402500fc ram_pbus_xpd_tx_on - 0x40250168 set_rf_freq_offset - 0x402501d8 chip_v6_rxmax_ext_ana - 0x4025032c ram_chip_v6_rx_init - 0x40250360 tsen_meas - 0x4025040c readvdd33 - 0x402505d4 txpwr_offset - 0x40250690 set_txcap_reg - 0x40250710 ram_ana_inf_gating_en - 0x40250870 ram_restart_cal - 0x402508dc wait_rfpll_cal_end - 0x40250974 ram_rfpll_set_freq - 0x40250a78 ram_set_channel_freq - 0x40250d74 chip_60_set_channel - 0x40250f14 chip_v6_set_chan_offset - 0x40250f6c chip_v6_set_chan - 0x40251014 chip_v6_set_chan_wakeup - 0x40251094 chip_v6_rf_init - 0x402512f8 low_power_set - 0x40251348 test_tout - 0x402514c0 check_data_flag - 0x402514e0 phy_get_check_flag - 0x40251614 phy_get_vdd33 - *fill* 0x402516c7 0x1 - .irom0.text 0x402516c8 0x3fac C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - 0x46a8 (size before relaxing) - 0x402516c8 ram_tx_mac_enable - 0x402516cc ram_tx_mac_disable - 0x402516d0 rtc_mem_backup - 0x40251700 rtc_mem_recovery - 0x40251730 set_cal_rxdc - 0x402517e4 set_rx_gain_cal_iq - 0x40251b3c gen_rx_gain_table - 0x40251c94 pbus_set_rxbbgain - 0x40251d10 set_rx_gain_testchip_50 - 0x40252048 ram_get_corr_power - 0x40252138 check_data_func - 0x40252158 do_noisefloor_lsleep_v50 - 0x4025218c do_noisefloor - 0x402521fc start_dig_rx - 0x40252240 stop_dig_rx - 0x4025226c chip_v6_set_chanfreq - 0x40252298 tx_cap_init - 0x40252484 target_power_add_backoff - 0x402524b0 tx_pwctrl_init_cal - 0x40252628 tx_atten_set_interp - 0x40252888 check_tx_pwr_cal - 0x402529d0 tx_pwctrl_init - 0x40252af4 ram_get_noisefloor - 0x40252b10 get_noisefloor_sat - 0x40252b40 ram_set_noise_floor - 0x40252b9c ram_start_noisefloor - 0x40252be8 read_hw_noisefloor - 0x40252c10 noise_check_loop - 0x40252d68 noise_init - 0x40252f68 target_power_backoff - 0x40252fbc sdt_on_noise_start - 0x4025303c chip_v6_set_chan_rx_cmp - 0x402531c8 chip_v6_set_chan_misc - 0x40253258 phy_dig_spur_set - 0x402535b0 phy_dig_spur_prot - 0x402537e8 chip_v6_rxmax_ext_dig - 0x40253834 chip_v6_rxmax_ext - 0x402538d4 phy_bb_rx_cfg - 0x40253cec uart_wait_idle - 0x40253d20 phy_pbus_soc_cfg - 0x40253ddc phy_gpio_cfg - 0x40254120 tx_cont_en - 0x402541c8 tx_cont_dis - 0x4025421c tx_cont_cfg - 0x40254240 chip_v6_initialize_bb - 0x402543ac periodic_cal - 0x4025448c bbpll_cal - 0x40254524 periodic_cal_top - 0x40254584 register_chipv6_phy_init_param - 0x4025482c change_bbpll160_sleep - 0x402549dc change_bbpll160 - 0x40254a14 set_crystal_uart - 0x40254aa4 ant_switch_init - 0x40254b54 reduce_current_init - 0x40254c40 rtc_mem_check - 0x40254c7c phy_afterwake_set_rfoption - 0x40254c9c deep_sleep_set_option - 0x40254cc8 write_data_to_rtc - 0x40254d00 get_data_from_rtc - 0x40254d80 register_chipv6_phy - 0x40255228 set_dpd_bypass - 0x40255250 set_rf_gain_stage10 - 0x40255280 get_vdd33_offset - 0x402552f4 get_phy_target_power - 0x402553a8 set_most_pwr_reg - 0x4025547c phy_set_most_tpw - 0x4025549c phy_vdd33_set_tpw - 0x402554b4 get_adc_rand - 0x402554e4 phy_get_rand - 0x402554fc phy_tx_pwctrl_cali - 0x40255524 phy_check_data_table - 0x40255560 phy_after_init_enrx - 0x402555c4 phy_set_rx11b_reg - 0x402555f8 phy_set_powerup_option - 0x40255608 phy_get_txpwr_param - 0x40255654 phy_get_rxnf_param - 0x40255660 phy_get_freq_param - .irom0.text 0x40255674 0x2168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - 0x23a4 (size before relaxing) - 0x40255674 txbbgain2dcoindex - 0x40255694 dcoindex2txbbgain - 0x402556b8 init_cal_dcoffset - 0x4025577c set_rfanagain_dc_reg - 0x40255818 set_txdc_pbus - 0x40255884 get_rf_gain_qdb - 0x402558ac correct_rf_ana_gain - 0x402559b4 get_sar_dout - 0x40255a40 cal_rf_ana_gain - 0x40255b6c meas_tone_pwr_db - 0x40255bdc tx_pwr_backoff - 0x40255d64 get_fcc_1m2m_pwr_offset - 0x40255da0 ram_set_txbb_atten - 0x40255e34 txiq_get_mis_pwr - 0x40255ed8 txiq_cover - 0x402560f0 ram_rfcal_txiq - 0x4025635c rc_cal - 0x4025651c get_target_power_offset - 0x40256624 get_pwctrl_correct - 0x4025667c tx_pwctrl_cal - 0x40256978 tx_pwctrl_bg_init - 0x402569f0 tx_pwctrl_background - 0x40256aa8 read_sar_dout - 0x40256b0c ram_get_fm_sar_dout - 0x40256bb0 ram_cal_tos_v60 - 0x40256d80 ram_get_bb_atten - 0x40256db0 ram_rfcal_txcap - 0x40256f74 ram_rfcal_pwrctrl - 0x4025719c ram_rxiq_get_mis - 0x40257368 ram_rxiq_cover_mg_mp - 0x4025750c ram_rfcal_rxiq - 0x40257718 dpd_scale_set - 0x40257760 dpd_mem_write - .irom0.text 0x402577dc 0xd8e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - 0xfc6 (size before relaxing) - 0x402577dc pm_usec2rtc - 0x40257810 pm_rtc2usec - 0x4025781c pm_set_sleep_cycles - 0x40257840 pm_sleep_opt - 0x40257984 pm_wakeup_opt - 0x402579bc get_chip_version - 0x402579fc pm_sleep_opt_bb_off - 0x40257a3c pm_sleep_opt_bb_on - 0x40257a84 pm_set_pll_xtal_wait_time - 0x40257ab0 pm_prepare_to_sleep - 0x40257ab8 pm_sdio_nidle - 0x40257b2c chg_lslp_mem_opt_8266 - 0x40257b5c pm_goto_sleep - 0x40257ca8 pm_wait4wakeup - 0x40257ce4 pm_open_rf - 0x40257d20 pm_sleep_set_mac - 0x40257da4 pm_set_wakeup_mac - 0x40257e3c pm_check_mac_idle - 0x40257e94 pm_set_sleep_btco - 0x40257f34 pm_set_wakeup_btco - 0x4025804c pm_set_sleep_mode - 0x40258168 pm_unmask_bt - 0x402581d0 pm_wakeup_init - 0x40258410 sleep_opt_8266 - 0x40258430 sleep_opt_bb_on_8266 - 0x40258468 sleep_reset_analog_rtcreg_8266 - *fill* 0x4025856a 0x2 - .irom0.text 0x4025856c 0x2aa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - 0x2ee (size before relaxing) - 0x40258570 hostapd_config_defaults_bss - 0x402585bc hostapd_config_defaults - 0x40258640 hostapd_mac_comp - 0x40258654 hostapd_mac_comp_empty - 0x402586c0 hostapd_setup_wpa_psk - 0x402586f0 hostapd_wep_key_cmp - 0x40258740 hostapd_maclist_found - 0x402587a8 hostapd_rate_found - 0x402587c4 hostapd_get_psk - *fill* 0x40258816 0x2 - .irom0.text 0x40258818 0x1c86 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - 0x1f66 (size before relaxing) - 0x40258964 wpa_auth_for_each_sta - 0x40258ae4 wpa_init - 0x40258b74 wpa_auth_sta_init - 0x40258bbc wpa_auth_sta_associated - 0x40258c28 wpa_auth_sta_no_wpa - 0x40258c84 wpa_auth_sta_deinit - 0x40258d54 wpa_receive - 0x402591b8 __wpa_send_eapol - 0x402596dc wpa_remove_ptk - 0x40259728 wpa_auth_sm_event - *fill* 0x4025a49e 0x2 - .irom0.text 0x4025a4a0 0x582 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - 0x5f6 (size before relaxing) - 0x4025a564 wpa_write_rsn_ie - 0x4025a670 wpa_auth_gen_wpa_ie - 0x4025a700 wpa_add_kde - 0x4025a76c wpa_validate_wpa_ie - 0x4025a978 wpa_parse_kde_ies - 0x4025aa14 wpa_auth_uses_mfp - *fill* 0x4025aa22 0x2 - .irom0.text 0x4025aa24 0x14d0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - 0x1708 (size before relaxing) - 0x4025b9b0 wpa_sm_rx_eapol - 0x4025bb28 wpa_register - 0x4025bb54 wpa_set_profile - 0x4025bb6c wpa_set_pmk - 0x4025bb98 wpa_set_bss - 0x4025bd9c pp_michael_mic_failure - 0x4025be40 eapol_txcb - 0x4025becc wpa_sm_set_state - .irom0.text 0x4025bef4 0x76a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - 0x7fa (size before relaxing) - 0x4025c03c wpa_parse_wpa_ie_rsn - 0x4025c1d0 wpa_parse_wpa_ie_wpa - 0x4025c360 wpa_eapol_key_mic - 0x4025c3a0 wpa_compare_rsn_ie - 0x4025c3c8 wpa_pmk_to_ptk - 0x4025c4b8 rsn_pmkid - 0x4025c514 wpa_cipher_key_len - 0x4025c538 wpa_cipher_to_alg - 0x4025c560 wpa_cipher_to_suite - 0x4025c5b4 rsn_cipher_put_suites - 0x4025c614 wpa_cipher_put_suites - *fill* 0x4025c65e 0x2 - .irom0.text 0x4025c660 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - 0xac (size before relaxing) - 0x4025c6d8 wpa_snprintf_hex_uppercase - 0x4025c6ec wpa_snprintf_hex - 0x4025c700 eloop_cancel_timeout - 0x4025c704 eloop_register_timeout - .irom0.text 0x4025c708 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - 0x341 (size before relaxing) - 0x4025c708 wpa_parse_wpa_ie - 0x4025c7fc wpa_supplicant_parse_ies - 0x4025c9fc wpa_gen_wpa_ie - *fill* 0x4025ca2d 0x3 - .irom0.text 0x4025ca30 0x418 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - 0x52c (size before relaxing) - 0x4025ca34 ppInstallKey - 0x4025cbc4 wpa_config_profile - 0x4025cbf8 wpa_config_bss - 0x4025cc24 wpa_config_assoc_ie - 0x4025cc38 dhcp_bind_check - 0x4025cc6c eagle_auth_done - 0x4025cde8 wpa_neg_complete - 0x4025ce10 wpa_attach - .irom0.text 0x4025ce48 0xd6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - 0xe2 (size before relaxing) - 0x4025ceb8 wpa_sm_alloc_eapol - 0x4025cef8 wpa_sm_deauthenticate - 0x4025cf14 wpa_sm_mlme_setprotection - 0x4025cf18 wpa_sm_get_beacon_ie - 0x4025cf1c wpa_sm_disassociate - *fill* 0x4025cf1e 0x2 - .irom0.text 0x4025cf20 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - 0x197 (size before relaxing) - *fill* 0x4025d0a7 0x1 - .irom0.text 0x4025d0a8 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - 0x7c (size before relaxing) - .irom0.text 0x4025d120 0xdf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - 0x103 (size before relaxing) - 0x4025d120 aes_wrap - *fill* 0x4025d1ff 0x1 - .irom.text 0x4025d200 0xac81 .pioenvs\sonoff\src\sonoff.ino.cpp.o - *fill* 0x40267e81 0x3 - .irom.text 0x40267e84 0x19f .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - *fill* 0x40268023 0x1 - .irom.text 0x40268024 0x2bd .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - *fill* 0x402682e1 0x3 - .irom.text 0x402682e4 0x7d .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - *fill* 0x40268361 0x0 - *fill* 0x40268361 0xf - .irom.text 0x40268370 0x145 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - *fill* 0x402684b5 0x0 - *fill* 0x402684b5 0xb - .irom.text 0x402684c0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - *fill* 0x4026851b 0x0 - *fill* 0x4026851b 0x0 - *fill* 0x4026851b 0x5 - .irom.text 0x40268520 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - *fill* 0x40268558 0x0 - .irom.text 0x40268558 0x7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - *fill* 0x4026855f 0x0 - *fill* 0x4026855f 0x1 - .irom.text 0x40268560 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - *fill* 0x4026856a 0x0 - *fill* 0x4026856a 0x6 - .irom.text 0x40268570 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - *fill* 0x402685c0 0x0 - .irom.text 0x402685c0 0x2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - *fill* 0x402685ef 0x0 - *fill* 0x402685ef 0x1 - .irom.text 0x402685f0 0x10d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - *fill* 0x402686fd 0x0 - *fill* 0x402686fd 0x3 - .irom.text 0x40268700 0x490 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - *fill* 0x40268b90 0x0 - .irom.text 0x40268b90 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - *fill* 0x40268cdc 0x4 - .irom.text 0x40268ce0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - *fill* 0x40268d3b 0x0 - *fill* 0x40268d3b 0x5 - .irom.text 0x40268d40 0x2d5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x40268d60 default_ssid - *fill* 0x40269015 0x0 - *fill* 0x40269015 0xb - .irom.text 0x40269020 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - *fill* 0x40269083 0x0 - *fill* 0x40269083 0xd - .irom.text 0x40269090 0x9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - *fill* 0x40269099 0x0 - *fill* 0x40269099 0x7 - .irom.text 0x402690a0 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .irom.text 0x402690ac 0x4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - *fill* 0x402690b0 0x0 - *fill* 0x402690b0 0x0 - *fill* 0x402690b0 0x0 - *fill* 0x402690b0 0x0 - .irom.text 0x402690b0 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x402690b0 tcp_pcb_lists - 0x402690c0 tcp_persist_backoff - 0x402690c7 tcp_backoff - *fill* 0x402690d4 0x0 - *fill* 0x402690d4 0x0 - *fill* 0x402690d4 0x0 - *fill* 0x402690d4 0x0 - *fill* 0x402690d4 0x0 - .irom0.text 0x402690d4 0x28c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - 0x4026913c inet_chksum_pseudo - 0x402691fc inet_chksum_pseudo_partial - 0x402692d8 inet_chksum - 0x402692f4 inet_chksum_pbuf - *fill* 0x40269360 0x0 - .irom.text 0x40269360 0x8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - 0x40269360 ip_addr_broadcast - 0x40269364 ip_addr_any - .irom.text 0x40269368 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - 0x40269368 memp_sizes - *fill* 0x40269390 0x0 - *fill* 0x40269390 0x0 - .irom.text 0x40269390 0x82 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x402693a0 ieee80211_opcap - *fill* 0x40269412 0x0 - *fill* 0x40269412 0x0 - *fill* 0x40269412 0xe - .irom.text 0x40269420 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - *fill* 0x4026947b 0x0 - *fill* 0x4026947b 0x5 - .irom.text 0x40269480 0x19 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - *fill* 0x40269499 0x0 - *fill* 0x40269499 0x7 - .irom.text 0x402694a0 0x12 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - *fill* 0x402694b2 0x0 - *fill* 0x402694b2 0xe - .irom.text 0x402694c0 0x43 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - *fill* 0x40269503 0x0 - *fill* 0x40269503 0xd - .irom.text 0x40269510 0x1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - *fill* 0x4026952d 0x0 - *fill* 0x4026952d 0x3 - .irom.text 0x40269530 0x1b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - *fill* 0x402696e8 0x0 - *fill* 0x402696e8 0x8 - .irom.text 0x402696f0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - *fill* 0x4026970c 0x0 - *fill* 0x4026970c 0x4 - .irom.text 0x40269710 0x99 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - *fill* 0x402697a9 0x0 - *fill* 0x402697a9 0x7 - .irom.text 0x402697b0 0x26 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - *fill* 0x402697d6 0x0 - *fill* 0x402697d6 0x0 - *fill* 0x402697d6 0xa - .irom.text 0x402697e0 0x187 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - *fill* 0x40269967 0x0 - *fill* 0x40269967 0x0 - *fill* 0x40269967 0x9 - .irom.text 0x40269970 0x83 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - *fill* 0x402699f3 0x0 - *fill* 0x402699f3 0x1 - .irom.text 0x402699f4 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - 0x402699f4 ccmp - *fill* 0x40269a0c 0x0 - *fill* 0x40269a0c 0x4 - .irom.text 0x40269a10 0x13 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - *fill* 0x40269a23 0x0 - *fill* 0x40269a23 0x0 - *fill* 0x40269a23 0xd - .irom.text 0x40269a30 0x65 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - *fill* 0x40269a95 0xb - .irom.text 0x40269aa0 0x14c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - *fill* 0x40269bec 0x4 - .irom.text 0x40269bf0 0x1f4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .irom0.text 0x40269de4 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - 0x40269de4 chip_v6_set_sense - 0x40269de8 chip_v6_get_sense - 0x40269dec chip_v6_unset_chanfreq - *fill* 0x40269df0 0x0 - .irom.text 0x40269df0 0x1a3 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - *fill* 0x40269f93 0x1 - .irom0.text 0x40269f94 0x80 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - *fill* 0x4026a014 0xc - .irom.text 0x4026a020 0xc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - *fill* 0x4026a02c 0x4 - .irom.text 0x4026a030 0x74 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - *fill* 0x4026a0a4 0xc - .irom.text 0x4026a0b0 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - *fill* 0x4026a0be 0x0 - *fill* 0x4026a0be 0x2 - .irom.text 0x4026a0c0 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - *fill* 0x4026a0d7 0x0 - *fill* 0x4026a0d7 0x9 - .irom.text 0x4026a0e0 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - *fill* 0x4026a0fc 0x0 - *fill* 0x4026a0fc 0x4 - .irom.text 0x4026a100 0x67 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - *fill* 0x4026a167 0x0 - *fill* 0x4026a167 0x0 - *fill* 0x4026a167 0x1 - .irom.text 0x4026a168 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - 0x4026a168 tkip - .irom.text 0x4026a180 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - 0x4026a180 wep - 0x4026a198 _irom0_text_end = ABSOLUTE (.) - 0x4026a198 _flash_code_end = ABSOLUTE (.) - -.text 0x40100000 0x7603 - 0x40100000 _stext = . - 0x40100000 _text_start = ABSOLUTE (.) - *(.UserEnter.text) - .UserEnter.text - 0x40100000 0xd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - 0x14 (size before relaxing) - 0x40100004 call_user_start - 0x40100010 . = ALIGN (0x10) - *fill* 0x4010000d 0x3 - *(.DebugExceptionVector.text) - .DebugExceptionVector.text - 0x40100010 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - 0x40100010 _DebugExceptionVector - 0x40100020 . = ALIGN (0x10) - *fill* 0x40100016 0xa - *(.NMIExceptionVector.text) - .NMIExceptionVector.text - 0x40100020 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - 0xd (size before relaxing) - 0x40100020 _NMIExceptionVector - 0x40100030 . = ALIGN (0x10) - *fill* 0x40100026 0xa - *(.KernelExceptionVector.text) - .KernelExceptionVector.text - 0x40100030 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - 0x40100030 _KernelExceptionVector - 0x40100036 0x4 LONG 0x0 - 0x4010003a 0x4 LONG 0x0 - 0x4010003e 0x4 LONG 0x0 - 0x40100042 0x4 LONG 0x0 - 0x40100050 . = ALIGN (0x10) - *fill* 0x40100046 0xa - *(.UserExceptionVector.text) - .UserExceptionVector.text - 0x40100050 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - 0xd (size before relaxing) - 0x40100050 _UserExceptionVector - 0x40100056 0x4 LONG 0x0 - 0x4010005a 0x4 LONG 0x0 - 0x4010005e 0x4 LONG 0x0 - 0x40100062 0x4 LONG 0x0 - 0x40100070 . = ALIGN (0x10) - *fill* 0x40100066 0xa - *(.DoubleExceptionVector.text) - .DoubleExceptionVector.text - 0x40100070 0x6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - 0x40100070 _DoubleExceptionVector - 0x40100076 0x4 LONG 0x0 - 0x4010007a 0x4 LONG 0x0 - 0x4010007e 0x4 LONG 0x0 - 0x40100082 0x4 LONG 0x0 - 0x40100090 . = ALIGN (0x10) - *fill* 0x40100086 0xa - *(.entry.text) - *(.init.literal) - *(.init) - *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) - .text 0x40100090 0x8fd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x9fd (size before relaxing) - 0x401000d4 pp_soft_wdt_feed_local - 0x4010016c ppProcessTxQ - 0x401001e0 ppFetchTxQFirstAvail - 0x40100220 ppDequeueTxQ - 0x40100248 ppRollBackTxQ - 0x4010026c ppRecordBarRRC - 0x4010027c ppTxqUpdateBitmap - 0x401002a8 ppEnqueueTxDone - 0x401002dc ppEnqueueRxq - 0x401007c4 ppDiscardMPDU - 0x401007ec pp_post - 0x40100878 pp_post2 - 0x401008a0 ppCalTxop - 0x40100920 ppCalFrameTimes - *fill* 0x4010098d 0x3 - .text 0x40100990 0xf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - 0x109 (size before relaxing) - 0x401009b0 RC_GetAckRate - 0x401009bc RC_GetRtsRate - 0x401009cc RC_GetAckTime - 0x401009e0 RC_GetCtsTime - 0x40100a18 RC_GetBlockAckTime - *fill* 0x40100a89 0x3 - .text 0x40100a8c 0x9ad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - 0xa05 (size before relaxing) - 0x40100c64 rcUpdateTxDone - 0x40100cf8 rcUpdateRxDone - 0x40100d54 rcUpdateDataRxDone - 0x40100d74 rcGetSched - 0x40100e58 rcGetRate - 0x4010136c rcReachRetryLimit - 0x40101384 trc_NeedRTS - *fill* 0x40101439 0x3 - .text 0x4010143c 0x1093 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0x1347 (size before relaxing) - 0x401017f8 wDev_MacTim1SetFunc - 0x40101818 wDev_MacTim1Arm - 0x401018b4 wDev_ProcessFiq - 0x40101bfc wDev_EnableTransmit - 0x40101c38 wDev_DisableTransmit - 0x40101c58 Tx_Copy2Queue - 0x40101ca0 wDev_ProcessCollision - 0x40101cc4 wDev_GetTxqCollisions - 0x40101cd8 wDev_ClearTxqCollisions - 0x40101cf4 wDev_SetWaitingQueue - 0x40101d3c wDev_ClearWaitingQueue - 0x40101d60 wDev_SetFrameAckType - 0x40101dc8 wDev_AppendRxBlocks - 0x40101f0c wDev_AppendRxAmpduLensBlocks - 0x40101fe0 wDev_GetBAInfo - 0x40102014 wDevDisableRx - *fill* 0x401024cf 0x1 - .text 0x401024d0 0x4c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - 0x5c (size before relaxing) - 0x401024d4 esf_rx_buf_alloc - .text 0x4010251c 0x1606 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0x1962 (size before relaxing) - 0x40102520 lmacIsActive - 0x40102534 lmacIsIdle - 0x401029bc lmacSetAcParam - 0x40102a10 lmacProcessTXStartData - 0x40102b90 lmacProcessTxSuccess - 0x40102cd4 GetAccess - 0x40102ce0 lmacDiscardAgedMSDU - 0x40102cf4 lmacRecycleMPDU - 0x401032b8 lmacProcessTxTimeout - 0x40103320 lmacProcessAllTxTimeout - 0x40103334 lmacProcessCollisions - 0x40103394 lmacProcessCollision - 0x40103418 lmacMSDUAged - 0x401037a8 lmacProcessCtsTimeout - 0x401037e0 lmacProcessAckTimeout - 0x40103838 lmacProcessRtsStart - 0x40103844 lmacProcessTxRtsError - 0x401038e4 lmacProcessTxError - 0x40103970 lmacTxFrame - 0x40103b0c lmacRxDone - *fill* 0x40103b22 0x2 - .text 0x40103b24 0x5ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x66a (size before relaxing) - 0x40103b58 Cache_Read_Enable_New - 0x40103b94 NmiTimSetFunc - 0x40103bb4 NMI_Handler - 0x40103c0c call_user_start_local - 0x40103d64 wdt_feed - *fill* 0x401040ee 0x2 - .text 0x401040f0 0x3c4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0x450 (size before relaxing) - 0x401041c4 ets_timer_setfn - 0x4010429c ets_timer_disarm - 0x40104348 ets_timer_arm_new - .text 0x401044b4 0x585 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - 0x650 (size before relaxing) - 0x401044b8 Cache_Read_Disable_2 - 0x401044f4 Cache_Read_Enable_2 - 0x4010453c spi_flash_get_unique_id - 0x401046a0 spi_flash_get_id - 0x401046fc spi_flash_read_status - 0x40104730 spi_flash_write_status - 0x401047b0 spi_flash_erase_sector - 0x401047e4 spi_flash_write - 0x40104838 spi_flash_read - 0x401048ac spi_flash_issi_enable_QIO_mode - *fill* 0x40104a39 0x3 - .text 0x40104a3c 0x2ee C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x34a (size before relaxing) - 0x40104a58 os_printf_plus - 0x40104b84 system_restart_core - 0x40104bc0 system_deep_sleep_local_2 - 0x40104c30 system_get_time - 0x40104c48 system_os_post - 0x40104c7c system_rtc_mem_write - 0x40104cd4 system_rtc_mem_read - *fill* 0x40104d2a 0x2 - .text 0x40104d2c 0xc7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - 0xcb (size before relaxing) - 0x40104d38 _NMILevelVector - *fill* 0x40104df3 0x1 - .text 0x40104df4 0x1e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - 0x40104df8 _UserExceptionVector_1 - *fill* 0x40104e12 0x2 - .text.sntp_try_next_server - 0x40104e14 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .text.sntp_dns_found - 0x40104e94 0x21 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x28 (size before relaxing) - *fill* 0x40104eb5 0x3 - .text.sntp_get_current_timestamp - 0x40104eb8 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x2f (size before relaxing) - 0x40104ec0 sntp_get_current_timestamp - *fill* 0x40104ee3 0x1 - .text.sntp_get_real_time - 0x40104ee4 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x40104eec sntp_get_real_time - *fill* 0x40104f09 0x3 - .text.tcp_new_port - 0x40104f0c 0x6b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x73 (size before relaxing) - *fill* 0x40104f77 0x1 - .text.tcp_close_shutdown - 0x40104f78 0x171 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0x179 (size before relaxing) - *fill* 0x401050e9 0x3 - .text.dns_timer - 0x401050ec 0x2d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - *fill* 0x40105119 0x3 - .text.igmp_timer - 0x4010511c 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - 0x2d (size before relaxing) - *fill* 0x40105145 0x3 - .text.dhcp_timer_fine - 0x40105148 0x29 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - 0x2d (size before relaxing) - *fill* 0x40105171 0x3 - .text.dhcp_timer_coarse - 0x40105174 0x37 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - 0x3b (size before relaxing) - *fill* 0x401051ab 0x1 - .text 0x401051ac 0x23 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - 0x27 (size before relaxing) - *fill* 0x401051cf 0x1 - .text 0x401051d0 0xb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - 0x401051d4 chm_get_current_channel - *fill* 0x401051db 0x1 - .text 0x401051dc 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - 0x5f (size before relaxing) - 0x401051e4 register_phy_ops - 0x40105204 register_get_phy_addr - 0x4010520c phy_change_channel - 0x40105224 phy_get_mactime - *fill* 0x4010522f 0x1 - .text 0x40105230 0xaa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - 0xba (size before relaxing) - 0x40105230 unsign_to_sign - 0x40105264 phy_get_bb_freqoffset - 0x401052cc phy_get_bb_evm - *fill* 0x401052da 0x2 - .text 0x401052dc 0xe7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - 0x103 (size before relaxing) - 0x401052e0 pm_rtc_clock_cali - 0x40105398 clockgate_watchdog - *fill* 0x401053c3 0x1 - .literal 0x401053c4 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - 0xc (size before relaxing) - .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - 0x10 (size before relaxing) - .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - 0x10 (size before relaxing) - .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - 0x18 (size before relaxing) - .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - 0x4 (size before relaxing) - .literal 0x401053c8 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - 0x4 (size before relaxing) - .literal 0x401053c8 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - 0xc (size before relaxing) - .literal 0x401053cc 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - 0x10 (size before relaxing) - .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - 0x10 (size before relaxing) - .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - 0x18 (size before relaxing) - .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - 0x4 (size before relaxing) - .literal 0x401053d0 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - 0x4 (size before relaxing) - .literal 0x401053d0 0x4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - 0x8 (size before relaxing) - .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - 0x8 (size before relaxing) - .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - 0x4 (size before relaxing) - .literal 0x401053d4 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - 0x48 (size before relaxing) - .text 0x401053d4 0x1ff c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - 0x401053f0 __addsf3 - 0x401054d8 __subsf3 - *fill* 0x401055d3 0x1 - .text 0x401055d4 0x15d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - 0x4010564c __mulsf3 - *fill* 0x40105731 0x3 - .text 0x40105734 0x135 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - 0x401057b0 __divsf3 - *fill* 0x40105869 0x3 - .text 0x4010586c 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - 0x4010586c __eqsf2 - 0x4010586c __nesf2 - 0x40105894 __gtsf2 - 0x401058b4 __lesf2 - 0x40105900 __gesf2 - 0x40105920 __ltsf2 - 0x4010596c __unordsf2 - *fill* 0x4010598e 0x2 - .text 0x40105990 0x40 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - 0x40105990 __fixsfsi - .text 0x401059d0 0x51 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - 0x401059d0 __fixunssfsi - *fill* 0x40105a21 0x3 - .text 0x40105a24 0x2f6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - 0x40105a44 __adddf3 - 0x40105b94 __subdf3 - *fill* 0x40105d1a 0x2 - .text 0x40105d1c 0x29b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - 0x40105dfc __muldf3 - *fill* 0x40105fb7 0x1 - .text 0x40105fb8 0x20b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - 0x401060a0 __divdf3 - *fill* 0x401061c3 0x1 - .text 0x401061c4 0x169 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - 0x401061c4 __nedf2 - 0x401061c4 __eqdf2 - 0x401061f4 __gtdf2 - 0x40106218 __ledf2 - 0x4010627c __gedf2 - 0x401062a0 __ltdf2 - 0x40106304 __unorddf2 - *fill* 0x4010632d 0x3 - .text 0x40106330 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - 0x40106330 __fixdfsi - .text 0x40106378 0x59 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - 0x40106378 __fixunsdfsi - *fill* 0x401063d1 0x3 - .text 0x401063d4 0xa0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - 0x401063d4 __truncdfsf2 - .text 0x40106474 0x5e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - 0x40106474 __extendsfdf2 - *fill* 0x401064d2 0x2 - .text 0x401064d4 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - 0x401064d4 __muldi3 - *fill* 0x4010650a 0x2 - .text 0x4010650c 0x3eb c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - 0x41b (size before relaxing) - 0x4010650c __divdi3 - *fill* 0x401068f7 0x1 - .literal._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson20StaticJsonBufferBase5allocEj - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN5Print5writeEPKc - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN5Print5writeEPKcj - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN14HardwareSerial5writeEj - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN14HardwareSerial5writeEi - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNSt14_Function_baseD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN12PubSubClientD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN12PubSubClientD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9JsonArray7invalidEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonObject7invalidEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNSt8functionIFvvEEC5IPS0_vEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x401068f8 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .literal._ZN6Stream9readBytesEPhj - 0x401068f8 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvP10_esp_eventEEC5ERKS3_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC5ERKS4_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC5ERKS4_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt8functionIFvvEEC5ERKS1_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC5IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .literal._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext8_s_errorEPva - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext5flushEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext5unrefEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext5writeEPKcj - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN13ClientContext8_consumeEj - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .literal._ZN7WiFiUDP4readEPcj - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN10UdpContextC5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZN10UdpContext5unrefEv - 0x401068f8 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .literal._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext4readEv - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext4readEPcj - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext5flushEv - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext6appendEPKcj - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZN10UdpContext4sendEP7ip_addrt - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x401068f8 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .literal._ZNK6String14StringIfHelperEv - 0x401068f8 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .literal._ZN13TasmotaModbusD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN13TasmotaModbusD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .literal._ZN15Adafruit_CCS8119meas_mode3getEv - 0x401068f8 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .literal._ZNSt8functionIFvPcPhjEEC5ERKS3_ - 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x401068f8 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .literal._ZN14RequestHandlerD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN14RequestHandler9canUploadE6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN14RequestHandlerD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandler9canUploadE6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandlerD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandlerD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNKSt8functionIFvvEEclEv - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .literal._ZNK6String9substringEj - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN16ESP8266WebServer15RequestArgumentC5Ev - 0x401068f8 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .literal._ZN14HardwareSerialD5Ev - 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZN14HardwareSerialD0Ev - 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .literal._ZNSt8functionIFvvEE4swapERS1_ - 0x401068f8 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - *fill* 0x401068f8 0x0 - .text.tcp_accept_null - 0x401068f8 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x0 - *fill* 0x401068fd 0x3 - .text 0x40106900 0x25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - *fill* 0x40106925 0x0 - *fill* 0x40106925 0x0 - *fill* 0x40106925 0x0 - *fill* 0x40106925 0x0 - *fill* 0x40106925 0x0 - *fill* 0x40106925 0x3 - .text 0x40106928 0x5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - 0x40106928 xthal_set_intclear - *fill* 0x4010692d 0x3 - .text 0x40106930 0x64 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - 0x40106930 __divsi3 - .text 0x40106994 0x49 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - 0x40106994 __modsi3 - *fill* 0x401069dd 0x3 - .text 0x401069e0 0x4c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - 0x401069e0 __udivsi3 - .text 0x40106a2c 0x39 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - 0x40106a2c __umodsi3 - *fill* 0x40106a65 0x3 - .text 0x40106a68 0x48 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - 0x40106a68 __umulsidi3 - .text 0x40106ab0 0x18 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - 0x40106ab0 __ashrdi3 - *fill* 0x40106ac8 0x0 - *fill* 0x40106ac8 0x0 - *fill* 0x40106ac8 0x0 - *fill* 0x40106ac8 0x0 - *fill* 0x40106ac8 0x0 - .text 0x40106ac8 0x44 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - 0x40106ac8 __floatunsisf - 0x40106ad0 __floatsisf - .text 0x40106b0c 0x7d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - 0x40106b0c __floatundisf - 0x40106b18 __floatdisf - *fill* 0x40106b89 0x0 - *fill* 0x40106b89 0x0 - *fill* 0x40106b89 0x0 - *fill* 0x40106b89 0x0 - *fill* 0x40106b89 0x0 - *fill* 0x40106b89 0x3 - .text 0x40106b8c 0x36 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - 0x40106b8c __floatunsidf - 0x40106b94 __floatsidf - *fill* 0x40106bc2 0x0 - *fill* 0x40106bc2 0x0 - *fill* 0x40106bc2 0x0 - *fill* 0x40106bc2 0x2 - .text._ZNSt8__detail15_List_node_base7_M_hookEPS0_ - 0x40106bc4 0xe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x40106bc4 std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) - *fill* 0x40106bd2 0x2 - .text._ZNSt8__detail15_List_node_base9_M_unhookEv - 0x40106bd4 0xa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x40106bd4 std::__detail::_List_node_base::_M_unhook() - *fill* 0x40106bde 0x2 - .literal._ZN10WiFiServerD5Ev - 0x40106be0 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN10WiFiServerD0Ev - 0x40106be0 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .literal._ZN15TransportTraitsD5Ev - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN15TransportTraitsD0Ev - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZN15TransportTraits6createEv - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED5Ev - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .literal._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x40106be0 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .text 0x40106be0 0x11 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - *.pioenvs\\*\\lib*.a:(.iram.text) - *fill* 0x40106bf1 0x3 - .iram.text 0x40106bf4 0x1cc .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - 0x1e8 (size before relaxing) - 0x40106c10 RCSwitch::receiveProtocol(int, unsigned int) - 0x40106d28 RCSwitch::handleInterrupt() - .iram.text 0x40106dc0 0x67 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - 0x7f (size before relaxing) - 0x40106dcc millis - 0x40106e04 micros - 0x40106e14 delayMicroseconds - *fill* 0x40106e27 0x1 - .iram.text 0x40106e28 0x81 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - 0x85 (size before relaxing) - 0x40106e2c pvPortMalloc - 0x40106e44 vPortFree - 0x40106e5c pvPortCalloc - 0x40106e74 pvPortRealloc - 0x40106e88 pvPortZalloc - 0x40106ea0 xPortWantedSizeAlign - *fill* 0x40106ea9 0x3 - .iram.text 0x40106eac 0xf3 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - 0x10b (size before relaxing) - 0x40106eb0 puts - 0x40106ecc putchar - 0x40106ee0 printf - 0x40106f14 sprintf - 0x40106f40 snprintf - 0x40106f68 vprintf - 0x40106f8c vsnprintf - *fill* 0x40106f9f 0x1 - .iram.text 0x40106fa0 0x8f .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - 0x97 (size before relaxing) - 0x40106fac cont_init - 0x40106fd8 cont_check - 0x40106ff8 cont_get_free_stack - 0x40107014 cont_can_yield - *fill* 0x4010702f 0x0 - *fill* 0x4010702f 0x0 - *fill* 0x4010702f 0x0 - *fill* 0x4010702f 0x0 - *.pioenvs/*/lib*.a:(.iram.text) - *.pioenvs\\*\\lib\\*.a:(.iram.text) - *.pioenvs/*/lib/*.a:(.iram.text) - *.pioenvs\\*\\src\\*.o(.iram.text) - *fill* 0x4010702f 0x1 - .iram.text 0x40107030 0x157 .pioenvs\sonoff\src\core_esp8266_timer.c.o - 0x17f (size before relaxing) - 0x40107040 timer1_isr_handler - 0x4010709c timer0_isr_handler - 0x401070d0 timer1_isr_init - 0x401070f0 timer1_detachInterrupt - 0x40107124 timer1_write - 0x40107154 timer1_disable - 0x40107168 timer0_detachInterrupt - *fill* 0x40107187 0x1 - .iram.text 0x40107188 0x2a5 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - 0x2e5 (size before relaxing) - 0x401071a0 interrupt_handler - 0x40107260 __digitalWrite - 0x40107260 digitalWrite - 0x401072c0 __digitalRead - 0x401072c0 digitalRead - 0x40107310 __attachInterruptArg - 0x401073a0 __attachInterrupt - 0x401073a0 attachInterrupt - 0x401073b8 detachInterrupt - 0x401073b8 __detachInterrupt - *fill* 0x4010742d 0x3 - .iram.text 0x40107430 0x12b .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - 0x15b (size before relaxing) - 0x40107444 pwm_timer_isr - 0x4010752c pwm_stop_pin - *fill* 0x4010755b 0x1 - .iram.text 0x4010755c 0xa7 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0xb7 (size before relaxing) - 0x4010756c HlwCfInterrupt() - 0x401075bc HlwCf1Interrupt() - *fill* 0x40107603 0x0 - *fill* 0x40107603 0x0 - *fill* 0x40107603 0x0 - *fill* 0x40107603 0x0 - *.pioenvs/*/src/*.o(.iram.text) - *(.fini.literal) - *(.fini) - *(.gnu.version) - 0x40107603 _text_end = ABSOLUTE (.) - 0x40107603 _etext = . - -.lit4 0x40107604 0x0 - 0x40107604 _lit4_start = ABSOLUTE (.) - *(*.lit4) - *(.lit4.*) - *(.gnu.linkonce.lit4.*) - 0x40107604 _lit4_end = ABSOLUTE (.) - 0x400047f0 PROVIDE (Cache_Read_Disable, 0x400047f0) - 0x40004678 PROVIDE (Cache_Read_Enable, 0x40004678) - 0x400035a0 PROVIDE (FilePacketSendReqMsgProc, 0x400035a0) - 0x4000368c PROVIDE (FlashDwnLdParamCfgMsgProc, 0x4000368c) - 0x40003538 PROVIDE (FlashDwnLdStartMsgProc, 0x40003538) - 0x40003658 PROVIDE (FlashDwnLdStopReqMsgProc, 0x40003658) - 0x40003f4c PROVIDE (GetUartDevice, 0x40003f4c) - 0x40009900 PROVIDE (MD5Final, 0x40009900) - 0x40009818 PROVIDE (MD5Init, 0x40009818) - 0x40009834 PROVIDE (MD5Update, 0x40009834) - 0x400036c4 PROVIDE (MemDwnLdStartMsgProc, 0x400036c4) - 0x4000377c PROVIDE (MemDwnLdStopReqMsgProc, 0x4000377c) - 0x400036f0 PROVIDE (MemPacketSendReqMsgProc, 0x400036f0) - 0x40003eac PROVIDE (RcvMsg, 0x40003eac) - 0x4000b648 PROVIDE (SHA1Final, 0x4000b648) - 0x4000b584 PROVIDE (SHA1Init, 0x4000b584) - 0x4000a364 PROVIDE (SHA1Transform, 0x4000a364) - 0x4000b5a8 PROVIDE (SHA1Update, 0x4000b5a8) - 0x400043c8 PROVIDE (SPI_read_status, 0x400043c8) - 0x40004400 PROVIDE (SPI_write_status, 0x40004400) - 0x4000443c PROVIDE (SPI_write_enable, 0x4000443c) - 0x4000448c PROVIDE (Wait_SPI_Idle, 0x4000448c) - 0x40004b44 PROVIDE (SPIEraseArea, 0x40004b44) - 0x400049b4 PROVIDE (SPIEraseBlock, 0x400049b4) - 0x40004984 PROVIDE (SPIEraseChip, 0x40004984) - 0x40004a00 PROVIDE (SPIEraseSector, 0x40004a00) - 0x400048a8 PROVIDE (SPILock, 0x400048a8) - 0x40004c2c PROVIDE (SPIParamCfg, 0x40004c2c) - 0x40004b1c PROVIDE (SPIRead, 0x40004b1c) - 0x400048ec PROVIDE (SPIReadModeCnfig, 0x400048ec) - 0x40004878 PROVIDE (SPIUnlock, 0x40004878) - 0x40004a4c PROVIDE (SPIWrite, 0x40004a4c) - 0x40003f58 PROVIDE (SelectSpiFunction, 0x40003f58) - 0x40003cf4 PROVIDE (SendMsg, 0x40003cf4) - 0x40003230 PROVIDE (UartConnCheck, 0x40003230) - 0x400037a0 PROVIDE (UartConnectProc, 0x400037a0) - 0x40003368 PROVIDE (UartDwnLdProc, 0x40003368) - 0x40003ef4 PROVIDE (UartGetCmdLn, 0x40003ef4) - 0x4000381c PROVIDE (UartRegReadProc, 0x4000381c) - 0x400037ac PROVIDE (UartRegWriteProc, 0x400037ac) - 0x40003c30 PROVIDE (UartRxString, 0x40003c30) - 0x40003a14 PROVIDE (Uart_Init, 0x40003a14) - 0x40000010 PROVIDE (_DebugExceptionVector, 0x40000010) - 0x40000070 PROVIDE (_DoubleExceptionVector, 0x40000070) - 0x40000030 PROVIDE (_KernelExceptionVector, 0x40000030) - 0x40000020 PROVIDE (_NMIExceptionVector, 0x40000020) - 0x400000a4 PROVIDE (_ResetHandler, 0x400000a4) - 0x40000080 PROVIDE (_ResetVector, 0x40000080) - 0x40000050 PROVIDE (_UserExceptionVector, 0x40000050) - 0x4000c538 PROVIDE (__adddf3, 0x4000c538) - 0x4000c180 PROVIDE (__addsf3, 0x4000c180) - 0x4000cb94 PROVIDE (__divdf3, 0x4000cb94) - 0x4000ce60 PROVIDE (__divdi3, 0x4000ce60) - 0x4000dc88 PROVIDE (__divsi3, 0x4000dc88) - 0x4000cdfc PROVIDE (__extendsfdf2, 0x4000cdfc) - 0x4000ccb8 PROVIDE (__fixdfsi, 0x4000ccb8) - 0x4000cd00 PROVIDE (__fixunsdfsi, 0x4000cd00) - 0x4000c4c4 PROVIDE (__fixunssfsi, 0x4000c4c4) - 0x4000e2f0 PROVIDE (__floatsidf, 0x4000e2f0) - 0x4000e2ac PROVIDE (__floatsisf, 0x4000e2ac) - 0x4000e2e8 PROVIDE (__floatunsidf, 0x4000e2e8) - 0x4000e2a4 PROVIDE (__floatunsisf, 0x4000e2a4) - 0x4000c8f0 PROVIDE (__muldf3, 0x4000c8f0) - 0x40000650 PROVIDE (__muldi3, 0x40000650) - 0x4000c3dc PROVIDE (__mulsf3, 0x4000c3dc) - 0x4000c688 PROVIDE (__subdf3, 0x4000c688) - 0x4000c268 PROVIDE (__subsf3, 0x4000c268) - 0x4000cd5c PROVIDE (__truncdfsf2, 0x4000cd5c) - 0x4000d310 PROVIDE (__udivdi3, 0x4000d310) - 0x4000e21c PROVIDE (__udivsi3, 0x4000e21c) - 0x4000d770 PROVIDE (__umoddi3, 0x4000d770) - 0x4000e268 PROVIDE (__umodsi3, 0x4000e268) - 0x4000dcf0 PROVIDE (__umulsidi3, 0x4000dcf0) - 0x4000e388 PROVIDE (_rom_store, 0x4000e388) - 0x4000e328 PROVIDE (_rom_store_table, 0x4000e328) - 0x4000042c PROVIDE (_start, 0x4000042c) - 0x4000dbe0 PROVIDE (_xtos_alloca_handler, 0x4000dbe0) - 0x40000598 PROVIDE (_xtos_c_wrapper_handler, 0x40000598) - 0x40000590 PROVIDE (_xtos_cause3_handler, 0x40000590) - 0x4000bda4 PROVIDE (_xtos_ints_off, 0x4000bda4) - 0x4000bd84 PROVIDE (_xtos_ints_on, 0x4000bd84) - 0x4000048c PROVIDE (_xtos_l1int_handler, 0x4000048c) - 0x4000dbf8 PROVIDE (_xtos_p_none, 0x4000dbf8) - 0x4000056c PROVIDE (_xtos_restore_intlevel, 0x4000056c) - 0x4000dc54 PROVIDE (_xtos_return_from_exc, 0x4000dc54) - 0x40000454 PROVIDE (_xtos_set_exception_handler, 0x40000454) - 0x4000bd70 PROVIDE (_xtos_set_interrupt_handler, 0x4000bd70) - 0x4000bd28 PROVIDE (_xtos_set_interrupt_handler_arg, 0x4000bd28) - 0x4000dbfc PROVIDE (_xtos_set_intlevel, 0x4000dbfc) - 0x4000dc18 PROVIDE (_xtos_set_min_intlevel, 0x4000dc18) - 0x40000574 PROVIDE (_xtos_set_vpri, 0x40000574) - 0x4000dbe4 PROVIDE (_xtos_syscall_handler, 0x4000dbe4) - 0x4000dc44 PROVIDE (_xtos_unhandled_exception, 0x4000dc44) - 0x4000dc3c PROVIDE (_xtos_unhandled_interrupt, 0x4000dc3c) - 0x400092d4 PROVIDE (aes_decrypt, 0x400092d4) - 0x400092e4 PROVIDE (aes_decrypt_deinit, 0x400092e4) - 0x40008ea4 PROVIDE (aes_decrypt_init, 0x40008ea4) - 0x40009410 PROVIDE (aes_unwrap, 0x40009410) - 0x40009648 PROVIDE (base64_decode, 0x40009648) - 0x400094fc PROVIDE (base64_encode, 0x400094fc) - 0x4000de84 PROVIDE (bzero, 0x4000de84) - 0x40000814 PROVIDE (cmd_parse, 0x40000814) - 0x40000b24 PROVIDE (conv_str_decimal, 0x40000b24) - 0x40000cb8 PROVIDE (conv_str_hex, 0x40000cb8) - 0x40000a60 PROVIDE (convert_para_str, 0x40000a60) - 0x400026d0 PROVIDE (dtm_get_intr_mask, 0x400026d0) - 0x4000269c PROVIDE (dtm_params_init, 0x4000269c) - 0x400026c8 PROVIDE (dtm_set_intr_mask, 0x400026c8) - 0x400026dc PROVIDE (dtm_set_params, 0x400026dc) - 0x40001d14 PROVIDE (eprintf, 0x40001d14) - 0x40001cb8 PROVIDE (eprintf_init_buf, 0x40001cb8) - 0x40001d48 PROVIDE (eprintf_to_host, 0x40001d48) - 0x40002494 PROVIDE (est_get_printf_buf_remain_len, 0x40002494) - 0x4000249c PROVIDE (est_reset_printf_buf_len, 0x4000249c) - 0x40002ae8 PROVIDE (ets_bzero, 0x40002ae8) - 0x40002b74 PROVIDE (ets_char2xdigit, 0x40002b74) - 0x40002ecc PROVIDE (ets_delay_us, 0x40002ecc) - 0x400027b8 PROVIDE (ets_enter_sleep, 0x400027b8) - 0x40002578 PROVIDE (ets_external_printf, 0x40002578) - 0x40002f0c PROVIDE (ets_get_cpu_frequency, 0x40002f0c) - 0x40002bcc PROVIDE (ets_getc, 0x40002bcc) - 0x40002450 PROVIDE (ets_install_external_printf, 0x40002450) - 0x4000242c PROVIDE (ets_install_putc1, 0x4000242c) - 0x4000248c PROVIDE (ets_install_putc2, 0x4000248c) - 0x40002438 PROVIDE (ets_install_uart_printf, 0x40002438) - 0x40000f74 PROVIDE (ets_intr_lock, 0x40000f74) - 0x40000f80 PROVIDE (ets_intr_unlock, 0x40000f80) - 0x40000f88 PROVIDE (ets_isr_attach, 0x40000f88) - 0x40000f98 PROVIDE (ets_isr_mask, 0x40000f98) - 0x40000fa8 PROVIDE (ets_isr_unmask, 0x40000fa8) - 0x400018d4 PROVIDE (ets_memcmp, 0x400018d4) - 0x400018b4 PROVIDE (ets_memcpy, 0x400018b4) - 0x400018c4 PROVIDE (ets_memmove, 0x400018c4) - 0x400018a4 PROVIDE (ets_memset, 0x400018a4) - 0x40000e24 PROVIDE (ets_post, 0x40000e24) - 0x400024cc PROVIDE (ets_printf, 0x400024cc) - 0x40002be8 PROVIDE (ets_putc, 0x40002be8) - 0x40002a40 PROVIDE (ets_rtc_int_register, 0x40002a40) - 0x40000e04 PROVIDE (ets_run, 0x40000e04) - 0x40000dc0 PROVIDE (ets_set_idle_cb, 0x40000dc0) - 0x40000fbc PROVIDE (ets_set_user_start, 0x40000fbc) - 0x40002af8 PROVIDE (ets_str2macaddr, 0x40002af8) - 0x40002aa8 PROVIDE (ets_strcmp, 0x40002aa8) - 0x40002a88 PROVIDE (ets_strcpy, 0x40002a88) - 0x40002ac8 PROVIDE (ets_strlen, 0x40002ac8) - 0x40002ab8 PROVIDE (ets_strncmp, 0x40002ab8) - 0x40002a98 PROVIDE (ets_strncpy, 0x40002a98) - 0x40002ad8 PROVIDE (ets_strstr, 0x40002ad8) - 0x40000dd0 PROVIDE (ets_task, 0x40000dd0) - 0x40002cc4 PROVIDE (ets_timer_arm, 0x40002cc4) - 0x40002d40 PROVIDE (ets_timer_disarm, 0x40002d40) - 0x40002d80 PROVIDE (ets_timer_done, 0x40002d80) - 0x40002da8 PROVIDE (ets_timer_handler_isr, 0x40002da8) - 0x40002e68 PROVIDE (ets_timer_init, 0x40002e68) - 0x40002c48 PROVIDE (ets_timer_setfn, 0x40002c48) - 0x40002544 PROVIDE (ets_uart_printf, 0x40002544) - 0x40002f04 PROVIDE (ets_update_cpu_frequency, 0x40002f04) - 0x40001f00 PROVIDE (ets_vprintf, 0x40001f00) - 0x400030f0 PROVIDE (ets_wdt_disable, 0x400030f0) - 0x40002fa0 PROVIDE (ets_wdt_enable, 0x40002fa0) - 0x40002f34 PROVIDE (ets_wdt_get_mode, 0x40002f34) - 0x40003170 PROVIDE (ets_wdt_init, 0x40003170) - 0x40003158 PROVIDE (ets_wdt_restore, 0x40003158) - 0x40001da0 PROVIDE (ets_write_char, 0x40001da0) - 0x4000091c PROVIDE (get_first_seg, 0x4000091c) - 0x40004c50 PROVIDE (gpio_init, 0x40004c50) - 0x40004cf0 PROVIDE (gpio_input_get, 0x40004cf0) - 0x40004dcc PROVIDE (gpio_intr_ack, 0x40004dcc) - 0x40004e28 PROVIDE (gpio_intr_handler_register, 0x40004e28) - 0x40004d88 PROVIDE (gpio_intr_pending, 0x40004d88) - 0x40004efc PROVIDE (gpio_intr_test, 0x40004efc) - 0x40004cd0 PROVIDE (gpio_output_set, 0x40004cd0) - 0x40004d90 PROVIDE (gpio_pin_intr_state_set, 0x40004d90) - 0x40004ed4 PROVIDE (gpio_pin_wakeup_disable, 0x40004ed4) - 0x40004e90 PROVIDE (gpio_pin_wakeup_enable, 0x40004e90) - 0x40004d5c PROVIDE (gpio_register_get, 0x40004d5c) - 0x40004d04 PROVIDE (gpio_register_set, 0x40004d04) - 0x4000a2cc PROVIDE (hmac_md5, 0x4000a2cc) - 0x4000a160 PROVIDE (hmac_md5_vector, 0x4000a160) - 0x4000ba28 PROVIDE (hmac_sha1, 0x4000ba28) - 0x4000b8b4 PROVIDE (hmac_sha1_vector, 0x4000b8b4) - 0x40004f40 PROVIDE (lldesc_build_chain, 0x40004f40) - 0x40005050 PROVIDE (lldesc_num2link, 0x40005050) - 0x4000507c PROVIDE (lldesc_set_owner, 0x4000507c) - 0x40000fec PROVIDE (main, 0x40000fec) - 0x400097ac PROVIDE (md5_vector, 0x400097ac) - 0x40001c2c PROVIDE (mem_calloc, 0x40001c2c) - 0x400019e0 PROVIDE (mem_free, 0x400019e0) - 0x40001998 PROVIDE (mem_init, 0x40001998) - 0x40001b40 PROVIDE (mem_malloc, 0x40001b40) - 0x40001c6c PROVIDE (mem_realloc, 0x40001c6c) - 0x40001a14 PROVIDE (mem_trim, 0x40001a14) - 0x40001c58 PROVIDE (mem_zalloc, 0x40001c58) - 0x4000dea8 PROVIDE (memcmp, 0x4000dea8) - 0x4000df48 PROVIDE (memcpy, 0x4000df48) - 0x4000e04c PROVIDE (memmove, 0x4000e04c) - 0x4000e190 PROVIDE (memset, 0x4000e190) - 0x400031c0 PROVIDE (multofup, 0x400031c0) - 0x4000b840 PROVIDE (pbkdf2_sha1, 0x4000b840) - 0x40006b08 PROVIDE (phy_get_romfuncs, 0x40006b08) - 0x40000600 PROVIDE (rand, 0x40000600) - 0x4000dd68 PROVIDE (rc4_skip, 0x4000dd68) - 0x40003d08 PROVIDE (recv_packet, 0x40003d08) - 0x40000a04 PROVIDE (remove_head_space, 0x40000a04) - 0x40008dd0 PROVIDE (rijndaelKeySetupDec, 0x40008dd0) - 0x40009300 PROVIDE (rijndaelKeySetupEnc, 0x40009300) - 0x400060c0 PROVIDE (rom_abs_temp, 0x400060c0) - 0x40006b10 PROVIDE (rom_ana_inf_gating_en, 0x40006b10) - 0x40007a28 PROVIDE (rom_cal_tos_v50, 0x40007a28) - 0x40006f84 PROVIDE (rom_chip_50_set_channel, 0x40006f84) - 0x400060d0 PROVIDE (rom_chip_v5_disable_cca, 0x400060d0) - 0x400060ec PROVIDE (rom_chip_v5_enable_cca, 0x400060ec) - 0x4000711c PROVIDE (rom_chip_v5_rx_init, 0x4000711c) - 0x4000610c PROVIDE (rom_chip_v5_sense_backoff, 0x4000610c) - 0x4000718c PROVIDE (rom_chip_v5_tx_init, 0x4000718c) - 0x4000615c PROVIDE (rom_dc_iq_est, 0x4000615c) - 0x400061b8 PROVIDE (rom_en_pwdet, 0x400061b8) - 0x40006238 PROVIDE (rom_get_bb_atten, 0x40006238) - 0x40006260 PROVIDE (rom_get_corr_power, 0x40006260) - 0x400062dc PROVIDE (rom_get_fm_sar_dout, 0x400062dc) - 0x40006394 PROVIDE (rom_get_noisefloor, 0x40006394) - 0x400063b0 PROVIDE (rom_get_power_db, 0x400063b0) - 0x40007268 PROVIDE (rom_i2c_readReg, 0x40007268) - 0x4000729c PROVIDE (rom_i2c_readReg_Mask, 0x4000729c) - 0x400072d8 PROVIDE (rom_i2c_writeReg, 0x400072d8) - 0x4000730c PROVIDE (rom_i2c_writeReg_Mask, 0x4000730c) - 0x40006400 PROVIDE (rom_iq_est_disable, 0x40006400) - 0x40006430 PROVIDE (rom_iq_est_enable, 0x40006430) - 0x40006484 PROVIDE (rom_linear_to_db, 0x40006484) - 0x400065a4 PROVIDE (rom_mhz2ieee, 0x400065a4) - 0x40007bf0 PROVIDE (rom_pbus_dco___SA2, 0x40007bf0) - 0x4000737c PROVIDE (rom_pbus_debugmode, 0x4000737c) - 0x40007410 PROVIDE (rom_pbus_enter_debugmode, 0x40007410) - 0x40007448 PROVIDE (rom_pbus_exit_debugmode, 0x40007448) - 0x4000747c PROVIDE (rom_pbus_force_test, 0x4000747c) - 0x400074d8 PROVIDE (rom_pbus_rd, 0x400074d8) - 0x4000754c PROVIDE (rom_pbus_set_rxgain, 0x4000754c) - 0x40007610 PROVIDE (rom_pbus_set_txgain, 0x40007610) - 0x40007648 PROVIDE (rom_pbus_workmode, 0x40007648) - 0x40007688 PROVIDE (rom_pbus_xpd_rx_off, 0x40007688) - 0x400076cc PROVIDE (rom_pbus_xpd_rx_on, 0x400076cc) - 0x400076fc PROVIDE (rom_pbus_xpd_tx_off, 0x400076fc) - 0x40007740 PROVIDE (rom_pbus_xpd_tx_on, 0x40007740) - 0x400077a0 PROVIDE (rom_pbus_xpd_tx_on__low_gain, 0x400077a0) - 0x40007804 PROVIDE (rom_phy_reset_req, 0x40007804) - 0x4000781c PROVIDE (rom_restart_cal, 0x4000781c) - 0x40007eb4 PROVIDE (rom_rfcal_pwrctrl, 0x40007eb4) - 0x4000804c PROVIDE (rom_rfcal_rxiq, 0x4000804c) - 0x40008264 PROVIDE (rom_rfcal_rxiq_set_reg, 0x40008264) - 0x40008388 PROVIDE (rom_rfcal_txcap, 0x40008388) - 0x40008610 PROVIDE (rom_rfcal_txiq, 0x40008610) - 0x400088b8 PROVIDE (rom_rfcal_txiq_cover, 0x400088b8) - 0x40008a70 PROVIDE (rom_rfcal_txiq_set_reg, 0x40008a70) - 0x40007868 PROVIDE (rom_rfpll_reset, 0x40007868) - 0x40007968 PROVIDE (rom_rfpll_set_freq, 0x40007968) - 0x40008b6c PROVIDE (rom_rxiq_cover_mg_mp, 0x40008b6c) - 0x40006628 PROVIDE (rom_rxiq_get_mis, 0x40006628) - 0x40006738 PROVIDE (rom_sar_init, 0x40006738) - 0x4000678c PROVIDE (rom_set_ana_inf_tx_scale, 0x4000678c) - 0x40006c50 PROVIDE (rom_set_channel_freq, 0x40006c50) - 0x400067c8 PROVIDE (rom_set_loopback_gain, 0x400067c8) - 0x40006830 PROVIDE (rom_set_noise_floor, 0x40006830) - 0x40006550 PROVIDE (rom_set_rxclk_en, 0x40006550) - 0x40008c6c PROVIDE (rom_set_txbb_atten, 0x40008c6c) - 0x4000650c PROVIDE (rom_set_txclk_en, 0x4000650c) - 0x40008d34 PROVIDE (rom_set_txiq_cal, 0x40008d34) - 0x40006874 PROVIDE (rom_start_noisefloor, 0x40006874) - 0x400068b4 PROVIDE (rom_start_tx_tone, 0x400068b4) - 0x4000698c PROVIDE (rom_stop_tx_tone, 0x4000698c) - 0x40006a98 PROVIDE (rom_tx_mac_disable, 0x40006a98) - 0x40006ad4 PROVIDE (rom_tx_mac_enable, 0x40006ad4) - 0x40006a1c PROVIDE (rom_txtone_linear_pwr, 0x40006a1c) - 0x400078dc PROVIDE (rom_write_rfpll_sdm, 0x400078dc) - 0x400031b4 PROVIDE (roundup2, 0x400031b4) - 0x40002870 PROVIDE (rtc_enter_sleep, 0x40002870) - 0x400025e0 PROVIDE (rtc_get_reset_reason, 0x400025e0) - 0x400029ec PROVIDE (rtc_intr_handler, 0x400029ec) - 0x40002668 PROVIDE (rtc_set_sleep_mode, 0x40002668) - 0x400027a4 PROVIDE (save_rxbcn_mactime, 0x400027a4) - 0x400027ac PROVIDE (save_tsf_us, 0x400027ac) - 0x40003c80 PROVIDE (send_packet, 0x40003c80) - 0x4000ba48 PROVIDE (sha1_prf, 0x4000ba48) - 0x4000a2ec PROVIDE (sha1_vector, 0x4000a2ec) - 0x40005180 PROVIDE (sip_alloc_to_host_evt, 0x40005180) - 0x400058a8 PROVIDE (sip_get_ptr, 0x400058a8) - 0x40005668 PROVIDE (sip_get_state, 0x40005668) - 0x4000567c PROVIDE (sip_init_attach, 0x4000567c) - 0x4000544c PROVIDE (sip_install_rx_ctrl_cb, 0x4000544c) - 0x4000545c PROVIDE (sip_install_rx_data_cb, 0x4000545c) - 0x400050fc PROVIDE (sip_post, 0x400050fc) - 0x400056c4 PROVIDE (sip_post_init, 0x400056c4) - 0x4000534c PROVIDE (sip_reclaim_from_host_cmd, 0x4000534c) - 0x400052c0 PROVIDE (sip_reclaim_tx_data_pkt, 0x400052c0) - 0x40005808 PROVIDE (sip_send, 0x40005808) - 0x40005864 PROVIDE (sip_to_host_chain_append, 0x40005864) - 0x40005234 PROVIDE (sip_to_host_evt_send_done, 0x40005234) - 0x400060ac PROVIDE (slc_add_credits, 0x400060ac) - 0x40005d90 PROVIDE (slc_enable, 0x40005d90) - 0x40005f24 PROVIDE (slc_from_host_chain_fetch, 0x40005f24) - 0x40005e94 PROVIDE (slc_from_host_chain_recycle, 0x40005e94) - 0x40005c50 PROVIDE (slc_init_attach, 0x40005c50) - 0x4000608c PROVIDE (slc_init_credit, 0x4000608c) - 0x40006014 PROVIDE (slc_pause_from_host, 0x40006014) - 0x40005c1c PROVIDE (slc_reattach, 0x40005c1c) - 0x4000603c PROVIDE (slc_resume_from_host, 0x4000603c) - 0x40005dc0 PROVIDE (slc_select_tohost_gpio, 0x40005dc0) - 0x40005db8 PROVIDE (slc_select_tohost_gpio_mode, 0x40005db8) - 0x40005de4 PROVIDE (slc_send_to_host_chain, 0x40005de4) - 0x40006068 PROVIDE (slc_set_host_io_max_window, 0x40006068) - 0x40005f10 PROVIDE (slc_to_host_chain_recycle, 0x40005f10) - 0x4000264c PROVIDE (software_reset, 0x4000264c) - 0x40004644 PROVIDE (spi_flash_attach, 0x40004644) - 0x400005f0 PROVIDE (srand, 0x400005f0) - 0x4000bdc8 PROVIDE (strcmp, 0x4000bdc8) - 0x4000bec8 PROVIDE (strcpy, 0x4000bec8) - 0x4000bf4c PROVIDE (strlen, 0x4000bf4c) - 0x4000bfa8 PROVIDE (strncmp, 0x4000bfa8) - 0x4000c0a0 PROVIDE (strncpy, 0x4000c0a0) - 0x4000e1e0 PROVIDE (strstr, 0x4000e1e0) - 0x40002c64 PROVIDE (timer_insert, 0x40002c64) - 0x4000383c PROVIDE (uartAttach, 0x4000383c) - 0x40003924 PROVIDE (uart_baudrate_detect, 0x40003924) - 0x400038a4 PROVIDE (uart_buff_switch, 0x400038a4) - 0x400039d8 PROVIDE (uart_div_modify, 0x400039d8) - 0x40003bbc PROVIDE (uart_rx_intr_handler, 0x40003bbc) - 0x40003b8c PROVIDE (uart_rx_one_char, 0x40003b8c) - 0x40003b64 PROVIDE (uart_rx_one_char_block, 0x40003b64) - 0x40003ec8 PROVIDE (uart_rx_readbuff, 0x40003ec8) - 0x40003b30 PROVIDE (uart_tx_one_char, 0x40003b30) - 0x4000bc40 PROVIDE (wepkey_128, 0x4000bc40) - 0x4000bb3c PROVIDE (wepkey_64, 0x4000bb3c) - 0x40000688 PROVIDE (xthal_bcopy, 0x40000688) - 0x4000074c PROVIDE (xthal_copy123, 0x4000074c) - 0x4000dd4c PROVIDE (xthal_get_ccompare, 0x4000dd4c) - 0x4000dd38 PROVIDE (xthal_get_ccount, 0x4000dd38) - 0x4000dd58 PROVIDE (xthal_get_interrupt, 0x4000dd58) - 0x4000dd58 PROVIDE (xthal_get_intread, 0x4000dd58) - 0x400006c4 PROVIDE (xthal_memcpy, 0x400006c4) - 0x4000dd40 PROVIDE (xthal_set_ccompare, 0x4000dd40) - 0x4000dd60 PROVIDE (xthal_set_intclear, 0x4000dd60) - 0x4000e320 PROVIDE (xthal_spill_registers_into_stack_nw, 0x4000e320) - 0x4000e324 PROVIDE (xthal_window_spill, 0x4000e324) - 0x4000e320 PROVIDE (xthal_window_spill_nw, 0x4000e320) - 0x3fffccf0 PROVIDE (Te0, 0x3fffccf0) - 0x3fffd100 PROVIDE (Td0, 0x3fffd100) - 0x3fffd500 PROVIDE (Td4s, 0x3fffd500) - 0x3fffd0f0 PROVIDE (rcons, 0x3fffd0f0) - 0x3fffde10 PROVIDE (UartDev, 0x3fffde10) - 0x3fffc714 PROVIDE (flashchip, 0x3fffc714) -LOAD .pioenvs\sonoff\src\core_esp8266_timer.c.o -LOAD .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o -LOAD .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o -LOAD .pioenvs\sonoff\src\sonoff.ino.cpp.o -START GROUP -LOAD .pioenvs\sonoff\libd13\libIRremoteESP8266-2.2.1.02.a -LOAD .pioenvs\sonoff\lib8be\libWire.a -LOAD .pioenvs\sonoff\libbad\libI2Cdevlib-Core.a -LOAD .pioenvs\sonoff\lib508\libI2Cdevlib-ADS1115.a -LOAD .pioenvs\sonoff\lib47b\libTicker.a -LOAD .pioenvs\sonoff\lib964\libMPU6050.a -LOAD .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a -LOAD .pioenvs\sonoff\lib99a\libSPI.a -LOAD .pioenvs\sonoff\lib5a3\libAdafruit-GFX-Library-1.2.9.a -LOAD .pioenvs\sonoff\libe00\libAdafruit_SSD1306-1.1.2.a -LOAD .pioenvs\sonoff\lib32b\libJoba_Tsl2561-2.0.7.a -LOAD .pioenvs\sonoff\lib36c\libBME680_driver-bme680_v3.5.9.a -LOAD .pioenvs\sonoff\libdba\libArduinoJson-5.11.2.a -LOAD .pioenvs\sonoff\lib7d2\libESP8266WiFi.a -LOAD .pioenvs\sonoff\lib13e\libESP8266mDNS.a -LOAD .pioenvs\sonoff\lib797\libArduinoOTA.a -LOAD .pioenvs\sonoff\liba3d\libDNSServer.a -LOAD .pioenvs\sonoff\lib344\libTasmotaMqtt-1.1.1.a -LOAD .pioenvs\sonoff\lib9c8\libAdafruit_ILI9341-1.2.0-Tasmota-1.0.a -LOAD .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a -LOAD .pioenvs\sonoff\lib1a6\libOneWire-2.3.3.06.a -LOAD .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a -LOAD .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a -LOAD .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a -LOAD .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a -LOAD .pioenvs\sonoff\libe09\libesp-epaper-29-ws-20171230-gemu-1.0.a -LOAD .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a -LOAD .pioenvs\sonoff\libaac\libNeoPixelBus-2.2.9.a -LOAD .pioenvs\sonoff\libc1f\libLiquidCrystal_I2C-1.1.3.a -LOAD .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a -LOAD .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a -LOAD .pioenvs\sonoff\lib4e0\libAdafruit_LED_Backpack-1.1.6.a -LOAD .pioenvs\sonoff\lib4b9\libESP8266WebServer.a -LOAD .pioenvs\sonoff\lib417\libMutichannel_Gas_Sensor.a -LOAD .pioenvs\sonoff\lib56e\libarduino-mqtt-2.4.0.a -LOAD .pioenvs\sonoff\lib433\libEEPROM.a -LOAD .pioenvs\sonoff\lib172\libesp-knx-ip-0.5.1.a -LOAD .pioenvs\sonoff\libFrameworkArduinoVariant.a -LOAD .pioenvs\sonoff\libFrameworkArduino.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmesh.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa2.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a -LOAD c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a -LOAD c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a -LOAD C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a -END GROUP -OUTPUT(.pioenvs\sonoff\firmware.elf elf32-xtensa-le) - -.comment 0x00000000 0x1bac - .comment 0x00000000 0x11 .pioenvs\sonoff\src\core_esp8266_timer.c.o - 0x12 (size before relaxing) - .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .comment 0x00000000 0x12 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .comment 0x00000000 0x12 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .comment 0x00000000 0x12 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .comment 0x00000011 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - 0x58 (size before relaxing) - .comment 0x00000068 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - 0x58 (size before relaxing) - .comment 0x000000bf 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - 0x59 (size before relaxing) - .comment 0x00000117 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - 0x62 (size before relaxing) - .comment 0x00000178 0x4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - 0x50 (size before relaxing) - .comment 0x000001c7 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - 0x5a (size before relaxing) - .comment 0x00000220 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - 0x51 (size before relaxing) - .comment 0x00000270 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - 0x52 (size before relaxing) - .comment 0x000002c1 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - 0x55 (size before relaxing) - .comment 0x00000315 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - 0x57 (size before relaxing) - .comment 0x0000036b 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - 0x52 (size before relaxing) - .comment 0x000003bc 0x4f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - 0x50 (size before relaxing) - .comment 0x0000040b 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - 0x56 (size before relaxing) - .comment 0x00000460 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - 0x57 (size before relaxing) - .comment 0x000004b6 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - 0x57 (size before relaxing) - .comment 0x0000050c 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - 0x57 (size before relaxing) - .comment 0x00000562 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - 0x5c (size before relaxing) - .comment 0x000005bd 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - 0x5b (size before relaxing) - .comment 0x00000617 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - 0x54 (size before relaxing) - .comment 0x0000066a 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - 0x57 (size before relaxing) - .comment 0x000006c0 0x21 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0x22 (size before relaxing) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .comment 0x00000000 0x22 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .comment 0x000006e1 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - 0x57 (size before relaxing) - .comment 0x00000737 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - 0x5e (size before relaxing) - .comment 0x00000794 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - 0x5b (size before relaxing) - .comment 0x000007ee 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - 0x5e (size before relaxing) - .comment 0x0000084b 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - 0x5a (size before relaxing) - .comment 0x000008a4 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - 0x5d (size before relaxing) - .comment 0x00000900 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - 0x62 (size before relaxing) - .comment 0x00000961 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - 0x5e (size before relaxing) - .comment 0x000009be 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - 0x5b (size before relaxing) - .comment 0x00000a18 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - 0x5d (size before relaxing) - .comment 0x00000a74 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - 0x5d (size before relaxing) - .comment 0x00000ad0 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - 0x5c (size before relaxing) - .comment 0x00000b2b 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - 0x5c (size before relaxing) - .comment 0x00000b86 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - 0x5b (size before relaxing) - .comment 0x00000be0 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - 0x54 (size before relaxing) - .comment 0x00000c33 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - 0x54 (size before relaxing) - .comment 0x00000c86 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - 0x5e (size before relaxing) - .comment 0x00000ce3 0x64 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - 0x65 (size before relaxing) - .comment 0x00000d47 0x62 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - 0x63 (size before relaxing) - .comment 0x00000da9 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - 0x61 (size before relaxing) - .comment 0x00000e09 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - 0x51 (size before relaxing) - .comment 0x00000e59 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - 0x58 (size before relaxing) - .comment 0x00000eb0 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - 0x5a (size before relaxing) - .comment 0x00000f09 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - 0x5a (size before relaxing) - .comment 0x00000f62 0x5a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - 0x5b (size before relaxing) - .comment 0x00000fbc 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - 0x5a (size before relaxing) - .comment 0x00001015 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - 0x58 (size before relaxing) - .comment 0x0000106c 0x51 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - 0x52 (size before relaxing) - .comment 0x000010bd 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - 0x5c (size before relaxing) - .comment 0x00001118 0x5b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - 0x5c (size before relaxing) - .comment 0x00001173 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - 0x5e (size before relaxing) - .comment 0x000011d0 0x54 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - 0x55 (size before relaxing) - .comment 0x00001224 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - 0x5e (size before relaxing) - .comment 0x00001281 0x5d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - 0x5e (size before relaxing) - .comment 0x000012de 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - 0x57 (size before relaxing) - .comment 0x00001334 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - 0x57 (size before relaxing) - .comment 0x0000138a 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - 0x54 (size before relaxing) - .comment 0x000013dd 0x5c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - 0x5d (size before relaxing) - .comment 0x00001439 0x59 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - 0x5a (size before relaxing) - .comment 0x00001492 0x63 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - 0x64 (size before relaxing) - .comment 0x000014f5 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - 0x54 (size before relaxing) - .comment 0x00001548 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .comment 0x00001589 0x4d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .comment 0x000015d6 0x49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .comment 0x0000161f 0x4d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .comment 0x0000166c 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .comment 0x000016bc 0x47 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .comment 0x00000000 0x22 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .comment 0x00001703 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x41 (size before relaxing) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .comment 0x00001743 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - 0x57 (size before relaxing) - .comment 0x00001799 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - 0x56 (size before relaxing) - .comment 0x000017ee 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - 0x59 (size before relaxing) - .comment 0x00001846 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - 0x54 (size before relaxing) - .comment 0x00001899 0x50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - 0x51 (size before relaxing) - .comment 0x000018e9 0x57 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - 0x58 (size before relaxing) - .comment 0x00001940 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - 0x57 (size before relaxing) - .comment 0x00001996 0x53 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - 0x54 (size before relaxing) - .comment 0x000019e9 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - 0x56 (size before relaxing) - .comment 0x00001a3e 0x56 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - 0x57 (size before relaxing) - .comment 0x00001a94 0x62 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - 0x63 (size before relaxing) - .comment 0x00001af6 0x61 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - 0x62 (size before relaxing) - .comment 0x00001b57 0x55 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - 0x56 (size before relaxing) - .comment 0x00000000 0x12 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .comment 0x00000000 0x41 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .comment 0x00000000 0x12 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .comment 0x00000000 0x12 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - -.xtensa.info 0x00000000 0x38 - .xtensa.info 0x00000000 0x38 .pioenvs\sonoff\src\core_esp8266_timer.c.o - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_digital.c.o - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\core_esp8266_wiring_pwm.c.o - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47b\libTicker.a(Ticker.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(c2.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libc6e\libC2Programmer-1.0.0.a(ihx.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFi.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiAP.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiSTA.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiScan.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\liba3d\libDNSServer.a(DNSServer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib47f\librc-switch-2.6.2.13.a(RCSwitch.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib21b\libAdafruit_SGP30-1.0.0.13.a(Adafruit_SGP30.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Esp.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(FS.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(MD5Builder.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Print.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Updater.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WMath.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(WString.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(abi.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_eboot_command.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_main.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_noniso.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_postmortem.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_si2c.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_wiring_shift.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(heap.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cencode.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(libc_replacements.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(pgmspace.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(uart.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(umm_malloc.c.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont.S.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(cont_util.c.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_sniffer.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_airkiss.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libsmartconfig.a(sc_esptouch.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm_for_bcn_only_mode.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(rate_control.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(trc.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(wdev.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(esf_buf.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(if_hwctrl.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(lmac.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libpp.a(pm.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(app_main.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lib.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(ets_timer.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(spi_flash.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user_interface.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(debug-vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(double-vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(kernel-vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(nmi-vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(user-vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(vector.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libmain.a(eagle_lwip_if.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(common.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(os_xtensa.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ets.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_hostap.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ht.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_input.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_mesh_quick.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_output.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_phy.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_power.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_proto.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_rfid.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_scan.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_sta.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_chm.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(wl_cnx.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_action_vendor.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_ccmp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_ie_vendor.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_common.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_dev_attr.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_enrollee.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_registrar.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_validate.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(eap_common.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(uuid.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_build.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_parse.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwps.a(wps_attr_process.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-cbc.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-dec.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal-enc.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_group5.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(dh_groups.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(sha256-internal.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-internal.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(crypto_internal-modexp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(bignum.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_ana.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_cal.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_chip_v6_unused.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libphy.a(phy_sleep.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_atan.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_cos.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fabs.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_fpclassify.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_modf.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_sin.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_tan.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-sf_fpclassify.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_acos.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_asin.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-w_log.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_acos.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_asin.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_log.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_rem_pio2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_sqrt.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_cos.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_rem_pio2.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_sin.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-k_tan.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_floor.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_lib_ver.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_matherr.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_nan.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_scalbn.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-s_copysign.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(base64.cpp.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(core_esp8266_phy.c.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(ap_config.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_auth_ie.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpabuf.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_common.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_debug.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_ie.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpa_main.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libwpa.a(wpas_glue.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_tkip.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libnet80211.a(ieee80211_crypto_wep.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libcrypto.a(aes-wrap.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClientSecure.cpp.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .xtensa.info 0x00000000 0x0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .xtensa.info 0x00000000 0x0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - .xtensa.info 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(time.c.o) - -.xt.lit._ZN5Print5writeEPKc - 0x00000000 0x0 - .xt.lit._ZN5Print5writeEPKc - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN12PubSubClientD2Ev - 0x00000000 0x0 - .xt.lit._ZN12PubSubClientD2Ev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN12PubSubClientD0Ev - 0x00000000 0x0 - .xt.lit._ZN12PubSubClientD0Ev - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9JsonArray7invalidEv - 0x00000000 0x8 - .xt.lit._ZN11ArduinoJson9JsonArray7invalidEv - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZN11ArduinoJson10JsonObject7invalidEv - 0x00000000 0x8 - .xt.lit._ZN11ArduinoJson10JsonObject7invalidEv - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x00000000 0x8 - .xt.lit._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x00000000 0x8 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x00000000 0x8 - .xt.lit._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x00000000 0x8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.lit._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 - .xt.lit._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x00000000 0x0 - .xt.lit._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x00000000 0x0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - 0x8 (size before relaxing) - -.xt.prop._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data - 0x00000000 0x24 - .xt.prop._ZNSt17_Function_handlerIFvvEPS0_E9_M_invokeERKSt9_Any_data - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation - 0x00000000 0x54 - .xt.prop._ZNSt14_Function_base13_Base_managerIPFvvEE10_M_managerERSt9_Any_dataRKS4_St18_Manager_operation - 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j - 0x00000000 0x24 - .xt.prop._ZNSt17_Function_handlerIFvPcPhjEPS2_E9_M_invokeERKSt9_Any_dataS0_S1_j - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation - 0x00000000 0x54 - .xt.prop._ZNSt14_Function_base13_Base_managerIPFvPcPhjEE10_M_managerERSt9_Any_dataRKS6_St18_Manager_operation - 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson20StaticJsonBufferBase5allocEj - 0x00000000 0x3c - .xt.prop._ZN11ArduinoJson20StaticJsonBufferBase5allocEj - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN5Print5writeEPKc - 0x00000000 0x30 - .xt.prop._ZN5Print5writeEPKc - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN5Print5writeEPKcj - 0x00000000 0x24 - .xt.prop._ZN5Print5writeEPKcj - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN14HardwareSerial5writeEj - 0x00000000 0x24 - .xt.prop._ZN14HardwareSerial5writeEj - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN14HardwareSerial5writeEi - 0x00000000 0x24 - .xt.prop._ZN14HardwareSerial5writeEi - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 - .xt.prop._ZNSt14_Function_baseD2Ev - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN12PubSubClientD2Ev - 0x00000000 0x24 - .xt.prop._ZN12PubSubClientD2Ev - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN12PubSubClientD0Ev - 0x00000000 0x24 - .xt.prop._ZN12PubSubClientD0Ev - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJson9Internals19JsonBufferAllocatednwEjPNS_10JsonBufferE - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9JsonArray7invalidEv - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJson9JsonArray7invalidEv - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonObject7invalidEv - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJson10JsonObject7invalidEv - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x00000000 0x3c - .xt.prop._ZN11ArduinoJson10JsonBuffer11createArrayEv - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x00000000 0x3c - .xt.prop._ZN11ArduinoJson10JsonBuffer12createObjectEv - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x00000000 0x54 - .xt.prop._ZNK11ArduinoJson11JsonVariant15variantAsStringEv - 0x00000000 0x54 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvvEEC2IPS0_vEET_ - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 - .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIRKPcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x24 - .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIPcEENS_10TypeTraits8EnableIfIXntsrNS3_7IsArrayIT_EE5valueEbE4typeERKS6_ - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 - .xt.prop._ZN11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x24 - .xt.prop._ZNK11ArduinoJson10JsonObject7findKeyIPKcEENS_9Internals17ListConstIteratorINS_8JsonPairEEET_ - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x00000000 0x24 - .xt.prop._ZNK11ArduinoJson10JsonObject11containsKeyIcEEbPKT_ - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ - 0x00000000 0xd8 - .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_17CharPointerTraitsIcE6ReaderEEEvRT_ - 0x00000000 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE3eatERS4_c - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x00000000 0xa8 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseStringEv - 0x00000000 0xa8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x00000000 0x78 - .xt.prop._ZN11ArduinoJson10JsonObject8set_implIPKcRKNS_11JsonVariantEEEbT_T0_ - 0x00000000 0x78 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKchEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKcS3_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ - 0x00000000 0xd8 - .xt.prop._ZN11ArduinoJson9Internals21skipSpacesAndCommentsINS0_15StdStringTraitsI6StringE6ReaderEEEvRT_ - 0x00000000 0xd8 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE3eatERS5_c - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x00000000 0x108 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseStringEv - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 - .xt.prop._ZN11ArduinoJson10JsonObject7findKeyIRK6StringEENS_9Internals12ListIteratorINS_8JsonPairEEET_ - 0x00000000 0x48 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x3c - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRK6StringS0_EENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x3c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIPKctEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x108 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x00000000 0xf0 - .xt.prop._ZNK11ArduinoJson11JsonVariant16variantAsIntegerIiEET_v - 0x00000000 0xf0 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x00000000 0x30 - .xt.prop._ZN11ArduinoJsonneIiEEbRKNS_22JsonVariantComparisonsINS_19JsonObjectSubscriptIPKcEEEET_ - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 - .xt.prop._ZNK11ArduinoJson10JsonObject8get_implIRKPciEENS_9Internals13JsonVariantAsIT0_E4typeET_ - 0x00000000 0x30 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x00000000 0x6c - .xt.prop._ZN11ArduinoJson9JsonArray8add_implIRKNS_11JsonVariantEEEbT_ - 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x00000000 0x6c - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE10parseArrayEv - 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0xb4 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0xb4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x00000000 0x6c - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_17CharPointerTraitsIcE6ReaderENS0_12StringWriterIcEEE11parseObjectEv - 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x00000000 0x24 - .xt.prop._ZN11ArduinoJson14JsonBufferBaseINS_20StaticJsonBufferBaseEE11parseObjectIcEERNS_10JsonObjectEPT_h - 0x00000000 0x24 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x00000000 0x6c - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE10parseArrayEv - 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0xb4 - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE15parseAnythingToEPNS_11JsonVariantE - 0x00000000 0xb4 .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x00000000 0x6c - .xt.prop._ZN11ArduinoJson9Internals10JsonParserINS0_15StdStringTraitsI6StringE6ReaderERNS_20StaticJsonBufferBaseEE11parseObjectEv - 0x00000000 0x6c .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x00000000 0xc - .xt.prop._ZZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x00000000 0xc - .xt.prop._ZZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson10JsonBufferE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson10JsonBufferE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTV12PubSubClient - 0x00000000 0xc - .xt.prop._ZTV12PubSubClient - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj256EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj1024EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj150EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x00000000 0xc - .xt.prop._ZTVN11ArduinoJson16StaticJsonBufferILj400EEE - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x00000000 0xc - .xt.prop._ZGVZN11ArduinoJson10JsonObject7invalidEvE8instance - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x00000000 0xc - .xt.prop._ZGVZN11ArduinoJson9JsonArray7invalidEvE8instance - 0x00000000 0xc .pioenvs\sonoff\src\sonoff.ino.cpp.o - -.xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 - .xt.prop._ZN6Stream9readBytesEPhj - 0x00000000 0x24 .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - -.xt.prop._ZTV7TwoWire - 0x00000000 0xc - .xt.prop._ZTV7TwoWire - 0x00000000 0xc .pioenvs\sonoff\lib8be\libWire.a(Wire.cpp.o) - -.xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x8 - .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x00000000 0x0 - .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x00000000 0x0 - .xt.lit._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x00000000 0x0 - .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x00000000 0x0 - .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x00000000 0x0 - .xt.lit._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x00000000 0x8 - .xt.lit._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.lit._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x00000000 0x0 - .xt.lit._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x00000000 0x8 - .xt.lit._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x00000000 0x30 - .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE10_M_destroyEv - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x24 - .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x00000000 0x24 - .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x00000000 0x24 - .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE14_M_get_deleterERKSt9type_info - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x00000000 0x24 - .xt.prop._ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EED0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x00000000 0x24 - .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EED0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x00000000 0x24 - .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_destroyEv - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x00000000 0x24 - .xt.prop._ZNSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE10_M_disposeEv - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvP10_esp_eventEEC2ERKS3_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x00000000 0x30 - .xt.prop._ZNSt4listISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE9push_backERKS2_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvRK32WiFiEventStationModeDisconnectedEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvRK25WiFiEventStationModeGotIPEEC2ERKS4_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvvEEC2ERKS1_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x00000000 0x3c - .xt.prop._ZNSt10_List_baseISt10shared_ptrI22WiFiEventHandlerOpaqueESaIS2_EE8_M_clearEv - 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x00000000 0x30 - .xt.prop._ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE0EEC2IP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS4_LS1_0EE8_DeleterISaIS4_EEES9_EET_T0_T1_ - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x00000000 0x24 - .xt.prop._ZSt4swapISt9_Any_dataEvRT_S2_ - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE - 0x00000000 0xc - .xt.prop._ZTVSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE0EE - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.prop._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE - 0x00000000 0xc - .xt.prop._ZTVSt19_Sp_counted_deleterIP22WiFiEventHandlerOpaqueNSt12__shared_ptrIS0_LN9__gnu_cxx12_Lock_policyE0EE8_DeleterISaIS0_EEES7_LS4_0EE - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(ESP8266WiFiGeneric.cpp.o) - -.xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x0 - .xt.lit._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x0 - .xt.lit._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN13ClientContext8_s_errorEPva - 0x00000000 0x0 - .xt.lit._ZN13ClientContext8_s_errorEPva - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN13ClientContext5flushEv - 0x00000000 0x0 - .xt.lit._ZN13ClientContext5flushEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN13ClientContext5unrefEv - 0x00000000 0x0 - .xt.lit._ZN13ClientContext5unrefEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN13ClientContext5writeEPKcj - 0x00000000 0x8 - .xt.lit._ZN13ClientContext5writeEPKcj - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.lit._ZN13ClientContext8_consumeEj - 0x00000000 0x0 - .xt.lit._ZN13ClientContext8_consumeEj - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x30 - .xt.prop._ZN13ClientContext7_s_sentEPvP7tcp_pcbt - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x6c - .xt.prop._ZN13ClientContext7_s_recvEPvP7tcp_pcbP4pbufa - 0x00000000 0x6c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext8_s_errorEPva - 0x00000000 0x30 - .xt.prop._ZN13ClientContext8_s_errorEPva - 0x00000000 0x30 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext5flushEv - 0x00000000 0x3c - .xt.prop._ZN13ClientContext5flushEv - 0x00000000 0x3c .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext5unrefEv - 0x00000000 0x54 - .xt.prop._ZN13ClientContext5unrefEv - 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext5writeEPKcj - 0x00000000 0x54 - .xt.prop._ZN13ClientContext5writeEPKcj - 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZN13ClientContext8_consumeEj - 0x00000000 0x60 - .xt.prop._ZN13ClientContext8_consumeEj - 0x00000000 0x60 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.prop._ZTV10WiFiClient - 0x00000000 0xc - .xt.prop._ZTV10WiFiClient - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiClient.cpp.o) - -.xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x0 - .xt.lit._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN10UdpContextC2Ev - 0x00000000 0x0 - .xt.lit._ZN10UdpContextC2Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN10UdpContext5unrefEv - 0x00000000 0x0 - .xt.lit._ZN10UdpContext5unrefEv - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN7WiFiUDP4readEPcj - 0x00000000 0x24 - .xt.prop._ZN7WiFiUDP4readEPcj - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - -.xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x48 - .xt.prop._ZN10UdpContext7_s_recvEPvP7udp_pcbP4pbufP7ip_addrt - 0x00000000 0x48 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - -.xt.prop._ZN10UdpContextC2Ev - 0x00000000 0x24 - .xt.prop._ZN10UdpContextC2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - -.xt.prop._ZN10UdpContext5unrefEv - 0x00000000 0x54 - .xt.prop._ZN10UdpContext5unrefEv - 0x00000000 0x54 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - -.xt.prop._ZTV7WiFiUDP - 0x00000000 0xc - .xt.prop._ZTV7WiFiUDP - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiUdp.cpp.o) - -.xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x00000000 0x0 - .xt.lit._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN10UdpContext4readEPcj - 0x00000000 0x0 - .xt.lit._ZN10UdpContext4readEPcj - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN10UdpContext6appendEPKcj - 0x00000000 0x0 - .xt.lit._ZN10UdpContext6appendEPKcj - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN10UdpContext4sendEP7ip_addrt - 0x00000000 0x0 - .xt.lit._ZN10UdpContext4sendEP7ip_addrt - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x00000000 0x0 - .xt.lit._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x00000000 0x0 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x00000000 0x60 - .xt.prop._ZNSt14_Function_base13_Base_managerISt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation - 0x00000000 0x60 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x00000000 0x30 - .xt.prop._ZNSt17_Function_handlerIFvvESt5_BindIFSt7_Mem_fnIM13MDNSResponderFvvEEPS3_EEE9_M_invokeERKSt9_Any_data - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZN10UdpContext4readEv - 0x00000000 0x3c - .xt.prop._ZN10UdpContext4readEv - 0x00000000 0x3c .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZN10UdpContext4readEPcj - 0x00000000 0x48 - .xt.prop._ZN10UdpContext4readEPcj - 0x00000000 0x48 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZN10UdpContext5flushEv - 0x00000000 0x30 - .xt.prop._ZN10UdpContext5flushEv - 0x00000000 0x30 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZN10UdpContext6appendEPKcj - 0x00000000 0xa8 - .xt.prop._ZN10UdpContext6appendEPKcj - 0x00000000 0xa8 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZN10UdpContext4sendEP7ip_addrt - 0x00000000 0x60 - .xt.prop._ZN10UdpContext4sendEP7ip_addrt - 0x00000000 0x60 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x00000000 0x24 - .xt.prop._ZNSt12__shared_ptrI22WiFiEventHandlerOpaqueLN9__gnu_cxx12_Lock_policyE0EEaSEOS3_ - 0x00000000 0x24 .pioenvs\sonoff\lib13e\libESP8266mDNS.a(ESP8266mDNS.cpp.o) - -.xt.prop._ZNK6String14StringIfHelperEv - 0x00000000 0x24 - .xt.prop._ZNK6String14StringIfHelperEv - 0x00000000 0x24 .pioenvs\sonoff\libdfa\libESP8266httpUpdate.a(ESP8266httpUpdate.cpp.o) - -.xt.prop._ZTV13TasmotaSerial - 0x00000000 0xc - .xt.prop._ZTV13TasmotaSerial - 0x00000000 0xc .pioenvs\sonoff\lib66a\libTasmotaSerial-2.1.0.a(TasmotaSerial.cpp.o) - -.xt.lit._ZN13TasmotaModbusD2Ev - 0x00000000 0x8 - .xt.lit._ZN13TasmotaModbusD2Ev - 0x00000000 0x8 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.lit._ZN13TasmotaModbusD0Ev - 0x00000000 0x0 - .xt.lit._ZN13TasmotaModbusD0Ev - 0x00000000 0x0 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN13TasmotaModbusD2Ev - 0x00000000 0x24 - .xt.prop._ZN13TasmotaModbusD2Ev - 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.prop._ZN13TasmotaModbusD0Ev - 0x00000000 0x24 - .xt.prop._ZN13TasmotaModbusD0Ev - 0x00000000 0x24 .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.prop._ZTV13TasmotaModbus - 0x00000000 0xc - .xt.prop._ZTV13TasmotaModbus - 0x00000000 0xc .pioenvs\sonoff\libb13\libTasmotaModbus-1.1.0.a(TasmotaModbus.cpp.o) - -.xt.prop._ZN15Adafruit_CCS8119meas_mode3getEv - 0x00000000 0x24 - .xt.prop._ZN15Adafruit_CCS8119meas_mode3getEv - 0x00000000 0x24 .pioenvs\sonoff\libdae\libAdafruit_CCS811-1.0.0.14.a(Adafruit_CCS811.cpp.o) - -.xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x0 - .xt.lit._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x0 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x00000000 0x30 - .xt.prop._ZNSt8functionIFvPcPhjEEC2ERKS3_ - 0x00000000 0x30 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - -.xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x24 - .xt.prop._ZNSt8functionIFvPcPhjEEaSIRS3_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEcl7declvalIS0_EEcl7declvalIS1_EEcl7declvalIjEEEEvEEE5valueES5_E4typeEOSB_ - 0x00000000 0x24 .pioenvs\sonoff\lib319\libPubSubClient-EspEasy-2.6.09.a(PubSubClient.cpp.o) - -.xt.lit._ZN14RequestHandlerD2Ev - 0x00000000 0x8 - .xt.lit._ZN14RequestHandlerD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.lit._ZN14RequestHandlerD0Ev - 0x00000000 0x0 - .xt.lit._ZN14RequestHandlerD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN22FunctionRequestHandler9canUploadE6String - 0x00000000 0x0 - .xt.lit._ZN22FunctionRequestHandler9canUploadE6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x0 - .xt.lit._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN22FunctionRequestHandlerD2Ev - 0x00000000 0x8 - .xt.lit._ZN22FunctionRequestHandlerD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.lit._ZN22FunctionRequestHandlerD0Ev - 0x00000000 0x0 - .xt.lit._ZN22FunctionRequestHandlerD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNKSt8functionIFvvEEclEv - 0x00000000 0x0 - .xt.lit._ZNKSt8functionIFvvEEclEv - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x0 - .xt.lit._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x0 - .xt.lit._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x00000000 0x0 - .xt.lit._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN14RequestHandlerD2Ev - 0x00000000 0x24 - .xt.prop._ZN14RequestHandlerD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x24 - .xt.prop._ZN14RequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN14RequestHandler9canUploadE6String - 0x00000000 0x24 - .xt.prop._ZN14RequestHandler9canUploadE6String - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x24 - .xt.prop._ZN14RequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x24 - .xt.prop._ZN14RequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN14RequestHandlerD0Ev - 0x00000000 0x24 - .xt.prop._ZN14RequestHandlerD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandler9canUploadE6String - 0x00000000 0x30 - .xt.prop._ZN22FunctionRequestHandler9canUploadE6String - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x3c - .xt.prop._ZN22FunctionRequestHandler9canHandleE10HTTPMethod6String - 0x00000000 0x3c .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandlerD2Ev - 0x00000000 0x24 - .xt.prop._ZN22FunctionRequestHandlerD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandlerD0Ev - 0x00000000 0x24 - .xt.prop._ZN22FunctionRequestHandlerD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZNKSt8functionIFvvEEclEv - 0x00000000 0x30 - .xt.prop._ZNKSt8functionIFvvEEclEv - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x30 - .xt.prop._ZN22FunctionRequestHandler6handleER16ESP8266WebServer10HTTPMethod6String - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x30 - .xt.prop._ZN22FunctionRequestHandler6uploadER16ESP8266WebServer6StringR10HTTPUpload - 0x00000000 0x30 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x00000000 0x24 - .xt.prop._ZNSt8functionIFvvEEaSIRS1_EENSt9enable_ifIXsrSt5__or_IISt7is_voidIvESt14is_convertibleIDTclcl18__callable_functorcl7declvalIRT_EEEEEvEEE5valueES3_E4typeEOS9_ - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZTV14RequestHandler - 0x00000000 0xc - .xt.prop._ZTV14RequestHandler - 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.prop._ZTV22FunctionRequestHandler - 0x00000000 0xc - .xt.prop._ZTV22FunctionRequestHandler - 0x00000000 0xc .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(ESP8266WebServer.cpp.o) - -.xt.lit._ZNK6String9substringEj - 0x00000000 0x0 - .xt.lit._ZNK6String9substringEj - 0x00000000 0x0 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x00000000 0x8 - .xt.lit._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - -.xt.prop._ZNK6String9substringEj - 0x00000000 0x24 - .xt.prop._ZNK6String9substringEj - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - -.xt.prop._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x00000000 0x24 - .xt.prop._ZN16ESP8266WebServer15RequestArgumentC2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib4b9\libESP8266WebServer.a(Parsing.cpp.o) - -.xt.lit._ZN14HardwareSerialD2Ev - 0x00000000 0x8 - .xt.lit._ZN14HardwareSerialD2Ev - 0x00000000 0x8 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - -.xt.lit._ZN14HardwareSerialD0Ev - 0x00000000 0x0 - .xt.lit._ZN14HardwareSerialD0Ev - 0x00000000 0x0 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN14HardwareSerialD2Ev - 0x00000000 0x24 - .xt.prop._ZN14HardwareSerialD2Ev - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - -.xt.prop._ZN14HardwareSerialD0Ev - 0x00000000 0x24 - .xt.prop._ZN14HardwareSerialD0Ev - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - -.xt.prop._ZTV14HardwareSerial - 0x00000000 0xc - .xt.prop._ZTV14HardwareSerial - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(HardwareSerial.cpp.o) - -.xt.prop._ZTV9IPAddress - 0x00000000 0xc - .xt.prop._ZTV9IPAddress - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(IPAddress.cpp.o) - -.xt.prop._ZTV6Stream - 0x00000000 0xc - .xt.prop._ZTV6Stream - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(Stream.cpp.o) - -.xt.prop._ZTV12StreamString - 0x00000000 0xc - .xt.prop._ZTV12StreamString - 0x00000000 0xc .pioenvs\sonoff\libFrameworkArduino.a(StreamString.cpp.o) - -.xt.prop._ZNSt8functionIFvvEE4swapERS1_ - 0x00000000 0x24 - .xt.prop._ZNSt8functionIFvvEE4swapERS1_ - 0x00000000 0x24 .pioenvs\sonoff\libFrameworkArduino.a(Schedule.cpp.o) - -.xt.lit._ZN10WiFiServerD2Ev - 0x00000000 0x8 - .xt.lit._ZN10WiFiServerD2Ev - 0x00000000 0x8 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - -.xt.lit._ZN10WiFiServerD0Ev - 0x00000000 0x0 - .xt.lit._ZN10WiFiServerD0Ev - 0x00000000 0x0 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN10WiFiServerD2Ev - 0x00000000 0x24 - .xt.prop._ZN10WiFiServerD2Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - -.xt.prop._ZN10WiFiServerD0Ev - 0x00000000 0x24 - .xt.prop._ZN10WiFiServerD0Ev - 0x00000000 0x24 .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - -.xt.prop._ZTV10WiFiServer - 0x00000000 0xc - .xt.prop._ZTV10WiFiServer - 0x00000000 0xc .pioenvs\sonoff\lib7d2\libESP8266WiFi.a(WiFiServer.cpp.o) - -.xt.lit._ZN15TransportTraitsD2Ev - 0x00000000 0x8 - .xt.lit._ZN15TransportTraitsD2Ev - 0x00000000 0x8 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.lit._ZN15TransportTraitsD0Ev - 0x00000000 0x0 - .xt.lit._ZN15TransportTraitsD0Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZN15TransportTraits6createEv - 0x00000000 0x0 - .xt.lit._ZN15TransportTraits6createEv - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x00000000 0x0 - .xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x8 (size before relaxing) - -.xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x00000000 0x0 - .xt.lit._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x00000000 0x0 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - 0x8 (size before relaxing) - -.xt.prop._ZN15TransportTraitsD2Ev - 0x00000000 0x24 - .xt.prop._ZN15TransportTraitsD2Ev - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x00000000 0x24 - .xt.prop._ZN15TransportTraits6verifyER10WiFiClientPKc - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZN15TransportTraitsD0Ev - 0x00000000 0x24 - .xt.prop._ZN15TransportTraitsD0Ev - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZN15TransportTraits6createEv - 0x00000000 0x24 - .xt.prop._ZN15TransportTraits6createEv - 0x00000000 0x24 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x00000000 0x30 - .xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EED2Ev - 0x00000000 0x30 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x00000000 0x30 - .xt.prop._ZNSt10unique_ptrI15TransportTraitsSt14default_deleteIS0_EE5resetEPS0_ - 0x00000000 0x30 .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.xt.prop._ZTV15TransportTraits - 0x00000000 0xc - .xt.prop._ZTV15TransportTraits - 0x00000000 0xc .pioenvs\sonoff\libcd9\libESP8266HTTPClient.a(ESP8266HTTPClient.cpp.o) - -.debug_frame 0x00000000 0x42bc - .debug_frame 0x00000000 0x244 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_frame 0x00000244 0x47c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_frame 0x000006c0 0x404 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_frame 0x00000ac4 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_frame 0x00000bfc 0x394 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_frame 0x00000f90 0x13c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_frame 0x000010cc 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_frame 0x000010fc 0x164 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_frame 0x00001260 0x264 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_frame 0x000014c4 0x2e4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_frame 0x000017a8 0x404 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_frame 0x00001bac 0x210 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_frame 0x00001dbc 0x1a4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_frame 0x00001f60 0x148 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_frame 0x000020a8 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_frame 0x000022d0 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_frame 0x00002338 0x1d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_frame 0x0000250c 0xcc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_frame 0x000025d8 0xfc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_frame 0x000026d4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_frame 0x00002794 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_frame 0x00002894 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_frame 0x00002938 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_frame 0x00002968 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_frame 0x00002998 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_frame 0x000029c8 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_frame 0x00002a28 0x6c0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_frame 0x000030e8 0xbc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_frame 0x000031a4 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_frame 0x00003264 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_frame 0x00003324 0xdc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_frame 0x00003400 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_frame 0x00003498 0x590 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_frame 0x00003a28 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_frame 0x00003aa0 0xb4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_frame 0x00003b54 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_frame 0x00003b98 0x144 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_frame 0x00003cdc 0x94 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_frame 0x00003d70 0xa4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_frame 0x00003e14 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_frame 0x00003e7c 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_frame 0x00003f14 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_frame 0x00004194 0xf8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_frame 0x0000428c 0x30 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_info 0x00000000 0x2e813 - .debug_info 0x00000000 0x1e25 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_info 0x00001e25 0x1e6a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_info 0x00003c8f 0x2b2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_info 0x000067be 0x15fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_info 0x00007dbc 0x2524 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_info 0x0000a2e0 0xe7f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_info 0x0000b15f 0xeb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_info 0x0000b24a 0x11a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_info 0x0000c3ea 0x1098 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_info 0x0000d482 0x13ea C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_info 0x0000e86c 0x1c46 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_info 0x000104b2 0x18b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_info 0x00011d65 0xc49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_info 0x000129ae 0xf7f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_info 0x0001392d 0x191e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_info 0x0001524b 0x9be C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_info 0x00015c09 0x1033 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_info 0x00016c3c 0x40d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_info 0x00017049 0xfbe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_info 0x00018007 0x6d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_info 0x000186da 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .debug_info 0x00018802 0xa23 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_info 0x00019225 0x167d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_info 0x0001a8a2 0xcf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_info 0x0001a971 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_info 0x0001aa15 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_info 0x0001aab9 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_info 0x0001ab5d 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_info 0x0001ac01 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_info 0x0001aca5 0xa4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_info 0x0001ad49 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_info 0x0001adee 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_info 0x0001ae93 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_info 0x0001af38 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_info 0x0001afdd 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_info 0x0001b082 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_info 0x0001b127 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_info 0x0001b1cc 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_info 0x0001b271 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_info 0x0001b316 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_info 0x0001b3bb 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_info 0x0001b460 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_info 0x0001b505 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_info 0x0001b5aa 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_info 0x0001b64f 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_info 0x0001b6f4 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_info 0x0001b799 0xa5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_info 0x0001b83e 0x174 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_info 0x0001b9b2 0x60c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_info 0x0001bfbe 0x61d c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_info 0x0001c5db 0x3fe C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_info 0x0001c9d9 0x420b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_info 0x00020be4 0x1494 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_info 0x00022078 0x13ec C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_info 0x00023464 0x1acb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_info 0x00024f2f 0x5e7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_info 0x00025516 0xb05 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_info 0x0002601b 0x2935 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_info 0x00028950 0x641 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_info 0x00028f91 0x48f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_info 0x00029420 0x1f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_info 0x00029616 0xe07 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_info 0x0002a41d 0x325 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_info 0x0002a742 0x3e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_info 0x0002ab2a 0x2ca C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_info 0x0002adf4 0x3dd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_info 0x0002b1d1 0x18b2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_info 0x0002ca83 0x17b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_info 0x0002e239 0x5da c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_abbrev 0x00000000 0x7d6c - .debug_abbrev 0x00000000 0x499 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_abbrev 0x00000499 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_abbrev 0x0000086f 0x4e5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_abbrev 0x00000d54 0x359 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_abbrev 0x000010ad 0x448 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_abbrev 0x000014f5 0x33e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_abbrev 0x00001833 0x7e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_abbrev 0x000018b1 0x355 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_abbrev 0x00001c06 0x2e0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_abbrev 0x00001ee6 0x37e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_abbrev 0x00002264 0x46e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_abbrev 0x000026d2 0x3d2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_abbrev 0x00002aa4 0x25a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_abbrev 0x00002cfe 0x272 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_abbrev 0x00002f70 0x3c1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_abbrev 0x00003331 0x255 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_abbrev 0x00003586 0x3c5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_abbrev 0x0000394b 0x15e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_abbrev 0x00003aa9 0x280 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_abbrev 0x00003d29 0x23a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_abbrev 0x00003f63 0x73 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .debug_abbrev 0x00003fd6 0x24f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_abbrev 0x00004225 0x3d6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_abbrev 0x000045fb 0x14 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_abbrev 0x0000460f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_abbrev 0x00004623 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_abbrev 0x00004637 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_abbrev 0x0000464b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_abbrev 0x0000465f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_abbrev 0x00004673 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_abbrev 0x00004687 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_abbrev 0x0000469b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_abbrev 0x000046af 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_abbrev 0x000046c3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_abbrev 0x000046d7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_abbrev 0x000046eb 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_abbrev 0x000046ff 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_abbrev 0x00004713 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_abbrev 0x00004727 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_abbrev 0x0000473b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_abbrev 0x0000474f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_abbrev 0x00004763 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_abbrev 0x00004777 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_abbrev 0x0000478b 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_abbrev 0x0000479f 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_abbrev 0x000047b3 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_abbrev 0x000047c7 0x14 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_abbrev 0x000047db 0xfd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_abbrev 0x000048d8 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_abbrev 0x00004a7b 0x1a3 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_abbrev 0x00004c1e 0x212 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_abbrev 0x00004e30 0x54e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_abbrev 0x0000537e 0x37a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_abbrev 0x000056f8 0x384 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_abbrev 0x00005a7c 0x3b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_abbrev 0x00005e2f 0x2c2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_abbrev 0x000060f1 0x2b6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_abbrev 0x000063a7 0x3f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_abbrev 0x000067a0 0x139 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_abbrev 0x000068d9 0x219 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_abbrev 0x00006af2 0xf2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_abbrev 0x00006be4 0x23f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_abbrev 0x00006e23 0x189 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_abbrev 0x00006fac 0x14b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_abbrev 0x000070f7 0x15c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_abbrev 0x00007253 0x1a6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_abbrev 0x000073f9 0x3e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_abbrev 0x000077e2 0x3f6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_abbrev 0x00007bd8 0x194 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_loc 0x00000000 0x21bf2 - .debug_loc 0x00000000 0x14ed C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_loc 0x000014ed 0x1624 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_loc 0x00002b11 0x1827 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_loc 0x00004338 0x9b8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_loc 0x00004cf0 0x10ad C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_loc 0x00005d9d 0x918 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_loc 0x000066b5 0x45d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_loc 0x00006b12 0xecd C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_loc 0x000079df 0x9af C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_loc 0x0000838e 0xdf5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_loc 0x00009183 0x132a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_loc 0x0000a4ad 0x306 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_loc 0x0000a7b3 0x788 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_loc 0x0000af3b 0xe2f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_loc 0x0000bd6a 0x24a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_loc 0x0000bfb4 0x6e2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_loc 0x0000c696 0x639 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_loc 0x0000cccf 0x92d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_loc 0x0000d5fc 0x67c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_loc 0x0000dc78 0x3cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_loc 0x0000e044 0x906 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_loc 0x0000e94a 0x50 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_loc 0x0000e99a 0xb8b c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_loc 0x0000f525 0xa45 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_loc 0x0000ff6a 0x1f8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_loc 0x00010162 0x2e24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_loc 0x00012f86 0x8d4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_loc 0x0001385a 0xa49 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_loc 0x000142a3 0x873 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_loc 0x00014b16 0x4fb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_loc 0x00015011 0x1ab6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_loc 0x00016ac7 0x2583 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_loc 0x0001904a 0x232 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_loc 0x0001927c 0x665 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_loc 0x000198e1 0x1e3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_loc 0x00019ac4 0x943 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_loc 0x0001a407 0x44e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_loc 0x0001a855 0x3fb9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_loc 0x0001e80e 0xbb C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_loc 0x0001e8c9 0x699 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_loc 0x0001ef62 0x138c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_loc 0x000202ee 0xc0f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_loc 0x00020efd 0xcf5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_aranges 0x00000000 0x1188 - .debug_aranges - 0x00000000 0x98 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_aranges - 0x00000098 0x168 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_aranges - 0x00000200 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_aranges - 0x000002e8 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_aranges - 0x00000340 0xe8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_aranges - 0x00000428 0x60 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_aranges - 0x00000488 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_aranges - 0x000004a8 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_aranges - 0x00000528 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_aranges - 0x000005d0 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_aranges - 0x000006a0 0x118 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_aranges - 0x000007b8 0x80 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_aranges - 0x00000838 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_aranges - 0x000008b0 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_aranges - 0x00000918 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_aranges - 0x00000990 0x28 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_aranges - 0x000009b8 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_aranges - 0x00000a30 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_aranges - 0x00000a70 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_aranges - 0x00000ab8 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_aranges - 0x00000b00 0x18 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .debug_aranges - 0x00000b18 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_aranges - 0x00000b70 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_aranges - 0x00000ba8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_aranges - 0x00000bc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_aranges - 0x00000be8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_aranges - 0x00000c08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_aranges - 0x00000c28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_aranges - 0x00000c48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_aranges - 0x00000c68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_aranges - 0x00000c88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_aranges - 0x00000ca8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_aranges - 0x00000cc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_aranges - 0x00000ce8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_aranges - 0x00000d08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_aranges - 0x00000d28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_aranges - 0x00000d48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_aranges - 0x00000d68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_aranges - 0x00000d88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_aranges - 0x00000da8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_aranges - 0x00000dc8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_aranges - 0x00000de8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_aranges - 0x00000e08 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_aranges - 0x00000e28 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_aranges - 0x00000e48 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_aranges - 0x00000e68 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_aranges - 0x00000e88 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_aranges - 0x00000ea8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_aranges - 0x00000ec8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_aranges - 0x00000ee8 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_aranges - 0x00000f08 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_aranges - 0x00000f48 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_aranges - 0x00000f68 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_aranges - 0x00000f88 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_aranges - 0x00000fa8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_aranges - 0x00000fc8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_aranges - 0x00000fe8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_aranges - 0x00001008 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_aranges - 0x00001028 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_aranges - 0x00001048 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_aranges - 0x00001068 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_aranges - 0x00001088 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_aranges - 0x000010a8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_aranges - 0x000010c8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_aranges - 0x000010e8 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_aranges - 0x00001108 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_aranges - 0x00001128 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_aranges - 0x00001148 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_aranges - 0x00001168 0x20 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_ranges 0x00000000 0x1a10 - .debug_ranges 0x00000000 0x128 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_ranges 0x00000128 0x170 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_ranges 0x00000298 0x138 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_ranges 0x000003d0 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_ranges 0x00000448 0x1b0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_ranges 0x000005f8 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_ranges 0x00000660 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_ranges 0x00000670 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_ranges 0x000006f8 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_ranges 0x000007c8 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_ranges 0x000008b8 0x1a0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_ranges 0x00000a58 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_ranges 0x00000b38 0x68 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_ranges 0x00000ba0 0x58 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_ranges 0x00000bf8 0xd0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_ranges 0x00000cc8 0x40 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_ranges 0x00000d08 0x88 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_ranges 0x00000d90 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_ranges 0x00000dc0 0xa8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_ranges 0x00000e68 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_ranges 0x00000ed8 0x48 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_ranges 0x00000f20 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_ranges 0x00000f90 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_ranges 0x00000ff0 0x98 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_ranges 0x00001088 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_ranges 0x000010b8 0x2a8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_ranges 0x00001360 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_ranges 0x00001390 0x70 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_ranges 0x00001400 0x38 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_ranges 0x00001438 0x30 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_ranges 0x00001468 0x100 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_ranges 0x00001568 0x220 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_ranges 0x00001788 0x20 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_ranges 0x000017a8 0x158 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_ranges 0x00001900 0xb0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_ranges 0x000019b0 0x60 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_line 0x00000000 0x1c5e4 - .debug_line 0x00000000 0xf97 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - .debug_line 0x00000f97 0x1039 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - .debug_line 0x00001fd0 0x123f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - .debug_line 0x0000320f 0x655 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - .debug_line 0x00003864 0x1351 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - .debug_line 0x00004bb5 0x763 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - .debug_line 0x00005318 0x12e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - .debug_line 0x00005446 0x4b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - .debug_line 0x000058fd 0x9df C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - .debug_line 0x000062dc 0xc1f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - .debug_line 0x00006efb 0x1112 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - .debug_line 0x0000800d 0xe50 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - .debug_line 0x00008e5d 0x612 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - .debug_line 0x0000946f 0x82c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - .debug_line 0x00009c9b 0xa0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - .debug_line 0x0000a6a6 0x39c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - .debug_line 0x0000aa42 0x7cf C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - .debug_line 0x0000b211 0x413 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - .debug_line 0x0000b624 0x753 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - .debug_line 0x0000bd77 0x4b3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - .debug_line 0x0000c22a 0xc0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - .debug_line 0x0000c2ea 0x42b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - .debug_line 0x0000c715 0x110c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - .debug_line 0x0000d821 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libhal.a(int_asm--set_intclear.o) - .debug_line 0x0000d8ab 0x127 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsi3.o) - .debug_line 0x0000d9d2 0xe5 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_modsi3.o) - .debug_line 0x0000dab7 0xf7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivsi3.o) - .debug_line 0x0000dbae 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umodsi3.o) - .debug_line 0x0000dc75 0x103 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umulsidi3.o) - .debug_line 0x0000dd78 0x85 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_ashrdi3.o) - .debug_line 0x0000ddfd 0x488 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubsf3.o) - .debug_line 0x0000e285 0x34a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_mulsf3.o) - .debug_line 0x0000e5cf 0x2e4 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divsf3.o) - .debug_line 0x0000e8b3 0x2c6 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpsf2.o) - .debug_line 0x0000eb79 0xe0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixsfsi.o) - .debug_line 0x0000ec59 0x110 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunssfsi.o) - .debug_line 0x0000ed69 0xec c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsisf.o) - .debug_line 0x0000ee55 0x15e c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatdisf.o) - .debug_line 0x0000efb3 0x686 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_addsubdf3.o) - .debug_line 0x0000f639 0x5f8 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldf3.o) - .debug_line 0x0000fc31 0x4a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdf3.o) - .debug_line 0x000100d1 0x35c c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_cmpdf2.o) - .debug_line 0x0001042d 0xf2 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixdfsi.o) - .debug_line 0x0001051f 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_fixunsdfsi.o) - .debug_line 0x00010641 0xce c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_floatsidf.o) - .debug_line 0x0001070f 0x1a0 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_truncdfsf2.o) - .debug_line 0x000108af 0x122 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_extendsfdf2.o) - .debug_line 0x000109d1 0x96 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - .debug_line 0x00010a67 0x1dd c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - .debug_line 0x00010c44 0x200 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - .debug_line 0x00010e44 0x49a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - .debug_line 0x000112de 0x1d1d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - .debug_line 0x00012ffb 0x729 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - .debug_line 0x00013724 0x595 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - .debug_line 0x00013cb9 0x8f9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - .debug_line 0x000145b2 0x373 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - .debug_line 0x00014925 0xc17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - .debug_line 0x0001553c 0x1709 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - .debug_line 0x00016c45 0x228 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - .debug_line 0x00016e6d 0x70a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - .debug_line 0x00017577 0x1a5 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - .debug_line 0x0001771c 0x566 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - .debug_line 0x00017c82 0x4cc C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - .debug_line 0x0001814e 0x28a1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - .debug_line 0x0001a9ef 0x19c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - .debug_line 0x0001ab8b 0x586 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - .debug_line 0x0001b111 0xd0b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - .debug_line 0x0001be1c 0x621 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - .debug_line 0x0001c43d 0x1a7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - -.debug_str 0x00000000 0x5851 - .debug_str 0x00000000 0x850 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcpserver.o) - 0xa12 (size before relaxing) - .debug_str 0x00000850 0xaf9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn.o) - 0xf6d (size before relaxing) - .debug_str 0x00001349 0x66f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_tcp.o) - 0x107a (size before relaxing) - .debug_str 0x000019b8 0x149 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(espconn_udp.o) - 0x9da (size before relaxing) - .debug_str 0x00001b01 0x4d3 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dhcp.o) - 0xa17 (size before relaxing) - .debug_str 0x00001fd4 0x1aa C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(dns.o) - 0x625 (size before relaxing) - .debug_str 0x0000217e 0x3d C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(init.o) - 0x1b4 (size before relaxing) - .debug_str 0x000021bb 0x10f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(netif.o) - 0x933 (size before relaxing) - .debug_str 0x000022ca 0x1b4 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(pbuf.o) - 0x7f9 (size before relaxing) - .debug_str 0x0000247e 0x4e9 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(sntp.o) - 0x890 (size before relaxing) - .debug_str 0x00002967 0x27a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp.o) - 0xa76 (size before relaxing) - .debug_str 0x00002be1 0x1b7 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_out.o) - 0x9bf (size before relaxing) - .debug_str 0x00002d98 0x105 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(timers.o) - 0x72f (size before relaxing) - .debug_str 0x00002e9d 0xf0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(udp.o) - 0x7ba (size before relaxing) - .debug_str 0x00002f8d 0x2e8 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(etharp.o) - 0x96e (size before relaxing) - .debug_str 0x00003275 0x78 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(icmp.o) - 0x505 (size before relaxing) - .debug_str 0x000032ed 0x17f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(igmp.o) - 0x6c8 (size before relaxing) - .debug_str 0x0000346c 0x6c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(inet_chksum.o) - 0x26d (size before relaxing) - .debug_str 0x000034d8 0xa6 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip.o) - 0x7ce (size before relaxing) - .debug_str 0x0000357e 0x8a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(ip_addr.o) - 0x378 (size before relaxing) - .debug_str 0x00003608 0x1c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(memp.o) - 0x234 (size before relaxing) - .debug_str 0x00003624 0x7c C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(raw.o) - 0x56a (size before relaxing) - .debug_str 0x000036a0 0x13e C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\liblwip_gcc.a(tcp_in.o) - 0x9cf (size before relaxing) - .debug_str 0x000037de 0x13a c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_muldi3.o) - 0x1be (size before relaxing) - .debug_str 0x00003918 0xc7 c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_divdi3.o) - 0x214 (size before relaxing) - .debug_str 0x000039df 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_umoddi3.o) - 0x215 (size before relaxing) - .debug_str 0x000039e9 0x34f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libstdc++.a(list.o) - 0x3ec (size before relaxing) - .debug_str 0x00003d38 0xd2a C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1.o) - 0xf9f (size before relaxing) - .debug_str 0x00004a62 0xd2 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_clnt.o) - 0x92e (size before relaxing) - .debug_str 0x00004b34 0x137 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(tls1_svr.o) - 0x975 (size before relaxing) - .debug_str 0x00004c6b 0x338 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(x509.o) - 0x751 (size before relaxing) - .debug_str 0x00004fa3 0xd1 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(crypto_misc.o) - 0x2a6 (size before relaxing) - .debug_str 0x00005074 0xa0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(aes.o) - 0x241 (size before relaxing) - .debug_str 0x00005114 0x254 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(bigint.o) - 0x505 (size before relaxing) - .debug_str 0x00005368 0x24 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(hmac.o) - 0x236 (size before relaxing) - .debug_str 0x0000538c 0x44 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(md5.o) - 0x1bc (size before relaxing) - .debug_str 0x000053d0 0x17 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rc4.o) - 0x145 (size before relaxing) - .debug_str 0x000053e7 0xe0 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(rsa.o) - 0x42d (size before relaxing) - .debug_str 0x000054c7 0x35 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha1.o) - 0x1e4 (size before relaxing) - .debug_str 0x000054fc 0x4b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha256.o) - 0x1cb (size before relaxing) - .debug_str 0x00005547 0x10 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha384.o) - 0x1bd (size before relaxing) - .debug_str 0x00005557 0x2b C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(sha512.o) - 0x1c6 (size before relaxing) - .debug_str 0x00005582 0x196 C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(asn1.o) - 0x637 (size before relaxing) - .debug_str 0x00005718 0x12f C:\Users\eeak\.platformio\packages\framework-arduinoespressif8266@1.20300.1\tools\sdk\lib\libaxtls.a(loader.o) - 0x87e (size before relaxing) - .debug_str 0x00005847 0xa c:/users/eeak/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/4.8.2\libgcc.a(_udivdi3.o) - 0x215 (size before relaxing) From b2f7427d172196e11814dd3b4669733fee07a596 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Thu, 1 Nov 2018 21:41:42 +0200 Subject: [PATCH 431/798] Fix regression for nrg and dsp interface delays --- sonoff/xdsp_interface.ino | 1 - sonoff/xnrg_interface.ino | 1 - 2 files changed, 2 deletions(-) diff --git a/sonoff/xdsp_interface.ino b/sonoff/xdsp_interface.ino index a2b19ebb8385..8d6d5a81497b 100644 --- a/sonoff/xdsp_interface.ino +++ b/sonoff/xdsp_interface.ino @@ -117,7 +117,6 @@ boolean XdspCall(byte Function) boolean result = false; for (byte x = 0; x < xdsp_present; x++) { - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xdsp_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xnrg_interface.ino b/sonoff/xnrg_interface.ino index 1706c4e26da1..015d5d284310 100644 --- a/sonoff/xnrg_interface.ino +++ b/sonoff/xnrg_interface.ino @@ -90,7 +90,6 @@ int XnrgCall(byte Function) int result = 0; for (byte x = 0; x < xnrg_present; x++) { - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } result = xnrg_func_ptr[x](Function); if (result) break; } From 4876f167920f842bf72f47d00d585e763af90337 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Fri, 2 Nov 2018 11:36:28 +0100 Subject: [PATCH 432/798] Create RF-Bridge-EFM8BB1-20181102.hex Optimized Code Recognition for Code "1527" and Intertechno --- .../fw_efm8bb1/RF-Bridge-EFM8BB1-20181102.hex | 452 ++++++++++++++++++ 1 file changed, 452 insertions(+) create mode 100644 tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181102.hex diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181102.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181102.hex new file mode 100644 index 000000000000..4e6a245df3e4 --- /dev/null +++ b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181102.hex @@ -0,0 +1,452 @@ +:020000040000FA +:1000000002135C7E1DE4FDEF30E70625E06EFF8005 +:1000100004EF25E0FF0DBD08EE2253984FEB4F4D46 +:10002000F598220212CC7597A522220216418E590C +:100030008F5A8C5B8D5C121807121A3EE55C24BF48 +:100040009000D8F0E55B34FF9000D7F09000D3E546 +:1000500059F0A3E55AF043910422220213EB121A3D +:10006000CF53D87853DAFE121A9AE4900080F02227 +:10007000D2DE22021694D202121972C290C296C225 +:1000800080E4FBFD7F1012001A12066274A4F0D205 +:10009000AFE4F53CF53DD296053DE53D7002053CEB +:1000A000B410F3E53CB427EEC296120026300209E4 +:1000B0001218C28E3F8F408006753F01754000E5E3 +:1000C000407004E53F640170409000BCE07007F5AB +:1000D0003CF53D020293053DE53D7002053CD3949D +:1000E00010E53C94274002D296D3E53D9430E53CA0 +:1000F00094755003020293E4F53CF53D9000BCF08A +:100100009000A3F0C296020293E4F53CF53D900006 +:10011000BCE014602A14700302026514700302022A +:100120002314700302023924046003020293E540A1 +:1001300064AA60030202939000BC04F0020293E5FB +:10014000409000A3F09000BC7402F0E540120B4018 +:10015000020DA00175A10185A501A9A601BFA701F6 +:10016000C8A801E4A901CBB001D4B1019AC002939F +:10017000FF0000021812061BE49000A2F090007429 +:10018000F07FA1807212005E9000BC7404F0753E96 +:1001900008E4F5427541090202939000BC7404F032 +:1001A000E4F5427541020202939000A27480F0E4EB +:1001B000900074F07FA612069274A6F002029312C9 +:1001C000066274A4F0020293753E089000BC7403AA +:1001D000F00202939000747401F07FB1120692EF66 +:1001E000F002029312061B9000A2E0F53B7480F02F +:1001F000E4900074F07FA912188B90007AEFF07DE4 +:10020000307C757F017E0012192102029312067460 +:1002100090007AEFF0E48005E49000A3F09000BC39 +:10022000F08070E4F542E540F541E541D39400905B +:1002300000BC402C7404F0805A74032542F582E41B +:100240003400F583E540F00542E542B541059000F4 +:10025000BC800DE542C3947040397541709000BC7C +:100260007402F0802EE540645570289000BCF0C206 +:10027000029000A3E02460601824FC600F24FE605C +:100280000B14600824F66004241070077FA0121A73 +:1002900025D2029000A3E0120B4002BCA102E6A40A +:1002A00002F8A50399A603B3A8055EA90595B006B3 +:1002B00004B10366C00387FF000000AA90007FE03E +:1002C00030E70F7DC87C0012064B7FA31217C202D5 +:1002D0000578121A9240030200AA7DE87C031206F8 +:1002E0004B7FA20205FC90007FE020E7030200AAFA +:1002F0007FA41217C20203AB9000BCE060030200AF +:10030000AA12176A6043240360030200AA153E1272 +:10031000005E900005E0FAA3E0FBFFAE0212176159 +:10032000900007E0F8A3E0888385834BF54C858334 +:100330004DF54E900005E0F54FA3E0F550E4F55182 +:10034000755218755306020534E53E601112177197 +:10035000500302054E12067D121ABD02054E12060A +:10036000747FA00205FC9000BCE060030200AA12AA +:1003700017617F017E00121921D296121ABDC29612 +:100380007FA0121A25800A7F02121A25E49000BC71 +:10039000F0D2021206890200AA90007FE020E70353 +:1003A0000200AA547FFD7FA61216E7E490007FF0BA +:1003B0000200AA9000BCE060030200AA12176A7053 +:1003C0000302053A240360030200AA900003E0FF41 +:1003D000248070057543FF80028F43153E12005E36 +:1003E000900003E06480600302046EA3E0FCA3E0DD +:1003F000FD900008E0FAA3E0FBFFAE02120991C0F5 +:1004000006C007900006E0FCA3E0FDAF03AE0212B9 +:100410000991C006C00790000AE0FF7E0090000826 +:10042000E0FCA3E0FD120991C006C00790000B128A +:10043000175AC007C00690000C12175AAA06AB073D +:1004400090000D12175A8E4F8F508A4D8B4ED04B05 +:10045000D04C90000EE0F551A3E0F55275530DD04D +:1004600003D002D005D004D007D006020534E543FE +:10047000F470030205C012175324E2F582E4341A23 +:10048000F583E493FF7E0012175324E5F582E434EC +:100490001AF583E493FA740193FDAC02120991C03A +:1004A00006C00712175324E3F582E4341AF583E4F7 +:1004B0009312175BC006C00712175324E7F582E4B6 +:1004C000341A121733C006C00712175324E8F582F6 +:1004D000E4341A121733C007C00612175324E9F583 +:1004E00082E4341A121733AA06AB0712175324EA10 +:1004F000F582E4341A12173312175324E4F582E418 +:10050000341AF583E493FD12175324EBF582E43497 +:100510001AF583E493F5528D518E4F8F508A4D8B8F +:100520004ED04BD04C755301D003D002D005D0042F +:10053000D007D00612156C0200AAE53E6018E5430C +:10054000F4600B121771400612067D121ABDE4907A +:100550000080F00200AA1206897FA00205FC90002C +:100560007FE030E71D7DC87C0012062E90007FE002 +:10057000547FFD7FAB1216E7E490007FF0D20202B9 +:1005800000AA121A9240030200AA7DE87C03120618 +:100590002E7FAA8067900003E025E0F5449000BC20 +:1005A000E060030200AA12176A6047240360030296 +:1005B00000AA12005EE5446007E541C394045008B8 +:1005C000E49000A3F00200AA74052544F9E4340085 +:1005D000754801F549894AC3E541954424FEF54B28 +:1005E000900004E0F54C7B017A0079051215DE02DB +:1005F00000AA90007AE0FF12188B7FA0121A25D271 +:10060000020200AA90007FE020E7030200AA7FB167 +:10061000121470E490007FF00200AA7D327C007F0B +:10062000017E00121921D296121ABDC296227F01B4 +:100630007E00121921D296121ABDC2969000A2E530 +:100640003BF090007AE0FF12188B227F017E0012AF +:100650001921D296121ABDC29690007AE0FF1218A4 +:100660008B22E49000A2F0900074F07FA412188B0B +:1006700090007A2290007AE0FF12188B22EFFD7C26 +:10068000007F017E001219212290007AE0FF1218EB +:100690008B2212188B90007A228C228D238A248B35 +:1006A00025AE07900080E014607F046003020921FA +:1006B00090007FE06003020921C3E5239414E52242 +:1006C0009405500EC3E5259414E5249405500302C7 +:1006D00009219000A2E0FFAD0685242C85252DABD5 +:1006E00023AA2212184B90007DEFF0648070030261 +:1006F0000921900001E524F0A3E525F09000837422 +:1007000008F0E4900075F090007CF0F508F509FE23 +:100710007F70FD7B017A007903120B66E490007B09 +:10072000F0D29090008004F02290007DE0FD75F002 +:100730000DA42454F582E4341B120D82FC74019341 +:10074000120E4C90007DE075F00DA4244CF582E46F +:10075000341BF583E493FFD39400400B90007CE0BE +:100760009F5004E004F02290007DE0F96053FD12F8 +:100770000E94120D82120EB59000C1120DF7245086 +:10078000F582E4341B120E021209919000C3120D7F +:10079000F72451F582E4341BF583E493FFE9120D4D +:1007A00088120EB59000C5120DF72452F582E4347C +:1007B0001B120E021209919000C7EEF0A3EFF08019 +:1007C0003E900078E0FEA3E0FF9000C1EEF0A3EFC2 +:1007D000F0900081E0FCA3E0FD9000C3ECF0A3EDFD +:1007E000F0A3ECF0A3EDF0A3120DF72454F582E48E +:1007F000341B120E02900078E0FCA3E0120E4C9025 +:100800000083E014F0900075E004F0AE22AF23E422 +:10081000FCFD9000C9120B34AE24AF25E4FCFD9022 +:1008200000CD120B34120E5C9000C1120922500E42 +:100830009000CD120E5F9000C3120922400CC3122B +:100840000EA05020120D9AB5071A900078E522F0FC +:10085000A3E523F0C290D3120EA2406A8522088538 +:1008600023098062120E5C9000C512093A500E9066 +:1008700000CD120E5F9000C712093A400CD3120E41 +:10088000A04033120D9A6F702D900081E522F0A3E5 +:10089000E523F0D290120DDAC083C082E0FF900011 +:1008A00083E0FE7401A806088002C333D8FC4FD051 +:1008B00082D083F08010E490007FF0C290A3F0908B +:1008C000007D7480F022900083E07012120DDA1225 +:1008D0000E33FF120003EFF09000837408F0120D46 +:1008E0009A6F703D121A8A5005E490007EF0120E45 +:1008F000306027121A9A7D207C037F017E00121837 +:10090000F890007BE090007EF090007DE090007F0A +:10091000F04480F090007D7480F0C290E4900080FC +:10092000F022FFE0FCA3E0FDC3EF9DFFEE9CFE1272 +:100930001A56C3EF9527EE952622FFE0FCA3E0FDB3 +:10094000C3EF9DFFEE9CFE121A56C3EF9527EE955E +:100950002622BB010CE58229F582E5833AF583E086 +:10096000225006E92582F8E622BBFE06E92582F838 +:10097000E222E58229F582E5833AF583E49322BBFE +:10098000010689828A83F0225002F722BBFE01F31E +:1009900022EF8DF0A4A8F0CF8CF0A428CE8DF0A487 +:1009A0002EFE22BC000BBE0029EF8DF084FFADF0BF +:1009B00022E4CCF875F008EF2FFFEE33FEEC33FCA9 +:1009C000EE9DEC984005FCEE9DFE0FD5F0E9E4CEDF +:1009D000FD22EDF8F5F0EE8420D21CFEADF075F0AE +:1009E00008EF2FFFED33FD4007985006D5F0F222B7 +:1009F000C398FD0FD5F0EA22C2D5EC30E709B2D595 +:100A0000E4C39DFDE49CFCEE30E715B2D5E4C39F42 +:100A1000FFE49EFE1209A3C3E49DFDE49CFC800359 +:100A20001209A330D507C3E49FFFE49EFE22BB0159 +:100A300010E58229F582E5833AF583E0F5F0A3E03D +:100A4000225009E92582F886F008E622BBFE0AE971 +:100A50002582F8E2F5F008E222E5832AF583E9939E +:100A6000F5F0A3E9932275F008758200EF2FFFEEF1 +:100A700033FECD33CDCC33CCC58233C5829BED9ACA +:100A8000EC99E58298400CF582EE9BFEED9AFDEC28 +:100A900099FC0FD5F0D6E4CEFBE4CDFAE4CCF9A86E +:100AA0008222B800C1B90059BA002DEC8BF084CF76 +:100AB000CECDFCE5F0CBF97818EF2FFFEE33FEED4D +:100AC00033FDEC33FCEB33FB10D703994004EB9977 +:100AD000FB0FD8E5E4F9FA227818EF2FFFEE33FE8A +:100AE000ED33FDEC33FCC933C910D7059BE99A40BF +:100AF00007EC9BFCE99AF90FD8E0E4C9FAE4CCFBD7 +:100B00002275F010EF2FFFEE33FEED33FDCC33CC2A +:100B1000C833C810D7079BEC9AE899400AED9BFDB3 +:100B2000EC9AFCE899F80FD5F0DAE4CDFBE4CCFAC6 +:100B3000E4C8F922ECF0A3EDF0A3EEF0A3EFF0226D +:100B4000D083D082F8E4937012740193700DA3A344 +:100B500093F8740193F5828883E473740293686058 +:100B6000EFA3A3A380DFEF4E6012EF60010EEDBB99 +:100B7000010B89828A83F0A3DFFCDEFA2289F05020 +:100B800007F709DFFCA9F022BBFEFCF309DFFCA993 +:100B9000F0228E228F23900080E014604A147003AC +:100BA000020C6F24026003020D4DC29090007FE0A2 +:100BB0006003020D4DAF23AE22121A174003020D3F +:100BC0004DE4F524E524120D51E4F0A3F00524E5ED +:100BD00024B40FF0E4900000F0F524120E709000A1 +:100BE000807401F0D29022900076E0FCA3E0FDAE8C +:100BF000047802CEC313CE13D8F92DFFEC3EFED3FA +:100C0000E5239FE5229E4009120E70E4900000F05B +:100C100022AF23AE2212177B501F900000E09400F9 +:100C20004017E4900073F09000837404F0E49000A7 +:100C30007BF09000807402F022C3E5239464E522E7 +:100C400094005003020D3E120EBF1210E05003023A +:100C50000D4D900000E0120D51120E73900000E057 +:100C600004F0E0D3940F5003020D4DE4020D48B29E +:100C700090120EBF12122A5059900083E0B4041053 +:100C8000E524C454F0120D73EFF0E4900083F022D9 +:100C9000900073E0FF120D78E0FEE524540FFDEEA6 +:100CA0004DF074032F120D7A120E33FF120003EF72 +:100CB000F0900073E004F09000837404F0900073EF +:100CC000E0D394705003020D4D121A9AE490000084 +:100CD0008076AF23AE2212177B5066121A8A500517 +:100CE000E490007EF0120E306052121A9A7DF47C6D +:100CF000017F017E001218F890007BE090007EF0EA +:100D0000900083E07019120D74C083C082E0FF90E0 +:100D10000000E0540FFEEF4ED082D083F0800E90A2 +:100D20000000E0C454F0440F120D73EFF090007314 +:100D3000E0FF120EDB90007FE04480F0C290E48080 +:100D400008121A9AE4900000F0900080F022FCE56E +:100D50002A25E02484F582E43400F583228E398F3D +:100D60003AE53075F00DA4244BF582E4341BF5838D +:100D7000E49322FF900073E02403F582E43400F54D +:100D80008322F583E493FFED7E0075F00DA4244DDE +:100D9000F582E4341BF583E4932290007DE075F046 +:100DA0000DA42453F582E4341BF583E493FF9000F3 +:100DB00075E0227C007D641209A37C007D0A120983 +:100DC00091D3EF94F4EE940122EF75F00DA4245624 +:100DD000F582E4341BF583E49322900075E024FF50 +:100DE000FFE434FFFE7C007D081209F874032FF540 +:100DF0008274003EF58322EEF0A3EFF0E975F00D6A +:100E0000A422F583E493FF7E0022E4F9C3ED9BF571 +:100E100082EC9AF583D3EF9582EE958322FFE5303D +:100E200075F00DA4244AF582E4341BF583E4932283 +:100E300090007EE0FF90007BE06F22E0FCA3E0FDED +:100E4000EC547FFAD3ED9400EA940022FD1209914C +:100E50007C007D641209A38E268F27229000C9A3EF +:100E6000A3E0FEA3E022FF7E00AC37AD380209917B +:100E7000900076E522F0A3E523F022852C34852D21 +:100E800035AB2BAA2AAD2922ED2BFDEC3AFCC3EFA2 +:100E90009DEE9C2275F00DA4244FF582E4341B22B4 +:100EA000E5239509E522950822540F75F002A4F573 +:100EB0008285F08322FA740193FDAC020209917BD2 +:100EC000007A007924AF23AE2222E0FEA3E0FFC324 +:100ED00022EC4480AF05F0A3EFF0228F25E4F52744 +:100EE000F526E5252401FFE433FEC3E5269FEE64E5 +:100EF00080F8748098503974032526120D7AE0C466 +:100F0000540FFF120D51120E3B4007EF120D5112FC +:100F10000ED174032526120D7AE0540FFF120D51E5 +:100F2000120E3B4007EF120D51120ED1052680B272 +:100F3000E4F526900000E0FFE526C39F4003020F82 +:100F4000F7E526120D51E030E703020FE9AF2690D6 +:100F50000000E0FEEFC39E4003020FE5EF25E02412 +:100F600086F582E43400F583E0FCA3E0FDEF120D8A +:100F700051ECF0A3EDF0E4FEE5252401FDE433FCA3 +:100F8000EEC39DEC6480F8748098505574032E1263 +:100F90000D7AE0F9C4540FFDEF2401FBE433FAEDC0 +:100FA000B50316E4B50212E9540FFDEFC454F04D39 +:100FB000FD74032E120D7AEDF0EF2401FDE433FCF5 +:100FC00074032E120D7AE0F9540FB50511E4B5043F +:100FD0000DE954F04FFD74032E120D7AEDF00E80E2 +:100FE000970F020F4F05278009E526120D51E05497 +:100FF0007FF00526020F33900000E0C39527F02212 +:101000008F30E4F536120DC96D6003AF3622E5303E +:101010007028120D61120E1DFED39F400AEEFD7C5A +:1010200000AF03AE02800A120D61FD7C00AE34AF4A +:10103000351209A38E378F38800CE530120D8AF5F2 +:1010400037740193F538120D61120E1DD39F402E97 +:101050007C007D64AF03AE02120DB740070C7E0129 +:101060007FF48000120D5D120E66AC06AD07AF0373 +:10107000AE02AB3AAA391219FBEF602D8028AE34CC +:10108000AF35120DB340070C7E017FF48000120DC6 +:101090005D120E66AC06AD07AB3AAA39AF35AE3479 +:1010A000121A09EF6003753601E5366401702EE50A +:1010B00030120E94120E02120E69900078EEF0A318 +:1010C000EFF0E53075F00DA42451F582E4341B12E5 +:1010D0000E02120991900081EEF0A3EFF0AF3622DC +:1010E0008E258F268B278A288929C20012122A5022 +:1010F00005D200021184E4F52A900000E0FFE52A01 +:10110000C39F4003021184120D4FE0FCA3E0FDAE2B +:10111000047803CEC313CE13D8F9FBAA06EDAE04B0 +:101120007802CEC313CE13D8F92BFDEE3A120D4E32 +:10113000E0C4F854F0C868FEA3E0C4540F482DFF83 +:10114000EC3EFEC3E5269FFDE5259E120D4EE0FA1E +:10115000A3E0FBD39DEA9C4026E5262FFFE5253E34 +:10116000FEC3EB9FEA9E5017E52945284527600BF3 +:10117000AB27AA28A929E52A12097FD200800505F4 +:101180002A0210F9A20022AFFBAEFC7C007D0A12FD +:1011900009919000BFEEF0A3EFF09000BF120ECACD +:1011A0009464EE9400500302122930933B8E0A8F10 +:1011B0000BC3EF950DF511EE950CF510900074E052 +:1011C00014601F04706390007DE0FF64806007126C +:1011D0000DC964016053AB11AA10AD0FAC0EE4FF52 +:1011E000803DAF11AE10803E9000BFE0FEA3E08EC8 +:1011F0000CF50DC3950BF50FEE950AF50E900074E6 +:10120000E014601E04702290007DE0FF64806005A1 +:10121000120DC96014AB0FAA0EAD11AC107F010204 +:101220000699AF0FAE0E120B92228E2B8F2C8B2DA8 +:101230008A2E892FC201E4F530900000E0FFE530EE +:10124000C39F40030212C9E52CAE2B7803CEC31313 +:10125000CE13D8F9FDAC06E52CAE2B7802CEC31325 +:10126000CE13D8F92DF532EE3CF531E530120D51A3 +:10127000120ECA9532EE953150028004AE31AF3273 +:101280008E318F32E530120D51120ECA9532FDEEBD +:101290009531FCC3ED952CEC952B5028E5322FFFB2 +:1012A000E5313EFEC3E52C9FE52B9E5017E52F450B +:1012B0002E452D600BAB2DAA2EA92FE53012097FEC +:1012C000D20180050530021239A20122C0E0C0F02F +:1012D000C083C082C0D075D000C000C001C002C0B1 +:1012E00003C004C005C006C007E5985403F55DF4CB +:1012F0005298E55D30E017121AD89000BB1219B56C +:10130000EFF09000BBE004F0E0B41402E4F0E55D1F +:1013100030E12E9000BEE0D39400401A9000BAE075 +:10132000245EF8E6FF121AD59000BAE004F09000AF +:10133000BEE014F08002D2039000BAE0B42002E4D0 +:10134000F0D007D006D005D004D003D002D001D011 +:1013500000D0D0D082D083D0F0D0E03212005A78C2 +:101360007FE4F6D8FD75817D0213A6020076E49332 +:10137000A3F8E493A34003F68001F208DFF4802988 +:10138000E493A3F85407240CC8C333C4540F442077 +:10139000C8834004F456800146F6DFE4800B010266 +:1013A0000408102040809014F2E47E019360BCA3F6 +:1013B000FF543F30E509541FFEE493A360010ECFB4 +:1013C00054C025E060A840B8E493A3FAE493A3F8DE +:1013D000E493A3C8C582C8CAC583CAF0A3C8C5829E +:1013E000C8CAC583CADFE9DEE780BEC0E0C0F0C07E +:1013F00083C082C0D075D000C000C001C002C0034D +:10140000C004C005C006C007E5D85487F521F452D2 +:10141000D8E5F730E508E5F730E603121ADF53F7B1 +:10142000DFE52130E708E5D930E003121ADEE521D7 +:1014300030E008E5DA30E003121187E52130E108F9 +:10144000E5DB30E003121AE0E52130E208E5DC30AC +:10145000E003121AE1D007D006D005D004D003D0A3 +:1014600002D001D000D0D0D082D083D0F0D0E032F2 +:10147000AE07E4F545121999900000E004FF121937 +:10148000C91214EB900000E0FFE545C39F50121213 +:1014900019A91219C51219A9F5831219A3054580B6 +:1014A000E3900076E0FF1219C99000761219A3129A +:1014B00014EBE4F545900073E02401FFE433FEC330 +:1014C000E5459FEE6480F8748098501774032545B5 +:1014D0001219C00545E545541F70DA121AD2121AC6 +:1014E000CB80D27F551219C9021AD2121AD2121AFF +:1014F000CB224200D500004200D100004200D700BC +:10150000004200D3000041007F0041008000410004 +:10151000A2804100740041007D8041007A004200B9 +:101520000100004200810000420078000041008379 +:10153000004100750041007C004100730041007EC5 +:101540000041007B00410000004100BB004100BDA4 +:10155000004100B9004100BA004100BE004100B89E +:1015600000C1034100BC004100A300008A498B4A2E +:1015700085535575568012194AE551D39400401988 +:10158000E4F554E554C39551500FAD50AC4FAF4EF8 +:10159000AE4D12194A055480EAE4F554E554C3955A +:1015A00052503274032555120D7AE05556600AAD3B +:1015B00050AC4FAF4EAE4D8008AD4CAC4BAF4AAEC9 +:1015C0004912194AE556C313F55670050555755667 +:1015D00080055480C7C2909000807403F0228B4530 +:1015E0008A468947E4F54DE54DC3954B5043AB45DD +:1015F000AA46A947C003C002C001AB48AA49A94AEC +:10160000854D82758300120952FDC4120EA9D001C6 +:10161000D002D003120A2EFFAEF0AB45AA46A9476E +:10162000ED120EA9120A2EFDACF012194A054D80DA +:10163000B6AF4C154CEF70ACC2909000807403F0C4 +:1016400022C0E0C083C082C0D075D000C004C005F5 +:10165000C006C00753C87F9000D5E0FEA3E0FF4E50 +:10166000700353C8FB9000D112184050099000D568 +:10167000E4F0A3F0800DC39000D6E09DF09000D57B +:10168000E09CF0D007D006D005D004D0D0D082D0D6 +:1016900083D0E032C0E0C083C082C0D075D000C02B +:1016A00004C005C006C00753917F9000D7E0FEA399 +:1016B000E0FF4E70035391FB9000D3121840500985 +:1016C0009000D7E4F0A3F0800DC39000D8E09DF027 +:1016D0009000D7E09CF0D007D006D005D004D0D041 +:1016E000D082D083D0E032AE05AD07E4FCFB7FAA08 +:1016F0001219C9AF051219C9EE75F00DA424BBF576 +:1017000082E4341BF583E493FFECC39F5007740815 +:101710002CFC0B80F4EB04FF12199BE4FCECC39B44 +:10172000500974032C1219C00C80F27F551219C98C +:10173000021AD2F583E493FF7E00E54375F00DA411 +:1017400024E5F582E4341AF583E493FC740193FDF7 +:10175000020991E54375F00DA422E0FF7E00020925 +:1017600091900003E0FCA3E0FD22900080E024FDC6 +:1017700022901AEDE493FFD3940022AB07AA0690BF +:101780000076E0FEA3E0FF120DB340050C7DF4806F +:1017900004AC06AD07AE04AF05C3900077E09FFD33 +:1017A000900076E09EFCC3ED9BEC9A5013A3E02FD3 +:1017B000FF900076E03EFEC3EB9FEA9E5002800160 +:1017C000C322AE07E4FDF545121999900001E0FF30 +:1017D0001219C99000011219A3900078E0FF1219A4 +:1017E000C99000781219A3900081E0FF1219C990E6 +:1017F00000811219A374032D1219C00DBD03F67FC9 +:10180000551219C9021AD2AB07AA06E4F9F87F40AB +:101810007E427D0FFC120AA2A804A905AA06AB0706 +:101820007F207ED77D757C01120AA2C3E49FFFE46E +:101830009EFE22AB07AA06E4F9F87FE87E03FD22AC +:10184000E0FCA3E0FDC3EF9DEE9C228F288D298A4A +:101850002A8B2B752E80E5282480701EE4F52F122C +:101860000E7BAF2F121000EF6005852F2E8019051B +:101870002FE52FC3940840E7800E120E7BAF28128D +:101880001000EF600385282EAF2E228F4590007A3E +:10189000E0F5467F0B121ADB43DA011200707D0A75 +:1018A0007C007F017E00121921121ABDE490008095 +:1018B000F090007FF09000A3E545F090007AF0AF43 +:1018C00046229000BBE0FF9000B9E0B507057E011D +:1018D0007F00229000B91219B5E0FD7C009000B99C +:1018E000E004F0E0B41402E4F09000B8E0FEEE4250 +:1018F00004E4F0AE04AF05228E288F298C2A8D2BAC +:10190000121833121814121A329000D5E52AF0A3D7 +:10191000E52BF09000D1E528F0A3E529F043C804B9 +:10192000228E478F488C498D4A1218331218141290 +:101930001A3E9000D7E549F0A3E54AF09000D3E5C0 +:1019400047F0A3E548F0439104228C578D58D2907C +:10195000D280AD07AC067F0A7E0012002E121ABD9F +:10196000C290C280AD58AC577F0A7E0012002E0292 +:101970001ABD12002A121AA1121AA8121A62121AF9 +:10198000C31219E5121A80121A6C121A76121A4A28 +:10199000121AAF121AC7021AB67FAA1219C9AF06D5 +:1019A0000219C9A3E0FF0219C9E54525E02484F521 +:1019B00082E4340022E024A4F582E43400F583229A +:1019C000F582E43400F583E0FFC2039000BDE0B48B +:1019D0002002E4F09000BDE0245EF8A607E004F0E9 +:1019E000A3E004F022AF885388AF758CA0758DCB2F +:1019F000EF5440FEEF54104E428822120E0A400669 +:101A0000120E88500109AF0122120E0A4006120E72 +:101A100088500109AF0122C3EF9414EE94054003EE +:101A2000D38001C322AE071219997F551219C9023A +:101A30001AD2AD07AC06ECF5CBAF058FCA22AD07C5 +:101A4000AC06ECF593AF058F9222C2DE75D9057511 +:101A5000F9FF75960122EE30E707C3E49FFFE49E8D +:101A6000FE2275E34075E10175E20122E59154041F +:101A70005391FB429122758E5475892243885022DE +:101A8000E5C8540453C8FB42C822E5C8C320E2019C +:101A9000D322E591C320E201D32253C8FB53C87F70 +:101AA0002275A41175D4CF2275A54175D57722531F +:101AB000F77F75DA302275E69075A8B022E591209F +:101AC000E2FB22E4F5A922439810223003FD22C252 +:101AD000DE22D299228F9922AF99228F8C22222244 +:101AE0002222011F00015E01030301183C00000DCA +:101AF0000400017201020201283C080008170001DD +:101B00008601030301183C00001F0A00012C010399 +:101B10000301183C0000003B0701F40302010240EE +:101B20003C0000071200019001030301183C000073 +:101B300017010001C201020201183C00012401004A +:101B400000D2010202010C3C0001011F00015E01F4 +:101B5000030301183C00000D0400017201020201A0 +:101B6000283C0800081700018601030301183C0007 +:101B7000001F0A00012C01030301183C0000003B78 +:101B80000701F403020102403C000007120001902B +:101B900001030301183C000017010001C201020209 +:101BA00001183C000124010000D2010202010C3C9A +:101BB0000001011F00015E01030301183C00000D3C +:101BC0000400017201020201283C0800081700010C +:101BD0008601030301183C00001F0A00012C0103C9 +:101BE0000301183C0000003B0701F403020102401E +:101BF0003C0000071200019001030301183C0000A3 +:101C000017010001C201020201183C000124010079 +:0A1C100000D2010202010C3C0001A9 +:00000001FF From 6b3364326822577b0215632dac90bbf4e5dd05af Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Fri, 2 Nov 2018 11:38:30 +0100 Subject: [PATCH 433/798] Delete RF-Bridge-EFM8BB1-20181031.hex Replaced through RF-Bridge-EFM8BB1-20181102.hex --- .../fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex | 462 ------------------ 1 file changed, 462 deletions(-) delete mode 100644 tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex diff --git a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex b/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex deleted file mode 100644 index d302400aba2a..000000000000 --- a/tools/fw_efm8bb1/RF-Bridge-EFM8BB1-20181031.hex +++ /dev/null @@ -1,462 +0,0 @@ -:020000040000FA -:100000000214007E1DE4FDEF30E70625E06EFF8060 -:1000100004EF25E0FF0DBD08EE2253984FEB4F4D46 -:10002000F598220213707597A522220216DF8E5BC7 -:100030008F5C8C5D8D5E12185D121ACAE55E24BF5E -:100040009000D6F0E55D34FF9000D5F09000D1E54A -:100050005BF0A3E55CF0439104222202148F121B93 -:100060006653D87853DAFE121B31E4900080F022F8 -:10007000D2DE22021732D202121A32C290C296C2C5 -:1000800080E4FBFD7F1012001A12067174A4F0D2F6 -:10009000AFE4F53EF53FD296053FE53F7002053EE1 -:1000A000B410F3E53EB427EEC296120026300209E2 -:1000B0001219598E418F428006754101754200E543 -:1000C000427004E541640170409000D8E07007F58B -:1000D0003EF53F020293053FE53F7002053ED39493 -:1000E00010E53E94274002D296D3E53F9430E53E9A -:1000F00094755003020293E4F53EF53F9000D8F06A -:100100009000D7F0C296020293E4F53EF53F9000CE -:10011000D8E014602A14700302026514700302020E -:100120002314700302023924046003020293E5429F -:1001300064AA60030202939000D804F0020293E5DF -:10014000429000D7F0A37402F0E542120B52020B6A -:10015000A00173A10183A501A7A601BDA701C6A89F -:1001600001E2A901C9B001D2B10198C00293FF0018 -:1001700000021A12062AE49000A2F0900074F07FA8 -:10018000A1807212005E9000D87404F0754008E4FB -:10019000F5447543090202939000D87404F0E4F525 -:1001A000447543020202939000A27480F0E4900030 -:1001B00074F07FA61206A174A6F0020293120671D3 -:1001C00074A4F00202937540089000D87403F00202 -:1001D00002939000747401F07FB11206A1EFF00257 -:1001E000029312062A9000A2E0F53D7480F0E4909C -:1001F0000074F07FA912192290007AEFF07D307C14 -:10020000757F017E001219B80202931206839000D6 -:100210007AEFF0E49000D8F08079E49000D7F0A372 -:10022000F08070E4F544E542F543E543D394009053 -:1002300000D8402C7404F0805A74032544F582E4FD -:100240003400F583E542F00544E544B543059000EC -:10025000D8800DE544C3947040397543709000D840 -:100260007402F0802EE542645570289000D8F0C2E8 -:10027000029000D7E02460601824FC600F24FE6028 -:100280000B14600824F66004241070077FA0121A73 -:10029000EED2029000D7E0120B5202BCA102E6A4FB -:1002A00002F8A5039CA603B6A80563A905A0B0069D -:1002B00013B10369C0038AFF000000AA90007FE029 -:1002C00030E70F7DC87C0012065A7FA3121818026F -:1002D000057D121B2940030200AA7DE87C0312065B -:1002E0005A7FA202059890007FE020E7030200AA4F -:1002F0007FA41218180203AE9000D8E06003020039 -:10030000AA900080E024FC6043240460030200AA59 -:10031000154012005E900005E0FAA3E0FBFFAE027C -:100320001218CF900007E0F8A3E0888385834DF58D -:100330004E85834FF550900005E0F551A3E0F5524E -:10034000E4F55375541875550602053AE5406011F9 -:100350001218D8500302055412068C121B540205C1 -:10036000541206837FA00205989000D8E060030233 -:1003700000AA1218CF7F017E001219B8D296121B64 -:1003800054C2967FA0121AEE800A7F02121AEEE47F -:100390009000D8F0D2021206980200AA90007FE0E6 -:1003A00020E7030200AA547FFD7FA6121785E49080 -:1003B000007FF00200AA9000D8E060030200AA903B -:1003C0000080E024FC700302054024046003020066 -:1003D000AA900003E0FF248070057545FF80028F1E -:1003E00045154012005E900003E064806003020443 -:1003F00074A3E0FCA3E0FD900008E0FAA3E0FBFF9B -:10040000AE021209A3C006C007900006E0FCA3E0FC -:10041000FDAF03AE021209A3C006C00790000AE0B8 -:10042000FF7E00900008E0FCA3E0FD1209A3C006D7 -:10043000C00790000B1218C8C007C00690000C122D -:1004400018C8AA06AB0790000D1218C88E518F521B -:100450008A4F8B50D04DD04E90000EE0F553A3E064 -:10046000F55475550DD003D002D005D004D007D077 -:100470000602053AE545F470030205D21218C124BC -:1004800079F582E4341BF583E493FF7E001218C1F2 -:10049000247CF582E4341BF583E493FA740193FD24 -:1004A000AC021209A3C006C0071218C1247AF58253 -:1004B000E4341BF583E4931218C9C006C007121870 -:1004C000C1247EF582E4341B1218A1C006C00712B5 -:1004D00018C1247FF582E4341B1218A1C007C0069E -:1004E0001218C12480F582E4341B1218A1AA06ABAD -:1004F000071218C12481F582E4341B1218A11218C6 -:10050000C1247BF582E4341BF583E493FD1218C10A -:100510002482F582E4341BF583E493F5548D538EE5 -:10052000518F528A4F8B50D04DD04E755501D0030C -:10053000D002D005D004D007D0061216100200AAAF -:10054000E5406018E545F4600B1218D84006120625 -:100550008C121B54E4900080F00200AA1206987FCF -:10056000A0803590007FE030E71D7DC87C0012063A -:100570003D90007FE0547FFD7FAB121785E4900033 -:100580007FF0D2020200AA121B2940030200AA7DBA -:10059000E87C0312063D7FAA121AEED2020200AADC -:1005A000900003E025E0F5469000D8E060030200EB -:1005B000AA900080E0700512005E800B900080E041 -:1005C000640460030200AAE5466007E543C394049F -:1005D0005008E49000D7F00200AA74052546F9E41B -:1005E0003400754A01F54B894CC3E543954624FE1A -:1005F000F54D900004E0F54E7B017A007905121666 -:10060000827FA0121AEE90007AE0FF121922D20225 -:100610000200AA90007FE020E7030200AA7FB11247 -:100620001514E490007FF00200AA7D327C007F0167 -:100630007E001219B8D296121B54C296227F017EF8 -:10064000001219B8D296121B54C2969000A2E53D32 -:10065000F090007AE0FF121922227F017E00121929 -:10066000B8D296121B54C29690007AE0FF1219225B -:1006700022E49000A2F0900074F07FA4121922905E -:10068000007A2290007AE0FF12192222EFFD7C000E -:100690007F017E001219B82290007AE0FF12192221 -:1006A0002212192290007A228C228D238A248B25F3 -:1006B000AE07900080E014607F046003020933906D -:1006C000007FE06003020933C3E5239414E522941C -:1006D00005500EC3E5259414E52494055003020942 -:1006E000339000A2E0FFAD0685242C85252DAB2399 -:1006F000AA221218E290007DEFF0648070030209D4 -:1007000033900001E524F0A3E525F0900083740800 -:10071000F0E4900075F090007CF0F508F509FE7F9C -:1007200070FD7B017A007903120B78E490007BF076 -:10073000D29090008004F02290007DE0FD75F00DD5 -:10074000A424EBF582E4341B120D89FC740193128E -:100750000E7990007DE075F00DA424E3F582E43479 -:100760001BF583E493FFD39400400B90007CE09F43 -:100770005004E004F02290007DE0F96053FD120E79 -:10078000B8120D89120EED9000BF120E3724E7F556 -:1007900082E4341B120E421209A39000C1120E37DC -:1007A00024E8F582E4341BF583E493FFE9120D8F0E -:1007B000120EED9000C3120E3724E9F582E4341BCB -:1007C000120E421209A39000C5EEF0A3EFF0803E96 -:1007D000900078E0FEA3E0FF9000BFEEF0A3EFF002 -:1007E000900081E0FCA3E0FD9000C1ECF0A3EDF0EF -:1007F000A3ECF0A3EDF0A3120E3724EBF582E43462 -:100800001B120E42900078E0FCA3E0120E799000DB -:1008100083E014F0900075E004F0AE22AF23E4FC16 -:10082000FD9000C7120B46AE24AF25E4FCFD9000FE -:10083000CB120B46120E899000BF120934500E9055 -:1008400000CB120E8C9000C1120934400CC3120E62 -:10085000C45020120DD0B5071A900078E522F0A3FD -:10086000E523F0C290D3120EC6406A852208852384 -:10087000098062120E899000C312094C500E90003C -:10088000CB120E8C9000C512094C400CD3120EC432 -:100890004033120DD06F702D900081E522F0A3E55A -:1008A00023F0D290120E08C083C082E0FF90008334 -:1008B000E0FE7401A806088002C333D8FC4FD08242 -:1008C000D083F08010E490007FF0C290A3F09000FD -:1008D0007D7480F022900083E07015120E08120ED5 -:1008E0004DFF12000390007BEFF09000837408F03E -:1008F000120DD06F703D121B215005E490007EF068 -:10090000120E4A6027121B317D207C037F017E007E -:1009100012198F90007BE090007EF090007DE090B7 -:10092000007FF04480F090007D7480F0C290E490ED -:100930000080F022FFE0FCA3E0FDC3EF9DFFEE9CF2 -:10094000FE121AE2C3EF9527EE952622FFE0FCA3E4 -:10095000E0FDC3EF9DFFEE9CFE121AE2C3EF952768 -:10096000EE952622BB010CE58229F582E5833AF556 -:1009700083E0225006E92582F8E622BBFE06E9253F -:1009800082F8E222E58229F582E5833AF583E49351 -:1009900022BB010689828A83F0225002F722BBFE25 -:1009A00001F322EF8DF0A4A8F0CF8CF0A428CE8D17 -:1009B000F0A42EFE22BC000BBE0029EF8DF084FFB8 -:1009C000ADF022E4CCF875F008EF2FFFEE33FEEC2B -:1009D00033FCEE9DEC984005FCEE9DFE0FD5F0E952 -:1009E000E4CEFD22EDF8F5F0EE8420D21CFEADF051 -:1009F00075F008EF2FFFED33FD4007985006D5F056 -:100A0000F222C398FD0FD5F0EA22C2D5EC30E709F7 -:100A1000B2D5E4C39DFDE49CFCEE30E715B2D5E40D -:100A2000C39FFFE49EFE1209B5C3E49DFDE49CFC58 -:100A300080031209B530D507C3E49FFFE49EFE2270 -:100A4000BB0110E58229F582E5833AF583E0F5F0F4 -:100A5000A3E0225009E92582F886F008E622BBFED1 -:100A60000AE92582F8E2F5F008E222E5832AF58317 -:100A7000E993F5F0A3E9932275F008758200EF2F52 -:100A8000FFEE33FECD33CDCC33CCC58233C5829B54 -:100A9000ED9AEC99E58298400CF582EE9BFEED9A7A -:100AA000FDEC99FC0FD5F0D6E4CEFBE4CDFAE4CC16 -:100AB000F9A88222B800C1B90059BA002DEC8BF018 -:100AC00084CFCECDFCE5F0CBF97818EF2FFFEE33D5 -:100AD000FEED33FDEC33FCEB33FB10D70399400400 -:100AE000EB99FB0FD8E5E4F9FA227818EF2FFFEE27 -:100AF00033FEED33FDEC33FCC933C910D7059BE958 -:100B00009A4007EC9BFCE99AF90FD8E0E4C9FAE4B3 -:100B1000CCFB2275F010EF2FFFEE33FEED33FDCC52 -:100B200033CCC833C810D7079BEC9AE899400AED3C -:100B30009BFDEC9AFCE899F80FD5F0DAE4CDFBE4E4 -:100B4000CCFAE4C8F922ECF0A3EDF0A3EEF0A3EFA9 -:100B5000F022D083D082F8E4937012740193700D68 -:100B6000A3A393F8740193F5828883E473740293CA -:100B70006860EFA3A3A380DFEF4E6012EF60010E69 -:100B8000EDBB010B89828A83F0A3DFFCDEFA2289A8 -:100B9000F05007F709DFFCA9F022BBFEFCF309DFE8 -:100BA000FCA9F0228E228F23900080E014604A146A -:100BB0007003020C8124026003020D5FC29090005A -:100BC0007FE06003020D5FAF23AE22121AB0400334 -:100BD000020D5FE4F524E524120D63E4F0A3F005B3 -:100BE00024E524B40FF0E4900000F0F524120E93F5 -:100BF0009000807401F0D29022900076E0FCA3E097 -:100C0000FDAE047802CEC313CE13D8F92DFFEC3E0F -:100C1000FED3E5239FE5229E4009120E93E4900047 -:100C200000F022AF23AE221217D1501F900000E037 -:100C300094004017E4900073F09000837404F0E493 -:100C400090007BF09000807402F022C3E52394644E -:100C5000E52294005003020D50120EF71211845039 -:100C600003020D5F900000E0120D63120E969000DB -:100C700000E004F0E0D3940F5003020D5FE4020D96 -:100C80005AB290120EF71212CE5059900083E0B46F -:100C90000410E524C454F0120DA1EFF0E490008399 -:100CA000F022900073E0FF120DA6E0FEE524540F41 -:100CB000FDEE4DF074032F120DA8120E4DFF120021 -:100CC00003EFF0900073E004F09000837404F09060 -:100CD0000073E0D394705003020D5F121B31E49057 -:100CE00000008076AF23AE221217D15066121B216E -:100CF0005005E490007EF0120E4A6052121B317DC6 -:100D0000F47C017F017E0012198F90007BE090003F -:100D10007EF0900083E07019120DA2C083C082E0C3 -:100D2000FF900000E0540FFEEF4ED082D083F080A1 -:100D30000E900000E0C454F0440F120DA1EFF090AB -:100D40000073E0FF12105F90007FE04480F0C290DB -:100D5000E48008121B31E4900000F0900080F02243 -:100D6000FCE52A25E02484F582E43400F58322AEF4 -:100D700032AF337C007D641209B57C007D0A120914 -:100D8000A3D3EF94F4EE940122F583E493FFED7E78 -:100D90000075F00DA424E4F582E4341BF583E4939C -:100DA00022FF900073E02403F582E43400F58322EF -:100DB000E53075F00DA424E1F582E4341BF583E4FD -:100DC00093FF7E00AC37AD381209A3AC06AD072205 -:100DD00090007DE075F00DA424EAF582E4341BF563 -:100DE00083E493FF900075E022E53075F00DA424B4 -:100DF000E2F582E4341B22EF75F00DA424EDF582B8 -:100E0000E4341BF583E49322900075E024FFFFE4B3 -:100E100034FFFE7C007D08120A0A74032FF58274E9 -:100E2000003EF58322E53075F00DA424E1F582E45F -:100E3000341BF583E49322EEF0A3EFF0E975F00D97 -:100E4000A422F583E493FF7E002290007EE0FF90D1 -:100E5000007BE06F22E4F9C3ED9BF582EC9AF58309 -:100E6000D3EF9582EE958322E0FCA3E0FDEC547F66 -:100E7000FAD3ED9400EA940022FD1209A37C007DD0 -:100E8000641209B58E268F27229000C7A3A3E0FE27 -:100E9000A3E022900076E522F0A3E523F022AB3C0C -:100EA000AA3BAF35AE34121AA2EF22852C34852D21 -:100EB00035AB2BAA2AAD292275F00DA424E6F582C4 -:100EC000E4341B22E5239509E522950822ED2BFD4C -:100ED000EC3AFCC3EF9DEE9C22F537740193F53894 -:100EE00022540F75F002A4F58285F08322FA740172 -:100EF00093FDAC020209A37B007A007924AF23AEF4 -:100F00002222E0FEA3E0FFC322EC4480AF05F0A361 -:100F1000EFF0228F308A328B33E4F536120DF76D05 -:100F20006003AF3622120E25FFD394005003020F48 -:100F3000C1120DE9F583E493FED394005003020F30 -:100F4000C1E530702DEFD39EE53075F00D400C12E9 -:100F50000E2AFD7C00AE32AF33800E120DEEF5830B -:100F6000E493FD7C00AE34AF351209B58E378F386F -:100F70008008E530120D91120ED9120D6F40067ED9 -:100F8000017FF480008E398F3AAE34AF35120D7385 -:100F900040070C7E017FF480008E3B8F3C120DB029 -:100FA000AB3AAA39AF33AE32121A94EF7003021083 -:100FB0005C120DE9120DBD120E9E700302105C80D2 -:100FC00066120DE9F583E493D394004029E53012CD -:100FD0000D91120ED9AE34AF35120D7340070C7E51 -:100FE000017FF480008E3B8F3C120DE9120DBD1283 -:100FF0000E9E60688031120E25D39400405EE5306D -:10100000120D91120ED9120D6F40070C7E017FF464 -:1010100080008E398F3A120DB0AB3AAA39AF33AE99 -:1010200032121AA2EF6035E530120EB8120E42AC41 -:1010300037AD381209A3900078EEF0A3EFF0E53059 -:1010400075F00DA424E8F582E4341B120E42120957 -:10105000A3900081EEF0A3EFF0753601AF36228F3A -:1010600025E4F527F526E5252401FFE433FEC3E555 -:10107000269FEE6480F874809850397403252612F8 -:101080000DA8E0C4540FFF120D63120E684007EF65 -:10109000120D63120F0974032526120DA8E0540FD8 -:1010A000FF120D63120E684007EF120D63120F0955 -:1010B000052680B2E4F526900000E0FFE526C39FF8 -:1010C000400302117BE526120D63E030E7030211B5 -:1010D0006DAF26900000E0FEEFC39E400302116951 -:1010E000EF25E02486F582E43400F583E0FCA3E0FC -:1010F000FDEF120D63ECF0A3EDF0E4FEE525240115 -:10110000FDE433FCEEC39DEC6480F8748098505588 -:1011100074032E120DA8E0F9C4540FFDEF2401FB57 -:10112000E433FAEDB50316E4B50212E9540FFDEF0E -:10113000C454F04DFD74032E120DA8EDF0EF240100 -:10114000FDE433FC74032E120DA8E0F9540FB5052D -:1011500011E4B5040DE954F04FFD74032E120DA8EF -:10116000EDF00E80970F0210D305278009E52612B7 -:101170000D63E0547FF005260210B7900000E0C335 -:101180009527F0228E258F268B278A288929C20051 -:101190001212CE5005D200021228E4F52A90000067 -:1011A000E0FFE52AC39F4003021228120D61E0FC14 -:1011B000A3E0FDAE047803CEC313CE13D8F9FBAA87 -:1011C00006EDAE047802CEC313CE13D8F92BFDEE94 -:1011D0003A120D60E0C4F854F0C868FEA3E0C454AD -:1011E0000F482DFFEC3EFEC3E5269FFDE5259E1230 -:1011F0000D60E0FAA3E0FBD39DEA9C4026E5262F94 -:10120000FFE5253EFEC3EB9FEA9E5017E5294528E2 -:101210004527600BAB27AA28A929E52A120991D2F4 -:10122000008005052A02119DA20022AFFBAEFC7CC6 -:10123000007D0A1209A39000BDEEF0A3EFF090002C -:10124000BD120F029464EE940050030212CD30934D -:101250003B8E0A8F0BC3EF950DF511EE950CF51033 -:10126000900074E014601F04706390007DE0FF64E0 -:10127000806007120DF764016053AB11AA10AD0F27 -:10128000AC0EE4FF803DAF11AE10803E9000BDE09B -:10129000FEA3E08E0CF50DC3950BF50FEE950AF548 -:1012A0000E900074E014601E04702290007DE0FF38 -:1012B00064806005120DF76014AB0FAA0EAD11AC7F -:1012C000107F010206A8AF0FAE0E120BA4228E2BC8 -:1012D0008F2C8B2D8A2E892FC201E4F530900000CF -:1012E000E0FFE530C39F400302136DE52CAE2B7881 -:1012F00003CEC313CE13D8F9FDAC06E52CAE2B7884 -:1013000002CEC313CE13D8F92DF532EE3CF531E5FC -:1013100030120D63120F029532EE953150028004A7 -:10132000AE31AF328E318F32E530120D63120F02C3 -:101330009532FDEE9531FCC3ED952CEC952B5028A4 -:10134000E5322FFFE5313EFEC3E52C9FE52B9E5095 -:1013500017E52F452E452D600BAB2DAA2EA92FE5A5 -:1013600030120991D201800505300212DDA201225E -:10137000C0E0C0F0C083C082C0D075D000C000C043 -:1013800001C002C003C004C005C006C007E59854F0 -:1013900003F55FF45298E55F30E017121B6F900081 -:1013A000BA1219FFEFF09000BAE004F0E0B41402B2 -:1013B000E4F0E55F30E12E9000BCE0D39400401AE9 -:1013C0009000B9E02460F8E6FF121B6C9000B9E0D1 -:1013D00004F09000BCE014F08002D2039000B9E069 -:1013E000B42002E4F0D007D006D005D004D003D05A -:1013F00002D001D000D0D0D082D083D0F0D0E03263 -:1014000012005A787FE4F6D8FD75817F02144A02F3 -:101410000076E493A3F8E493A34003F68001F20876 -:10142000DFF48029E493A3F85407240CC8C333C421 -:10143000540F4420C8834004F456800146F6DFE48C -:10144000800B0102040810204080901596E47E0174 -:101450009360BCA3FF543F30E509541FFEE493A3FF -:1014600060010ECF54C025E060A840B8E493A3FA11 -:10147000E493A3F8E493A3C8C582C8CAC583CAF09D -:10148000A3C8C582C8CAC583CADFE9DEE780BEC07B -:10149000E0C0F0C083C082C0D075D000C000C001E1 -:1014A000C002C003C004C005C006C007E5D8548709 -:1014B000F521F452D8E5F730E508E5F730E60312F8 -:1014C0001B7653F7DFE52130E708E5D930E003125A -:1014D0001B75E52130E008E5DA30E00312122BE558 -:1014E0002130E108E5DB30E003121B77E52130E233 -:1014F00008E5DC30E003121B78D007D006D005D019 -:1015000004D003D002D001D000D0D0D082D083D07C -:10151000F0D0E032AE07E4F547121A5B900000E02D -:1015200004FF121A6212158F900000E0FFE547C316 -:101530009F50121219F31219E61219F3F5831219BA -:10154000ED054780E3900076E0FF121A6290007686 -:101550001219ED12158FE4F547900073E02401FF96 -:10156000E433FEC3E5479FEE6480F874809850171B -:10157000740325471219E10547E547541F70DA1235 -:101580001B69121B6280D27F55121A62021B6912FC -:101590001B69121B62224200D300004200CF0000F0 -:1015A0004200D500004200D100004100D8004100B7 -:1015B000D70041007F00410080004100A28041002F -:1015C000740041007D8041007A0042000100004229 -:1015D0000081000042007800004100830041007556 -:1015E0000041007C004100730041007E0041007B0F -:1015F00000410000004100BA004100BB004100B8BA -:10160000004100B9004100BC004100B700C1030027 -:101610008A4B8B4C855557755880121A0AE553D35F -:1016200094004019E4F556E556C39553500FAD525A -:10163000AC51AF50AE4F121A0A055680EAE4F55687 -:10164000E556C39554503274032557120DA8E05542 -:1016500058600AAD52AC51AF50AE4F8008AD4EACA1 -:101660004DAF4CAE4B121A0AE558C313F55870052E -:101670000557755880055680C7C290900080740445 -:10168000F0228B478A488949E4F54FE54FC3954DD1 -:101690005043AB47AA48A949C003C002C001AB4AA6 -:1016A000AA4BA94C854F82758300120964FDC412B0 -:1016B0000EE1D001D002D003120A40FFAEF0AB47DA -:1016C000AA48A949ED120EE1120A40FDACF0121A27 -:1016D0000A054F80B6AF4E154EEF70ACC29022C0D7 -:1016E000E0C083C082C0D075D000C004C005C00671 -:1016F000C00753C87F9000D3E0FEA3E0FF4E700305 -:1017000053C8FB9000CF12189650099000D3E4F014 -:10171000A3F0800DC39000D4E09DF09000D3E09C36 -:10172000F0D007D006D005D004D0D0D082D083D05E -:10173000E032C0E0C083C082C0D075D000C004C019 -:1017400005C006C00753917F9000D5E0FEA3E0FFDF -:101750004E70035391FB9000D112189650099000DF -:10176000D5E4F0A3F0800DC39000D6E09DF090008A -:10177000D5E09CF0D007D006D005D004D0D0D082E0 -:10178000D083D0E032AE05AD07E4FCFB7FAA121A8D -:1017900062AF05121A62EE75F00DA42452F582E4D0 -:1017A000341CF583E493FFECC39F500774082CFCB2 -:1017B0000B80F4EB04FF121A5DE4FCECC39B5009B0 -:1017C00074032C1219E10C80F27F55121A62021B6D -:1017D00069AB07AA06900076E0FEA3E0FF120D7346 -:1017E00040050C7DF48004AC06AD07AE04AF05C324 -:1017F000900077E09FFD900076E09EFCC3ED9BECAF -:101800009A5013A3E02FFF900076E03EFEC3EB9FBB -:10181000EA9E50028001C322AE07E4FDF547121A8A -:101820005B900001E0FF121A629000011219ED9026 -:101830000078E0FF121A629000781219ED90008192 -:10184000E0FF121A629000811219ED74032D121933 -:10185000E10DBD03F67F55121A62021B69AB07AAA0 -:1018600006E4F9F87F407E427D0FFC120AB4A8041A -:10187000A905AA06AB077F207ED77D757C01120AD9 -:10188000B4C3E49FFFE49EFE22AB07AA06E4F9F886 -:101890007FE87E03FD22E0FCA3E0FDC3EF9DEE9C0C -:1018A00022F583E493FF7E00E54575F00DA4247CCA -:1018B000F582E4341BF583E493FC740193FD020983 -:1018C000A3E54575F00DA422E0FF7E000209A39078 -:1018D0000003E0FCA3E0FD22901B84E493FFD3947B -:1018E00000228F288D298A2A8B2B752E80E52824AB -:1018F00080701EE4F52F120EABAF2F120F13EF60A6 -:1019000005852F2E8019052FE52FC3940840E78009 -:101910000E120EABAF28120F13EF600385282EAF07 -:101920002E228F4790007AE0F5487F0B121B7243FE -:10193000DA011200707D0A7C007F017E001219B866 -:10194000121B54E4900080F090007FF09000D7E5E7 -:1019500047F090007AF0AF48229000BAE0FF900084 -:10196000B8E0B507057E017F00229000B81219FF8C -:10197000E0FD7C009000B8E004F0E0B41402E4F074 -:101980009000B7E0FEEE4204E4F0AE04AF05228E14 -:10199000288F298C2A8D2B12188912186A121ABEC8 -:1019A0009000D3E52AF0A3E52BF09000CFE528F0D6 -:1019B000A3E529F043C804228E498F4A8C4B8D4CF5 -:1019C00012188912186A121ACA9000D5E54BF0A3B2 -:1019D000E54CF09000D1E549F0A3E54AF0439104CD -:1019E00022F582E43400F583E0FF021A62A3E0FFEF -:1019F000021A62E54725E02484F582E4340022E0FF -:101A000024A3F582E43400F583228C598D5AD290B8 -:101A1000D280AD07AC067F0A7E0012002E121B5446 -:101A2000C290C280AD5AAC597F0A7E0012002E02CD -:101A30001B5412002A121B38121B3F121AF9121BD8 -:101A40005A121A7E121B17121B03121B0D121AD6E2 -:101A5000121B46121B5E021B4DAE077FAA121A62B2 -:101A6000AF06C2039000BBE0B42002E4F09000BBDC -:101A7000E02460F8A607E004F0A3E004F022AF88B9 -:101A80005388AF758CA0758DCBEF5440FEEF54108A -:101A90004E428822120E554006120ECD500109AF5B -:101AA0000122120E554006120ECD500109AF01223F -:101AB000C3EF9414EE94054003D38001C322AD0715 -:101AC000AC06ECF5CBAF058FCA22AD07AC06ECF542 -:101AD00093AF058F9222C2DE75D90575F9FF759611 -:101AE0000122EE30E707C3E49FFFE49EFE22121AB4 -:101AF000597F55121A62021B6975E34075E1017541 -:101B0000E20122E59154045391FB429122758E54D7 -:101B100075892243885022E5C8540453C8FB42C843 -:101B200022E5C8C320E201D322E591C320E201D31C -:101B30002253C8FB53C87F2275A41175D4CF2275D8 -:101B4000A54175D5772253F77F75DA302275E69077 -:101B500075A8B022E59120E2FB22E4F5A922439882 -:101B600010223003FD22C2DE22D299228F9922AFA9 -:101B700099228F8C2222222222011F00015E010362 -:101B80000301183C00000D0400017201020201284B -:101B90003C0800081700018601030301183C0000FF -:101BA0001F0A00012C01030301183C0000003B0741 -:101BB00001F401020302403C000007120001900101 -:101BC000030301183C000017010001C201020201D9 -:101BD000183C000124010000D2010202010C3C006B -:101BE00001011F00015E01030301183C00000D0408 -:101BF00000017201020201283C080008170001865A -:101C000001030301183C00001F0A00012C0103031B -:101C100001183C0000003B0701F401020302403CB4 -:101C20000000071200019001030301183C00001797 -:101C3000010001C201020201183C00012401000060 -:101C4000D2010202010C3C0001011F00015E0103F0 -:101C50000301183C00000D0400017201020201287A -:101C60003C0800081700018601030301183C00002E -:101C70001F0A00012C01030301183C0000003B0770 -:101C800001F401020302403C000007120001900130 -:101C9000030301183C000017010001C20102020108 -:101CA000183C000124010000D2010202010C3C009A -:011CB0000132 -:00000001FF From 7d9bc1039fb034fe36379bf00e64656b76afc35a Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Fri, 2 Nov 2018 16:04:35 +0100 Subject: [PATCH 434/798] tuya: don't set tuya_wifi_state in TuyaResetWifi() (will be set automatically) --- sonoff/xdrv_16_tuyadimmer.ino | 1 - 1 file changed, 1 deletion(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 813879b976f0..c9de62edd817 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -335,7 +335,6 @@ void TuyaResetWifi() { if (!Settings.flag.button_restrict) { char scmnd[20]; - tuya_wifi_state = -1; snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); ExecuteCommand(scmnd, SRC_BUTTON); } From 91ead8c60ed2401c2b4befef00242c1d54b49132 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sat, 3 Nov 2018 22:34:29 +0100 Subject: [PATCH 435/798] tuya: refactor/simplify code --- sonoff/xdrv_16_tuyadimmer.ino | 275 ++++++++++++++++++---------------- 1 file changed, 147 insertions(+), 128 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index c9de62edd817..b721ac7f63a7 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -20,9 +20,25 @@ #ifdef USE_TUYA_DIMMER #ifndef TUYA_DIMMER_ID -#define TUYA_DIMMER_ID 0 +#define TUYA_DIMMER_ID 0 #endif -#define TUYA_BUFFER_SIZE 256 + +#define TUYA_POWER_ID 1 + +#define TUYA_CMD_HEARTBEAT 0x00 +#define TUYA_CMD_QUERY_PRODUCT 0x01 +#define TUYA_CMD_MCU_CONF 0x02 +#define TUYA_CMD_WIFI_STATE 0x03 +#define TUYA_CMD_WIFI_RESET 0x04 +#define TUYA_CMD_WIFI_SELECT 0x05 +#define TUYA_CMD_SET_DP 0x06 +#define TUYA_CMD_STATE 0x07 +#define TUYA_CMD_QUERY_STATE 0x08 + +#define TUYA_TYPE_BOOL 0x01 +#define TUYA_TYPE_VALUE 0x02 + +#define TUYA_BUFFER_SIZE 256 #include @@ -38,6 +54,61 @@ int8_t tuya_wifi_state = -2; // Keep MCU wifi-status in sync with char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer int tuya_byte_counter = 0; // Index in serial receive buffer +void TuyaSendCmd(uint8_t cmd, uint8_t payload[], uint16_t payload_len){ + uint8_t checksum = 0xFF + cmd + (payload_len & 0xFF) + (payload_len >> 8); + TuyaSerial->write((uint8_t)0x55); // Tuya header 55AA + TuyaSerial->write((uint8_t)0xAA); + TuyaSerial->write((uint8_t)0x00); // version 00 + TuyaSerial->write(cmd); // Tuya command + TuyaSerial->write(payload_len >> 8); // following data length (Hi) + TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Send Packet: \"%02x%02x%02x%02x%02x%02x"), 0x55, 0xAA, 0x00, cmd, payload_len >> 8, payload_len & 0xFF); + for(int i = 0; i < payload_len; ++i){ + TuyaSerial->write(payload[i]); + checksum += payload[i]; + snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x"), log_data, payload[i]); + } + TuyaSerial->write(checksum); + TuyaSerial->flush(); + + snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x\""), log_data, checksum); + AddLog(LOG_LEVEL_DEBUG); +} + +void TuyaSendState(uint8_t type, uint8_t id, uint8_t* value){ + uint16_t payload_len = 4; + uint8_t payload_buffer[8]; + payload_buffer[0] = id; + payload_buffer[1] = type; + switch(type){ + case TUYA_TYPE_BOOL: + payload_len += 1; + payload_buffer[2] = 0x00; + payload_buffer[3] = 0x01; + payload_buffer[4] = value[0]; + break; + case TUYA_TYPE_VALUE: + payload_len += 4; + payload_buffer[2] = 0x00; + payload_buffer[3] = 0x04; + payload_buffer[4] = value[3]; + payload_buffer[5] = value[2]; + payload_buffer[6] = value[1]; + payload_buffer[7] = value[0]; + break; + } + + TuyaSendCmd(TUYA_CMD_SET_DP, payload_buffer, payload_len); +} + +void TuyaSendBool(uint8_t id, boolean value){ + TuyaSendState(TUYA_TYPE_BOOL, TUYA_POWER_ID, &value); +} + +void TuyaSendValue(uint8_t id, uint32_t value){ + TuyaSendState(TUYA_TYPE_VALUE, Settings.param[P_TUYA_DIMMER_ID], (uint8_t*)(&value)); +} + boolean TuyaSetPower() { boolean status = false; @@ -50,19 +121,7 @@ boolean TuyaSetPower() snprintf_P(log_data, sizeof(log_data), PSTR("TYA: SetDevicePower.rpower=%d"), rpower); AddLog(LOG_LEVEL_DEBUG); - TuyaSerial->write((uint8_t)0x55); // Tuya header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x06); // Tuya command 06 - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x05); // following data length 0x05 - TuyaSerial->write((uint8_t)0x01); // relay number 1,2,3 - TuyaSerial->write((uint8_t)0x01); - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x01); - TuyaSerial->write((uint8_t)rpower); // status - TuyaSerial->write((uint8_t)0x0D + rpower); // checksum sum of all bytes in packet mod 256 - TuyaSerial->flush(); + TuyaSendBool(TUYA_POWER_ID, rpower); status = true; } @@ -75,22 +134,8 @@ void LightSerialDuty(uint8_t duty) if (duty < 25) { duty = 25; // dimming acts odd below 25(10%) - this mirrors the threshold set on the faceplate itself } - TuyaSerial->write((uint8_t)0x55); // Tuya header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x06); // Tuya command 06 - send order - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x08); // following data length 0x08 - TuyaSerial->write((uint8_t)Settings.param[P_TUYA_DIMMER_ID]); // dimmer id - TuyaSerial->write((uint8_t)0x02); // type=value - TuyaSerial->write((uint8_t)0x00); // length hi - TuyaSerial->write((uint8_t)0x04); // length low - TuyaSerial->write((uint8_t)0x00); // - TuyaSerial->write((uint8_t)0x00); // - TuyaSerial->write((uint8_t)0x00); // - TuyaSerial->write((uint8_t) duty ); // dim value (0-255) - TuyaSerial->write((uint8_t) byte(Settings.param[P_TUYA_DIMMER_ID] + 19 + duty) ); // checksum:sum of all bytes in packet mod 256 - TuyaSerial->flush(); + + TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); snprintf_P(log_data, sizeof(log_data), PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); AddLog(LOG_LEVEL_DEBUG); @@ -108,84 +153,85 @@ void TuyaPacketProcess() { char scmnd[20]; - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Packet Size=%d"), tuya_byte_counter); - AddLog(LOG_LEVEL_DEBUG); - - if (tuya_byte_counter == 7 && tuya_buffer[3] == 14 ) { // heartbeat packet - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Heartbeat")); - if(tuya_buffer[6] == 0){ - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Detected MCU restart")); - tuya_wifi_state = -2; - } - } - else if (tuya_byte_counter == 12 && tuya_buffer[3] == 7 && tuya_buffer[5] == 5) { // on/off packet + switch(tuya_buffer[3]) { - snprintf_P(log_data, sizeof(log_data),PSTR("TYA: Rcvd - %s State"),tuya_buffer[10]?"On":"Off"); - AddLog(LOG_LEVEL_DEBUG); - - if((power || Settings.light_dimmer > 0) && (power != tuya_buffer[10])) { - ExecuteCommandPower(1, tuya_buffer[10], SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction - } - } - else if (tuya_byte_counter == 15 && tuya_buffer[3] == 7 && tuya_buffer[5] == 8) { // dim packet + case TUYA_CMD_HEARTBEAT: + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Heartbeat")); + if(tuya_buffer[6] == 0){ + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Detected MCU restart")); + tuya_wifi_state = -2; + } + break; - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Dim State=%d"), tuya_buffer[13]); - AddLog(LOG_LEVEL_DEBUG); + case TUYA_CMD_STATE: + if (tuya_buffer[5] == 5) { // on/off packet - if (!Settings.param[P_TUYA_DIMMER_ID]) { - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Autoconfiguring Dimmer ID %d"), tuya_buffer[6]); - AddLog(LOG_LEVEL_DEBUG); - Settings.param[P_TUYA_DIMMER_ID] = tuya_buffer[6]; - } + snprintf_P(log_data, sizeof(log_data),PSTR("TYA: Rcvd - %s State"),tuya_buffer[10]?"On":"Off"); + AddLog(LOG_LEVEL_DEBUG); - tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); - if((power) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 2)) { + if((power || Settings.light_dimmer > 0) && (power != tuya_buffer[10])) { + ExecuteCommandPower(1, tuya_buffer[10], SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction + } + } + else if (tuya_buffer[5] == 8) { // dim packet - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Send CMND_DIMMER=%d"), tuya_new_dim ); - AddLog(LOG_LEVEL_DEBUG); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Dim State=%d"), tuya_buffer[13]); + AddLog(LOG_LEVEL_DEBUG); - snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); + if (!Settings.param[P_TUYA_DIMMER_ID]) { + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Autoconfiguring Dimmer ID %d"), tuya_buffer[6]); + AddLog(LOG_LEVEL_DEBUG); + Settings.param[P_TUYA_DIMMER_ID] = tuya_buffer[6]; + } - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Send CMND_DIMMER_STR=%s"), scmnd ); - AddLog(LOG_LEVEL_DEBUG); + tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); + if((power) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 2)) { - tuya_ignore_dim = true; - ExecuteCommand(scmnd, SRC_SWITCH); - } - } - else if (tuya_byte_counter == 8 && tuya_buffer[3] == 5 && tuya_buffer[5] == 1) { // reset WiFi settings packet + snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi Reset Rcvd")); - TuyaResetWifi(); - } - else if (tuya_byte_counter == 7 && tuya_buffer[3] == 3 && tuya_buffer[6] == 2) { // WiFi LED has been sucessfully set. + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Send CMND_DIMMER_STR=%s"), scmnd ); + AddLog(LOG_LEVEL_DEBUG); - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: WiFi LED set ACK Rcvd")); - tuya_wifi_state = WifiState(); - } - else if (tuya_buffer[3] == 2) { // MCU configuration packet - - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: MCU configuration Rcvd")); - - if (tuya_buffer[5] == 2) { - uint8_t led1_gpio = tuya_buffer[6]; - uint8_t key1_gpio = tuya_buffer[7]; - boolean key1_set = false; - boolean led1_set = false; - for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if (Settings.my_gp.io[i] == GPIO_LED1) led1_set = true; - else if (Settings.my_gp.io[i] == GPIO_KEY1) key1_set = true; - } - if(!Settings.my_gp.io[led1_gpio] && !led1_set){ - Settings.my_gp.io[led1_gpio] = GPIO_LED1; - restart_flag = 2; + tuya_ignore_dim = true; + ExecuteCommand(scmnd, SRC_SWITCH); + } } - if(!Settings.my_gp.io[key1_gpio] && !key1_set){ - Settings.my_gp.io[key1_gpio] = GPIO_KEY1; - restart_flag = 2; + break; + + case TUYA_CMD_WIFI_RESET: + case TUYA_CMD_WIFI_SELECT: + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd WiFi Reset")); + TuyaResetWifi(); + break; + + case TUYA_CMD_WIFI_STATE: + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd WiFi LED set ACK")); + tuya_wifi_state = WifiState(); + break; + + case TUYA_CMD_MCU_CONF: + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd MCU configuration")); + + if (tuya_buffer[5] == 2) { + uint8_t led1_gpio = tuya_buffer[6]; + uint8_t key1_gpio = tuya_buffer[7]; + boolean key1_set = false; + boolean led1_set = false; + for (byte i = 0; i < MAX_GPIO_PIN; i++) { + if (Settings.my_gp.io[i] == GPIO_LED1) led1_set = true; + else if (Settings.my_gp.io[i] == GPIO_KEY1) key1_set = true; + } + if(!Settings.my_gp.io[led1_gpio] && !led1_set){ + Settings.my_gp.io[led1_gpio] = GPIO_LED1; + restart_flag = 2; + } + if(!Settings.my_gp.io[key1_gpio] && !key1_set){ + Settings.my_gp.io[key1_gpio] = GPIO_KEY1; + restart_flag = 2; + } } - } - TuyaRequestState(); + TuyaRequestState(); + break; } } @@ -195,9 +241,6 @@ void TuyaSerialInput() yield(); byte serial_in_byte = TuyaSerial->read(); - //snprintf_P(log_data, sizeof(log_data), PSTR("TYA: serial_in_byte %d, tuya_cmd_status %d, tuya_cmd_checksum %d, tuya_data_len %d, tuya_byte_counter %d"), serial_in_byte, tuya_cmd_status, tuya_cmd_checksum, tuya_data_len, tuya_byte_counter); - //AddLog(LOG_LEVEL_DEBUG); - if (serial_in_byte == 0x55) { // Start TUYA Packet tuya_cmd_status = 1; tuya_buffer[tuya_byte_counter++] = serial_in_byte; @@ -206,8 +249,6 @@ void TuyaSerialInput() else if (tuya_cmd_status == 1 && serial_in_byte == 0xAA){ // Only packtes with header 0x55AA are valid tuya_cmd_status = 2; - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: 0x55AA Packet Start")); - tuya_byte_counter = 0; tuya_buffer[tuya_byte_counter++] = 0x55; tuya_buffer[tuya_byte_counter++] = 0xAA; @@ -224,7 +265,7 @@ void TuyaSerialInput() else if ((tuya_cmd_status == 3) && (tuya_byte_counter == (6 + tuya_data_len)) && (tuya_cmd_checksum == serial_in_byte)){ // Compare checksum and process packet tuya_buffer[tuya_byte_counter++] = serial_in_byte; - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: 0x55 Packet End: \"")); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Received Packet: \"")); for (int i = 0; i < tuya_byte_counter; i++) { snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x"), log_data, tuya_buffer[i]); } @@ -280,15 +321,7 @@ void TuyaSetWifiLed(){ snprintf_P(log_data, sizeof(log_data), "TYA: Set WiFi LED to state %d (%d)", wifi_state, WifiState()); AddLog(LOG_LEVEL_DEBUG); - TuyaSerial->write((uint8_t)0x55); // header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x03); // command 03 - set wifi state - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x01); // following data length 0x01 - TuyaSerial->write((uint8_t)wifi_state); // wifi state (0x00 == smartconfig, 0x01 == AP, 0x02 == not connected, 0x03 == connected) - TuyaSerial->write((uint8_t)(0x03 + wifi_state)); // checksum:sum of all bytes in packet mod 256 - TuyaSerial->flush(); + TuyaSendCmd(TUYA_CMD_WIFI_STATE, &wifi_state, 1); } void TuyaRequestState(){ @@ -297,14 +330,7 @@ void TuyaRequestState(){ snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); AddLog(LOG_LEVEL_DEBUG); - TuyaSerial->write((uint8_t)0x55); // header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x08); // command 08 - get status - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x00); // following data length 0x00 - TuyaSerial->write((uint8_t)0x07); // checksum:sum of all bytes in packet mod 256 - TuyaSerial->flush(); + TuyaSendCmd(TUYA_CMD_QUERY_STATE, nullptr, 0); } } @@ -320,14 +346,7 @@ void TuyaInit() snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration"); AddLog(LOG_LEVEL_DEBUG); - TuyaSerial->write((uint8_t)0x55); // header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write((uint8_t)0x02); // command 02 - get configuration - TuyaSerial->write((uint8_t)0x00); - TuyaSerial->write((uint8_t)0x00); // following data length 0x00 - TuyaSerial->write((uint8_t)0x01); // checksum:sum of all bytes in packet mod 256 - TuyaSerial->flush(); + TuyaSendCmd(TUYA_CMD_MCU_CONF, nullptr, 0); } } From 2a9a5bb94b56c875894fc3107ebfb9cb6198ea79 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sat, 3 Nov 2018 23:24:43 +0100 Subject: [PATCH 436/798] tuya: send power when setting dim-level --- sonoff/xdrv_16_tuyadimmer.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index b721ac7f63a7..8ef35f19ba14 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -102,11 +102,11 @@ void TuyaSendState(uint8_t type, uint8_t id, uint8_t* value){ } void TuyaSendBool(uint8_t id, boolean value){ - TuyaSendState(TUYA_TYPE_BOOL, TUYA_POWER_ID, &value); + TuyaSendState(TUYA_TYPE_BOOL, id, &value); } void TuyaSendValue(uint8_t id, uint32_t value){ - TuyaSendState(TUYA_TYPE_VALUE, Settings.param[P_TUYA_DIMMER_ID], (uint8_t*)(&value)); + TuyaSendState(TUYA_TYPE_VALUE, id, (uint8_t*)(&value)); } boolean TuyaSetPower() @@ -136,6 +136,7 @@ void LightSerialDuty(uint8_t duty) } TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); + TuyaSendBool(TUYA_POWER_ID, power); snprintf_P(log_data, sizeof(log_data), PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); AddLog(LOG_LEVEL_DEBUG); From ae869c2894d92158fae98ad073122115912a63f8 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Sun, 4 Nov 2018 01:50:24 +0200 Subject: [PATCH 437/798] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index bf55e130ecb0..ad522ec4e8d6 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -7,6 +7,8 @@ about: Create a report to help us improve **IMPORTANT NOTICE** If you do not complete the template below it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. +**FAILURE TO COMPLETE THE REQUESTED INFORMATION WILL RESULT IN YOUR ISSUE BEING CLOSED** + **Describe the bug** _A clear and concise description of what the bug is._ @@ -15,9 +17,11 @@ _Also, make sure these boxes are checked [x] before submitting your issue - Than - [ ] _Searched the problem in issues and in the wiki_ - [ ] _Hardware used_ : - [ ] _Development/Compiler/Upload tools used_ : +- [ ] _If a pre-compiled release or development binary was used, which one?_ : +- [ ] _You have tried latest release or development binaries?_ : - [ ] _Provide the output of command_``status 0`` : ``` -STATUS 0 OUTPUT HERE +STATUS 0 OUTPUT HERE - DO NOT DELETE THE MARKERS ABOVE AND BELOW THIS LINE ``` **To Reproduce** From 4ef496d0a6a2693332ebc44c6a5d670e69a3068f Mon Sep 17 00:00:00 2001 From: andrethomas2 <43345003+andrethomas2@users.noreply.github.com> Date: Sun, 4 Nov 2018 01:54:27 +0200 Subject: [PATCH 438/798] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 77fc7a3e7b5e..4d1eba459a45 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -7,6 +7,8 @@ about: Users Troubleshooting Help **IMPORTANT NOTICE** If you do not complete the template below it is likely that your issue will not be addressed. When providing information about your issue please be as extensive as possible so that it can be solved by as little as possible responses. +**FAILURE TO COMPLETE THE REQUESTED INFORMATION WILL RESULT IN YOUR ISSUE BEING CLOSED** + Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in issues (https://github.com/arendst/Sonoff-Tasmota/issues) @@ -15,6 +17,8 @@ Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in the chat (https://discord.gg/Ks2Kzd4) - [ ] Development/Compiler/Upload tools used : - [ ] Hardware used : +- [ ] If a pre-compiled release or development binary was used, which one? : +- [ ] You have tried latest release or development binaries? : - [ ] Provide the output of command ``status 0`` : ``` STATUS 0 OUTPUT HERE From b958c7b716da0adf5f80d37dd2b5908eb689ce65 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sun, 4 Nov 2018 03:40:14 +0100 Subject: [PATCH 439/798] tuya: cleanup --- sonoff/xdrv_16_tuyadimmer.ino | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 8ef35f19ba14..c296548cca62 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -54,23 +54,22 @@ int8_t tuya_wifi_state = -2; // Keep MCU wifi-status in sync with char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer int tuya_byte_counter = 0; // Index in serial receive buffer -void TuyaSendCmd(uint8_t cmd, uint8_t payload[], uint16_t payload_len){ - uint8_t checksum = 0xFF + cmd + (payload_len & 0xFF) + (payload_len >> 8); +void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len = 0){ + uint8_t checksum = (0xFF + cmd + (payload_len >> 8) + (payload_len & 0xFF)); TuyaSerial->write((uint8_t)0x55); // Tuya header 55AA TuyaSerial->write((uint8_t)0xAA); TuyaSerial->write((uint8_t)0x00); // version 00 TuyaSerial->write(cmd); // Tuya command TuyaSerial->write(payload_len >> 8); // following data length (Hi) TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Send Packet: \"%02x%02x%02x%02x%02x%02x"), 0x55, 0xAA, 0x00, cmd, payload_len >> 8, payload_len & 0xFF); - for(int i = 0; i < payload_len; ++i){ + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Sent Packet: \"55aa00%02x%02x%02x"), cmd, payload_len >> 8, payload_len & 0xFF); + for(int i = 0; i < payload_len; ++i) { TuyaSerial->write(payload[i]); checksum += payload[i]; snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x"), log_data, payload[i]); } TuyaSerial->write(checksum); TuyaSerial->flush(); - snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x\""), log_data, checksum); AddLog(LOG_LEVEL_DEBUG); } @@ -136,7 +135,6 @@ void LightSerialDuty(uint8_t duty) } TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); - TuyaSendBool(TUYA_POWER_ID, power); snprintf_P(log_data, sizeof(log_data), PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); AddLog(LOG_LEVEL_DEBUG); @@ -233,6 +231,9 @@ void TuyaPacketProcess() } TuyaRequestState(); break; + + default: + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd unknown command")); } } @@ -331,7 +332,7 @@ void TuyaRequestState(){ snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); AddLog(LOG_LEVEL_DEBUG); - TuyaSendCmd(TUYA_CMD_QUERY_STATE, nullptr, 0); + TuyaSendCmd(TUYA_CMD_QUERY_STATE); } } @@ -347,7 +348,7 @@ void TuyaInit() snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration"); AddLog(LOG_LEVEL_DEBUG); - TuyaSendCmd(TUYA_CMD_MCU_CONF, nullptr, 0); + TuyaSendCmd(TUYA_CMD_MCU_CONF); } } From 256b5cba8e8d0367f399ab5e439977ddfa4d846f Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sun, 4 Nov 2018 06:40:55 +0100 Subject: [PATCH 440/798] tuya: only handle reset GPIO --- sonoff/xdrv_16_tuyadimmer.ino | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index c296548cca62..f3b087c7d04b 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -56,12 +56,12 @@ int tuya_byte_counter = 0; // Index in serial receive buffer void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len = 0){ uint8_t checksum = (0xFF + cmd + (payload_len >> 8) + (payload_len & 0xFF)); - TuyaSerial->write((uint8_t)0x55); // Tuya header 55AA - TuyaSerial->write((uint8_t)0xAA); - TuyaSerial->write((uint8_t)0x00); // version 00 - TuyaSerial->write(cmd); // Tuya command - TuyaSerial->write(payload_len >> 8); // following data length (Hi) - TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) + TuyaSerial->write(0x55); // Tuya header 55AA + TuyaSerial->write(0xAA); + TuyaSerial->write(0x00); // version 00 + TuyaSerial->write(cmd); // Tuya command + TuyaSerial->write(payload_len >> 8); // following data length (Hi) + TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Sent Packet: \"55aa00%02x%02x%02x"), cmd, payload_len >> 8, payload_len & 0xFF); for(int i = 0; i < payload_len; ++i) { TuyaSerial->write(payload[i]); @@ -74,7 +74,7 @@ void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len AddLog(LOG_LEVEL_DEBUG); } -void TuyaSendState(uint8_t type, uint8_t id, uint8_t* value){ +void TuyaSendState(uint8_t id, uint8_t type, uint8_t* value){ uint16_t payload_len = 4; uint8_t payload_buffer[8]; payload_buffer[0] = id; @@ -101,11 +101,11 @@ void TuyaSendState(uint8_t type, uint8_t id, uint8_t* value){ } void TuyaSendBool(uint8_t id, boolean value){ - TuyaSendState(TUYA_TYPE_BOOL, id, &value); + TuyaSendState(id, TUYA_TYPE_BOOL, &value); } void TuyaSendValue(uint8_t id, uint32_t value){ - TuyaSendState(TUYA_TYPE_VALUE, id, (uint8_t*)(&value)); + TuyaSendState(id, TUYA_TYPE_VALUE, (uint8_t*)(&value)); } boolean TuyaSetPower() @@ -363,14 +363,13 @@ void TuyaResetWifi() boolean TuyaButtonPressed() { - if ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index])) { - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_10), XdrvMailbox.index +1); + if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Reset GPIO triggered")); AddLog(LOG_LEVEL_DEBUG); TuyaResetWifi(); - + return true; // Reset GPIO served here } - return true; // Serviced here + return false; // Don't serve other buttons } /*********************************************************************************************\ From 0c3123a7aa4db1c25e4eb7466e66d94d6015e729 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sun, 4 Nov 2018 06:56:36 +0100 Subject: [PATCH 441/798] tuya: reorder functions --- sonoff/xdrv_16_tuyadimmer.ino | 120 ++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 55 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index f3b087c7d04b..bf8213da2cf6 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -54,11 +54,15 @@ int8_t tuya_wifi_state = -2; // Keep MCU wifi-status in sync with char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer int tuya_byte_counter = 0; // Index in serial receive buffer +/*********************************************************************************************\ + * Internal Functions +\*********************************************************************************************/ + void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len = 0){ uint8_t checksum = (0xFF + cmd + (payload_len >> 8) + (payload_len & 0xFF)); TuyaSerial->write(0x55); // Tuya header 55AA TuyaSerial->write(0xAA); - TuyaSerial->write(0x00); // version 00 + TuyaSerial->write((uint8_t)0x00); // version 00 TuyaSerial->write(cmd); // Tuya command TuyaSerial->write(payload_len >> 8); // following data length (Hi) TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) @@ -148,6 +152,25 @@ void LightSerialDuty(uint8_t duty) } } +void TuyaRequestState(){ + if(TuyaSerial) { + // Get current status of MCU + snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); + AddLog(LOG_LEVEL_DEBUG); + + TuyaSendCmd(TUYA_CMD_QUERY_STATE); + } +} + +void TuyaResetWifi() +{ + if (!Settings.flag.button_restrict) { + char scmnd[20]; + snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); + ExecuteCommand(scmnd, SRC_BUTTON); + } +} + void TuyaPacketProcess() { char scmnd[20]; @@ -237,6 +260,39 @@ void TuyaPacketProcess() } } +/*********************************************************************************************\ + * API Functions +\*********************************************************************************************/ + +boolean TuyaModuleSelected() +{ + if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected + pin[GPIO_TUYA_TX] = 1; + pin[GPIO_TUYA_RX] = 3; + Settings.my_gp.io[1] = GPIO_TUYA_TX; + Settings.my_gp.io[3] = GPIO_TUYA_RX; + restart_flag = 2; + } + light_type = LT_SERIAL; + return true; +} + +void TuyaInit() +{ + if (!Settings.param[P_TUYA_DIMMER_ID]) { + Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; + } + TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1); + if (TuyaSerial->begin(9600)) { + if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } + // Get MCU Configuration + snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration"); + AddLog(LOG_LEVEL_DEBUG); + + TuyaSendCmd(TUYA_CMD_MCU_CONF); + } +} + void TuyaSerialInput() { while (TuyaSerial->available()) { @@ -292,17 +348,16 @@ void TuyaSerialInput() } } -boolean TuyaModuleSelected() + +boolean TuyaButtonPressed() { - if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected - pin[GPIO_TUYA_TX] = 1; - pin[GPIO_TUYA_RX] = 3; - Settings.my_gp.io[1] = GPIO_TUYA_TX; - Settings.my_gp.io[3] = GPIO_TUYA_RX; - restart_flag = 2; + if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Reset GPIO triggered")); + AddLog(LOG_LEVEL_DEBUG); + TuyaResetWifi(); + return true; // Reset GPIO served here } - light_type = LT_SERIAL; - return true; + return false; // Don't serve other buttons } void TuyaSetWifiLed(){ @@ -326,51 +381,6 @@ void TuyaSetWifiLed(){ TuyaSendCmd(TUYA_CMD_WIFI_STATE, &wifi_state, 1); } -void TuyaRequestState(){ - if(TuyaSerial) { - // Get current status of MCU - snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); - AddLog(LOG_LEVEL_DEBUG); - - TuyaSendCmd(TUYA_CMD_QUERY_STATE); - } -} - -void TuyaInit() -{ - if (!Settings.param[P_TUYA_DIMMER_ID]) { - Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; - } - TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1); - if (TuyaSerial->begin(9600)) { - if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } - // Get MCU Configuration - snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration"); - AddLog(LOG_LEVEL_DEBUG); - - TuyaSendCmd(TUYA_CMD_MCU_CONF); - } -} - -void TuyaResetWifi() -{ - if (!Settings.flag.button_restrict) { - char scmnd[20]; - snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); - ExecuteCommand(scmnd, SRC_BUTTON); - } -} - -boolean TuyaButtonPressed() -{ - if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Reset GPIO triggered")); - AddLog(LOG_LEVEL_DEBUG); - TuyaResetWifi(); - return true; // Reset GPIO served here - } - return false; // Don't serve other buttons -} /*********************************************************************************************\ * Interface From 14a7424e9b195117198888a6ecf53b89a106274f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Nov 2018 16:55:12 +0100 Subject: [PATCH 442/798] Add command SetOption24 Add command SetOption24 0/1 to select pressure unit as hPa or mmHg (#4241) --- sonoff/_changelog.ino | 1 + sonoff/i18n.h | 10 +++------- sonoff/my_user_config.h | 2 +- sonoff/settings.h | 4 ++-- sonoff/settings.ino | 13 +++++++------ sonoff/sonoff.ino | 3 +++ sonoff/support.ino | 9 +++++++-- sonoff/xsns_09_bmp.ino | 26 +++++++++----------------- tools/decode-status.py | 4 ++-- 9 files changed, 35 insertions(+), 37 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index b3eb220982ce..48f133a61fe9 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.3.0.2 20181101 * Add minutes to commands Timezone to allow all possible world timezones + * Add command SetOption24 0/1 to select pressure unit as hPa or mmHg (#4241) * * 6.3.0.1 20181031 * Add wifi status to Tuya (#4221) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 20d5bdfa7653..587987c4dea7 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -99,6 +99,7 @@ #define D_JSON_REACTIVE_POWERUSAGE "ReactivePower" #define D_JSON_PRESSURE "Pressure" #define D_JSON_PRESSUREATSEALEVEL "SeaPressure" +#define D_JSON_PRESSURE_UNIT "PressureUnit" #define D_JSON_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_JSON_PROGRAMSIZE "ProgramSize" #define D_JSON_RESET "Reset" @@ -529,13 +530,8 @@ const char kOptionBlinkOff[] PROGMEM = "BLINKOFF|" D_BLINKOFF ; #ifdef USE_WEBSERVER const char HTTP_SNS_TEMP[] PROGMEM = "%s{s}%s " D_TEMPERATURE "{m}%s°%c{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; // {s} = , {m} = , {e} = -#ifndef USE_MMHG -const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = , {m} = , {e} = -#else -const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = , {e} = -const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_MILLIMETER_MERCURY "{e}"; // {s} = , {m} = , {e} = -#endif +const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s %s{e}"; // {s} = , {m} = , {e} = +const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s %s{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} = , {m} = , {e} = #if defined(USE_MHZ19) || defined(USE_SENSEAIR) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 20d1e1eed599..e1f6e364a4f9 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -174,11 +174,11 @@ #define WS2812_LEDS 30 // [Pixels] Number of WS2812 LEDs to start with (max is 512) #define TEMP_CONVERSION 0 // [SetOption8] Return temperature in (0 = Celsius or 1 = Fahrenheit) +#define PRESSURE_CONVERSION 0 // [SetOption24] Return pressure in (0 = hPa or 1 = mmHg) #define TEMP_RESOLUTION 1 // [TempRes] Maximum number of decimals (0 - 3) showing sensor Temperature #define HUMIDITY_RESOLUTION 1 // [HumRes] Maximum number of decimals (0 - 3) showing sensor Humidity #define PRESSURE_RESOLUTION 1 // [PressRes] Maximum number of decimals (0 - 3) showing sensor Pressure #define ENERGY_RESOLUTION 3 // [EnergyRes] Maximum number of decimals (0 - 5) showing energy usage in kWh -//#define USE_MMHG // Use mmHg instead of hPa /*********************************************************************************************\ * END OF SECTION 1 diff --git a/sonoff/settings.h b/sonoff/settings.h index 4af58db81d26..677a02bf366c 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -48,8 +48,8 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t not_power_linked : 1; // bit 20 (v5.11.1f) uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i) uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f) - uint32_t mqtt_serial_raw : 1; // bit 23 (v6.1.1c) - uint32_t rules_once : 1; // bit 24 (v5.12.0k) - free since v5.14.0b + uint32_t mqtt_serial_raw : 1; // bit 23 (v6.1.1c) // Was rules_enabled until 5.14.0b + uint32_t pressure_conversion : 1; // bit 24 (v6.3.0.2) // Was rules_once until 5.14.0b uint32_t knx_enabled : 1; // bit 25 (v5.12.0l) KNX uint32_t device_index_enable : 1; // bit 26 (v5.13.1a) uint32_t knx_enable_enhancement : 1; // bit 27 (v5.14.0a) KNX diff --git a/sonoff/settings.ino b/sonoff/settings.ino index fc3bf88873e9..072cabf2fee9 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -563,14 +563,15 @@ void SettingsDefaultSet2() // Sensor Settings.flag.temperature_conversion = TEMP_CONVERSION; + Settings.flag.pressure_conversion = PRESSURE_CONVERSION; Settings.flag2.pressure_resolution = PRESSURE_RESOLUTION; Settings.flag2.humidity_resolution = HUMIDITY_RESOLUTION; Settings.flag2.temperature_resolution = TEMP_RESOLUTION; // Settings.altitude = 0; // Rules -// Settings.flag.rules_enabled = 0; -// Settings.flag.rules_once = 0; +// Settings.rule_enabled = 0; +// Settings.rule_once = 0; // for (byte i = 1; i < MAX_RULE_SETS; i++) { Settings.rules[i][0] = '\0'; } // Home Assistant @@ -804,8 +805,8 @@ void SettingsDelta() } if (Settings.version < 0x050E0002) { for (byte i = 1; i < MAX_RULE_SETS; i++) { Settings.rules[i][0] = '\0'; } - Settings.rule_enabled = Settings.flag.mqtt_serial_raw; - Settings.rule_once = Settings.flag.rules_once; + Settings.rule_enabled = Settings.flag.mqtt_serial_raw; // Was rules_enabled until 5.14.0b + Settings.rule_once = Settings.flag.pressure_conversion; // Was rules_once until 5.14.0b } if (Settings.version < 0x06000000) { Settings.cfg_size = sizeof(SYSCFG); @@ -826,8 +827,8 @@ void SettingsDelta() } } if (Settings.version < 0x06000003) { - Settings.flag.mqtt_serial_raw = 0; - Settings.flag.rules_once = 0; + Settings.flag.mqtt_serial_raw = 0; // Was rules_enabled until 5.14.0b + Settings.flag.pressure_conversion = 0; // Was rules_once until 5.14.0b Settings.flag3.data = 0; } if (Settings.version < 0x06010103) { diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index dd84fbc47cf2..97d03f218a50 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1613,6 +1613,9 @@ boolean MqttShowSensor() } XsnsCall(FUNC_JSON_APPEND); boolean json_data_available = (strlen(mqtt_data) - json_data_start); + if (strstr_P(mqtt_data, PSTR(D_JSON_PRESSURE))) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_PRESSURE_UNIT "\":\"%s\""), mqtt_data, PressureUnit().c_str()); + } if (strstr_P(mqtt_data, PSTR(D_JSON_TEMPERATURE))) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), mqtt_data, TempUnit()); } diff --git a/sonoff/support.ino b/sonoff/support.ino index ef16b0bbca0c..c2469627c64d 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -475,16 +475,21 @@ char TempUnit() return (Settings.flag.temperature_conversion) ? 'F' : 'C'; } -float ConvertPress(float p) +float ConvertPressure(float p) { float result = p; - if (!isnan(p)) { + if (!isnan(p) && Settings.flag.pressure_conversion) { result = p * 0.75006375541921; // mmHg } return result; } +String PressureUnit() +{ + return (Settings.flag.pressure_conversion) ? String(D_UNIT_MILLIMETER_MERCURY) : String(D_UNIT_PRESSURE); +} + void SetGlobalValues(float temperature, float humidity) { global_update = uptime; diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index 6a77c2fd1405..36070578a0eb 100755 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -49,8 +49,6 @@ struct BMPSTRUCT { char bmp_name[7]; // Sensor name - "BMPXXX" uint8_t bmp_type = 0; uint8_t bmp_model = 0; - - uint8_t bmp_valid = 0; #ifdef USE_BME680 uint8_t bme680_state = 0; float bmp_gas_resistance = 0.0; @@ -473,17 +471,8 @@ void BmpRead() break; #endif // USE_BME680 } - if (bmp_sensors[bmp_idx].bmp_temperature != 0.0) { - bmp_sensors[bmp_idx].bmp_temperature = ConvertTemp(bmp_sensors[bmp_idx].bmp_temperature); - } -#ifdef USE_MMHG - if (bmp_sensors[bmp_idx].bmp_pressure != 0.0) { - bmp_sensors[bmp_idx].bmp_pressure = ConvertPress(bmp_sensors[bmp_idx].bmp_pressure); - } -#endif // USE_MMHG } - - SetGlobalValues(bmp_sensors[0].bmp_temperature, bmp_sensors[0].bmp_humidity); + SetGlobalValues(ConvertTemp(bmp_sensors[0].bmp_temperature), bmp_sensors[0].bmp_humidity); } void BmpEverySecond() @@ -511,15 +500,18 @@ void BmpShow(boolean json) if (bmp_sensors[bmp_idx].bmp_pressure != 0.0) { bmp_sealevel = (bmp_sensors[bmp_idx].bmp_pressure / FastPrecisePow(1.0 - ((float)Settings.altitude / 44330.0), 5.255)) - 21.6; + bmp_sealevel = ConvertPressure(bmp_sealevel); } + float bmp_temperature = ConvertTemp(bmp_sensors[bmp_idx].bmp_temperature); + float bmp_pressure = ConvertPressure(bmp_sensors[bmp_idx].bmp_pressure); snprintf(name, sizeof(name), bmp_sensors[bmp_idx].bmp_name); if (bmp_count > 1) { snprintf_P(name, sizeof(name), PSTR("%s-%02X"), name, bmp_sensors[bmp_idx].bmp_address); // BMXXXX-XX } - dtostrfd(bmp_sensors[bmp_idx].bmp_temperature, Settings.flag2.temperature_resolution, temperature); - dtostrfd(bmp_sensors[bmp_idx].bmp_pressure, Settings.flag2.pressure_resolution, pressure); + dtostrfd(bmp_temperature, Settings.flag2.temperature_resolution, temperature); + dtostrfd(bmp_pressure, Settings.flag2.pressure_resolution, pressure); dtostrfd(bmp_sealevel, Settings.flag2.pressure_resolution, sea_pressure); dtostrfd(bmp_sensors[bmp_idx].bmp_humidity, Settings.flag2.humidity_resolution, humidity); #ifdef USE_BME680 @@ -563,7 +555,7 @@ void BmpShow(boolean json) #ifdef USE_KNX if (0 == tele_period) { - KnxSensor(KNX_TEMPERATURE, bmp_sensors[bmp_idx].bmp_temperature); + KnxSensor(KNX_TEMPERATURE, bmp_temperature); KnxSensor(KNX_HUMIDITY, bmp_sensors[bmp_idx].bmp_humidity); } #endif // USE_KNX @@ -574,9 +566,9 @@ void BmpShow(boolean json) if (bmp_sensors[bmp_idx].bmp_model >= 2) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_HUM, mqtt_data, name, humidity); } - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_PRESSURE, mqtt_data, name, pressure); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_PRESSURE, mqtt_data, name, pressure, PressureUnit().c_str()); if (Settings.altitude != 0) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SEAPRESSURE, mqtt_data, name, sea_pressure); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SEAPRESSURE, mqtt_data, name, sea_pressure, PressureUnit().c_str()); } #ifdef USE_BME680 if (bmp_sensors[bmp_idx].bmp_model >= 3) { diff --git a/tools/decode-status.py b/tools/decode-status.py index efa060ecde06..3fad3c5c67d5 100644 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -75,7 +75,7 @@ "Energy monitoring while powered off", "MQTT serial", "MQTT serial binary", - "Rules once mode until 5.14.0b", + "Convert pressure to mmHg", "KNX enabled", "Use Power device index on single relay devices", "KNX enhancement", @@ -87,7 +87,7 @@ "Timers enabled", "Generic ESP8285 GPIO enabled", "Add UTC time offset to JSON message", - "", + "Show hostname and IP address in GUI", "","","","", "","","","", "","","","", From 99ae0c9cab692a63e437ef38315d8aab642699f5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Nov 2018 18:00:07 +0100 Subject: [PATCH 443/798] Change wifi connection check Change wifi connection check --- sonoff/sonoff.ino | 2 +- sonoff/support.ino | 10 +++------- sonoff/xdrv_01_webserver.ino | 2 +- sonoff/xdrv_13_display.ino | 11 ++++++++--- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 97d03f218a50..7a3948382b6b 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2167,7 +2167,7 @@ void Every250mSeconds() wifi_state_flag = WIFI_RESTART; break; case 3: // Every x.75 second - if (WL_CONNECTED == WiFi.status()) { MqttCheck(); } + if (!global_state.wifi_down) { MqttCheck(); } break; } } diff --git a/sonoff/support.ino b/sonoff/support.ino index c2469627c64d..ba7ae0d6e11f 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1630,9 +1630,7 @@ int WifiState() { int state = -1; - if ((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0)) { - state = WIFI_RESTART; - } + if (!global_state.wifi_down) { state = WIFI_RESTART; } if (wifi_config_type) { state = wifi_config_type; } return state; } @@ -2209,7 +2207,7 @@ void RtcSecond() if ((ntp_sync_minute > 59) && (RtcTime.minute > 2)) ntp_sync_minute = 1; // If sync prepare for a new cycle uint8_t offset = (uptime < 30) ? RtcTime.second : (((ESP.getChipId() & 0xF) * 3) + 3) ; // First try ASAP to sync. If fails try once every 60 seconds based on chip id - if ((WL_CONNECTED == WiFi.status()) && (offset == RtcTime.second) && ((RtcTime.year < 2016) || (ntp_sync_minute == RtcTime.minute) || ntp_force_sync)) { + if (!global_state.wifi_down && (offset == RtcTime.second) && ((RtcTime.year < 2016) || (ntp_sync_minute == RtcTime.minute) || ntp_force_sync)) { ntp_time = sntp_get_current_timestamp(); if (ntp_time > 1451602800) { // Fix NTP bug in core 2.4.1/SDK 2.2.1 (returns Thu Jan 01 08:00:10 1970 after power on) ntp_force_sync = 0; @@ -2452,9 +2450,7 @@ void AddLog(byte loglevel) if (!web_log_index) web_log_index++; // Index 0 is not allowed as it is the end of char string } #endif // USE_WEBSERVER - if ((WL_CONNECTED == WiFi.status()) && (loglevel <= syslog_level)) { - Syslog(); - } + if (!global_state.wifi_down && (loglevel <= syslog_level)) { Syslog(); } } void AddLog_P(byte loglevel, const char *formatP) diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 26151092403a..8f7bcdefb0b7 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -397,7 +397,7 @@ void StopWebserver() void WifiManagerBegin() { // setup AP - if ((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0)) { + if (!global_state.wifi_down) { WiFi.mode(WIFI_AP_STA); AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION)); } else { diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index 4d6ce2e8911c..fcb9a33f8bef 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -638,7 +638,7 @@ void DisplayLogBufferInit() DisplayLogBufferAdd(buffer); snprintf_P(buffer, sizeof(buffer), PSTR(D_JSON_MAC " %s"), WiFi.macAddress().c_str()); DisplayLogBufferAdd(buffer); - if (!global_state.wifi_down && (static_cast(WiFi.localIP()) != 0)) { + if (!global_state.wifi_down) { snprintf_P(buffer, sizeof(buffer), PSTR("IP %s"), WiFi.localIP().toString().c_str()); DisplayLogBufferAdd(buffer); snprintf_P(buffer, sizeof(buffer), PSTR(D_JSON_RSSI " %d%%"), WifiGetRssiAsQuality(WiFi.RSSI())); @@ -663,7 +663,8 @@ enum SensorQuantity { JSON_CURRENT, JSON_VOLTAGE, JSON_POWERUSAGE, - JSON_CO2 }; + JSON_CO2, + JSON_FREQUENCY }; const char kSensorQuantity[] PROGMEM = D_JSON_TEMPERATURE "|" // degrees D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage @@ -676,7 +677,8 @@ const char kSensorQuantity[] PROGMEM = D_JSON_CURRENT "|" // Ampere D_JSON_VOLTAGE "|" // Volt D_JSON_POWERUSAGE "|" // Watt - D_JSON_CO2 ; // ppm + D_JSON_CO2 "|" // ppm + D_JSON_FREQUENCY ; // Hz void DisplayJsonValue(const char *topic, const char* device, const char* mkey, const char* value) { @@ -732,6 +734,9 @@ void DisplayJsonValue(const char *topic, const char* device, const char* mkey, c else if (JSON_CO2 == quantity_code) { snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); } + else if (JSON_FREQUENCY == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_HERTZ), value); + } snprintf_P(buffer, sizeof(buffer), PSTR("%s %s"), source, svalue); // snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer); From 39efb2aa5309d8116fd47172f994898bcace1060 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 4 Nov 2018 18:29:53 +0100 Subject: [PATCH 444/798] Possible fix for timer saving Possible fix for timer saving on Safari/Chrome on IOS devices(iPhone/iPAD) (#4250) --- sonoff/xdrv_09_timers.ino | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 2f8e79649bf6..73c143ae9d6d 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -647,7 +647,9 @@ const char HTTP_TIMER_STYLE[] PROGMEM = #endif ""; const char HTTP_FORM_TIMER[] PROGMEM = - "
 " D_TIMER_PARAMETERS " " + "
" + " " D_TIMER_PARAMETERS " " + "" "
" D_TIMER_ENABLE "


" "" "

" "
"; -const char HTTP_FORM_TIMER2[] PROGMEM = - "type='submit' onclick='st();this.form.submit();'"; void HandleTimerConfiguration() { @@ -710,7 +710,6 @@ void HandleTimerConfiguration() page.replace(F("299"), String(100 + (strlen(D_SUNSET) *12))); // Fix string length to keep radios centered #endif // USE_SUNRISE page += FPSTR(HTTP_FORM_END); - page.replace(F("type='submit'"), FPSTR(HTTP_FORM_TIMER2)); page += F(""); // Init elements and select first tab/button page += FPSTR(HTTP_BTN_CONF); ShowPage(page); From 98c7e467f86d22653f7a25916ad90134b3701d48 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Sun, 4 Nov 2018 22:14:05 +0100 Subject: [PATCH 445/798] Update de-DE.h Fixing some minor errors --- sonoff/language/de-DE.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index d024562a6d50..9c2f7c24e9b1 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -94,7 +94,7 @@ #define D_FALSE "falsch" #define D_FILE "Datei" #define D_FREE_MEMORY "Freier Arbeitsspeicher" -#define D_FREQUENCY "Frequency" +#define D_FREQUENCY "Frequenz" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Gruppe" @@ -174,7 +174,7 @@ #define D_UV_POWER "UV Intensität" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" -#define D_WEIGHT "Weight" +#define D_WEIGHT "Gewicht" #define D_WARMLIGHT "warm" #define D_WEB_SERVER "Web-Server" @@ -436,7 +436,7 @@ #define D_TIMEOUT_WAITING_FOR "Timeout während Warten auf" #define D_START_SIGNAL_LOW "Startausschlag niedrig" #define D_START_SIGNAL_HIGH "Startausschlag hoch" -#define D_PULSE "pulse" +#define D_PULSE "Puls" #define D_CHECKSUM_FAILURE "Checksum-Fehler" // xsns_07_sht1x.ino @@ -537,7 +537,7 @@ #define D_UNIT_HOUR "h" #define D_UNIT_INCREMENTS "inc" #define D_UNIT_KILOGRAM "kg" -#define D_UNIT_KILOMETER_PER_HOUR "km/h" // or "km/h" +#define D_UNIT_KILOMETER_PER_HOUR "km/h" #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" From b5f20dd643dd26498ed22e201d32adbaf096f677 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 4 Nov 2018 23:43:34 +0100 Subject: [PATCH 446/798] Correctly announce non RGBWW light --- sonoff/xplg_wemohue.ino | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 8bd5e529cb67..7f70fd739c42 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -461,15 +461,19 @@ const char HUE_DESCRIPTION_XML[] PROGMEM = "\r\n"; const char HUE_LIGHTS_STATUS_JSON[] PROGMEM = "{\"on\":{state}," - "\"bri\":{b}," - "\"hue\":{h}," - "\"sat\":{s}," - "\"xy\":[0.5, 0.5]," - "\"ct\":{t}," "\"alert\":\"none\"," "\"effect\":\"none\"," - "\"colormode\":\"{m}\"," - "\"reachable\":true}"; + "\"reachable\":true"; +const char HUE_LIGHTS_STATUS_JSON_DIM[] PROGMEM = + ",\"bri\":{b}"; +const char HUE_LIGHTS_STATUS_JSON_RGB[] PROGMEM = + ",\"hue\":{h}," + "\"sat\":{s}," + "\"xy\":[0.5, 0.5]"; +const char HUE_LIGHTS_STATUS_JSON_CT[] PROGMEM = + ",\"ct\":{t}"; +const char HUE_LIGHTS_STATUS_JSON_CM[] PROGMEM = + ",\"colormode\":\"{m}\""; const char HUE_LIGHTS_STATUS_JSON2[] PROGMEM = ",\"type\":\"Extended color light\"," "\"name\":\"{j1\"," @@ -576,6 +580,19 @@ void HueLightStatus1(byte device, String *response) ct = LightGetColorTemp(); } *response += FPSTR(HUE_LIGHTS_STATUS_JSON); + //The light can be dimmed + if (light_subtype >= LST_SINGLE) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_DIM); + + //The light has adjustabe color temperature + if (light_subtype == LST_COLDWARM || light_subtype == LST_RGBWC) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_CT); + + //The light has RGB + if (light_subtype >= LST_RGB) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_RGB); + + //The light supports colormode + if (light_subtype >= LST_COLDWARM) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_CM); + + *response += "}"; response->replace("{state}", (power & (1 << (device-1))) ? "true" : "false"); response->replace("{h}", String((uint16_t)(65535.0f * hue))); response->replace("{s}", String((uint8_t)(254.0f * sat))); From e9050be550e84945fb63020762a1444d188cf6dc Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Mon, 5 Nov 2018 07:13:16 +0100 Subject: [PATCH 447/798] TasmotaSerial: fix hardware-serial --- lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp index d9fc29e6fc43..42253ade6e02 100644 --- a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp +++ b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp @@ -87,7 +87,7 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fa m_rx_pin = receive_pin; m_tx_pin = transmit_pin; m_in_pos = m_out_pos = 0; - if (hardware_fallback && (((1 == m_rx_pin) && (3 == m_tx_pin)) || ((3 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (1 == m_tx_pin)))) { + if (hardware_fallback && (((3 == m_rx_pin) && (1 == m_tx_pin)) || ((3 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (1 == m_tx_pin)))) { m_hardserial = 1; } else { if (m_rx_pin > -1) { From d6983d268b9a0c173d1e54a0e26d69c601d01dbe Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Mon, 5 Nov 2018 07:34:12 +0100 Subject: [PATCH 448/798] TasmotaSerial: use Serial.swap to map UART0 to GPIO13 and GPIO15 --- lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp | 7 +++++++ lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h | 1 + 2 files changed, 8 insertions(+) diff --git a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp index 42253ade6e02..0b5db85bbb53 100644 --- a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp +++ b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp @@ -80,6 +80,7 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fa { m_valid = false; m_hardserial = 0; + m_hardswap = 0; m_stop_bits = 1; if (!((isValidGPIOpin(receive_pin)) && (isValidGPIOpin(transmit_pin) || transmit_pin == 16))) { return; @@ -89,6 +90,9 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fa m_in_pos = m_out_pos = 0; if (hardware_fallback && (((3 == m_rx_pin) && (1 == m_tx_pin)) || ((3 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (1 == m_tx_pin)))) { m_hardserial = 1; + } else if (hardware_fallback && (((13 == m_rx_pin) && (15 == m_tx_pin)) || ((13 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (15 == m_tx_pin)))) { + m_hardserial = 1; + m_hardswap = 1; } else { if (m_rx_pin > -1) { m_buffer = (uint8_t*)malloc(TM_SERIAL_BUFFER_SIZE); @@ -134,6 +138,9 @@ bool TasmotaSerial::begin(long speed, int stop_bits) { } else { Serial.begin(speed, SERIAL_8N1); } + if(m_hardswap) { + Serial.swap(); + } } else { // Use getCycleCount() loop to get as exact timing as possible m_bit_time = ESP.getCpuFreqMHz() *1000000 /speed; diff --git a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h index e40c34ee8e83..3136a8e46b8f 100644 --- a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h +++ b/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h @@ -62,6 +62,7 @@ class TasmotaSerial : public Stream { // Member variables bool m_valid; bool m_hardserial; + bool m_hardswap; bool m_high_speed; int m_rx_pin; int m_tx_pin; From cf66923e52524572bd588a216caf9fef9919c69f Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Mon, 5 Nov 2018 09:09:53 +0100 Subject: [PATCH 449/798] add/fix v6.3.0.2 config changes - upset settings: reduce to diffs --- tools/decode-config.py | 509 ++++++++++++----------------------------- 1 file changed, 147 insertions(+), 362 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index dfb7b1f7ccc4..1683a6a2f123 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -VER = '2.0.0003' +VER = '2.0.0004' """ decode-config.py - Backup/Restore Sonoff-Tasmota configuration data @@ -309,26 +309,26 @@ def passwordwrite(value): 'version': (' Date: Mon, 5 Nov 2018 10:26:06 +0100 Subject: [PATCH 450/798] 6.3.0.3 Swap Tx/Rx hardware serial 6.3.0.3 20181105 * Fix hardware serial pin configuration. To keep using hardware serial swap current Rx/Tx pin configuration only (#4280) --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff_version.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 48f133a61fe9..d5368793880d 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.3.0.2 20181101 +/* 6.3.0.3 20181105 + * Fix hardware serial pin configuration. To keep using hardware serial swap current Rx/Tx pin configuration only (#4280) + * + * 6.3.0.2 20181101 * Add minutes to commands Timezone to allow all possible world timezones * Add command SetOption24 0/1 to select pressure unit as hPa or mmHg (#4241) * diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 9e1a5d4fa908..733bad9379e5 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030002 +#define VERSION 0x06030003 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" From c9cf375c6ca0e25278043e08eee01234585d76b5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 5 Nov 2018 17:27:02 +0100 Subject: [PATCH 451/798] Add checks for GPIO selections Add more strict checks for GPIO selections --- sonoff/_changelog.ino | 1 + sonoff/sonoff.ino | 29 ++++++---- sonoff/sonoff_template.h | 50 ++++++++++++++++- sonoff/support.ino | 101 +++++++---------------------------- sonoff/xdrv_01_webserver.ino | 2 +- 5 files changed, 91 insertions(+), 92 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index d5368793880d..0750b4d0654b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.3.0.3 20181105 * Fix hardware serial pin configuration. To keep using hardware serial swap current Rx/Tx pin configuration only (#4280) + * Add more strict checks for GPIO selections * * 6.3.0.2 20181101 * Add minutes to commands Timezone to allow all possible world timezones diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 7a3948382b6b..09e029a1545d 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -869,13 +869,20 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); if ((GPIO_USER == ValidGPIO(index, cmodule.gp.io[index])) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { - for (byte i = 0; i < MAX_GPIO_PIN; i++) { - if ((GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) && (Settings.my_gp.io[i] == payload)) { - Settings.my_gp.io[i] = 0; + bool present = false; + for (byte i = 0; i < sizeof(kGpioNiceList); i++) { + uint8_t midx = pgm_read_byte(kGpioNiceList + i); + if (midx == payload) { present = true; } + } + if (present) { + for (byte i = 0; i < MAX_GPIO_PIN; i++) { + if ((GPIO_USER == ValidGPIO(i, cmodule.gp.io[i])) && (Settings.my_gp.io[i] == payload)) { + Settings.my_gp.io[i] = 0; + } } + Settings.my_gp.io[index] = payload; + restart_flag = 2; } - Settings.my_gp.io[index] = payload; - restart_flag = 2; } snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{")); for (byte i = 0; i < MAX_GPIO_PIN; i++) { @@ -895,16 +902,19 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) else if (CMND_GPIOS == command_code) { mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - for (byte i = 0; i < GPIO_SENSOR_END; i++) { - if (!GetUsedInModule(i, cmodule.gp.io)) { + uint8_t midx; + for (byte i = 0; i < sizeof(kGpioNiceList); i++) { + midx = pgm_read_byte(kGpioNiceList + i); + if (!GetUsedInModule(midx, cmodule.gp.io)) { + if (!jsflg) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_GPIOS "%d\":["), lines); } else { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data); } jsflg = 1; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, i, GetTextIndexed(stemp1, sizeof(stemp1), i, kSensorNames)); - if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == GPIO_SENSOR_END -1)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, midx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames)); + if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == sizeof(kGpioNiceList) -1)) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]}"), mqtt_data); MqttPublishPrefixTopic_P(RESULT_OR_STAT, type); jsflg = 0; @@ -912,6 +922,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } } } + mqtt_data[0] = '\0'; } else if ((CMND_PWM == command_code) && pwm_present && (index > 0) && (index <= MAX_PWMS)) { diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 036e2400d9fe..eb4d910d0a6c 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -267,7 +267,7 @@ typedef struct MYTMPLT { myio gp; } mytmplt; -const uint8_t kGpioNiceList[GPIO_SENSOR_END] PROGMEM = { +const uint8_t kGpioNiceList[] PROGMEM = { GPIO_NONE, // Not used GPIO_KEY1, // Buttons GPIO_KEY1_NP, @@ -335,48 +335,96 @@ const uint8_t kGpioNiceList[GPIO_SENSOR_END] PROGMEM = { GPIO_CNTR3_NP, GPIO_CNTR4, GPIO_CNTR4_NP, +#ifdef USE_I2C GPIO_I2C_SCL, // I2C SCL GPIO_I2C_SDA, // I2C SDA +#endif +#ifdef USE_SPI GPIO_SPI_CS, // SPI Chip Select GPIO_SPI_DC, // SPI Data Direction +#endif +#ifdef USE_DISPLAY GPIO_BACKLIGHT, // Display backlight control +#endif GPIO_DHT11, // DHT11 GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 GPIO_SI7021, // iTead SI7021 GPIO_DSB, // Single wire DS18B20 or DS18S20 +#ifdef USE_WS2812 GPIO_WS2812, // WS2812 Led string +#endif +#ifdef USE_IR_REMOTE GPIO_IRSEND, // IR remote +#ifdef USE_IR_RECEIVE GPIO_IRRECV, // IR receiver +#endif +#endif +#ifdef USE_RC_SWITCH GPIO_RFSEND, // RF transmitter GPIO_RFRECV, // RF receiver +#endif +#ifdef USE_SR04 GPIO_SR04_TRIG, // SR04 Trigger pin GPIO_SR04_ECHO, // SR04 Echo pin +#endif +#ifdef USE_TM1638 GPIO_TM16CLK, // TM1638 Clock GPIO_TM16DIO, // TM1638 Data I/O GPIO_TM16STB, // TM1638 Strobe +#endif +#ifdef USE_HX711 GPIO_HX711_SCK, // HX711 Load Cell clock GPIO_HX711_DAT, // HX711 Load Cell data +#endif +#ifdef USE_SERIAL_BRIDGE GPIO_SBR_TX, // Serial Bridge Serial interface GPIO_SBR_RX, // Serial Bridge Serial interface +#endif +#ifdef USE_MHZ19 GPIO_MHZ_TXD, // MH-Z19 Serial interface GPIO_MHZ_RXD, // MH-Z19 Serial interface +#endif +#ifdef USE_SENSEAIR GPIO_SAIR_TX, // SenseAir Serial interface GPIO_SAIR_RX, // SenseAir Serial interface +#endif +#ifdef USE_NOVA_SDS GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface +#endif +#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) GPIO_PZEM0XX_TX, // PZEM0XX Serial interface +#endif +#ifdef USE_PZEM004T GPIO_PZEM004_RX, // PZEM004T Serial interface +#endif +#ifdef USE_PZEM_AC GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface +#endif +#ifdef USE_PZEM_DC GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface +#endif +#ifdef USE_SDM120 GPIO_SDM120_TX, // SDM120 Serial interface GPIO_SDM120_RX, // SDM120 Serial interface +#endif +#ifdef USE_SDM630 GPIO_SDM630_TX, // SDM630 Serial interface GPIO_SDM630_RX, // SDM630 Serial interface +#endif +#ifdef USE_PMS5003 GPIO_PMS5003, // Plantower PMS5003 Serial interface +#endif +#ifdef USE_TX20_WIND_SENSOR GPIO_TX20_TXD_BLACK, // TX20 Transmission Pin +#endif +#ifdef USE_MP3_PLAYER GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface +#endif +#ifdef USE_TUYA_DIMMER GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX // Tuya Serial interface +#endif }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { diff --git a/sonoff/support.ino b/sonoff/support.ino index ba7ae0d6e11f..c2856a7823e5 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -646,89 +646,20 @@ boolean GetUsedInModule(byte val, uint8_t *arr) int offset = 0; if (!val) { return false; } // None -#ifndef USE_I2C - if (GPIO_I2C_SCL == val) { return true; } - if (GPIO_I2C_SDA == val) { return true; } -#endif -#ifndef USE_WS2812 - if (GPIO_WS2812 == val) { return true; } -#endif -#ifndef USE_IR_REMOTE - if (GPIO_IRSEND == val) { return true; } -#ifndef USE_IR_RECEIVE - if (GPIO_IRRECV == val) { return true; } -#endif -#endif -#ifndef USE_MHZ19 - if (GPIO_MHZ_TXD == val) { return true; } - if (GPIO_MHZ_RXD == val) { return true; } -#endif - int pzem = 3; -#ifndef USE_PZEM004T - pzem--; - if (GPIO_PZEM004_RX == val) { return true; } -#endif -#ifndef USE_PZEM_AC - pzem--; - if (GPIO_PZEM016_RX == val) { return true; } -#endif -#ifndef USE_PZEM_DC - pzem--; - if (GPIO_PZEM017_RX == val) { return true; } -#endif - if (!pzem && (GPIO_PZEM0XX_TX == val)) { return true; } + if ((val >= GPIO_KEY1) && (val < GPIO_KEY1 + MAX_KEYS)) { + offset = (GPIO_KEY1_NP - GPIO_KEY1); + } + if ((val >= GPIO_KEY1_NP) && (val < GPIO_KEY1_NP + MAX_KEYS)) { + offset = -(GPIO_KEY1_NP - GPIO_KEY1); + } -#ifndef USE_SENSEAIR - if (GPIO_SAIR_TX == val) { return true; } - if (GPIO_SAIR_RX == val) { return true; } -#endif -#ifndef USE_SPI - if (GPIO_SPI_CS == val) { return true; } - if (GPIO_SPI_DC == val) { return true; } -#endif -#ifndef USE_DISPLAY - if (GPIO_BACKLIGHT == val) { return true; } -#endif -#ifndef USE_PMS5003 - if (GPIO_PMS5003 == val) { return true; } -#endif -#ifndef USE_NOVA_SDS - if (GPIO_SDS0X1_TX == val) { return true; } - if (GPIO_SDS0X1_RX == val) { return true; } -#endif -#ifndef USE_SERIAL_BRIDGE - if (GPIO_SBR_TX == val) { return true; } - if (GPIO_SBR_RX == val) { return true; } -#endif -#ifndef USE_SR04 - if (GPIO_SR04_TRIG == val) { return true; } - if (GPIO_SR04_ECHO == val) { return true; } -#endif -#ifndef USE_SDM120 - if (GPIO_SDM120_TX == val) { return true; } - if (GPIO_SDM120_RX == val) { return true; } -#endif -#ifndef USE_SDM630 - if (GPIO_SDM630_TX == val) { return true; } - if (GPIO_SDM630_RX == val) { return true; } -#endif -#ifndef USE_TM1638 - if (GPIO_TM16CLK == val) { return true; } - if (GPIO_TM16DIO == val) { return true; } - if (GPIO_TM16STB == val) { return true; } -#endif -#ifndef USE_HX711 - if (GPIO_HX711_SCK == val) { return true; } - if (GPIO_HX711_DAT == val) { return true; } -#endif -#ifndef USE_TX20_WIND_SENSOR - if (GPIO_TX20_TXD_BLACK == val) { return true; } -#endif -#ifndef USE_RC_SWITCH - if (GPIO_RFSEND == val) { return true; } - if (GPIO_RFRECV == val) { return true; } -#endif + if ((val >= GPIO_SWT1) && (val < GPIO_SWT1 + MAX_SWITCHES)) { + offset = (GPIO_SWT1_NP - GPIO_SWT1); + } + if ((val >= GPIO_SWT1_NP) && (val < GPIO_SWT1_NP + MAX_SWITCHES)) { + offset = -(GPIO_SWT1_NP - GPIO_SWT1); + } if ((val >= GPIO_REL1) && (val < GPIO_REL1 + MAX_RELAYS)) { offset = (GPIO_REL1_INV - GPIO_REL1); @@ -750,6 +681,14 @@ boolean GetUsedInModule(byte val, uint8_t *arr) if ((val >= GPIO_PWM1_INV) && (val < GPIO_PWM1_INV + MAX_PWMS)) { offset = -(GPIO_PWM1_INV - GPIO_PWM1); } + + if ((val >= GPIO_CNTR1) && (val < GPIO_CNTR1 + MAX_COUNTERS)) { + offset = (GPIO_CNTR1_NP - GPIO_CNTR1); + } + if ((val >= GPIO_CNTR1_NP) && (val < GPIO_CNTR1_NP + MAX_COUNTERS)) { + offset = -(GPIO_CNTR1_NP - GPIO_CNTR1); + } + for (byte i = 0; i < MAX_GPIO_PIN; i++) { if (arr[i] == val) { return true; } if (arr[i] == val + offset) { return true; } diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 8f7bcdefb0b7..e7327b7696bb 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -773,7 +773,7 @@ void HandleModuleConfiguration() mytmplt cmodule; memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); - for (byte j = 0; j < GPIO_SENSOR_END; j++) { + for (byte j = 0; j < sizeof(kGpioNiceList); j++) { midx = pgm_read_byte(kGpioNiceList + j); if (!GetUsedInModule(midx, cmodule.gp.io)) { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, midx, midx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames)); From aa148f67a3193898cc6d5b2aaeb33f95754d9048 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Tue, 6 Nov 2018 05:29:30 +0100 Subject: [PATCH 452/798] tuya: fix SetOption20 for Oittm/Moes --- sonoff/xdrv_16_tuyadimmer.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index bf8213da2cf6..a1356784da17 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -207,7 +207,7 @@ void TuyaPacketProcess() } tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); - if((power) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 2)) { + if((power || bitRead(Settings.flag.data, 20)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); From 49acf4a7d31ffc001737c5d63d4557e112f3d6b5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 6 Nov 2018 11:27:19 +0100 Subject: [PATCH 453/798] Add optional hardware serial * Add optional hardware serial when GPIO13(Rx) and GPIO15(Tx) are selected removing hardware serial from GPIO01(Tx) and GPIO03(Rx) (#4288) * Bump TasmotaSerial version from 2.1.0 to 2.2.0 --- .../README.md | 0 .../examples/swsertest/swsertest.ino | 0 .../keywords.txt | 0 .../library.json | 2 +- .../library.properties | 2 +- .../src/TasmotaSerial.cpp | 8 +++++--- .../src/TasmotaSerial.h | 0 sonoff/_changelog.ino | 2 ++ 8 files changed, 9 insertions(+), 5 deletions(-) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/README.md (100%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/examples/swsertest/swsertest.ino (100%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/keywords.txt (100%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/library.json (94%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/library.properties (94%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/src/TasmotaSerial.cpp (97%) rename lib/{TasmotaSerial-2.1.0 => TasmotaSerial-2.2.0}/src/TasmotaSerial.h (100%) diff --git a/lib/TasmotaSerial-2.1.0/README.md b/lib/TasmotaSerial-2.2.0/README.md similarity index 100% rename from lib/TasmotaSerial-2.1.0/README.md rename to lib/TasmotaSerial-2.2.0/README.md diff --git a/lib/TasmotaSerial-2.1.0/examples/swsertest/swsertest.ino b/lib/TasmotaSerial-2.2.0/examples/swsertest/swsertest.ino similarity index 100% rename from lib/TasmotaSerial-2.1.0/examples/swsertest/swsertest.ino rename to lib/TasmotaSerial-2.2.0/examples/swsertest/swsertest.ino diff --git a/lib/TasmotaSerial-2.1.0/keywords.txt b/lib/TasmotaSerial-2.2.0/keywords.txt similarity index 100% rename from lib/TasmotaSerial-2.1.0/keywords.txt rename to lib/TasmotaSerial-2.2.0/keywords.txt diff --git a/lib/TasmotaSerial-2.1.0/library.json b/lib/TasmotaSerial-2.2.0/library.json similarity index 94% rename from lib/TasmotaSerial-2.1.0/library.json rename to lib/TasmotaSerial-2.2.0/library.json index 59d06ad5f7d3..23a2ddab9cf9 100644 --- a/lib/TasmotaSerial-2.1.0/library.json +++ b/lib/TasmotaSerial-2.2.0/library.json @@ -1,6 +1,6 @@ { "name": "TasmotaSerial", - "version": "2.1.0", + "version": "2.2.0", "keywords": [ "serial", "io", "TasmotaSerial" ], diff --git a/lib/TasmotaSerial-2.1.0/library.properties b/lib/TasmotaSerial-2.2.0/library.properties similarity index 94% rename from lib/TasmotaSerial-2.1.0/library.properties rename to lib/TasmotaSerial-2.2.0/library.properties index 93f4a1d39b1b..54c79e218e61 100644 --- a/lib/TasmotaSerial-2.1.0/library.properties +++ b/lib/TasmotaSerial-2.2.0/library.properties @@ -1,5 +1,5 @@ name=TasmotaSerial -version=2.1.0 +version=2.2.0 author=Theo Arends maintainer=Theo Arends sentence=Implementation of software serial with hardware serial fallback for ESP8266. diff --git a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp similarity index 97% rename from lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp rename to lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp index 0b5db85bbb53..7e6ddf72f622 100644 --- a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.cpp +++ b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp @@ -90,10 +90,12 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fa m_in_pos = m_out_pos = 0; if (hardware_fallback && (((3 == m_rx_pin) && (1 == m_tx_pin)) || ((3 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (1 == m_tx_pin)))) { m_hardserial = 1; - } else if (hardware_fallback && (((13 == m_rx_pin) && (15 == m_tx_pin)) || ((13 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (15 == m_tx_pin)))) { + } + else if (hardware_fallback && (((13 == m_rx_pin) && (15 == m_tx_pin)) || ((13 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (15 == m_tx_pin)))) { m_hardserial = 1; m_hardswap = 1; - } else { + } + else { if (m_rx_pin > -1) { m_buffer = (uint8_t*)malloc(TM_SERIAL_BUFFER_SIZE); if (m_buffer == NULL) return; @@ -138,7 +140,7 @@ bool TasmotaSerial::begin(long speed, int stop_bits) { } else { Serial.begin(speed, SERIAL_8N1); } - if(m_hardswap) { + if (m_hardswap) { Serial.swap(); } } else { diff --git a/lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h similarity index 100% rename from lib/TasmotaSerial-2.1.0/src/TasmotaSerial.h rename to lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 0750b4d0654b..58e084d343bf 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,8 @@ /* 6.3.0.3 20181105 * Fix hardware serial pin configuration. To keep using hardware serial swap current Rx/Tx pin configuration only (#4280) * Add more strict checks for GPIO selections + * Add optional hardware serial when GPIO13(Rx) and GPIO15(Tx) are selected removing hardware serial from GPIO01(Tx) and GPIO03(Rx) (#4288) + * Bump TasmotaSerial version from 2.1.0 to 2.2.0 * * 6.3.0.2 20181101 * Add minutes to commands Timezone to allow all possible world timezones From 28c1eed302544054f36585d56685dd4cd9a3c1f2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 6 Nov 2018 11:48:04 +0100 Subject: [PATCH 454/798] Fix baudrate when module changed Fix baudrate when module changed --- sonoff/sonoff.ino | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 09e029a1545d..3ef470de4cfe 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2394,10 +2394,13 @@ void GpioInit() uint8_t key_no_pullup = 0; mytmplt def_module; - if (!Settings.module || (Settings.module >= MAXMODULE)) { + if (Settings.module >= MAXMODULE) { Settings.module = MODULE; Settings.last_module = MODULE; } + if (Settings.module != Settings.last_module) { + baudrate = APP_BAUDRATE; + } memcpy_P(&def_module, &kModules[Settings.module], sizeof(def_module)); strlcpy(my_module.name, def_module.name, sizeof(my_module.name)); @@ -2646,7 +2649,7 @@ void setup() } if (RtcReboot.fast_reboot_count > 4) { // Restarted 5 times Settings.module = SONOFF_BASIC; // Reset module to Sonoff Basic - Settings.last_module = SONOFF_BASIC; +// Settings.last_module = SONOFF_BASIC; for (byte i = 0; i < MAX_GPIO_PIN; i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } From a0c38ad397e4c94fd96899bb813fccaa18ef9983 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 6 Nov 2018 11:35:06 -0300 Subject: [PATCH 455/798] Reverting PR #4279 that brokes Alexa support --- sonoff/xplg_wemohue.ino | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index 7f70fd739c42..dbdf3d27bec4 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -1,18 +1,14 @@ /* xplg_wemohue.ino - wemo and hue support for Sonoff-Tasmota - Copyright (C) 2018 Heiko Krupp and Theo Arends - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -461,19 +457,15 @@ const char HUE_DESCRIPTION_XML[] PROGMEM = "\r\n"; const char HUE_LIGHTS_STATUS_JSON[] PROGMEM = "{\"on\":{state}," + "\"bri\":{b}," + "\"hue\":{h}," + "\"sat\":{s}," + "\"xy\":[0.5, 0.5]," + "\"ct\":{t}," "\"alert\":\"none\"," "\"effect\":\"none\"," - "\"reachable\":true"; -const char HUE_LIGHTS_STATUS_JSON_DIM[] PROGMEM = - ",\"bri\":{b}"; -const char HUE_LIGHTS_STATUS_JSON_RGB[] PROGMEM = - ",\"hue\":{h}," - "\"sat\":{s}," - "\"xy\":[0.5, 0.5]"; -const char HUE_LIGHTS_STATUS_JSON_CT[] PROGMEM = - ",\"ct\":{t}"; -const char HUE_LIGHTS_STATUS_JSON_CM[] PROGMEM = - ",\"colormode\":\"{m}\""; + "\"colormode\":\"{m}\"," + "\"reachable\":true}"; const char HUE_LIGHTS_STATUS_JSON2[] PROGMEM = ",\"type\":\"Extended color light\"," "\"name\":\"{j1\"," @@ -580,19 +572,6 @@ void HueLightStatus1(byte device, String *response) ct = LightGetColorTemp(); } *response += FPSTR(HUE_LIGHTS_STATUS_JSON); - //The light can be dimmed - if (light_subtype >= LST_SINGLE) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_DIM); - - //The light has adjustabe color temperature - if (light_subtype == LST_COLDWARM || light_subtype == LST_RGBWC) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_CT); - - //The light has RGB - if (light_subtype >= LST_RGB) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_RGB); - - //The light supports colormode - if (light_subtype >= LST_COLDWARM) *response += FPSTR(HUE_LIGHTS_STATUS_JSON_CM); - - *response += "}"; response->replace("{state}", (power & (1 << (device-1))) ? "true" : "false"); response->replace("{h}", String((uint16_t)(65535.0f * hue))); response->replace("{s}", String((uint8_t)(254.0f * sat))); From 15148f290da4f616033048e6748c6a6fd20a289c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 6 Nov 2018 17:33:51 +0100 Subject: [PATCH 456/798] 6.3.0.4 Add SetSensorXX 6.3.0.4 20181106 * Add command SetSensorXX 0/1 to disable/re-enable compiled xsns_XX_sensor.ino driver --- sonoff/_changelog.ino | 5 +- sonoff/i18n.h | 1 + sonoff/settings.h | 6 +- sonoff/settings.ino | 5 + sonoff/sonoff.h | 4 + sonoff/sonoff.ino | 11 +- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 75 -------- sonoff/xdrv_03_energy.ino | 9 +- sonoff/xplg_wemohue.ino | 4 + sonoff/xsns_01_counter.ino | 4 +- sonoff/xsns_02_analog.ino | 94 +++++++++ sonoff/xsns_04_snfsc.ino | 4 +- sonoff/xsns_05_ds18b20.ino | 4 +- sonoff/xsns_05_ds18x20.ino | 5 +- sonoff/xsns_05_ds18x20_legacy.ino | 4 +- sonoff/xsns_06_dht.ino | 4 +- sonoff/xsns_07_sht1x.ino | 4 +- sonoff/xsns_08_htu21.ino | 4 +- sonoff/xsns_09_bmp.ino | 4 +- sonoff/xsns_10_bh1750.ino | 4 +- sonoff/xsns_11_veml6070.ino | 4 +- sonoff/xsns_12_ads1115.ino | 4 +- sonoff/xsns_12_ads1115_i2cdev.ino | 4 +- sonoff/xsns_13_ina219.ino | 5 +- sonoff/xsns_14_sht3x.ino | 4 +- sonoff/xsns_15_mhz19.ino | 21 +- sonoff/xsns_16_tsl2561.ino | 4 +- sonoff/xsns_17_senseair.ino | 4 +- sonoff/xsns_18_pms5003.ino | 4 +- sonoff/xsns_19_mgs.ino | 4 +- sonoff/xsns_20_novasds.ino | 6 +- sonoff/xsns_21_sgp30.ino | 4 +- sonoff/xsns_22_sr04.ino | 4 +- sonoff/xsns_23_sdm120.ino | 4 +- sonoff/xsns_24_si1145.ino | 8 +- sonoff/xsns_25_sdm630.ino | 4 +- sonoff/xsns_26_lm75ad.ino | 4 +- sonoff/xsns_27_apds9960.ino | 5 +- sonoff/xsns_28_tm1638.ino | 4 +- sonoff/xsns_29_mcp230xx.ino | 1 - sonoff/xsns_30_mpr121.ino | 12 +- sonoff/xsns_31_ccs811.ino | 4 +- sonoff/xsns_32_mpu6050.ino | 10 +- sonoff/xsns_33_ds3231.ino | 6 +- sonoff/xsns_35_tx20.ino | 4 +- sonoff/xsns_interface.ino | 305 ++++++++++++++++++++++++++++-- 47 files changed, 508 insertions(+), 192 deletions(-) create mode 100644 sonoff/xsns_02_analog.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 58e084d343bf..08b5942e8966 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.3.0.3 20181105 +/* 6.3.0.4 20181106 + * Add command SetSensorXX 0/1 to disable/re-enable compiled xsns_XX_sensor.ino driver + * + * 6.3.0.3 20181105 * Fix hardware serial pin configuration. To keep using hardware serial swap current Rx/Tx pin configuration only (#4280) * Add more strict checks for GPIO selections * Add optional hardware serial when GPIO13(Rx) and GPIO15(Tx) are selected removing hardware serial from GPIO01(Tx) and GPIO03(Rx) (#4288) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 587987c4dea7..73e1d0be2ab4 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -183,6 +183,7 @@ #define D_CMND_DRIVER "Driver" #define D_CMND_SAVEDATA "SaveData" #define D_CMND_SETOPTION "SetOption" +#define D_CMND_SETSENSOR "SetSensor" #define D_CMND_TEMPERATURE_RESOLUTION "TempRes" #define D_CMND_HUMIDITY_RESOLUTION "HumRes" #define D_CMND_PRESSURE_RESOLUTION "PressRes" diff --git a/sonoff/settings.h b/sonoff/settings.h index 677a02bf366c..032ea530d7dd 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -320,8 +320,12 @@ struct SYSCFG { uint16_t mcp230xx_int_timer; // 718 uint8_t rgbwwTable[5]; // 71A - byte free_71F[149]; // 71F + byte free_71F[109]; // 71F + uint32_t monitors; // 78C + uint32_t displays; // 790 + uint32_t drivers[4]; // 794 + uint32_t sensors[4]; // 7A4 uint32_t energy_kWhtotal_time; // 7B4 unsigned long weight_item; // 7B8 Weight of one item in gram * 10 diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 072cabf2fee9..88c6838a3194 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -635,6 +635,8 @@ void SettingsDefaultSet2() for (byte j = 0; j < 5; j++) { Settings.rgbwwTable[j] = 255; } + + memset(&Settings.monitors, 0xFF, 40); // Enable all possible monitors, displays, drivers and sensors } /********************************************************************************************/ @@ -846,6 +848,9 @@ void SettingsDelta() if (Settings.version < 0x06030002) { Settings.timezone_minutes = 0; } + if (Settings.version < 0x06030004) { + memset(&Settings.monitors, 0xFF, 40); // Enable all possible monitors, displays, drivers and sensors + } Settings.version = VERSION; SettingsSave(1); diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index a7cb1ce9a28a..a0ad03c13260 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -50,6 +50,10 @@ typedef unsigned long power_t; // Power (Relay) type #define MAX_DOMOTICZ_SNS_IDX 12 // Max number of Domoticz sensors indices #define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set #define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set +#define MAX_XNRG_DRIVERS 32 // Max number of allowed energy drivers +#define MAX_XDSP_DRIVERS 32 // Max number of allowed display drivers +#define MAX_XDRV_DRIVERS 100 // Max number of allowed driver drivers +#define MAX_XSNS_DRIVERS 100 // Max number of allowed sensor drivers #define MAX_RULE_MEMS 5 // Max number of saved vars #define MAX_RULE_SETS 3 // Max number of rule sets of size 512 characters #define MAX_RULE_SIZE 512 // Max number of characters in rules diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 3ef470de4cfe..42a541162f7f 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -81,7 +81,7 @@ enum TasmotaCommands { CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, - CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, + CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_SETSENSOR, CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE, CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER, CMND_DRIVER }; const char kTasmotaCommands[] PROGMEM = @@ -91,7 +91,7 @@ const char kTasmotaCommands[] PROGMEM = D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" - D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" + D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_SETSENSOR "|" D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER "|" D_CMND_DRIVER; @@ -777,6 +777,13 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, (2 == ptype) ? stemp1 : (1 == ptype) ? GetStateText(bitRead(Settings.flag3.data, pindex)) : GetStateText(bitRead(Settings.flag.data, pindex))); } } + else if ((CMND_SETSENSOR == command_code) && (index < MAX_XSNS_DRIVERS)) { + if ((payload >= 0) && XsnsPresent(index)) { + bitWrite(Settings.sensors[index / 32], index % 32, payload &1); + if (1 == payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str()); + } else if (CMND_TEMPERATURE_RESOLUTION == command_code) { if ((payload >= 0) && (payload <= 3)) { Settings.flag2.temperature_resolution = payload; diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 733bad9379e5..7bb3242ae368 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030003 +#define VERSION 0x06030004 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index c2856a7823e5..bbc81b1a3409 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -2221,81 +2221,6 @@ void RtcInit() TickerRtc.attach(1, RtcSecond); } -#ifndef USE_ADC_VCC -/*********************************************************************************************\ - * ADC support -\*********************************************************************************************/ - -uint16_t adc_last_value = 0; - -uint16_t AdcRead() -{ - uint16_t analog = 0; - for (byte i = 0; i < 32; i++) { - analog += analogRead(A0); - delay(1); - } - analog >>= 5; - return analog; -} - -#ifdef USE_RULES -void AdcEvery250ms() -{ - uint16_t new_value = AdcRead(); - if ((new_value < adc_last_value -10) || (new_value > adc_last_value +10)) { - adc_last_value = new_value; - uint16_t value = adc_last_value / 10; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"ANALOG\":{\"A0div10\":%d}}"), (value > 99) ? 100 : value); - XdrvRulesProcess(); - } -} -#endif // USE_RULES - -void AdcShow(boolean json) -{ - uint16_t analog = AdcRead(); - - if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"ANALOG\":{\"A0\":%d}"), mqtt_data, analog); -#ifdef USE_WEBSERVER - } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "", 0, analog); -#endif // USE_WEBSERVER - } -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XSNS_02 - -boolean Xsns02(byte function) -{ - boolean result = false; - - if (pin[GPIO_ADC0] < 99) { - switch (function) { -#ifdef USE_RULES - case FUNC_EVERY_250_MSECOND: - AdcEvery250ms(); - break; -#endif // USE_RULES - case FUNC_JSON_APPEND: - AdcShow(1); - break; -#ifdef USE_WEBSERVER - case FUNC_WEB_APPEND: - AdcShow(0); - break; -#endif // USE_WEBSERVER - } - } - return result; -} -#endif // USE_ADC_VCC - /*********************************************************************************************\ * Syslog * diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 717ff234c7dd..93bae407851c 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -22,7 +22,10 @@ * Energy \*********************************************************************************************/ -#define ENERGY_NONE 0 +#define XDRV_03 3 +#define XSNS_03 3 + +#define ENERGY_NONE 0 #define FEATURE_POWER_LIMIT true @@ -656,8 +659,6 @@ void EnergyShow(boolean json) * Interface \*********************************************************************************************/ -#define XDRV_03 - boolean Xdrv03(byte function) { boolean result = false; @@ -681,8 +682,6 @@ boolean Xdrv03(byte function) return result; } -#define XSNS_03 - boolean Xsns03(byte function) { boolean result = false; diff --git a/sonoff/xplg_wemohue.ino b/sonoff/xplg_wemohue.ino index dbdf3d27bec4..8bd5e529cb67 100644 --- a/sonoff/xplg_wemohue.ino +++ b/sonoff/xplg_wemohue.ino @@ -1,14 +1,18 @@ /* xplg_wemohue.ino - wemo and hue support for Sonoff-Tasmota + Copyright (C) 2018 Heiko Krupp and Theo Arends + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program. If not, see . */ diff --git a/sonoff/xsns_01_counter.ino b/sonoff/xsns_01_counter.ino index b5822cac75c3..0c4271f81d60 100644 --- a/sonoff/xsns_01_counter.ino +++ b/sonoff/xsns_01_counter.ino @@ -21,6 +21,8 @@ * Counter sensors (water meters, electricity meters etc.) \*********************************************************************************************/ +#define XSNS_01 1 + unsigned long last_counter_timer[MAX_COUNTERS]; // Last counter time in micro seconds void CounterUpdate(byte index) @@ -139,8 +141,6 @@ void CounterShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_01 - boolean Xsns01(byte function) { boolean result = false; diff --git a/sonoff/xsns_02_analog.ino b/sonoff/xsns_02_analog.ino new file mode 100644 index 000000000000..ce794b3a254c --- /dev/null +++ b/sonoff/xsns_02_analog.ino @@ -0,0 +1,94 @@ +/* + xsns_02_analog.ino - ESP8266 ADC support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef USE_ADC_VCC +/*********************************************************************************************\ + * ADC support +\*********************************************************************************************/ + +#define XSNS_02 2 + +uint16_t adc_last_value = 0; + +uint16_t AdcRead() +{ + uint16_t analog = 0; + for (byte i = 0; i < 32; i++) { + analog += analogRead(A0); + delay(1); + } + analog >>= 5; + return analog; +} + +#ifdef USE_RULES +void AdcEvery250ms() +{ + uint16_t new_value = AdcRead(); + if ((new_value < adc_last_value -10) || (new_value > adc_last_value +10)) { + adc_last_value = new_value; + uint16_t value = adc_last_value / 10; + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"ANALOG\":{\"A0div10\":%d}}"), (value > 99) ? 100 : value); + XdrvRulesProcess(); + } +} +#endif // USE_RULES + +void AdcShow(boolean json) +{ + uint16_t analog = AdcRead(); + + if (json) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"ANALOG\":{\"A0\":%d}"), mqtt_data, analog); +#ifdef USE_WEBSERVER + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ANALOG, mqtt_data, "", 0, analog); +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +boolean Xsns02(byte function) +{ + boolean result = false; + + if (pin[GPIO_ADC0] < 99) { + switch (function) { +#ifdef USE_RULES + case FUNC_EVERY_250_MSECOND: + AdcEvery250ms(); + break; +#endif // USE_RULES + case FUNC_JSON_APPEND: + AdcShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_APPEND: + AdcShow(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_ADC_VCC diff --git a/sonoff/xsns_04_snfsc.ino b/sonoff/xsns_04_snfsc.ino index 1628e9abf2f8..a294ad32fba0 100644 --- a/sonoff/xsns_04_snfsc.ino +++ b/sonoff/xsns_04_snfsc.ino @@ -53,6 +53,8 @@ \*********************************************************************************************/ +#define XSNS_04 4 + uint16_t sc_value[5] = { 0 }; void SonoffScSend(const char *data) @@ -152,8 +154,6 @@ void SonoffScShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_04 - boolean Xsns04(byte function) { boolean result = false; diff --git a/sonoff/xsns_05_ds18b20.ino b/sonoff/xsns_05_ds18b20.ino index fa0f4fee8fc2..1f96ba5b6717 100644 --- a/sonoff/xsns_05_ds18b20.ino +++ b/sonoff/xsns_05_ds18b20.ino @@ -22,6 +22,8 @@ * DS18B20 - Temperature - Single sensor \*********************************************************************************************/ +#define XSNS_05 5 + #define W1_SKIP_ROM 0xCC #define W1_CONVERT_TEMP 0x44 #define W1_READ_SCRATCHPAD 0xBE @@ -215,8 +217,6 @@ void Ds18b20Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_05 - boolean Xsns05(byte function) { boolean result = false; diff --git a/sonoff/xsns_05_ds18x20.ino b/sonoff/xsns_05_ds18x20.ino index 474f26e2e9c6..10625c0c899e 100644 --- a/sonoff/xsns_05_ds18x20.ino +++ b/sonoff/xsns_05_ds18x20.ino @@ -21,6 +21,9 @@ /*********************************************************************************************\ * DS18B20 - Temperature - Multiple sensors \*********************************************************************************************/ + +#define XSNS_05 5 + //#define USE_DS18x20_RECONFIGURE // When sensor is lost keep retrying or re-configure #define DS18S20_CHIPID 0x10 // +/-0.5C 9-bit @@ -464,8 +467,6 @@ void Ds18x20Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_05 - boolean Xsns05(byte function) { boolean result = false; diff --git a/sonoff/xsns_05_ds18x20_legacy.ino b/sonoff/xsns_05_ds18x20_legacy.ino index 03754bbe156e..38527843297c 100644 --- a/sonoff/xsns_05_ds18x20_legacy.ino +++ b/sonoff/xsns_05_ds18x20_legacy.ino @@ -22,6 +22,8 @@ * DS18B20 - Temperature \*********************************************************************************************/ +#define XSNS_05 5 + #define DS18S20_CHIPID 0x10 #define DS18B20_CHIPID 0x28 #define MAX31850_CHIPID 0x3B @@ -218,8 +220,6 @@ void Ds18x20Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_05 - boolean Xsns05(byte function) { boolean result = false; diff --git a/sonoff/xsns_06_dht.ino b/sonoff/xsns_06_dht.ino index 048337d25410..1434b4f47da7 100644 --- a/sonoff/xsns_06_dht.ino +++ b/sonoff/xsns_06_dht.ino @@ -26,6 +26,8 @@ * Source: Adafruit Industries https://github.com/adafruit/DHT-sensor-library \*********************************************************************************************/ +#define XSNS_06 6 + #define DHT_MAX_SENSORS 3 #define DHT_MAX_RETRY 8 @@ -238,8 +240,6 @@ void DhtShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_06 - boolean Xsns06(byte function) { boolean result = false; diff --git a/sonoff/xsns_07_sht1x.ino b/sonoff/xsns_07_sht1x.ino index 8771dab7fd0f..f636a8cf3a1a 100644 --- a/sonoff/xsns_07_sht1x.ino +++ b/sonoff/xsns_07_sht1x.ino @@ -28,6 +28,8 @@ * I2C Address: None \*********************************************************************************************/ +#define XSNS_07 7 + enum { SHT1X_CMD_MEASURE_TEMP = B00000011, SHT1X_CMD_MEASURE_RH = B00000101, @@ -218,8 +220,6 @@ void ShtShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_07 - boolean Xsns07(byte function) { boolean result = false; diff --git a/sonoff/xsns_08_htu21.ino b/sonoff/xsns_08_htu21.ino index 61266e1065dc..9a24050f0378 100644 --- a/sonoff/xsns_08_htu21.ino +++ b/sonoff/xsns_08_htu21.ino @@ -27,6 +27,8 @@ * I2C Address: 0x40 \*********************************************************************************************/ +#define XSNS_08 8 + #define HTU21_ADDR 0x40 #define SI7013_CHIPID 0x0D @@ -279,8 +281,6 @@ void HtuShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_08 - boolean Xsns08(byte function) { boolean result = false; diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index 36070578a0eb..bcc4632bd884 100755 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -27,6 +27,8 @@ * I2C Address: 0x76 or 0x77 \*********************************************************************************************/ +#define XSNS_09 9 + #define BMP_ADDR1 0x76 #define BMP_ADDR2 0x77 @@ -585,8 +587,6 @@ void BmpShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_09 - boolean Xsns09(byte function) { boolean result = false; diff --git a/sonoff/xsns_10_bh1750.ino b/sonoff/xsns_10_bh1750.ino index 1dd18d90a2ec..2cdc9bcbd70e 100644 --- a/sonoff/xsns_10_bh1750.ino +++ b/sonoff/xsns_10_bh1750.ino @@ -25,6 +25,8 @@ * I2C Address: 0x23 or 0x5C \*********************************************************************************************/ +#define XSNS_10 10 + #define BH1750_ADDR1 0x23 #define BH1750_ADDR2 0x5C @@ -114,8 +116,6 @@ void Bh1750Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_10 - boolean Xsns10(byte function) { boolean result = false; diff --git a/sonoff/xsns_11_veml6070.ino b/sonoff/xsns_11_veml6070.ino index 68d25234ad24..590f61300fff 100644 --- a/sonoff/xsns_11_veml6070.ino +++ b/sonoff/xsns_11_veml6070.ino @@ -94,6 +94,8 @@ * I2C Address: 0x38 and 0x39 \*********************************************************************************************/ +#define XSNS_11 11 + #define VEML6070_ADDR_H 0x39 // on some PCB boards the address can be changed by a solder point, #define VEML6070_ADDR_L 0x38 // to have no address conflicts with other I2C sensors and/or hardware #define VEML6070_INTEGRATION_TIME 3 // IT_4 = 500msec integration time, because the precission is 4 times higher then IT_0.5 @@ -305,8 +307,6 @@ void Veml6070Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_11 - boolean Xsns11(byte function) { boolean result = false; diff --git a/sonoff/xsns_12_ads1115.ino b/sonoff/xsns_12_ads1115.ino index bcfb6dfad747..06da4acd4ac6 100644 --- a/sonoff/xsns_12_ads1115.ino +++ b/sonoff/xsns_12_ads1115.ino @@ -40,6 +40,8 @@ * ADS1115_REG_CONFIG_PGA_0_256V // 16x gain +/- 0.256V 1 bit = 0.0078125mV \*********************************************************************************************/ +#define XSNS_12 12 + #define ADS1115_ADDRESS_ADDR_GND 0x48 // address pin low (GND) #define ADS1115_ADDRESS_ADDR_VDD 0x49 // address pin high (VCC) #define ADS1115_ADDRESS_ADDR_SDA 0x4A // address pin tied to SDA pin @@ -210,8 +212,6 @@ void Ads1115Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_12 - boolean Xsns12(byte function) { boolean result = false; diff --git a/sonoff/xsns_12_ads1115_i2cdev.ino b/sonoff/xsns_12_ads1115_i2cdev.ino index 588a37ac5c95..dcfab91c76a7 100644 --- a/sonoff/xsns_12_ads1115_i2cdev.ino +++ b/sonoff/xsns_12_ads1115_i2cdev.ino @@ -40,6 +40,8 @@ * ads.setGain(GAIN_SIXTEEN); // 16x gain +/- 0.256V 1 bit = 0.125mV 0.0078125mV \*********************************************************************************************/ +#define XSNS_12 12 + #include ADS1115 adc0; @@ -130,8 +132,6 @@ void Ads1115Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_12 - boolean Xsns12(byte function) { boolean result = false; diff --git a/sonoff/xsns_13_ina219.ino b/sonoff/xsns_13_ina219.ino index deb4d5f4f304..6f0e2c1e9d59 100644 --- a/sonoff/xsns_13_ina219.ino +++ b/sonoff/xsns_13_ina219.ino @@ -19,9 +19,6 @@ #ifdef USE_I2C #ifdef USE_INA219 - -#define XSNS_13 13 - /*********************************************************************************************\ * INA219 - Low voltage (max 32V!) Current sensor * @@ -30,6 +27,8 @@ * I2C Address: 0x40, 0x41 0x44 or 0x45 \*********************************************************************************************/ +#define XSNS_13 13 + #define INA219_ADDRESS1 (0x40) // 1000000 (A0+A1=GND) #define INA219_ADDRESS2 (0x41) // 1000000 (A0=Vcc, A1=GND) #define INA219_ADDRESS3 (0x44) // 1000000 (A0=GND, A1=Vcc) diff --git a/sonoff/xsns_14_sht3x.ino b/sonoff/xsns_14_sht3x.ino index c3c8b2f9c2e6..c9b36571b884 100755 --- a/sonoff/xsns_14_sht3x.ino +++ b/sonoff/xsns_14_sht3x.ino @@ -25,6 +25,8 @@ * I2C Address: 0x44, 0x45 or 0x70 (SHTC3) \*********************************************************************************************/ +#define XSNS_14 14 + #define SHT3X_ADDR_GND 0x44 // address pin low (GND) #define SHT3X_ADDR_VDD 0x45 // address pin high (VDD) #define SHTC3_ADDR 0x70 // address for shtc3 sensor @@ -138,8 +140,6 @@ void Sht3xShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_14 - boolean Xsns14(byte function) { boolean result = false; diff --git a/sonoff/xsns_15_mhz19.ino b/sonoff/xsns_15_mhz19.ino index 3b9945bca6aa..5b98175613f5 100644 --- a/sonoff/xsns_15_mhz19.ino +++ b/sonoff/xsns_15_mhz19.ino @@ -18,9 +18,6 @@ */ #ifdef USE_MHZ19 - -#define XSNS_15 15 - /*********************************************************************************************\ * MH-Z19 - CO2 sensor * @@ -33,6 +30,8 @@ * Select filter usage on low stability readings \*********************************************************************************************/ +#define XSNS_15 15 + enum MhzFilterOptions {MHZ19_FILTER_OFF, MHZ19_FILTER_OFF_ALLSAMPLES, MHZ19_FILTER_FAST, MHZ19_FILTER_MEDIUM, MHZ19_FILTER_SLOW}; #define MHZ19_FILTER_OPTION MHZ19_FILTER_FAST @@ -246,18 +245,14 @@ void MhzEverySecond() /*********************************************************************************************\ * Command Sensor15 + * + * 0 - (Not implemented) ABC Off + * 1 - (Not implemented) ABC On + * 2 - Manual start = ABC Off + * 3 - (Not implemented) Optional filter settings + * 9 - Reset \*********************************************************************************************/ -/* - 0 - ABC Off - 1 - ABC On - 2 - Manual start = ABC Off - - 3 - Optional filter settings - - 9 - Reset -*/ - bool MhzCommandSensor() { boolean serviced = true; diff --git a/sonoff/xsns_16_tsl2561.ino b/sonoff/xsns_16_tsl2561.ino index 61308aa206c5..8f2884c25037 100644 --- a/sonoff/xsns_16_tsl2561.ino +++ b/sonoff/xsns_16_tsl2561.ino @@ -27,6 +27,8 @@ * I2C Addresses: 0x29 (low), 0x39 (float) or 0x49 (high) \*********************************************************************************************/ +#define XSNS_16 16 + #include Tsl2561 Tsl(Wire); @@ -118,8 +120,6 @@ void Tsl2561Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_16 - boolean Xsns16(byte function) { boolean result = false; diff --git a/sonoff/xsns_17_senseair.ino b/sonoff/xsns_17_senseair.ino index a810a0e27c13..7a2060dd9809 100644 --- a/sonoff/xsns_17_senseair.ino +++ b/sonoff/xsns_17_senseair.ino @@ -26,6 +26,8 @@ * Hardware Serial will be selected if GPIO1 = [SAir Rx] and GPIO3 = [SAir Tx] \*********************************************************************************************/ +#define XSNS_17 17 + #define SENSEAIR_MODBUS_SPEED 9600 #define SENSEAIR_DEVICE_ADDRESS 0xFE // Any address #define SENSEAIR_READ_REGISTER 0x04 // Command Read @@ -175,8 +177,6 @@ void SenseairShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_17 - boolean Xsns17(byte function) { boolean result = false; diff --git a/sonoff/xsns_18_pms5003.ino b/sonoff/xsns_18_pms5003.ino index fb2aca0fbc39..ec605cf467a8 100644 --- a/sonoff/xsns_18_pms5003.ino +++ b/sonoff/xsns_18_pms5003.ino @@ -25,6 +25,8 @@ * Hardware Serial will be selected if GPIO3 = [PMS5003] \*********************************************************************************************/ +#define XSNS_18 18 + #include TasmotaSerial *PmsSerial; @@ -156,8 +158,6 @@ void PmsShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_18 - boolean Xsns18(byte function) { boolean result = false; diff --git a/sonoff/xsns_19_mgs.ino b/sonoff/xsns_19_mgs.ino index f27b734fd790..75fbea5b83f5 100644 --- a/sonoff/xsns_19_mgs.ino +++ b/sonoff/xsns_19_mgs.ino @@ -26,6 +26,8 @@ * https://github.com/Seeed-Studio/Mutichannel_Gas_Sensor.git \*********************************************************************************************/ +#define XSNS_19 19 + #ifndef MGS_SENSOR_ADDR #define MGS_SENSOR_ADDR 0x04 // Default Mutichannel Gas sensor i2c address #endif @@ -89,8 +91,6 @@ void MGSShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_19 - boolean Xsns19(byte function) { boolean result = false; diff --git a/sonoff/xsns_20_novasds.ino b/sonoff/xsns_20_novasds.ino index 815041cabad4..8a584571c819 100644 --- a/sonoff/xsns_20_novasds.ino +++ b/sonoff/xsns_20_novasds.ino @@ -25,10 +25,12 @@ * Hardware Serial will be selected if GPIO3 = [SDS0X01] \*********************************************************************************************/ +#define XSNS_20 20 + #include #ifndef WORKING_PERIOD - #define WORKING_PERIOD 5 +#define WORKING_PERIOD 5 #endif TasmotaSerial *NovaSdsSerial; @@ -169,8 +171,6 @@ void NovaSdsShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_20 - boolean Xsns20(byte function) { boolean result = false; diff --git a/sonoff/xsns_21_sgp30.ino b/sonoff/xsns_21_sgp30.ino index 5fef47bfdbd2..ff6cbb749fa7 100644 --- a/sonoff/xsns_21_sgp30.ino +++ b/sonoff/xsns_21_sgp30.ino @@ -27,6 +27,8 @@ * I2C Address: 0x58 \*********************************************************************************************/ +#define XSNS_21 21 + #include "Adafruit_SGP30.h" Adafruit_SGP30 sgp; @@ -88,8 +90,6 @@ void Sgp30Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_21 - boolean Xsns21(byte function) { boolean result = false; diff --git a/sonoff/xsns_22_sr04.ino b/sonoff/xsns_22_sr04.ino index 775ea93c93cf..9d447b3f3193 100644 --- a/sonoff/xsns_22_sr04.ino +++ b/sonoff/xsns_22_sr04.ino @@ -26,6 +26,8 @@ * - https://www.dfrobot.com/wiki/index.php/Weather-proof_Ultrasonic_Sensor_SKU_:_SEN0207 \*********************************************************************************************/ +#define XSNS_22 22 + uint8_t sr04_echo_pin = 0; uint8_t sr04_trig_pin = 0; @@ -146,8 +148,6 @@ void Sr04Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_22 - boolean Xsns22(byte function) { boolean result = false; diff --git a/sonoff/xsns_23_sdm120.ino b/sonoff/xsns_23_sdm120.ino index e5cc644188cc..5c2dfa6301a6 100644 --- a/sonoff/xsns_23_sdm120.ino +++ b/sonoff/xsns_23_sdm120.ino @@ -25,6 +25,8 @@ * Based on: https://github.com/reaper7/SDM_Energy_Meter \*********************************************************************************************/ +#define XSNS_23 23 + #include TasmotaSerial *SDM120Serial; @@ -270,8 +272,6 @@ void SDM120Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_23 - boolean Xsns23(byte function) { boolean result = false; diff --git a/sonoff/xsns_24_si1145.ino b/sonoff/xsns_24_si1145.ino index 95ad930afedc..d84eef62fe03 100644 --- a/sonoff/xsns_24_si1145.ino +++ b/sonoff/xsns_24_si1145.ino @@ -27,9 +27,7 @@ * I2C Addresses: 0x60 \*********************************************************************************************/ -uint8_t si1145_type = 0; - -/********************************************************************************************/ +#define XSNS_24 24 #define SI114X_ADDR 0X60 // @@ -184,6 +182,8 @@ uint8_t si1145_type = 0; #define SI114X_IRQEN_PS2 0x08 #define SI114X_IRQEN_PS3 0x10 +uint8_t si1145_type = 0; + /********************************************************************************************/ uint8_t Si1145ReadByte(uint8_t reg) @@ -349,8 +349,6 @@ void Si1145Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_24 - boolean Xsns24(byte function) { boolean result = false; diff --git a/sonoff/xsns_25_sdm630.ino b/sonoff/xsns_25_sdm630.ino index c3513fd42159..8c5e556fc81f 100644 --- a/sonoff/xsns_25_sdm630.ino +++ b/sonoff/xsns_25_sdm630.ino @@ -25,6 +25,8 @@ * Based on: https://github.com/reaper7/SDM_Energy_Meter \*********************************************************************************************/ +#define XSNS_25 25 + #include TasmotaSerial *SDM630Serial; @@ -325,8 +327,6 @@ void SDM630Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_25 - boolean Xsns25(byte function) { boolean result = false; diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino index 1fd0f444861e..ba2f39b16fba 100644 --- a/sonoff/xsns_26_lm75ad.ino +++ b/sonoff/xsns_26_lm75ad.ino @@ -28,6 +28,8 @@ * I2C Address: 0x48 - 0x4F \*********************************************************************************************/ +#define XSNS_26 26 + #define LM75AD_ADDRESS1 0x48 #define LM75AD_ADDRESS2 0x49 #define LM75AD_ADDRESS3 0x4A @@ -101,8 +103,6 @@ void LM75ADShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_26 - boolean Xsns26(byte function) { boolean result = false; diff --git a/sonoff/xsns_27_apds9960.ino b/sonoff/xsns_27_apds9960.ino index d2e5dbc8b9c5..1b99e4304ed0 100644 --- a/sonoff/xsns_27_apds9960.ino +++ b/sonoff/xsns_27_apds9960.ino @@ -27,9 +27,6 @@ #ifdef USE_I2C #ifdef USE_APDS9960 - -#define XSNS_27 27 - /*********************************************************************************************\ * APDS9960 - Digital Proximity Ambient Light RGB and Gesture Sensor * @@ -39,6 +36,8 @@ * I2C Address: 0x39 \*********************************************************************************************/ +#define XSNS_27 27 + #if defined(USE_SHT) || defined(USE_VEML6070) || defined(USE_TSL2561) #warning **** Turned off conflicting drivers SHT and VEML6070 **** #ifdef USE_SHT diff --git a/sonoff/xsns_28_tm1638.ino b/sonoff/xsns_28_tm1638.ino index a81344880609..7dd62d2b56b7 100644 --- a/sonoff/xsns_28_tm1638.ino +++ b/sonoff/xsns_28_tm1638.ino @@ -24,6 +24,8 @@ * Uses GPIO TM16 DIO, TM16 CLK and TM16 STB \*********************************************************************************************/ +#define XSNS_28 28 + #define TM1638_COLOR_NONE 0 #define TM1638_COLOR_RED 1 #define TM1638_COLOR_GREEN 2 @@ -196,8 +198,6 @@ void TmShow(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_28 - boolean Xsns28(byte function) { boolean result = false; diff --git a/sonoff/xsns_29_mcp230xx.ino b/sonoff/xsns_29_mcp230xx.ino index 9dbaf406a257..867fa54ecef9 100644 --- a/sonoff/xsns_29_mcp230xx.ino +++ b/sonoff/xsns_29_mcp230xx.ino @@ -19,7 +19,6 @@ #ifdef USE_I2C #ifdef USE_MCP230xx - /*********************************************************************************************\ MCP23008/17 - I2C GPIO EXPANDER diff --git a/sonoff/xsns_30_mpr121.ino b/sonoff/xsns_30_mpr121.ino index 86191c0793c9..4021247a61e3 100644 --- a/sonoff/xsns_30_mpr121.ino +++ b/sonoff/xsns_30_mpr121.ino @@ -43,6 +43,12 @@ #ifdef USE_I2C #ifdef USE_MPR121 +/** + * @ingroup group1 + * Assign Tasmota sensor model ID + */ +#define XSNS_30 30 + /** @defgroup group1 MPR121 * MPR121 preprocessor directives * @{ @@ -384,12 +390,6 @@ void Mpr121Show(struct mpr121 *pS, byte function) * Interface \*********************************************************************************************/ -/** - * @ingroup group1 - * Assign Tasmota sensor model ID - */ -#define XSNS_30 - /** * The function Xsns30() interfaces Tasmota with the driver. * diff --git a/sonoff/xsns_31_ccs811.ino b/sonoff/xsns_31_ccs811.ino index d57c9cb06e37..93bda1a4f03b 100644 --- a/sonoff/xsns_31_ccs811.ino +++ b/sonoff/xsns_31_ccs811.ino @@ -27,6 +27,8 @@ * I2C Address: 0x5A assumes ADDR connected to Gnd, Wake also must be grounded \*********************************************************************************************/ +#define XSNS_31 31 + #include "Adafruit_CCS811.h" Adafruit_CCS811 ccs; @@ -101,8 +103,6 @@ void CCS811Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_31 - boolean Xsns31(byte function) { boolean result = false; diff --git a/sonoff/xsns_32_mpu6050.ino b/sonoff/xsns_32_mpu6050.ino index 58ac705a3de4..c415497753d3 100644 --- a/sonoff/xsns_32_mpu6050.ino +++ b/sonoff/xsns_32_mpu6050.ino @@ -1,5 +1,5 @@ /* - xsns_32_MPU_6050.ino - MPU_6050 gyroscope and temperature sensor support for Sonoff-Tasmota + xsns_32_mpu6050.ino - MPU6050 gyroscope and temperature sensor support for Sonoff-Tasmota Copyright (C) 2018 Oliver Welter @@ -20,14 +20,16 @@ #ifdef USE_I2C #ifdef USE_MPU6050 /*********************************************************************************************\ - * MPU_6050 3 axis gyroscope and temperature sensor + * MPU6050 3 axis gyroscope and temperature sensor * * Source: Oliver Welter, with special thanks to Jeff Rowberg * * I2C Address: 0x68 or 0x69 with AD0 HIGH \*********************************************************************************************/ -#define D_SENSOR_MPU6050 "MPU6050" +#define XSNS_32 32 + +#define D_SENSOR_MPU6050 "MPU6050" #define MPU_6050_ADDR_AD0_LOW 0x68 #define MPU_6050_ADDR_AD0_HIGH 0x69 @@ -173,8 +175,6 @@ void MPU_6050Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_32 - boolean Xsns32(byte function) { boolean result = false; diff --git a/sonoff/xsns_33_ds3231.ino b/sonoff/xsns_33_ds3231.ino index df18c73db13d..bc5c4ba3b022 100644 --- a/sonoff/xsns_33_ds3231.ino +++ b/sonoff/xsns_33_ds3231.ino @@ -32,9 +32,11 @@ I2C Address: 0x68 \*********************************************************************************************/ +#define XSNS_33 33 + //DS3232 I2C Address #ifndef USE_RTC_ADDR - #define USE_RTC_ADDR 0x68 +#define USE_RTC_ADDR 0x68 #endif //DS3232 Register Addresses @@ -134,8 +136,6 @@ void SetDS3231Time (uint32_t epoch_time) { Interface \*********************************************************************************************/ -#define XSNS_33 - boolean Xsns33(byte function) { boolean result = false; diff --git a/sonoff/xsns_35_tx20.ino b/sonoff/xsns_35_tx20.ino index d87c6de25a0b..91a80ba810e0 100644 --- a/sonoff/xsns_35_tx20.ino +++ b/sonoff/xsns_35_tx20.ino @@ -26,6 +26,8 @@ * https://www.john.geek.nz/2011/07/la-crosse-tx20-anemometer-communication-protocol/ \*********************************************************************************************/ +#define XSNS_35 35 + #define TX20_BIT_TIME 1220 // microseconds #define TX20_RESET_VALUES 60 // seconds @@ -194,8 +196,6 @@ void Tx20Show(boolean json) * Interface \*********************************************************************************************/ -#define XSNS_35 - boolean Xsns35(byte function) { boolean result = false; diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index a51ab594720d..522ef7665c7d 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -260,19 +260,296 @@ boolean (* const xsns_func_ptr[])(byte) PROGMEM = { // Sensor Function Pointers const uint8_t xsns_present = sizeof(xsns_func_ptr) / sizeof(xsns_func_ptr[0]); // Number of External Sensors found uint8_t xsns_index = 0; +const uint8_t kXsnsList[] PROGMEM = { +#ifdef XSNS_01 + XSNS_01, +#endif + +#ifdef XSNS_02 + XSNS_02, +#endif + +#ifdef XSNS_03 + XSNS_03, +#endif + +#ifdef XSNS_04 + XSNS_04, +#endif + +#ifdef XSNS_05 + XSNS_05, +#endif + +#ifdef XSNS_06 + XSNS_06, +#endif + +#ifdef XSNS_07 + XSNS_07, +#endif + +#ifdef XSNS_08 + XSNS_08, +#endif + +#ifdef XSNS_09 + XSNS_09, +#endif + +#ifdef XSNS_10 + XSNS_10, +#endif + +#ifdef XSNS_11 + XSNS_11, +#endif + +#ifdef XSNS_12 + XSNS_12, +#endif + +#ifdef XSNS_13 + XSNS_13, +#endif + +#ifdef XSNS_14 + XSNS_14, +#endif + +#ifdef XSNS_15 + XSNS_15, +#endif + +#ifdef XSNS_16 + XSNS_16, +#endif + +#ifdef XSNS_17 + XSNS_17, +#endif + +#ifdef XSNS_18 + XSNS_18, +#endif + +#ifdef XSNS_19 + XSNS_19, +#endif + +#ifdef XSNS_20 + XSNS_20, +#endif + +#ifdef XSNS_21 + XSNS_21, +#endif + +#ifdef XSNS_22 + XSNS_22, +#endif + +#ifdef XSNS_23 + XSNS_23, +#endif + +#ifdef XSNS_24 + XSNS_24, +#endif + +#ifdef XSNS_25 + XSNS_25, +#endif + +#ifdef XSNS_26 + XSNS_26, +#endif + +#ifdef XSNS_27 + XSNS_27, +#endif + +#ifdef XSNS_28 + XSNS_28, +#endif + +#ifdef XSNS_29 + XSNS_29, +#endif + +#ifdef XSNS_30 + XSNS_30, +#endif + +#ifdef XSNS_31 + XSNS_31, +#endif + +#ifdef XSNS_32 + XSNS_32, +#endif + +#ifdef XSNS_33 + XSNS_33, +#endif + +#ifdef XSNS_34 + XSNS_34, +#endif + +#ifdef XSNS_35 + XSNS_35, +#endif + +#ifdef XSNS_36 + XSNS_36, +#endif + +#ifdef XSNS_37 + XSNS_37, +#endif + +#ifdef XSNS_38 + XSNS_38, +#endif + +#ifdef XSNS_39 + XSNS_39, +#endif + +#ifdef XSNS_40 + XSNS_40, +#endif + +#ifdef XSNS_41 + XSNS_41, +#endif + +#ifdef XSNS_42 + XSNS_42, +#endif + +#ifdef XSNS_43 + XSNS_43, +#endif + +#ifdef XSNS_44 + XSNS_44, +#endif + +#ifdef XSNS_45 + XSNS_45, +#endif + +#ifdef XSNS_46 + XSNS_46, +#endif + +#ifdef XSNS_47 + XSNS_47, +#endif + +#ifdef XSNS_48 + XSNS_48, +#endif + +#ifdef XSNS_49 + XSNS_49, +#endif + +#ifdef XSNS_50 + XSNS_50, +#endif + +// Optional user defined sensors in range 91 - 99 + +#ifdef XSNS_91 + XSNS_91, +#endif + +#ifdef XSNS_92 + XSNS_92, +#endif + +#ifdef XSNS_93 + XSNS_93, +#endif + +#ifdef XSNS_94 + XSNS_94, +#endif + +#ifdef XSNS_95 + XSNS_95, +#endif + +#ifdef XSNS_96 + XSNS_96, +#endif + +#ifdef XSNS_97 + XSNS_97, +#endif + +#ifdef XSNS_98 + XSNS_98, +#endif + +#ifdef XSNS_99 + XSNS_99 +#endif +}; + + /*********************************************************************************************\ * Function call to all xsns \*********************************************************************************************/ -uint8_t XsnsPresent() +boolean XsnsEnabled(byte sns_index) +{ + if (sns_index < sizeof(kXsnsList)) { + uint8_t index = pgm_read_byte(kXsnsList + sns_index); + return bitRead(Settings.sensors[index / 32], index % 32); + } + return 1; +} + +boolean XsnsPresent(byte sns_index) +{ + uint8_t index = 0; + for (byte i = 0; i < sizeof(kXsnsList); i++) { + index = pgm_read_byte(kXsnsList + i); + if (index == sns_index) { return true; } + } + return false; +} + +String XsnsGetSensors() { - return xsns_present; + char state[2] = { 0 }; + + String data = F("["); + for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { + if (i && (!(i % 10))) { data += F(","); } + if (!(i % 10)) { data += F("\""); } + state[0] = '-'; + if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } + data += String(state); + if (i && (!((i +1) % 10))) { data += F("\""); } + } + data += F("]"); + + return data; } boolean XsnsNextCall(byte Function) { xsns_index++; - if (xsns_index == xsns_present) xsns_index = 0; + if (xsns_index == xsns_present) { xsns_index = 0; } + while (!XsnsEnabled(xsns_index) && !xsns_index) { // Perform at least first sensor (counter) + xsns_index++; + if (xsns_index == xsns_present) { xsns_index = 0; } + } if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } return xsns_func_ptr[xsns_index](Function); } @@ -286,24 +563,26 @@ boolean XsnsCall(byte Function) #endif // PROFILE_XSNS_EVERY_SECOND for (byte x = 0; x < xsns_present; x++) { + if (XsnsEnabled(x)) { #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND - uint32_t profile_start_millis = millis(); + uint32_t profile_start_millis = millis(); #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } - result = xsns_func_ptr[x](Function); + if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } + result = xsns_func_ptr[x](Function); #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND - uint32_t profile_millis = millis() - profile_start_millis; - if (profile_millis) { - if (FUNC_EVERY_SECOND == Function) { - snprintf_P(log_data, sizeof(log_data), PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), uptime, Function, x, profile_millis); - AddLog(LOG_LEVEL_DEBUG); + uint32_t profile_millis = millis() - profile_start_millis; + if (profile_millis) { + if (FUNC_EVERY_SECOND == Function) { + snprintf_P(log_data, sizeof(log_data), PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), uptime, Function, x, profile_millis); + AddLog(LOG_LEVEL_DEBUG); + } } - } #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - if (result) break; + if (result) break; + } } #ifdef PROFILE_XSNS_EVERY_SECOND From 134a10d2c409eb645400fc8d4776c6a7ddb07c90 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Tue, 6 Nov 2018 20:06:25 +0100 Subject: [PATCH 457/798] tuya: Add SetOption22 to select if brightness-commands from faceplate should be ignored while powered off --- sonoff/sonoff.ino | 1 - sonoff/xdrv_16_tuyadimmer.ino | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 09e029a1545d..829879c31d0e 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -729,7 +729,6 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) case 6: // mqtt_button_retain (CMND_BUTTONRETAIN) case 7: // mqtt_switch_retain (CMND_SWITCHRETAIN) case 9: // mqtt_sensor_retain (CMND_SENSORRETAIN) - case 22: // mqtt_serial (SerialSend and SerialLog) case 23: // mqtt_serial_raw (SerialSend) case 25: // knx_enabled (Web config) case 27: // knx_enable_enhancement (Web config) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index a1356784da17..d31d22609ac4 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -207,7 +207,7 @@ void TuyaPacketProcess() } tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); - if((power || bitRead(Settings.flag.data, 20)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { + if((power || bitRead(Settings.flag.data, 22)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); From 7003435b346006638c09daa8333aeee5e1a4dfc4 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Tue, 6 Nov 2018 22:58:07 +0100 Subject: [PATCH 458/798] tuya: use SetOption54 instead of SetOption22 --- sonoff/sonoff.ino | 1 + sonoff/xdrv_16_tuyadimmer.ino | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 829879c31d0e..09e029a1545d 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -729,6 +729,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) case 6: // mqtt_button_retain (CMND_BUTTONRETAIN) case 7: // mqtt_switch_retain (CMND_SWITCHRETAIN) case 9: // mqtt_sensor_retain (CMND_SENSORRETAIN) + case 22: // mqtt_serial (SerialSend and SerialLog) case 23: // mqtt_serial_raw (SerialSend) case 25: // knx_enabled (Web config) case 27: // knx_enable_enhancement (Web config) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index d31d22609ac4..9b3630211557 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -207,7 +207,7 @@ void TuyaPacketProcess() } tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); - if((power || bitRead(Settings.flag.data, 22)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { + if((power || bitRead(Settings.flag3.data, 4)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); From a2b7bdac45de9d6c0a865648c2478412bdfd9326 Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Tue, 6 Nov 2018 23:27:49 +0100 Subject: [PATCH 459/798] tuya: name flag SetOption54 --- sonoff/settings.h | 2 +- sonoff/xdrv_16_tuyadimmer.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 677a02bf366c..6914379b895c 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -67,7 +67,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t user_esp8285_enable : 1; // bit 1 (v6.1.1.14) uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t gui_hostname_ip : 1; // bit 3 (v6.2.1.20) - uint32_t spare04 : 1; + uint32_t tuya_apply_o20 : 1; uint32_t spare05 : 1; uint32_t spare06 : 1; uint32_t spare07 : 1; diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 9b3630211557..06926acbae18 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -207,7 +207,7 @@ void TuyaPacketProcess() } tuya_new_dim = round(tuya_buffer[13] * (100. / 255.)); - if((power || bitRead(Settings.flag3.data, 4)) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { + if((power || Settings.flag3.tuya_apply_o20) && (tuya_new_dim > 0) && (abs(tuya_new_dim - Settings.light_dimmer) > 1)) { snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), tuya_new_dim ); From 9fef82736d27510b6e736d424ed034213e1aa4c3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 7 Nov 2018 10:30:03 +0100 Subject: [PATCH 460/798] Prep drivers for management Prep drivers for management --- sonoff/settings.h | 12 ++++++------ sonoff/settings.ino | 4 ++-- sonoff/sonoff.h | 4 ++-- sonoff/xdrv_01_webserver.ino | 4 ++-- sonoff/xdrv_02_mqtt.ino | 4 ++-- sonoff/xdrv_04_light.ino | 4 ++-- sonoff/xdrv_05_irremote.ino | 4 ++-- sonoff/xdrv_06_snfbridge.ino | 4 ++-- sonoff/xdrv_07_domoticz.ino | 4 ++-- sonoff/xdrv_08_serial_bridge.ino | 5 +++-- sonoff/xdrv_09_timers.ino | 4 ++-- sonoff/xdrv_10_rules.ino | 4 ++-- sonoff/xdrv_11_knx.ino | 4 ++-- sonoff/xdrv_12_home_assistant.ino | 4 ++-- sonoff/xdrv_13_display.ino | 4 ++-- sonoff/xdrv_14_mp3.ino | 4 ++-- sonoff/xdrv_16_tuyadimmer.ino | 8 ++++---- sonoff/xdrv_17_rcswitch.ino | 4 ++-- sonoff/{xdrv_99_debug.ino => xdrv_95_debug.ino} | 13 ++++++++----- sonoff/xsns_interface.ino | 6 +++--- 20 files changed, 54 insertions(+), 50 deletions(-) rename sonoff/{xdrv_99_debug.ino => xdrv_95_debug.ino} (98%) diff --git a/sonoff/settings.h b/sonoff/settings.h index c1f568ca1d5b..f185004c41f1 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -67,7 +67,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t user_esp8285_enable : 1; // bit 1 (v6.1.1.14) uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t gui_hostname_ip : 1; // bit 3 (v6.2.1.20) - uint32_t tuya_apply_o20 : 1; + uint32_t tuya_apply_o20 : 1; // bit 4 (v6.3.0.4) uint32_t spare05 : 1; uint32_t spare06 : 1; uint32_t spare07 : 1; @@ -320,12 +320,12 @@ struct SYSCFG { uint16_t mcp230xx_int_timer; // 718 uint8_t rgbwwTable[5]; // 71A - byte free_71F[109]; // 71F + byte free_71F[117]; // 71F - uint32_t monitors; // 78C - uint32_t displays; // 790 - uint32_t drivers[4]; // 794 - uint32_t sensors[4]; // 7A4 + uint32_t drivers[3]; // 794 + uint32_t monitors; // 7A0 + uint32_t sensors[3]; // 7A4 + uint32_t displays; // 7B0 uint32_t energy_kWhtotal_time; // 7B4 unsigned long weight_item; // 7B8 Weight of one item in gram * 10 diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 88c6838a3194..a38e2113e911 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -636,7 +636,7 @@ void SettingsDefaultSet2() Settings.rgbwwTable[j] = 255; } - memset(&Settings.monitors, 0xFF, 40); // Enable all possible monitors, displays, drivers and sensors + memset(&Settings.drivers, 0xFF, 32); // Enable all possible monitors, displays, drivers and sensors } /********************************************************************************************/ @@ -849,7 +849,7 @@ void SettingsDelta() Settings.timezone_minutes = 0; } if (Settings.version < 0x06030004) { - memset(&Settings.monitors, 0xFF, 40); // Enable all possible monitors, displays, drivers and sensors + memset(&Settings.drivers, 0xFF, 32); // Enable all possible monitors, displays, drivers and sensors } Settings.version = VERSION; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index a0ad03c13260..4c6abee0d185 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -52,8 +52,8 @@ typedef unsigned long power_t; // Power (Relay) type #define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set #define MAX_XNRG_DRIVERS 32 // Max number of allowed energy drivers #define MAX_XDSP_DRIVERS 32 // Max number of allowed display drivers -#define MAX_XDRV_DRIVERS 100 // Max number of allowed driver drivers -#define MAX_XSNS_DRIVERS 100 // Max number of allowed sensor drivers +#define MAX_XDRV_DRIVERS 96 // Max number of allowed driver drivers +#define MAX_XSNS_DRIVERS 96 // Max number of allowed sensor drivers #define MAX_RULE_MEMS 5 // Max number of saved vars #define MAX_RULE_SETS 3 // Max number of rule sets of size 512 characters #define MAX_RULE_SIZE 512 // Max number of characters in rules diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index e7327b7696bb..8352e9820bac 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -25,6 +25,8 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ +#define XDRV_01 1 + #define HTTP_REFRESH_TIME 2345 // milliseconds #ifdef USE_RF_FLASH @@ -2009,8 +2011,6 @@ bool WebCommand() * Interface \*********************************************************************************************/ -#define XDRV_01 - boolean Xdrv01(byte function) { boolean result = false; diff --git a/sonoff/xdrv_02_mqtt.ino b/sonoff/xdrv_02_mqtt.ino index ed24d31ed99a..40f69d93a374 100644 --- a/sonoff/xdrv_02_mqtt.ino +++ b/sonoff/xdrv_02_mqtt.ino @@ -17,6 +17,8 @@ along with this program. If not, see . */ +#define XDRV_02 2 + /*********************************************************************************************\ * Select ONE of possible MQTT library types below \*********************************************************************************************/ @@ -909,8 +911,6 @@ void MqttSaveSettings() * Interface \*********************************************************************************************/ -#define XDRV_02 - boolean Xdrv02(byte function) { boolean result = false; diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index c5ba2acc7000..9bd88e2cb2e7 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -51,6 +51,8 @@ * \*********************************************************************************************/ +#define XDRV_04 4 + #define WS2812_SCHEMES 7 // Number of additional WS2812 schemes supported by xdrv_ws2812.ino enum LightCommands { @@ -1369,8 +1371,6 @@ boolean LightCommand() * Interface \*********************************************************************************************/ -#define XDRV_04 - boolean Xdrv04(byte function) { boolean result = false; diff --git a/sonoff/xdrv_05_irremote.ino b/sonoff/xdrv_05_irremote.ino index 83cde7419731..8ab611ead39b 100644 --- a/sonoff/xdrv_05_irremote.ino +++ b/sonoff/xdrv_05_irremote.ino @@ -22,6 +22,8 @@ * IR Remote send and receive using IRremoteESP8266 library \*********************************************************************************************/ +#define XDRV_05 5 + #include // Based on IRremoteESP8266.h enum decode_type_t @@ -401,8 +403,6 @@ boolean IrSendCommand() * Interface \*********************************************************************************************/ -#define XDRV_05 - boolean Xdrv05(byte function) { boolean result = false; diff --git a/sonoff/xdrv_06_snfbridge.ino b/sonoff/xdrv_06_snfbridge.ino index 8e9201b43b83..3afdf6066e9b 100644 --- a/sonoff/xdrv_06_snfbridge.ino +++ b/sonoff/xdrv_06_snfbridge.ino @@ -21,6 +21,8 @@ Sonoff RF Bridge 433 \*********************************************************************************************/ +#define XDRV_06 6 + #define SFB_TIME_AVOID_DUPLICATE 2000 // Milliseconds enum SonoffBridgeCommands { @@ -564,8 +566,6 @@ void SonoffBridgeInit() * Interface \*********************************************************************************************/ -#define XDRV_06 - boolean Xdrv06(byte function) { boolean result = false; diff --git a/sonoff/xdrv_07_domoticz.ino b/sonoff/xdrv_07_domoticz.ino index 060301323b43..527053832f51 100644 --- a/sonoff/xdrv_07_domoticz.ino +++ b/sonoff/xdrv_07_domoticz.ino @@ -19,6 +19,8 @@ #ifdef USE_DOMOTICZ +#define XDRV_07 7 + const char DOMOTICZ_MESSAGE[] PROGMEM = "{\"idx\":%d,\"nvalue\":%d,\"svalue\":\"%s\",\"Battery\":%d,\"RSSI\":%d}"; enum DomoticzCommands { CMND_IDX, CMND_KEYIDX, CMND_SWITCHIDX, CMND_SENSORIDX, CMND_UPDATETIMER }; @@ -475,8 +477,6 @@ void DomoticzSaveSettings() * Interface \*********************************************************************************************/ -#define XDRV_07 - boolean Xdrv07(byte function) { boolean result = false; diff --git a/sonoff/xdrv_08_serial_bridge.ino b/sonoff/xdrv_08_serial_bridge.ino index 5d04c8059331..f1ac48fe7bbd 100644 --- a/sonoff/xdrv_08_serial_bridge.ino +++ b/sonoff/xdrv_08_serial_bridge.ino @@ -21,6 +21,9 @@ /*********************************************************************************************\ * Serial Bridge using Software Serial library (TasmotaSerial) \*********************************************************************************************/ + +#define XDRV_08 8 + #define SERIAL_BRIDGE_BUFFER_SIZE 130 #include @@ -127,8 +130,6 @@ boolean SerialBridgeCommand() * Interface \*********************************************************************************************/ -#define XDRV_08 - boolean Xdrv08(byte function) { boolean result = false; diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 73c143ae9d6d..5907943f65a8 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -35,6 +35,8 @@ * \*********************************************************************************************/ +#define XDRV_09 9 + enum TimerCommands { CMND_TIMER, CMND_TIMERS #ifdef USE_SUNRISE , CMND_LATITUDE, CMND_LONGITUDE @@ -743,8 +745,6 @@ void TimerSaveSettings() * Interface \*********************************************************************************************/ -#define XDRV_09 - boolean Xdrv09(byte function) { boolean result = false; diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 54fcb3f08f3c..4da4937d728d 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -63,6 +63,8 @@ * RuleTimer2 100 \*********************************************************************************************/ +#define XDRV_10 10 + #define D_CMND_RULE "Rule" #define D_CMND_RULETIMER "RuleTimer" #define D_CMND_EVENT "Event" @@ -640,8 +642,6 @@ double map_double(double x, double in_min, double in_max, double out_min, double * Interface \*********************************************************************************************/ -#define XDRV_10 - boolean Xdrv10(byte function) { boolean result = false; diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 944f1ba902e8..86a8a7fcadee 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -48,6 +48,8 @@ byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, t \*********************************************************************************************/ +#define XDRV_11 11 + #include // KNX Library address_t KNX_physs_addr; // Physical KNX address of this device @@ -1278,8 +1280,6 @@ boolean KnxCommand() * Interface \*********************************************************************************************/ -#define XDRV_11 - boolean Xdrv11(byte function) { boolean result = false; diff --git a/sonoff/xdrv_12_home_assistant.ino b/sonoff/xdrv_12_home_assistant.ino index 3c38cbc463f1..46a5c0521486 100644 --- a/sonoff/xdrv_12_home_assistant.ino +++ b/sonoff/xdrv_12_home_assistant.ino @@ -19,6 +19,8 @@ #ifdef USE_HOME_ASSISTANT +#define XDRV_12 12 + const char HASS_DISCOVER_RELAY[] PROGMEM = "{\"name\":\"%s\"," // dualr2 1 "\"command_topic\":\"%s\"," // cmnd/dualr2/POWER2 @@ -255,8 +257,6 @@ boolean HassCommand() * Interface \*********************************************************************************************/ -#define XDRV_12 - boolean Xdrv12(byte function) { boolean result = false; diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index fcb9a33f8bef..9656c14ec7d1 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -20,6 +20,8 @@ #if defined(USE_I2C) || defined(USE_SPI) #ifdef USE_DISPLAY +#define XDRV_13 13 + #define DISPLAY_MAX_DRIVERS 16 // Max number of display drivers/models supported by xdsp_interface.ino #define DISPLAY_MAX_COLS 40 // Max number of columns allowed with command DisplayCols #define DISPLAY_MAX_ROWS 32 // Max number of lines allowed with command DisplayRows @@ -1060,8 +1062,6 @@ boolean DisplayCommand() * Interface \*********************************************************************************************/ -#define XDRV_13 - boolean Xdrv13(byte function) { boolean result = false; diff --git a/sonoff/xdrv_14_mp3.ino b/sonoff/xdrv_14_mp3.ino index ae0c69fd032c..0a72b68aba2c 100644 --- a/sonoff/xdrv_14_mp3.ino +++ b/sonoff/xdrv_14_mp3.ino @@ -67,6 +67,8 @@ * https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299 \*********************************************************************************************/ +#define XDRV_14 14 + #include TasmotaSerial *MP3Player; @@ -224,8 +226,6 @@ boolean MP3PlayerCmd(void) { * Interface \*********************************************************************************************/ -#define XDRV_14 - boolean Xdrv14(byte function) { boolean result = false; diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 06926acbae18..c8bf04961b02 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -19,6 +19,8 @@ #ifdef USE_TUYA_DIMMER +#define XDRV_16 16 + #ifndef TUYA_DIMMER_ID #define TUYA_DIMMER_ID 0 #endif @@ -137,7 +139,7 @@ void LightSerialDuty(uint8_t duty) if (duty < 25) { duty = 25; // dimming acts odd below 25(10%) - this mirrors the threshold set on the faceplate itself } - + TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); snprintf_P(log_data, sizeof(log_data), PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); @@ -177,7 +179,7 @@ void TuyaPacketProcess() switch(tuya_buffer[3]) { - case TUYA_CMD_HEARTBEAT: + case TUYA_CMD_HEARTBEAT: AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Heartbeat")); if(tuya_buffer[6] == 0){ AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Detected MCU restart")); @@ -386,8 +388,6 @@ void TuyaSetWifiLed(){ * Interface \*********************************************************************************************/ -#define XDRV_16 - boolean Xdrv16(byte function) { boolean result = false; diff --git a/sonoff/xdrv_17_rcswitch.ino b/sonoff/xdrv_17_rcswitch.ino index 137bd82b1ebe..701b8c11916d 100644 --- a/sonoff/xdrv_17_rcswitch.ino +++ b/sonoff/xdrv_17_rcswitch.ino @@ -22,6 +22,8 @@ * RF send and receive using RCSwitch library https://github.com/sui77/rc-switch/ \*********************************************************************************************/ +#define XDRV_17 17 + #define D_JSON_RF_PROTOCOL "Protocol" #define D_JSON_RF_BITS "Bits" #define D_JSON_RF_DATA "Data" @@ -164,8 +166,6 @@ boolean RfSendCommand() * Interface \*********************************************************************************************/ -#define XDRV_17 - boolean Xdrv17(byte function) { boolean result = false; diff --git a/sonoff/xdrv_99_debug.ino b/sonoff/xdrv_95_debug.ino similarity index 98% rename from sonoff/xdrv_99_debug.ino rename to sonoff/xdrv_95_debug.ino index abd209b82688..18f9ad76f6e8 100644 --- a/sonoff/xdrv_99_debug.ino +++ b/sonoff/xdrv_95_debug.ino @@ -1,5 +1,5 @@ /* - xdrv_99_debug.ino - debug support for Sonoff-Tasmota + xdrv_95_debug.ino - debug support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -26,9 +26,14 @@ #endif // DEBUG_THEO #ifdef USE_DEBUG_DRIVER +/*********************************************************************************************\ + * Virtual debugging support +\*********************************************************************************************/ + +#define XDRV_95 95 #ifndef CPU_LOAD_CHECK -#define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log +#define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log #endif /*********************************************************************************************\ @@ -473,9 +478,7 @@ boolean DebugCommand() * Interface \*********************************************************************************************/ -#define XDRV_99 - -boolean Xdrv99(byte function) +boolean Xdrv95(byte function) { boolean result = false; diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index 522ef7665c7d..e858ec43e6ab 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -530,12 +530,12 @@ String XsnsGetSensors() String data = F("["); for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { - if (i && (!(i % 10))) { data += F(","); } - if (!(i % 10)) { data += F("\""); } + if (i && (!(i % 16))) { data += F(","); } + if (!(i % 16)) { data += F("\""); } state[0] = '-'; if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } data += String(state); - if (i && (!((i +1) % 10))) { data += F("\""); } + if (i && (!((i +1) % 16))) { data += F("\""); } } data += F("]"); From a4df728115fa1906abfdd265d3622221a2ab8e43 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 7 Nov 2018 11:38:24 +0100 Subject: [PATCH 461/798] Moved func ptr tables to RAM Moved function pointer tables to RAM to check performance issues --- sonoff/xdrv_interface.ino | 7 +++++++ sonoff/xsns_interface.ino | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index 69bbcbadaa6d..11699543cc35 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -17,7 +17,14 @@ along with this program. If not, see . */ +//#define XDRV_IN_ROM + +#ifdef XDRV_IN_ROM boolean (* const xdrv_func_ptr[])(byte) PROGMEM = { // Driver Function Pointers +#else +boolean (* const xdrv_func_ptr[])(byte) = { // Driver Function Pointers +#endif + #ifdef XDRV_01 &Xdrv01, #endif diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index e858ec43e6ab..adfebea2297e 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -17,7 +17,13 @@ along with this program. If not, see . */ +//#define XSNS_IN_ROM + +#ifdef XSNS_IN_ROM boolean (* const xsns_func_ptr[])(byte) PROGMEM = { // Sensor Function Pointers for simple implementation of sensors +#else +boolean (* const xsns_func_ptr[])(byte) = { // Sensor Function Pointers for simple implementation of sensors +#endif #ifdef XSNS_01 &Xsns01, #endif @@ -260,7 +266,11 @@ boolean (* const xsns_func_ptr[])(byte) PROGMEM = { // Sensor Function Pointers const uint8_t xsns_present = sizeof(xsns_func_ptr) / sizeof(xsns_func_ptr[0]); // Number of External Sensors found uint8_t xsns_index = 0; +#ifdef XSNS_IN_ROM const uint8_t kXsnsList[] PROGMEM = { +#else +const uint8_t kXsnsList[] = { +#endif #ifdef XSNS_01 XSNS_01, #endif @@ -508,7 +518,11 @@ const uint8_t kXsnsList[] PROGMEM = { boolean XsnsEnabled(byte sns_index) { if (sns_index < sizeof(kXsnsList)) { +#ifdef XSNS_IN_ROM uint8_t index = pgm_read_byte(kXsnsList + sns_index); +#else + uint8_t index = kXsnsList[sns_index]; +#endif return bitRead(Settings.sensors[index / 32], index % 32); } return 1; @@ -518,7 +532,11 @@ boolean XsnsPresent(byte sns_index) { uint8_t index = 0; for (byte i = 0; i < sizeof(kXsnsList); i++) { +#ifdef XSNS_IN_ROM index = pgm_read_byte(kXsnsList + i); +#else + index = kXsnsList[i]; +#endif if (index == sns_index) { return true; } } return false; From 44d6714b69b9979960a4b2f8e18595f299cde373 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 7 Nov 2018 11:57:28 +0100 Subject: [PATCH 462/798] Moved all func ptr tables to RAM Moved all function pointer tables to RAM to check performance issues --- sonoff/sonoff.h | 10 ++++++++++ sonoff/xdrv_interface.ino | 4 +--- sonoff/xdsp_interface.ino | 5 +++++ sonoff/xnrg_interface.ino | 5 +++++ sonoff/xsns_interface.ino | 12 ++++++------ 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 4c6abee0d185..1e27988e011b 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -20,6 +20,16 @@ #ifndef _SONOFF_H_ #define _SONOFF_H_ +/*********************************************************************************************\ + * Performance ROM (PROGMEM) vs RAM (RODATA) +\*********************************************************************************************/ + +//#define XFUNC_PTR_IN_ROM // Enable for keeping tables in ROM (PROGMEM) which seem to have access issues on some flash types + +/*********************************************************************************************\ + * Default sensor states +\*********************************************************************************************/ + #define USE_DHT // Default DHT11 sensor needs no external library #define USE_ENERGY_SENSOR // Use energy sensors (+14k code) #define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index 11699543cc35..0f0171e20ded 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -17,9 +17,7 @@ along with this program. If not, see . */ -//#define XDRV_IN_ROM - -#ifdef XDRV_IN_ROM +#ifdef XFUNC_PTR_IN_ROM boolean (* const xdrv_func_ptr[])(byte) PROGMEM = { // Driver Function Pointers #else boolean (* const xdrv_func_ptr[])(byte) = { // Driver Function Pointers diff --git a/sonoff/xdsp_interface.ino b/sonoff/xdsp_interface.ino index 8d6d5a81497b..06fbf01dcc1c 100644 --- a/sonoff/xdsp_interface.ino +++ b/sonoff/xdsp_interface.ino @@ -17,7 +17,12 @@ along with this program. If not, see . */ +#ifdef XFUNC_PTR_IN_ROM boolean (* const xdsp_func_ptr[])(byte) PROGMEM = { // Display Function Pointers +#else +boolean (* const xdsp_func_ptr[])(byte) = { // Display Function Pointers +#endif + #ifdef XDSP_01 &Xdsp01, #endif diff --git a/sonoff/xnrg_interface.ino b/sonoff/xnrg_interface.ino index 015d5d284310..cea14e47cb88 100644 --- a/sonoff/xnrg_interface.ino +++ b/sonoff/xnrg_interface.ino @@ -17,7 +17,12 @@ along with this program. If not, see . */ +#ifdef XFUNC_PTR_IN_ROM int (* const xnrg_func_ptr[])(byte) PROGMEM = { // Energy driver Function Pointers +#else +int (* const xnrg_func_ptr[])(byte) = { // Energy driver Function Pointers +#endif + #ifdef XNRG_01 &Xnrg01, #endif diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index adfebea2297e..a3cf4d7729aa 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -17,13 +17,12 @@ along with this program. If not, see . */ -//#define XSNS_IN_ROM - -#ifdef XSNS_IN_ROM +#ifdef XFUNC_PTR_IN_ROM boolean (* const xsns_func_ptr[])(byte) PROGMEM = { // Sensor Function Pointers for simple implementation of sensors #else boolean (* const xsns_func_ptr[])(byte) = { // Sensor Function Pointers for simple implementation of sensors #endif + #ifdef XSNS_01 &Xsns01, #endif @@ -266,11 +265,12 @@ boolean (* const xsns_func_ptr[])(byte) = { // Sensor Function Pointers for sim const uint8_t xsns_present = sizeof(xsns_func_ptr) / sizeof(xsns_func_ptr[0]); // Number of External Sensors found uint8_t xsns_index = 0; -#ifdef XSNS_IN_ROM +#ifdef XFUNC_PTR_IN_ROM const uint8_t kXsnsList[] PROGMEM = { #else const uint8_t kXsnsList[] = { #endif + #ifdef XSNS_01 XSNS_01, #endif @@ -518,7 +518,7 @@ const uint8_t kXsnsList[] = { boolean XsnsEnabled(byte sns_index) { if (sns_index < sizeof(kXsnsList)) { -#ifdef XSNS_IN_ROM +#ifdef XFUNC_PTR_IN_ROM uint8_t index = pgm_read_byte(kXsnsList + sns_index); #else uint8_t index = kXsnsList[sns_index]; @@ -532,7 +532,7 @@ boolean XsnsPresent(byte sns_index) { uint8_t index = 0; for (byte i = 0; i < sizeof(kXsnsList); i++) { -#ifdef XSNS_IN_ROM +#ifdef XFUNC_PTR_IN_ROM index = pgm_read_byte(kXsnsList + i); #else index = kXsnsList[i]; From 9380312e7fc9c470767efdc3f2e50ef8b17f9d01 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Wed, 7 Nov 2018 13:42:13 +0100 Subject: [PATCH 463/798] add v6.3.0.4 config changes - pack setting templates using diffs - add more '--verbose' outputs - fix wrong templates selection - fix wrong filename handling - fix --verbose filename output --- tools/decode-config.py | 478 +++++++++++++++++++++++++---------------- 1 file changed, 297 insertions(+), 181 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index 1683a6a2f123..dd0073d8dc55 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -VER = '2.0.0004' +VER = '2.0.0005' """ decode-config.py - Backup/Restore Sonoff-Tasmota configuration data @@ -155,6 +155,7 @@ def ModuleImportError(module): sys.exit(ExitCode.MODULE_NOT_FOUND) try: from datetime import datetime + import copy import struct import socket import re @@ -445,8 +446,8 @@ def passwordwrite(value): 'pulse_counter_debounce': ('= cfg[0]: - template = cfg - size = template[1] - setting = template[2] - break - except: - pass + size = setting = None + + version = GetField(decode_cfg, 'version', Setting_6_2_1['version'], raw=True) + # search setting definition top-down + for cfg in sorted(Settings, key=lambda s: s[0], reverse=True): + if version >= cfg[0]: + version = cfg[0] + size = cfg[1] + setting = cfg[2].copy() + break - return version, template, size, setting + return version, size, setting class LogType: @@ -944,6 +955,8 @@ def GetVersionStr(version): @return: version string """ + if isinstance(version, (unicode,str)): + version = int(version, 0) major = ((version>>24) & 0xff) minor = ((version>>16) & 0xff) release = ((version>> 8) & 0xff) @@ -1007,16 +1020,29 @@ def MakeFilename(filename, filetype, decode_cfg): if 'hostname' in decode_cfg: filename = filename.replace('@h', decode_cfg['hostname'] ) - filename = MakeValidFilename(filename) - ext = '' + dirname = basename = ext = '' try: - name, ext = os.path.splitext(filename) + dirname = os.path.normpath(os.path.dirname(filename)) + basename = os.path.basename(filename) + name, ext = os.path.splitext(basename) except: pass + name = MakeValidFilename(name) + if len(ext) and ext[0]=='.': ext = ext[1:] if filetype is not None and args.extension and (len(ext)<2 or all(c.isdigit() for c in ext)): - filename += '.'+filetype.lower() + ext = filetype.lower() + + if len(ext): + name_ext = name+'.'+ext + else: + name_ext = name + + try: + filename = os.path.join(dirname, name_ext) + except: + pass return filename @@ -1042,59 +1068,84 @@ def MakeUrl(host, port=80, location=''): slocation=location ) -def PullTasmotaConfig(): +def LoadTasmotaConfig(filename): """ - Pull config from Tasmota device/file + Load config from Tasmota file + + @param filename: + filename to load @return: binary config data (encrypted) or None on error """ - if args.device is not None: - # read config direct from device via http - - c = pycurl.Curl() - buffer = io.BytesIO() - c.setopt(c.WRITEDATA, buffer) - header = HTTPHeader() - c.setopt(c.HEADERFUNCTION, header.store) - c.setopt(c.FOLLOWLOCATION, True) - c.setopt(c.URL, MakeUrl(args.device, args.port, 'dl')) - if args.username is not None and args.password is not None: - c.setopt(c.HTTPAUTH, c.HTTPAUTH_BASIC) - c.setopt(c.USERPWD, args.username + ':' + args.password) - c.setopt(c.VERBOSE, False) - - responsecode = 200 - try: - c.perform() - responsecode = c.getinfo(c.RESPONSE_CODE) - response = header.response() - except Exception, e: - exit(e[0], e[1],line=inspect.getlineno(inspect.currentframe())) - finally: - c.close() - - if responsecode>=400: - exit(responsecode, 'HTTP result: {}'.format(header.response()),line=inspect.getlineno(inspect.currentframe())) - elif header.contenttype()!='application/octet-stream': - exit(ExitCode.DOWNLOAD_CONFIG_ERROR, "Device did not response properly, may be Tasmota webserver admin mode is disabled (WebServer 2)",line=inspect.getlineno(inspect.currentframe())) - encode_cfg = buffer.getvalue() + encode_cfg = None - elif args.tasmotafile is not None: - # read config from a file - if not os.path.isfile(args.tasmotafile): # check file exists - exit(ExitCode.FILE_NOT_FOUND, "File '{}' not found".format(args.tasmotafile),line=inspect.getlineno(inspect.currentframe())) - try: - tasmotafile = open(args.tasmotafile, "rb") - encode_cfg = tasmotafile.read() - tasmotafile.close() - except Exception, e: - exit(e[0], "'{}' {}".format(args.tasmotafile, e[1]),line=inspect.getlineno(inspect.currentframe())) + # read config from a file + if not os.path.isfile(filename): # check file exists + exit(ExitCode.FILE_NOT_FOUND, "File '{}' not found".format(filename),line=inspect.getlineno(inspect.currentframe())) + try: + tasmotafile = open(filename, "rb") + encode_cfg = tasmotafile.read() + tasmotafile.close() + except Exception, e: + exit(e[0], "'{}' {}".format(filename, e[1]),line=inspect.getlineno(inspect.currentframe())) + + return encode_cfg - else: - return None +def PullTasmotaConfig(host, port, username=DEFAULTS['source']['username'], password=None): + """ + Pull config from Tasmota device + + @param host: + hostname or IP of Tasmota device + @param port: + http port of Tasmota device + @param username: + optional username for Tasmota web login + @param password + optional password for Tasmota web login + + @return: + binary config data (encrypted) or None on error + """ + + encode_cfg = None + + # read config direct from device via http + c = pycurl.Curl() + buffer = io.BytesIO() + c.setopt(c.WRITEDATA, buffer) + header = HTTPHeader() + c.setopt(c.HEADERFUNCTION, header.store) + c.setopt(c.FOLLOWLOCATION, True) + c.setopt(c.URL, MakeUrl(host, port, 'dl')) + if username is not None and password is not None: + c.setopt(c.HTTPAUTH, c.HTTPAUTH_BASIC) + c.setopt(c.USERPWD, username + ':' + password) + c.setopt(c.VERBOSE, False) + + responsecode = 200 + try: + c.perform() + responsecode = c.getinfo(c.RESPONSE_CODE) + response = header.response() + except Exception, e: + exit(e[0], e[1],line=inspect.getlineno(inspect.currentframe())) + finally: + c.close() + + if responsecode >= 400: + exit(responsecode, 'HTTP result: {}'.format(header.response()),line=inspect.getlineno(inspect.currentframe())) + elif header.contenttype()!='application/octet-stream': + exit(ExitCode.DOWNLOAD_CONFIG_ERROR, "Device did not response properly, may be Tasmota webserver admin mode is disabled (WebServer 2)",line=inspect.getlineno(inspect.currentframe())) + + try: + encode_cfg = buffer.getvalue() + except: + pass + return encode_cfg @@ -1238,14 +1289,14 @@ def GetFieldDef(fielddef): , , , , , undefined items can be None """ - _format = baseaddr = datadef = convert = None + format = baseaddr = datadef = convert = None bits = bitshift = 0 if len(fielddef)==3: # def without convert tuple - _format, baseaddr, datadef = fielddef + format, baseaddr, datadef = fielddef elif len(fielddef)==4: # def with convert tuple - _format, baseaddr, datadef, convert = fielddef + format, baseaddr, datadef, convert = fielddef if isinstance(baseaddr, (list,tuple)): baseaddr, bits, bitshift = baseaddr @@ -1253,7 +1304,7 @@ def GetFieldDef(fielddef): if isinstance(datadef, int): # convert single int into list with one item datadef = [datadef] - return _format, baseaddr, bits, bitshift, datadef, convert + return format, baseaddr, bits, bitshift, datadef, convert def MakeFieldBaseAddr(baseaddr, bits, bitshift): @@ -1293,7 +1344,7 @@ def ConvertFieldValue(value, fielddef, read=True, raw=False): @return: (un)converted value """ - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) # call password functions even if raw value should be processed if callable(convert) and (convert==passwordread or convert==passwordwrite): @@ -1345,15 +1396,15 @@ def GetFieldMinMax(fielddef): 'f': (sys.float_info.min, sys.float_info.max), 'd': (sys.float_info.min, sys.float_info.max), } - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) _min = 0 _max = 0 - if _format[-1:] in minmax: - _min, _max = minmax[_format[-1:]] - elif _format[-1:] in ['s','p']: + if format[-1:] in minmax: + _min, _max = minmax[format[-1:]] + elif format[-1:] in ['s','p']: # s and p may have a prefix as length - match = re.search("\s*(\d+)", _format) + match = re.search("\s*(\d+)", format) if match: _max=int(match.group(0)) return _min,_max @@ -1371,7 +1422,7 @@ def GetFieldLength(fielddef): """ length=0 - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) if datadef is not None: # datadef contains a list @@ -1388,10 +1439,10 @@ def GetFieldLength(fielddef): length += GetFieldLength( (fielddef[0], fielddef[1], None) ) else: - if isinstance(_format, dict): - # -> iterate through _format + if isinstance(format, dict): + # -> iterate through format addr = None - setting = _format + setting = format for name in setting: _dummy1, baseaddr, bits, bitshift, _dummy2, _dummy3 = GetFieldDef(setting[name]) _len = GetFieldLength(setting[name]) @@ -1400,17 +1451,17 @@ def GetFieldLength(fielddef): length += _len else: - if _format[-1:] in ['b','B','c','?']: + if format[-1:] in ['b','B','c','?']: length=1 - elif _format[-1:] in ['h','H']: + elif format[-1:] in ['h','H']: length=2 - elif _format[-1:] in ['i','I','l','L','f']: + elif format[-1:] in ['i','I','l','L','f']: length=4 - elif _format[-1:] in ['q','Q','d']: + elif format[-1:] in ['q','Q','d']: length=8 - elif _format[-1:] in ['s','p']: + elif format[-1:] in ['s','p']: # s and p may have a prefix as length - match = re.search("\s*(\d+)", _format) + match = re.search("\s*(\d+)", format) if match: length=int(match.group(0)) @@ -1429,18 +1480,18 @@ def GetSubfieldDef(fielddef): """ subfielddef = None - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) if isinstance(datadef, list) and len(datadef)>1: if len(fielddef)<4: - subfielddef = (_format, MakeFieldBaseAddr(baseaddr, bits, bitshift), datadef[1:]) + subfielddef = (format, MakeFieldBaseAddr(baseaddr, bits, bitshift), datadef[1:]) else: - subfielddef = (_format, MakeFieldBaseAddr(baseaddr, bits, bitshift), datadef[1:], convert) + subfielddef = (format, MakeFieldBaseAddr(baseaddr, bits, bitshift), datadef[1:], convert) # single array else: if len(fielddef)<4: - subfielddef = (_format, MakeFieldBaseAddr(baseaddr, bits, bitshift), None) + subfielddef = (format, MakeFieldBaseAddr(baseaddr, bits, bitshift), None) else: - subfielddef = (_format, MakeFieldBaseAddr(baseaddr, bits, bitshift), None, convert) + subfielddef = (format, MakeFieldBaseAddr(baseaddr, bits, bitshift), None, convert) return subfielddef @@ -1472,7 +1523,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): return result # get field definition - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) # contains a integer list if isinstance(datadef, list): @@ -1486,19 +1537,19 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): offset += length # contains a dict - elif isinstance(_format, dict): + elif isinstance(format, dict): config = {} - for name in _format: # -> iterate through _format + for name in format: # -> iterate through format if name != 'raw' or args.jsonrawkeys: - config[name] = GetField(dobj, name, _format[name], raw=raw, addroffset=addroffset) + config[name] = GetField(dobj, name, format[name], raw=raw, addroffset=addroffset) result = config # a simple value - elif isinstance(_format, (str, bool, int, float, long)): + elif isinstance(format, (str, bool, int, float, long)): if GetFieldLength(fielddef) != 0: - result = struct.unpack_from(_format, dobj, baseaddr+addroffset)[0] + result = struct.unpack_from(format, dobj, baseaddr+addroffset)[0] - if not _format[-1:].lower() in ['s','p']: + if not format[-1:].lower() in ['s','p']: if bitshift>=0: result >>= bitshift else: @@ -1507,7 +1558,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): result &= (1< 127 @@ -1516,7 +1567,7 @@ def GetField(dobj, fieldname, fielddef, raw=False, addroffset=0): result = ConvertFieldValue(result, fielddef, read=True, raw=raw) else: - exit(ExitCode.INTERNAL_ERROR, "Wrong mapping format definition: '{}'".format(_format), typ=LogType.WARNING, doexit=not args.ignorewarning, line=inspect.getlineno(inspect.currentframe())) + exit(ExitCode.INTERNAL_ERROR, "Wrong mapping format definition: '{}'".format(format), typ=LogType.WARNING, doexit=not args.ignorewarning, line=inspect.getlineno(inspect.currentframe())) return result @@ -1538,7 +1589,7 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena @param restore restore mapping with the new value(s) """ - _format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) + format, baseaddr, bits, bitshift, datadef, convert = GetFieldDef(fielddef) fieldname = str(fieldname) if fieldname == 'raw' and not args.jsonrawkeys: @@ -1547,7 +1598,7 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena # do not write readonly values if isinstance(convert, (list,tuple)) and len(convert)>1 and convert[1]==None: if args.debug: - print >> sys.stderr, "SetField(): Readonly '{}' using '{}'/{}{} @{} skipped".format(fieldname, _format, datadef, bits, hex(baseaddr+addroffset)) + print >> sys.stderr, "SetField(): Readonly '{}' using '{}'/{}{} @{} skipped".format(fieldname, format, datadef, bits, hex(baseaddr+addroffset)) return dobj # contains a list @@ -1569,41 +1620,46 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena offset += length # contains a dict - elif isinstance(_format, dict): - for name in _format: # -> iterate through _format + elif isinstance(format, dict): + for name in format: # -> iterate through format if name in restore: - dobj = SetField(dobj, name, _format[name], restore[name], raw=raw, addroffset=addroffset, filename=filename) + dobj = SetField(dobj, name, format[name], restore[name], raw=raw, addroffset=addroffset, filename=filename) # a simple value - elif isinstance(_format, (str, bool, int, float, long)): + elif isinstance(format, (str, bool, int, float, long)): valid = True - err = "outside range" + err = "" + errformat = "" _min, _max = GetFieldMinMax(fielddef) - value = _value = valid = None + value = _value = None + skip = False + # simple one value - if _format[-1:] in ['c']: + if format[-1:] in ['c']: try: value = ConvertFieldValue(restore.encode(STR_ENCODING)[0], fielddef, read=False, raw=raw) except: + err = "valid range exceeding" valid = False # bool - elif _format[-1:] in ['?']: + elif format[-1:] in ['?']: try: value = ConvertFieldValue(bool(restore), fielddef, read=False, raw=raw) except: + err = "valid range exceeding" valid = False # integer - elif _format[-1:] in ['b','B','h','H','i','I','l','L','q','Q','P']: + elif format[-1:] in ['b','B','h','H','i','I','l','L','q','Q','P']: try: value = ConvertFieldValue(restore, fielddef, read=False, raw=raw) if isinstance(value, (str, unicode)): value = int(value, 0) else: value = int(value) - # bits + # bit value if bits!=0: - value = struct.unpack_from(_format, dobj, baseaddr+addroffset)[0] + value = struct.unpack_from(format, dobj, baseaddr+addroffset)[0] bitvalue = int(restore) mask = (1<mask: @@ -1611,6 +1667,7 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena _max = mask _value = bitvalue valid = False + err = "valid bit range exceeding" else: if bitshift>=0: bitvalue <<= bitshift @@ -1620,46 +1677,69 @@ def SetField(dobj, fieldname, fielddef, restore, raw=False, addroffset=0, filena mask >>= abs(bitshift) value &= (0xffffffff ^ mask) value |= bitvalue + # full size values else: _value = value except: valid = False + err = "valid range exceeding" # float - elif _format[-1:] in ['f','d']: + elif format[-1:] in ['f','d']: try: value = ConvertFieldValue(float(restore), fielddef, read=False, raw=raw) except: + err = "valid range exceeding" valid = False # string - elif _format[-1:] in ['s','p']: + elif format[-1:] in ['s','p']: try: value = ConvertFieldValue(restore.encode(STR_ENCODING), fielddef, read=False, raw=raw) - # be aware 0 byte at end of string (str must be < max, not <= max) - _max -= 1 - valid = (len(value)>=_min) and (len(value)<=_max) - err = "string exceeds max length" + err = "string length exceeding" + if value is not None: + # be aware 0 byte at end of string (str must be < max, not <= max) + _max -= 1 + valid = _min <= len(value) < _max + else: + skip = True + valid = True except: valid = False - if value is None: + if value is None and not skip: + # None is an invalid value valid = False - if valid is None: - valid = (value>=_min) and (value<=_max) + + if valid is None and not skip: + # validate against object type size + valid = _min <= value <= _max + if not valid: + err = "type range exceeding" + errformat = " [{smin},{smax}]" + if _value is None: + # copy value before possible change below _value = value + if isinstance(value, (str, unicode)): _value = "'{}'".format(_value) if valid: - if args.debug: - if bits: - sbits=" {} bits shift {}".format(bits, bitshift) - else: - sbits = "" - print >> sys.stderr, "SetField(): Set '{}' using '{}'/{}{} @{} to {}".format(fieldname, _format, datadef, sbits, hex(baseaddr+addroffset), _value) - struct.pack_into(_format, dobj, baseaddr+addroffset, value) + if not skip: + if args.debug: + if bits: + sbits=" {} bits shift {}".format(bits, bitshift) + else: + sbits = "" + print >> sys.stderr, "SetField(): Set '{}' using '{}'/{}{} @{} to {}".format(fieldname, format, datadef, sbits, hex(baseaddr+addroffset), _value) + if fieldname != 'cfg_crc': + prevvalue = struct.unpack_from(format, dobj, baseaddr+addroffset)[0] + struct.pack_into(format, dobj, baseaddr+addroffset, value) + curvalue = struct.unpack_from(format, dobj, baseaddr+addroffset)[0] + if prevvalue != curvalue and args.verbose: + message("Value for '{}' changed from {} to {}".format(fieldname, prevvalue, curvalue), typ=LogType.INFO) else: - exit(ExitCode.RESTORE_DATA_ERROR, "file '{sfile}', value for name '{sname}': {svalue} {serror} [{smin},{smax}]".format(sfile=filename, sname=fieldname, serror=err, svalue=_value, smin=_min, smax=_max), typ=LogType.WARNING, doexit=not args.ignorewarning) + sformat = "file '{sfile}' - {{'{sname}': {svalue}}} ({serror})"+errformat + exit(ExitCode.RESTORE_DATA_ERROR, sformat.format(sfile=filename, sname=fieldname, serror=err, svalue=_value, smin=_min, smax=_max), typ=LogType.WARNING, doexit=not args.ignorewarning) return dobj @@ -1679,23 +1759,26 @@ def Bin2Mapping(decode_cfg, raw=True): if isinstance(decode_cfg, bytearray): decode_cfg = str(decode_cfg) - # get binary header and template to use - version, template, size, setting = GetTemplateSetting(decode_cfg) + # get binary header to use + version, size, setting = GetTemplateSetting(decode_cfg) # if we did not found a mathching setting - if template is None: + if setting is None: exit(ExitCode.UNSUPPORTED_VERSION, "Tasmota configuration version 0x{:x} not supported".format(version),line=inspect.getlineno(inspect.currentframe())) + if 'version' in setting: + cfg_version = GetField(decode_cfg, 'version', setting['version'], raw=True) + # check size if exists if 'cfg_size' in setting: cfg_size = GetField(decode_cfg, 'cfg_size', setting['cfg_size'], raw=True) # read size should be same as definied in template if cfg_size > size: # may be processed - exit(ExitCode.DATA_SIZE_MISMATCH, "Number of bytes read does ot match - read {}, expected {} byte".format(cfg_size, template[1]), typ=LogType.ERROR,line=inspect.getlineno(inspect.currentframe())) + exit(ExitCode.DATA_SIZE_MISMATCH, "Number of bytes read does ot match - read {}, expected {} byte".format(cfg_size, size), typ=LogType.ERROR,line=inspect.getlineno(inspect.currentframe())) elif cfg_size < size: # less number of bytes can not be processed - exit(ExitCode.DATA_SIZE_MISMATCH, "Number of bytes read to small to process - read {}, expected {} byte".format(cfg_size, template[1]), typ=LogType.ERROR,line=inspect.getlineno(inspect.currentframe())) + exit(ExitCode.DATA_SIZE_MISMATCH, "Number of bytes read to small to process - read {}, expected {} byte".format(cfg_size, size), typ=LogType.ERROR,line=inspect.getlineno(inspect.currentframe())) # check crc if exists if 'cfg_crc' in setting: @@ -1719,15 +1802,13 @@ def Bin2Mapping(decode_cfg, raw=True): 'jsonrawkeys': args.jsonrawkeys, 'jsonhidepw': args.jsonhidepw, }, - 'src': { - 'crc': hex(cfg_crc), - 'size': cfg_size, + 'template': { 'version': hex(version), + 'crc': hex(cfg_crc), }, 'data': { 'crc': hex(GetSettingsCrc(decode_cfg)), 'size': len(decode_cfg), - 'version': hex(template[0]), }, 'script': { 'name': os.path.basename(__file__), @@ -1736,6 +1817,10 @@ def Bin2Mapping(decode_cfg, raw=True): 'os': (platform.machine(), platform.system(), platform.release(), platform.version(), platform.platform()), 'python': platform.python_version(), } + if 'cfg_crc' in setting: + config['header']['template'].update({'size': cfg_size}) + if 'version' in setting: + config['header']['data'].update({'version': hex(cfg_version)}) return config @@ -1759,12 +1844,12 @@ def Mapping2Bin(decode_cfg, jsonconfig, filename=""): # get binary header data to use the correct version template from device - version, template, size, setting = GetTemplateSetting(decode_cfg) + version, size, setting = GetTemplateSetting(decode_cfg) _buffer = bytearray() _buffer.extend(decode_cfg) - if template is not None: + if setting is not None: try: raw = jsonconfig['header']['format']['jsonrawvalues'] except: @@ -1828,6 +1913,8 @@ def Backup(backupfile, backupfileformat, encode_cfg, decode_cfg, configuration): if backupfileformat.lower() == FileType.BIN.lower(): fileformat = "binary" backup_filename = MakeFilename(backupfile, FileType.BIN, configuration) + if args.verbose: + message("Writing backup file '{}' ({} format)".format(backup_filename, fileformat), typ=LogType.INFO) try: backupfp = open(backup_filename, "wb") magic = BINARYFILE_MAGIC @@ -1842,6 +1929,8 @@ def Backup(backupfile, backupfileformat, encode_cfg, decode_cfg, configuration): if backupfileformat.lower() == FileType.DMP.lower(): fileformat = "Tasmota" backup_filename = MakeFilename(backupfile, FileType.DMP, configuration) + if args.verbose: + message("Writing backup file '{}' ({} format)".format(backup_filename, fileformat), typ=LogType.INFO) try: backupfp = open(backup_filename, "wb") backupfp.write(encode_cfg) @@ -1854,6 +1943,8 @@ def Backup(backupfile, backupfileformat, encode_cfg, decode_cfg, configuration): elif backupfileformat.lower() == FileType.JSON.lower(): fileformat = "JSON" backup_filename = MakeFilename(backupfile, FileType.JSON, configuration) + if args.verbose: + message("Writing backup file '{}' ({} format)".format(backup_filename, fileformat), typ=LogType.INFO) try: backupfp = open(backup_filename, "w") json.dump(configuration, backupfp, sort_keys=args.jsonsort, indent=None if args.jsonindent<0 else args.jsonindent, separators=(',', ':') if args.jsoncompact else (', ', ': ') ) @@ -1867,7 +1958,7 @@ def Backup(backupfile, backupfileformat, encode_cfg, decode_cfg, configuration): if args.tasmotafile is not None: srctype = 'file' src = args.tasmotafile - message("Backup successful from {} '{}' using {} format to file '{}' ".format(srctype, src, fileformat, backup_filename), typ=LogType.INFO) + message("Backup successful from {} '{}' to file '{}' ({} format)".format(srctype, src, backup_filename, fileformat), typ=LogType.INFO) def Restore(restorefile, encode_cfg, decode_cfg, configuration): @@ -1888,6 +1979,8 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): filetype = GetFileType(restorefilename) if filetype == FileType.DMP: + if args.verbose: + message("Reading restore file '{}' (Tasmota format)".format(restorefilename), typ=LogType.INFO) try: restorefp = open(restorefilename, "rb") new_encode_cfg = restorefp.read() @@ -1896,6 +1989,8 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): exit(e[0], "'{}' {}".format(restorefilename, e[1]),line=inspect.getlineno(inspect.currentframe())) elif filetype == FileType.BIN: + if args.verbose: + message("Reading restore file '{}' (binary format)".format(restorefilename), typ=LogType.INFO) try: restorefp = open(restorefilename, "rb") restorebin = restorefp.read() @@ -1908,6 +2003,8 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): new_encode_cfg = DecryptEncrypt(decode_cfg) # process binary to binary config elif filetype == FileType.JSON or filetype == FileType.INVALID_JSON: + if args.verbose: + message("Reading restore file '{}' (JSON format)".format(restorefilename), typ=LogType.INFO) try: restorefp = open(restorefilename, "r") jsonconfig = json.load(restorefp) @@ -1932,6 +2029,8 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): if new_encode_cfg != encode_cfg or args.ignorewarning: # write config direct to device via http if args.device is not None: + if args.verbose: + message("Push new data to '{}' using restore file '{}'".format(args.device, restorefilename), typ=LogType.INFO) error_code, error_str = PushTasmotaConfig(new_encode_cfg, args.device, args.port, args.username, args.password) if error_code: exit(ExitCode.UPLOAD_CONFIG_ERROR, "Config data upload failed - {}".format(error_str),line=inspect.getlineno(inspect.currentframe())) @@ -1941,6 +2040,8 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): # write config from a file elif args.tasmotafile is not None: + if args.verbose: + message("Write new data to file '{}' using restore file '{}'".format(args.tasmotafile, restorefilename), typ=LogType.INFO) try: outputfile = open(args.tasmotafile, "wb") outputfile.write(new_encode_cfg) @@ -1955,7 +2056,7 @@ def Restore(restorefile, encode_cfg, decode_cfg, configuration): global exitcode exitcode = ExitCode.RESTORE_SKIPPED if args.verbose: - exit(exitcode, "Configuration data unchanged, upload skipped", typ=LogType.WARNING) + message("Configuration data leaving unchanged", typ=LogType.INFO) def ParseArgs(): @@ -2132,15 +2233,25 @@ def ParseArgs(): if args.shorthelp: ShortHelp() - # default no configuration available - encode_cfg = None - # check source args if args.device is not None and args.tasmotafile is not None: exit(ExitCode.ARGUMENT_ERROR, "Unable to select source, do not use -d and -f together",line=inspect.getlineno(inspect.currentframe())) - # pull config from Tasmota device/file - encode_cfg = PullTasmotaConfig() + # default no configuration available + encode_cfg = None + + # pull config from Tasmota device + if args.tasmotafile is not None: + if args.verbose: + message("Load data from file '{}'".format(args.tasmotafile), typ=LogType.INFO) + encode_cfg = LoadTasmotaConfig(args.tasmotafile) + + # load config from Tasmota file + if args.device is not None: + if args.verbose: + message("Load data from device '{}'".format(args.device), typ=LogType.INFO) + encode_cfg = PullTasmotaConfig(args.device, args.port, username=args.username, password=args.password) + if encode_cfg is None: # no config source given ShortHelp(False) @@ -2157,6 +2268,11 @@ def ParseArgs(): # decode into mappings dictionary configuration = Bin2Mapping(decode_cfg, args.jsonrawvalues) + if args.verbose and 'version' in configuration: + if args.tasmotafile is not None: + message("File '{}' contains data for Tasmota v{}".format(args.tasmotafile, GetVersionStr(configuration['version'])),typ=LogType.INFO) + else: + message("Device '{}' runs Tasmota v{}".format(args.device,GetVersionStr(configuration['version'])),typ=LogType.INFO) # backup to file if args.backupfile is not None: From 13c6057108fde9f587a9525918c820717a637576 Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Wed, 7 Nov 2018 14:05:03 +0100 Subject: [PATCH 464/798] update settings to last commit for v6.3.0.4 --- tools/decode-config.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/decode-config.py b/tools/decode-config.py index dd0073d8dc55..187eec5f3619 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -660,11 +660,10 @@ def passwordwrite(value): # ======== Setting_6_3_0_4 = copy.deepcopy(Setting_6_3_0_2) Setting_6_3_0_4.update({ - 'energy_kWhtotal_time': (' Date: Wed, 7 Nov 2018 15:03:41 +0100 Subject: [PATCH 465/798] 6.3.0.5 Add code image 6.3.0.5 20181107 * Add code image and optional commit number to version --- sonoff/_changelog.ino | 5 ++++- sonoff/i18n.h | 2 ++ sonoff/sonoff.h | 2 ++ sonoff/sonoff.ino | 19 +++++++++---------- sonoff/sonoff_post.h | 18 ++++++++++++++++++ sonoff/sonoff_version.h | 2 +- sonoff/xdrv_01_webserver.ino | 2 +- sonoff/xdrv_02_mqtt.ino | 4 ++-- sonoff/xdrv_13_display.ino | 2 +- 9 files changed, 40 insertions(+), 16 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 08b5942e8966..0d508f1a5315 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.3.0.4 20181106 +/* 6.3.0.5 20181107 + * Add code image and optional commit number to version + * + * 6.3.0.4 20181106 * Add command SetSensorXX 0/1 to disable/re-enable compiled xsns_XX_sensor.ino driver * * 6.3.0.3 20181105 diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 73e1d0be2ab4..112959a25dbc 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -518,6 +518,8 @@ const char kPrefixes[3][PRFX_MAX_STRING_LENGTH] PROGMEM = { D_STAT, D_TELE }; +const char kCodeImage[] PROGMEM = "sonoff|minimal|classic|sensors|knx|basic|display"; + // support.ino static const char kMonthNames[] = D_MONTH3LIST; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 1e27988e011b..d13460e643dd 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -30,6 +30,8 @@ * Default sensor states \*********************************************************************************************/ +#define CODE_IMAGE 0 + #define USE_DHT // Default DHT11 sensor needs no external library #define USE_ENERGY_SENSOR // Use energy sensors (+14k code) #define USE_HLW8012 // Use energy sensor for Sonoff Pow and WolfBlitz diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 42a541162f7f..d4c38f4795b4 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -193,6 +193,7 @@ boolean mdns_begun = false; // mDNS active mytmplt my_module; // Active copy of Module name and GPIOs (23 x 8 bits) StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) char my_version[33]; // Composed version string +char my_image[33]; // Code image and/or commit char my_hostname[33]; // Composed Wifi hostname char mqtt_client[33]; // Composed MQTT Clientname char mqtt_topic[33]; // Composed MQTT topic @@ -609,7 +610,6 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) // We also need at least 3 chars to make a valid version number string. if (((1 == data_len) && (1 == payload)) || ((data_len >= 3) && NewerVersion(dataBuf))) { ota_state_flag = 3; -// snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_VERSION " %s " D_JSON_FROM " %s\"}", command, my_version, Settings.ota_url); snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_VERSION " %s " D_JSON_FROM " %s\"}", command, my_version, GetOtaUrl(stemp1, sizeof(stemp1))); } else { snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_ONE_OR_GT "\"}", command, my_version); @@ -1497,8 +1497,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (2 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"), - my_version, GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"), + my_version, my_image, GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "2")); } @@ -2610,13 +2610,12 @@ void setup() Serial.println(); seriallog_level = LOG_LEVEL_INFO; // Allow specific serial messages until config loaded - snprintf_P(my_version, sizeof(my_version), PSTR("%d.%d.%d"), VERSION >> 24 & 0xff, VERSION >> 16 & 0xff, VERSION >> 8 & 0xff); - if (VERSION & 0xff) { + snprintf_P(my_version, sizeof(my_version), PSTR("%d.%d.%d"), VERSION >> 24 & 0xff, VERSION >> 16 & 0xff, VERSION >> 8 & 0xff); // Release version 6.3.0 + if (VERSION & 0xff) { // Development or patched version 6.3.0.10 snprintf_P(my_version, sizeof(my_version), PSTR("%s.%d"), my_version, VERSION & 0xff); } -#ifdef BE_MINIMAL - snprintf_P(my_version, sizeof(my_version), PSTR("%s-" D_JSON_MINIMAL), my_version); -#endif // BE_MINIMAL + char code_image[20]; + snprintf_P(my_image, sizeof(my_image), PSTR("(%s)"), GetTextIndexed(code_image, sizeof(code_image), CODE_IMAGE, kCodeImage)); SettingsLoad(); SettingsDelta(); @@ -2731,8 +2730,8 @@ void setup() } blink_powersave = power; - snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " %s-" ARDUINO_ESP8266_RELEASE), - PROJECT, Settings.friendlyname[0], mqtt_topic, mqtt_client, Settings.mqtt_grptopic, my_version); + snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " %s%s-" ARDUINO_ESP8266_RELEASE), + PROJECT, Settings.friendlyname[0], mqtt_topic, mqtt_client, Settings.mqtt_grptopic, my_version, my_image); AddLog(LOG_LEVEL_INFO); #ifdef BE_MINIMAL snprintf_P(log_data, sizeof(log_data), PSTR(D_WARNING_MINIMAL_VERSION)); diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 7498d40e93cb..86b2c810d299 100644 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -57,6 +57,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_SENSORS +#undef CODE_IMAGE +#define CODE_IMAGE 3 + #undef USE_ADC_VCC // Add Analog input on selected devices #define USE_DS18x20 // For more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) //#define USE_DS18x20_LEGACY // For more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) @@ -134,6 +137,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_CLASSIC +#undef CODE_IMAGE +#define CODE_IMAGE 2 + #ifndef USE_WPS #define USE_WPS // Add support for WPS as initial wifi configuration tool (+33k code, 1k mem (5k mem with core v2.4.2+)) #endif @@ -183,6 +189,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_KNX_NO_EMULATION +#undef CODE_IMAGE +#define CODE_IMAGE 4 + #ifndef USE_KNX #define USE_KNX // Enable KNX IP Protocol Support (+23k code, +3k3 mem) #endif @@ -196,6 +205,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_DISPLAYS +#undef CODE_IMAGE +#define CODE_IMAGE 6 + #undef USE_ENERGY_SENSOR // Disable energy sensors (-14k code) #undef USE_EMULATION // Disable Belkin WeMo and Hue Bridge emulation for Alexa (-16k code, -2k mem) @@ -229,6 +241,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef USE_BASIC +#undef CODE_IMAGE +#define CODE_IMAGE 5 + #undef APP_SLEEP #define APP_SLEEP 1 // Default to sleep = 1 for USE_BASIC @@ -288,6 +303,9 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef BE_MINIMAL +#undef CODE_IMAGE +#define CODE_IMAGE 1 + #undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_ARDUINO_OTA // Disable support for Arduino OTA #undef USE_WPS // Disable support for WPS as initial wifi configuration tool diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 7bb3242ae368..aef909e8a440 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030004 +#define VERSION 0x06030005 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 8352e9820bac..627cebc525ab 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1244,7 +1244,7 @@ void HandleInformation() // }2 = String func = FPSTR(HTTP_SCRIPT_INFO_BEGIN); func += F("
"); - func += F(D_PROGRAM_VERSION "}2"); func += my_version; + func += F(D_PROGRAM_VERSION "}2"); func += my_version; func += my_image; func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); func += F("}1" D_UPTIME "}2"); func += GetUptime(); diff --git a/sonoff/xdrv_02_mqtt.ino b/sonoff/xdrv_02_mqtt.ino index 40f69d93a374..b74577a75d7c 100644 --- a/sonoff/xdrv_02_mqtt.ino +++ b/sonoff/xdrv_02_mqtt.ino @@ -404,8 +404,8 @@ void MqttConnected() } if (mqtt_initial_connection_state) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), - my_module.name, my_version, mqtt_client, Settings.mqtt_grptopic); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), + my_module.name, my_version, my_image, mqtt_client, Settings.mqtt_grptopic); MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "1")); #ifdef USE_WEBSERVER if (Settings.webserver) { diff --git a/sonoff/xdrv_13_display.ino b/sonoff/xdrv_13_display.ino index 9656c14ec7d1..26438aabedf5 100644 --- a/sonoff/xdrv_13_display.ino +++ b/sonoff/xdrv_13_display.ino @@ -629,7 +629,7 @@ void DisplayLogBufferInit() DisplayReAllocLogBuffer(); char buffer[40]; - snprintf_P(buffer, sizeof(buffer), PSTR(D_VERSION " %s"), my_version); + snprintf_P(buffer, sizeof(buffer), PSTR(D_VERSION " %s%s"), my_version, my_image); DisplayLogBufferAdd(buffer); snprintf_P(buffer, sizeof(buffer), PSTR("Display mode %d"), Settings.display_mode); DisplayLogBufferAdd(buffer); From 4a21d3270da745abf94c121f5b95dd09ecb5b24b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 7 Nov 2018 15:37:06 +0100 Subject: [PATCH 466/798] Restrict hardware serial Restrict hardware serial --- lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp | 4 ++-- lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h | 2 +- sonoff/xdrv_16_tuyadimmer.ino | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp index 7e6ddf72f622..3df42f834e00 100644 --- a/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp +++ b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.cpp @@ -76,7 +76,7 @@ static void (*ISRList[16])() = { tms_isr_15 }; -TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fallback) +TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback) { m_valid = false; m_hardserial = 0; @@ -91,7 +91,7 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fa if (hardware_fallback && (((3 == m_rx_pin) && (1 == m_tx_pin)) || ((3 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (1 == m_tx_pin)))) { m_hardserial = 1; } - else if (hardware_fallback && (((13 == m_rx_pin) && (15 == m_tx_pin)) || ((13 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (15 == m_tx_pin)))) { + else if ((2 == hardware_fallback) && (((13 == m_rx_pin) && (15 == m_tx_pin)) || ((13 == m_rx_pin) && (-1 == m_tx_pin)) || ((-1 == m_rx_pin) && (15 == m_tx_pin)))) { m_hardserial = 1; m_hardswap = 1; } diff --git a/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h index 3136a8e46b8f..de991526a972 100644 --- a/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h +++ b/lib/TasmotaSerial-2.2.0/src/TasmotaSerial.h @@ -38,7 +38,7 @@ class TasmotaSerial : public Stream { public: - TasmotaSerial(int receive_pin, int transmit_pin, bool hardware_fallback = false); + TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0); virtual ~TasmotaSerial(); bool begin(long speed, int stop_bits = 1); diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index c8bf04961b02..71f5374d810f 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -284,7 +284,7 @@ void TuyaInit() if (!Settings.param[P_TUYA_DIMMER_ID]) { Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; } - TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1); + TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 2); if (TuyaSerial->begin(9600)) { if (TuyaSerial->hardwareSerial()) { ClaimSerial(); } // Get MCU Configuration From 61985ca16bb98c58aa224006242a070084bc7a73 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 7 Nov 2018 18:43:44 +0100 Subject: [PATCH 467/798] Add hex to flash info --- sonoff/sonoff.ino | 5 +++-- sonoff/xdrv_01_webserver.ino | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index d4c38f4795b4..b8c42350dd5d 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2385,10 +2385,11 @@ void GpioSwitchPinMode(uint8_t index) if (pin[GPIO_SWT1 +index] < 99) { // pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, index) ? INPUT : INPUT_PULLUP); - uint8_t no_pullup = bitRead(switch_no_pullup, index); + uint8_t no_pullup = bitRead(switch_no_pullup, index); // 0 = INPUT_PULLUP, 1 = INPUT if (no_pullup) { if (SHELLY2 == Settings.module) { - no_pullup = (Settings.switchmode[index] < PUSHBUTTON); + // Switchmodes : TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, MAX_SWITCH_OPTION + no_pullup = (Settings.switchmode[index] < PUSHBUTTON); // INPUT on TOGGLE, FOLLOW and FOLLOW_INV. INPUT_PULLUP on anything else } } pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : (no_pullup) ? INPUT : INPUT_PULLUP); diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 627cebc525ab..35781290a37a 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1321,8 +1321,10 @@ void HandleInformation() #endif // USE_DISCOVERY func += F("}1}2 "); // Empty line - func += F("}1" D_ESP_CHIP_ID "}2"); func += String(ESP.getChipId()); - func += F("}1" D_FLASH_CHIP_ID "}2"); func += String(ESP.getFlashChipId()); + snprintf_P(stopic, sizeof(stopic), PSTR(" (0x%X)"), ESP.getChipId()); + func += F("}1" D_ESP_CHIP_ID "}2"); func += String(ESP.getChipId()); func += stopic; + snprintf_P(stopic, sizeof(stopic), PSTR(" (0x%X)"), ESP.getFlashChipId()); + func += F("}1" D_FLASH_CHIP_ID "}2"); func += String(ESP.getFlashChipId()); func += stopic; func += F("}1" D_FLASH_CHIP_SIZE "}2"); func += String(ESP.getFlashChipRealSize() / 1024); func += F("kB"); func += F("}1" D_PROGRAM_FLASH_SIZE "}2"); func += String(ESP.getFlashChipSize() / 1024); func += F("kB"); func += F("}1" D_PROGRAM_SIZE "}2"); func += String(ESP.getSketchSize() / 1024); func += F("kB"); From b5d38c4eeef560a170b4020487b8b905ed661ca8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 8 Nov 2018 10:24:10 +0100 Subject: [PATCH 468/798] Add support for Gosund SP1 v2.3 Add support for Gosund SP1 v2.3 Power Socket with Energy Monitoring (#4297) --- RELEASENOTES.md | 5 +++-- sonoff/_changelog.ino | 1 + sonoff/sonoff_template.h | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 2c987308c691..161f03415fbb 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -66,16 +66,17 @@ Module | Description 42 Zengge WF017 | Zengge WF017 Wifi RGB(W) Led Controller 43 Sonoff Pow R2 | Sonoff Pow R2 Wifi Smart Switch with Energy Monitoring 44 Sonoff iFan02 | Sonoff iFan02 Wifi Smart Ceiling Fan with Light -45 BlitzWolf SHP2 | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111 Wifi Smart Switch with Energy Monitoring +45 BlitzWolf SHP2 | BlitzWolf BW-SHP2, BW-SHP6, HomeCube SP1, Gosund SP111, Teckin SP22 Wifi Smart Switch with Energy Monitoring 46 Shelly 1 | Shelly 1 Open Source Wifi Relay Module 47 Shelly 2 | Shelly 2 Wifi 2-gang Relay Module with Energy Monitoring 48 Xiaomi Philips | Xiaomi Philips Wifi WW Led Bulb 49 Neo Coolcam | Neo Coolcam Wifi Smart Socket 50 ESP Switch | ESP Switch 4-gang Wifi Switch with Leds 51 OBI Socket | OBI Wifi Smart Socket -52 Teckin | Teckin SP20, SP22 Wifi Smart Switch with Energy Monitoring +52 Teckin | Teckin SP20 Wifi Smart Switch with Energy Monitoring 53 AplicWDP303075 | Aplic WDP 303075 CSL Wifi Smart Switch with Energy Monitoring 54 Tuya Dimmer | MIUO (and other Tuya based) Wifi Dimmer for Incandescent Lights and Led +55 Gosund SP1_v23 | Gosund SP1 v2.3 Wifi Smart Switch with Energy Monitoring ## Provided Binary Downloads The following binary downloads have been compiled with ESP8266/Arduino library version **2.3.0** diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 0d508f1a5315..83a3eb64412e 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.3.0.5 20181107 * Add code image and optional commit number to version + * Add support for Gosund SP1 v2.3 Power Socket with Energy Monitoring (#4297) * * 6.3.0.4 20181106 * Add command SetSensorXX 0/1 to disable/re-enable compiled xsns_XX_sensor.ino driver diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index eb4d910d0a6c..642914a537d5 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -250,6 +250,7 @@ enum SupportedModules { TECKIN, APLIC_WDP303075, TUYA_DIMMER, + GOSUND, MAXMODULE }; /********************************************************************************************/ @@ -466,6 +467,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { BLITZWOLF_BWSHP2, // Socket Relay Devices with Energy Monitoring TECKIN, APLIC_WDP303075, + GOSUND, NEO_COOLCAM, // Socket Relay Devices OBI, ESP_SWITCH, // Switch Devices @@ -1215,6 +1217,19 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, GPIO_USER, 0 + }, + { "Gosund SP1_v23", // https://www.amazon.de/gp/product/B0777BWS1P + 0, + GPIO_LED1_INV, // GPIO01 Serial RXD and LED1 (blue) inv + 0, + GPIO_KEY1, // GPIO03 Serial TXD and Button + GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPIO_LED2_INV, // GPIO13 LED2 (red) inv + GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + 0, 0, 0 } }; From f9bddb6c540634fb1405572a8f3156ff639d65ff Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 8 Nov 2018 10:40:19 +0100 Subject: [PATCH 469/798] Add flashchipid info Add flashchipid info --- sonoff/i18n.h | 1 + sonoff/sonoff.ino | 4 ++-- sonoff/xdrv_01_webserver.ino | 9 ++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 112959a25dbc..36d93ccd7b4f 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -62,6 +62,7 @@ #define D_JSON_FAILED "Failed" #define D_JSON_FALLBACKTOPIC "FallbackTopic" #define D_JSON_FEATURES "Features" +#define D_JSON_FLASHCHIPID "FlashChipId" #define D_JSON_FLASHMODE "FlashMode" #define D_JSON_FLASHSIZE "FlashSize" #define D_JSON_FREEMEMORY "Free" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index b8c42350dd5d..c4b0cbb20392 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1509,8 +1509,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (4 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHMODE "\":%d,\"" D_JSON_FEATURES "\":[\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\"]}}"), - ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipMode(), LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHCHIPID "\":\"%06X\",\"" D_JSON_FLASHMODE "\":%d,\"" D_JSON_FEATURES "\":[\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\"]}}"), + ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipId(), ESP.getFlashChipMode(), LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "4")); } diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 35781290a37a..c645808eb136 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1248,7 +1248,7 @@ void HandleInformation() func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); func += F("}1" D_UPTIME "}2"); func += GetUptime(); - snprintf_P(stopic, sizeof(stopic), PSTR(" at %X"), GetSettingsAddress()); + snprintf_P(stopic, sizeof(stopic), PSTR(" at 0x%X"), GetSettingsAddress()); func += F("}1" D_FLASH_WRITE_COUNT "}2"); func += String(Settings.save_flag); func += stopic; func += F("}1" D_BOOT_COUNT "}2"); func += String(Settings.bootcount); func += F("}1" D_RESTART_REASON "}2"); func += GetResetReason(); @@ -1321,10 +1321,9 @@ void HandleInformation() #endif // USE_DISCOVERY func += F("}1}2 "); // Empty line - snprintf_P(stopic, sizeof(stopic), PSTR(" (0x%X)"), ESP.getChipId()); - func += F("}1" D_ESP_CHIP_ID "}2"); func += String(ESP.getChipId()); func += stopic; - snprintf_P(stopic, sizeof(stopic), PSTR(" (0x%X)"), ESP.getFlashChipId()); - func += F("}1" D_FLASH_CHIP_ID "}2"); func += String(ESP.getFlashChipId()); func += stopic; + func += F("}1" D_ESP_CHIP_ID "}2"); func += String(ESP.getChipId()); + snprintf_P(stopic, sizeof(stopic), PSTR("0x%06X"), ESP.getFlashChipId()); + func += F("}1" D_FLASH_CHIP_ID "}2"); func += stopic; func += F("}1" D_FLASH_CHIP_SIZE "}2"); func += String(ESP.getFlashChipRealSize() / 1024); func += F("kB"); func += F("}1" D_PROGRAM_FLASH_SIZE "}2"); func += String(ESP.getFlashChipSize() / 1024); func += F("kB"); func += F("}1" D_PROGRAM_SIZE "}2"); func += String(ESP.getSketchSize() / 1024); func += F("kB"); From 2a4d82f4b69ab4f91ba2be1c3d4a3bb8983f5c08 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 8 Nov 2018 14:21:45 +0100 Subject: [PATCH 470/798] Add RF calibration on next restart Add RF calibration on next restart --- sonoff/sonoff.ino | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index c4b0cbb20392..e8bd64542a41 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2176,6 +2176,21 @@ void Every250mSeconds() restart_flag--; if (restart_flag <= 0) { AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING)); + + /* + Function: + Set whether the chip will do RF calibration or not when power up. The option is 0 by default. + Prototype: + void system_phy_set_powerup_option(uint8 option) + Parameter: + uint8 option : RF initialization when power up. + 0 : RF initialization when power up depends on esp_init_data_default.bin(0〜~127byte) byte 114. + 1 : RF initialization only calibrate VDD33 and TX power which will take about 18 ms; this reduces the current consumption. + 2 : RF initialization only calibrate VDD33 which will take about 2 ms; this has the least current consumption. + 3 : RF initialization will do the whole RF calibration which will take about 200 ms; this increases the current consumption. + */ + system_phy_set_powerup_option(3); + EspRestart(); } } From 3332ab01a1dfa6ecaf28bca7d3382cffa3d43134 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 8 Nov 2018 16:33:34 +0100 Subject: [PATCH 471/798] Revert "Add RF calibration on next restart" This reverts commit 2a4d82f4b69ab4f91ba2be1c3d4a3bb8983f5c08. --- sonoff/sonoff.ino | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index e8bd64542a41..c4b0cbb20392 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2176,21 +2176,6 @@ void Every250mSeconds() restart_flag--; if (restart_flag <= 0) { AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING)); - - /* - Function: - Set whether the chip will do RF calibration or not when power up. The option is 0 by default. - Prototype: - void system_phy_set_powerup_option(uint8 option) - Parameter: - uint8 option : RF initialization when power up. - 0 : RF initialization when power up depends on esp_init_data_default.bin(0〜~127byte) byte 114. - 1 : RF initialization only calibrate VDD33 and TX power which will take about 18 ms; this reduces the current consumption. - 2 : RF initialization only calibrate VDD33 which will take about 2 ms; this has the least current consumption. - 3 : RF initialization will do the whole RF calibration which will take about 200 ms; this increases the current consumption. - */ - system_phy_set_powerup_option(3); - EspRestart(); } } From d573f7641a33ff31726787b5d8cb7bad65c9d5dc Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Fri, 9 Nov 2018 01:28:11 +0100 Subject: [PATCH 472/798] tuya: formatting --- sonoff/xdrv_16_tuyadimmer.ino | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 71f5374d810f..52b1450a51c6 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -140,11 +140,11 @@ void LightSerialDuty(uint8_t duty) duty = 25; // dimming acts odd below 25(10%) - this mirrors the threshold set on the faceplate itself } - TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); - snprintf_P(log_data, sizeof(log_data), PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); AddLog(LOG_LEVEL_DEBUG); + TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); + } else { tuya_ignore_dim = false; // reset flag @@ -156,6 +156,7 @@ void LightSerialDuty(uint8_t duty) void TuyaRequestState(){ if(TuyaSerial) { + // Get current status of MCU snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); AddLog(LOG_LEVEL_DEBUG); @@ -325,7 +326,7 @@ void TuyaSerialInput() else if ((tuya_cmd_status == 3) && (tuya_byte_counter == (6 + tuya_data_len)) && (tuya_cmd_checksum == serial_in_byte)){ // Compare checksum and process packet tuya_buffer[tuya_byte_counter++] = serial_in_byte; - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Received Packet: \"")); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Packet: \"")); for (int i = 0; i < tuya_byte_counter; i++) { snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x"), log_data, tuya_buffer[i]); } From 7a235cc8ef57572bac23f5afb378b226fac9ceee Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 10 Nov 2018 10:48:28 +0100 Subject: [PATCH 473/798] Fix shelly2 ghost switching Fix shelly2 ghost switching caused by lack of pull-up inputs (#4255) --- sonoff/_changelog.ino | 1 + sonoff/sonoff.ino | 6 ++++-- sonoff/sonoff_template.h | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 83a3eb64412e..1fae97a157d2 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.3.0.5 20181107 * Add code image and optional commit number to version * Add support for Gosund SP1 v2.3 Power Socket with Energy Monitoring (#4297) + * Fix shelly2 ghost switching caused by lack of pull-up inputs (#4255) * * 6.3.0.4 20181106 * Add command SetSensorXX 0/1 to disable/re-enable compiled xsns_XX_sensor.ino driver diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index c4b0cbb20392..e92536a1bcbb 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2383,8 +2383,9 @@ void SerialInput() void GpioSwitchPinMode(uint8_t index) { if (pin[GPIO_SWT1 +index] < 99) { -// pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, index) ? INPUT : INPUT_PULLUP); - + pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : bitRead(switch_no_pullup, index) ? INPUT : INPUT_PULLUP); +/* + // Re-enable pull-up on Shelly2 as of 20181110 (#4255) uint8_t no_pullup = bitRead(switch_no_pullup, index); // 0 = INPUT_PULLUP, 1 = INPUT if (no_pullup) { if (SHELLY2 == Settings.module) { @@ -2393,6 +2394,7 @@ void GpioSwitchPinMode(uint8_t index) } } pinMode(pin[GPIO_SWT1 +index], (16 == pin[GPIO_SWT1 +index]) ? INPUT_PULLDOWN_16 : (no_pullup) ? INPUT : INPUT_PULLUP); +*/ } } diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 642914a537d5..2735ac76ea2b 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -1125,9 +1125,9 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_REL1, // GPIO04 GPIO_REL2, // GPIO05 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_SWT1_NP, // GPIO12 + GPIO_SWT1, // GPIO12 0, - GPIO_SWT2_NP, // GPIO14 + GPIO_SWT2, // GPIO14 0, // GPIO15 MCP39F501 Reset 0, 0 }, From 9872f942ae12ddbd4c849e6586c3ab3c6148da30 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 10 Nov 2018 15:10:58 +0100 Subject: [PATCH 474/798] 6.3.0.6 Change GUI page load 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% --- sonoff/_changelog.ino | 5 ++- sonoff/sonoff_version.h | 2 +- sonoff/xdrv_01_webserver.ino | 69 +++++++++++++++++++++--------------- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 1fae97a157d2..01108f603d67 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.3.0.5 20181107 +/* 6.3.0.6 20181110 + * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% + * + * 6.3.0.5 20181107 * Add code image and optional commit number to version * Add support for Gosund SP1 v2.3 Power Socket with Energy Monitoring (#4297) * Fix shelly2 ghost switching caused by lack of pull-up inputs (#4255) diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index aef909e8a440..7f25e0ebc272 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030005 +#define VERSION 0x06030006 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index c645808eb136..37d63d566713 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -84,7 +84,7 @@ const char HTTP_HEAD[] PROGMEM = "function lc(p){" "la('?t='+p);" // ?t related to WebGetArg("t", tmp, sizeof(tmp)); "}"; - + const char HTTP_HEAD_RELOAD[] PROGMEM = "setTimeout(function(){location.href='.';},4000);"; @@ -160,17 +160,28 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM = ""; const char HTTP_SCRIPT_MODULE1[] PROGMEM = "var os;" - "function sk(s,g){" + "function sk(s,g){" // s = value, g = id and name "var o=os.replace(\"value='\"+s+\"'\",\"selected value='\"+s+\"'\");" "eb('g'+g).innerHTML=o;" "}" "function sl(){" - "var o0=\""; + "if(x!=null){x.abort();}" // Abort any request pending + "x=new XMLHttpRequest();" + "x.onreadystatechange=function(){" + "if(x.readyState==4&&x.status==200){" + "var i,o=x.responseText.replace(/}1/g,\"
\").replace(/}2/g,\"\");" "eb('i').innerHTML=s;" "}" ""; + +const char HTTP_HEAD_STYLE[] PROGMEM = + "" + + "" + + "" + "" + "
" +#ifdef BE_MINIMAL + "

" D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "

" +#endif + "
" +#ifdef LANGUAGE_MODULE_NAME + "

" D_MODULE " {ha

" +#else + "

{ha " D_MODULE "

" +#endif + "

{h}

{j}
"; const char HTTP_MSG_SLIDER1[] PROGMEM = "
" D_COLDLIGHT "" D_WARMLIGHT "
" "
"; @@ -487,6 +497,7 @@ void ShowPage(String &page, bool auth) if (HTTP_MANAGER == webserver_state) { if (WifiConfigCounter()) { + page.replace(F(""), FPSTR(HTTP_SCRIPT_COUNTER)); page.replace(F(""), F("")); page += FPSTR(HTTP_COUNTER); } @@ -515,7 +526,6 @@ void WebRestart(uint8_t type) AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESTART); String page = FPSTR(HTTP_HEAD); - page += FPSTR(HTTP_HEAD_RELOAD); page += FPSTR(HTTP_HEAD_STYLE); if (type) { @@ -536,6 +546,7 @@ void WebRestart(uint8_t type) } else { page += FPSTR(HTTP_BTN_MAIN); } + page.replace(F(""), FPSTR(HTTP_SCRIPT_RELOAD)); ShowPage(page); ShowWebSource(SRC_WEBGUI); @@ -588,6 +599,7 @@ void HandleRoot() char stemp[10]; String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_MAIN_MENU)); + page += FPSTR(HTTP_SCRIPT_ROOT); page += FPSTR(HTTP_HEAD_STYLE); page.replace(F(""), F("")); @@ -881,6 +893,7 @@ void HandleWifiConfiguration() String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_CONFIGURE_WIFI)); + page += FPSTR(HTTP_SCRIPT_WIFI); page += FPSTR(HTTP_HEAD_STYLE); if (WebServer->hasArg("scan")) { @@ -1396,6 +1409,7 @@ void HandleUpgradeFirmwareStart() page += F("
" D_UPGRADE_STARTED " ...
"); page += FPSTR(HTTP_MSG_RSTRT); page += FPSTR(HTTP_BTN_MAIN); +// page.replace(F(""), FPSTR(HTTP_SCRIPT_RELOAD)); ShowPage(page); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_UPGRADE " 1")); @@ -1446,6 +1460,7 @@ void HandleUploadDone() } else { page += F("green'>" D_SUCCESSFUL "
"); page += FPSTR(HTTP_MSG_RSTRT); + page.replace(F(""), FPSTR(HTTP_SCRIPT_RELOAD)); ShowWebSource(SRC_WEBGUI); restart_flag = 2; // Always restart to re-enable disabled features during update } From 0d78ec4fad7d36e5cf79eb285bb720a4018cdcbc Mon Sep 17 00:00:00 2001 From: Joel Stein Date: Sat, 10 Nov 2018 18:08:31 +0100 Subject: [PATCH 479/798] tuya: change Sent -> TX, Rcvd -> RX --- sonoff/xdrv_16_tuyadimmer.ino | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index 52b1450a51c6..a142365a11e3 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -68,7 +68,7 @@ void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len TuyaSerial->write(cmd); // Tuya command TuyaSerial->write(payload_len >> 8); // following data length (Hi) TuyaSerial->write(payload_len & 0xFF); // following data length (Lo) - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Sent Packet: \"55aa00%02x%02x%02x"), cmd, payload_len >> 8, payload_len & 0xFF); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: TX Packet: \"55aa00%02x%02x%02x"), cmd, payload_len >> 8, payload_len & 0xFF); for(int i = 0; i < payload_len; ++i) { TuyaSerial->write(payload[i]); checksum += payload[i]; @@ -191,7 +191,7 @@ void TuyaPacketProcess() case TUYA_CMD_STATE: if (tuya_buffer[5] == 5) { // on/off packet - snprintf_P(log_data, sizeof(log_data),PSTR("TYA: Rcvd - %s State"),tuya_buffer[10]?"On":"Off"); + snprintf_P(log_data, sizeof(log_data),PSTR("TYA: RX - %s State"),tuya_buffer[10]?"On":"Off"); AddLog(LOG_LEVEL_DEBUG); if((power || Settings.light_dimmer > 0) && (power != tuya_buffer[10])) { @@ -200,7 +200,7 @@ void TuyaPacketProcess() } else if (tuya_buffer[5] == 8) { // dim packet - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Dim State=%d"), tuya_buffer[13]); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: RX Dim State=%d"), tuya_buffer[13]); AddLog(LOG_LEVEL_DEBUG); if (!Settings.param[P_TUYA_DIMMER_ID]) { @@ -225,17 +225,17 @@ void TuyaPacketProcess() case TUYA_CMD_WIFI_RESET: case TUYA_CMD_WIFI_SELECT: - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd WiFi Reset")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX WiFi Reset")); TuyaResetWifi(); break; case TUYA_CMD_WIFI_STATE: - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd WiFi LED set ACK")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX WiFi LED set ACK")); tuya_wifi_state = WifiState(); break; case TUYA_CMD_MCU_CONF: - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd MCU configuration")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX MCU configuration")); if (tuya_buffer[5] == 2) { uint8_t led1_gpio = tuya_buffer[6]; @@ -259,7 +259,7 @@ void TuyaPacketProcess() break; default: - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rcvd unknown command")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX unknown command")); } } @@ -326,7 +326,7 @@ void TuyaSerialInput() else if ((tuya_cmd_status == 3) && (tuya_byte_counter == (6 + tuya_data_len)) && (tuya_cmd_checksum == serial_in_byte)){ // Compare checksum and process packet tuya_buffer[tuya_byte_counter++] = serial_in_byte; - snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Rcvd Packet: \"")); + snprintf_P(log_data, sizeof(log_data), PSTR("TYA: RX Packet: \"")); for (int i = 0; i < tuya_byte_counter; i++) { snprintf_P(log_data, sizeof(log_data), PSTR("%s%02x"), log_data, tuya_buffer[i]); } From 72dede855ac6ab6f6362d6f65175da9c57844d3c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 13:21:46 +0100 Subject: [PATCH 480/798] Add domoticz support to SR04 Add domoticz support to sensor SR04 (#4325) --- sonoff/xsns_22_sr04.ino | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sonoff/xsns_22_sr04.ino b/sonoff/xsns_22_sr04.ino index 9d447b3f3193..118a37cc0320 100644 --- a/sonoff/xsns_22_sr04.ino +++ b/sonoff/xsns_22_sr04.ino @@ -136,6 +136,11 @@ void Sr04Show(boolean json) if (Sr04Read(&distance)) { // Check if read failed if(json) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SR04\":{\"" D_JSON_DISTANCE "\":%d}"), mqtt_data, distance); +#ifdef USE_DOMOTICZ + if (0 == tele_period) { + DomoticzSensor(DZ_COUNT, distance); // Send distance as Domoticz Counter value + } +#endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_DISTANCE, mqtt_data, distance); From e76f862b8f16c60f382a5800a636fea8288917da Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 13:39:24 +0100 Subject: [PATCH 481/798] Add info Add info --- sonoff/_changelog.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 01108f603d67..39b0602896ad 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% + * In case of web page errors clear your browser cache or do Page Reload (F5 or Ctrl+R) * * 6.3.0.5 20181107 * Add code image and optional commit number to version From a55ec91a106e4d42bc1c3c761820dbcc2914f89c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 14:28:46 +0100 Subject: [PATCH 482/798] 6.3.0.7 Use ESP.reset 6.3.0.7 20181111 * Fix wifi connection errors using ESP.reset instead of ESP.restart --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff_version.h | 2 +- sonoff/support.ino | 11 ++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 39b0602896ad..c2ee44a65db9 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.3.0.6 20181110 +/* 6.3.0.7 20181111 + * Fix wifi connection errors using ESP.reset instead of ESP.restart + * + * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% * In case of web page errors clear your browser cache or do Page Reload (F5 or Ctrl+R) * diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 7f25e0ebc272..14eee4f253fa 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06030006 +#define VERSION 0x06030007 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/support.ino b/sonoff/support.ino index bbc81b1a3409..9389714ecb9a 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -1577,15 +1577,15 @@ int WifiState() void WifiConnect() { WifiSetState(0); - WiFi.persistent(false); // Solve possible wifi init errors + WiFi.persistent(false); // Solve possible wifi init errors wifi_status = 0; wifi_retry_init = WIFI_RETRY_OFFSET_SEC + ((ESP.getChipId() & 0xF) * 2); wifi_retry = wifi_retry_init; wifi_counter = 1; } -/* // Enable from 6.0.0a until 6.1.0a - disabled due to possible cause of bad wifi connect on core 2.3.0 +// Re-enabled from 6.3.0.7 with ESP.restart replaced by ESP.reset void WifiDisconnect() { // Courtesy of EspEasy @@ -1598,17 +1598,18 @@ void WifiDisconnect() void EspRestart() { - // This results in exception 3 on restarts delay(100); // Allow time for message xfer - disabled v6.1.0b WifiDisconnect(); - ESP.restart(); +// ESP.restart(); // This results in exception 3 on restarts on core 2.3.0 + ESP.reset(); } -*/ +/* void EspRestart() { ESP.restart(); } +*/ /*********************************************************************************************\ * Basic I2C routines From 2a2b224a24367d21f1a24063d501799099f930d2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 14:45:19 +0100 Subject: [PATCH 483/798] Add pulse time to received JSON Add pulse time to received JSON message in RcSwitch driver (#2702) --- sonoff/xdrv_17_rcswitch.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/xdrv_17_rcswitch.ino b/sonoff/xdrv_17_rcswitch.ino index 701b8c11916d..82ce95096ec1 100644 --- a/sonoff/xdrv_17_rcswitch.ino +++ b/sonoff/xdrv_17_rcswitch.ino @@ -36,7 +36,7 @@ RCSwitch mySwitch = RCSwitch(); -#define RF_TIME_AVOID_DUPLICATE 1000 // Milliseconds +#define RF_TIME_AVOID_DUPLICATE 1000 // Milliseconds uint32_t rf_lasttime = 0; @@ -62,8 +62,8 @@ void RfReceiveCheck() } else { snprintf_P(stemp, sizeof(stemp), PSTR("\"%lX\""), (uint32_t)data); } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_RF_DATA "\":%s,\"" D_JSON_RF_BITS "\":%d,\"" D_JSON_RF_PROTOCOL "\":%d}}"), - stemp, bits, protocol); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_RF_DATA "\":%s,\"" D_JSON_RF_BITS "\":%d,\"" D_JSON_RF_PROTOCOL "\":%d,\"" D_JSON_RF_PULSE "\":%d}}"), + stemp, bits, protocol, delay); MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED)); XdrvRulesProcess(); #ifdef USE_DOMOTICZ From c2e1e0344db8320a85374652e2789519f87ef53f Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sun, 11 Nov 2018 15:20:10 +0100 Subject: [PATCH 484/798] Revert "Added language strings for uart TX/RX" This reverts commit fd8622d546454597575dabf9bbf62c1d9fd98fc3. --- sonoff/language/bg-BG.h | 2 -- sonoff/language/cs-CZ.h | 2 -- sonoff/language/de-DE.h | 2 -- sonoff/language/el-GR.h | 2 -- sonoff/language/en-GB.h | 4 ---- sonoff/language/es-AR.h | 2 -- sonoff/language/fr-FR.h | 2 -- sonoff/language/he-HE.h | 2 -- sonoff/language/hu-HU.h | 2 -- sonoff/language/it-IT.h | 2 -- sonoff/language/nl-NL.h | 2 -- sonoff/language/pl-PL.h | 2 -- sonoff/language/pt-BR.h | 2 -- sonoff/language/pt-PT.h | 2 -- sonoff/language/ru-RU.h | 2 -- sonoff/language/tr-TR.h | 2 -- sonoff/language/uk-UK.h | 2 -- sonoff/language/zh-CN.h | 2 -- sonoff/language/zh-TW.h | 2 -- 19 files changed, 40 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 75f9178b0a48..1503884c334d 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index bb1de8fa499a..2b667cec1ee5 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index e69a5fb0958e..9c2f7c24e9b1 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index d84f566bf2a9..79558615d613 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -530,8 +530,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index accc7ab90a57..1a9304a7d0d9 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -529,10 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index cc4eb3da78a4..e5c3135fe954 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 29dd9f2135e2..0dfb2929cc4c 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index 3ccbade214e6..cb041ffba062 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 4913a8597beb..5cee46a52b77 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 05d151c0ca0b..0eaca9337d05 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 99d7985aa9d2..0567e0849d1e 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 077b23feb99e..678a7b77006d 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index e587bbedf78b..712ea6a74cea 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index ee71a81cf5f9..0bba501bd372 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 12288e899c70..f9062a5725ee 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 512f7f885996..f892fafbbbac 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index ed981ce53c46..4c290613a05d 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 36662cd4df64..fe6dabe8d394 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index d286e4b7ad9e..92a805587667 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" From 0868c721405069e73d1162f6d370453077c0fa28 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 16:52:09 +0100 Subject: [PATCH 485/798] Fix Sonoff Pow R2 and Sonoff S31 Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by MP3 driver --- sonoff/_changelog.ino | 3 ++- sonoff/xdrv_14_mp3.ino | 36 +++++++++++++++++++----------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index c2ee44a65db9..23bbe3dc2eb1 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,5 +1,6 @@ /* 6.3.0.7 20181111 - * Fix wifi connection errors using ESP.reset instead of ESP.restart + * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart + * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by MP3 driver * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/xdrv_14_mp3.ino b/sonoff/xdrv_14_mp3.ino index 0a72b68aba2c..973c3fe5e847 100644 --- a/sonoff/xdrv_14_mp3.ino +++ b/sonoff/xdrv_14_mp3.ino @@ -33,7 +33,7 @@ tested - works by MP3Device 1 = USB STick, or MP3Device 2 = SD-Card - after power and/or reset the SD-Card(2) is the default device --- - 1.0.0.2 20180912 added - again some if-commands to switch() because of new commands + 1.0.0.2 20180912 added - again some if-commands to switch() because of new commands --- 1.0.0.1 20180911 added - command eq (equalizer 0..5) tested - works in console with MP3EQ 1, the value can be 0..5 @@ -42,13 +42,13 @@ erased - code for USB device about some errors, will be added in a next release --- 1.0.0.1 20180910 changed - command real MP3Stop in place of pause/stop used in the original version - changed - the command MP3Play e.g. 001 to MP3Track e.g. 001, - added - new normal command MP3Play and MP3Pause + changed - the command MP3Play e.g. 001 to MP3Track e.g. 001, + added - new normal command MP3Play and MP3Pause --- - 1.0.0.0 20180907 merged - by arendst + 1.0.0.0 20180907 merged - by arendst changed - the driver name from xdrv_91_mp3.ino to xdrv_14_mp3.ino --- - 0.9.0.3 20180906 request - Pull Request + 0.9.0.3 20180906 request - Pull Request changed - if-commands to switch() for faster response --- 0.9.0.2 20180906 cleaned - source code for faster reading @@ -98,7 +98,7 @@ enum MP3_Commands { // commands useable in conso CMND_MP3_RESET, // MP3Reset, a fresh and default restart CMND_MP3_DAC }; // set dac, 1=off, 0=on, DAC is turned on (0) by default - + /*********************************************************************************************\ * command defines \*********************************************************************************************/ @@ -107,7 +107,7 @@ enum MP3_Commands { // commands useable in conso // player commands #define MP3_CMD_TRACK 0x03 // specify playback of a track, e.g. MP3Track 003 #define MP3_CMD_PLAY 0x0d // Play, works as a normal play on a real MP3 Player, starts at 001.mp3 file on the selected device -#define MP3_CMD_PAUSE 0x0e // Pause, was original designed as stop, see data sheet +#define MP3_CMD_PAUSE 0x0e // Pause, was original designed as stop, see data sheet #define MP3_CMD_STOP 0x16 // Stop, it's a real stop now, in the original version it was a pause command #define MP3_CMD_VOLUME 0x06 // specifies the volume and means a console input as 0..100 #define MP3_CMD_EQ 0x07 // specify EQ(0/1/2/3/4/5), 0:Normal, 1:Pop, 2:Rock, 3:Jazz, 4:Classic, 5:Bass @@ -138,7 +138,7 @@ uint16_t MP3_Checksum(uint8_t *array) void MP3PlayerInit(void) { MP3Player = new TasmotaSerial(-1, pin[GPIO_MP3_DFR562]); // start serial communication fixed to 9600 baud - if (MP3Player->begin(9600)) { + if (MP3Player->begin(9600)) { MP3Player->flush(); delay(1000); MP3_CMD(MP3_CMD_RESET, MP3_CMD_RESET_VALUE); // reset the player to defaults @@ -185,7 +185,7 @@ boolean MP3PlayerCmd(void) { if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MP3), disp_len)) { // prefix int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + disp_len, kMP3_Commands); - + switch (command_code) { case CMND_MP3_TRACK: case CMND_MP3_VOLUME: @@ -206,7 +206,7 @@ boolean MP3PlayerCmd(void) { case CMND_MP3_PAUSE: case CMND_MP3_STOP: case CMND_MP3_RESET: - // play or re-play after pause, pause, stop, + // play or re-play after pause, pause, stop, if (command_code == CMND_MP3_PLAY) { MP3_CMD(MP3_CMD_PLAY, 0); } if (command_code == CMND_MP3_PAUSE) { MP3_CMD(MP3_CMD_PAUSE, 0); } if (command_code == CMND_MP3_STOP) { MP3_CMD(MP3_CMD_STOP, 0); } @@ -230,13 +230,15 @@ boolean Xdrv14(byte function) { boolean result = false; - switch (function) { - case FUNC_PRE_INIT: - MP3PlayerInit(); // init and start communication - break; - case FUNC_COMMAND: - result = MP3PlayerCmd(); // return result from mp3 player command - break; + if (pin[GPIO_MP3_DFR562] < 99) { + switch (function) { + case FUNC_PRE_INIT: + MP3PlayerInit(); // init and start communication + break; + case FUNC_COMMAND: + result = MP3PlayerCmd(); // return result from mp3 player command + break; + } } return result; } From a3ee9e74920db86652ddf125ba542dd2e0f3a8f3 Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sun, 11 Nov 2018 16:58:21 +0100 Subject: [PATCH 486/798] Cleaned up code and settings --- sonoff/settings.h | 2 +- sonoff/sonoff.h | 2 +- sonoff/sonoff_template.h | 23 ++++----- sonoff/xdrv_18_armtronixDualDimmer.ino | 68 ++------------------------ 4 files changed, 14 insertions(+), 81 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index fcffe681f656..cde1b2283ffa 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -68,7 +68,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t gui_hostname_ip : 1; // bit 3 (v6.2.1.20) uint32_t tuya_apply_o20 : 1; // bit 4 (v6.3.0.4) - uint32_t armtronix_apply_o20 : 1; // bit 5 (v????) + uint32_t spare05 : 1; uint32_t spare06 : 1; uint32_t spare07 : 1; uint32_t spare08 : 1; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index ed23f80f2bba..1050557c0d90 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -221,7 +221,7 @@ enum ButtonStates { PRESSED, NOT_PRESSED }; enum Shortcuts { SC_CLEAR, SC_DEFAULT, SC_USER }; -enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_ARMTRONIX_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) +enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) enum DomoticzSensors {DZ_TEMP, DZ_TEMP_HUM, DZ_TEMP_HUM_BARO, DZ_POWER_ENERGY, DZ_ILLUMINANCE, DZ_COUNT, DZ_VOLTAGE, DZ_CURRENT, DZ_AIRQUALITY, DZ_MAX_SENSORS}; diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 412717677c14..be6b18085670 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -133,8 +133,6 @@ enum UserSelectablePins { GPIO_RFRECV, // RF receiver GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX, // Tuya Serial interface - GPIO_ARMTRONIX_TX, // ARMTRONIX Serial interface - GPIO_ARMTRONIX_RX, // ARMTRONIX Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -192,8 +190,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" D_SENSOR_TX20_TX "|" D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_ARMTRONIX_TX "|" D_SENSOR_ARMTRONIX_RX; + D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX; + /********************************************************************************************/ // Supported hardware modules @@ -429,10 +427,6 @@ const uint8_t kGpioNiceList[] PROGMEM = { GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX // Tuya Serial interface #endif -#ifdef USE_ARMTRONIX_DIMMERS - GPIO_ARMTRONIX_TX, // Tuya Serial interface - GPIO_ARMTRONIX_RX // Tuya Serial interface -#endif }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { @@ -1226,18 +1220,19 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, 0 }, - { "ARMTR Dimmr", // ARMTRONIX Dimmer (ESP8266 w/ separate MCU dimmer) - // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 - GPIO_USER, // Virtual Button (controlled by MCU) - GPIO_USER, // GPIO01 MCU serial control + { "ARMTR Dimmer", // ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) + // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-two-triac-board/ + // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-esp8266-one-triac-board-alexaecho/ + GPIO_USER, + GPIO_TXD, // GPIO01 MCU serial control GPIO_USER, - GPIO_USER, // GPIO03 MCU serial control + GPIO_RXD, // GPIO03 MCU serial control GPIO_USER, GPIO_USER, 0, 0, 0, 0, 0, 0, // Flash connection GPIO_USER, GPIO_USER, - GPIO_USER, // GPIO14 Green Led + GPIO_USER, GPIO_USER, GPIO_USER, 0 diff --git a/sonoff/xdrv_18_armtronixDualDimmer.ino b/sonoff/xdrv_18_armtronixDualDimmer.ino index 8b4c2ea834fd..0e440bd7eca2 100644 --- a/sonoff/xdrv_18_armtronixDualDimmer.ino +++ b/sonoff/xdrv_18_armtronixDualDimmer.ino @@ -23,12 +23,6 @@ #define XDRV_18 18 -#ifndef ARMTRONIX_DIMMER_ID -#define ARMTRONIX_DIMMER_ID 0 -#endif - -#define ARMTRONIX_POWER_ID 1 - #include TasmotaSerial *ArmtronixSerial = nullptr; @@ -45,25 +39,6 @@ int8_t armtronix_knobState[2]; //Dimmer state values. -boolean ArmtronixSetPower() -{ - boolean status = false; - - uint8_t rpower = XdrvMailbox.index; - int16_t source = XdrvMailbox.payload; - - if (source != SRC_SWITCH && ArmtronixSerial) { // ignore to prevent loop from pushing state from faceplate interaction - - snprintf_P(log_data, sizeof(log_data), PSTR("ARM: SetDevicePower.rpower=%d"), rpower); - AddLog(LOG_LEVEL_DEBUG); - //ArmtronixSendBool(ARMTRONIX_POWER_ID, rpower); - - status = true; - } - return status; -} - - void LightSerial2Duty(uint8_t duty1, uint8_t duty2) { if (ArmtronixSerial && !armtronix_ignore_dim) { @@ -76,7 +51,7 @@ void LightSerial2Duty(uint8_t duty1, uint8_t duty2) ArmtronixSerial->print("\nDimmer2:"); ArmtronixSerial->println(duty2); - snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Serial Packet Dim Values=%d,%d (id=%d)"), armtronix_dimState[0],armtronix_dimState[1], Settings.param[P_ARMTRONIX_DIMMER_ID]); + snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Serial Packet Dim Values=%d,%d"), armtronix_dimState[0],armtronix_dimState[1]); AddLog(LOG_LEVEL_DEBUG); } else { @@ -97,28 +72,12 @@ void ArmtronixRequestState(){ } } -void ArmtronixResetWifi() -{ - if (!Settings.flag.button_restrict) { - char scmnd[20]; - snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); - ExecuteCommand(scmnd, SRC_BUTTON); - } -} - /*********************************************************************************************\ * API Functions \*********************************************************************************************/ boolean ArmtronixModuleSelected() { - if (!(pin[GPIO_ARMTRONIX_RX] < 99) || !(pin[GPIO_ARMTRONIX_TX] < 99)) { // fallback to hardware-serial if not explicitly selected - pin[GPIO_ARMTRONIX_TX] = 1; - pin[GPIO_ARMTRONIX_RX] = 3; - Settings.my_gp.io[1] = GPIO_ARMTRONIX_TX; - Settings.my_gp.io[3] = GPIO_ARMTRONIX_RX; - restart_flag = 2; - } light_type = LT_SERIAL2; return true; } @@ -129,10 +88,7 @@ void ArmtronixInit() armtronix_dimState[1] = -1; armtronix_knobState[0] = -1; armtronix_knobState[1] = -1; - if (!Settings.param[P_ARMTRONIX_DIMMER_ID]) { - Settings.param[P_ARMTRONIX_DIMMER_ID] = ARMTRONIX_DIMMER_ID; - } - ArmtronixSerial = new TasmotaSerial(pin[GPIO_ARMTRONIX_RX], pin[GPIO_ARMTRONIX_TX], 2); + ArmtronixSerial = new TasmotaSerial(pin[GPIO_RXD], pin[GPIO_TXD], 2); if (ArmtronixSerial->begin(115200)) { if (ArmtronixSerial->hardwareSerial()) { ClaimSerial(); } ArmtronixSerial->println("Status"); @@ -171,17 +127,6 @@ void ArmtronixSerialInput() } } -boolean ArmtronixButtonPressed() -{ - if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { - snprintf_P(log_data, sizeof(log_data), PSTR("ARM: Reset GPIO triggered")); - AddLog(LOG_LEVEL_DEBUG); - ArmtronixResetWifi(); - return true; // Reset GPIO served here - } - return false; // Don't serve other buttons -} - void ArmtronixSetWifiLed(){ uint8_t wifi_state = 0x02; switch(WifiState()){ @@ -233,17 +178,10 @@ boolean Xdrv18(byte function) case FUNC_LOOP: if (ArmtronixSerial) { ArmtronixSerialInput(); } break; - case FUNC_SET_DEVICE_POWER: - result = ArmtronixSetPower(); - break; - case FUNC_BUTTON_PRESSED: - result = ArmtronixButtonPressed(); - break; case FUNC_EVERY_SECOND: if(ArmtronixSerial){ - flip = !flip; if (armtronix_wifi_state!=WifiState()) { ArmtronixSetWifiLed(); } - if(flip){ + if(uptime&1){ ArmtronixSerial->println("Status"); } } From c0cfdde8ac77fd64690bb96b5845479833867207 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 11 Nov 2018 17:58:18 +0100 Subject: [PATCH 487/798] Fix Sonoff Pow R2 and Sonoff S31 Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) --- sonoff/_changelog.ino | 2 +- sonoff/support.ino | 9 +++++++++ sonoff/xdrv_interface.ino | 2 +- sonoff/xsns_interface.ino | 4 ++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 23bbe3dc2eb1..f664eb7a6382 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,6 @@ /* 6.3.0.7 20181111 * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart - * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by MP3 driver + * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/support.ino b/sonoff/support.ino index 9389714ecb9a..0c5203d69f5d 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -765,6 +765,15 @@ uint8_t ValidGPIO(uint8_t pin, uint8_t gpio) return result; } +void AppDelay() +{ + if (APP_BAUDRATE == baudrate) { // When baudrate too low it will fail on Sonoff Pow R2 and S31 serial interface initialization + if (global_state.wifi_down) { + delay(DRIVER_BOOT_DELAY); + } + } +} + /*********************************************************************************************\ * Sleep aware time scheduler functions borrowed from ESPEasy \*********************************************************************************************/ diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index 0f0171e20ded..cb3a69c226d1 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -238,7 +238,7 @@ boolean XdrvCall(byte Function) boolean result = false; for (byte x = 0; x < xdrv_present; x++) { - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } + AppDelay(); result = xdrv_func_ptr[x](Function); if (result) break; } diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index a3cf4d7729aa..723e8f070097 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -568,7 +568,7 @@ boolean XsnsNextCall(byte Function) xsns_index++; if (xsns_index == xsns_present) { xsns_index = 0; } } - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } + AppDelay(); return xsns_func_ptr[xsns_index](Function); } @@ -586,7 +586,7 @@ boolean XsnsCall(byte Function) #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND uint32_t profile_start_millis = millis(); #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND - if (global_state.wifi_down) { delay(DRIVER_BOOT_DELAY); } + AppDelay(); result = xsns_func_ptr[x](Function); #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND From 41aafe05ae7baab132743fe2e0b866c28c533a81 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 10:20:30 +0100 Subject: [PATCH 488/798] Change command WebSend Change command WebSend Host header field from IP address to hostname (#4331) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_01_webserver.ino | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index f664eb7a6382..ce35adbe004a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,7 @@ /* 6.3.0.7 20181111 * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) + * Change command WebSend Host header field from IP address to hostname (#4331) * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 74e6d32f68f5..6f99b30a10f7 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1950,7 +1950,8 @@ int WebSend(char *buffer) String url = F("GET /cm?"); url += uri; url += F(" HTTP/1.1\r\n Host: "); - url += IPAddress(host_ip).toString(); +// url += IPAddress(host_ip).toString(); + url += host; // https://tools.ietf.org/html/rfc7230#section-5.4 (#4331) if (port) { url += F(" \r\n Port: "); url += port; From 59c581721470b654d495bea4caf2110aeb7be056 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 11:10:55 +0100 Subject: [PATCH 489/798] Update command WebSend * Change command WebSend Host header field from IP address to hostname (#4331) * Add to command WebSend option to send a direct path when command starts with a slash (#4329) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_01_webserver.ino | 40 +++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index ce35adbe004a..e661b54fbb5b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) * Change command WebSend Host header field from IP address to hostname (#4331) + * Add to command WebSend option to send a direct path when command starts with a slash (#4329) * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 6f99b30a10f7..5b989ce3b3cf 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1895,9 +1895,11 @@ String UrlEncode(const String& text) int WebSend(char *buffer) { - // http://192.168.178.86:80/cm?user=admin&password=joker&cmnd=POWER1 ON - // http://192.168.178.86:80/cm?cmnd=POWER1 ON - // [192.168.178.86:80,admin:joker] POWER1 ON + /* [sonoff] POWER1 ON --> Sends http://sonoff/cm?cmnd=POWER1 ON + * [192.168.178.86:80,admin:joker] POWER1 ON --> Sends http://hostname:80/cm?user=admin&password=joker&cmnd=POWER1 ON + * [sonoff] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 + * [sonoff,admin:joker] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 + */ char *host; char *port; @@ -1923,15 +1925,19 @@ int WebSend(char *buffer) if (port) { nport = atoi(port); } String nuri = ""; - if (user && password) { - nuri += F("user="); - nuri += user; - nuri += F("&password="); - nuri += password; - nuri += F("&"); + command = LTrim(command); + if (command[0] != '/') { + nuri = "/cm?"; + if (user && password) { + nuri += F("user="); + nuri += user; + nuri += F("&password="); + nuri += password; + nuri += F("&"); + } + nuri += F("cmnd="); } - nuri += F("cmnd="); - nuri += LTrim(command); + nuri += command; // command = POWER1 ON or /any/link/starting/with/a/slash.php?log=123 String uri = UrlEncode(nuri); IPAddress host_ip; @@ -1947,19 +1953,19 @@ int WebSend(char *buffer) } if (connected) { - String url = F("GET /cm?"); + String url = F("GET "); url += uri; - url += F(" HTTP/1.1\r\n Host: "); + url += F(" HTTP/1.1\r\nHost: "); // url += IPAddress(host_ip).toString(); url += host; // https://tools.ietf.org/html/rfc7230#section-5.4 (#4331) if (port) { - url += F(" \r\n Port: "); + url += F(":"); url += port; } - url += F(" \r\n Connection: close\r\n\r\n"); + url += F("\r\nConnection: close\r\n\r\n"); -//snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str()); -//AddLog(LOG_LEVEL_DEBUG); +snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str()); +AddLog(LOG_LEVEL_DEBUG); client.print(url.c_str()); client.flush(); From 406907cbe27677b39f86865105e45f6441632cf6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 11:11:22 +0100 Subject: [PATCH 490/798] Revert "Update command WebSend" This reverts commit 59c581721470b654d495bea4caf2110aeb7be056. --- sonoff/_changelog.ino | 1 - sonoff/xdrv_01_webserver.ino | 40 +++++++++++++++--------------------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index e661b54fbb5b..ce35adbe004a 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,7 +2,6 @@ * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) * Change command WebSend Host header field from IP address to hostname (#4331) - * Add to command WebSend option to send a direct path when command starts with a slash (#4329) * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 5b989ce3b3cf..6f99b30a10f7 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1895,11 +1895,9 @@ String UrlEncode(const String& text) int WebSend(char *buffer) { - /* [sonoff] POWER1 ON --> Sends http://sonoff/cm?cmnd=POWER1 ON - * [192.168.178.86:80,admin:joker] POWER1 ON --> Sends http://hostname:80/cm?user=admin&password=joker&cmnd=POWER1 ON - * [sonoff] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 - * [sonoff,admin:joker] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 - */ + // http://192.168.178.86:80/cm?user=admin&password=joker&cmnd=POWER1 ON + // http://192.168.178.86:80/cm?cmnd=POWER1 ON + // [192.168.178.86:80,admin:joker] POWER1 ON char *host; char *port; @@ -1925,19 +1923,15 @@ int WebSend(char *buffer) if (port) { nport = atoi(port); } String nuri = ""; - command = LTrim(command); - if (command[0] != '/') { - nuri = "/cm?"; - if (user && password) { - nuri += F("user="); - nuri += user; - nuri += F("&password="); - nuri += password; - nuri += F("&"); - } - nuri += F("cmnd="); + if (user && password) { + nuri += F("user="); + nuri += user; + nuri += F("&password="); + nuri += password; + nuri += F("&"); } - nuri += command; // command = POWER1 ON or /any/link/starting/with/a/slash.php?log=123 + nuri += F("cmnd="); + nuri += LTrim(command); String uri = UrlEncode(nuri); IPAddress host_ip; @@ -1953,19 +1947,19 @@ int WebSend(char *buffer) } if (connected) { - String url = F("GET "); + String url = F("GET /cm?"); url += uri; - url += F(" HTTP/1.1\r\nHost: "); + url += F(" HTTP/1.1\r\n Host: "); // url += IPAddress(host_ip).toString(); url += host; // https://tools.ietf.org/html/rfc7230#section-5.4 (#4331) if (port) { - url += F(":"); + url += F(" \r\n Port: "); url += port; } - url += F("\r\nConnection: close\r\n\r\n"); + url += F(" \r\n Connection: close\r\n\r\n"); -snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str()); -AddLog(LOG_LEVEL_DEBUG); +//snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str()); +//AddLog(LOG_LEVEL_DEBUG); client.print(url.c_str()); client.flush(); From d3f5c8978b03f8ed1791c9d385ebb2e439550639 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 11:13:05 +0100 Subject: [PATCH 491/798] Update command WebSend * Change command WebSend Host header field from IP address to hostname (#4331) * Add to command WebSend option to send a direct path when command starts with a slash (#4329) --- sonoff/_changelog.ino | 1 + sonoff/xdrv_01_webserver.ino | 36 +++++++++++++++++++++--------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index ce35adbe004a..e661b54fbb5b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -2,6 +2,7 @@ * Fix wifi connection errors using wifi disconnect and ESP.reset instead of ESP.restart * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) * Change command WebSend Host header field from IP address to hostname (#4331) + * Add to command WebSend option to send a direct path when command starts with a slash (#4329) * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index 6f99b30a10f7..ed14472cdece 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1895,9 +1895,11 @@ String UrlEncode(const String& text) int WebSend(char *buffer) { - // http://192.168.178.86:80/cm?user=admin&password=joker&cmnd=POWER1 ON - // http://192.168.178.86:80/cm?cmnd=POWER1 ON - // [192.168.178.86:80,admin:joker] POWER1 ON + /* [sonoff] POWER1 ON --> Sends http://sonoff/cm?cmnd=POWER1 ON + * [192.168.178.86:80,admin:joker] POWER1 ON --> Sends http://hostname:80/cm?user=admin&password=joker&cmnd=POWER1 ON + * [sonoff] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 + * [sonoff,admin:joker] /any/link/starting/with/a/slash.php?log=123 --> Sends http://sonoff/any/link/starting/with/a/slash.php?log=123 + */ char *host; char *port; @@ -1923,15 +1925,19 @@ int WebSend(char *buffer) if (port) { nport = atoi(port); } String nuri = ""; - if (user && password) { - nuri += F("user="); - nuri += user; - nuri += F("&password="); - nuri += password; - nuri += F("&"); + command = LTrim(command); + if (command[0] != '/') { + nuri = "/cm?"; + if (user && password) { + nuri += F("user="); + nuri += user; + nuri += F("&password="); + nuri += password; + nuri += F("&"); + } + nuri += F("cmnd="); } - nuri += F("cmnd="); - nuri += LTrim(command); + nuri += command; // command = POWER1 ON or /any/link/starting/with/a/slash.php?log=123 String uri = UrlEncode(nuri); IPAddress host_ip; @@ -1947,16 +1953,16 @@ int WebSend(char *buffer) } if (connected) { - String url = F("GET /cm?"); + String url = F("GET "); url += uri; - url += F(" HTTP/1.1\r\n Host: "); + url += F(" HTTP/1.1\r\nHost: "); // url += IPAddress(host_ip).toString(); url += host; // https://tools.ietf.org/html/rfc7230#section-5.4 (#4331) if (port) { - url += F(" \r\n Port: "); + url += F(":"); url += port; } - url += F(" \r\n Connection: close\r\n\r\n"); + url += F("\r\nConnection: close\r\n\r\n"); //snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str()); //AddLog(LOG_LEVEL_DEBUG); From e2dd11b0bcd195c18c69a0f59822df46eec79f74 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 12:33:49 +0100 Subject: [PATCH 492/798] Consolidate LTrim into Trim Consolidate LTrim into Trim --- sonoff/_changelog.ino | 1 + sonoff/sonoff.ino | 6 +++--- sonoff/support.ino | 8 ++++---- sonoff/xdrv_01_webserver.ino | 29 ++++++++++++++++------------- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index e661b54fbb5b..cc698a3869a7 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -3,6 +3,7 @@ * Fix Sonoff Pow R2 and Sonoff S31 Serial interface hang caused by Sonoff Basic R2 driver delay implementation (and possibly core bug) * Change command WebSend Host header field from IP address to hostname (#4331) * Add to command WebSend option to send a direct path when command starts with a slash (#4329) + * Consolidate LTrim into Trim * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index e92536a1bcbb..0c7b16bebddc 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -531,7 +531,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) char *blcommand = strtok(dataBuf, ";"); while ((blcommand != NULL) && (backlog_index != bl_pointer)) { while(true) { - blcommand = LTrim(blcommand); + blcommand = Trim(blcommand); if (!strncasecmp_P(blcommand, PSTR(D_CMND_BACKLOG), strlen(D_CMND_BACKLOG))) { blcommand += strlen(D_CMND_BACKLOG); // Skip unnecessary command Backlog } else { @@ -1224,9 +1224,9 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) if (5 == tpos) { Settings.tflag[ts].hour = (value < 0) ? 0 : (value > 23) ? 23 : value; } if (6 == tpos) { Settings.toffset[ts] = (value < -900) ? -900 : (value > 900) ? 900 : value; } } - p = LTrim(p); // Skip spaces + p = Trim(p); // Skip spaces if (tpos && (*p == ',')) { p++; } // Skip separator - p = LTrim(p); // Skip spaces + p = Trim(p); // Skip spaces q = p; // Reset any value entered flag value = strtol(p, &p, 10); tpos++; // Next parameter diff --git a/sonoff/support.ino b/sonoff/support.ino index 0c5203d69f5d..7df675b13746 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -290,6 +290,7 @@ char* UpperCase_P(char* dest, const char* source) return dest; } +/* char* LTrim(char* p) { while ((*p != '\0') && (isblank(*p))) { @@ -308,14 +309,13 @@ char* RTrim(char* p) *q = '\0'; return p; } +*/ char* Trim(char* p) { - if (*p == '\0') { return p; } - while (isspace(*p)) { p++; } // Trim leading spaces - if (*p == '\0') { return p; } + while ((*p != '\0') && isblank(*p)) { p++; } // Trim leading spaces char* q = p + strlen(p) -1; - while (isspace(*q) && q >= p) { q--; } // Trim trailing spaces + while ((q >= p) && isblank(*q)) { q--; } // Trim trailing spaces q++; *q = '\0'; return p; diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index ed14472cdece..25c4c013bb63 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -1909,23 +1909,26 @@ int WebSend(char *buffer) uint16_t nport = 80; int status = 1; // Wrong parameters - host = strtok_r(buffer, "]", &command); // buffer = [192.168.178.86:80,admin:joker] POWER1 ON + // buffer = | [ 192.168.178.86 : 80 , admin : joker ] POWER1 ON | + host = strtok_r(buffer, "]", &command); // host = | [ 192.168.178.86 : 80 , admin : joker |, command = | POWER1 ON | if (host && command) { - host = LTrim(host); - host++; // Skip [ - host = strtok_r(host, ",", &user); // host = 192.168.178.86:80,admin:joker > 192.168.178.86:80 - host = strtok_r(host, ":", &port); // host = 192.168.178.86:80 > 192.168.178.86 + host = Trim(host); // host = |[ 192.168.178.86 : 80 , admin : joker| + host++; // host = | 192.168.178.86 : 80 , admin : joker| - Skip [ + host = strtok_r(host, ",", &user); // host = | 192.168.178.86 : 80 |, user = | admin : joker| + host = strtok_r(host, ":", &port); // host = | 192.168.178.86 |, port = | 80 | + host = Trim(host); // host = |192.168.178.86| + if (port) { + port = Trim(port); // port = |80| + nport = atoi(port); + } if (user) { - user = strtok_r(user, ":", &password); // user = admin:joker > admin + user = strtok_r(user, ":", &password); // user = | admin |, password = | joker| + user = Trim(user); // user = |admin| + if (password) { password = Trim(password); } // password = |joker| } - -//snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Buffer |%X|, Host |%X|, Port |%X|, User |%X|, Password |%X|, Command |%X|"), buffer, host, port, user, password, command); -//AddLog(LOG_LEVEL_DEBUG); - - if (port) { nport = atoi(port); } + command = Trim(command); // command = |POWER1 ON| or |/any/link/starting/with/a/slash.php?log=123| String nuri = ""; - command = LTrim(command); if (command[0] != '/') { nuri = "/cm?"; if (user && password) { @@ -1937,7 +1940,7 @@ int WebSend(char *buffer) } nuri += F("cmnd="); } - nuri += command; // command = POWER1 ON or /any/link/starting/with/a/slash.php?log=123 + nuri += command; String uri = UrlEncode(nuri); IPAddress host_ip; From 830319bc6e19cbeb4d5eeb813bbcf38850dcd125 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 15:09:09 +0100 Subject: [PATCH 493/798] Moved command SetSensorXX Moved command SetSensorXX to debugging --- sonoff/_changelog.ino | 1 + sonoff/i18n.h | 1 - sonoff/sonoff.ino | 15 +- .../{xdrv_95_debug.ino => xdrv_99_debug.ino} | 26 +- sonoff/xsns_interface.ino | 297 +---------------- sonoff/zzzz_debug.ino | 309 ++++++++++++++++++ 6 files changed, 340 insertions(+), 309 deletions(-) rename sonoff/{xdrv_95_debug.ino => xdrv_99_debug.ino} (94%) create mode 100644 sonoff/zzzz_debug.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index cc698a3869a7..60e68853d9f2 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -4,6 +4,7 @@ * Change command WebSend Host header field from IP address to hostname (#4331) * Add to command WebSend option to send a direct path when command starts with a slash (#4329) * Consolidate LTrim into Trim + * Moved command SetSensorXX to debugging * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 36d93ccd7b4f..f53433553537 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -184,7 +184,6 @@ #define D_CMND_DRIVER "Driver" #define D_CMND_SAVEDATA "SaveData" #define D_CMND_SETOPTION "SetOption" -#define D_CMND_SETSENSOR "SetSensor" #define D_CMND_TEMPERATURE_RESOLUTION "TempRes" #define D_CMND_HUMIDITY_RESOLUTION "HumRes" #define D_CMND_PRESSURE_RESOLUTION "PressRes" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 0c7b16bebddc..43ca32952ff5 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -81,7 +81,7 @@ enum TasmotaCommands { CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, - CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_SETSENSOR, + CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE, CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER, CMND_DRIVER }; const char kTasmotaCommands[] PROGMEM = @@ -91,7 +91,7 @@ const char kTasmotaCommands[] PROGMEM = D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" - D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_SETSENSOR "|" + D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER "|" D_CMND_DRIVER; @@ -777,13 +777,6 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, (2 == ptype) ? stemp1 : (1 == ptype) ? GetStateText(bitRead(Settings.flag3.data, pindex)) : GetStateText(bitRead(Settings.flag.data, pindex))); } } - else if ((CMND_SETSENSOR == command_code) && (index < MAX_XSNS_DRIVERS)) { - if ((payload >= 0) && XsnsPresent(index)) { - bitWrite(Settings.sensors[index / 32], index % 32, payload &1); - if (1 == payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str()); - } else if (CMND_TEMPERATURE_RESOLUTION == command_code) { if ((payload >= 0) && (payload <= 3)) { Settings.flag2.temperature_resolution = payload; @@ -1224,9 +1217,9 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) if (5 == tpos) { Settings.tflag[ts].hour = (value < 0) ? 0 : (value > 23) ? 23 : value; } if (6 == tpos) { Settings.toffset[ts] = (value < -900) ? -900 : (value > 900) ? 900 : value; } } - p = Trim(p); // Skip spaces + p = Trim(p); // Skip spaces if (tpos && (*p == ',')) { p++; } // Skip separator - p = Trim(p); // Skip spaces + p = Trim(p); // Skip spaces q = p; // Reset any value entered flag value = strtol(p, &p, 10); tpos++; // Next parameter diff --git a/sonoff/xdrv_95_debug.ino b/sonoff/xdrv_99_debug.ino similarity index 94% rename from sonoff/xdrv_95_debug.ino rename to sonoff/xdrv_99_debug.ino index 18f9ad76f6e8..26a5ad2dc6ec 100644 --- a/sonoff/xdrv_95_debug.ino +++ b/sonoff/xdrv_99_debug.ino @@ -1,5 +1,5 @@ /* - xdrv_95_debug.ino - debug support for Sonoff-Tasmota + xdrv_99_debug.ino - debug support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -27,10 +27,12 @@ #ifdef USE_DEBUG_DRIVER /*********************************************************************************************\ - * Virtual debugging support + * Virtual debugging support - Part1 + * + * Needs file zzzz_debug.ino due to DEFINE processing \*********************************************************************************************/ -#define XDRV_95 95 +#define XDRV_99 99 #ifndef CPU_LOAD_CHECK #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log @@ -50,9 +52,14 @@ #define D_CMND_FREEMEM "FreeMem" #define D_CMND_RTCDUMP "RtcDump" #define D_CMND_HELP "Help" +#define D_CMND_SETSENSOR "SetSensor" -enum DebugCommands { CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR, CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_HELP }; -const char kDebugCommands[] PROGMEM = D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|" D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_HELP; +enum DebugCommands { + CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR, + CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_SETSENSOR, CMND_HELP }; +const char kDebugCommands[] PROGMEM = + D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|" + D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_SETSENSOR "|" D_CMND_HELP; uint32_t CPU_loops = 0; uint32_t CPU_last_millis = 0; @@ -469,6 +476,13 @@ boolean DebugCommand() } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_show_freemem); } + else if ((CMND_SETSENSOR == command_code) && (XdrvMailbox.index < MAX_XSNS_DRIVERS)) { + if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) { + bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1); + if (1 == XdrvMailbox.payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str()); + } else serviced = false; // Unknown command return serviced; @@ -478,7 +492,7 @@ boolean DebugCommand() * Interface \*********************************************************************************************/ -boolean Xdrv95(byte function) +boolean Xdrv99(byte function) { boolean result = false; diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index 723e8f070097..ab466d25c5c5 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -265,309 +265,20 @@ boolean (* const xsns_func_ptr[])(byte) = { // Sensor Function Pointers for sim const uint8_t xsns_present = sizeof(xsns_func_ptr) / sizeof(xsns_func_ptr[0]); // Number of External Sensors found uint8_t xsns_index = 0; -#ifdef XFUNC_PTR_IN_ROM -const uint8_t kXsnsList[] PROGMEM = { -#else -const uint8_t kXsnsList[] = { -#endif - -#ifdef XSNS_01 - XSNS_01, -#endif - -#ifdef XSNS_02 - XSNS_02, -#endif - -#ifdef XSNS_03 - XSNS_03, -#endif - -#ifdef XSNS_04 - XSNS_04, -#endif - -#ifdef XSNS_05 - XSNS_05, -#endif - -#ifdef XSNS_06 - XSNS_06, -#endif - -#ifdef XSNS_07 - XSNS_07, -#endif - -#ifdef XSNS_08 - XSNS_08, -#endif - -#ifdef XSNS_09 - XSNS_09, -#endif - -#ifdef XSNS_10 - XSNS_10, -#endif - -#ifdef XSNS_11 - XSNS_11, -#endif - -#ifdef XSNS_12 - XSNS_12, -#endif - -#ifdef XSNS_13 - XSNS_13, -#endif - -#ifdef XSNS_14 - XSNS_14, -#endif - -#ifdef XSNS_15 - XSNS_15, -#endif - -#ifdef XSNS_16 - XSNS_16, -#endif - -#ifdef XSNS_17 - XSNS_17, -#endif - -#ifdef XSNS_18 - XSNS_18, -#endif - -#ifdef XSNS_19 - XSNS_19, -#endif - -#ifdef XSNS_20 - XSNS_20, -#endif - -#ifdef XSNS_21 - XSNS_21, -#endif - -#ifdef XSNS_22 - XSNS_22, -#endif - -#ifdef XSNS_23 - XSNS_23, -#endif - -#ifdef XSNS_24 - XSNS_24, -#endif - -#ifdef XSNS_25 - XSNS_25, -#endif - -#ifdef XSNS_26 - XSNS_26, -#endif - -#ifdef XSNS_27 - XSNS_27, -#endif - -#ifdef XSNS_28 - XSNS_28, -#endif - -#ifdef XSNS_29 - XSNS_29, -#endif - -#ifdef XSNS_30 - XSNS_30, -#endif - -#ifdef XSNS_31 - XSNS_31, -#endif - -#ifdef XSNS_32 - XSNS_32, -#endif - -#ifdef XSNS_33 - XSNS_33, -#endif - -#ifdef XSNS_34 - XSNS_34, -#endif - -#ifdef XSNS_35 - XSNS_35, -#endif - -#ifdef XSNS_36 - XSNS_36, -#endif - -#ifdef XSNS_37 - XSNS_37, -#endif - -#ifdef XSNS_38 - XSNS_38, -#endif - -#ifdef XSNS_39 - XSNS_39, -#endif - -#ifdef XSNS_40 - XSNS_40, -#endif - -#ifdef XSNS_41 - XSNS_41, -#endif - -#ifdef XSNS_42 - XSNS_42, -#endif - -#ifdef XSNS_43 - XSNS_43, -#endif - -#ifdef XSNS_44 - XSNS_44, -#endif - -#ifdef XSNS_45 - XSNS_45, -#endif - -#ifdef XSNS_46 - XSNS_46, -#endif - -#ifdef XSNS_47 - XSNS_47, -#endif - -#ifdef XSNS_48 - XSNS_48, -#endif - -#ifdef XSNS_49 - XSNS_49, -#endif - -#ifdef XSNS_50 - XSNS_50, -#endif - -// Optional user defined sensors in range 91 - 99 - -#ifdef XSNS_91 - XSNS_91, -#endif - -#ifdef XSNS_92 - XSNS_92, -#endif - -#ifdef XSNS_93 - XSNS_93, -#endif - -#ifdef XSNS_94 - XSNS_94, -#endif - -#ifdef XSNS_95 - XSNS_95, -#endif - -#ifdef XSNS_96 - XSNS_96, -#endif - -#ifdef XSNS_97 - XSNS_97, -#endif - -#ifdef XSNS_98 - XSNS_98, -#endif - -#ifdef XSNS_99 - XSNS_99 -#endif -}; - - /*********************************************************************************************\ * Function call to all xsns \*********************************************************************************************/ -boolean XsnsEnabled(byte sns_index) -{ - if (sns_index < sizeof(kXsnsList)) { -#ifdef XFUNC_PTR_IN_ROM - uint8_t index = pgm_read_byte(kXsnsList + sns_index); -#else - uint8_t index = kXsnsList[sns_index]; -#endif - return bitRead(Settings.sensors[index / 32], index % 32); - } - return 1; -} - -boolean XsnsPresent(byte sns_index) -{ - uint8_t index = 0; - for (byte i = 0; i < sizeof(kXsnsList); i++) { -#ifdef XFUNC_PTR_IN_ROM - index = pgm_read_byte(kXsnsList + i); -#else - index = kXsnsList[i]; -#endif - if (index == sns_index) { return true; } - } - return false; -} - -String XsnsGetSensors() -{ - char state[2] = { 0 }; - - String data = F("["); - for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { - if (i && (!(i % 16))) { data += F(","); } - if (!(i % 16)) { data += F("\""); } - state[0] = '-'; - if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } - data += String(state); - if (i && (!((i +1) % 16))) { data += F("\""); } - } - data += F("]"); - - return data; -} - boolean XsnsNextCall(byte Function) { xsns_index++; if (xsns_index == xsns_present) { xsns_index = 0; } +#ifdef USE_DEBUG_DRIVER while (!XsnsEnabled(xsns_index) && !xsns_index) { // Perform at least first sensor (counter) xsns_index++; if (xsns_index == xsns_present) { xsns_index = 0; } } +#endif AppDelay(); return xsns_func_ptr[xsns_index](Function); } @@ -581,7 +292,9 @@ boolean XsnsCall(byte Function) #endif // PROFILE_XSNS_EVERY_SECOND for (byte x = 0; x < xsns_present; x++) { +#ifdef USE_DEBUG_DRIVER if (XsnsEnabled(x)) { +#endif #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND uint32_t profile_start_millis = millis(); @@ -600,7 +313,9 @@ boolean XsnsCall(byte Function) #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND if (result) break; +#ifdef USE_DEBUG_DRIVER } +#endif } #ifdef PROFILE_XSNS_EVERY_SECOND diff --git a/sonoff/zzzz_debug.ino b/sonoff/zzzz_debug.ino new file mode 100644 index 000000000000..9f07c29ceab6 --- /dev/null +++ b/sonoff/zzzz_debug.ino @@ -0,0 +1,309 @@ +/* + zzzz_debug.ino - debug support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_DEBUG_DRIVER +/*********************************************************************************************\ + * Virtual debugging support - Part 2 + * + * Needs to be the last alphabetical file due to DEFINE compile order +\*********************************************************************************************/ + +/*********************************************************************************************\ + * Xsns available list +\*********************************************************************************************/ + +#ifdef XFUNC_PTR_IN_ROM +const uint8_t kXsnsList[] PROGMEM = { +#else +const uint8_t kXsnsList[] = { +#endif + +#ifdef XSNS_01 + XSNS_01, +#endif + +#ifdef XSNS_02 + XSNS_02, +#endif + +#ifdef XSNS_03 + XSNS_03, +#endif + +#ifdef XSNS_04 + XSNS_04, +#endif + +#ifdef XSNS_05 + XSNS_05, +#endif + +#ifdef XSNS_06 + XSNS_06, +#endif + +#ifdef XSNS_07 + XSNS_07, +#endif + +#ifdef XSNS_08 + XSNS_08, +#endif + +#ifdef XSNS_09 + XSNS_09, +#endif + +#ifdef XSNS_10 + XSNS_10, +#endif + +#ifdef XSNS_11 + XSNS_11, +#endif + +#ifdef XSNS_12 + XSNS_12, +#endif + +#ifdef XSNS_13 + XSNS_13, +#endif + +#ifdef XSNS_14 + XSNS_14, +#endif + +#ifdef XSNS_15 + XSNS_15, +#endif + +#ifdef XSNS_16 + XSNS_16, +#endif + +#ifdef XSNS_17 + XSNS_17, +#endif + +#ifdef XSNS_18 + XSNS_18, +#endif + +#ifdef XSNS_19 + XSNS_19, +#endif + +#ifdef XSNS_20 + XSNS_20, +#endif + +#ifdef XSNS_21 + XSNS_21, +#endif + +#ifdef XSNS_22 + XSNS_22, +#endif + +#ifdef XSNS_23 + XSNS_23, +#endif + +#ifdef XSNS_24 + XSNS_24, +#endif + +#ifdef XSNS_25 + XSNS_25, +#endif + +#ifdef XSNS_26 + XSNS_26, +#endif + +#ifdef XSNS_27 + XSNS_27, +#endif + +#ifdef XSNS_28 + XSNS_28, +#endif + +#ifdef XSNS_29 + XSNS_29, +#endif + +#ifdef XSNS_30 + XSNS_30, +#endif + +#ifdef XSNS_31 + XSNS_31, +#endif + +#ifdef XSNS_32 + XSNS_32, +#endif + +#ifdef XSNS_33 + XSNS_33, +#endif + +#ifdef XSNS_34 + XSNS_34, +#endif + +#ifdef XSNS_35 + XSNS_35, +#endif + +#ifdef XSNS_36 + XSNS_36, +#endif + +#ifdef XSNS_37 + XSNS_37, +#endif + +#ifdef XSNS_38 + XSNS_38, +#endif + +#ifdef XSNS_39 + XSNS_39, +#endif + +#ifdef XSNS_40 + XSNS_40, +#endif + +#ifdef XSNS_41 + XSNS_41, +#endif + +#ifdef XSNS_42 + XSNS_42, +#endif + +#ifdef XSNS_43 + XSNS_43, +#endif + +#ifdef XSNS_44 + XSNS_44, +#endif + +#ifdef XSNS_45 + XSNS_45, +#endif + +#ifdef XSNS_46 + XSNS_46, +#endif + +#ifdef XSNS_47 + XSNS_47, +#endif + +#ifdef XSNS_48 + XSNS_48, +#endif + +#ifdef XSNS_49 + XSNS_49, +#endif + +#ifdef XSNS_50 + XSNS_50, +#endif + +// Optional user defined sensors in range 91 - 99 + +#ifdef XSNS_91 + XSNS_91, +#endif + +#ifdef XSNS_92 + XSNS_92, +#endif + +#ifdef XSNS_93 + XSNS_93, +#endif + +#ifdef XSNS_94 + XSNS_94, +#endif + +#ifdef XSNS_95 + XSNS_95 +#endif +}; + +/*********************************************************************************************\ + * Xsns sensor control +\*********************************************************************************************/ + +boolean XsnsEnabled(byte sns_index) +{ + if (sns_index < sizeof(kXsnsList)) { +#ifdef XFUNC_PTR_IN_ROM + uint8_t index = pgm_read_byte(kXsnsList + sns_index); +#else + uint8_t index = kXsnsList[sns_index]; +#endif + return bitRead(Settings.sensors[index / 32], index % 32); + } + return 1; +} + +boolean XsnsPresent(byte sns_index) +{ + uint8_t index = 0; + for (byte i = 0; i < sizeof(kXsnsList); i++) { +#ifdef XFUNC_PTR_IN_ROM + index = pgm_read_byte(kXsnsList + i); +#else + index = kXsnsList[i]; +#endif + if (index == sns_index) { return true; } + } + return false; +} + +String XsnsGetSensors() +{ + char state[2] = { 0 }; + + String data = F("["); + for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { + if (i && (!(i % 16))) { data += F(","); } + if (!(i % 16)) { data += F("\""); } + state[0] = '-'; + if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } + data += String(state); + if (i && (!((i +1) % 16))) { data += F("\""); } + } + data += F("]"); + + return data; +} + +#endif // USE_DEBUG_DRIVER \ No newline at end of file From 3ef78e809548a26b0f621b6841846cb0b8872eac Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 12 Nov 2018 15:54:18 +0100 Subject: [PATCH 494/798] Revert "Moved command SetSensorXX" This reverts commit 830319bc6e19cbeb4d5eeb813bbcf38850dcd125. --- sonoff/_changelog.ino | 1 - sonoff/i18n.h | 1 + sonoff/sonoff.ino | 15 +- .../{xdrv_99_debug.ino => xdrv_95_debug.ino} | 26 +- sonoff/xsns_interface.ino | 297 ++++++++++++++++- sonoff/zzzz_debug.ino | 309 ------------------ 6 files changed, 309 insertions(+), 340 deletions(-) rename sonoff/{xdrv_99_debug.ino => xdrv_95_debug.ino} (94%) delete mode 100644 sonoff/zzzz_debug.ino diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 60e68853d9f2..cc698a3869a7 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -4,7 +4,6 @@ * Change command WebSend Host header field from IP address to hostname (#4331) * Add to command WebSend option to send a direct path when command starts with a slash (#4329) * Consolidate LTrim into Trim - * Moved command SetSensorXX to debugging * * 6.3.0.6 20181110 * Change GUI Configure Module by using AJAX for data fetch to cut page size (and memory use) by 40% diff --git a/sonoff/i18n.h b/sonoff/i18n.h index f53433553537..36d93ccd7b4f 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -184,6 +184,7 @@ #define D_CMND_DRIVER "Driver" #define D_CMND_SAVEDATA "SaveData" #define D_CMND_SETOPTION "SetOption" +#define D_CMND_SETSENSOR "SetSensor" #define D_CMND_TEMPERATURE_RESOLUTION "TempRes" #define D_CMND_HUMIDITY_RESOLUTION "HumRes" #define D_CMND_PRESSURE_RESOLUTION "PressRes" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 43ca32952ff5..0c7b16bebddc 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -81,7 +81,7 @@ enum TasmotaCommands { CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, - CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, + CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_SETSENSOR, CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE, CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER, CMND_DRIVER }; const char kTasmotaCommands[] PROGMEM = @@ -91,7 +91,7 @@ const char kTasmotaCommands[] PROGMEM = D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" - D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" + D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_SETSENSOR "|" D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER "|" D_CMND_DRIVER; @@ -777,6 +777,13 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, (2 == ptype) ? stemp1 : (1 == ptype) ? GetStateText(bitRead(Settings.flag3.data, pindex)) : GetStateText(bitRead(Settings.flag.data, pindex))); } } + else if ((CMND_SETSENSOR == command_code) && (index < MAX_XSNS_DRIVERS)) { + if ((payload >= 0) && XsnsPresent(index)) { + bitWrite(Settings.sensors[index / 32], index % 32, payload &1); + if (1 == payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str()); + } else if (CMND_TEMPERATURE_RESOLUTION == command_code) { if ((payload >= 0) && (payload <= 3)) { Settings.flag2.temperature_resolution = payload; @@ -1217,9 +1224,9 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) if (5 == tpos) { Settings.tflag[ts].hour = (value < 0) ? 0 : (value > 23) ? 23 : value; } if (6 == tpos) { Settings.toffset[ts] = (value < -900) ? -900 : (value > 900) ? 900 : value; } } - p = Trim(p); // Skip spaces + p = Trim(p); // Skip spaces if (tpos && (*p == ',')) { p++; } // Skip separator - p = Trim(p); // Skip spaces + p = Trim(p); // Skip spaces q = p; // Reset any value entered flag value = strtol(p, &p, 10); tpos++; // Next parameter diff --git a/sonoff/xdrv_99_debug.ino b/sonoff/xdrv_95_debug.ino similarity index 94% rename from sonoff/xdrv_99_debug.ino rename to sonoff/xdrv_95_debug.ino index 26a5ad2dc6ec..18f9ad76f6e8 100644 --- a/sonoff/xdrv_99_debug.ino +++ b/sonoff/xdrv_95_debug.ino @@ -1,5 +1,5 @@ /* - xdrv_99_debug.ino - debug support for Sonoff-Tasmota + xdrv_95_debug.ino - debug support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -27,12 +27,10 @@ #ifdef USE_DEBUG_DRIVER /*********************************************************************************************\ - * Virtual debugging support - Part1 - * - * Needs file zzzz_debug.ino due to DEFINE processing + * Virtual debugging support \*********************************************************************************************/ -#define XDRV_99 99 +#define XDRV_95 95 #ifndef CPU_LOAD_CHECK #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log @@ -52,14 +50,9 @@ #define D_CMND_FREEMEM "FreeMem" #define D_CMND_RTCDUMP "RtcDump" #define D_CMND_HELP "Help" -#define D_CMND_SETSENSOR "SetSensor" -enum DebugCommands { - CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR, - CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_SETSENSOR, CMND_HELP }; -const char kDebugCommands[] PROGMEM = - D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|" - D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_SETSENSOR "|" D_CMND_HELP; +enum DebugCommands { CMND_CFGDUMP, CMND_CFGPEEK, CMND_CFGPOKE, CMND_CFGSHOW, CMND_CFGXOR, CMND_CPUCHECK, CMND_EXCEPTION, CMND_FREEMEM, CMND_RTCDUMP, CMND_HELP }; +const char kDebugCommands[] PROGMEM = D_CMND_CFGDUMP "|" D_CMND_CFGPEEK "|" D_CMND_CFGPOKE "|" D_CMND_CFGSHOW "|" D_CMND_CFGXOR "|" D_CMND_CPUCHECK "|" D_CMND_EXCEPTION "|" D_CMND_FREEMEM "|" D_CMND_RTCDUMP "|" D_CMND_HELP; uint32_t CPU_loops = 0; uint32_t CPU_last_millis = 0; @@ -476,13 +469,6 @@ boolean DebugCommand() } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_show_freemem); } - else if ((CMND_SETSENSOR == command_code) && (XdrvMailbox.index < MAX_XSNS_DRIVERS)) { - if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) { - bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1); - if (1 == XdrvMailbox.payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str()); - } else serviced = false; // Unknown command return serviced; @@ -492,7 +478,7 @@ boolean DebugCommand() * Interface \*********************************************************************************************/ -boolean Xdrv99(byte function) +boolean Xdrv95(byte function) { boolean result = false; diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index ab466d25c5c5..723e8f070097 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -265,20 +265,309 @@ boolean (* const xsns_func_ptr[])(byte) = { // Sensor Function Pointers for sim const uint8_t xsns_present = sizeof(xsns_func_ptr) / sizeof(xsns_func_ptr[0]); // Number of External Sensors found uint8_t xsns_index = 0; +#ifdef XFUNC_PTR_IN_ROM +const uint8_t kXsnsList[] PROGMEM = { +#else +const uint8_t kXsnsList[] = { +#endif + +#ifdef XSNS_01 + XSNS_01, +#endif + +#ifdef XSNS_02 + XSNS_02, +#endif + +#ifdef XSNS_03 + XSNS_03, +#endif + +#ifdef XSNS_04 + XSNS_04, +#endif + +#ifdef XSNS_05 + XSNS_05, +#endif + +#ifdef XSNS_06 + XSNS_06, +#endif + +#ifdef XSNS_07 + XSNS_07, +#endif + +#ifdef XSNS_08 + XSNS_08, +#endif + +#ifdef XSNS_09 + XSNS_09, +#endif + +#ifdef XSNS_10 + XSNS_10, +#endif + +#ifdef XSNS_11 + XSNS_11, +#endif + +#ifdef XSNS_12 + XSNS_12, +#endif + +#ifdef XSNS_13 + XSNS_13, +#endif + +#ifdef XSNS_14 + XSNS_14, +#endif + +#ifdef XSNS_15 + XSNS_15, +#endif + +#ifdef XSNS_16 + XSNS_16, +#endif + +#ifdef XSNS_17 + XSNS_17, +#endif + +#ifdef XSNS_18 + XSNS_18, +#endif + +#ifdef XSNS_19 + XSNS_19, +#endif + +#ifdef XSNS_20 + XSNS_20, +#endif + +#ifdef XSNS_21 + XSNS_21, +#endif + +#ifdef XSNS_22 + XSNS_22, +#endif + +#ifdef XSNS_23 + XSNS_23, +#endif + +#ifdef XSNS_24 + XSNS_24, +#endif + +#ifdef XSNS_25 + XSNS_25, +#endif + +#ifdef XSNS_26 + XSNS_26, +#endif + +#ifdef XSNS_27 + XSNS_27, +#endif + +#ifdef XSNS_28 + XSNS_28, +#endif + +#ifdef XSNS_29 + XSNS_29, +#endif + +#ifdef XSNS_30 + XSNS_30, +#endif + +#ifdef XSNS_31 + XSNS_31, +#endif + +#ifdef XSNS_32 + XSNS_32, +#endif + +#ifdef XSNS_33 + XSNS_33, +#endif + +#ifdef XSNS_34 + XSNS_34, +#endif + +#ifdef XSNS_35 + XSNS_35, +#endif + +#ifdef XSNS_36 + XSNS_36, +#endif + +#ifdef XSNS_37 + XSNS_37, +#endif + +#ifdef XSNS_38 + XSNS_38, +#endif + +#ifdef XSNS_39 + XSNS_39, +#endif + +#ifdef XSNS_40 + XSNS_40, +#endif + +#ifdef XSNS_41 + XSNS_41, +#endif + +#ifdef XSNS_42 + XSNS_42, +#endif + +#ifdef XSNS_43 + XSNS_43, +#endif + +#ifdef XSNS_44 + XSNS_44, +#endif + +#ifdef XSNS_45 + XSNS_45, +#endif + +#ifdef XSNS_46 + XSNS_46, +#endif + +#ifdef XSNS_47 + XSNS_47, +#endif + +#ifdef XSNS_48 + XSNS_48, +#endif + +#ifdef XSNS_49 + XSNS_49, +#endif + +#ifdef XSNS_50 + XSNS_50, +#endif + +// Optional user defined sensors in range 91 - 99 + +#ifdef XSNS_91 + XSNS_91, +#endif + +#ifdef XSNS_92 + XSNS_92, +#endif + +#ifdef XSNS_93 + XSNS_93, +#endif + +#ifdef XSNS_94 + XSNS_94, +#endif + +#ifdef XSNS_95 + XSNS_95, +#endif + +#ifdef XSNS_96 + XSNS_96, +#endif + +#ifdef XSNS_97 + XSNS_97, +#endif + +#ifdef XSNS_98 + XSNS_98, +#endif + +#ifdef XSNS_99 + XSNS_99 +#endif +}; + + /*********************************************************************************************\ * Function call to all xsns \*********************************************************************************************/ +boolean XsnsEnabled(byte sns_index) +{ + if (sns_index < sizeof(kXsnsList)) { +#ifdef XFUNC_PTR_IN_ROM + uint8_t index = pgm_read_byte(kXsnsList + sns_index); +#else + uint8_t index = kXsnsList[sns_index]; +#endif + return bitRead(Settings.sensors[index / 32], index % 32); + } + return 1; +} + +boolean XsnsPresent(byte sns_index) +{ + uint8_t index = 0; + for (byte i = 0; i < sizeof(kXsnsList); i++) { +#ifdef XFUNC_PTR_IN_ROM + index = pgm_read_byte(kXsnsList + i); +#else + index = kXsnsList[i]; +#endif + if (index == sns_index) { return true; } + } + return false; +} + +String XsnsGetSensors() +{ + char state[2] = { 0 }; + + String data = F("["); + for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { + if (i && (!(i % 16))) { data += F(","); } + if (!(i % 16)) { data += F("\""); } + state[0] = '-'; + if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } + data += String(state); + if (i && (!((i +1) % 16))) { data += F("\""); } + } + data += F("]"); + + return data; +} + boolean XsnsNextCall(byte Function) { xsns_index++; if (xsns_index == xsns_present) { xsns_index = 0; } -#ifdef USE_DEBUG_DRIVER while (!XsnsEnabled(xsns_index) && !xsns_index) { // Perform at least first sensor (counter) xsns_index++; if (xsns_index == xsns_present) { xsns_index = 0; } } -#endif AppDelay(); return xsns_func_ptr[xsns_index](Function); } @@ -292,9 +581,7 @@ boolean XsnsCall(byte Function) #endif // PROFILE_XSNS_EVERY_SECOND for (byte x = 0; x < xsns_present; x++) { -#ifdef USE_DEBUG_DRIVER if (XsnsEnabled(x)) { -#endif #ifdef PROFILE_XSNS_SENSOR_EVERY_SECOND uint32_t profile_start_millis = millis(); @@ -313,9 +600,7 @@ boolean XsnsCall(byte Function) #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND if (result) break; -#ifdef USE_DEBUG_DRIVER } -#endif } #ifdef PROFILE_XSNS_EVERY_SECOND diff --git a/sonoff/zzzz_debug.ino b/sonoff/zzzz_debug.ino deleted file mode 100644 index 9f07c29ceab6..000000000000 --- a/sonoff/zzzz_debug.ino +++ /dev/null @@ -1,309 +0,0 @@ -/* - zzzz_debug.ino - debug support for Sonoff-Tasmota - - Copyright (C) 2018 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifdef USE_DEBUG_DRIVER -/*********************************************************************************************\ - * Virtual debugging support - Part 2 - * - * Needs to be the last alphabetical file due to DEFINE compile order -\*********************************************************************************************/ - -/*********************************************************************************************\ - * Xsns available list -\*********************************************************************************************/ - -#ifdef XFUNC_PTR_IN_ROM -const uint8_t kXsnsList[] PROGMEM = { -#else -const uint8_t kXsnsList[] = { -#endif - -#ifdef XSNS_01 - XSNS_01, -#endif - -#ifdef XSNS_02 - XSNS_02, -#endif - -#ifdef XSNS_03 - XSNS_03, -#endif - -#ifdef XSNS_04 - XSNS_04, -#endif - -#ifdef XSNS_05 - XSNS_05, -#endif - -#ifdef XSNS_06 - XSNS_06, -#endif - -#ifdef XSNS_07 - XSNS_07, -#endif - -#ifdef XSNS_08 - XSNS_08, -#endif - -#ifdef XSNS_09 - XSNS_09, -#endif - -#ifdef XSNS_10 - XSNS_10, -#endif - -#ifdef XSNS_11 - XSNS_11, -#endif - -#ifdef XSNS_12 - XSNS_12, -#endif - -#ifdef XSNS_13 - XSNS_13, -#endif - -#ifdef XSNS_14 - XSNS_14, -#endif - -#ifdef XSNS_15 - XSNS_15, -#endif - -#ifdef XSNS_16 - XSNS_16, -#endif - -#ifdef XSNS_17 - XSNS_17, -#endif - -#ifdef XSNS_18 - XSNS_18, -#endif - -#ifdef XSNS_19 - XSNS_19, -#endif - -#ifdef XSNS_20 - XSNS_20, -#endif - -#ifdef XSNS_21 - XSNS_21, -#endif - -#ifdef XSNS_22 - XSNS_22, -#endif - -#ifdef XSNS_23 - XSNS_23, -#endif - -#ifdef XSNS_24 - XSNS_24, -#endif - -#ifdef XSNS_25 - XSNS_25, -#endif - -#ifdef XSNS_26 - XSNS_26, -#endif - -#ifdef XSNS_27 - XSNS_27, -#endif - -#ifdef XSNS_28 - XSNS_28, -#endif - -#ifdef XSNS_29 - XSNS_29, -#endif - -#ifdef XSNS_30 - XSNS_30, -#endif - -#ifdef XSNS_31 - XSNS_31, -#endif - -#ifdef XSNS_32 - XSNS_32, -#endif - -#ifdef XSNS_33 - XSNS_33, -#endif - -#ifdef XSNS_34 - XSNS_34, -#endif - -#ifdef XSNS_35 - XSNS_35, -#endif - -#ifdef XSNS_36 - XSNS_36, -#endif - -#ifdef XSNS_37 - XSNS_37, -#endif - -#ifdef XSNS_38 - XSNS_38, -#endif - -#ifdef XSNS_39 - XSNS_39, -#endif - -#ifdef XSNS_40 - XSNS_40, -#endif - -#ifdef XSNS_41 - XSNS_41, -#endif - -#ifdef XSNS_42 - XSNS_42, -#endif - -#ifdef XSNS_43 - XSNS_43, -#endif - -#ifdef XSNS_44 - XSNS_44, -#endif - -#ifdef XSNS_45 - XSNS_45, -#endif - -#ifdef XSNS_46 - XSNS_46, -#endif - -#ifdef XSNS_47 - XSNS_47, -#endif - -#ifdef XSNS_48 - XSNS_48, -#endif - -#ifdef XSNS_49 - XSNS_49, -#endif - -#ifdef XSNS_50 - XSNS_50, -#endif - -// Optional user defined sensors in range 91 - 99 - -#ifdef XSNS_91 - XSNS_91, -#endif - -#ifdef XSNS_92 - XSNS_92, -#endif - -#ifdef XSNS_93 - XSNS_93, -#endif - -#ifdef XSNS_94 - XSNS_94, -#endif - -#ifdef XSNS_95 - XSNS_95 -#endif -}; - -/*********************************************************************************************\ - * Xsns sensor control -\*********************************************************************************************/ - -boolean XsnsEnabled(byte sns_index) -{ - if (sns_index < sizeof(kXsnsList)) { -#ifdef XFUNC_PTR_IN_ROM - uint8_t index = pgm_read_byte(kXsnsList + sns_index); -#else - uint8_t index = kXsnsList[sns_index]; -#endif - return bitRead(Settings.sensors[index / 32], index % 32); - } - return 1; -} - -boolean XsnsPresent(byte sns_index) -{ - uint8_t index = 0; - for (byte i = 0; i < sizeof(kXsnsList); i++) { -#ifdef XFUNC_PTR_IN_ROM - index = pgm_read_byte(kXsnsList + i); -#else - index = kXsnsList[i]; -#endif - if (index == sns_index) { return true; } - } - return false; -} - -String XsnsGetSensors() -{ - char state[2] = { 0 }; - - String data = F("["); - for (byte i = 0; i < MAX_XSNS_DRIVERS; i++) { - if (i && (!(i % 16))) { data += F(","); } - if (!(i % 16)) { data += F("\""); } - state[0] = '-'; - if (XsnsPresent(i)) { state[0] = bitRead(Settings.sensors[i / 32], i % 32) ? '1' : '0'; } - data += String(state); - if (i && (!((i +1) % 16))) { data += F("\""); } - } - data += F("]"); - - return data; -} - -#endif // USE_DEBUG_DRIVER \ No newline at end of file From dd00af3fe0f74494190602829244ebbda522695a Mon Sep 17 00:00:00 2001 From: Norbert Richter Date: Mon, 12 Nov 2018 16:08:09 +0100 Subject: [PATCH 495/798] decode-config.py: add features Tasmota cmnds, grouping and filters - add restore value validation - add '--force-restore' - add output filter by Tasmota groups '--filter [...]' - add '--output' and '--output-format cmnd' (adds - most of all - Tasomta command output) - add Tasomta command output control: '--cmnd-indent', '--cmnd-groups', '--cmnd-nogroups', '--cmnd-sort', '--cmnd-unsort' - removed 'raw' data handling (obsolete) --- tools/decode-config.html | 253 +++-- tools/decode-config.md | 177 +++- tools/decode-config.py | 2077 +++++++++++++++++++++++--------------- 3 files changed, 1589 insertions(+), 918 deletions(-) diff --git a/tools/decode-config.html b/tools/decode-config.html index dd3d43d0199b..4fa7b4e04499 100644 --- a/tools/decode-config.html +++ b/tools/decode-config.html @@ -1,5 +1,11 @@

decode-config.py

-

decode-config.py backup and restore Sonoff-Tasmota configuration.

+

decode-config.py is able to backup and restore Sonoff-Tasmota configuration.

+

In contrast to the Tasmota build-in "Backup/Restore Configuration" function,

+
    +
  • decode-config.py uses human readable and editable JSON-format for backup/restore,
  • +
  • decode-config.py can restore previous backuped and changed JSON-format files,
  • +
  • decode-config.py is able to create Tasomta commands based on given configuration
  • +

Comparing backup files created by decode-config.py and *.dmp files created by Tasmota "Backup/Restore Configuration":

@@ -32,29 +38,35 @@

decode-config.py

-

decode-config.py handles Tasmota configurations for release version since 5.10.0 up to now.

+

decode-config.py is able to handle Tasmota configurations for release version starting from 5.10.0 up to now.

Content