#pragma once #include #include #include #include #include /** * @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 VirtualChannel : public SystemObject, public VirtualChannelIF { public: /** * @brief Constructor * * @param vcId The virtual channel id assigned to this object * @param tmQueueDepth Queue depth of queue receiving telemetry from other objects */ VirtualChannel(object_id_t objectId, uint8_t vcId, const char* vcName, PtmeIF& ptme, const std::atomic_bool& linkStateProvider); ReturnValue_t initialize() override; ReturnValue_t sendNextTm(const uint8_t* data, size_t size); ReturnValue_t write(const uint8_t* data, size_t size) override; uint8_t getVcid() const; const char* getName() const; private: PtmeIF& ptme; uint8_t vcId = 0; std::string vcName; const std::atomic_bool& linkStateProvider; };