From 3e17de0127cdfb54110eb4686af0e239caf70b04 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 13 Dec 2022 15:43:41 +0100 Subject: [PATCH] update clock every 5 minutes --- mission/tmtc/PusTmFunnel.cpp | 9 +++++++++ mission/tmtc/PusTmFunnel.h | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/mission/tmtc/PusTmFunnel.cpp b/mission/tmtc/PusTmFunnel.cpp index d7453f12..832656e7 100644 --- a/mission/tmtc/PusTmFunnel.cpp +++ b/mission/tmtc/PusTmFunnel.cpp @@ -14,6 +14,7 @@ PusTmFunnel::PusTmFunnel(object_id_t objectId, TimeReaderIF &timeReader, Storage eventStore(objects::EVENT_STORE, "event", RolloverInterval::HOURLY, 1, currentTv, sdcMan), sdcMan(sdcMan) { Clock::getClock_timeval(¤tTv); + Clock::getUptime(&lastTvUpdate); miscStore.addApid(config::EIVE_PUS_APID); miscStore.addService(17); eventStore.addApid(config::EIVE_PUS_APID); @@ -60,6 +61,14 @@ ReturnValue_t PusTmFunnel::handlePacket(TmTcMessage &message) { sourceSequenceCount = sourceSequenceCount % ccsds::LIMIT_SEQUENCE_COUNT; packet.updateErrorControl(); + timeval currentUptime; + Clock::getUptime(¤tUptime); + if (currentUptime.tv_sec - lastTvUpdate.tv_sec > + static_cast(TV_UPDATE_INTERVAL_SECS)) { + Clock::getClock_timeval(¤tTv); + lastTvUpdate = currentUptime; + } + if (sdcMan.isSdCardUsable(std::nullopt)) { if (not storesInitialized) { miscStore.updateBaseDir(); diff --git a/mission/tmtc/PusTmFunnel.h b/mission/tmtc/PusTmFunnel.h index 683fcbd2..c4132379 100644 --- a/mission/tmtc/PusTmFunnel.h +++ b/mission/tmtc/PusTmFunnel.h @@ -40,7 +40,8 @@ class PusTmFunnel : public TmFunnelBase { uint16_t sourceSequenceCount = 0; TimeReaderIF &timeReader; bool storesInitialized = false; - timeval currentTv; + timeval currentTv{}; + timeval lastTvUpdate{}; TmStore miscStore; TmStore eventStore; SdCardMountedIF &sdcMan;