This commit is contained in:
@ -78,7 +78,7 @@ ReturnValue_t AcsBoardAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_
|
||||
if ((helper.gyro0SideAMode != wantedMode and helper.gyro1SideAMode != wantedMode) or
|
||||
(helper.mgm0SideAMode != wantedMode and helper.mgm1SideAMode != wantedMode) or
|
||||
(helper.gpsMode != MODE_ON) or
|
||||
(healthHelper.healthTable->getHealth(helper.healthDevGps0) == FAULTY)) {
|
||||
gps0HealthDevFaulty()) {
|
||||
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
@ -86,7 +86,7 @@ ReturnValue_t AcsBoardAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_
|
||||
if ((helper.gyro2SideBMode != wantedMode and helper.gyro3SideBMode != wantedMode) or
|
||||
(helper.mgm2SideBMode != wantedMode and helper.mgm3SideBMode != wantedMode) or
|
||||
(helper.gpsMode != MODE_ON) or
|
||||
(healthHelper.healthTable->getHealth(helper.healthDevGps1) == FAULTY)) {
|
||||
gps1HealthDevFaulty()) {
|
||||
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
@ -296,15 +296,13 @@ void AcsBoardAssembly::handleChildrenLostMode(ReturnValue_t result) {
|
||||
// Special handling to account for GPS devices being faulty. If the GPS device on the other
|
||||
// side is marked faulty, directly to to dual side.
|
||||
if (submode == Submodes::A_SIDE) {
|
||||
if (healthHelper.healthTable->getHealth(helper.healthDevGps1) == FAULTY or
|
||||
healthHelper.healthTable->getHealth(helper.healthDevGps1) == PERMANENT_FAULTY) {
|
||||
if (gps0HealthDevFaulty()) {
|
||||
triggerEvent(DIRECT_TRANSITION_TO_DUAL_OTHER_GPS_FAULTY, submode, 0);
|
||||
startTransition(mode, Submodes::DUAL_MODE);
|
||||
return;
|
||||
}
|
||||
} else if (submode == Submodes::B_SIDE) {
|
||||
if (healthHelper.healthTable->getHealth(helper.healthDevGps0) == FAULTY or
|
||||
healthHelper.healthTable->getHealth(helper.healthDevGps0) == PERMANENT_FAULTY) {
|
||||
if (gps1HealthDevFaulty()) {
|
||||
triggerEvent(DIRECT_TRANSITION_TO_DUAL_OTHER_GPS_FAULTY, submode, 0);
|
||||
startTransition(mode, Submodes::DUAL_MODE);
|
||||
return;
|
||||
@ -312,3 +310,19 @@ void AcsBoardAssembly::handleChildrenLostMode(ReturnValue_t result) {
|
||||
}
|
||||
DualLaneAssemblyBase::handleChildrenLostMode(result);
|
||||
}
|
||||
|
||||
bool AcsBoardAssembly::gps0HealthDevFaulty() const {
|
||||
auto health = healthHelper.healthTable->getHealth(helper.healthDevGps0);
|
||||
if (health == FAULTY or health == PERMANENT_FAULTY) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AcsBoardAssembly::gps1HealthDevFaulty() const {
|
||||
auto health = healthHelper.healthTable->getHealth(helper.healthDevGps1);
|
||||
if (health == FAULTY or health == PERMANENT_FAULTY) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user