eive-obsw/mission/tmtc/TmFunnelBase.h

47 lines
1.5 KiB
C
Raw Normal View History

#ifndef MISSION_TMTC_TMFUNNELBASE_H_
#define MISSION_TMTC_TMFUNNELBASE_H_
#include <fsfw/objectmanager/SystemObject.h>
#include <fsfw/storagemanager/StorageManagerIF.h>
2022-12-14 13:19:14 +01:00
#include <fsfw/tmstorage/TmStoreFrontendSimpleIF.h>
#include <fsfw/tmtcservices/AcceptsTelemetryIF.h>
2022-12-19 14:40:27 +01:00
#include <fsfw/tmtcservices/TmTcMessage.h>
2023-03-09 11:46:13 +01:00
#include <mission/tmtc/PusLiveDemux.h>
#include <vector>
2023-02-21 20:43:16 +01:00
class TmFunnelBase : public AcceptsTelemetryIF, public SystemObject {
public:
struct FunnelCfg {
2023-03-02 17:35:36 +01:00
FunnelCfg(object_id_t objId, const char* name, StorageManagerIF& tmStore,
StorageManagerIF& ipcStore, uint32_t tmMsgDepth)
: objectId(objId),
name(name),
tmStore(tmStore),
ipcStore(ipcStore),
tmMsgDepth(tmMsgDepth) {}
object_id_t objectId;
2023-03-02 17:35:36 +01:00
const char* name;
StorageManagerIF& tmStore;
StorageManagerIF& ipcStore;
uint32_t tmMsgDepth;
};
2023-02-21 20:43:16 +01:00
explicit TmFunnelBase(FunnelCfg cfg);
[[nodiscard]] MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel) const override;
2023-03-09 11:46:13 +01:00
void addLiveDestination(const char* name, const AcceptsTelemetryIF& downlinkDestination,
uint8_t vcid = 0);
ReturnValue_t demultiplexLivePackets(store_address_t origStoreId, const uint8_t* tmData,
size_t tmSize);
2023-02-21 20:43:16 +01:00
~TmFunnelBase() override;
protected:
2023-03-02 17:35:36 +01:00
const char* name;
StorageManagerIF& tmStore;
2022-12-19 13:57:05 +01:00
StorageManagerIF& ipcStore;
MessageQueueIF* tmQueue = nullptr;
2023-03-09 11:46:13 +01:00
PusLiveDemux liveDemux;
};
#endif /* MISSION_TMTC_TMFUNNELBASE_H_ */