diff --git a/src/hasp.cpp b/src/hasp.cpp index b6b4e619..43cbcb24 100644 --- a/src/hasp.cpp +++ b/src/hasp.cpp @@ -571,7 +571,7 @@ void haspLoadPage(const char * pages) Log.notice(TAG_HASP, F("Loading file %s"), pages); File file = HASP_FS.open(pages, "r"); - dispatchParseJsonl(file); + dispatch_parse_jsonl(file); file.close(); Log.trace(TAG_HASP, F("File %s loaded"), pages); diff --git a/src/hasp_debug.cpp b/src/hasp_debug.cpp index 8fa817e1..804af890 100644 --- a/src/hasp_debug.cpp +++ b/src/hasp_debug.cpp @@ -153,7 +153,7 @@ void debugSetup() // memset(serialInputBuffer, 0, sizeof(serialInputBuffer)); // serialInputIndex = 0; Log.notice(TAG_DEBG, F("Setting the console parser")); - debugConsole.setLineCallback(dispatchTextLine); + debugConsole.setLineCallback(dispatch_text_line); } void debugStartSyslog() @@ -673,11 +673,11 @@ void IRAM_ATTR debugLoop(void) switch(keypress) { case ConsoleInput::KEY_PAGE_UP: - dispatchPageNext(); + dispatch_page_next(); break; case ConsoleInput::KEY_PAGE_DOWN: - dispatchPagePrev(); + dispatch_page_prev(); break; case(ConsoleInput::KEY_FN)...(ConsoleInput::KEY_FN + 12): diff --git a/src/hasp_dispatch.cpp b/src/hasp_dispatch.cpp index a92a1a4d..0dc6efc4 100644 --- a/src/hasp_dispatch.cpp +++ b/src/hasp_dispatch.cpp @@ -18,7 +18,9 @@ #include "hasp.h" uint8_t nCommands = 0; -haspCommand_t commands[15]; +haspCommand_t commands[16]; + +static void dispatch_config(const char * topic, const char * payload); bool is_true(const char * s) { @@ -26,6 +28,19 @@ bool is_true(const char * s) !strcmp_P(s, PSTR("1"))); } +void dispatch_screenshot(const char *, const char * filename) +{ + if(strlen(filename) == 0) { // no filename given + char tempfile[32]; + memcpy_P(tempfile, PSTR("/screenshot.bmp"), sizeof(tempfile)); + guiTakeScreenshot(tempfile); + } else if(strlen(filename) > 31 || filename[0] != '/') { // Invalid filename + Log.warning(TAG_MSGR, "Invalid filename %s", filename); + } else { // Valid filename + guiTakeScreenshot(filename); + } +} + // Format filesystem and erase EEPROM bool dispatch_factory_reset() { @@ -68,7 +83,7 @@ void dispatchGpioOutput(String strTopic, const char * payload) dispatchGpioOutput(strTemp.toInt(), is_true(payload)); } -// p[x].b[y]=value +// p[x].b[y].attr=value inline void dispatch_process_button_attribute(String strTopic, const char * payload) { // Log.verbose(TAG_MSGR,F("BTN ATTR: %s = %s"), strTopic.c_str(), payload); @@ -97,7 +112,7 @@ inline void dispatch_process_button_attribute(String strTopic, const char * payl } // objectattribute=value -void dispatchCommand(const char * topic, const char * payload) +void dispatch_command(const char * topic, const char * payload) { /* ================================= Standard payload commands ======================================= */ @@ -105,7 +120,7 @@ void dispatchCommand(const char * topic, const char * payload) for(int i = 0; i < nCommands; i++) { if(!strcasecmp_P(topic, commands[i].p_cmdstr)) { // Log.warning(TAG_MSGR, F("Command %d found in array !!!"), i); - commands[i].func((char *)payload); /* execute command */ + commands[i].func(topic, payload); /* execute command */ return; } } @@ -115,8 +130,8 @@ void dispatchCommand(const char * topic, const char * payload) if(strlen(topic) == 7 && topic == strstr_P(topic, PSTR("output"))) { dispatchGpioOutput(topic, payload); - } else if(strcasecmp_P(topic, PSTR("screenshot")) == 0) { - guiTakeScreenshot("/screenshot.bmp"); // Literal String + // } else if(strcasecmp_P(topic, PSTR("screenshot")) == 0) { + // guiTakeScreenshot("/screenshot.bmp"); // Literal String } else if(topic == strstr_P(topic, PSTR("p["))) { dispatch_process_button_attribute(topic, payload); @@ -140,19 +155,19 @@ void dispatchCommand(const char * topic, const char * payload) } else { if(strlen(payload) == 0) { - // dispatchTextLine(topic); // Could cause an infinite loop! + // dispatch_text_line(topic); // Could cause an infinite loop! } Log.warning(TAG_MSGR, F("Command '%s' not found => %s"), topic, payload); } } // Strip command/config prefix from the topic and process the payload -void dispatchTopicPayload(const char * topic, const char * payload) +void dispatch_topic_payload(const char * topic, const char * payload) { // Log.verbose(TAG_MSGR,F("TOPIC: short topic: %s"), topic); if(!strcmp_P(topic, PSTR("command"))) { - dispatchTextLine((char *)payload); + dispatch_text_line((char *)payload); return; } @@ -162,63 +177,54 @@ void dispatchTopicPayload(const char * topic, const char * payload) // '[...]/device/command/p[1].b[4].txt' -m '"Lights On"' == // nextionSetAttr("p[1].b[4].txt", "\"Lights On\"") - dispatchCommand(topic, (char *)payload); + dispatch_command(topic, (char *)payload); return; } if(topic == strstr_P(topic, PSTR("config/"))) { // startsWith command/ topic += 7u; - dispatchConfig(topic, (char *)payload); + dispatch_config(topic, (char *)payload); return; } - dispatchCommand(topic, (char *)payload); // dispatch as is + dispatch_command(topic, (char *)payload); // dispatch as is } -// Parse one line of text and execute the command(s) -void dispatchTextLine(const char * cmnd) +// Parse one line of text and execute the command +void dispatch_text_line(const char * cmnd) { - // dispatchPrintln(F("CMND"), cmnd); + size_t pos1 = std::string(cmnd).find("="); + size_t pos2 = std::string(cmnd).find(" "); + size_t pos = 0; - if(cmnd == strstr_P(cmnd, PSTR("page "))) { // startsWith command/ - dispatchPage(cmnd + 5); + // Find what comes first, ' ' or '=' + if(pos1 != std::string::npos) { + if(pos2 != std::string::npos) { + pos = (pos1 < pos2 ? pos1 : pos2); + } else { + pos = pos1; + } } else { - size_t pos1 = std::string(cmnd).find("="); - size_t pos2 = std::string(cmnd).find(" "); - int pos = 0; + pos = (pos2 != std::string::npos) ? pos2 : 0; + } - if(pos1 != std::string::npos) { - if(pos2 != std::string::npos) { - pos = (pos1 < pos2 ? pos1 : pos2); - } else { - pos = pos1; - } + if(pos > 0) { // ' ' or '=' found + char topic[64]; + memset(topic, 0, sizeof(topic)); + if(pos < sizeof(topic)) + memcpy(topic, cmnd, pos); + else + memcpy(topic, cmnd, sizeof(topic) - 1); - } else if(pos2 != std::string::npos) { - pos = pos2; - } else { - pos = 0; - } - - if(pos > 0) { - String strTopic((char *)0); - // String strPayload((char *)0); - - strTopic.reserve(pos + 1); - // strPayload.reserve(128); - - strTopic = String(cmnd).substring(0, pos); - // strPayload = cmnd.substring(pos + 1, cmnd.length()); - // cmnd[pos] = 0; // change '=' character into '\0' - - dispatchTopicPayload(strTopic.c_str(), - cmnd + pos + 1); // topic is before '=', payload is after '=' position - } else { - char buf[1] = {0}; - dispatchTopicPayload(cmnd, buf); - } + // topic is before '=', payload is after '=' position + Log.notice(TAG_MSGR, F("%s = %s"), topic, cmnd + pos + 1); + dispatch_topic_payload(topic, cmnd + pos + 1); + } else { + char empty_payload[1] = {0}; + Log.notice(TAG_MSGR, F("%s = %s"), cmnd, empty_payload); + dispatch_topic_payload(cmnd, empty_payload); } } @@ -240,23 +246,6 @@ void dispatch_output_idle_state(const char * state) #endif } -// restart the device -void dispatchReboot(bool saveConfig) -{ - if(saveConfig) configWriteConfig(); -#if HASP_USE_MQTT > 0 - mqttStop(); // Stop the MQTT Client first -#endif - debugStop(); -#if HASP_USE_WIFI > 0 - wifiStop(); -#endif - Log.verbose(TAG_MSGR, F("-------------------------------------")); - Log.notice(TAG_MSGR, F("HALT: Properly Rebooting the MCU now!")); - Serial.flush(); - halRestartMcu(); -} - void dispatch_button(uint8_t id, const char * event) { #if !defined(HASP_USE_MQTT) && !defined(HASP_USE_TASMOTA_SLAVE) @@ -388,7 +377,7 @@ void IRAM_ATTR dispatch_obj_attribute_str(uint8_t pageid, uint8_t btnid, const c } // Get or Set a part of the config.json file -void dispatchConfig(const char * topic, const char * payload) +static void dispatch_config(const char * topic, const char * payload) { DynamicJsonDocument doc(128 * 2); char buffer[128 * 2]; @@ -487,7 +476,7 @@ void dispatchConfig(const char * topic, const char * payload) /********************************************** Native Commands ****************************************/ -void dispatchParseJson(const char * payload) +void dispatch_parse_json(const char *, const char * payload) { // Parse an incoming JSON array into individual commands /* if(strPayload.endsWith(",]")) { // Trailing null array elements are an artifact of older Home Assistant automations @@ -502,54 +491,68 @@ void dispatchParseJson(const char * payload) if(jsonError) { // Couldn't parse incoming JSON command Log.warning(TAG_MSGR, F("Failed to parse incoming JSON command with error: %s"), jsonError.c_str()); - } else { - if(json.is()) { - // handle json as an array of commands - JsonArray arr = json.as(); - for(JsonVariant command : arr) { - dispatchTextLine(command.as().c_str()); - } - } else if(json.is()) { - // handle json as a jsonl - uint8_t savedPage = haspGetPage(); - hasp_new_object(json.as(), savedPage); - } else if(json.is()) { - // handle json as a single command - dispatchTextLine(json.as()); - } else if(json.is()) { - // handle json as a single command - dispatchTextLine(json.as()); - } else if(json.is()) { - // handle json as a single command - dispatchTextLine(json.as().c_str()); - } else { - Log.warning(TAG_MSGR, F("Failed to parse incoming JSON command")); + } else if(json.is()) { // handle json as an array of commands + JsonArray arr = json.as(); + for(JsonVariant command : arr) { + dispatch_text_line(command.as().c_str()); } + } else if(json.is()) { // handle json as a jsonl + uint8_t savedPage = haspGetPage(); + hasp_new_object(json.as(), savedPage); + + } else if(json.is()) { // handle json as a single command + dispatch_text_line(json.as()); + + } else if(json.is()) { // handle json as a single command + dispatch_text_line(json.as()); + + } else if(json.is()) { // handle json as a single command + dispatch_text_line(json.as().c_str()); + + } else { + Log.warning(TAG_MSGR, F("Failed to parse incoming JSON command")); } } -void dispatchParseJsonl(Stream & stream) +void dispatch_parse_jsonl(Stream & stream) { - DynamicJsonDocument jsonl(4 * 128u); uint8_t savedPage = haspGetPage(); + size_t line = 1; + DynamicJsonDocument jsonl(4 * 128u); // max ~256 characters per line + DeserializationError err = deserializeJson(jsonl, stream); - // Log.notice(TAG_MSGR,F("DISPATCH: jsonl")); - - while(deserializeJson(jsonl, stream) == DeserializationError::Ok) { - // serializeJson(jsonl, Serial); - // Serial.println(); + while(err == DeserializationError::Ok) { hasp_new_object(jsonl.as(), savedPage); + err = deserializeJson(jsonl, stream); + line++; + } + + /* For debugging pourposes */ + if(err == DeserializationError::EmptyInput) { + Log.trace(TAG_MSGR, F("Jsonl parsed successfully")); + + } else if(err == DeserializationError::InvalidInput || err == DeserializationError::IncompleteInput) { + Log.error(TAG_MSGR, F("Jsonl: Invalid Input at object %d"), line); + + } else if(err == DeserializationError::NoMemory) { + Log.error(TAG_MSGR, F("Jsonl: No Memory at object %d"), line); + + } else if(err == DeserializationError::NotSupported) { + Log.error(TAG_MSGR, F("Jsonl: Not Supported at object %d"), line); + + } else if(err == DeserializationError::TooDeep) { + Log.error(TAG_MSGR, F("Jsonl: Too Deep at object %d"), line); } } -void dispatchParseJsonl(const char * payload) +void dispatch_parse_jsonl(const char *, const char * payload) { CharStream stream((char *)payload); - dispatchParseJsonl(stream); + dispatch_parse_jsonl(stream); } -void dispatchCurrentPage() +void dispatch_output_current_page() { // Log result char buffer[4]; @@ -565,16 +568,16 @@ void dispatchCurrentPage() } // Get or Set a page -void dispatchPage(const char * page) +void dispatch_page(const char *, const char * page) { if(strlen(page) > 0 && atoi(page) < HASP_NUM_PAGES) { haspSetPage(atoi(page)); } - dispatchCurrentPage(); + dispatch_output_current_page(); } -void dispatchPageNext() +void dispatch_page_next() { uint8_t page = haspGetPage(); if(page + 1 >= HASP_NUM_PAGES) { @@ -583,10 +586,10 @@ void dispatchPageNext() page++; } haspSetPage(page); - dispatchCurrentPage(); + dispatch_output_current_page(); } -void dispatchPagePrev() +void dispatch_page_prev() { uint8_t page = haspGetPage(); if(page == 0) { @@ -595,11 +598,11 @@ void dispatchPagePrev() page--; } haspSetPage(page); - dispatchCurrentPage(); + dispatch_output_current_page(); } // Clears a page id or the current page if empty -void dispatchClearPage(const char * page) +void dispatch_clear_page(const char *, const char * page) { if(strlen(page) == 0) { haspClearPage(haspGetPage()); @@ -608,14 +611,13 @@ void dispatchClearPage(const char * page) } } -void dispatchDim(const char * level) +void dispatch_dim(const char *, const char * level) { // Set the current state if(strlen(level) != 0) guiSetDim(atoi(level)); - // dispatchPrintln(F("DIM"), strDimLevel); - char buffer[4]; #if defined(HASP_USE_MQTT) || defined(HASP_USE_TASMOTA_SLAVE) + char buffer[4]; itoa(guiGetDim(), buffer, DEC); #if HASP_USE_MQTT > 0 @@ -629,11 +631,8 @@ void dispatchDim(const char * level) #endif } -void dispatchBacklight(const char * payload) +void dispatch_backlight(const char *, const char * payload) { - // strPayload.toUpperCase(); - // dispatchPrintln(F("LIGHT"), strPayload); - // Set the current state if(strlen(payload) != 0) guiSetBacklight(is_true(payload)); @@ -658,7 +657,7 @@ void dispatch_output_statusupdate() #endif } -void dispatchWebUpdate(const char * espOtaUrl) +void dispatch_web_update(const char *, const char * espOtaUrl) { #if HASP_USE_OTA > 0 Log.notice(TAG_MSGR, F("Checking for updates at URL: %s"), espOtaUrl); @@ -666,38 +665,55 @@ void dispatchWebUpdate(const char * espOtaUrl) #endif } +// restart the device +void dispatch_reboot(bool saveConfig) +{ + if(saveConfig) configWriteConfig(); +#if HASP_USE_MQTT > 0 + mqttStop(); // Stop the MQTT Client first +#endif + debugStop(); +#if HASP_USE_WIFI > 0 + wifiStop(); +#endif + Log.verbose(TAG_MSGR, F("-------------------------------------")); + Log.notice(TAG_MSGR, F("HALT: Properly Rebooting the MCU now!")); + Serial.flush(); + halRestartMcu(); +} + /******************************************* Command Wrapper Functions *********************************/ -void dispatch_output_statusupdate(const char *) +void dispatch_output_statusupdate(const char *, const char *) { dispatch_output_statusupdate(); } -void dispatchCalibrate(const char *) +void dispatch_calibrate(const char *, const char *) { guiCalibrate(); } -void dispatchWakeup(const char *) +void dispatch_wakeup(const char *, const char *) { haspWakeUp(); } -void dispatchReboot(const char *) +void dispatch_reboot(const char *, const char *) { - dispatchReboot(true); + dispatch_reboot(true); } -void dispatch_factory_reset(const char *) +void dispatch_factory_reset(const char *, const char *) { dispatch_factory_reset(); - delay(250); - dispatchReboot(false); // don't save config + delay(500); + dispatch_reboot(false); // don't save config } /******************************************* Commands builder *******************************************/ -static void dispatch_add_command(const char * p_cmdstr, void (*func)(const char *)) +static void dispatch_add_command(const char * p_cmdstr, void (*func)(const char *, const char *)) { if(nCommands >= sizeof(commands) / sizeof(haspCommand_t)) { Log.fatal(TAG_MSGR, F("Dispatchcer command array overflow: %d"), nCommands); @@ -716,22 +732,23 @@ void dispatchSetup() // The command.func() call will receive the full payload as ONLY parameter! /* WARNING: remember to expand the commands array when adding new commands */ - - dispatch_add_command(PSTR("json"), dispatchParseJson); - dispatch_add_command(PSTR("page"), dispatchPage); - dispatch_add_command(PSTR("wakeup"), dispatchWakeup); + dispatch_add_command(PSTR("json"), dispatch_parse_json); + dispatch_add_command(PSTR("page"), dispatch_page); + dispatch_add_command(PSTR("wakeup"), dispatch_wakeup); dispatch_add_command(PSTR("statusupdate"), dispatch_output_statusupdate); - dispatch_add_command(PSTR("clearpage"), dispatchClearPage); - dispatch_add_command(PSTR("jsonl"), dispatchParseJsonl); - dispatch_add_command(PSTR("dim"), dispatchDim); - dispatch_add_command(PSTR("brightness"), dispatchDim); - dispatch_add_command(PSTR("light"), dispatchBacklight); - dispatch_add_command(PSTR("calibrate"), dispatchCalibrate); - dispatch_add_command(PSTR("update"), dispatchWebUpdate); - dispatch_add_command(PSTR("reboot"), dispatchReboot); - dispatch_add_command(PSTR("restart"), dispatchReboot); + dispatch_add_command(PSTR("clearpage"), dispatch_clear_page); + dispatch_add_command(PSTR("jsonl"), dispatch_parse_jsonl); + dispatch_add_command(PSTR("dim"), dispatch_dim); + dispatch_add_command(PSTR("brightness"), dispatch_dim); + dispatch_add_command(PSTR("light"), dispatch_backlight); + dispatch_add_command(PSTR("calibrate"), dispatch_calibrate); + dispatch_add_command(PSTR("update"), dispatch_web_update); + dispatch_add_command(PSTR("reboot"), dispatch_reboot); + dispatch_add_command(PSTR("restart"), dispatch_reboot); + dispatch_add_command(PSTR("screenshot"), dispatch_screenshot); dispatch_add_command(PSTR("factoryreset"), dispatch_factory_reset); dispatch_add_command(PSTR("setupap"), oobeFakeSetup); + /* WARNING: remember to expand the commands array when adding new commands */ } void IRAM_ATTR dispatchLoop() diff --git a/src/hasp_dispatch.h b/src/hasp_dispatch.h index b11e4d76..6e1dd871 100644 --- a/src/hasp_dispatch.h +++ b/src/hasp_dispatch.h @@ -16,24 +16,24 @@ void dispatchStart(void); void dispatchStop(void); /* ===== Special Event Processors ===== */ -void dispatchConfig(const char * topic, const char * payload); -void dispatchTopicPayload(const char * topic, const char * payload); -void dispatchTextLine(const char * cmnd); -void dispatchParseJsonl(Stream & stream); -void dispatchClearPage(const char * page); +void dispatch_topic_payload(const char * topic, const char * payload); +void dispatch_text_line(const char * cmnd); +void dispatch_parse_jsonl(Stream & stream); +void dispatch_clear_page(const char * page); -void dispatchPage(const char * page); -void dispatchPageNext(); -void dispatchPagePrev(); +// void dispatchPage(uint8_t page); +void dispatch_page_next(); +void dispatch_page_prev(); -void dispatchDim(const char * level); -void dispatchBacklight(const char * payload); +void dispatch_dim(const char * level); +void dispatch_backlight(const char * payload); -void dispatchWebUpdate(const char * espOtaUrl); -void dispatchReboot(bool saveConfig); +void dispatch_web_update(const char * espOtaUrl); +void dispatch_reboot(bool saveConfig); void dispatch_output_idle_state(const char * state); void dispatch_output_statusupdate(void); +void dispatch_output_current_page(); void dispatch_button(uint8_t id, const char * event); @@ -52,7 +52,7 @@ void IRAM_ATTR dispatch_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, co /* ===== Structs and Constants ===== */ struct haspCommand_t { - void (*func)(const char *); + void (*func)(const char *, const char *); const char * p_cmdstr; }; diff --git a/src/hasp_hal.cpp b/src/hasp_hal.cpp index 26f21b5b..6c939657 100644 --- a/src/hasp_hal.cpp +++ b/src/hasp_hal.cpp @@ -95,6 +95,8 @@ void halRestartMcu(void) #else NVIC_SystemReset(); #endif + for(;;) { + } // halt } String halGetResetInfo() diff --git a/src/hasp_http.cpp b/src/hasp_http.cpp index f0f18010..4bb3f6cf 100644 --- a/src/hasp_http.cpp +++ b/src/hasp_http.cpp @@ -275,7 +275,7 @@ void httpHandleReboot() webSendFooter(); delay(200); - dispatchReboot(true); + dispatch_reboot(true); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -285,9 +285,9 @@ void webHandleScreenshot() if(webServer.hasArg(F("a"))) { if(webServer.arg(F("a")) == F("next")) { - dispatchPageNext(); + dispatch_page_next(); } else if(webServer.arg(F("a")) == F("prev")) { - dispatchPagePrev(); + dispatch_page_prev(); } } @@ -680,8 +680,7 @@ void webUpdateReboot() webSendFooter(); delay(250); - dispatchReboot(true); // Save the current config - delay(5000); + dispatch_reboot(true); // Save the current config } void webHandleFirmwareUpdate() @@ -1120,7 +1119,7 @@ void webHandleGuiConfig() } webSendFooter(); - if(webServer.hasArg(F("action"))) dispatchTextLine(webServer.arg(F("action")).c_str()); + if(webServer.hasArg(F("action"))) dispatch_text_line(webServer.arg(F("action")).c_str()); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1381,7 +1380,7 @@ void webHandleGpioOptions() } webSendFooter(); - if(webServer.hasArg(F("action"))) dispatchTextLine(webServer.arg(F("action")).c_str()); + if(webServer.hasArg(F("action"))) dispatch_text_line(webServer.arg(F("action")).c_str()); // Security check } #endif // HASP_USE_GPIO @@ -1698,7 +1697,7 @@ void httpHandleResetConfig() if(resetConfirmed) { delay(250); // configClearSaved(); - dispatchReboot(false); // Do not save the current config + dispatch_reboot(false); // Do not save the current config } } diff --git a/src/hasp_mqtt.cpp b/src/hasp_mqtt.cpp index 1dfb0491..b3940660 100644 --- a/src/hasp_mqtt.cpp +++ b/src/hasp_mqtt.cpp @@ -285,7 +285,7 @@ static void mqtt_message_cb(char * topic, byte * payload, unsigned int length) // Group topic topic += strlen(mqttGroupTopic); // shorten topic - dispatchTopicPayload(topic, (char *)payload); + dispatch_topic_payload(topic, (const char *)payload); return; } else { @@ -310,7 +310,7 @@ static void mqtt_message_cb(char * topic, byte * payload, unsigned int length) // Log.notice(TAG_MQTT, F("ignoring status = ON")); } } else { - dispatchTopicPayload(topic, (char *)payload); + dispatch_topic_payload(topic, (const char *)payload); } } @@ -390,7 +390,7 @@ void mqttStart() if(mqttReconnectCount > 50) { Log.error(TAG_MQTT, F("Retry count exceeded, rebooting...")); - dispatchReboot(false); + dispatch_reboot(false); } return; } @@ -435,10 +435,8 @@ void mqttStart() mqttReconnectCount = 0; haspReconnect(); - char page[4] = "999"; - itoa(haspGetPage(), page, DEC); - dispatchPage(page); - mqtt_send_statusupdate(); + dispatch_output_current_page(); + dispatch_output_statusupdate(); } void mqttSetup() diff --git a/src/hasp_oobe.cpp b/src/hasp_oobe.cpp index e91f5c43..3d7a548c 100644 --- a/src/hasp_oobe.cpp +++ b/src/hasp_oobe.cpp @@ -76,7 +76,7 @@ static void kb_event_cb(lv_obj_t * event_kb, lv_event_t event) if(wifiValidateSsid(ssid, pass)) { wifiSetConfig(settings.as()); Log.notice(TAG_OOBE, F("SSID validated, rebooting...")); - dispatchReboot(true); + dispatch_reboot(true); } } @@ -336,7 +336,7 @@ bool oobeSetup() } // Thist is used for testing only !! -void oobeFakeSetup(const char *) +void oobeFakeSetup(const char *, const char *) { #if HASP_USE_WIFI > 0 char ssid[32] = "HASP-ABCDEF"; diff --git a/src/hasp_oobe.h b/src/hasp_oobe.h index 26d4b540..f4b0630e 100644 --- a/src/hasp_oobe.h +++ b/src/hasp_oobe.h @@ -3,4 +3,4 @@ void oobeSetAutoCalibrate(bool cal); bool oobeSetup(); -void oobeFakeSetup(const char *); \ No newline at end of file +void oobeFakeSetup(const char *, const char *); // for testing purposes only \ No newline at end of file diff --git a/src/hasp_ota.cpp b/src/hasp_ota.cpp index 9d6dfbff..c39183ec 100644 --- a/src/hasp_ota.cpp +++ b/src/hasp_ota.cpp @@ -69,7 +69,7 @@ void otaSetup(void) otaProgress(); otaPrecentageComplete = -1; // setup(); - dispatchReboot(true); + dispatch_reboot(true); }); ArduinoOTA.onProgress(otaOnProgress); ArduinoOTA.onError([](ota_error_t error) { @@ -172,8 +172,7 @@ void otaHttpUpdate(const char * espOtaUrl) case HTTP_UPDATE_OK: Log.notice(TAG_FWUP, F("HTTP_UPDATE_OK")); // nextionSetAttr("p[0].b[1].txt", "\"HTTP Update\\rcomplete!\\r\\rRestarting.\""); - dispatchReboot(true); - delay(5000); + dispatch_reboot(true); } #if HASP_USE_MDNS > 0 diff --git a/src/hasp_telnet.cpp b/src/hasp_telnet.cpp index d5bbc78c..5ee54c26 100644 --- a/src/hasp_telnet.cpp +++ b/src/hasp_telnet.cpp @@ -221,7 +221,7 @@ static inline void telnetProcessLine(const char * input) telnetClient.println(F("\r\nUsername: ")); telnetLoginState = TELNET_UNAUTHENTICATED; } else { - dispatchTextLine(input); + dispatch_text_line(input); } } } diff --git a/src/hasp_wifi.cpp b/src/hasp_wifi.cpp index 5b6cf961..762e1130 100644 --- a/src/hasp_wifi.cpp +++ b/src/hasp_wifi.cpp @@ -73,11 +73,11 @@ static void wifiDisconnected(const char * ssid, uint8_t reason) wifiReconnectCounter++; haspProgressVal(wifiReconnectCounter * 3); - // networkStop(); + // networkStop(); if(wifiReconnectCounter > 33) { Log.error(TAG_WIFI, F("Retries exceed %u: Rebooting..."), wifiReconnectCounter); - dispatchReboot(false); + dispatch_reboot(false); } char buffer[64]; @@ -440,7 +440,7 @@ bool wifiEvery5Seconds() wifiReconnectCounter++; if(wifiReconnectCounter > 45) { Log.error(TAG_WIFI, F("Retries exceed %u: Rebooting..."), wifiReconnectCounter); - dispatchReboot(false); + dispatch_reboot(false); } Log.warning(TAG_WIFI, F("No Connection... retry %u"), wifiReconnectCounter); if(wifiReconnectCounter % 6 == 0) {