now fix loss should always be detected and reported #445
@ -214,16 +214,14 @@ ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool validFix = false;
|
bool validFix = false;
|
||||||
|
uint8_t newFix = 0;
|
||||||
if (modeIsSet) {
|
if (modeIsSet) {
|
||||||
// 0: Not seen, 1: No fix, 2: 2D-Fix, 3: 3D-Fix
|
// 0: Not seen, 1: No fix, 2: 2D-Fix, 3: 3D-Fix
|
||||||
if (gps.fix.mode == 2 or gps.fix.mode == 3) {
|
if (gps.fix.mode == 2 or gps.fix.mode == 3) {
|
||||||
validFix = true;
|
validFix = true;
|
||||||
}
|
}
|
||||||
if (gpsSet.fixMode.value != gps.fix.mode) {
|
newFix = gps.fix.mode;
|
||||||
triggerEvent(GpsHyperion::GPS_FIX_CHANGE, gpsSet.fixMode.value, gps.fix.mode);
|
if (newFix == 0 or newFix == 1) {
|
||||||
}
|
|
||||||
gpsSet.fixMode.value = gps.fix.mode;
|
|
||||||
if (gps.fix.mode == 0 or gps.fix.mode == 1) {
|
|
||||||
if (modeCommanded and maxTimeToReachFix.hasTimedOut()) {
|
if (modeCommanded and maxTimeToReachFix.hasTimedOut()) {
|
||||||
// We are supposed to be on and functioning, but no fix was found
|
// We are supposed to be on and functioning, but no fix was found
|
||||||
if (mode == MODE_ON or mode == MODE_NORMAL) {
|
if (mode == MODE_ON or mode == MODE_NORMAL) {
|
||||||
@ -233,6 +231,10 @@ ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (gpsSet.fixMode.value != newFix) {
|
||||||
|
triggerEvent(GpsHyperion::GPS_FIX_CHANGE, gpsSet.fixMode.value, newFix);
|
||||||
|
}
|
||||||
|
gpsSet.fixMode = newFix;
|
||||||
gpsSet.fixMode.setValid(modeIsSet);
|
gpsSet.fixMode.setValid(modeIsSet);
|
||||||
|
|
||||||
// Only set on specific messages, so only set a valid flag to invalid
|
// Only set on specific messages, so only set a valid flag to invalid
|
||||||
|
Loading…
Reference in New Issue
Block a user