From 05b88dd29432b8abeeac75c025a7fadc4a976857 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 24 Jan 2024 14:20:15 +0100 Subject: [PATCH] add new parameter to skip SUPV commanding --- linux/payload/PlocMpsocHandler.cpp | 20 ++++++++++++++++++++ linux/payload/PlocMpsocHandler.h | 2 ++ linux/payload/plocMpsocHelpers.h | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/linux/payload/PlocMpsocHandler.cpp b/linux/payload/PlocMpsocHandler.cpp index 05b3a04e..6601d957 100644 --- a/linux/payload/PlocMpsocHandler.cpp +++ b/linux/payload/PlocMpsocHandler.cpp @@ -7,6 +7,7 @@ #include "OBSWConfig.h" #include "fsfw/datapool/PoolReadGuard.h" #include "fsfw/globalfunctions/CRC.h" +#include "fsfw/parameters/HasParametersIF.h" PlocMpsocHandler::PlocMpsocHandler(object_id_t objectId, object_id_t uartComIFid, CookieIF* comCookie, PlocMpsocSpecialComHelper* plocMPSoCHelper, @@ -1395,6 +1396,9 @@ bool PlocMpsocHandler::handleHwStartup() { return true; #endif if (powerState == PowerState::IDLE) { + if (skipSupvCommandingToOn) { + powerState = PowerState::DONE; + } if (supv::SUPV_ON) { commandActionHelper.commandAction(supervisorHandler, supv::START_MPSOC); supvTransitionCd.resetTimer(); @@ -1532,3 +1536,19 @@ ReturnValue_t PlocMpsocHandler::checkModeCommand(Mode_t commandedMode, Submode_t } return DeviceHandlerBase::checkModeCommand(commandedMode, commandedSubmode, msToReachTheMode); } + +ReturnValue_t PlocMpsocHandler::getParameter(uint8_t domainId, uint8_t uniqueId, + ParameterWrapper* parameterWrapper, + const ParameterWrapper* newValues, + uint16_t startAtIndex) { + if (uniqueId == mpsoc::ParamId::SKIP_SUPV_ON_COMMANDING) { + uint8_t value = 0; + newValues->getElement(&value); + if (value > 1) { + return HasParametersIF::INVALID_VALUE; + } + parameterWrapper->set(skipSupvCommandingToOn); + } + return DeviceHandlerBase::getParameter(domainId, uniqueId, parameterWrapper, newValues, + startAtIndex); +} diff --git a/linux/payload/PlocMpsocHandler.h b/linux/payload/PlocMpsocHandler.h index 5d584943..42da39de 100644 --- a/linux/payload/PlocMpsocHandler.h +++ b/linux/payload/PlocMpsocHandler.h @@ -201,6 +201,8 @@ class PlocMpsocHandler : public DeviceHandlerBase, public CommandsActionsIF { PowerState powerState = PowerState::IDLE; + uint8_t skipSupvCommandingToOn = false; + /** * @brief Handles events received from the PLOC MPSoC helper */ diff --git a/linux/payload/plocMpsocHelpers.h b/linux/payload/plocMpsocHelpers.h index c9b08a28..f0a69049 100644 --- a/linux/payload/plocMpsocHelpers.h +++ b/linux/payload/plocMpsocHelpers.h @@ -13,6 +13,10 @@ namespace mpsoc { +enum ParamId: uint8_t { + SKIP_SUPV_ON_COMMANDING = 0x01 +}; + enum FileAccessModes : uint8_t { // Opens a file, fails if the file does not exist. OPEN_EXISTING = 0x00,