mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-01 10:21:59 +00:00
fix(l2): the GPS switch no longer jumps
UiCore::setGpsEnabled() wrote the prefs to flash at once, which stalled the loop mid-animation. It takes save = false now (default true, the L1 unchanged); the L2 marks the prefs changed and writes them on leaving the screen, as its other switches. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -133,11 +133,13 @@ public:
|
||||
return i >= 0 && strcmp(_sensors->getSettingValue(i), "1") == 0;
|
||||
}
|
||||
// False when the board has no GPS.
|
||||
bool setGpsEnabled(bool on) {
|
||||
// save = false: the caller has the prefs written later (the L2 on leaving
|
||||
// the screen -- a flash write mid-tap stalls the switch's animation).
|
||||
bool setGpsEnabled(bool on, bool save = true) {
|
||||
if (gpsSettingIndex() < 0) return false;
|
||||
_sensors->setSettingValue("gps", on ? "1" : "0");
|
||||
if (_prefs) _prefs->gps_enabled = on ? 1 : 0;
|
||||
the_mesh.savePrefs();
|
||||
if (save) the_mesh.savePrefs();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1965,7 +1965,8 @@ void UITask::refreshStatusBar() {
|
||||
}
|
||||
|
||||
void UITask::setGps(bool on) {
|
||||
if (!_core->setGpsEnabled(on)) { showToast("No GPS on this device"); return; }
|
||||
if (!_core->setGpsEnabled(on, false)) { showToast("No GPS on this device"); return; }
|
||||
prefsSave(); // written on leaving the screen, as the other switches
|
||||
refreshStatusBar();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user