From 186cde1a209cf46b7f267d7aa54412ebb767fa91 Mon Sep 17 00:00:00 2001 From: Kevin Le Date: Sun, 27 Sep 2026 15:46:07 +0700 Subject: [PATCH] GPS on upon telemetry request only if GPS is active --- src/helpers/sensors/EnvironmentSensorManager.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/helpers/sensors/EnvironmentSensorManager.cpp b/src/helpers/sensors/EnvironmentSensorManager.cpp index 0981a8a2f..9fade5638 100644 --- a/src/helpers/sensors/EnvironmentSensorManager.cpp +++ b/src/helpers/sensors/EnvironmentSensorManager.cpp @@ -881,13 +881,12 @@ bool EnvironmentSensorManager::gpsIsAwake(uint8_t ioPin) { #endif void EnvironmentSensorManager::start_gps() { - gps_active = true; - if (_location->isPowerSavingEnabled()) { - gps_wake = true; // gps_active is true + gps_wake = true; // gps_active is unchanged (true for GPS sleep, false for GPS off) _location->syncTime(); // Clear GPS data and force sync time _location->setNextSleep(); // Next time to off } else { + gps_active = true; gps_wake = true; } @@ -946,8 +945,10 @@ void EnvironmentSensorManager::loop() { static long next_gps_update = 0; // PowerSaving - _location->updatePowerSavingSettings(gps_wake); // Handle change in PowerSaving mode - if (_location->isPowerSavingEnabled() && gps_detected) { + if (_location->isPowerSavingEnabled() && gps_detected && gps_active) { + // Handle change in PowerSaving mode + _location->updatePowerSavingSettings(gps_wake); + if (gps_wake) { // GPS is awake: check whether it should sleep if ((int32_t)(millis() - _location->getNextSleep()) >= 0) {