#pragma once #include #include #include #include #include #include #include "OBSWConfig.h" #include "fsfw/returnvalues/returnvalue.h" #include "fsfw/tmtcservices/AcceptsTelemetryIF.h" class StorageManagerIF; /** * @brief This class represents a virtual channel. Sending a tm message to an object of this class * will forward the tm packet to the respective virtual channel of the PTME IP Core. * * @author J. Meier */ class VirtualChannelWithQueue : public AcceptsTelemetryIF { public: /** * @brief Constructor * * @param vcId The virtual channel id assigned to this object * @param tmQueueDepth Queue depth of queue receiving telemetry from other objects */ VirtualChannelWithQueue(VirtualChannel& channel, StorageManagerIF& tmStore, uint32_t tmQueueDepth, const std::atomic_bool& linkStateProvider); MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel = 0) const override; ReturnValue_t sendNextTm(); VirtualChannel& vc(); const char* getName() const override; private: VirtualChannel& channel; MessageQueueIF* tmQueue = nullptr; StorageManagerIF* tmStore = nullptr; };