29 lines
1.1 KiB
C++
29 lines
1.1 KiB
C++
|
#include "PersistentTmStoreWithTmQueue.h"
|
||
|
|
||
|
#include <fsfw/ipc/QueueFactory.h>
|
||
|
#include <fsfw/tmtcservices/TmTcMessage.h>
|
||
|
|
||
|
PersistentTmStoreWithTmQueue::PersistentTmStoreWithTmQueue(StorageManagerIF& tmStore,
|
||
|
PersistentTmStore& persistentTmStore,
|
||
|
uint32_t tmQueueDepth)
|
||
|
: tmStore(tmStore), persistentTmStore(persistentTmStore) {
|
||
|
tmQueue = QueueFactory::instance()->createMessageQueue(tmQueueDepth);
|
||
|
}
|
||
|
|
||
|
ReturnValue_t PersistentTmStoreWithTmQueue::handleNextTm() {
|
||
|
TmTcMessage msg;
|
||
|
ReturnValue_t result = tmQueue->receiveMessage(&msg);
|
||
|
if (result == MessageQueueIF::EMPTY) {
|
||
|
return result;
|
||
|
}
|
||
|
auto accessor = tmStore.getData(msg.getStorageId());
|
||
|
if (accessor.first != returnvalue::OK) {
|
||
|
return result;
|
||
|
}
|
||
|
PusTmReader reader(accessor.second.data(), accessor.second.size());
|
||
|
persistentTmStore.storePacket(reader);
|
||
|
return returnvalue::OK;
|
||
|
}
|
||
|
|
||
|
PersistentTmStore& PersistentTmStoreWithTmQueue::getTmStore() { return persistentTmStore; }
|