Dual Lane Boards: Allow Side Switches #412
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <eive/eventSubsystemIds.h>
|
#include <eive/eventSubsystemIds.h>
|
||||||
#include <eive/resultClassIds.h>
|
#include <eive/resultClassIds.h>
|
||||||
|
|
||||||
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
||||||
#include "fsfw/globalfunctions/PeriodicOperationDivider.h"
|
#include "fsfw/globalfunctions/PeriodicOperationDivider.h"
|
||||||
#include "mission/devices/devicedefinitions/acsPolling.h"
|
#include "mission/devices/devicedefinitions/acsPolling.h"
|
||||||
|
@ -34,7 +34,12 @@ void DualLaneAssemblyBase::startTransition(Mode_t mode, Submode_t submode) {
|
|||||||
// doStartTransition(mode, submode);
|
// doStartTransition(mode, submode);
|
||||||
using namespace duallane;
|
using namespace duallane;
|
||||||
pwrStateMachine.reset();
|
pwrStateMachine.reset();
|
||||||
if (mode != MODE_OFF) {
|
bool pwrStateMachineToOff = false;
|
||||||
|
if (mode == MODE_OFF or
|
||||||
|
(this->submode == duallane::Submodes::DUAL_MODE and submode != Submodes::DUAL_MODE)) {
|
||||||
|
pwrStateMachineToOff = true;
|
||||||
|
}
|
||||||
|
if (not pwrStateMachineToOff) {
|
||||||
// If anything other than MODE_OFF is commanded, perform power state machine first
|
// If anything other than MODE_OFF is commanded, perform power state machine first
|
||||||
// Cache the target modes, required by power state machine
|
// Cache the target modes, required by power state machine
|
||||||
pwrStateMachine.start(mode, submode);
|
pwrStateMachine.start(mode, submode);
|
||||||
|
@ -31,13 +31,10 @@ class DualLaneAssemblyBase : public AssemblyBase, public ConfirmsFailuresIF {
|
|||||||
uint8_t powerRetryCounter = 0;
|
uint8_t powerRetryCounter = 0;
|
||||||
bool tryingOtherSide = false;
|
bool tryingOtherSide = false;
|
||||||
bool dualModeErrorSwitch = true;
|
bool dualModeErrorSwitch = true;
|
||||||
|
bool pwrStateMachineFirst = false;
|
||||||
duallane::Submodes defaultSubmode = duallane::Submodes::A_SIDE;
|
duallane::Submodes defaultSubmode = duallane::Submodes::A_SIDE;
|
||||||
|
|
||||||
enum SideSwitchState {
|
enum SideSwitchState { NONE, TO_DUAL, DISABLE_OTHER_SIDE };
|
||||||
NONE,
|
|
||||||
TO_DUAL,
|
|
||||||
DISABLE_OTHER_SIDE
|
|
||||||
};
|
|
||||||
|
|
||||||
SideSwitchState sideSwitchState = SideSwitchState::NONE;
|
SideSwitchState sideSwitchState = SideSwitchState::NONE;
|
||||||
duallane::Submodes targetSubmodeForSideSwitch = duallane::Submodes::B_SIDE;
|
duallane::Submodes targetSubmodeForSideSwitch = duallane::Submodes::B_SIDE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user