mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-31 02:45:41 +00:00
Unify the shutdown proceedure
This commit is contained in:
parent
bc9023399d
commit
6dfc00d6ae
@ -681,7 +681,14 @@ bool Power::setup()
|
|||||||
|
|
||||||
void Power::shutdown()
|
void Power::shutdown()
|
||||||
{
|
{
|
||||||
LOG_INFO("Shutting Down");
|
|
||||||
|
#if HAS_SCREEN
|
||||||
|
if (screen) {
|
||||||
|
screen->showSimpleBanner("Shutting Down...", 0); // stays on screen
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
nodeDB->saveToDisk();
|
||||||
|
playShutdownMelody();
|
||||||
|
|
||||||
#if defined(ARCH_NRF52) || defined(ARCH_ESP32) || defined(ARCH_RP2040)
|
#if defined(ARCH_NRF52) || defined(ARCH_ESP32) || defined(ARCH_RP2040)
|
||||||
#ifdef PIN_LED1
|
#ifdef PIN_LED1
|
||||||
@ -694,6 +701,10 @@ void Power::shutdown()
|
|||||||
ledOff(PIN_LED3);
|
ledOff(PIN_LED3);
|
||||||
#endif
|
#endif
|
||||||
doDeepSleep(DELAY_FOREVER, false, false);
|
doDeepSleep(DELAY_FOREVER, false, false);
|
||||||
|
#elif defined(ARCH_PORTDUINO)
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
#else
|
||||||
|
LOG_WARN("FIXME implement shutdown for this platform");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,10 +47,6 @@ int BuzzerFeedbackThread::handleInputEvent(const InputEvent *event)
|
|||||||
playComboTune(); // Ping sent feedback
|
playComboTune(); // Ping sent feedback
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INPUT_BROKER_SHUTDOWN:
|
|
||||||
playShutdownMelody(); // Shutdown feedback
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// For other events, check if it's a printable character
|
// For other events, check if it's a printable character
|
||||||
if (event->kbchar >= 32 && event->kbchar <= 126) {
|
if (event->kbchar >= 32 && event->kbchar <= 126) {
|
||||||
|
@ -815,9 +815,8 @@ void menuHandler::shutdownMenu()
|
|||||||
bannerOptions.optionsCount = 2;
|
bannerOptions.optionsCount = 2;
|
||||||
bannerOptions.bannerCallback = [](int selected) -> void {
|
bannerOptions.bannerCallback = [](int selected) -> void {
|
||||||
if (selected == 1) {
|
if (selected == 1) {
|
||||||
IF_SCREEN(screen->showSimpleBanner("Shutting Down...", 0));
|
InputEvent event = {.inputEvent = (input_broker_event)INPUT_BROKER_SHUTDOWN, .kbchar = 0, .touchX = 0, .touchY = 0};
|
||||||
nodeDB->saveToDisk();
|
inputBroker->injectInputEvent(&event);
|
||||||
power->shutdown();
|
|
||||||
} else {
|
} else {
|
||||||
menuQueue = power_menu;
|
menuQueue = power_menu;
|
||||||
screen->runNow();
|
screen->runNow();
|
||||||
|
@ -233,14 +233,7 @@ void ExpressLRSFiveWay::sendAdhocPing()
|
|||||||
// Contained as one method for easier remapping of buttons by user
|
// Contained as one method for easier remapping of buttons by user
|
||||||
void ExpressLRSFiveWay::shutdown()
|
void ExpressLRSFiveWay::shutdown()
|
||||||
{
|
{
|
||||||
LOG_INFO("Shutdown from long press");
|
sendKey(INPUT_BROKER_SHUTDOWN);
|
||||||
powerFSM.trigger(EVENT_PRESS);
|
|
||||||
screen->startAlert("Shutting Down...");
|
|
||||||
// Don't set alerting = true. We don't want to auto-dismiss this alert.
|
|
||||||
|
|
||||||
playShutdownMelody(); // In case user adds a buzzer
|
|
||||||
|
|
||||||
shutdownAtMsec = millis() + 3000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExpressLRSFiveWay::click()
|
void ExpressLRSFiveWay::click()
|
||||||
|
@ -107,11 +107,7 @@ int SystemCommandsModule::handleInputEvent(const InputEvent *event)
|
|||||||
return true;
|
return true;
|
||||||
// Power control
|
// Power control
|
||||||
case INPUT_BROKER_SHUTDOWN:
|
case INPUT_BROKER_SHUTDOWN:
|
||||||
LOG_ERROR("Shutting Down");
|
shutdownAtMsec = millis();
|
||||||
IF_SCREEN(screen->showSimpleBanner("Shutting Down..."));
|
|
||||||
nodeDB->saveToDisk();
|
|
||||||
shutdownAtMsec = millis() + DEFAULT_SHUTDOWN_SECONDS * 1000;
|
|
||||||
// runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -40,21 +40,7 @@ void powerCommandsCheck()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ARCH_ESP32) || defined(ARCH_NRF52)
|
|
||||||
if (shutdownAtMsec && screen) {
|
|
||||||
screen->showSimpleBanner("Shutting Down...", 0); // stays on screen
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (shutdownAtMsec && millis() > shutdownAtMsec) {
|
if (shutdownAtMsec && millis() > shutdownAtMsec) {
|
||||||
LOG_INFO("Shut down from admin command");
|
|
||||||
#if defined(ARCH_NRF52) || defined(ARCH_ESP32) || defined(ARCH_RP2040)
|
|
||||||
playShutdownMelody();
|
|
||||||
power->shutdown();
|
power->shutdown();
|
||||||
#elif defined(ARCH_PORTDUINO)
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
#else
|
|
||||||
LOG_WARN("FIXME implement shutdown for this platform");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user