diff --git a/timemanager/CCSDSTime.cpp b/timemanager/CCSDSTime.cpp index f137e0305..aefcac2eb 100644 --- a/timemanager/CCSDSTime.cpp +++ b/timemanager/CCSDSTime.cpp @@ -1,9 +1,9 @@ #include "CCSDSTime.h" - +#include #include #include #include -#include + CCSDSTime::CCSDSTime() { } @@ -53,8 +53,8 @@ ReturnValue_t CCSDSTime::convertToCcsds(Ccs_mseconds* to, return RETURN_OK; } -ReturnValue_t CCSDSTime::convertFromCcsds(Clock::TimeOfDay_t* to, const uint8_t* from, - uint32_t length) { +ReturnValue_t CCSDSTime::convertFromCcsds(Clock::TimeOfDay_t* to, + const uint8_t* from, size_t length) { ReturnValue_t result; if (length > 0xFF) { return LENGTH_MISMATCH; @@ -72,7 +72,7 @@ ReturnValue_t CCSDSTime::convertFromCcsds(Clock::TimeOfDay_t* to, const uint8_t* case CDS: return convertFromCDS(to, from, length); case CCS: { - uint32_t temp = 0; + size_t temp = 0; return convertFromCCS(to, from, &temp, length); } @@ -81,13 +81,13 @@ ReturnValue_t CCSDSTime::convertFromCcsds(Clock::TimeOfDay_t* to, const uint8_t* } } -ReturnValue_t CCSDSTime::convertFromCUC(Clock::TimeOfDay_t* to, const uint8_t* from, - uint8_t length) { +ReturnValue_t CCSDSTime::convertFromCUC(Clock::TimeOfDay_t* to, + const uint8_t* from, uint8_t length) { return UNSUPPORTED_TIME_FORMAT; } -ReturnValue_t CCSDSTime::convertFromCDS(Clock::TimeOfDay_t* to, const uint8_t* from, - uint8_t length) { +ReturnValue_t CCSDSTime::convertFromCDS(Clock::TimeOfDay_t* to, + const uint8_t* from, uint8_t length) { timeval time; ReturnValue_t result = convertFromCDS(&time, from, NULL, length); if (result != HasReturnvaluesIF::RETURN_OK) { @@ -96,8 +96,8 @@ ReturnValue_t CCSDSTime::convertFromCDS(Clock::TimeOfDay_t* to, const uint8_t* f return convertTimevalToTimeOfDay(to, &time); } -ReturnValue_t CCSDSTime::convertFromCCS(Clock::TimeOfDay_t* to, const uint8_t* from, - uint32_t* foundLength, uint32_t maxLength) { +ReturnValue_t CCSDSTime::convertFromCCS(Clock::TimeOfDay_t* to, + const uint8_t* from, size_t* foundLength, size_t maxLength) { uint8_t subsecondsLength = *from & 0b111; uint32_t totalLength = subsecondsLength + 8; if (maxLength < totalLength) { @@ -152,8 +152,8 @@ ReturnValue_t CCSDSTime::convertFromCCS(Clock::TimeOfDay_t* to, const uint8_t* f } -ReturnValue_t CCSDSTime::convertFromASCII(Clock::TimeOfDay_t* to, const uint8_t* from, - uint8_t length) { +ReturnValue_t CCSDSTime::convertFromASCII(Clock::TimeOfDay_t* to, + const uint8_t* from, uint8_t length) { if (length < 19) { return RETURN_FAILED; } @@ -395,7 +395,7 @@ ReturnValue_t CCSDSTime::convertToCcsds(OBT_FLP* to, const timeval* from) { } ReturnValue_t CCSDSTime::convertFromCcsds(timeval* to, const uint8_t* from, - uint32_t* foundLength, uint32_t maxLength) { + size_t* foundLength, size_t maxLength) { //We don't expect ascii here. SHOULDDO uint8_t codeIdentification = (*from >> 4); switch (codeIdentification) { @@ -413,7 +413,7 @@ ReturnValue_t CCSDSTime::convertFromCcsds(timeval* to, const uint8_t* from, } ReturnValue_t CCSDSTime::convertFromCUC(timeval* to, const uint8_t* from, - uint32_t* foundLength, uint32_t maxLength) { + size_t* foundLength, size_t maxLength) { if (maxLength < 1) { return INVALID_TIME_FORMAT; } @@ -491,7 +491,7 @@ ReturnValue_t CCSDSTime::convertTimevalToTimeOfDay(Clock::TimeOfDay_t* to, } ReturnValue_t CCSDSTime::convertFromCDS(timeval* to, const uint8_t* from, - uint32_t* foundLength, uint32_t maxLength) { + size_t* foundLength, size_t maxLength) { uint8_t pField = *from; from++; //Check epoch @@ -556,12 +556,12 @@ ReturnValue_t CCSDSTime::convertFromCDS(timeval* to, const uint8_t* from, } ReturnValue_t CCSDSTime::convertFromCUC(timeval* to, uint8_t pField, - const uint8_t* from, uint32_t* foundLength, uint32_t maxLength) { + const uint8_t* from, size_t* foundLength, size_t maxLength) { uint32_t secs = 0; uint32_t subSeconds = 0; uint8_t nCoarse = ((pField & 0b1100) >> 2) + 1; uint8_t nFine = (pField & 0b11); - uint32_t totalLength = nCoarse + nFine; + size_t totalLength = nCoarse + nFine; if (foundLength != NULL) { *foundLength = totalLength; } @@ -593,7 +593,7 @@ uint32_t CCSDSTime::subsecondsToMicroseconds(uint16_t subseconds) { } ReturnValue_t CCSDSTime::convertFromCCS(timeval* to, const uint8_t* from, - uint32_t* foundLength, uint32_t maxLength) { + size_t* foundLength, size_t maxLength) { Clock::TimeOfDay_t tempTime; ReturnValue_t result = convertFromCCS(&tempTime, from, foundLength, maxLength); diff --git a/timemanager/CCSDSTime.h b/timemanager/CCSDSTime.h index 89fcff92f..d74adc61d 100644 --- a/timemanager/CCSDSTime.h +++ b/timemanager/CCSDSTime.h @@ -1,11 +1,13 @@ -#ifndef CCSDSTIME_H_ -#define CCSDSTIME_H_ +#ifndef FSFW_TIMEMANAGER_CCSDSTIME_H_ +#define FSFW_TIMEMANAGER_CCSDSTIME_H_ // COULDDO: have calls in Clock.h which return time quality and use timespec accordingly #include "Clock.h" +#include "clockDefinitions.h" #include "../returnvalues/HasReturnvaluesIF.h" #include +#include bool operator<(const timeval& lhs, const timeval& rhs); bool operator<=(const timeval& lhs, const timeval& rhs); @@ -154,8 +156,8 @@ public: * - @c LENGTH_MISMATCH if the length does not match the P Field * - @c INVALID_TIME_FORMAT if the format or a value is invalid */ - static ReturnValue_t convertFromCcsds(Clock::TimeOfDay_t *to, uint8_t const *from, - uint32_t length); + static ReturnValue_t convertFromCcsds(Clock::TimeOfDay_t *to, + uint8_t const *from, size_t length); /** * not implemented yet @@ -165,34 +167,34 @@ public: * @return */ static ReturnValue_t convertFromCcsds(timeval *to, uint8_t const *from, - uint32_t* foundLength, uint32_t maxLength); + size_t* foundLength, size_t maxLength); - static ReturnValue_t convertFromCUC(Clock::TimeOfDay_t *to, uint8_t const *from, - uint8_t length); + static ReturnValue_t convertFromCUC(Clock::TimeOfDay_t *to, + uint8_t const *from, uint8_t length); static ReturnValue_t convertFromCUC(timeval *to, uint8_t const *from, - uint32_t* foundLength, uint32_t maxLength); + size_t* foundLength, size_t maxLength); static ReturnValue_t convertFromCUC(timeval *to, uint8_t pField, - uint8_t const *from, uint32_t* foundLength, uint32_t maxLength); + uint8_t const *from, size_t* foundLength, size_t maxLength); static ReturnValue_t convertFromCCS(timeval *to, uint8_t const *from, - uint32_t* foundLength, uint32_t maxLength); + size_t* foundLength, size_t maxLength); static ReturnValue_t convertFromCCS(timeval *to, uint8_t pField, - uint8_t const *from, uint32_t* foundLength, uint32_t maxLength); + uint8_t const *from, size_t* foundLength, size_t maxLength); - static ReturnValue_t convertFromCDS(Clock::TimeOfDay_t *to, uint8_t const *from, - uint8_t length); + static ReturnValue_t convertFromCDS(Clock::TimeOfDay_t *to, + uint8_t const *from, uint8_t length); static ReturnValue_t convertFromCDS(timeval *to, uint8_t const *from, - uint32_t* foundLength, uint32_t maxLength); + size_t* foundLength, size_t maxLength); - static ReturnValue_t convertFromCCS(Clock::TimeOfDay_t *to, uint8_t const *from, - uint32_t* foundLength, uint32_t maxLength); + static ReturnValue_t convertFromCCS(Clock::TimeOfDay_t *to, + uint8_t const *from, size_t* foundLength, size_t maxLength); - static ReturnValue_t convertFromASCII(Clock::TimeOfDay_t *to, uint8_t const *from, - uint8_t length); + static ReturnValue_t convertFromASCII(Clock::TimeOfDay_t *to, + uint8_t const *from, uint8_t length); static uint32_t subsecondsToMicroseconds(uint16_t subseconds); private: @@ -230,4 +232,4 @@ private: timeval* from); }; -#endif /* CCSDSTIME_H_ */ +#endif /* FSFW_TIMEMANAGER_CCSDSTIME_H_ */ diff --git a/timemanager/Clock.h b/timemanager/Clock.h index fcc602a2d..6400d284c 100644 --- a/timemanager/Clock.h +++ b/timemanager/Clock.h @@ -1,8 +1,9 @@ #ifndef FSFW_TIMEMANAGER_CLOCK_H_ #define FSFW_TIMEMANAGER_CLOCK_H_ +#include "clockDefinitions.h" #include "../returnvalues/HasReturnvaluesIF.h" -#include "../ipc/MutexHelper.h" +#include "../ipc/MutexFactory.h" #include "../globalfunctions/timevalOperations.h" #include @@ -13,20 +14,17 @@ #include #endif -//! Don't use these for time points, type is not large enough for UNIX epoch. -using dur_millis_t = uint32_t; - class Clock { public: typedef struct { - uint32_t year; //!< Year, A.D. - uint32_t month; //!< Month, 1 .. 12. - uint32_t day; //!< Day, 1 .. 31. - uint32_t hour; //!< Hour, 0 .. 23. - uint32_t minute; //!< Minute, 0 .. 59. - uint32_t second; //!< Second, 0 .. 59. - uint32_t usecond; //!< Microseconds, 0 .. 999999 - } TimeOfDay_t; + uint32_t year; //!< Year, A.D. + uint32_t month; //!< Month, 1 .. 12. + uint32_t day; //!< Day, 1 .. 31. + uint32_t hour; //!< Hour, 0 .. 23. + uint32_t minute; //!< Minute, 0 .. 59. + uint32_t second; //!< Second, 0 .. 59. + uint32_t usecond; //!< Microseconds, 0 .. 999999 + } TimeOfDay_t; /** * This method returns the number of clock ticks per second. @@ -87,13 +85,17 @@ public: * Returns the time in microseconds since an OS-defined epoch. * The time is returned in a 64 bit unsigned integer. * @param time A pointer to a 64 bit unisigned integer where the data is stored. - * @return \c RETURN_OK on success. Otherwise, the OS failure code is returned. + * @return + * - @c RETURN_OK on success. + * - Otherwise, the OS failure code is returned. */ static ReturnValue_t getClock_usecs(uint64_t* time); /** * Returns the time in a TimeOfDay_t struct. * @param time A pointer to a TimeOfDay_t struct. - * @return \c RETURN_OK on success. Otherwise, the OS failure code is returned. + * @return + * - @c RETURN_OK on success. + * - Otherwise, the OS failure code is returned. */ static ReturnValue_t getDateAndTime(TimeOfDay_t* time); @@ -101,17 +103,20 @@ public: * Converts a time of day struct to POSIX seconds. * @param time The time of day as input * @param timeval The corresponding seconds since the epoch. - * @return \c RETURN_OK on success. Otherwise, the OS failure code is returned. + * @return + * - @c RETURN_OK on success. + * - Otherwise, the OS failure code is returned. */ static ReturnValue_t convertTimeOfDayToTimeval(const TimeOfDay_t* from, timeval* to); /** - * Converts a time represented as seconds and subseconds since unix epoch to days since J2000 + * Converts a time represented as seconds and subseconds since unix + * epoch to days since J2000 * * @param time seconds since unix epoch * @param[out] JD2000 days since J2000 - * @return \c RETURN_OK + * @return @c RETURN_OK */ static ReturnValue_t convertTimevalToJD2000(timeval time, double* JD2000); @@ -122,7 +127,9 @@ public: * * @param utc timeval, corresponding to UTC time * @param[out] tt timeval, corresponding to Terrestial Time - * @return \c RETURN_OK on success, \c RETURN_FAILED if leapSeconds are not set + * @return + * - @c RETURN_OK on success + * - @c RETURN_FAILED if leapSeconds are not set */ static ReturnValue_t convertUTCToTT(timeval utc, timeval* tt); @@ -130,7 +137,9 @@ public: * Set the Leap Seconds since 1972 * * @param leapSeconds_ - * @return \c RETURN_OK on success. Otherwise, the OS failure code is returned. + * @return + * - @c RETURN_OK on success. + * - Otherwise, the OS failure code is returned. */ static ReturnValue_t setLeapSeconds(const uint16_t leapSeconds_); @@ -140,13 +149,17 @@ public: * Must be set before! * * @param[out] leapSeconds_ - * @return \c RETURN_OK on success. Otherwise, the OS failure code is returned. + * @return + * - @c RETURN_OK on success. + * - Otherwise, the OS failure code is returned. */ static ReturnValue_t getLeapSeconds(uint16_t *leapSeconds_); /** * Function to check and create the Mutex for the clock - * @return \c RETURN_OK on success. Otherwise \c RETURN_FAILED if not able to create one + * @return + * - @c RETURN_OK on success. + * - Otherwise @c RETURN_FAILED if not able to create one */ static ReturnValue_t checkOrCreateClockMutex(); diff --git a/timemanager/Countdown.cpp b/timemanager/Countdown.cpp index d56957301..20b56189f 100644 --- a/timemanager/Countdown.cpp +++ b/timemanager/Countdown.cpp @@ -1,14 +1,6 @@ -/** - * @file Countdown.cpp - * @brief This file defines the Countdown class. - * @date 21.03.2013 - * @author baetz - */ - - #include "Countdown.h" -Countdown::Countdown(uint32_t initialTimeout) : startTime(0), timeout(initialTimeout) { +Countdown::Countdown(uint32_t initialTimeout): timeout(initialTimeout) { } Countdown::~Countdown() { diff --git a/timemanager/Countdown.h b/timemanager/Countdown.h index b86d9fe0b..f6a41e73d 100644 --- a/timemanager/Countdown.h +++ b/timemanager/Countdown.h @@ -1,18 +1,13 @@ -/** - * @file Countdown.h - * @brief This file defines the Countdown class. - * @date 21.03.2013 - * @author baetz - */ - -#ifndef COUNTDOWN_H_ -#define COUNTDOWN_H_ +#ifndef FSFW_TIMEMANAGER_COUNTDOWN_H_ +#define FSFW_TIMEMANAGER_COUNTDOWN_H_ #include "Clock.h" +/** + * @brief This file defines the Countdown class. + * @author baetz + */ class Countdown { -private: - uint32_t startTime; public: uint32_t timeout; Countdown(uint32_t initialTimeout = 0); @@ -23,9 +18,14 @@ public: bool isBusy() const; - ReturnValue_t resetTimer(); //!< Use last set timeout value and restart timer. + //!< Use last set timeout value and restart timer. + ReturnValue_t resetTimer(); - void timeOut(); //!< Make hasTimedOut() return true + //!< Make hasTimedOut() return true + void timeOut(); + +private: + uint32_t startTime = 0; }; -#endif /* COUNTDOWN_H_ */ +#endif /* FSFW_TIMEMANAGER_COUNTDOWN_H_ */ diff --git a/timemanager/ReceivesTimeInfoIF.h b/timemanager/ReceivesTimeInfoIF.h index 14a750c56..c1247a42f 100644 --- a/timemanager/ReceivesTimeInfoIF.h +++ b/timemanager/ReceivesTimeInfoIF.h @@ -1,12 +1,7 @@ -/** - * @file ReceivesTimeInfoIF.h - * @brief This file defines the ReceivesTimeInfoIF class. - * @date 26.02.2013 - * @author baetz - */ +#ifndef FSFW_TIMEMANAGER_RECEIVESTIMEINFOIF_H_ +#define FSFW_TIMEMANAGER_RECEIVESTIMEINFOIF_H_ -#ifndef RECEIVESTIMEINFOIF_H_ -#define RECEIVESTIMEINFOIF_H_ +#include "../ipc/MessageQueueSenderIF.h" /** * This is a Interface for classes that receive timing information @@ -28,4 +23,4 @@ public: }; -#endif /* RECEIVESTIMEINFOIF_H_ */ +#endif /* FSFW_TIMEMANAGER_RECEIVESTIMEINFOIF_H_ */ diff --git a/timemanager/TimeMessage.cpp b/timemanager/TimeMessage.cpp index 5a9a416b5..a1042efe5 100644 --- a/timemanager/TimeMessage.cpp +++ b/timemanager/TimeMessage.cpp @@ -1,10 +1,3 @@ -/** - * @file TimeMessage.cpp - * @brief This file defines the TimeMessage class. - * @date 26.02.2013 - * @author baetz - */ - #include "TimeMessage.h" TimeMessage::TimeMessage() { diff --git a/timemanager/TimeMessage.h b/timemanager/TimeMessage.h index 116002e6d..f5ac3e14d 100644 --- a/timemanager/TimeMessage.h +++ b/timemanager/TimeMessage.h @@ -1,15 +1,8 @@ -/** - * @file TimeMessage.h - * @brief This file defines the TimeMessage class. - * @date 26.02.2013 - * @author baetz - */ +#ifndef FSFW_TIMEMANAGER_TIMEMESSAGE_H_ +#define FSFW_TIMEMANAGER_TIMEMESSAGE_H_ -#ifndef TIMEMESSAGE_H_ -#define TIMEMESSAGE_H_ - -#include "../ipc/MessageQueueMessage.h" #include "Clock.h" +#include "../ipc/MessageQueueMessage.h" #include class TimeMessage : public MessageQueueMessage { @@ -53,4 +46,4 @@ public: uint32_t getCounterValue(); }; -#endif /* TIMEMESSAGE_H_ */ +#endif /* FSFW_TIMEMANAGER_TIMEMESSAGE_H_ */ diff --git a/timemanager/TimeStamperIF.h b/timemanager/TimeStamperIF.h index 96011088d..57b7f0149 100644 --- a/timemanager/TimeStamperIF.h +++ b/timemanager/TimeStamperIF.h @@ -1,5 +1,5 @@ -#ifndef FRAMEWORK_TIMEMANAGER_TIMESTAMPERIF_H_ -#define FRAMEWORK_TIMEMANAGER_TIMESTAMPERIF_H_ +#ifndef FSFW_TIMEMANAGER_TIMESTAMPERIF_H_ +#define FSFW_TIMEMANAGER_TIMESTAMPERIF_H_ #include "../returnvalues/HasReturnvaluesIF.h" @@ -25,4 +25,4 @@ public: -#endif /* FRAMEWORK_TIMEMANAGER_TIMESTAMPERIF_H_ */ +#endif /* FSFW_TIMEMANAGER_TIMESTAMPERIF_H_ */ diff --git a/timemanager/clockDefinitions.h b/timemanager/clockDefinitions.h new file mode 100644 index 000000000..bba6e3ca2 --- /dev/null +++ b/timemanager/clockDefinitions.h @@ -0,0 +1,13 @@ +#ifndef FSFW_TIMEMANAGER_CLOCKDEFINITIONS_H_ +#define FSFW_TIMEMANAGER_CLOCKDEFINITIONS_H_ + +#include + +// I'd also like to include the TimeOfDay_t struct here, but that would +// break code which uses Clock::TimeOfDay_t. Solution would be to use +// a Clock namespace instead of class with static functions. + +//! Don't use these for time points, type is not large enough for UNIX epoch. +using dur_millis_t = uint32_t; + +#endif /* FSFW_TIMEMANAGER_CLOCKDEFINITIONS_H_ */ diff --git a/tmstorage/TmStorePackets.h b/tmstorage/TmStorePackets.h index e88e741a8..b46ae6f6a 100644 --- a/tmstorage/TmStorePackets.h +++ b/tmstorage/TmStorePackets.h @@ -139,8 +139,9 @@ public: static bool isOlderThan(const TmPacketInformation* packet, const timeval* cmpTime){ if(packet->isValid()){ timeval packetTime = {0,0}; - uint32_t foundlen = 0; - CCSDSTime::convertFromCcsds(&packetTime,&packet->rawTimestamp[0],&foundlen,sizeof(rawTimestamp)); + size_t foundlen = 0; + CCSDSTime::convertFromCcsds(&packetTime, + &packet->rawTimestamp[0],&foundlen,sizeof(rawTimestamp)); if(packetTime <= *cmpTime){ return true; } @@ -151,8 +152,9 @@ public: static bool isNewerThan(const TmPacketInformation* packet, const timeval* cmpTime){ if(packet->isValid()){ timeval packetTime = {0,0}; - uint32_t foundlen = 0; - CCSDSTime::convertFromCcsds(&packetTime,&packet->rawTimestamp[0],&foundlen,sizeof(rawTimestamp)); + size_t foundlen = 0; + CCSDSTime::convertFromCcsds(&packetTime,&packet->rawTimestamp[0], + &foundlen,sizeof(rawTimestamp)); if(packetTime >= *cmpTime){ return true; } @@ -204,8 +206,9 @@ public: timeval getTime() const { timeval packetTime = {0,0}; - uint32_t foundlen = 0; - CCSDSTime::convertFromCcsds(&packetTime,&this->rawTimestamp[0],&foundlen,sizeof(rawTimestamp)); + size_t foundlen = 0; + CCSDSTime::convertFromCcsds(&packetTime, &this->rawTimestamp[0], + &foundlen,sizeof(rawTimestamp)); return packetTime; } diff --git a/tmtcpacket/pus/TmPacketBase.cpp b/tmtcpacket/pus/TmPacketBase.cpp index f3bc3f001..2c8bfd632 100644 --- a/tmtcpacket/pus/TmPacketBase.cpp +++ b/tmtcpacket/pus/TmPacketBase.cpp @@ -74,7 +74,7 @@ bool TmPacketBase::checkAndSetStamper() { } ReturnValue_t TmPacketBase::getPacketTime(timeval* timestamp) const { - uint32_t tempSize = 0; + size_t tempSize = 0; return CCSDSTime::convertFromCcsds(timestamp, tmData->data_field.time, &tempSize, sizeof(tmData->data_field.time)); }