fsfw/objectmanager/SystemObject.h
2020-08-13 20:53:35 +02:00

62 lines
1.8 KiB
C++

/**
* @file SystemObject.h
* @brief This file contains the definition of the SystemObject class.
* @date 07.11.2012
* @author Ulrich Mohr
*/
#ifndef SYSTEMOBJECT_H_
#define SYSTEMOBJECT_H_
#include "../events/Event.h"
#include "../events/EventReportingProxyIF.h"
#include "SystemObjectIF.h"
#include "../timemanager/Clock.h"
/**
* @brief This class automates insertion into the ObjectManager and
* management of the object id.
* @details This class is more a base class, which shall be inherited by any
* class that is announced to ObjectManager. It automatically includes
* itself (and therefore the inheriting class) in the object manager's
* list.
* \ingroup system_objects
*/
class SystemObject: public SystemObjectIF {
private:
/**
* @brief This is the id the class instant got assigned.
*/
const object_id_t objectId;
const bool registered;
public:
/**
* Helper function to send Event Messages to the Event Manager
* @param event
* @param parameter1
* @param parameter2
*/
virtual void triggerEvent(Event event, uint32_t parameter1 = 0, uint32_t parameter2 = 0);
/**
* @brief The class's constructor.
* @details In the constructor, the object id is set and the class is
* inserted in the object manager.
* @param setObjectId The id the object shall have.
* @param doRegister Determines if the object is registered in the global object manager.
*/
SystemObject(object_id_t setObjectId, bool doRegister = true);
/**
* @brief On destruction, the object removes itself from the list.
*/
virtual ~SystemObject();
object_id_t getObjectId() const;
virtual ReturnValue_t initialize();
virtual ReturnValue_t checkObjectConnections();
virtual void forwardEvent(Event event, uint32_t parameter1 = 0, uint32_t parameter2 = 0) const;
};
#endif /* SYSTEMOBJECT_H_ */