#ifndef FSFW_EXAMPLE_COMMON_PUSTMFUNNEL_H #define FSFW_EXAMPLE_COMMON_PUSTMFUNNEL_H #include #include #include #include #include #include #include #include "TmStore.h" #include "fsfw/timemanager/TimeReaderIF.h" /** * @brief TM Recipient. * @details * TODO: Add support for TM storage by using the (or a) LIVE flag provided by the CCSDS or Syrlinks * handler. If we are in LIVE TM mode, forward TM to downlink destination directly. Otherwise, * forward to TM storage backend which stores TMs into files. * Main telemetry receiver. All generated telemetry is funneled into * this object. * @ingroup utility * @author J. Meier, R. Mueller */ class PusTmFunnel : public TmFunnelBase { public: explicit PusTmFunnel(object_id_t objectId, TimeReaderIF &timeReader, StorageManagerIF &tmStore, SdCardMountedIF &sdcMan, uint32_t messageDepth = 10); [[nodiscard]] const char *getName() const override; ~PusTmFunnel() override; ReturnValue_t performOperation(uint8_t operationCode); private: uint16_t sourceSequenceCount = 0; TimeReaderIF &timeReader; bool storesInitialized = false; timeval currentTv; TmStore miscStore; TmStore eventStore; SdCardMountedIF &sdcMan; ReturnValue_t handlePacket(TmTcMessage &message); ReturnValue_t initialize() override; }; #endif // FSFW_EXAMPLE_COMMON_PUSTMFUNNEL_H