From 5e4032032f54d893ffc8078ea62ac8a5699bf693 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 19:39:22 +0200 Subject: [PATCH 1/8] that should do the job --- CMakeLists.txt | 8 ++++++-- bsp_q7s/fmObjectFactory.cpp | 3 ++- mission/com/TmStoreTaskBase.cpp | 30 ++++++++++++++++++++---------- mission/com/VirtualChannel.cpp | 13 +++++++++++-- 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 409a49a0..a671429b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,10 +81,14 @@ else() endif() set(OBSW_ADD_TMTC_TCP_SERVER - ${OBSW_Q7S_EM} + # TODO: Activate TCP server until VC0 issue has been resolved + # ${OBSW_Q7S_EM} + 1 CACHE STRING "Add TCP TMTC Server") set(OBSW_ADD_TMTC_UDP_SERVER - 0 + # TODO: Activate UDP server until VC0 issue has been resolved + # 0 + 1 CACHE STRING "Add UDP TMTC Server") set(OBSW_ADD_MGT ${INIT_VAL} diff --git a/bsp_q7s/fmObjectFactory.cpp b/bsp_q7s/fmObjectFactory.cpp index 5eeeef59..ba2f9478 100644 --- a/bsp_q7s/fmObjectFactory.cpp +++ b/bsp_q7s/fmObjectFactory.cpp @@ -97,7 +97,8 @@ void ObjectFactory::produce(void* args) { #if OBSW_TM_TO_PTME == 1 if (ccsdsArgs.liveDestination != nullptr) { pusFunnel->addLiveDestination("VC0 LIVE TM", *ccsdsArgs.liveDestination, 0); - cfdpFunnel->addLiveDestination("VC0 LIVE TM", *ccsdsArgs.liveDestination, 0); + // Deactivated for tests to avoid changes to VC0 usage. + // cfdpFunnel->addLiveDestination("VC0 LIVE TM", *ccsdsArgs.liveDestination, 0); } #endif #endif /* OBSW_ADD_CCSDS_IP_CORES == 1 */ diff --git a/mission/com/TmStoreTaskBase.cpp b/mission/com/TmStoreTaskBase.cpp index 0470dc04..6598225d 100644 --- a/mission/com/TmStoreTaskBase.cpp +++ b/mission/com/TmStoreTaskBase.cpp @@ -94,6 +94,13 @@ void TmStoreTaskBase::cancelDump(DumpContext& ctx, PersistentTmStore& store, boo ReturnValue_t TmStoreTaskBase::handleOneDump(PersistentTmStoreWithTmQueue& store, DumpContext& dumpContext, bool& dumpPerformed) { ReturnValue_t result = returnvalue::OK; + // The PTME might have been reset an transmitter state change, so there is no point in continuing + // the dump. + // TODO: Will be solved in a cleaner way, this is kind of a hack. + if (not channel.isTxOn()) { + cancelDump(dumpContext, store, false); + return returnvalue::FAILED; + } // It is assumed that the PTME will only be locked for a short period (e.g. to change datarate). if (not channel.isBusy() and not ptmeLocked) { performDump(store, dumpContext, dumpPerformed); @@ -131,22 +138,25 @@ ReturnValue_t TmStoreTaskBase::performDump(PersistentTmStoreWithTmQueue& store, dumpContext.ptmeBusyCounter = 0; tmSinkBusyCd.resetTimer(); ReturnValue_t result = store.getNextDumpPacket(tmReader, fileHasSwapped); - if (fileHasSwapped and result == PersistentTmStore::DUMP_DONE) { + if (result != returnvalue::OK) { + sif::error << "PersistentTmStore: Getting next dump packet failed" << std::endl; + } else if (fileHasSwapped or result == PersistentTmStore::DUMP_DONE) { // This can happen if a file is corrupted and the next file swap completes the dump. dumpDoneHandler(); return returnvalue::OK; - } else if (result != returnvalue::OK) { - sif::error << "PersistentTmStore: Getting next dump packet failed" << std::endl; - return result; } dumpedLen = tmReader.getFullPacketLen(); - result = channel.write(tmReader.getFullData(), dumpedLen); - if (result == DirectTmSinkIF::IS_BUSY) { - sif::warning << "PersistentTmStore: Unexpected VC channel busy" << std::endl; - } else if (result != returnvalue::OK) { - sif::warning << "PersistentTmStore: Unexpected VC channel write failure" << std::endl; + // Only write to VC if mode is on, but always confirm the dump. + // If the mode is OFF, it is assumed the PTME is not usable and is not allowed to be written + // (e.g. to confirm a reset or the transmitter is off anyway). + if (mode == MODE_ON) { + result = channel.write(tmReader.getFullData(), dumpedLen); + if (result == DirectTmSinkIF::IS_BUSY) { + sif::warning << "PersistentTmStore: Unexpected VC channel busy" << std::endl; + } else if (result != returnvalue::OK) { + sif::warning << "PersistentTmStore: Unexpected VC channel write failure" << std::endl; + } } - result = store.confirmDump(tmReader, fileHasSwapped); if ((result == PersistentTmStore::DUMP_DONE or result == returnvalue::OK)) { dumpPerformed = true; diff --git a/mission/com/VirtualChannel.cpp b/mission/com/VirtualChannel.cpp index ff3749a9..8e225674 100644 --- a/mission/com/VirtualChannel.cpp +++ b/mission/com/VirtualChannel.cpp @@ -11,14 +11,23 @@ ReturnValue_t VirtualChannel::sendNextTm(const uint8_t* data, size_t size) { } ReturnValue_t VirtualChannel::write(const uint8_t* data, size_t size) { - return ptme.writeToVc(vcId, data, size); + if (txOn) { + return ptme.writeToVc(vcId, data, size); + } + return returnvalue::OK; } uint8_t VirtualChannel::getVcid() const { return vcId; } const char* VirtualChannel::getName() const { return vcName.c_str(); } -bool VirtualChannel::isBusy() const { return ptme.isBusy(vcId); } +bool VirtualChannel::isBusy() const { + // Data is discarded, so channel is not busy. + if (not txOn) { + return false; + } + return ptme.isBusy(vcId); +} void VirtualChannel::cancelTransfer() { ptme.cancelTransfer(vcId); } -- 2.43.0 From 861ad9e62d466641e847933ed5e92ea0cc9c662b Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 20:14:08 +0200 Subject: [PATCH 2/8] ithis is better --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a671429b..b35aaa15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,9 +86,9 @@ set(OBSW_ADD_TMTC_TCP_SERVER 1 CACHE STRING "Add TCP TMTC Server") set(OBSW_ADD_TMTC_UDP_SERVER - # TODO: Activate UDP server until VC0 issue has been resolved + # TODO: Activate UDP server on FM until VC0 issue has been resolved # 0 - 1 + ${INIT_VAL} CACHE STRING "Add UDP TMTC Server") set(OBSW_ADD_MGT ${INIT_VAL} -- 2.43.0 From fe1e2364665b14a3d6f122911155b049169b0c2d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 20:36:13 +0200 Subject: [PATCH 3/8] bump fsfw --- fsfw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fsfw b/fsfw index 268c2e87..0f76cdb3 160000 --- a/fsfw +++ b/fsfw @@ -1 +1 @@ -Subproject commit 268c2e87c9948af1382e56763c84f19acef76bd7 +Subproject commit 0f76cdb3ba54f5e90a8eee4316c49cf0f581f996 -- 2.43.0 From 94cf42fbeb7d1a24612c654c385a0173088ab670 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 20:48:46 +0200 Subject: [PATCH 4/8] changelog --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49bee587..cb045b49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ will consitute of a breaking change warranting a new major release: # [v4.0.0] to be released -# [v3.1.2] 2023-06-20 +# [v3.2.0] 2023-06-20 ## Fixed @@ -26,6 +26,10 @@ will consitute of a breaking change warranting a new major release: - SUS total vector was not reset to being a zero vector during eclipse due to a wrong memcpy length. +## Changed + +- Reverted all changes related to VC0 handling to avoid FM bug possibly related to FPGA bug. + # [v3.1.1] 2023-06-14 ## Fixed -- 2.43.0 From 6ef8c62aca1a2555ab8e2d2a8e1358200880572d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 20:53:49 +0200 Subject: [PATCH 5/8] BPX batt handler --- bsp_q7s/em/emObjectFactory.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/bsp_q7s/em/emObjectFactory.cpp b/bsp_q7s/em/emObjectFactory.cpp index 50881756..5270e887 100644 --- a/bsp_q7s/em/emObjectFactory.cpp +++ b/bsp_q7s/em/emObjectFactory.cpp @@ -70,9 +70,6 @@ void ObjectFactory::produce(void* args) { #if OBSW_ADD_ACS_BOARD == 1 dummyCfg.addAcsBoardDummies = false; #endif -#if OBSW_ADD_BPX_BATTERY_HANDLER == 1 - dummyCfg.addBpxBattDummy = false; -#endif PowerSwitchIF* pwrSwitcher = nullptr; #if OBSW_ADD_GOMSPACE_PCDU == 0 -- 2.43.0 From b655c0356486bc2603e84125ca13e66dc82d4673 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 20 Jun 2023 20:58:31 +0200 Subject: [PATCH 6/8] cmakelists --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b35aaa15..93eb267b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,12 +81,12 @@ else() endif() set(OBSW_ADD_TMTC_TCP_SERVER - # TODO: Activate TCP server until VC0 issue has been resolved + # TODO: Only activate on EM when VC0 issue has been resolved. # ${OBSW_Q7S_EM} 1 CACHE STRING "Add TCP TMTC Server") set(OBSW_ADD_TMTC_UDP_SERVER - # TODO: Activate UDP server on FM until VC0 issue has been resolved + # TODO: Disable completely when VC0 issue has been resolved # 0 ${INIT_VAL} CACHE STRING "Add UDP TMTC Server") -- 2.43.0 From c43d9a5a9aac7f4849d2f520771b94c1d5b72f06 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 21 Jun 2023 13:44:04 +0200 Subject: [PATCH 7/8] bump version --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 93eb267b..5cb9c35b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ cmake_minimum_required(VERSION 3.13) set(OBSW_VERSION_MAJOR 3) -set(OBSW_VERSION_MINOR 1) -set(OBSW_VERSION_REVISION 1) +set(OBSW_VERSION_MINOR 2) +set(OBSW_VERSION_REVISION 0) # set(CMAKE_VERBOSE TRUE) -- 2.43.0 From 54328ff357aefa902ccb022b91447c3cd2f00b42 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 21 Jun 2023 13:44:44 +0200 Subject: [PATCH 8/8] date correction --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb045b49..e2f59548 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ will consitute of a breaking change warranting a new major release: # [v4.0.0] to be released -# [v3.2.0] 2023-06-20 +# [v3.2.0] 2023-06-21 ## Fixed -- 2.43.0