#ifndef CCSDSDISTRIBUTORIF_H_ #define CCSDSDISTRIBUTORIF_H_ #include "../tmtcservices/AcceptsTelecommandsIF.h" #include "../ipc/MessageQueueSenderIF.h" /** * This is the Interface to a CCSDS Distributor. * On a CCSDS Distributor, Applications (in terms of CCSDS) may register themselves, * either by passing a pointer to themselves (and implementing the CCSDSApplicationIF, * or by explicitly passing an APID and a MessageQueueId to route the TC's to. * \ingroup tc_distribution */ class CCSDSDistributorIF { public: /** * With this call, a class implementing the CCSDSApplicationIF can register at the * distributor. * @param application A pointer to the Application to register. * @return - \c RETURN_OK on success, * - \c RETURN_FAILED on failure. */ virtual ReturnValue_t registerApplication( AcceptsTelecommandsIF* application ) = 0; /** * With this call, other Applications can register to the CCSDS distributor. * This is done by passing an APID and a MessageQueueId to the method. * @param apid The APID to register. * @param id The MessageQueueId of the message queue to send the TC Packets to. * @return - \c RETURN_OK on success, * - \c RETURN_FAILED on failure. */ virtual ReturnValue_t registerApplication( uint16_t apid, MessageQueueId_t id ) = 0; /** * The empty virtual destructor. */ virtual ~CCSDSDistributorIF() { } }; #endif /* CCSDSDISTRIBUTORIF_H_ */