diff --git a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h index 8ed6778a..b576af7e 100644 --- a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h +++ b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h @@ -418,31 +418,25 @@ class SetTimeRef : public ploc::SpTcBase { size_t serializedSize = 0; uint8_t* dataFieldPtr = payloadStart; uint16_t milliseconds = static_cast(time->usecond / 1000) | SYNC; - SerializeAdapter::serialize(&milliseconds, &dataFieldPtr, &serializedSize, + SerializeAdapter::serialize(&milliseconds, &dataFieldPtr, &serializedSize, sizeof(milliseconds), SerializeIF::Endianness::BIG); uint8_t second = static_cast(time->second); - serializedSize = 0; - SerializeAdapter::serialize(&second, &dataFieldPtr, &serializedSize, + SerializeAdapter::serialize(&second, &dataFieldPtr, &serializedSize, sizeof(time->second), SerializeIF::Endianness::BIG); uint8_t minute = static_cast(time->minute); - serializedSize = 0; - SerializeAdapter::serialize(&minute, &dataFieldPtr, &serializedSize, + SerializeAdapter::serialize(&minute, &dataFieldPtr, &serializedSize, sizeof(time->minute), SerializeIF::Endianness::BIG); uint8_t hour = static_cast(time->hour); - serializedSize = 0; - SerializeAdapter::serialize(&hour, &dataFieldPtr, &serializedSize, sizeof(time->hour), + SerializeAdapter::serialize(&hour, &dataFieldPtr, &serializedSize, sizeof(time->hour), SerializeIF::Endianness::BIG); uint8_t day = static_cast(time->day); - serializedSize = 0; - SerializeAdapter::serialize(&day, &dataFieldPtr, &serializedSize, sizeof(time->day), + SerializeAdapter::serialize(&day, &dataFieldPtr, &serializedSize, sizeof(time->day), SerializeIF::Endianness::BIG); uint8_t month = static_cast(time->month); - serializedSize = 0; - SerializeAdapter::serialize(&month, &dataFieldPtr, &serializedSize, + SerializeAdapter::serialize(&month, &dataFieldPtr, &serializedSize, sizeof(time->month), SerializeIF::Endianness::BIG); uint8_t year = static_cast(time->year - 1900); - serializedSize = 0; - SerializeAdapter::serialize(&year, &dataFieldPtr, &serializedSize, sizeof(time->year), + SerializeAdapter::serialize(&year, &dataFieldPtr, &serializedSize, sizeof(time->year), SerializeIF::Endianness::BIG); } }; diff --git a/linux/devices/ploc/PlocSupervisorHandler.cpp b/linux/devices/ploc/PlocSupervisorHandler.cpp index b0718e81..6789f9f5 100644 --- a/linux/devices/ploc/PlocSupervisorHandler.cpp +++ b/linux/devices/ploc/PlocSupervisorHandler.cpp @@ -326,7 +326,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case FACTORY_RESET_CLEAR_MIRROR: { @@ -335,7 +335,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case FACTORY_RESET_CLEAR_CIRCULAR: { @@ -344,7 +344,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case START_MPSOC_QUIET: { @@ -368,7 +368,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case DISABLE_AUTO_TM: { @@ -377,7 +377,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case LOGGING_REQUEST_COUNTERS: { @@ -386,7 +386,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case LOGGING_CLEAR_COUNTERS: { @@ -395,7 +395,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case LOGGING_SET_TOPIC: { @@ -405,7 +405,7 @@ ReturnValue_t PlocSupervisorHandler::buildCommandFromCommand(DeviceCommandId_t d if (result != RETURN_OK) { break; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case RESET_PL: { @@ -1397,7 +1397,7 @@ ReturnValue_t PlocSupervisorHandler::prepareEmptyCmd(uint16_t apid) { if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1408,7 +1408,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSelBootImageCmd(const uint8_t* comma if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1425,7 +1425,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetTimeRefCmd() { if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1435,7 +1435,7 @@ ReturnValue_t PlocSupervisorHandler::prepareDisableHk() { if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1447,7 +1447,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetBootTimeoutCmd(const uint8_t* com if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1458,7 +1458,7 @@ ReturnValue_t PlocSupervisorHandler::prepareRestartTriesCmd(const uint8_t* comma if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1476,7 +1476,7 @@ ReturnValue_t PlocSupervisorHandler::prepareLatchupConfigCmd(const uint8_t* comm if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } case (supv::DISABLE_LATCHUP_ALERT): { @@ -1485,7 +1485,7 @@ ReturnValue_t PlocSupervisorHandler::prepareLatchupConfigCmd(const uint8_t* comm if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); break; } default: { @@ -1512,7 +1512,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetAlertLimitCmd(const uint8_t* comm if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1523,7 +1523,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetAdcEnabledChannelsCmd(const uint8 if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1537,7 +1537,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetAdcWindowAndStrideCmd(const uint8 if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1549,7 +1549,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetAdcThresholdCmd(const uint8_t* co if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1563,7 +1563,7 @@ ReturnValue_t PlocSupervisorHandler::prepareRunAutoEmTest(const uint8_t* command if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1581,7 +1581,7 @@ ReturnValue_t PlocSupervisorHandler::prepareWipeMramCmd(const uint8_t* commandDa if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1605,7 +1605,7 @@ ReturnValue_t PlocSupervisorHandler::prepareDumpMramCmd(const uint8_t* commandDa } receivedMramDumpPackets = 0; - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1618,7 +1618,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetGpioCmd(const uint8_t* commandDat if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1630,11 +1630,15 @@ ReturnValue_t PlocSupervisorHandler::prepareReadGpioCmd(const uint8_t* commandDa if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } -void PlocSupervisorHandler::finishTcPrep() { nextReplyId = supv::ACK_REPORT; } +void PlocSupervisorHandler::finishTcPrep(size_t packetLen) { + nextReplyId = supv::ACK_REPORT; + rawPacket = commandBuffer; + rawPacketLen = packetLen; +} ReturnValue_t PlocSupervisorHandler::prepareSetShutdownTimeoutCmd(const uint8_t* commandData) { uint32_t timeout = 0; @@ -1652,7 +1656,7 @@ ReturnValue_t PlocSupervisorHandler::prepareSetShutdownTimeoutCmd(const uint8_t* if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1666,7 +1670,7 @@ ReturnValue_t PlocSupervisorHandler::prepareLoggingRequest(const uint8_t* comman if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } @@ -1679,7 +1683,7 @@ ReturnValue_t PlocSupervisorHandler::prepareEnableNvmsCommand(const uint8_t* com if (result != RETURN_OK) { return result; } - finishTcPrep(); + finishTcPrep(packet.getFullPacketLen()); return RETURN_OK; } diff --git a/linux/devices/ploc/PlocSupervisorHandler.h b/linux/devices/ploc/PlocSupervisorHandler.h index c6476679..ebd059f9 100644 --- a/linux/devices/ploc/PlocSupervisorHandler.h +++ b/linux/devices/ploc/PlocSupervisorHandler.h @@ -287,7 +287,7 @@ class PlocSupervisorHandler : public DeviceHandlerBase { /** * @brief Copies the content of a space packet to the command buffer. */ - void finishTcPrep(); + void finishTcPrep(size_t packetLen); /** * @brief In case an acknowledgment failure reply has been received this function disables diff --git a/tmtc b/tmtc index 7e1eeb85..77a4f493 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 7e1eeb85fcee45c3d421a8e344d3678ec6334873 +Subproject commit 77a4f493050463cad66c4913aa66b67c678ca34a