2022-11-02 10:26:45 +01:00
|
|
|
#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>
|
2022-11-02 10:26:45 +01:00
|
|
|
#include <fsfw/tmtcservices/AcceptsTelemetryIF.h>
|
2022-12-19 14:40:27 +01:00
|
|
|
#include <fsfw/tmtcservices/TmTcMessage.h>
|
2022-11-02 10:26:45 +01:00
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
2022-12-14 13:19:14 +01:00
|
|
|
class TmFunnelBase : public TmStoreFrontendSimpleIF,
|
|
|
|
public AcceptsTelemetryIF,
|
|
|
|
public SystemObject {
|
2022-11-02 10:26:45 +01:00
|
|
|
public:
|
2022-12-14 13:19:14 +01:00
|
|
|
TmFunnelBase(object_id_t objectId, StorageManagerIF& tmStore, uint32_t tmMsgDepth,
|
2022-12-19 13:57:05 +01:00
|
|
|
uint32_t tcMsgDepth, StorageManagerIF& ipcStore);
|
2022-11-02 10:26:45 +01:00
|
|
|
void addDestination(const AcceptsTelemetryIF& downlinkDestination, uint8_t vcid = 0);
|
2022-12-19 14:40:27 +01:00
|
|
|
ReturnValue_t sendPacketToDestinations(store_address_t origStoreId, TmTcMessage& message,
|
|
|
|
const uint8_t* packetData, size_t size);
|
2022-12-14 13:19:14 +01:00
|
|
|
|
|
|
|
[[nodiscard]] MessageQueueId_t getCommandQueue() const override;
|
2022-11-02 10:26:45 +01:00
|
|
|
[[nodiscard]] MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel) const override;
|
|
|
|
|
|
|
|
virtual ~TmFunnelBase();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
StorageManagerIF& tmStore;
|
2022-12-19 13:57:05 +01:00
|
|
|
StorageManagerIF& ipcStore;
|
2022-11-02 10:26:45 +01:00
|
|
|
std::vector<std::pair<MessageQueueId_t, uint8_t>> destinations;
|
2022-12-14 13:19:14 +01:00
|
|
|
MessageQueueIF* tcQueue = nullptr;
|
2022-11-02 10:26:45 +01:00
|
|
|
MessageQueueIF* tmQueue = nullptr;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* MISSION_TMTC_TMFUNNELBASE_H_ */
|