2022-07-21 13:48:58 +02:00
|
|
|
#ifndef FSFW_TMTCSERVICES_TMHELPERS_H_
|
|
|
|
#define FSFW_TMTCSERVICES_TMHELPERS_H_
|
2022-07-20 22:21:15 +02:00
|
|
|
|
|
|
|
#include "TmSendHelper.h"
|
|
|
|
#include "TmStoreHelper.h"
|
|
|
|
|
2022-07-21 18:21:10 +02:00
|
|
|
// I'd prefer to use tm, but there have been nameclashes with the tm struct
|
|
|
|
namespace telemetry {
|
2022-07-20 22:21:15 +02:00
|
|
|
|
2022-07-25 20:41:01 +02:00
|
|
|
ReturnValue_t storeAndSendTmPacket(TmStoreHelper& storeHelper, TmSendHelper& sendHelper,
|
|
|
|
bool delOnFailure = true);
|
2022-07-20 22:21:15 +02:00
|
|
|
|
2022-07-25 10:24:43 +02:00
|
|
|
class DataWithObjectIdPrefix : public SerializeIF {
|
2022-07-20 22:21:15 +02:00
|
|
|
public:
|
2022-07-25 10:24:43 +02:00
|
|
|
DataWithObjectIdPrefix(object_id_t objectId, const uint8_t* srcData, size_t srcDataLen)
|
2022-07-20 22:21:15 +02:00
|
|
|
: objectId(objectId), srcData(srcData), srcDataLen(srcDataLen) {}
|
|
|
|
ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
|
|
|
Endianness streamEndianness) const override {
|
|
|
|
if (*size + getSerializedSize() > maxSize) {
|
|
|
|
return SerializeIF::BUFFER_TOO_SHORT;
|
|
|
|
}
|
|
|
|
ReturnValue_t result =
|
|
|
|
SerializeAdapter::serialize(&objectId, buffer, size, maxSize, streamEndianness);
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
std::memcpy(*buffer, srcData, srcDataLen);
|
|
|
|
*buffer += srcDataLen;
|
|
|
|
*size += srcDataLen;
|
|
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
[[nodiscard]] size_t getSerializedSize() const override { return sizeof(objectId) + srcDataLen; }
|
|
|
|
|
|
|
|
ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
|
|
|
Endianness streamEndianness) override {
|
|
|
|
// TODO: Implement
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
object_id_t objectId;
|
|
|
|
const uint8_t* srcData;
|
|
|
|
size_t srcDataLen;
|
|
|
|
};
|
|
|
|
|
2022-07-21 18:21:10 +02:00
|
|
|
} // namespace telemetry
|
2022-07-20 22:21:15 +02:00
|
|
|
|
2022-07-21 13:48:58 +02:00
|
|
|
#endif // FSFW_TMTCSERVICES_TMHELPERS_H_
|