various bugfixes and improvements
This commit is contained in:
@ -504,7 +504,7 @@ ReturnValue_t CCSDSTime::convertFromCDS(timeval* to, const uint8_t* from, size_t
|
||||
} else if ((pField & 0b11) == 0b10) {
|
||||
expectedLength += 4;
|
||||
}
|
||||
if (foundLength != NULL) {
|
||||
if (foundLength != nullptr) {
|
||||
*foundLength = expectedLength;
|
||||
}
|
||||
if (expectedLength > maxLength) {
|
||||
|
@ -1,3 +1,4 @@
|
||||
target_sources(
|
||||
${LIB_FSFW_NAME} PRIVATE CCSDSTime.cpp Countdown.cpp Stopwatch.cpp
|
||||
TimeMessage.cpp TimeStamper.cpp ClockCommon.cpp)
|
||||
${LIB_FSFW_NAME}
|
||||
PRIVATE CCSDSTime.cpp Countdown.cpp Stopwatch.cpp TimeMessage.cpp
|
||||
CdsShortTimeStamper.cpp ClockCommon.cpp)
|
||||
|
14
src/fsfw/timemanager/CcsdsTimeStampReader.cpp
Normal file
14
src/fsfw/timemanager/CcsdsTimeStampReader.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include "CcsdsTimeStampReader.h"
|
||||
|
||||
#include "CCSDSTime.h"
|
||||
|
||||
ReturnValue_t CcsdsTimestampReader::readTimeStamp(const uint8_t* buffer, uint8_t maxSize) {
|
||||
ReturnValue_t result = CCSDSTime::convertFromCcsds(&time, buffer, ×tampLen, maxSize);
|
||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
timeval& CcsdsTimestampReader::getTime() { return time; }
|
||||
size_t CcsdsTimestampReader::getTimestampLen() { return timestampLen; }
|
19
src/fsfw/timemanager/CcsdsTimeStampReader.h
Normal file
19
src/fsfw/timemanager/CcsdsTimeStampReader.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef FSFW_TIMEMANAGER_CCSDSTIMESTAMPREADER_H
|
||||
#define FSFW_TIMEMANAGER_CCSDSTIMESTAMPREADER_H
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include "TimeReaderIF.h"
|
||||
|
||||
class CcsdsTimestampReader : public TimeReaderIF {
|
||||
public:
|
||||
ReturnValue_t readTimeStamp(const uint8_t* buffer, uint8_t maxSize) override;
|
||||
size_t getTimestampLen() override;
|
||||
timeval& getTime() override;
|
||||
|
||||
private:
|
||||
timeval time{};
|
||||
size_t timestampLen = 0;
|
||||
};
|
||||
|
||||
#endif // FSFW_TIMEMANAGER_CCSDSTIMESTAMPREADER_H
|
@ -1,6 +1,7 @@
|
||||
#include "fsfw/timemanager/CdsShortTimeStamper.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
#include "fsfw/timemanager/CdsShortTimeStamper.h"
|
||||
#include "fsfw/timemanager/Clock.h"
|
||||
|
||||
CdsShortTimeStamper::CdsShortTimeStamper(object_id_t objectId) : SystemObject(objectId) {}
|
||||
@ -27,9 +28,12 @@ ReturnValue_t CdsShortTimeStamper::serialize(uint8_t **buffer, size_t *size, siz
|
||||
*size += getSerializedSize();
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t CdsShortTimeStamper::getSerializedSize() const { return getTimestampSize(); }
|
||||
|
||||
ReturnValue_t CdsShortTimeStamper::deSerialize(const uint8_t **buffer, size_t *size,
|
||||
SerializeIF::Endianness streamEndianness) {
|
||||
return HasReturnvaluesIF::RETURN_FAILED;
|
||||
}
|
||||
|
||||
size_t CdsShortTimeStamper::getTimestampSize() const { return TIMESTAMP_LEN; }
|
@ -1,9 +1,9 @@
|
||||
#ifndef FSFW_TIMEMANAGER_TIMESTAMPER_H_
|
||||
#define FSFW_TIMEMANAGER_TIMESTAMPER_H_
|
||||
|
||||
#include "../objectmanager/SystemObject.h"
|
||||
#include "CCSDSTime.h"
|
||||
#include "TimeStamperIF.h"
|
||||
#include "fsfw/objectmanager/SystemObject.h"
|
||||
|
||||
/**
|
||||
* @brief Time stamper which can be used to add any timestamp to a
|
||||
@ -34,10 +34,10 @@ class CdsShortTimeStamper : public TimeStamperIF, public SystemObject {
|
||||
ReturnValue_t addTimeStamp(uint8_t *buffer, uint8_t maxSize) override;
|
||||
ReturnValue_t serialize(uint8_t **buffer, size_t *size, size_t maxSize,
|
||||
Endianness streamEndianness) const override;
|
||||
size_t getSerializedSize() const override;
|
||||
[[nodiscard]] size_t getSerializedSize() const override;
|
||||
ReturnValue_t deSerialize(const uint8_t **buffer, size_t *size,
|
||||
Endianness streamEndianness) override;
|
||||
size_t getTimestampSize() const override;
|
||||
[[nodiscard]] size_t getTimestampSize() const override;
|
||||
};
|
||||
|
||||
#endif /* FSFW_TIMEMANAGER_TIMESTAMPER_H_ */
|
||||
|
19
src/fsfw/timemanager/TimeReaderIF.h
Normal file
19
src/fsfw/timemanager/TimeReaderIF.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef FSFW_TIMEMANAGER_TIMEREADERIF_H
|
||||
#define FSFW_TIMEMANAGER_TIMEREADERIF_H
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
class TimeReaderIF {
|
||||
public:
|
||||
virtual ~TimeReaderIF() = default;
|
||||
virtual ReturnValue_t readTimeStamp(const uint8_t* buffer, uint8_t maxSize) = 0;
|
||||
// Would be nice to have this, but the clock backend needs to be redesigned
|
||||
// virtual ReturnValue_t readTimestampLen(const uint8_t* buffer, uint8_t maxSize, size_t&
|
||||
// timestampLen) = 0;
|
||||
virtual size_t getTimestampLen() = 0;
|
||||
virtual timeval& getTime() = 0;
|
||||
};
|
||||
|
||||
#endif // FSFW_TIMEMANAGER_TIMEREADERIF_H
|
@ -24,6 +24,7 @@ class TimeStamperIF : public SerializeIF {
|
||||
|
||||
[[nodiscard]] virtual size_t getTimestampSize() const = 0;
|
||||
virtual ReturnValue_t addTimeStamp(uint8_t* buffer, uint8_t maxSize) = 0;
|
||||
|
||||
~TimeStamperIF() override = default;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user