From a4cd99ec905253c6b9be266c1be5a9d5d573fb16 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 7 Sep 2021 16:42:04 +0200 Subject: [PATCH] sanity check on altitude, set unix seconds --- mission/devices/GPSHyperionHandler.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mission/devices/GPSHyperionHandler.cpp b/mission/devices/GPSHyperionHandler.cpp index 9b7e993d..e1e512e3 100644 --- a/mission/devices/GPSHyperionHandler.cpp +++ b/mission/devices/GPSHyperionHandler.cpp @@ -101,7 +101,13 @@ ReturnValue_t GPSHyperionHandler::scanForReply(const uint8_t *start, size_t len, gpsSet.latitude.value = gpsData.latitude; // Negative longitude -> West direction gpsSet.longitude.value = gpsData.longitude; - gpsSet.altitude.value = gpsData.altitude; + if(gpsData.altitude > 600000.0 or gpsData.altitude < 400000.0) { + gpsSet.altitude.setValid(false); + } + else { + gpsSet.altitude.setValid(true); + gpsSet.altitude.value = gpsData.altitude; + } gpsSet.fixMode.value = gpsData.fix_mode; gpsSet.satInUse.value = gpsData.sats_in_use; Clock::TimeOfDay_t timeStruct = {}; @@ -120,6 +126,7 @@ ReturnValue_t GPSHyperionHandler::scanForReply(const uint8_t *start, size_t len, gpsSet.hours = gpsData.hours; gpsSet.minutes = gpsData.minutes; gpsSet.seconds = gpsData.seconds; + gpsSet.unixSeconds = timeval.tv_sec; if(debugHyperionGps) { sif::info << "GPS Data" << std::endl; printf("Valid status: %d\n", gpsData.is_valid);