diff --git a/code/espurna/button.cpp b/code/espurna/button.cpp index 54f5129a..1da89552 100644 --- a/code/espurna/button.cpp +++ b/code/espurna/button.cpp @@ -894,7 +894,7 @@ void buttonEvent(size_t id, ButtonEvent event) { break; case ButtonAction::Reset: - deferredReset(100, CustomResetReason::Button); + prepareReset(CustomResetReason::Button); break; case ButtonAction::FactoryReset: diff --git a/code/espurna/curtain_kingart.cpp b/code/espurna/curtain_kingart.cpp index a2e8c8b9..b173790d 100644 --- a/code/espurna/curtain_kingart.cpp +++ b/code/espurna/curtain_kingart.cpp @@ -345,7 +345,7 @@ void _KACurtainResult() { if (buffer.indexOf("enterESPTOUCH") > 0) { wifiStartAp(); } else if (buffer.indexOf("exitESPTOUCH") > 0) { - deferredReset(100, CustomResetReason::Hardware); + prepareReset(CustomResetReason::Hardware); } else { //In any other case, update as it could be a move action curtainUpdateUI(); } diff --git a/code/espurna/ota.cpp b/code/espurna/ota.cpp index 295a6c5f..038e5d7f 100644 --- a/code/espurna/ota.cpp +++ b/code/espurna/ota.cpp @@ -27,7 +27,7 @@ void otaPrintError() { bool otaFinalize(size_t size, CustomResetReason reason, bool evenIfRemaining) { if (Update.isRunning() && Update.end(evenIfRemaining)) { DEBUG_MSG_P(PSTR("[OTA] Success: %7u bytes\n"), size); - deferredReset(500, reason); + prepareReset(reason); return true; } diff --git a/code/espurna/rpc.cpp b/code/espurna/rpc.cpp index 768c23f4..723d8723 100644 --- a/code/espurna/rpc.cpp +++ b/code/espurna/rpc.cpp @@ -19,7 +19,7 @@ bool rpcHandleAction(const String& action) { if (action.equals("reboot")) { result = true; schedule_function([]() { - deferredReset(100, CustomResetReason::Rpc); + prepareReset(CustomResetReason::Rpc); }); } else if (action.equals("heartbeat")) { result = true; diff --git a/code/espurna/rpnrules.cpp b/code/espurna/rpnrules.cpp index 5591f872..49b2f1a3 100644 --- a/code/espurna/rpnrules.cpp +++ b/code/espurna/rpnrules.cpp @@ -1083,7 +1083,7 @@ void init(rpn_context& context) { rpn_operator_set(context, "reset", 0, [](rpn_context& ctxt) -> rpn_error { static bool once = ([]() { - deferredReset(100, CustomResetReason::Rule); + prepareReset(CustomResetReason::Rule); return true; })(); diff --git a/code/espurna/system.cpp b/code/espurna/system.cpp index 93d90e3a..9521e35e 100644 --- a/code/espurna/system.cpp +++ b/code/espurna/system.cpp @@ -666,6 +666,8 @@ void pending_reset_loop() { } } +static constexpr espurna::duration::Milliseconds ShortDelayForReset { 500 }; + void deferredReset(duration::Milliseconds delay, CustomResetReason reason) { DEBUG_MSG_P(PSTR("[MAIN] Requested reset: %s\n"), espurna::boot::serialize(reason).c_str()); @@ -757,14 +759,19 @@ void forceEraseSDKConfig() { espurna::forceEraseSDKConfig(); } -void deferredReset(unsigned long delay, CustomResetReason reason) { - espurna::deferredReset(espurna::duration::Milliseconds(delay), reason); +void factoryReset() { + resetSettings(); + espurna::deferredReset( + espurna::ShortDelayForReset, + CustomResetReason::Factory); } -void factoryReset() { - static constexpr espurna::duration::Milliseconds Time { 100 }; - resetSettings(); - espurna::deferredReset(Time, CustomResetReason::Factory); +void deferredReset(espurna::duration::Milliseconds delay, CustomResetReason reason) { + espurna::deferredReset(delay, reason); +} + +void prepareReset(CustomResetReason reason) { + espurna::deferredReset(espurna::ShortDelayForReset, reason); } bool pendingDeferredReset() { diff --git a/code/espurna/system.h b/code/espurna/system.h index c976554a..3ba44040 100644 --- a/code/espurna/system.h +++ b/code/espurna/system.h @@ -241,7 +241,8 @@ void customResetReason(CustomResetReason); CustomResetReason customResetReason(); String customResetReasonToPayload(CustomResetReason); -void deferredReset(unsigned long delay, CustomResetReason reason); +void deferredReset(espurna::duration::Milliseconds, CustomResetReason); +void prepareReset(CustomResetReason); bool pendingDeferredReset(); unsigned long systemLoadAverage(); diff --git a/code/espurna/terminal.cpp b/code/espurna/terminal.cpp index 89be44e6..5f133a4e 100644 --- a/code/espurna/terminal.cpp +++ b/code/espurna/terminal.cpp @@ -486,7 +486,7 @@ void _terminalInitCommands() { } terminalOK(ctx); - deferredReset(100, CustomResetReason::Terminal); + prepareReset(CustomResetReason::Terminal); }); terminalRegisterCommand(F("UPTIME"), [](::terminal::CommandContext&& ctx) { diff --git a/code/espurna/web.cpp b/code/espurna/web.cpp index c9e5f71d..b64e447c 100644 --- a/code/espurna/web.cpp +++ b/code/espurna/web.cpp @@ -242,7 +242,7 @@ void _onReset(AsyncWebServerRequest *request) { return; } - deferredReset(100, CustomResetReason::Web); + prepareReset(CustomResetReason::Web); request->send(200); } diff --git a/code/espurna/ws.cpp b/code/espurna/ws.cpp index 5dd19f65..1bfe4666 100644 --- a/code/espurna/ws.cpp +++ b/code/espurna/ws.cpp @@ -521,7 +521,7 @@ void _wsParse(AsyncWebSocketClient *client, uint8_t * payload, size_t length) { } if (strcmp(action, "reboot") == 0) { - deferredReset(100, CustomResetReason::Web); + prepareReset(CustomResetReason::Web); return; }