sequence counter isn ow persistent, msg type count support
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
#include "PusTmFunnel.h"
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include "eive/definitions.h"
|
||||
#include "eive/objects.h"
|
||||
#include "fsfw/ipc/CommandMessage.h"
|
||||
@ -11,8 +13,8 @@
|
||||
#include "tmtc/pusIds.h"
|
||||
|
||||
PusTmFunnel::PusTmFunnel(TmFunnelBase::FunnelCfg cfg, StorageManagerIF &ramToFileStore,
|
||||
TimeReaderIF &timeReader, SdCardMountedIF &sdcMan)
|
||||
: TmFunnelBase(cfg), ramToFileStore(ramToFileStore), timeReader(timeReader), sdcMan(sdcMan) {}
|
||||
TimeReaderIF &timeReader)
|
||||
: TmFunnelBase(cfg), ramToFileStore(ramToFileStore), timeReader(timeReader) {}
|
||||
|
||||
PusTmFunnel::~PusTmFunnel() = default;
|
||||
|
||||
@ -21,6 +23,13 @@ ReturnValue_t PusTmFunnel::performOperation(uint8_t) {
|
||||
ReturnValue_t result;
|
||||
TmTcMessage currentMessage;
|
||||
unsigned int count = 0;
|
||||
if (saveSequenceCount) {
|
||||
result = saveSequenceCountToFile();
|
||||
if (result != returnvalue::OK) {
|
||||
sif::error << "PusTmFunnel: Storing sequence count to file has failed" << std::endl;
|
||||
}
|
||||
saveSequenceCount = false;
|
||||
}
|
||||
result = tmQueue->receiveMessage(¤tMessage);
|
||||
while (result == returnvalue::OK) {
|
||||
result = handleTmPacket(currentMessage);
|
||||
@ -61,6 +70,17 @@ ReturnValue_t PusTmFunnel::handleTmPacket(TmTcMessage &message) {
|
||||
packet.setSequenceCount(sourceSequenceCount++);
|
||||
sourceSequenceCount = sourceSequenceCount % ccsds::LIMIT_SEQUENCE_COUNT;
|
||||
packet.updateErrorControl();
|
||||
uint8_t service = packet.getMessageTypeCounter();
|
||||
auto mapIter = msgCounterMap.find(service);
|
||||
if (mapIter == msgCounterMap.end()) {
|
||||
msgCounterMap.emplace(service, 0);
|
||||
}
|
||||
if (mapIter->second == std::numeric_limits<uint16_t>::max()) {
|
||||
mapIter->second = 0;
|
||||
} else {
|
||||
mapIter->second++;
|
||||
}
|
||||
packet.setMessageCount(mapIter->second);
|
||||
|
||||
// Send to persistent TM store if the packet matches some filter.
|
||||
MessageQueueId_t destination;
|
||||
|
Reference in New Issue
Block a user