something is wrong now
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
This commit is contained in:
@ -77,16 +77,14 @@ ReturnValue_t AcsBoardAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_
|
||||
if (wantedSubmode == A_SIDE) {
|
||||
if ((helper.gyro0SideAMode != wantedMode and helper.gyro1SideAMode != wantedMode) or
|
||||
(helper.mgm0SideAMode != wantedMode and helper.mgm1SideAMode != wantedMode) or
|
||||
(helper.gpsMode != MODE_ON) or
|
||||
gps0HealthDevFaulty()) {
|
||||
(helper.gpsMode != MODE_ON) or gps0HealthDevFaulty()) {
|
||||
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
} else if (wantedSubmode == B_SIDE) {
|
||||
if ((helper.gyro2SideBMode != wantedMode and helper.gyro3SideBMode != wantedMode) or
|
||||
(helper.mgm2SideBMode != wantedMode and helper.mgm3SideBMode != wantedMode) or
|
||||
(helper.gpsMode != MODE_ON) or
|
||||
gps1HealthDevFaulty()) {
|
||||
(helper.gpsMode != MODE_ON) or gps1HealthDevFaulty()) {
|
||||
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
@ -121,7 +119,8 @@ ReturnValue_t AcsBoardAssembly::handleNormalOrOnModeCmd(Mode_t mode, Submode_t s
|
||||
modeTable[tableIdx].setSubmode(SUBMODE_NONE);
|
||||
}
|
||||
};
|
||||
bool gpsUsable = isModeCommandable(helper.gpsId, helper.gpsMode);
|
||||
|
||||
bool gpsUsable = isGpsUsable(submode);
|
||||
auto gpsCmd = [&](bool gnss0NReset, bool gnss1NReset, uint8_t gnssSelect) {
|
||||
if (gpsUsable) {
|
||||
if (mode == MODE_ON or mode == DeviceHandlerIF::MODE_NORMAL) {
|
||||
@ -326,3 +325,22 @@ bool AcsBoardAssembly::gps1HealthDevFaulty() const {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AcsBoardAssembly::isGpsUsable(uint8_t targetSubmode) const {
|
||||
if (targetSubmode == duallane::A_SIDE and
|
||||
healthHelper.healthTable->isFaulty(helper.healthDevGps0)) {
|
||||
// Causes a OFF command to be sent, which triggers a side switch or a switch to dual side.
|
||||
return false;
|
||||
}
|
||||
if (targetSubmode == duallane::B_SIDE and
|
||||
healthHelper.healthTable->isFaulty(helper.healthDevGps1)) {
|
||||
// Causes a OFF command to be sent, which triggers a side switch or a switch to dual side.
|
||||
return false;
|
||||
}
|
||||
auto gpsIter = childrenMap.find(helper.gpsId);
|
||||
// Check if device is already in target mode
|
||||
if (gpsIter != childrenMap.end() and gpsIter->second.mode == mode) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user