#ifndef MISSION_UTILITY_TMFUNNEL_H_ #define MISSION_UTILITY_TMFUNNEL_H_ #include #include #include #include #include #include namespace Factory { void setStaticFrameworkObjectIds(); } /** * @brief TM Recipient. * @details * Main telemetry receiver. All generated telemetry is funneled into * this object. * @ingroup utility * @author J. Meier */ class TmFunnel : public AcceptsTelemetryIF, public ExecutableObjectIF, public SystemObject { friend void(Factory::setStaticFrameworkObjectIds)(); public: TmFunnel(object_id_t objectId, CdsShortTimeStamper& timeReader, uint32_t messageDepth = 20, uint8_t reportReceptionVc = 0); virtual ~TmFunnel(); const char* getName() const override; MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel = 0) override; ReturnValue_t performOperation(uint8_t operationCode = 0) override; ReturnValue_t initialize() override; protected: static object_id_t downlinkDestination; static object_id_t storageDestination; private: CdsShortTimeStamper& timeReader; uint32_t messageDepth = 0; uint8_t reportReceptionVc = 0; uint16_t sourceSequenceCount = 0; MessageQueueIF* tmQueue = nullptr; MessageQueueIF* storageQueue = nullptr; StorageManagerIF* tmStore = nullptr; ReturnValue_t handlePacket(TmTcMessage* message); }; #endif /* MISSION_UTILITY_TMFUNNEL_H_ */