/*******************************************************************************
*                                                                              *
* 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 SIMULATOROUTPUTMODULE_H
#define SIMULATOROUTPUTMODULE_H

#include "GlobalDefine.h"
#include "OutputModule.h"
#include <QReadWriteLock>
#include <QObject>

class CZTSimulator;

class CSImulatorOutputModule:public QObject, public COutputModule
{
	Q_OBJECT
public:
	CSImulatorOutputModule();
    void BindSimPtr(CZTSimulator *Ptr){mSimulatorPtr = Ptr;}

	virtual unsigned int SetOutput(unsigned char* buffer);
    virtual unsigned int SetOutput(quint32 buffer);
    virtual unsigned int SetOutputFlags(quint32 Flags);
    virtual unsigned int ClearOutputFlags(quint32 Flags);
    virtual unsigned int ToggleOutputFlags(quint32 Flags);

private:
    quint32 mOutputBuffer;
    QReadWriteLock mRdWrLock;
    CZTSimulator *mSimulatorPtr;

	signals:
	void UpdateOutputsDisplay(quint32);

};

#endif // SIMULATOROUTPUTMODULE_H
