From 726e448af982b0f5b698039bc4be7f45c1791a4c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 18 Aug 2022 18:18:44 +0200 Subject: [PATCH] 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