fixes for switchig algorithm
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:
@ -4,8 +4,11 @@ Stack5VHandler::Stack5VHandler(PowerSwitchIF& switcher) : switcher(switcher) {
|
||||
stackLock = MutexFactory::instance()->createMutex();
|
||||
}
|
||||
|
||||
ReturnValue_t Stack5VHandler::deviceToOn(StackCommander commander) {
|
||||
ReturnValue_t Stack5VHandler::deviceToOn(StackCommander commander, bool updateStates) {
|
||||
MutexGuard mg(stackLock);
|
||||
if (updateStates) {
|
||||
updateInternalStates();
|
||||
}
|
||||
if (switchIsOn) {
|
||||
if (commander == StackCommander::PL_PCDU) {
|
||||
plPcduIsOn = true;
|
||||
@ -21,8 +24,11 @@ ReturnValue_t Stack5VHandler::deviceToOn(StackCommander commander) {
|
||||
return switcher.sendSwitchCommand(stackSwitch, PowerSwitchIF::SWITCH_ON);
|
||||
}
|
||||
|
||||
ReturnValue_t Stack5VHandler::deviceToOff(StackCommander commander) {
|
||||
ReturnValue_t Stack5VHandler::deviceToOff(StackCommander commander, bool updateStates) {
|
||||
MutexGuard mg(stackLock);
|
||||
if (updateStates) {
|
||||
updateInternalStates();
|
||||
}
|
||||
if (not switchIsOn) {
|
||||
if (commander == StackCommander::PL_PCDU) {
|
||||
plPcduIsOn = false;
|
||||
@ -44,6 +50,15 @@ ReturnValue_t Stack5VHandler::deviceToOff(StackCommander commander) {
|
||||
|
||||
bool Stack5VHandler::isSwitchOn() {
|
||||
MutexGuard mg(stackLock);
|
||||
return updateInternalStates();
|
||||
}
|
||||
|
||||
void Stack5VHandler::update() {
|
||||
MutexGuard mg(stackLock);
|
||||
updateInternalStates();
|
||||
}
|
||||
|
||||
bool Stack5VHandler::updateInternalStates() {
|
||||
if (switcher.getSwitchState(stackSwitch) == PowerSwitchIF::SWITCH_ON) {
|
||||
if (not switchIsOn) {
|
||||
if (handlerState == HandlerState::SWITCH_PENDING) {
|
||||
@ -52,15 +67,15 @@ bool Stack5VHandler::isSwitchOn() {
|
||||
switchIsOn = true;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
if (switchIsOn) {
|
||||
if (handlerState == HandlerState::SWITCH_PENDING) {
|
||||
handlerState = HandlerState::IDLE;
|
||||
}
|
||||
switchIsOn = false;
|
||||
}
|
||||
radSensorIsOn = false;
|
||||
plPcduIsOn = false;
|
||||
}
|
||||
if (switchIsOn) {
|
||||
if (handlerState == HandlerState::SWITCH_PENDING) {
|
||||
handlerState = HandlerState::IDLE;
|
||||
}
|
||||
switchIsOn = false;
|
||||
}
|
||||
radSensorIsOn = false;
|
||||
plPcduIsOn = false;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user