big gps victory
Some checks are pending
EIVE/eive-obsw/pipeline/head Build started...
EIVE/eive-obsw/pipeline/pr-main This commit looks good

This commit is contained in:
Robin Müller 2023-08-02 16:00:27 +02:00
parent ff6cb2a2e3
commit 8441c49fe6
Signed by: muellerr
GPG Key ID: 407F9B00F858F270

View File

@ -166,29 +166,32 @@ bool GpsHyperionLinuxController::readGpsDataFromGpsd() {
if (mode == MODE_OFF) {
return false;
}
unsigned int readIdx = 0;
if (readMode == ReadModes::SOCKET) {
// Poll the GPS.
if (gps_waiting(&gps, 0)) {
while (gps_waiting(&gps, 0)) {
int retval = gps_read(&gps);
if (retval < 0) {
readError();
return false;
} else if (retval == 0) {
oneShotSwitches.gpsReadFailedSwitch = true;
ReturnValue_t result = handleGpsReadData();
if (result != returnvalue::OK) {
return false;
}
}
} else {
return false;
readIdx++;
if (readIdx >= 40) {
sif::warning << "GpsHyperionLinuxController: Received " << readIdx
<< " GPSD message consecutively" << std::endl;
break;
}
}
if (readIdx > 0) {
oneShotSwitches.gpsReadFailedSwitch = true;
handleGpsReadData();
}
} else if (readMode == ReadModes::SHM) {
sif::error << "GpsHyperionLinuxController::readGpsDataFromGpsdPermanentLoop: "
"SHM read not implemented"
<< std::endl;
}
return true;
return false;
}
ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {