#ifndef VIRTUALCHANNEL_H_ #define VIRTUALCHANNEL_H_ #include "OBSWConfig.h" #include "fsfw/tmtcservices/AcceptsTelemetryIF.h" #include "fsfw/returnvalues/HasReturnvaluesIF.h" #include #include 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 VirtualChannel: public AcceptsTelemetryIF, public HasReturnvaluesIF { 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(uint8_t vcId, uint32_t tmQueueDepth); ReturnValue_t initialize(); MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel = 0) override; ReturnValue_t performOperation(); /** * @brief Sets the PTME object which handles access to the PTME IP Core. * * @param ptme Pointer to ptme object */ void setPtmeObject(PtmeIF* ptme_); /** * @brief Can be used by the owner to set the link state. Packets will be discarded if link * to ground station is down. */ void setLinkState(bool linkIsUp_); private: PtmeIF* ptme = nullptr; MessageQueueIF* tmQueue = nullptr; uint8_t vcId; bool linkIsUp = false; StorageManagerIF* tmStore = nullptr; }; #endif /* VIRTUALCHANNEL_H_ */