ZT/sources/Simulator/SimulatorInputModule.cpp

99 lines
2.6 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Classe instantiable d'un module simulé d'entrées externes. Dérivée de CInputModule, elle
permet d'émuler les entrées du module externe en réimplémentant les fonctions
génériques de sa classe de base. Le simulateur peut changer l'état des entrées
par les fonctions Set...
*/
/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#include "SimulatorInputModule.h"
#include "Angrignon.h"
CSimulatorInputModule::CSimulatorInputModule()
{
mInputBuf = 0;
}
CSimulatorInputModule::~CSimulatorInputModule()
{
}
//unsigned int CSimulatorInputModule::GetInputs(unsigned char *DataBuf)
//{
// memcpy(DataBuf,&mInputBuf,sizeof(mInputBuf));
// return RET_OK;
//}
unsigned int CSimulatorInputModule::GetInputs()
{
unsigned int temp;
mRdWrLock.lockForRead();
temp = mInputBuf;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorInputModule::GetInputBuf()
{
unsigned int temp;
mRdWrLock.lockForRead();
temp = mInputBuf;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorInputModule::SetInputBufFlags(unsigned int FlagMask)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mInputBuf |= FlagMask;
temp = mInputBuf;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorInputModule::SetInputBufValue(unsigned int value)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mInputBuf = value;
temp = mInputBuf;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorInputModule::ClearInputBufFlags(unsigned int FlagMask)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mInputBuf &= ~FlagMask;
temp = mInputBuf;
mRdWrLock.unlock();
return temp;
}