diff --git a/mission/devices/PayloadPcduHandler.cpp b/mission/devices/PayloadPcduHandler.cpp index 56822bd5..d9e41c7f 100644 --- a/mission/devices/PayloadPcduHandler.cpp +++ b/mission/devices/PayloadPcduHandler.cpp @@ -33,6 +33,7 @@ void PayloadPcduHandler::doStartUp() { if (pwrStateMachine.getState() == power::States::IDLE) { pwrStateMachine.start(MODE_ON, pwrSubmode); } + clearSetOnOffFlag = true; auto opCode = pwrStateMachine.fsm(); if (opCode == power::OpCodes::TO_NOT_OFF_DONE or opCode == power::OpCodes::TIMEOUT_OCCURED) { pwrStateMachine.reset(); @@ -50,6 +51,11 @@ void PayloadPcduHandler::doShutDown() { if (pwrStateMachine.getState() == power::States::IDLE) { pwrStateMachine.start(MODE_OFF, 0); } + if (clearSetOnOffFlag) { + std::memset(adcSet.processed.value, 0, adcSet.processed.getSerializedSize()); + clearSetOnOffFlag = false; + } + auto opCode = pwrStateMachine.fsm(); if (opCode == power::OpCodes::TO_OFF_DONE or opCode == power::OpCodes::TIMEOUT_OCCURED) { pwrStateMachine.reset(); diff --git a/mission/devices/PayloadPcduHandler.h b/mission/devices/PayloadPcduHandler.h index 6a9334ca..2f89c837 100644 --- a/mission/devices/PayloadPcduHandler.h +++ b/mission/devices/PayloadPcduHandler.h @@ -124,6 +124,7 @@ class PayloadPcduHandler : public DeviceHandlerBase { bool txToMpaInjectionRequested = false; bool mpaToHpaInjectionRequested = false; bool allOnInjectRequested = false; + bool clearSetOnOffFlag = true; PeriodicOperationDivider opDivider = PeriodicOperationDivider(5); uint8_t tempReadDivisor = 1;