#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 VirtualChannel, 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(object_id_t objectId, uint8_t vcId, const char* vcName, PtmeIF& ptme, const std::atomic_bool& linkStateProvider, StorageManagerIF& tmStore, uint32_t tmQueueDepth); MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel = 0) const override; [[nodiscard]] const char* getName() const override; ReturnValue_t handleNextTm(bool performWriteOp); private: MessageQueueIF* tmQueue = nullptr; StorageManagerIF& tmStore; };