ZT/sources/Simulator/SimulatorPCIIO.cpp

84 lines
2.4 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 - 2013 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Classe instantiable d'une carte d'entrées PCI. Dérivée de CPCIIOMgr, elle
permet d'émuler les entrées de la carte PCI en réimplémentant les fonctions
génériques de sa classe de base. Les fonctions SetInputBufFlags et SetInputBufValue
permettent au simulateur d'assigner les valeurs des entrées qui doivent être
lues par le programme.
*/
/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#include "SimulatorPCIIO.h"
CSimulatorPCIIO::CSimulatorPCIIO()
{
mSimPCIInputsBuffer = 0;
}
unsigned int CSimulatorPCIIO::GetInputs()
{
unsigned int temp;
mRdWrLock.lockForRead(); //lock for thread access
temp = mSimPCIInputsBuffer;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorPCIIO::OpenPCIInterface()
{
return PCIIO_OK;
}
unsigned int CSimulatorPCIIO::SetInputBufFlags(unsigned int FlagMask)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mSimPCIInputsBuffer |= FlagMask;
temp = mSimPCIInputsBuffer;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorPCIIO::SetInputBufValue(unsigned int value)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mSimPCIInputsBuffer = value;
temp = mSimPCIInputsBuffer;
mRdWrLock.unlock();
return temp;
}
unsigned int CSimulatorPCIIO::ClearInputBufFlags(unsigned int FlagMask)
{
unsigned int temp;
mRdWrLock.lockForWrite();
mSimPCIInputsBuffer ^= FlagMask;
temp = mSimPCIInputsBuffer;
mRdWrLock.unlock();
return temp;
}