various bugfixes and improvements

This commit is contained in:
2022-07-21 11:34:11 +02:00
parent be35bd53a6
commit d8b6cb39ac
35 changed files with 401 additions and 147 deletions

View File

@ -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) {

View File

@ -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)

View 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, &timestampLen, maxSize);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
return result;
}
timeval& CcsdsTimestampReader::getTime() { return time; }
size_t CcsdsTimestampReader::getTimestampLen() { return timestampLen; }

View 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

View File

@ -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; }

View File

@ -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_ */

View 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

View File

@ -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;
};