From 3f8603967c0a3ef5f2319829494dae036c24aff2 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 31 Mar 2023 18:51:16 +0200 Subject: [PATCH 1/2] param update STR --- mission/acs/str/StarTrackerHandler.cpp | 40 ++++++++++++++++---------- mission/acs/str/StarTrackerHandler.h | 4 ++- tmtc | 2 +- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/mission/acs/str/StarTrackerHandler.cpp b/mission/acs/str/StarTrackerHandler.cpp index def0bea8..41b45b76 100644 --- a/mission/acs/str/StarTrackerHandler.cpp +++ b/mission/acs/str/StarTrackerHandler.cpp @@ -213,6 +213,8 @@ ReturnValue_t StarTrackerHandler::executeAction(ActionId_t actionId, MessageQueu default: break; } + // In case the JSON has changed, reinitiate the next parameter set to update. + reinitNextSetParam = true; return DeviceHandlerBase::executeAction(actionId, commandedBy, data, size); } @@ -273,6 +275,7 @@ void StarTrackerHandler::doShutDown() { startupState = StartupState::IDLE; bootState = FwBootState::NONE; solutionSet.setReportingEnabled(false); + reinitNextSetParam = false; setMode(_MODE_POWER_DOWN); } @@ -313,6 +316,8 @@ ReturnValue_t StarTrackerHandler::buildTransitionDeviceCommand(DeviceCommandId_t if (bootCountdown.isBusy()) { return NOTHING_TO_SEND; } + // Was already done. + reinitNextSetParam = false; bootState = FwBootState::REQ_VERSION; } switch (bootState) { @@ -461,7 +466,8 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi return returnvalue::OK; } case (startracker::SUBSCRIPTION): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.subscription); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.subscription, + reinitNextSetParam); return returnvalue::OK; } case (startracker::REQ_SOLUTION): { @@ -477,55 +483,55 @@ ReturnValue_t StarTrackerHandler::buildCommandFromCommand(DeviceCommandId_t devi return returnvalue::OK; } case (startracker::LIMITS): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.limits); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.limits, reinitNextSetParam); return result; } case (startracker::MOUNTING): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.mounting); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.mounting, reinitNextSetParam); return result; } case (startracker::IMAGE_PROCESSOR): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.imageProcessor); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.imageProcessor, reinitNextSetParam); return result; } case (startracker::CAMERA): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.camera); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.camera, reinitNextSetParam); return result; } case (startracker::CENTROIDING): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.centroiding); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.centroiding, reinitNextSetParam); return result; } case (startracker::LISA): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.lisa); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.lisa, reinitNextSetParam); return result; } case (startracker::MATCHING): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.matching); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.matching, reinitNextSetParam); return result; } case (startracker::VALIDATION): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.validation); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.validation, reinitNextSetParam); return result; } case (startracker::ALGO): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.algo); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.algo, reinitNextSetParam); return result; } case (startracker::TRACKING): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.tracking); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.tracking, reinitNextSetParam); return result; } case (startracker::LOGLEVEL): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.logLevel); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.logLevel, reinitNextSetParam); return result; } case (startracker::LOGSUBSCRIPTION): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.logSubscription); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.logSubscription, reinitNextSetParam); return result; } case (startracker::DEBUG_CAMERA): { - result = prepareParamCommand(commandData, commandDataLen, jcfgs.debugCamera); + result = prepareParamCommand(commandData, commandDataLen, jcfgs.debugCamera, reinitNextSetParam); return result; } case (startracker::CHECKSUM): { @@ -1690,12 +1696,16 @@ void StarTrackerHandler::prepareHistogramRequest() { ReturnValue_t StarTrackerHandler::prepareParamCommand(const uint8_t* commandData, size_t commandDataLen, - ArcsecJsonParamBase& paramSet) { + ArcsecJsonParamBase& paramSet, + bool reinitSet) { // Stopwatch watch; ReturnValue_t result = returnvalue::OK; if (commandDataLen > MAX_PATH_SIZE) { return FILE_PATH_TOO_LONG; } + if(reinitSet) { + result = paramSet.init(paramJsonFile); + } result = paramSet.create(commandBuffer); if (result != returnvalue::OK) { diff --git a/mission/acs/str/StarTrackerHandler.h b/mission/acs/str/StarTrackerHandler.h index c1acc545..69b3e121 100644 --- a/mission/acs/str/StarTrackerHandler.h +++ b/mission/acs/str/StarTrackerHandler.h @@ -287,6 +287,8 @@ class StarTrackerHandler : public DeviceHandlerBase { InternalState internalState = InternalState::IDLE; + bool reinitNextSetParam = false; + bool strHelperHandlingSpecialRequest = false; const power::Switch_t powerSwitch = power::NO_SWITCH; @@ -409,7 +411,7 @@ class StarTrackerHandler : public DeviceHandlerBase { * @return returnvalue::OK if successful, otherwise error return Value */ ReturnValue_t prepareParamCommand(const uint8_t* commandData, size_t commandDataLen, - ArcsecJsonParamBase& paramSet); + ArcsecJsonParamBase& paramSet, bool reinitSet); /** * @brief The following function will fill the command buffer with the command to request diff --git a/tmtc b/tmtc index aab50dce..5b613f98 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit aab50dce5ace6878432377fff5e6b2cd1c485213 +Subproject commit 5b613f98eea415242c152ed3498ed3c0434f139f From da36160f6eb93c37a80cc0c7cf07d9754e580f9e Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 31 Mar 2023 18:52:35 +0200 Subject: [PATCH 2/2] returncode check --- mission/acs/str/StarTrackerHandler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mission/acs/str/StarTrackerHandler.cpp b/mission/acs/str/StarTrackerHandler.cpp index 41b45b76..520979a8 100644 --- a/mission/acs/str/StarTrackerHandler.cpp +++ b/mission/acs/str/StarTrackerHandler.cpp @@ -1705,6 +1705,9 @@ ReturnValue_t StarTrackerHandler::prepareParamCommand(const uint8_t* commandData } if(reinitSet) { result = paramSet.init(paramJsonFile); + if(result != returnvalue::OK) { + return result; + } } result = paramSet.create(commandBuffer);