/*******************************************************************************
*                                                                              *
* Société de Transports de Montréal.                                    	   *
* 2012                                                                         *
*                                                                              *
* Projet Zones Tests                                                           *
*                                                                              *
*                                                                              *
*                                                                              *
*******************************************************************************/
/*
	Description:
	Classe instantiable gestionnaire simulé d'entrées/sorties externes.
	
*/

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

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

#include "GlobalDefine.h"
#include "SimulatorIOManager.h"

CSimulatorIOManager::CSimulatorIOManager()
{

}
CSimulatorIOManager::~CSimulatorIOManager()
{
	delete mInputsModule;
	delete mOutputsModule;
	delete mMixedModule;
}

void CSimulatorIOManager::DestroyModule()
{
    delete mInputsModule;
    delete mOutputsModule;
    delete mMixedModule;
}

unsigned int CSimulatorIOManager::InitIO()
{
	CEngLog::instance()->AddLogString(QString("CSimulatorIOManager::Init()"));
	mInputsModule = new CSimulatorInputModule();
	mOutputsModule = new CSImulatorOutputModule;
	mMixedModule = new CSimulatorMixedModule();
	return RET_OK;
}

CIOModule *CSimulatorIOManager::GetModule(eIOModuleType_t type, unsigned int ModuleID)
{
	Q_UNUSED(ModuleID);
	switch(type)
	{
		case IO_MODULE_INPUT_TYPE:
		{
			return mInputsModule;
			break;
		}
		case IO_MODULE_OUTPUT_TYPE:
		{
			return mOutputsModule;
			break;
		}
		case IO_MODULE_MIXED_TYPE:
		{
            return mMixedModule;
			break;
		}
		default:
		case IO_MODULE_INVALID_TYPE:
		{
			return 0;
			break;
		}
	}

	return 0;
}
