GPS toggle now tells if it's on or off

This commit is contained in:
HarukiToreda 2025-05-11 23:24:05 -04:00
parent 2f4f2b1202
commit 7293e542ec
2 changed files with 38 additions and 27 deletions

View File

@ -237,14 +237,21 @@ int32_t ButtonThread::runOnce()
LOG_BUTTON("Mulitipress! %hux", multipressClickCount);
switch (multipressClickCount) {
#if HAS_GPS && !defined(ELECROW_ThinkNode_M1)
// 3 clicks: toggle GPS
case 3:
if (!config.device.disable_triple_click && (gps != nullptr)) {
gps->toggleGpsMode();
if (screen)
screen->forceDisplay(true); // Force a new UI frame, then force an EInk update
// 3 clicks: toggle GPS
case 3:
if (!config.device.disable_triple_click && (gps != nullptr)) {
gps->toggleGpsMode();
const char* statusMsg = (config.position.gps_mode == meshtastic_Config_PositionConfig_GpsMode_ENABLED)
? "GPS Enabled"
: "GPS Disabled";
if (screen) {
screen->forceDisplay(true); // Force a new UI frame, then force an EInk update
screen->showOverlayBanner(statusMsg, 3000);
}
break;
}
break;
#elif defined(ELECROW_ThinkNode_M1) || defined(ELECROW_ThinkNode_M2)
case 3:
LOG_INFO("3 clicks: toggle buzzer");

View File

@ -510,17 +510,19 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
break;
case INPUT_BROKER_MSG_GPS_TOGGLE:
#if !MESHTASTIC_EXCLUDE_GPS
#if !MESHTASTIC_EXCLUDE_GPS
if (gps != nullptr) {
gps->toggleGpsMode();
const char* statusMsg = (config.position.gps_mode == meshtastic_Config_PositionConfig_GpsMode_ENABLED)
? "GPS Enabled"
: "GPS Disabled";
if (screen) {
screen->forceDisplay();
screen->showOverlayBanner(statusMsg, 3000);
}
}
if (screen) {
screen->forceDisplay();
screen->showOverlayBanner("GPS Toggled", 3000);
}
#endif
#endif
break;
case INPUT_BROKER_MSG_BLUETOOTH_TOGGLE:
if (config.bluetooth.enabled == true) {
config.bluetooth.enabled = false;
@ -544,6 +546,21 @@ int CannedMessageModule::handleInputEvent(const InputEvent *event)
if (screen) screen->showOverlayBanner("Node Info\nUpdate Sent", 3000);
}
break;
case INPUT_BROKER_MSG_SHUTDOWN:
if (screen)
screen->showOverlayBanner("Shutting down...");
shutdownAtMsec = millis() + DEFAULT_SHUTDOWN_SECONDS * 1000;
this->runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
validEvent = true;
break;
case INPUT_BROKER_MSG_REBOOT:
if (screen)
screen->showOverlayBanner("Rebooting...", 0); // stays on screen
rebootAtMsec = millis() + DEFAULT_REBOOT_SECONDS * 1000;
this->runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
validEvent = true;
break;
case INPUT_BROKER_MSG_DISMISS_FRAME: // fn+del: dismiss screen frames like text or waypoint
// Avoid opening the canned message screen frame
// We're only handling the keypress here by convention, this has nothing to do with canned messages
@ -899,19 +916,6 @@ int32_t CannedMessageModule::runOnce()
case INPUT_BROKER_MSG_RIGHT:
// already handled above
break;
// handle fn+s for shutdown
case INPUT_BROKER_MSG_SHUTDOWN:
if (screen)
shutdownAtMsec = millis() + DEFAULT_SHUTDOWN_SECONDS * 1000;
runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
break;
// and fn+r for reboot
case INPUT_BROKER_MSG_REBOOT:
if (screen)
screen->showOverlayBanner("Rebooting...", 0); // stays on screen
rebootAtMsec = millis() + DEFAULT_REBOOT_SECONDS * 1000;
runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
break;
default:
if (this->highlight != 0x00) {
break;