From 0cfe559b93a29719e6ef524880cf2f5d95cc3e6e Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 3 Apr 2024 16:15:07 +0200 Subject: [PATCH 1/9] implement relative timeshift --- src/fsfw/pus/Service9TimeManagement.cpp | 29 +++++++++++++++++++++++++ src/fsfw/pus/Service9TimeManagement.h | 1 + 2 files changed, 30 insertions(+) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index fb32f60e..cf7458cc 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -4,6 +4,7 @@ #include "fsfw/events/EventManagerIF.h" #include "fsfw/pus/servicepackets/Service9Packets.h" +#include "fsfw/serialize/SerializeAdapter.h" #include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/timemanager/CCSDSTime.h" @@ -28,6 +29,34 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { triggerEvent(CLOCK_DUMP, newTime.tv_sec, subsecondMs); return returnvalue::OK; } + case Subservice::RELATIVE_TIMESHIFT: { + timeval currentTime; + Clock::getClock_timeval(¤tTime); + + if (currentPacket.getUserDataLen() != 8) { + return AcceptsTelecommandsIF::ILLEGAL_APPLICATION_DATA; + } + size_t deserLen = 8; + int64_t timeshiftNanos = 0; + SerializeAdapter::deSerialize(×hiftNanos, currentPacket.getUserData(), &deserLen, + SerializeIF::Endianness::NETWORK); + bool positiveShift = true; + if (timeshiftNanos < 0) { + positiveShift = false; + } + timeval offset{}; + offset.tv_sec = std::abs(timeshiftNanos) / 1000000000; + offset.tv_usec = (std::abs(timeshiftNanos) % 1000000000) / 1000; + + timeval newTime; + if (positiveShift) { + newTime = currentTime + offset; + } else { + newTime = currentTime - offset; + } + Clock::setClock(&newTime); + return returnvalue::OK; + } default: return AcceptsTelecommandsIF::INVALID_SUBSERVICE; } diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 556f3df3..508373ac 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -36,6 +36,7 @@ class Service9TimeManagement : public PusServiceBase { enum Subservice { SET_TIME = 128, //!< [EXPORT] : [COMMAND] Time command in ASCII, CUC or CDS format DUMP_TIME = 129, + RELATIVE_TIMESHIFT = 130, }; }; From 0e2fa8dc83a6bfee7d88de8c9b8b6317fbdb1f6a Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 3 Apr 2024 16:19:40 +0200 Subject: [PATCH 2/9] lets not forget error handling --- src/fsfw/pus/Service9TimeManagement.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index cf7458cc..8804fa25 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -23,7 +23,10 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } case Subservice::DUMP_TIME: { timeval newTime; - Clock::getClock_timeval(&newTime); + ReturnValue_t result = Clock::getClock_timeval(&newTime); + if (result != returnvalue::OK) { + return result; + } uint32_t subsecondMs = static_cast(std::floor(static_cast(newTime.tv_usec) / 1000.0)); triggerEvent(CLOCK_DUMP, newTime.tv_sec, subsecondMs); @@ -31,15 +34,21 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } case Subservice::RELATIVE_TIMESHIFT: { timeval currentTime; - Clock::getClock_timeval(¤tTime); + ReturnValue_t result = Clock::getClock_timeval(¤tTime); + if (result != returnvalue::OK) { + return result; + } if (currentPacket.getUserDataLen() != 8) { return AcceptsTelecommandsIF::ILLEGAL_APPLICATION_DATA; } size_t deserLen = 8; int64_t timeshiftNanos = 0; - SerializeAdapter::deSerialize(×hiftNanos, currentPacket.getUserData(), &deserLen, - SerializeIF::Endianness::NETWORK); + result = SerializeAdapter::deSerialize(×hiftNanos, currentPacket.getUserData(), + &deserLen, SerializeIF::Endianness::NETWORK); + if (result != returnvalue::OK) { + return result; + } bool positiveShift = true; if (timeshiftNanos < 0) { positiveShift = false; @@ -54,8 +63,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } else { newTime = currentTime - offset; } - Clock::setClock(&newTime); - return returnvalue::OK; + return Clock::setClock(&newTime); } default: return AcceptsTelecommandsIF::INVALID_SUBSERVICE; From f8e3777c43c3d3a44487d11472294f285958a684 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Wed, 3 Apr 2024 16:23:21 +0200 Subject: [PATCH 3/9] more fixes --- src/fsfw/pus/Service9TimeManagement.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index 8804fa25..5d8462c6 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -27,9 +27,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { if (result != returnvalue::OK) { return result; } - uint32_t subsecondMs = - static_cast(std::floor(static_cast(newTime.tv_usec) / 1000.0)); - triggerEvent(CLOCK_DUMP, newTime.tv_sec, subsecondMs); + triggerEvent(CLOCK_DUMP, newTime.tv_sec, newTime.tv_usec); return returnvalue::OK; } case Subservice::RELATIVE_TIMESHIFT: { @@ -63,7 +61,12 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } else { newTime = currentTime - offset; } - return Clock::setClock(&newTime); + result = Clock::setClock(&newTime); + if (result == returnvalue::OK) { + // Report new time as event. + triggerEvent(CLOCK_DUMP, newTime.tv_sec, newTime.tv_usec); + } + return result; } default: return AcceptsTelecommandsIF::INVALID_SUBSERVICE; From aff6bb673bb208ccd764770a3beb91a1250620e0 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Apr 2024 10:34:28 +0200 Subject: [PATCH 4/9] make marius the happies man alive --- src/fsfw/pus/Service9TimeManagement.cpp | 4 ++-- src/fsfw/pus/Service9TimeManagement.h | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index 5d8462c6..004cf7d0 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -52,8 +52,8 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { positiveShift = false; } timeval offset{}; - offset.tv_sec = std::abs(timeshiftNanos) / 1000000000; - offset.tv_usec = (std::abs(timeshiftNanos) % 1000000000) / 1000; + offset.tv_sec = std::abs(timeshiftNanos) / NANOS_PER_SECOND; + offset.tv_usec = (std::abs(timeshiftNanos) % NANOS_PER_SECOND) / 1000; timeval newTime; if (positiveShift) { diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 508373ac..4170d615 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -7,9 +7,11 @@ class Service9TimeManagement : public PusServiceBase { public: static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PUS_SERVICE_9; + static constexpr uint32_t NANOS_PER_SECOND= 1'000'000'000; + //!< Clock has been set. P1: old timeval seconds. P2: new timeval seconds. static constexpr Event CLOCK_SET = MAKE_EVENT(0, severity::INFO); - //!< Clock dump event. P1: timeval seconds P2: timeval milliseconds. + //!< Clock dump event. P1: timeval seconds P2: timeval microseconds. static constexpr Event CLOCK_DUMP = MAKE_EVENT(1, severity::INFO); //!< Clock could not be set. P1: Returncode. static constexpr Event CLOCK_SET_FAILURE = MAKE_EVENT(2, severity::LOW); From 31d4b855236ddd0b85e9e754c842a50c232551eb Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Apr 2024 13:14:20 +0200 Subject: [PATCH 5/9] some optimizations --- src/fsfw/pus/Service9TimeManagement.cpp | 33 ++++++++++++++----------- src/fsfw/pus/Service9TimeManagement.h | 6 ++++- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index 004cf7d0..3a8341d8 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -2,10 +2,9 @@ #include -#include "fsfw/events/EventManagerIF.h" #include "fsfw/pus/servicepackets/Service9Packets.h" +#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/serialize/SerializeAdapter.h" -#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/timemanager/CCSDSTime.h" Service9TimeManagement::Service9TimeManagement(PsbParams params) : PusServiceBase(params) { @@ -19,7 +18,10 @@ ReturnValue_t Service9TimeManagement::performService() { return returnvalue::OK; ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { switch (subservice) { case Subservice::SET_TIME: { - return setTime(); + reportCurrentTime(); + ReturnValue_t result = setTime(); + reportCurrentTime(); + return result; } case Subservice::DUMP_TIME: { timeval newTime; @@ -36,6 +38,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { if (result != returnvalue::OK) { return result; } + triggerEvent(CLOCK_DUMP, currentTime.tv_sec, currentTime.tv_usec); if (currentPacket.getUserDataLen() != 8) { return AcceptsTelecommandsIF::ILLEGAL_APPLICATION_DATA; @@ -63,8 +66,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } result = Clock::setClock(&newTime); if (result == returnvalue::OK) { - // Report new time as event. - triggerEvent(CLOCK_DUMP, newTime.tv_sec, newTime.tv_usec); + reportTime(newTime); } return result; } @@ -83,17 +85,20 @@ ReturnValue_t Service9TimeManagement::setTime() { return result; } - timeval time; - Clock::getClock_timeval(&time); result = Clock::setClock(&timeToSet); - - if (result == returnvalue::OK) { - timeval newTime; - Clock::getClock_timeval(&newTime); - triggerEvent(CLOCK_SET, time.tv_sec, newTime.tv_sec); - return returnvalue::OK; - } else { + if (result != returnvalue::OK) { triggerEvent(CLOCK_SET_FAILURE, result, 0); return returnvalue::FAILED; } + return result; +} + +void Service9TimeManagement::reportCurrentTime() { + timeval currentTime{}; + Clock::getClock_timeval(¤tTime); + triggerEvent(CLOCK_DUMP, currentTime.tv_sec, currentTime.tv_usec); +} + +void Service9TimeManagement::reportTime(timeval time) { + triggerEvent(CLOCK_DUMP, time.tv_sec, time.tv_usec); } diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 4170d615..33c71e23 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -1,13 +1,14 @@ #ifndef FSFW_PUS_SERVICE9TIMEMANAGEMENT_H_ #define FSFW_PUS_SERVICE9TIMEMANAGEMENT_H_ +#include "fsfw/returnvalues/returnvalue.h" #include "fsfw/tmtcservices/PusServiceBase.h" class Service9TimeManagement : public PusServiceBase { public: static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PUS_SERVICE_9; - static constexpr uint32_t NANOS_PER_SECOND= 1'000'000'000; + static constexpr uint32_t NANOS_PER_SECOND = 1'000'000'000; //!< Clock has been set. P1: old timeval seconds. P2: new timeval seconds. static constexpr Event CLOCK_SET = MAKE_EVENT(0, severity::INFO); @@ -32,6 +33,9 @@ class Service9TimeManagement : public PusServiceBase { */ ReturnValue_t handleRequest(uint8_t subservice) override; + void reportCurrentTime(); + void reportTime(timeval time); + virtual ReturnValue_t setTime(); private: From efbcddc2e5e3e5c53675d46b856ca75eb4453741 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Apr 2024 13:26:55 +0200 Subject: [PATCH 6/9] improvements for time service --- CHANGELOG.md | 3 +++ src/fsfw/pus/Service9TimeManagement.cpp | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 024903aa..44b0641b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,9 +28,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - add CFDP subsystem ID https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/742 - `PusTmZcWriter` now exposes API to set message counter field. +- Relative timeshift in the PUS time service. ## Changed +- The PUS time service now dumps the time before setting a new time and after having set the + time. - HK generation is now countdown based. - Bump ETL version to 20.35.14 https://egit.irs.uni-stuttgart.de/fsfw/fsfw/pulls/748 diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index 3a8341d8..cbc9bd55 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -34,11 +34,11 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } case Subservice::RELATIVE_TIMESHIFT: { timeval currentTime; - ReturnValue_t result = Clock::getClock_timeval(¤tTime); + ReturnValue_t result = Clock::getClock(¤tTime); if (result != returnvalue::OK) { return result; } - triggerEvent(CLOCK_DUMP, currentTime.tv_sec, currentTime.tv_usec); + reportTime(currentTime); if (currentPacket.getUserDataLen() != 8) { return AcceptsTelecommandsIF::ILLEGAL_APPLICATION_DATA; @@ -95,7 +95,7 @@ ReturnValue_t Service9TimeManagement::setTime() { void Service9TimeManagement::reportCurrentTime() { timeval currentTime{}; - Clock::getClock_timeval(¤tTime); + Clock::getClock(¤tTime); triggerEvent(CLOCK_DUMP, currentTime.tv_sec, currentTime.tv_usec); } From e12a8cfa292085c1ec2e1092f02ec5f722bf667d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Apr 2024 13:31:21 +0200 Subject: [PATCH 7/9] make this change downwards compatible --- src/fsfw/pus/Service9TimeManagement.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 33c71e23..87fcab75 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -12,10 +12,12 @@ class Service9TimeManagement : public PusServiceBase { //!< Clock has been set. P1: old timeval seconds. P2: new timeval seconds. static constexpr Event CLOCK_SET = MAKE_EVENT(0, severity::INFO); - //!< Clock dump event. P1: timeval seconds P2: timeval microseconds. - static constexpr Event CLOCK_DUMP = MAKE_EVENT(1, severity::INFO); + //!< Clock dump event. P1: timeval seconds P2: timeval milliseconds. + static constexpr Event CLOCK_DUMP_LEGACY = MAKE_EVENT(1, severity::INFO); //!< Clock could not be set. P1: Returncode. static constexpr Event CLOCK_SET_FAILURE = MAKE_EVENT(2, severity::LOW); + //!< Clock dump event. P1: timeval seconds P2: timeval microseconds. + static constexpr Event CLOCK_DUMP = MAKE_EVENT(3, severity::INFO); static constexpr uint8_t CLASS_ID = CLASS_ID::PUS_SERVICE_9; From 94bd1ba2ab6c16131f8dd39a84568672d809983d Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Apr 2024 13:38:14 +0200 Subject: [PATCH 8/9] fix comment blocks --- src/fsfw/pus/Service9TimeManagement.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 87fcab75..75328bf4 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -10,13 +10,13 @@ class Service9TimeManagement : public PusServiceBase { static constexpr uint32_t NANOS_PER_SECOND = 1'000'000'000; - //!< Clock has been set. P1: old timeval seconds. P2: new timeval seconds. + //!< [EXPORT] : [COMMENT] Clock has been set. P1: old timeval seconds. P2: new timeval seconds. static constexpr Event CLOCK_SET = MAKE_EVENT(0, severity::INFO); - //!< Clock dump event. P1: timeval seconds P2: timeval milliseconds. + //!< [EXPORT] : [COMMENT] Clock dump event. P1: timeval seconds P2: timeval milliseconds. static constexpr Event CLOCK_DUMP_LEGACY = MAKE_EVENT(1, severity::INFO); - //!< Clock could not be set. P1: Returncode. + //!< [EXPORT] : [COMMENT] Clock could not be set. P1: Returncode. static constexpr Event CLOCK_SET_FAILURE = MAKE_EVENT(2, severity::LOW); - //!< Clock dump event. P1: timeval seconds P2: timeval microseconds. + //!< [EXPORT] : [COMMENT] Clock dump event. P1: timeval seconds P2: timeval microseconds. static constexpr Event CLOCK_DUMP = MAKE_EVENT(3, severity::INFO); static constexpr uint8_t CLASS_ID = CLASS_ID::PUS_SERVICE_9; From a229748aa4c1ff8e2b9f7e268259b857fb8f9051 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Tue, 9 Apr 2024 10:57:00 +0200 Subject: [PATCH 9/9] distinct clock dump events --- src/fsfw/pus/Service9TimeManagement.cpp | 23 +++++++++-------------- src/fsfw/pus/Service9TimeManagement.h | 6 ++++-- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/fsfw/pus/Service9TimeManagement.cpp b/src/fsfw/pus/Service9TimeManagement.cpp index cbc9bd55..e8e24f42 100644 --- a/src/fsfw/pus/Service9TimeManagement.cpp +++ b/src/fsfw/pus/Service9TimeManagement.cpp @@ -18,18 +18,13 @@ ReturnValue_t Service9TimeManagement::performService() { return returnvalue::OK; ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { switch (subservice) { case Subservice::SET_TIME: { - reportCurrentTime(); + reportCurrentTime(CLOCK_DUMP_BEFORE_SETTING_TIME); ReturnValue_t result = setTime(); - reportCurrentTime(); + reportCurrentTime(CLOCK_DUMP_AFTER_SETTING_TIME); return result; } case Subservice::DUMP_TIME: { - timeval newTime; - ReturnValue_t result = Clock::getClock_timeval(&newTime); - if (result != returnvalue::OK) { - return result; - } - triggerEvent(CLOCK_DUMP, newTime.tv_sec, newTime.tv_usec); + reportCurrentTime(); return returnvalue::OK; } case Subservice::RELATIVE_TIMESHIFT: { @@ -38,7 +33,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { if (result != returnvalue::OK) { return result; } - reportTime(currentTime); + reportTime(CLOCK_DUMP_BEFORE_SETTING_TIME, currentTime); if (currentPacket.getUserDataLen() != 8) { return AcceptsTelecommandsIF::ILLEGAL_APPLICATION_DATA; @@ -66,7 +61,7 @@ ReturnValue_t Service9TimeManagement::handleRequest(uint8_t subservice) { } result = Clock::setClock(&newTime); if (result == returnvalue::OK) { - reportTime(newTime); + reportTime(CLOCK_DUMP_AFTER_SETTING_TIME, newTime); } return result; } @@ -93,12 +88,12 @@ ReturnValue_t Service9TimeManagement::setTime() { return result; } -void Service9TimeManagement::reportCurrentTime() { +void Service9TimeManagement::reportCurrentTime(Event event) { timeval currentTime{}; Clock::getClock(¤tTime); - triggerEvent(CLOCK_DUMP, currentTime.tv_sec, currentTime.tv_usec); + triggerEvent(event, currentTime.tv_sec, currentTime.tv_usec); } -void Service9TimeManagement::reportTime(timeval time) { - triggerEvent(CLOCK_DUMP, time.tv_sec, time.tv_usec); +void Service9TimeManagement::reportTime(Event event, timeval time) { + triggerEvent(event, time.tv_sec, time.tv_usec); } diff --git a/src/fsfw/pus/Service9TimeManagement.h b/src/fsfw/pus/Service9TimeManagement.h index 75328bf4..502136c2 100644 --- a/src/fsfw/pus/Service9TimeManagement.h +++ b/src/fsfw/pus/Service9TimeManagement.h @@ -18,6 +18,8 @@ class Service9TimeManagement : public PusServiceBase { static constexpr Event CLOCK_SET_FAILURE = MAKE_EVENT(2, severity::LOW); //!< [EXPORT] : [COMMENT] Clock dump event. P1: timeval seconds P2: timeval microseconds. static constexpr Event CLOCK_DUMP = MAKE_EVENT(3, severity::INFO); + static constexpr Event CLOCK_DUMP_BEFORE_SETTING_TIME = MAKE_EVENT(4, severity::INFO); + static constexpr Event CLOCK_DUMP_AFTER_SETTING_TIME = MAKE_EVENT(5, severity::INFO); static constexpr uint8_t CLASS_ID = CLASS_ID::PUS_SERVICE_9; @@ -35,8 +37,8 @@ class Service9TimeManagement : public PusServiceBase { */ ReturnValue_t handleRequest(uint8_t subservice) override; - void reportCurrentTime(); - void reportTime(timeval time); + void reportCurrentTime(Event eventType = CLOCK_DUMP); + void reportTime(Event event, timeval time); virtual ReturnValue_t setTime();