From d045498761e88b58b10645cdee540029ea523127 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 1 Mar 2023 19:03:18 +0100 Subject: [PATCH 1/6] allow quicker transition --- mission/system/tree/system.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mission/system/tree/system.cpp b/mission/system/tree/system.cpp index 5ec10a8c..710698a1 100644 --- a/mission/system/tree/system.cpp +++ b/mission/system/tree/system.cpp @@ -87,19 +87,19 @@ void buildSafeSequence(Subsystem& ss, ModeListEntry& eh) { // consecutive commanding of TCS and ACS can lead to SPI issues. iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_SAFE_TRANS_0.second); iht(objects::COM_SUBSYSTEM, com::RX_ONLY, 0, EIVE_TABLE_SAFE_TRANS_0.second); + iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_SAFE_TRANS_0.second); + iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TRANS_0.second); check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TRANS_0.first, &EIVE_TABLE_SAFE_TRANS_0.second)), ctxc); // Build SAFE transition 1 - iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_SAFE_TRANS_1.second); - iht(objects::ACS_SUBSYSTEM, acs::AcsMode::SAFE, 0, EIVE_TABLE_SAFE_TRANS_1.second); - check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TRANS_1.first, &EIVE_TABLE_SAFE_TRANS_1.second)), - ctxc); + //check(ss.addTable(TableEntry(EIVE_TABLE_SAFE_TRANS_1.first, &EIVE_TABLE_SAFE_TRANS_1.second)), + // ctxc); // Build Safe sequence ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TGT.first, 0, false); ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TRANS_0.first, 0, false); - ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TRANS_1.first, 0, false); + //ihs(EIVE_SEQUENCE_SAFE.second, EIVE_TABLE_SAFE_TRANS_1.first, 0, false); check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_SAFE.first, &EIVE_SEQUENCE_SAFE.second, EIVE_SEQUENCE_SAFE.first)), ctxc); @@ -129,19 +129,19 @@ void buildIdleSequence(Subsystem& ss, ModeListEntry& eh) { // Build SAFE transition 0 iht(objects::TCS_SUBSYSTEM, NML, 0, EIVE_TABLE_IDLE_TRANS_0.second); + iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_IDLE_TRANS_1.second); + iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TRANS_1.second); check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TRANS_0.first, &EIVE_TABLE_IDLE_TRANS_0.second)), ctxc); // Build SAFE transition 1 - iht(objects::PL_SUBSYSTEM, OFF, 0, EIVE_TABLE_IDLE_TRANS_1.second); - iht(objects::ACS_SUBSYSTEM, acs::AcsMode::PTG_IDLE, 0, EIVE_TABLE_IDLE_TRANS_1.second); - check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TRANS_1.first, &EIVE_TABLE_IDLE_TRANS_1.second)), - ctxc); + //check(ss.addTable(TableEntry(EIVE_TABLE_IDLE_TRANS_1.first, &EIVE_TABLE_IDLE_TRANS_1.second)), + // ctxc); // Build Safe sequence ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TGT.first, 0, false); ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TRANS_0.first, 0, false); - ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TRANS_1.first, 0, false); + //ihs(EIVE_SEQUENCE_IDLE.second, EIVE_TABLE_IDLE_TRANS_1.first, 0, false); check(ss.addSequence(SequenceEntry(EIVE_SEQUENCE_IDLE.first, &EIVE_SEQUENCE_IDLE.second, EIVE_SEQUENCE_SAFE.first)), ctxc); From 6104bf7adb1289cd92a1f89b68c3109b4c811c9e Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 2 Mar 2023 13:39:29 +0100 Subject: [PATCH 2/6] set MGM3100 set valid --- mission/devices/MgmRm3100CustomHandler.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/mission/devices/MgmRm3100CustomHandler.cpp b/mission/devices/MgmRm3100CustomHandler.cpp index 685de23d..90fe58e2 100644 --- a/mission/devices/MgmRm3100CustomHandler.cpp +++ b/mission/devices/MgmRm3100CustomHandler.cpp @@ -91,6 +91,7 @@ ReturnValue_t MgmRm3100CustomHandler::interpretDeviceReply(DeviceCommandId_t id, } PoolReadGuard pg(&primaryDataset); + primaryDataset.setValidity(true, true); for (uint8_t idx = 0; idx < 3; idx++) { primaryDataset.fieldStrengths[idx] = reply->mgmValuesRaw[idx] * reply->scaleFactors[idx]; } From 14188a4f3bef7f112171bb64d300f3fea5c030a4 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 2 Mar 2023 14:42:42 +0100 Subject: [PATCH 3/6] bugfixes imtq --- CHANGELOG.md | 4 ++++ mission/controller/AcsController.cpp | 2 -- mission/devices/ImtqHandler.cpp | 33 +++++++++++++++------------- mission/devices/ImtqHandler.h | 2 +- tmtc | 2 +- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 739067cc..54edd113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ will consitute of a breaking change warranting a new major release: - Moved polling of all SPI parts to the same PST. +## Fixed + +- IMTQ: Sets were filled with wrong data, e.g. Raw MTM was filled with calibrated MTM measurements. + # [v1.33.0] eive-tmtc: v2.16.2 diff --git a/mission/controller/AcsController.cpp b/mission/controller/AcsController.cpp index f3269285..c0853695 100644 --- a/mission/controller/AcsController.cpp +++ b/mission/controller/AcsController.cpp @@ -661,7 +661,6 @@ void AcsController::announceMode(bool recursive) { } void AcsController::copyMgmData() { - ACS::SensorValues sensorValues; { PoolReadGuard pg(&sensorValues.mgm0Lis3Set); if (pg.getReadResult() == returnvalue::OK) { @@ -806,7 +805,6 @@ void AcsController::copySusData() { } void AcsController::copyGyrData() { - ACS::SensorValues sensorValues; { PoolReadGuard pg(&sensorValues.gyr0AdisSet); if (pg.getReadResult() == returnvalue::OK) { diff --git a/mission/devices/ImtqHandler.cpp b/mission/devices/ImtqHandler.cpp index aa935ce5..5c5bdb61 100644 --- a/mission/devices/ImtqHandler.cpp +++ b/mission/devices/ImtqHandler.cpp @@ -312,7 +312,7 @@ ReturnValue_t ImtqHandler::interpretDeviceReply(DeviceCommandId_t id, const uint uint8_t* rawMgmMeasurement = replies.getRawMgmMeasurement(); result = parseStatusByte(imtq::CC::GET_RAW_MTM_MEASUREMENT, rawMgmMeasurement); if (result == returnvalue::OK) { - fillRawMtmDataset(rawMgmMeasurement); + fillRawMtmDataset(rawMtmNoTorque, rawMgmMeasurement); } else { status = result; } @@ -323,7 +323,7 @@ ReturnValue_t ImtqHandler::interpretDeviceReply(DeviceCommandId_t id, const uint uint8_t* calibMgmMeasurement = replies.getCalibMgmMeasurement(); result = parseStatusByte(imtq::CC::GET_CAL_MTM_MEASUREMENT, calibMgmMeasurement); if (result == returnvalue::OK) { - fillRawMtmDataset(calibMgmMeasurement); + fillCalibratedMtmDataset(calibMgmMeasurement); } else { status = result; } @@ -345,7 +345,7 @@ ReturnValue_t ImtqHandler::interpretDeviceReply(DeviceCommandId_t id, const uint uint8_t* rawMgmMeasurement = replies.getRawMgmMeasurement(); result = parseStatusByte(imtq::CC::GET_RAW_MTM_MEASUREMENT, rawMgmMeasurement); if (result == returnvalue::OK) { - fillRawMtmDataset(rawMgmMeasurement); + fillRawMtmDataset(rawMtmWithTorque, rawMgmMeasurement); } else { status = result; } @@ -361,7 +361,7 @@ ReturnValue_t ImtqHandler::interpretDeviceReply(DeviceCommandId_t id, const uint } else { status = result; } - fillEngHkDataset(hkDatasetNoTorque, engHkReply); + fillEngHkDataset(hkDatasetWithTorque, engHkReply); if (firstReplyCycle) { firstReplyCycle = false; } @@ -847,8 +847,11 @@ void ImtqHandler::fillCalibratedMtmDataset(const uint8_t* packet) { } } -void ImtqHandler::fillRawMtmDataset(const uint8_t* packet) { - PoolReadGuard rg(&rawMtmNoTorque); +void ImtqHandler::fillRawMtmDataset(imtq::RawMtmMeasurementSet& set, const uint8_t* packet) { + PoolReadGuard rg(&set); + if(rg.getReadResult() != returnvalue::OK) { + sif::error << "ImtqHandler::fillRawMtmDataset: Lock failure" << std::endl; + } unsigned int offset = 2; size_t deSerLen = 16; const uint8_t* dataStart = packet + offset; @@ -876,18 +879,18 @@ void ImtqHandler::fillRawMtmDataset(const uint8_t* packet) { if (res != returnvalue::OK) { return; } - rawMtmNoTorque.mtmRawNt[0] = xRaw * 7.5; - rawMtmNoTorque.mtmRawNt[1] = yRaw * 7.5; - rawMtmNoTorque.mtmRawNt[2] = zRaw * 7.5; - rawMtmNoTorque.coilActuationStatus = static_cast(coilActStatus); - rawMtmNoTorque.setValidity(true, true); + set.mtmRawNt[0] = static_cast(xRaw) * 7.5; + set.mtmRawNt[1] = static_cast(yRaw) * 7.5; + set.mtmRawNt[2] = static_cast(zRaw) * 7.5; + set.coilActuationStatus = static_cast(coilActStatus); + set.setValidity(true, true); if (debugMode) { #if OBSW_VERBOSE_LEVEL >= 1 - sif::info << "IMTQ raw MTM measurement X: " << rawMtmNoTorque.mtmRawNt[0] << " nT" << std::endl; - sif::info << "IMTQ raw MTM measurement Y: " << rawMtmNoTorque.mtmRawNt[1] << " nT" << std::endl; - sif::info << "IMTQ raw MTM measurement Z: " << rawMtmNoTorque.mtmRawNt[2] << " nT" << std::endl; + sif::info << "IMTQ raw MTM measurement X: " << set.mtmRawNt[0] << " nT" << std::endl; + sif::info << "IMTQ raw MTM measurement Y: " << set.mtmRawNt[1] << " nT" << std::endl; + sif::info << "IMTQ raw MTM measurement Z: " << set.mtmRawNt[2] << " nT" << std::endl; sif::info << "IMTQ coil actuation status during MTM measurement: " - << (unsigned int)rawMtmNoTorque.coilActuationStatus.value << std::endl; + << (unsigned int)set.coilActuationStatus.value << std::endl; #endif } } diff --git a/mission/devices/ImtqHandler.h b/mission/devices/ImtqHandler.h index a674f85b..419fad33 100644 --- a/mission/devices/ImtqHandler.h +++ b/mission/devices/ImtqHandler.h @@ -159,7 +159,7 @@ class ImtqHandler : public DeviceHandlerBase { * @param packet Pointer to the reply data requested with the GET_RAW_MTM_MEASUREMENTS * command. */ - void fillRawMtmDataset(const uint8_t* packet); + void fillRawMtmDataset(imtq::RawMtmMeasurementSet& set, const uint8_t* packet); /** * @brief This function handles all self test results. This comprises parsing the error byte diff --git a/tmtc b/tmtc index 350ffda6..e5eb2e47 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 350ffda6c61b76dc9a6bbf08cec168c29c08136f +Subproject commit e5eb2e479c6d2ec71e440c0e72cef75a6f43f441 From eaa0fc6cbeb0ce3da0d0ac23b0a7856a8c0cda38 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 2 Mar 2023 14:43:50 +0100 Subject: [PATCH 4/6] bump changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 739067cc..c9c811bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ will consitute of a breaking change warranting a new major release: ## Changed - Moved polling of all SPI parts to the same PST. +- Allow quicker transition for the EIVE system component by allowing consecutive TCS and ACS + component commanding again. # [v1.33.0] From 0056ebcb6297cde0755a627cb0f96190d7539e95 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 2 Mar 2023 14:46:20 +0100 Subject: [PATCH 5/6] bump changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54edd113..0dc4d96e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ will consitute of a breaking change warranting a new major release: ## Fixed - IMTQ: Sets were filled with wrong data, e.g. Raw MTM was filled with calibrated MTM measurements. +- Set RM3100 dataset to valid. # [v1.33.0] From 9067c4180ea3d11efcdad61eff4d99d3da18ba18 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 2 Mar 2023 14:48:00 +0100 Subject: [PATCH 6/6] bump tmtc --- tmtc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmtc b/tmtc index e5eb2e47..2dd850f0 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit e5eb2e479c6d2ec71e440c0e72cef75a6f43f441 +Subproject commit 2dd850f0725d37256c17576bf7d3ae4423184044