From 3d0d10dc3255add47c8576a8b7b7e9ec0bbff6af Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 18 Aug 2022 17:27:39 +0200 Subject: [PATCH 1/6] try IMTQ change --- mission/controller/AcsController.cpp | 2 +- mission/controller/AcsController.h | 3 +-- .../controllerdefinitions/AcsCtrlDefinitions.h | 2 +- mission/devices/IMTQHandler.cpp | 17 ++++++++--------- .../devicedefinitions/IMTQHandlerDefinitions.h | 8 ++------ tmtc | 2 +- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/mission/controller/AcsController.cpp b/mission/controller/AcsController.cpp index 48c6f521..c97fd21b 100644 --- a/mission/controller/AcsController.cpp +++ b/mission/controller/AcsController.cpp @@ -89,7 +89,7 @@ void AcsController::copyMgmData() { { PoolReadGuard pg(&imtqMgmSet); if (pg.getReadResult() == RETURN_OK) { - std::memcpy(mgmData.imtqCal.value, imtqMgmSet.mgmXyz.value, 3 * sizeof(int32_t)); + std::memcpy(mgmData.imtqRaw.value, imtqMgmSet.mtmRawNt.value, 3 * sizeof(float)); mgmData.actuationCalStatus.value = imtqMgmSet.coilActuationStatus.value; } } diff --git a/mission/controller/AcsController.h b/mission/controller/AcsController.h index 246506b9..ce1bd7b0 100644 --- a/mission/controller/AcsController.h +++ b/mission/controller/AcsController.h @@ -42,8 +42,7 @@ class AcsController : public ExtendedControllerBase { MGMLIS3MDL::MgmPrimaryDataset(objects::MGM_2_LIS3_HANDLER); RM3100::Rm3100PrimaryDataset mgm3Rm3100Set = RM3100::Rm3100PrimaryDataset(objects::MGM_3_RM3100_HANDLER); - IMTQ::CalibratedMtmMeasurementSet imtqMgmSet = - IMTQ::CalibratedMtmMeasurementSet(objects::IMTQ_HANDLER); + IMTQ::RawMtmMeasurementSet imtqMgmSet = IMTQ::RawMtmMeasurementSet(objects::IMTQ_HANDLER); PoolEntry mgm0PoolVec = PoolEntry(3); PoolEntry mgm1PoolVec = PoolEntry(3); diff --git a/mission/controller/controllerdefinitions/AcsCtrlDefinitions.h b/mission/controller/controllerdefinitions/AcsCtrlDefinitions.h index cec18a63..7c81071a 100644 --- a/mission/controller/controllerdefinitions/AcsCtrlDefinitions.h +++ b/mission/controller/controllerdefinitions/AcsCtrlDefinitions.h @@ -34,7 +34,7 @@ class MgmData : public StaticLocalDataSet { lp_vec_t mgm2Lis3 = lp_vec_t(sid.objectId, MGM_2_LIS3_UT, this); lp_vec_t mgm3Rm3100 = lp_vec_t(sid.objectId, MGM_3_RM3100_UT, this); // The IMTQ measurements are in integer nT - lp_vec_t imtqCal = lp_vec_t(sid.objectId, MGM_IMTQ_CAL_NT, this); + lp_vec_t imtqRaw = lp_vec_t(sid.objectId, MGM_IMTQ_CAL_NT, this); lp_var_t actuationCalStatus = lp_var_t(sid.objectId, MGM_IMTQ_CAL_ACT_STATUS, this); diff --git a/mission/devices/IMTQHandler.cpp b/mission/devices/IMTQHandler.cpp index 91e378ca..a421ae21 100644 --- a/mission/devices/IMTQHandler.cpp +++ b/mission/devices/IMTQHandler.cpp @@ -335,9 +335,7 @@ ReturnValue_t IMTQHandler::initializeLocalDataPool(localpool::DataPool& localDat localDataPoolMap.emplace(IMTQ::ACTUATION_CAL_STATUS, new PoolEntry({0})); /** Entries of raw MTM measurement dataset */ - localDataPoolMap.emplace(IMTQ::MTM_RAW_X, new PoolEntry({0})); - localDataPoolMap.emplace(IMTQ::MTM_RAW_Y, new PoolEntry({0})); - localDataPoolMap.emplace(IMTQ::MTM_RAW_Z, new PoolEntry({0})); + localDataPoolMap.emplace(IMTQ::MTM_RAW, new PoolEntry(3)); localDataPoolMap.emplace(IMTQ::ACTUATION_RAW_STATUS, new PoolEntry({0})); /** INIT measurements for positive X axis test */ @@ -781,28 +779,29 @@ void IMTQHandler::fillCalibratedMtmDataset(const uint8_t* packet) { void IMTQHandler::fillRawMtmDataset(const uint8_t* packet) { PoolReadGuard rg(&rawMtmMeasurementSet); int8_t offset = 2; - rawMtmMeasurementSet.mtmXnT = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | + rawMtmMeasurementSet.mtmRawNt[0] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | *(packet + offset + 1) << 8 | *(packet + offset)) * 7.5; offset += 4; - rawMtmMeasurementSet.mtmYnT = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | + rawMtmMeasurementSet.mtmRawNt[1] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | *(packet + offset + 1) << 8 | *(packet + offset)) * 7.5; offset += 4; - rawMtmMeasurementSet.mtmZnT = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | + rawMtmMeasurementSet.mtmRawNt[2] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | *(packet + offset + 1) << 8 | *(packet + offset)) * 7.5; offset += 4; rawMtmMeasurementSet.coilActuationStatus = (*(packet + offset + 3) << 24) | (*(packet + offset + 2) << 16) | (*(packet + offset + 1) << 8) | (*(packet + offset)); + rawMtmMeasurementSet.setValidity(true, true); if (debugMode) { #if OBSW_VERBOSE_LEVEL >= 1 - sif::info << "IMTQ raw MTM measurement X: " << rawMtmMeasurementSet.mtmXnT << " nT" + sif::info << "IMTQ raw MTM measurement X: " << rawMtmMeasurementSet.mtmRawNt[0] << " nT" << std::endl; - sif::info << "IMTQ raw MTM measurement Y: " << rawMtmMeasurementSet.mtmYnT << " nT" + sif::info << "IMTQ raw MTM measurement Y: " << rawMtmMeasurementSet.mtmRawNt[1] << " nT" << std::endl; - sif::info << "IMTQ raw MTM measurement Z: " << rawMtmMeasurementSet.mtmZnT << " nT" + sif::info << "IMTQ raw MTM measurement Z: " << rawMtmMeasurementSet.mtmRawNt[2] << " nT" << std::endl; sif::info << "IMTQ coil actuation status during MTM measurement: " << (unsigned int)rawMtmMeasurementSet.coilActuationStatus.value << std::endl; diff --git a/mission/devices/devicedefinitions/IMTQHandlerDefinitions.h b/mission/devices/devicedefinitions/IMTQHandlerDefinitions.h index e6661f84..485be5da 100644 --- a/mission/devices/devicedefinitions/IMTQHandlerDefinitions.h +++ b/mission/devices/devicedefinitions/IMTQHandlerDefinitions.h @@ -117,9 +117,7 @@ enum IMTQPoolIds : lp_id_t { MCU_TEMPERATURE, MGM_CAL_NT, ACTUATION_CAL_STATUS, - MTM_RAW_X, - MTM_RAW_Y, - MTM_RAW_Z, + MTM_RAW, ACTUATION_RAW_STATUS, INIT_POS_X_ERR, @@ -422,9 +420,7 @@ class RawMtmMeasurementSet : public StaticLocalDataSet { RawMtmMeasurementSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, RAW_MTM_SET)) {} /** The unit of all measurements is nT */ - lp_var_t mtmXnT = lp_var_t(sid.objectId, MTM_RAW_X, this); - lp_var_t mtmYnT = lp_var_t(sid.objectId, MTM_RAW_Y, this); - lp_var_t mtmZnT = lp_var_t(sid.objectId, MTM_RAW_Z, this); + lp_vec_t mtmRawNt = lp_vec_t(sid.objectId, MTM_RAW, this); /** 1 if coils were actuating during measurement otherwise 0 */ lp_var_t coilActuationStatus = lp_var_t(sid.objectId, ACTUATION_RAW_STATUS, this); diff --git a/tmtc b/tmtc index 1f5baabf..7a309b4d 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 1f5baabf312eb7edc5b0449d443dd5f73054dfa2 +Subproject commit 7a309b4dc1cfb02626bb0b4b3d4e4d06f8192506 From 726e448af982b0f5b698039bc4be7f45c1791a4c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 18 Aug 2022 18:18:44 +0200 Subject: [PATCH 2/6] fixes for IMTQ mgm reading --- mission/controller/AcsController.h | 2 +- mission/devices/IMTQHandler.cpp | 47 ++++++++++++++++++++---------- tmtc | 2 +- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/mission/controller/AcsController.h b/mission/controller/AcsController.h index ce1bd7b0..3f3a4cc2 100644 --- a/mission/controller/AcsController.h +++ b/mission/controller/AcsController.h @@ -48,7 +48,7 @@ class AcsController : public ExtendedControllerBase { PoolEntry mgm1PoolVec = PoolEntry(3); PoolEntry mgm2PoolVec = PoolEntry(3); PoolEntry mgm3PoolVec = PoolEntry(3); - PoolEntry imtqMgmPoolVec = PoolEntry(3); + PoolEntry imtqMgmPoolVec = PoolEntry(3); PoolEntry imtqCalActStatus = PoolEntry(); void copyMgmData(); diff --git a/mission/devices/IMTQHandler.cpp b/mission/devices/IMTQHandler.cpp index a421ae21..b01e64ed 100644 --- a/mission/devices/IMTQHandler.cpp +++ b/mission/devices/IMTQHandler.cpp @@ -778,22 +778,37 @@ void IMTQHandler::fillCalibratedMtmDataset(const uint8_t* packet) { void IMTQHandler::fillRawMtmDataset(const uint8_t* packet) { PoolReadGuard rg(&rawMtmMeasurementSet); - int8_t offset = 2; - rawMtmMeasurementSet.mtmRawNt[0] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | - *(packet + offset + 1) << 8 | *(packet + offset)) * - 7.5; - offset += 4; - rawMtmMeasurementSet.mtmRawNt[1] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | - *(packet + offset + 1) << 8 | *(packet + offset)) * - 7.5; - offset += 4; - rawMtmMeasurementSet.mtmRawNt[2] = (*(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 | - *(packet + offset + 1) << 8 | *(packet + offset)) * - 7.5; - offset += 4; - rawMtmMeasurementSet.coilActuationStatus = (*(packet + offset + 3) << 24) | - (*(packet + offset + 2) << 16) | - (*(packet + offset + 1) << 8) | (*(packet + offset)); + unsigned int offset = 2; + size_t deSerLen = 16; + const uint8_t* dataStart = packet + offset; + int32_t xRaw = 0; + int32_t yRaw = 0; + int32_t zRaw = 0; + uint32_t coilActStatus = 0; + auto res = SerializeAdapter::deSerialize(&xRaw, &dataStart, &deSerLen, + SerializeIF::Endianness::LITTLE); + if(res != HasReturnvaluesIF::RETURN_OK) { + return; + } + res = SerializeAdapter::deSerialize(&yRaw, &dataStart, &deSerLen, + SerializeIF::Endianness::LITTLE); + if(res != HasReturnvaluesIF::RETURN_OK) { + return; + } + res = SerializeAdapter::deSerialize(&zRaw, &dataStart, &deSerLen, + SerializeIF::Endianness::LITTLE); + if(res != HasReturnvaluesIF::RETURN_OK) { + return; + } + res = SerializeAdapter::deSerialize(&coilActStatus, &dataStart, &deSerLen, + SerializeIF::Endianness::LITTLE); + if(res != HasReturnvaluesIF::RETURN_OK) { + return; + } + rawMtmMeasurementSet.mtmRawNt[0] = xRaw * 7.5; + rawMtmMeasurementSet.mtmRawNt[1] = yRaw * 7.5; + rawMtmMeasurementSet.mtmRawNt[2] = zRaw * 7.5; + rawMtmMeasurementSet.coilActuationStatus = static_cast(coilActStatus); rawMtmMeasurementSet.setValidity(true, true); if (debugMode) { #if OBSW_VERBOSE_LEVEL >= 1 diff --git a/tmtc b/tmtc index 7a309b4d..7e2ea082 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 7a309b4dc1cfb02626bb0b4b3d4e4d06f8192506 +Subproject commit 7e2ea08277148873cfa541a872b5cc52bf06ee5e From 70d9f00372c987e50e735d47660a0b987581b67b Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 19 Aug 2022 16:53:25 +0200 Subject: [PATCH 3/6] bump tmtc --- tmtc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmtc b/tmtc index 7e2ea082..00e99292 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 7e2ea08277148873cfa541a872b5cc52bf06ee5e +Subproject commit 00e99292cc158a347f485507537fa5b63262243b From 9eb210795834f25360a547470de9f91d0d2be1df Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 19 Aug 2022 21:41:24 +0200 Subject: [PATCH 4/6] fix --- linux/devices/ploc/PlocMPSoCHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux/devices/ploc/PlocMPSoCHandler.cpp b/linux/devices/ploc/PlocMPSoCHandler.cpp index b3eea536..1b599ebb 100644 --- a/linux/devices/ploc/PlocMPSoCHandler.cpp +++ b/linux/devices/ploc/PlocMPSoCHandler.cpp @@ -683,7 +683,7 @@ ReturnValue_t PlocMPSoCHandler::handleCamCmdRpt(const uint8_t* data) { reinterpret_cast(dataFieldPtr), tmCamCmdRpt.rememberSpacePacketSize - mpsoc::SPACE_PACKET_HEADER_SIZE - sizeof(uint16_t) - 3); #if OBSW_DEBUG_PLOC_MPSOC == 1 - uint8_t ackValue = *(packet.getPacketData() + packet.getPacketDataLength() - 2); + uint8_t ackValue = *(packetReader.getFullData() + packetReader.getFullPacketLen() - 2); sif::info << "PlocMPSoCHandler: CamCmdRpt message: " << camCmdRptMsg << std::endl; sif::info << "PlocMPSoCHandler: CamCmdRpt Ack value: 0x" << std::hex << static_cast(ackValue) << std::endl; From 2e2afcd6c50375073cb0257fc56fb30de7125cac Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sat, 20 Aug 2022 01:45:49 +0200 Subject: [PATCH 5/6] moved a size check --- .../PlocSupervisorDefinitions.h | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h index d6f74909..8f4e2154 100644 --- a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h +++ b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h @@ -1121,19 +1121,8 @@ class WriteMemory : public ploc::SpTcBase { uint8_t* updateData) { size_t serializedSize = 0; uint8_t* data = payloadStart; - SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId), - SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n), - SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&startAddr, &data, &serializedSize, sizeof(startAddr), - SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, sizeof(updateDataLen), - SerializeIF::Endianness::BIG); if (updateDataLen % 2 != 0) { spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen + 1); - // The data field must be two bytes aligned. Thus, in case the number of bytes to write is odd - // a value of zero is added here - *(data + updateDataLen + 1) = 0; } else { spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen); } @@ -1142,7 +1131,20 @@ class WriteMemory : public ploc::SpTcBase { if (result != HasReturnvaluesIF::RETURN_OK) { return result; } + SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId), + SerializeIF::Endianness::BIG); + SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n), + SerializeIF::Endianness::BIG); + SerializeAdapter::serialize(&startAddr, &data, &serializedSize, sizeof(startAddr), + SerializeIF::Endianness::BIG); + SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, sizeof(updateDataLen), + SerializeIF::Endianness::BIG); std::memcpy(data, updateData, updateDataLen); + if (updateDataLen % 2 != 0) { + // The data field must be two bytes aligned. Thus, in case the number of bytes to write is odd + // a value of zero is added here + data[updateDataLen + 1] = 0; + } return HasReturnvaluesIF::RETURN_OK; } }; From c8d38cf8528ec16a024b519dbc046d96294256f9 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sat, 20 Aug 2022 12:11:08 +0200 Subject: [PATCH 6/6] bugfixes --- .../devicedefinitions/PlocMPSoCDefinitions.h | 8 ++-- .../PlocSupervisorDefinitions.h | 38 +++++++++---------- linux/devices/ploc/PlocSupvHelper.cpp | 9 +++++ linux/devices/ploc/PlocSupvHelper.h | 4 +- mission/devices/IMTQHandler.cpp | 24 ++++++------ tmtc | 2 +- 6 files changed, 46 insertions(+), 39 deletions(-) diff --git a/linux/devices/devicedefinitions/PlocMPSoCDefinitions.h b/linux/devices/devicedefinitions/PlocMPSoCDefinitions.h index a293b1f7..6c72d1d9 100644 --- a/linux/devices/devicedefinitions/PlocMPSoCDefinitions.h +++ b/linux/devices/devicedefinitions/PlocMPSoCDefinitions.h @@ -370,8 +370,8 @@ class TcFlashWrite : public ploc::SpTcBase { if (result != HasReturnvaluesIF::RETURN_OK) { return result; } - size_t serializedSize = 0; - result = SerializeAdapter::serialize(&writeLen, payloadStart, &serializedSize, sizeof(writeLen), + size_t serializedSize = ccsds::HEADER_LEN; + result = SerializeAdapter::serialize(&writeLen, payloadStart, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); if (result != HasReturnvaluesIF::RETURN_OK) { return result; @@ -663,8 +663,8 @@ class TcCamcmdSend : public TcBase { if (res != HasReturnvaluesIF::RETURN_OK) { return res; } - size_t size = sizeof(dataLen); - SerializeAdapter::serialize(&dataLen, payloadStart, &size, sizeof(dataLen), + size_t size = ccsds::HEADER_LEN; + SerializeAdapter::serialize(&dataLen, payloadStart, &size, spParams.maxSize, SerializeIF::Endianness::BIG); std::memcpy(payloadStart + sizeof(dataLen), commandData, commandDataLen); *(payloadStart + sizeof(dataLen) + commandDataLen) = CARRIAGE_RETURN; diff --git a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h index 8f4e2154..5aa97e0d 100644 --- a/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h +++ b/linux/devices/devicedefinitions/PlocSupervisorDefinitions.h @@ -721,11 +721,11 @@ class SetAdcWindowAndStride : public ploc::SpTcBase { static const uint16_t CRC_OFFSET = DATA_FIELD_LENGTH - 2; void initPacket(uint16_t windowSize, uint16_t stridingStepSize) { - size_t serializedSize = 0; + size_t serializedSize = 6; uint8_t* data = payloadStart; - SerializeAdapter::serialize(&windowSize, &data, &serializedSize, sizeof(windowSize), + SerializeAdapter::serialize(&windowSize, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&stridingStepSize, &data, &serializedSize, sizeof(stridingStepSize), + SerializeAdapter::serialize(&stridingStepSize, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); } }; @@ -1066,13 +1066,13 @@ class CheckMemory : public ploc::SpTcBase { void initPacket(uint8_t memoryId, uint32_t startAddress, uint32_t length) { uint8_t* data = payloadStart; - size_t serLen = 0; - SerializeAdapter::serialize(&memoryId, &data, &serLen, sizeof(memoryId), + size_t serLen = 6; + SerializeAdapter::serialize(&memoryId, &data, &serLen, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&n, &data, &serLen, sizeof(n), SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&startAddress, &data, &serLen, sizeof(startAddress), + SerializeAdapter::serialize(&n, &data, &serLen, spParams.maxSize, SerializeIF::Endianness::BIG); + SerializeAdapter::serialize(&startAddress, &data, &serLen, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&length, &data, &serLen, sizeof(length), + SerializeAdapter::serialize(&length, &data, &serLen, spParams.maxSize, SerializeIF::Endianness::BIG); } }; @@ -1119,7 +1119,6 @@ class WriteMemory : public ploc::SpTcBase { ReturnValue_t initPacket(uint8_t memoryId, uint32_t startAddr, uint16_t updateDataLen, uint8_t* updateData) { - size_t serializedSize = 0; uint8_t* data = payloadStart; if (updateDataLen % 2 != 0) { spParams.setPayloadLen(META_DATA_LENGTH + updateDataLen + 1); @@ -1131,13 +1130,14 @@ class WriteMemory : public ploc::SpTcBase { if (result != HasReturnvaluesIF::RETURN_OK) { return result; } - SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId), + size_t serializedSize = 6; + SerializeAdapter::serialize(&memoryId, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n), + SerializeAdapter::serialize(&n, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&startAddr, &data, &serializedSize, sizeof(startAddr), + SerializeAdapter::serialize(&startAddr, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, sizeof(updateDataLen), + SerializeAdapter::serialize(&updateDataLen, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); std::memcpy(data, updateData, updateDataLen); if (updateDataLen % 2 != 0) { @@ -1178,17 +1178,15 @@ class EraseMemory : public ploc::SpTcBase { uint32_t length = 0; void initPacket(uint8_t memoryId, uint32_t startAddress, uint32_t length) { - size_t serializedSize = 0; uint8_t* data = payloadStart; - SerializeAdapter::serialize(&memoryId, &data, &serializedSize, sizeof(memoryId), + size_t serializedSize = 6; + SerializeAdapter::serialize(&memoryId, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - SerializeAdapter::serialize(&n, &data, &serializedSize, sizeof(n), + SerializeAdapter::serialize(&n, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - serializedSize = 0; - SerializeAdapter::serialize(&startAddress, &data, &serializedSize, sizeof(startAddress), + SerializeAdapter::serialize(&startAddress, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); - serializedSize = 0; - SerializeAdapter::serialize(&length, &data, &serializedSize, sizeof(length), + SerializeAdapter::serialize(&length, &data, &serializedSize, spParams.maxSize, SerializeIF::Endianness::BIG); } }; diff --git a/linux/devices/ploc/PlocSupvHelper.cpp b/linux/devices/ploc/PlocSupvHelper.cpp index 25566b11..de1fae0f 100644 --- a/linux/devices/ploc/PlocSupvHelper.cpp +++ b/linux/devices/ploc/PlocSupvHelper.cpp @@ -161,26 +161,32 @@ void PlocSupvHelper::stopProcess() { terminate = true; } ReturnValue_t PlocSupvHelper::performUpdate() { ReturnValue_t result = RETURN_OK; + sif::info << "PlocSupvHelper::performUpdate: Calculating Image CRC" << std::endl; result = calcImageCrc(); if (result != RETURN_OK) { return result; } + sif::info << "PlocSupvHelper::performUpdate: Selecting Memory" << std::endl; result = selectMemory(); if (result != RETURN_OK) { return result; } + sif::info << "PlocSupvHelper::performUpdate: Preparing Update" << std::endl; result = prepareUpdate(); if (result != RETURN_OK) { return result; } + sif::info << "PlocSupvHelper::performUpdate: Erasing Memory" << std::endl; result = eraseMemory(); if (result != RETURN_OK) { return result; } + sif::info << "PlocSupvHelper::performUpdate: Writing Update Packets" << std::endl; result = writeUpdatePackets(); if (result != RETURN_OK) { return result; } + sif::info << "PlocSupvHelper::performUpdate: Memory Check" << std::endl; result = handleCheckMemoryCommand(); if (result != RETURN_OK) { return result; @@ -317,6 +323,9 @@ ReturnValue_t PlocSupvHelper::prepareUpdate() { resetSpParams(); supv::ApidOnlyPacket packet(spParams, supv::APID_PREPARE_UPDATE); result = packet.buildPacket(); + if (result != RETURN_OK) { + return result; + } result = handlePacketTransmission(packet, PREPARE_UPDATE_EXECUTION_REPORT); if (result != RETURN_OK) { return result; diff --git a/linux/devices/ploc/PlocSupvHelper.h b/linux/devices/ploc/PlocSupvHelper.h index c17521d9..66b5d00a 100644 --- a/linux/devices/ploc/PlocSupvHelper.h +++ b/linux/devices/ploc/PlocSupvHelper.h @@ -178,11 +178,11 @@ class PlocSupvHelper : public SystemObject, public ExecutableObjectIF, public Ha #ifdef XIPHOS_Q7S SdCardManager* sdcMan = nullptr; #endif - uint8_t commandBuffer[supv::MAX_COMMAND_SIZE]; + uint8_t commandBuffer[supv::MAX_COMMAND_SIZE]{}; SpacePacketCreator creator; ploc::SpTcParams spParams = ploc::SpTcParams(creator); - std::array tmBuf; + std::array tmBuf{}; bool terminate = false; diff --git a/mission/devices/IMTQHandler.cpp b/mission/devices/IMTQHandler.cpp index b01e64ed..0d1f72db 100644 --- a/mission/devices/IMTQHandler.cpp +++ b/mission/devices/IMTQHandler.cpp @@ -785,30 +785,30 @@ void IMTQHandler::fillRawMtmDataset(const uint8_t* packet) { int32_t yRaw = 0; int32_t zRaw = 0; uint32_t coilActStatus = 0; - auto res = SerializeAdapter::deSerialize(&xRaw, &dataStart, &deSerLen, - SerializeIF::Endianness::LITTLE); - if(res != HasReturnvaluesIF::RETURN_OK) { + auto res = + SerializeAdapter::deSerialize(&xRaw, &dataStart, &deSerLen, SerializeIF::Endianness::LITTLE); + if (res != HasReturnvaluesIF::RETURN_OK) { return; } - res = SerializeAdapter::deSerialize(&yRaw, &dataStart, &deSerLen, - SerializeIF::Endianness::LITTLE); - if(res != HasReturnvaluesIF::RETURN_OK) { + res = + SerializeAdapter::deSerialize(&yRaw, &dataStart, &deSerLen, SerializeIF::Endianness::LITTLE); + if (res != HasReturnvaluesIF::RETURN_OK) { return; } - res = SerializeAdapter::deSerialize(&zRaw, &dataStart, &deSerLen, - SerializeIF::Endianness::LITTLE); - if(res != HasReturnvaluesIF::RETURN_OK) { + res = + SerializeAdapter::deSerialize(&zRaw, &dataStart, &deSerLen, SerializeIF::Endianness::LITTLE); + if (res != HasReturnvaluesIF::RETURN_OK) { return; } res = SerializeAdapter::deSerialize(&coilActStatus, &dataStart, &deSerLen, - SerializeIF::Endianness::LITTLE); - if(res != HasReturnvaluesIF::RETURN_OK) { + SerializeIF::Endianness::LITTLE); + if (res != HasReturnvaluesIF::RETURN_OK) { return; } rawMtmMeasurementSet.mtmRawNt[0] = xRaw * 7.5; rawMtmMeasurementSet.mtmRawNt[1] = yRaw * 7.5; rawMtmMeasurementSet.mtmRawNt[2] = zRaw * 7.5; - rawMtmMeasurementSet.coilActuationStatus = static_cast(coilActStatus); + rawMtmMeasurementSet.coilActuationStatus = static_cast(coilActStatus); rawMtmMeasurementSet.setValidity(true, true); if (debugMode) { #if OBSW_VERBOSE_LEVEL >= 1 diff --git a/tmtc b/tmtc index 00e99292..1b39bb2a 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 00e99292cc158a347f485507537fa5b63262243b +Subproject commit 1b39bb2ad2421db89487b4ea352edbd4d420b9b1