ZT/sources/Simulator/ZTSimulator.h

149 lines
4.7 KiB
C++

/*******************************************************************************
* *
* 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 CZTSIMULATOR_H
#define CZTSIMULATOR_H
#include <QGraphicsWidget>
#include "SimulatorIOManager.h"
#include "GlobalDefine.h"
#include "Station.h"
#include "SimulatorLazerProbesMgr.h"
#include "SimulatorIOManager.h"
#include "SimulatorPCIIO.h"
#include "CDVItem.h"
#include "ToggleTextButtonWidget.h"
#include "PushButton.h"
#include <QTimer>
#include "SimulationScenario.h"
#include <QElapsedTimer>
#include "LedWidget.h"
#include "SimulatorThread.h"
#include <QCheckBox>
#include "USBDriveInterface.h"
#include "IOManager.h"
#define SIM_LAZER_PROBES_UPDATE_TIMEOUT 1 //milliseconds
#define USE_REAL_ANALOG_EXTERNAL_MODULE
class CZTPage;
class CZTSimulator : public QGraphicsWidget
{
Q_OBJECT
public:
CZTSimulator(CSimulatorIOManager *mIOMgrPtr);
~CZTSimulator();
void Show();
unsigned int Init(CZTPage *MainPagePtr, CStation *Station, CIOManager *IOMgrPtr,CPCIIOMgr *PCIIO,CAbstractLazerProbeMgr *LazerProbesMgr,CUSBDriveInterface *UsbDriveInterface, CAnalogInputModule *RealAnalogModule=0);
void UpdateSimulatorDisplay();
// void UpdateOutputsDisplay(quint32 Outputs);
void StartSim();
void SetPGTreshold(qint32 Treshold);
private:
CSimulatorIOManager *mIOMgrPtr;
CSimulatorPCIIO *mPCIIO;
CSimulatorLazerProbesMgr *mLazerProbesMgr;
CSimulatorLazerProbe *mInternalLazerProbe, *mExternalLazerProbe;
CZTPage *mMainPagePtr;
CStation *mStationPtr;
CSimulatorInputModule *mInputModule;
CSImulatorOutputModule *mOutputModule;
CSimulatorMixedModule *mMixedModule;
CSimulatorThread *mSimWorkerThread;
QThread *mSimThread;
CLogElement *mSimLogElement;
CUSBDriveInterface *mUSBDriveInterfacePtr;
GenericInputMasks_t *mStationInputMasks;
GenericOutputMasks_t *mStationOutputMasks;
//Simulator GUI items
QList<CCDVItem*> mSimCDVItemsList;
CToggleTextButtonWidget *mITIZT1ToggleBtn, *mITIZT2ToggleBtn, *mITIZT1AltToggleBtn;
CToggleTextButtonWidget *mS1SimBtn, *mS2SimBtn, *mS1S2SimBtn, *mFNSimBtn, *mPPISimBtn, *mPPESimBtn;
CToggleTextButtonWidget *mZT2S1SimBtn, *mZT2PPISimBtn,*mZT2PPESimBtn;
CPushButton *mSimulationStartBtn, *mSimFileOpenBtn, *mSimDirOpenButton;
CToggleTextButtonWidget *mAN1SimBtn, *mAN2SimBtn;
QCheckBox *mLoopSimCheckbox;
QCheckBox *mProbesAliveCheckBox;
//USB stick presence emulation
QCheckBox *mUSBKeyEmuEnableCheckBox;
CToggleTextButtonWidget *mUSBKeyPresenceToggleBtn;
//General simulator stuff
QElapsedTimer *mSimulationElapsedTimer;
QTimer mFileSimLoopDelayTimer;
//Simulation scenario stuff
CSimulationScenario *mScenario;
//Lazer probes simulation
QTimer *mLazerProbesUpdateTimer;
unsigned int mPGTreshold;
unsigned int mPGIValue, mPGEValue;
//Outputs display
CLedWidget *LedWidget[GENERIC_OUTPUT_NB_ID];
void DestroyLogElement();
public slots:
void CDVItemRightClicked(CCDVItem *ClickedItem);
void ItineraryToggleSwitchActivate(CToggleTextButtonWidget*);
void ItineraryToggleSwitchDeActivate(CToggleTextButtonWidget*);
void ZT1SensorBtnActivate(CToggleTextButtonWidget*);
void ZT1SensorBtnDeActivate(CToggleTextButtonWidget*);
void ZT2SensorBtnActivate(CToggleTextButtonWidget*);
void ZT2SensorBtnDeActivate(CToggleTextButtonWidget*);
void SimulationScenarioButtonPressed(CPushButton*);
void SimulationScenarioExecStep(CSimulationStep*);
void SimulationScenarioFinished();
void LazerProbesSimTimerExpired();
void FileSimFinished();
void FileLoopDelayExpired();
void USBEmulationCheckboxChanged(int state);
void USBEmulationPresenceToggled(CToggleTextButtonWidget*);
void UpdateOutputsDisplay(quint32);
void SimulDefectLazerCheckboxChanged(int state);
};
#endif // CZTSIMULATOR_H