/**
 * \file Control.h
 * \date 17.02.2002
 *
 * Interface for the ControlInterface class
 */

#ifndef INTERFACES_CONTROL_H
#define INTERFACES_CONTROL_H

#include "Common/Interfaces/Interface.h"
#include "Common/Module.h"

/// Constants for registration priority
//@{
#define LOW_PRIORITY	10
#define MED_PRIORITY	5
#define HIGH_PRIORITY	2
//@}

/**
 * \class ControlInterface
 * \author Marek Lehuta
 * \brief Control task interface
 * 
 * Control task ensures functionality of the system.
 * It allows for registration of other modules
 */

class ControlInterface : public Interface
{
public:
	// Construction and destruction
	ControlInterface() : Interface("Control interface", "v0.0.02") {}
	virtual ~ControlInterface() {}

	
	// Interface functions
	virtual void ShutDown() = 0;
	virtual int RegisterModule(Module* pModule, int iTask,
		int iPriority = LOW_PRIORITY) = 0;

	virtual Module* GetModule(int iTask) const = 0;

protected:

private:

};

#endif	// INTERFACES_CONTROL_H
