diff --git a/src/fsfw/coordinates/Sgp4Propagator.cpp b/src/fsfw/coordinates/Sgp4Propagator.cpp index 62c2670e..352e06db 100644 --- a/src/fsfw/coordinates/Sgp4Propagator.cpp +++ b/src/fsfw/coordinates/Sgp4Propagator.cpp @@ -166,9 +166,9 @@ ReturnValue_t Sgp4Propagator::propagate(double* position, double* velocity, time timeval timeSinceEpoch = time - epoch; double minutesSinceEpoch = timeSinceEpoch.tv_sec / 60. + timeSinceEpoch.tv_usec / 60000000.; - double monthsSinceEpoch = minutesSinceEpoch / 60 / 24 / 30; + double daysSinceEpoch = minutesSinceEpoch / 60 / 24; - if ((monthsSinceEpoch > 1) || (monthsSinceEpoch < -1)) { + if ((daysSinceEpoch > 7) || (daysSinceEpoch < -7)) { return TLE_TOO_OLD; } diff --git a/src/fsfw/devicehandlers/FreshDeviceHandlerBase.cpp b/src/fsfw/devicehandlers/FreshDeviceHandlerBase.cpp index c113bee9..2b4ab27b 100644 --- a/src/fsfw/devicehandlers/FreshDeviceHandlerBase.cpp +++ b/src/fsfw/devicehandlers/FreshDeviceHandlerBase.cpp @@ -28,12 +28,17 @@ FreshDeviceHandlerBase::~FreshDeviceHandlerBase() { } ReturnValue_t FreshDeviceHandlerBase::performOperation(uint8_t opCode) { + performDeviceOperationPreQueueHandling(opCode); handleQueue(); performDeviceOperation(opCode); poolManager.performHkOperation(); return returnvalue::OK; } +ReturnValue_t FreshDeviceHandlerBase::performDeviceOperationPreQueueHandling(uint8_t opCode) { + return returnvalue::OK; +} + void FreshDeviceHandlerBase::startTransition(Mode_t mode_, Submode_t submode_) { triggerEvent(CHANGING_MODE, mode_, submode_); // Complete mode transition immediately by default. diff --git a/src/fsfw/devicehandlers/FreshDeviceHandlerBase.h b/src/fsfw/devicehandlers/FreshDeviceHandlerBase.h index 97f672b1..c911c1dd 100644 --- a/src/fsfw/devicehandlers/FreshDeviceHandlerBase.h +++ b/src/fsfw/devicehandlers/FreshDeviceHandlerBase.h @@ -82,6 +82,12 @@ class FreshDeviceHandlerBase : public SystemObject, MessageQueueIF* messageQueue; + /** + * The default queue handler will process all messages for the interfaces implemented + * by this class. If there are special requirements, for example that action commands are + * received on a different queue, the user can override this function for those special + * requirements. + */ virtual ReturnValue_t handleQueue(); // Mode Helpers. @@ -153,6 +159,8 @@ class FreshDeviceHandlerBase : public SystemObject, ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueId, ParameterWrapper* parameterWrapper, const ParameterWrapper* newValues, uint16_t startAtIndex) override; + virtual ReturnValue_t performDeviceOperationPreQueueHandling(uint8_t opCode); + private: // Executable Overrides. void setTaskIF(PeriodicTaskIF* task) override;