fsfw/src/fsfw/tmtcservices/TmStoreHelper.cpp

61 lines
2.0 KiB
C++
Raw Normal View History

2022-07-20 11:43:16 +02:00
#include "TmStoreHelper.h"
#include "TmTcMessage.h"
2022-07-20 22:21:15 +02:00
TmStoreHelper::TmStoreHelper(uint16_t defaultApid): tmStore(nullptr) {
creator.setApid(defaultApid);
}
TmStoreHelper::TmStoreHelper(uint16_t defaultApid, StorageManagerIF& tmStore) : tmStore(&tmStore) {
2022-07-20 22:21:15 +02:00
creator.setApid(defaultApid);
}
TmStoreHelper::TmStoreHelper(uint16_t defaultApid, StorageManagerIF& tmStore,
TimeStamperIF& timeStamper)
: tmStore(&tmStore) {
2022-07-20 22:21:15 +02:00
creator.setApid(defaultApid);
creator.setTimeStamper(timeStamper);
2022-07-20 22:21:15 +02:00
}
2022-07-20 22:21:15 +02:00
ReturnValue_t TmStoreHelper::preparePacket(uint8_t service, uint8_t subservice, uint16_t counter) {
PusTmParams& params = creator.getParams();
params.secHeader.service = service;
params.secHeader.subservice = subservice;
params.secHeader.messageTypeCounter = counter;
return HasReturnvaluesIF::RETURN_OK;
2022-07-20 11:43:16 +02:00
}
2022-07-20 22:21:15 +02:00
StorageManagerIF* TmStoreHelper::getTmStore() { return tmStore; }
void TmStoreHelper::setTmStore(StorageManagerIF* store) { tmStore = store; }
const store_address_t& TmStoreHelper::getCurrentAddr() const { return currentAddr; }
ReturnValue_t TmStoreHelper::deletePacket() { return tmStore->deleteData(currentAddr); }
void TmStoreHelper::setSourceDataRaw(const uint8_t* data, size_t len) {
2022-07-23 11:43:48 +02:00
creator.setRawUserData(data, len);
2022-07-20 11:43:16 +02:00
}
2022-07-20 22:21:15 +02:00
void TmStoreHelper::setSourceDataSerializable(SerializeIF* serializable) {
2022-07-23 11:43:48 +02:00
creator.setSerializableUserData(serializable);
2022-07-20 22:21:15 +02:00
}
2022-07-20 11:43:16 +02:00
2022-07-20 22:21:15 +02:00
ReturnValue_t TmStoreHelper::addPacketToStore() {
creator.updateSpLengthField();
uint8_t* dataPtr;
2022-07-23 11:43:48 +02:00
ReturnValue_t result =
tmStore->getFreeElement(&currentAddr, creator.getSerializedSize(), &dataPtr);
if (result != HasReturnvaluesIF::RETURN_OK) {
return result;
}
2022-07-20 22:21:15 +02:00
size_t serLen = 0;
return creator.serialize(&dataPtr, &serLen, creator.getSerializedSize(),
SerializeIF::Endianness::NETWORK);
}
2022-07-20 11:43:16 +02:00
void TmStoreHelper::setTimeStamper(TimeStamperIF& timeStamper_) {
2022-07-20 22:21:15 +02:00
creator.setTimeStamper(timeStamper_);
2022-07-20 11:43:16 +02:00
}
2022-07-23 11:43:48 +02:00
2022-07-20 22:21:15 +02:00
void TmStoreHelper::setApid(uint16_t apid) { creator.setApid(apid); }