#ifndef MISSION_UTILITY_TMFUNNEL_H_ #define MISSION_UTILITY_TMFUNNEL_H_ #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, uint32_t messageDepth = 20); virtual ~TmFunnel(); virtual MessageQueueId_t getReportReceptionQueue( uint8_t virtualChannel = 0) override; virtual ReturnValue_t performOperation(uint8_t operationCode = 0) override; virtual ReturnValue_t initialize() override; protected: static object_id_t downlinkDestination; static object_id_t storageDestination; private: uint16_t sourceSequenceCount = 0; MessageQueueIF* tmQueue = nullptr; MessageQueueIF* storageQueue = nullptr; StorageManagerIF* tmPool = nullptr; uint32_t messageDepth = 0; ReturnValue_t handlePacket(TmTcMessage* message); }; #endif /* MISSION_UTILITY_TMFUNNEL_H_ */