Skip to content
Snippets Groups Projects
Service.hpp 1.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef ECSS_SERVICES_SERVICE_HPP
    #define ECSS_SERVICES_SERVICE_HPP
    
    #include <cstdint>
    #include "Message.hpp"
    
    /**
     * A spacecraft service, as defined in ECSS-E-ST-70-41C
     *
     * A member of the Service class should be used as a singleton, i.e. must be created only once in
     * the code
     *
     * @todo Disable copy constructor
     */
    class Service {
    private:
    	uint16_t messageTypeCounter = 0;
    protected:
    	uint8_t serviceType;
    
    	/**
    	 * Creates a new empty telemetry package originating from this service
    	 *
    	 * @param messageType The ID of the message type, as specified in the standard. For example,
    	 *                    the TC[17,3] message has `messageType = 3`.
    	 * @todo See if the Message must be returned by reference
    	 * @todo Set the application ID to the current application
    	 * @todo Use the messageTypeCounter
    	 */
    	Message createTM(uint8_t messageType) {
    		return Message(serviceType, messageType, Message::TM, 0);
    	}
    
    	/**
    	 * Stores a message so that it can be transmitted to the ground station
    	 *
    	 * Note: For now, since we don't have any mechanisms to queue messages and send them later,
    	 * we just print the message to the screen
    	 */
    	void storeMessage(const Message& message);
    };
    
    
    #endif //ECSS_SERVICES_SERVICE_HPP