mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-24 20:06:37 +00:00
refactor(companion): unify every reboot/power-off through UITask::shutdown()
Settings > Reboot, the phone app's CMD_REBOOT, and the serial CLI's "reboot" command each hand-rolled their own flush-then-board.reboot() sequence, so each could drift independently (Settings > Reboot and the CLI command were both missing the contacts flush added in the previous commit). Add a pure-virtual AbstractUITask::shutdown(bool restart) -- every UI variant (ui-new/ui-tiny/ui-orig) already implements a method with this exact signature -- and route all three call sites through it instead. CMD_FACTORY_RESET intentionally keeps calling board.reboot() directly: flushing stale in-RAM prefs back out would defeat the format it just did. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2380,11 +2380,13 @@ void MyMesh::handleCmdFrame(size_t len) {
|
||||
writeOKFrame();
|
||||
}
|
||||
} else if (cmd_frame[0] == CMD_REBOOT && memcmp(&cmd_frame[1], "reboot", 6) == 0) {
|
||||
if (dirty_contacts_expiry) { // is there are pending dirty contacts write needed?
|
||||
saveContacts();
|
||||
if (_ui) {
|
||||
_ui->shutdown(true);
|
||||
} else {
|
||||
flushDirtyContacts();
|
||||
savePrefs();
|
||||
board.reboot();
|
||||
}
|
||||
savePrefs(); // flush any on-device setting change not yet persisted -- see UITask::shutdown()'s comment
|
||||
board.reboot();
|
||||
} else if (cmd_frame[0] == CMD_GET_BATT_AND_STORAGE) {
|
||||
uint8_t reply[11];
|
||||
int i = 0;
|
||||
@@ -3192,8 +3194,13 @@ void MyMesh::checkCLIRescueCmd() {
|
||||
}
|
||||
|
||||
} else if (strcmp(cli_command, "reboot") == 0) {
|
||||
savePrefs(); // flush any on-device setting change not yet persisted -- see UITask::shutdown()'s comment
|
||||
board.reboot(); // doesn't return
|
||||
if (_ui) {
|
||||
_ui->shutdown(true);
|
||||
} else {
|
||||
flushDirtyContacts();
|
||||
savePrefs(); // flush any on-device setting change not yet persisted -- see UITask::shutdown()'s comment
|
||||
board.reboot(); // doesn't return
|
||||
}
|
||||
} else {
|
||||
Serial.println(" Error: unknown command");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user