Merge remote-tracking branch 'origin/develop' into continue_tcs_tests
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
@ -56,12 +56,12 @@ ReturnValue_t RwAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_t want
|
||||
}
|
||||
}
|
||||
} catch (const std::out_of_range& e) {
|
||||
sif::error << "RwAssembly: Invalid children map: " << e.what() << std::endl;
|
||||
sif::error << "RW ASSY: Invalid children map: " << e.what() << std::endl;
|
||||
}
|
||||
if (devsInCorrectMode < 3) {
|
||||
if (warningSwitch) {
|
||||
sif::warning << "RwAssembly::checkChildrenStateOn: Only " << devsInCorrectMode
|
||||
<< " devices in correct mode" << std::endl;
|
||||
sif::warning << "RW ASSY: Only " << devsInCorrectMode << " devices in correct mode"
|
||||
<< std::endl;
|
||||
warningSwitch = false;
|
||||
}
|
||||
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||
@ -106,46 +106,18 @@ void RwAssembly::handleModeReached() {
|
||||
}
|
||||
}
|
||||
|
||||
void RwAssembly::handleChildrenLostMode(ReturnValue_t result) {
|
||||
AssemblyBase::handleChildrenLostMode(result);
|
||||
}
|
||||
|
||||
ReturnValue_t RwAssembly::handleNormalOrOnModeCmd(Mode_t mode, Submode_t submode) {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
bool needsSecondStep = false;
|
||||
Mode_t devMode = 0;
|
||||
object_id_t objId = 0;
|
||||
try {
|
||||
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||
devMode = childrenMap.at(helper.rwIds[idx]).mode;
|
||||
objId = helper.rwIds[idx];
|
||||
if (mode == devMode) {
|
||||
if (isUseable(objId, mode)) {
|
||||
modeTable[idx].setMode(mode);
|
||||
} else if (mode == DeviceHandlerIF::MODE_NORMAL) {
|
||||
if (isUseable(objId, devMode)) {
|
||||
if (devMode == MODE_ON) {
|
||||
modeTable[idx].setMode(mode);
|
||||
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||
} else {
|
||||
modeTable[idx].setMode(MODE_ON);
|
||||
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||
if (internalState != STATE_SECOND_STEP) {
|
||||
needsSecondStep = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (mode == MODE_ON) {
|
||||
if (isUseable(objId, devMode)) {
|
||||
modeTable[idx].setMode(MODE_ON);
|
||||
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||
}
|
||||
modeTable[idx].setSubmode(submode);
|
||||
}
|
||||
}
|
||||
} catch (const std::out_of_range& e) {
|
||||
sif::error << "TcsBoardAssembly: Invalid children map: " << e.what() << std::endl;
|
||||
}
|
||||
if (needsSecondStep) {
|
||||
result = NEED_SECOND_STEP;
|
||||
sif::error << "RW ASSY: Invalid children map: " << e.what() << std::endl;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -172,15 +144,3 @@ ReturnValue_t RwAssembly::initialize() {
|
||||
}
|
||||
return AssemblyBase::initialize();
|
||||
}
|
||||
|
||||
void RwAssembly::handleModeTransitionFailed(ReturnValue_t result) {
|
||||
if (targetMode == MODE_OFF) {
|
||||
AssemblyBase::handleModeTransitionFailed(result);
|
||||
} else {
|
||||
if (modeTransitionFailedSwitch) {
|
||||
// To avoid transitioning back to off
|
||||
triggerEvent(MODE_TRANSITION_FAILED, result);
|
||||
modeTransitionFailedSwitch = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,11 +41,6 @@ class RwAssembly : public AssemblyBase {
|
||||
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
|
||||
void startTransition(Mode_t mode, Submode_t submode) override;
|
||||
void handleModeReached() override;
|
||||
|
||||
// These two overrides prevent a transition of the whole assembly back to off just because
|
||||
// some devices are not working
|
||||
void handleChildrenLostMode(ReturnValue_t result) override;
|
||||
void handleModeTransitionFailed(ReturnValue_t result) override;
|
||||
};
|
||||
|
||||
#endif /* MISSION_SYSTEM_RWASS_H_ */
|
||||
|
Reference in New Issue
Block a user