/*******************************************************************************
*                                                                              *
* Société de Transports de Montréal.                                    	   *
* 2012                                                                         *
*                                                                              *
* Projet Zones Tests                                                           *
*                                                                              *
*                                                                              *
*                                                                              *
*******************************************************************************/
/*
	Description:
	Description du fichier si nécessaire.
	
*/

/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
	Verision d'origine.
	
### YYYYMMDD Description du besoin ou du bug
	Description du changement.
 */

/* ************************************************************************** */

#ifndef IOMANAGER_H
#define IOMANAGER_H

#include "IOModule.h"
#include "QList"

typedef enum eIOModuleType
{
	IO_MODULE_INPUT_TYPE,
	IO_MODULE_OUTPUT_TYPE,
	IO_MODULE_MIXED_TYPE,
	IO_MODULE_INVALID_TYPE
}eIOModuleType_t;


enum eIOMgrRetValues
{
    EXTIO_MGR_RET_OK,
    EXTIO_MGR_RET_ERR_CANNOT_CONNECT,
    EXTIO_MGR_RET_ERR_CANNOT_OPEN_MODULE,
    EXTIO_MGR_RET_ERR_MOD_TYPE_MISMATCH,
    EXTIO_MGR_RET_ERR_MOD_OFFLINE
};

class CIOManager
{
public:
	//CIOManager();

	virtual unsigned int InitIO() = 0;
	virtual CIOModule *GetModule(eIOModuleType_t type, unsigned int ModuleID) = 0;
	//QList<CIOModule*> mModulesList;
    virtual void DestroyModule() = 0;
	virtual ~CIOManager();
};

#endif // IOMANAGER_H
