diff --git a/CHANGELOG.md b/CHANGELOG.md index 360ff839..8d41eabd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,17 @@ will consitute of a breaking change warranting a new major release: # [unreleased] +# [v8.0.1] 2024-05-28 + +## Fixed + +- Important bugfix for PLOC SUPV: The SUPV previously was able to steal packets from the special + communication helper, for eample during software updates. + +## Added + +- Added new command to cancel the PLOC SUPV special communication helper. + # [v8.0.0] 2024-05-13 - `eive-tmtc` v7.0.0 diff --git a/linux/payload/FreshSupvHandler.cpp b/linux/payload/FreshSupvHandler.cpp index 1252f9d8..2c38c821 100644 --- a/linux/payload/FreshSupvHandler.cpp +++ b/linux/payload/FreshSupvHandler.cpp @@ -241,6 +241,9 @@ ReturnValue_t FreshSupvHandler::executeAction(ActionId_t actionId, MessageQueueI uartManager->initiateUpdateContinuation(); return EXECUTION_FINISHED; } + case ABORT_LONGER_REQUEST: { + uartManager->stop(); + } case MEMORY_CHECK_WITH_FILE: { UpdateParams params; result = extractBaseParams(&data, size, params); @@ -849,6 +852,10 @@ ReturnValue_t FreshSupvHandler::prepareWipeMramCmd(const uint8_t* commandData, s ReturnValue_t FreshSupvHandler::parseTmPackets() { uint8_t* receivedData = nullptr; size_t receivedSize = 0; + // We do not want to steal packets from the long request handler. + if (uartManager->longerRequestActive()) { + return returnvalue::OK; + } while (true) { ReturnValue_t result = uartManager->readReceivedMessage(comCookie, &receivedData, &receivedSize); diff --git a/linux/payload/plocSupvDefs.h b/linux/payload/plocSupvDefs.h index 349c29ad..e6536713 100644 --- a/linux/payload/plocSupvDefs.h +++ b/linux/payload/plocSupvDefs.h @@ -159,6 +159,7 @@ static const DeviceCommandId_t ENABLE_NVMS = 59; static const DeviceCommandId_t CONTINUE_UPDATE = 60; static const DeviceCommandId_t MEMORY_CHECK_WITH_FILE = 61; static constexpr DeviceCommandId_t MEMORY_CHECK = 62; +static constexpr DeviceCommandId_t ABORT_LONGER_REQUEST = 63; /** Reply IDs */ enum ReplyId : DeviceCommandId_t {