Merge pull request 'GPS Changes' (#767) from gps-changes into main
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
Reviewed-on: #767 Reviewed-by: Marius Eggert <eggertm@irs.uni-stuttgart.de>
This commit is contained in:
commit
78f4bbc3a7
@ -16,6 +16,10 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
# [unreleased]
|
# [unreleased]
|
||||||
|
|
||||||
|
## Fixed
|
||||||
|
- The handling function of the GPS data is only called once per GPS read. This should remove
|
||||||
|
the fake fix-has-changed events.
|
||||||
|
|
||||||
# [v6.3.0] 2023-08-03
|
# [v6.3.0] 2023-08-03
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
@ -166,30 +166,32 @@ bool GpsHyperionLinuxController::readGpsDataFromGpsd() {
|
|||||||
if (mode == MODE_OFF) {
|
if (mode == MODE_OFF) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
unsigned int readIdx = 0;
|
||||||
if (readMode == ReadModes::SOCKET) {
|
if (readMode == ReadModes::SOCKET) {
|
||||||
// Poll the GPS.
|
// Poll the GPS.
|
||||||
if (gps_waiting(&gps, 0)) {
|
while (gps_waiting(&gps, 0)) {
|
||||||
if (-1 == gps_read(&gps)) {
|
int retval = gps_read(&gps);
|
||||||
|
if (retval < 0) {
|
||||||
readError();
|
readError();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
oneShotSwitches.gpsReadFailedSwitch = true;
|
readIdx++;
|
||||||
ReturnValue_t result = handleGpsReadData();
|
if (readIdx >= 40) {
|
||||||
if (result == returnvalue::OK) {
|
sif::warning << "GpsHyperionLinuxController: Received " << readIdx
|
||||||
return true;
|
<< " GPSD message consecutively" << std::endl;
|
||||||
} else {
|
break;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
noModeSetCntr = 0;
|
}
|
||||||
} else {
|
if (readIdx > 0) {
|
||||||
return false;
|
oneShotSwitches.gpsReadFailedSwitch = true;
|
||||||
|
handleGpsReadData();
|
||||||
}
|
}
|
||||||
} else if (readMode == ReadModes::SHM) {
|
} else if (readMode == ReadModes::SHM) {
|
||||||
sif::error << "GpsHyperionLinuxController::readGpsDataFromGpsdPermanentLoop: "
|
sif::error << "GpsHyperionLinuxController::readGpsDataFromGpsdPermanentLoop: "
|
||||||
"SHM read not implemented"
|
"SHM read not implemented"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
ReturnValue_t GpsHyperionLinuxController::handleGpsReadData() {
|
||||||
|
@ -81,7 +81,6 @@ class GpsHyperionLinuxController : public ExtendedControllerBase {
|
|||||||
} oneShotSwitches;
|
} oneShotSwitches;
|
||||||
|
|
||||||
bool debugHyperionGps = false;
|
bool debugHyperionGps = false;
|
||||||
int32_t noModeSetCntr = 0;
|
|
||||||
|
|
||||||
// Returns true if the function should be called again or false if other
|
// Returns true if the function should be called again or false if other
|
||||||
// controller handling can be done.
|
// controller handling can be done.
|
||||||
|
Loading…
Reference in New Issue
Block a user