diff --git a/linux/acs/GpsHyperionLinuxController.cpp b/linux/acs/GpsHyperionLinuxController.cpp index 9b93b22b..4015ee4f 100644 --- a/linux/acs/GpsHyperionLinuxController.cpp +++ b/linux/acs/GpsHyperionLinuxController.cpp @@ -248,38 +248,38 @@ ReturnValue_t GpsHyperionLinuxController::handleCoreTelemetry(bool modeIsSet) { maxTimeToReachFix.resetTimer(); } newFix = gps.fix.mode; - if (not validFix) { - if (maxTimeToReachFix.hasTimedOut()) { - // We are supposed to be on and functioning, but no fix was found - // Set HK entries invalid - gpsSet.setValidity(false, true); - if (oneShotSwitches.cantGetFixSwitch) { - sif::warning << "GpsHyperionLinuxController: No fix detected in allowed " - << maxTimeToReachFix.getTimeoutMs() / 1000 << " seconds" << std::endl; - triggerEvent(GpsHyperion::CANT_GET_FIX, maxTimeToReachFix.getTimeoutMs()); - oneShotSwitches.cantGetFixSwitch = false; - // Try resetting the devices - if (resetCallback != nullptr) { - uint8_t chip = GpsHyperion::GnssChip::A_SIDE; - ReturnValue_t result = resetCallback(&chip, 1, resetCallbackArgs); - if (result != returnvalue::OK) { - triggerEvent(GpsHyperion::RESET_FAIL, chip); - } - chip = GpsHyperion::GnssChip::B_SIDE; - result = resetCallback(&chip, 1, resetCallbackArgs); - if (result != returnvalue::OK) { - triggerEvent(GpsHyperion::RESET_FAIL, chip); - } - } - } - } - } } if (gpsSet.fixMode.value != newFix) { handleFixChangedEvent(newFix); } gpsSet.fixMode = newFix; gpsSet.fixMode.setValid(modeIsSet); + // We are supposed to be on and functioning, but no fix was found + if (not validFix) { + if (maxTimeToReachFix.hasTimedOut()) { + // Set HK entries invalid + gpsSet.setValidity(false, true); + if (oneShotSwitches.cantGetFixSwitch) { + sif::warning << "GpsHyperionLinuxController: No fix detected in allowed " + << maxTimeToReachFix.getTimeoutMs() / 1000 << " seconds" << std::endl; + triggerEvent(GpsHyperion::CANT_GET_FIX, maxTimeToReachFix.getTimeoutMs()); + oneShotSwitches.cantGetFixSwitch = false; + // Try resetting the devices + if (resetCallback != nullptr) { + uint8_t chip = GpsHyperion::GnssChip::A_SIDE; + ReturnValue_t result = resetCallback(&chip, 1, resetCallbackArgs); + if (result != returnvalue::OK) { + triggerEvent(GpsHyperion::RESET_FAIL, chip); + } + chip = GpsHyperion::GnssChip::B_SIDE; + result = resetCallback(&chip, 1, resetCallbackArgs); + if (result != returnvalue::OK) { + triggerEvent(GpsHyperion::RESET_FAIL, chip); + } + } + } + } + } // Only set on specific messages, so only set a valid flag to invalid // if not set for more than a full message set (10 messages here)