418 lines
8.9 KiB
C++
418 lines
8.9 KiB
C++
/*******************************************************************************
|
|
* *
|
|
* Société de Transports de Montréal. *
|
|
* 2012 *
|
|
* *
|
|
* Projet Zones Tests *
|
|
* *
|
|
* *
|
|
* *
|
|
*******************************************************************************/
|
|
/*
|
|
Description:
|
|
Ces classes contiennent l'état de la Zone Tests et les informations nécessaires
|
|
au fonctionnement des machines à états.
|
|
*/
|
|
|
|
/* ************************************************************************** */
|
|
/* Revision:
|
|
### 20130501 JFM
|
|
Verision d'origine.
|
|
|
|
### YYYYMMDD Description du besoin ou du bug
|
|
Description du changement.
|
|
*/
|
|
|
|
/* ************************************************************************** */
|
|
|
|
#ifndef ZTDATA_H
|
|
#define ZTDATA_H
|
|
|
|
#include "GlobalDefine.h"
|
|
#include <QObject>
|
|
#include <QTime>
|
|
#include <QDataStream>
|
|
#include <QVector>
|
|
|
|
enum eZTLOGType
|
|
{
|
|
ZT1_LOG_TYPE,
|
|
ZT2_LOG_TYPE,
|
|
UNKNOWN_LOG_TYPE
|
|
};
|
|
|
|
enum eCDVState
|
|
{
|
|
CDV_STATE_OCCUPIED,
|
|
CDV_STATE_FREE,
|
|
CDV_STATE_ITI_CMD,
|
|
CDV_STATE_UNKNOWN
|
|
};
|
|
|
|
enum eSwitchCVDPosition
|
|
{
|
|
SWITCH_CDV_NORMAL_POSITION,
|
|
SWITCH_CDV_REVERSE_POSITION,
|
|
SWITCH_CDV_UNKNOWN_POSITION
|
|
};
|
|
|
|
enum eCDVType
|
|
{
|
|
CDV_NORMAL_TYPE,
|
|
CDV_SWITCH_TYPE
|
|
};
|
|
|
|
enum eZTITI
|
|
{
|
|
ZT_PRIMARY_ITI, // Itinéraire 10/12 ou en voie normale
|
|
ZT_SECONDARY_ITI, // Itinéraire 10/22 ou autre changement de voie (quai banalisé)
|
|
ZT_MAX_ITI
|
|
};
|
|
enum eDetectionID
|
|
{
|
|
DETECTION_MAGNETIC_SENSOR_COUNT,
|
|
DETECTION_FN_DETECTION,
|
|
DETECTION_PG_DETECTION,
|
|
DETECTION_PPI_DETECTION,
|
|
DETECTION_PPE_DETECTION,
|
|
|
|
DETECTION_ZT2_MAGNETIC_SENCOR_COUNT,
|
|
DETECTION_ZT2_PPI_DETECTION,
|
|
DETECTION_ZT2_PPE_DETECTION,
|
|
|
|
DETECTION_PEQ1_DETECTION,
|
|
DETECTION_PEQ2_DETECTION,
|
|
|
|
DETECTION_MAX_DETECTION_ID
|
|
};
|
|
|
|
enum eDetectionFunctionID
|
|
{
|
|
DETECTION_FCT_FN,
|
|
DETECTION_FCT_PG,
|
|
DETECTION_FCT_PP,
|
|
DETECTION_FCT_PP2,
|
|
DETECTION_FCT_ZT1,
|
|
DETECTION_FCT_ZT2,
|
|
|
|
DETECTION_FCT_MAX_FCT
|
|
};
|
|
|
|
enum eDetectionFunctionMask
|
|
{
|
|
DETECTION_FCT_FN_MASK = 0x00000001,
|
|
DETECTION_FCT_PG_MASK = 0x00000002,
|
|
DETECTION_FCT_PP_MASK = 0x00000004,
|
|
DETECTION_FCT_PP2_MASK = 0x00000008,
|
|
DETECTION_FCT_ZT1_MASK = 0x00000010,
|
|
DETECTION_FCT_ZT2_MASK = 0x00000020
|
|
};
|
|
|
|
enum eTrainTypeID
|
|
{
|
|
TRAIN_TYPE_UNKNOWN,
|
|
TRAIN_TYPE_MR63_MR73,
|
|
TRAIN_TYPE_MPM10,
|
|
|
|
|
|
TRAIN_TYPE_MAX_ID
|
|
};
|
|
|
|
enum eOutilZTFlagsIndex
|
|
{
|
|
OUTILZT_FILE_PROTECTED_FLAG,
|
|
OUTILSZT_UNUSED_FLAG_2,
|
|
OUTILSZT_UNUSED_FLAG_3,
|
|
OUTILSZT_UNUSED_FLAG_4,
|
|
OUTILSZT_UNUSED_FLAG_5,
|
|
OUTILSZT_UNUSED_FLAG_6,
|
|
OUTILSZT_UNUSED_FLAG_7,
|
|
OUTILSZT_UNUSED_FLAG_8,
|
|
OUTILSZT_UNUSED_FLAG_9,
|
|
OUTILSZT_UNUSED_FLAG_10
|
|
};
|
|
|
|
enum eModbusCCTrainTypes
|
|
{
|
|
MODBUS_CC_TRAIN_TYPE_MR63 = 63,
|
|
MODBUS_CC_TRAIN_TYPE_MR73 = 73,
|
|
MODBUS_CC_TRAIN_TYPE_MPM10 = 10,
|
|
MODBUS_CC_TRAIN_TYPE_MAINTENANCE = 0,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE = 98,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT = 97,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED = 99,
|
|
MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE = 96,
|
|
|
|
MODBUS_CC_TRAIN_TYPE_MAX_VALUE
|
|
};
|
|
|
|
|
|
enum eZT1FlagsID
|
|
{
|
|
ZT1_INT_PG_OFFSET_FLAG_ID,
|
|
ZT1_EXT_PG_OFFSET_FLAG_ID,
|
|
ZT1_PG_TRESHOLD_VALUE_FLAG_ID,
|
|
ZT1_PG_CALIB_ON_FLAG_ID,
|
|
|
|
|
|
ZT1_MAX_FLAG_ID
|
|
};
|
|
|
|
enum eZTStatus
|
|
{
|
|
SB_ZT_ACTIVE_STATUS,
|
|
SB_ZT_INACTIVE_STATUS,
|
|
SB_ZT_NOT_PRESENT_STATUS,
|
|
SB_ZT_DISABLED_STATUS,
|
|
SB_ZT_MAX_STATUS
|
|
};
|
|
|
|
|
|
class CZTData
|
|
{
|
|
public:
|
|
CZTData();
|
|
|
|
|
|
|
|
unsigned int mCIZT2;
|
|
|
|
static const char *ErrorString[];
|
|
static const char *ShortErrorString[];
|
|
static const char* GetErrorString(unsigned int ErrorID);
|
|
static const char* GetShortErrorString(unsigned int ErrorID);
|
|
|
|
static const char *TrainTypeString[];
|
|
static const char *GetTrainTypeString(unsigned int TrainType);
|
|
static const char *GetModbusTrainTypeString(unsigned int TrainType);
|
|
|
|
};
|
|
|
|
//This class contains data from the ZT1 analysis thread
|
|
//that is periodically communicated to the main thread
|
|
class CZT1ThreadData
|
|
{
|
|
|
|
public:
|
|
~CZT1ThreadData();
|
|
qint64 mTimeStamp; //nanosecs
|
|
QDateTime mDateTime;
|
|
quint32 mS1;
|
|
quint32 mS2;
|
|
quint32 mPInt;
|
|
quint32 mPExt;
|
|
quint32 mFN;
|
|
quint32 mPG;
|
|
|
|
quint32 mBogie;
|
|
quint32 mRank;
|
|
quint32 mS1Count;
|
|
quint32 mS2Count;
|
|
quint32 mFNCount;
|
|
qint32 mPGExtValue;
|
|
qint32 mPGIntValue;
|
|
qreal mTrainSpeed;
|
|
quint32 mTrainType;
|
|
|
|
void operator=(CZT1ThreadData& a);
|
|
};
|
|
|
|
|
|
class CZT1FlagsData
|
|
{
|
|
public:
|
|
qint32 mIntPGOffset;
|
|
qint32 mExtPGOffset;
|
|
qint32 mPGTresholdValue;
|
|
qint32 mPGCalibrationON;
|
|
qint32 mAnalogTracePresent;
|
|
qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
|
|
qint32 mTrainCompo1;
|
|
qint32 mTrainCompo2;
|
|
qint32 mTrainCompo3;
|
|
qint32 mModbusTrainType;
|
|
qint32 mZT1ITI;
|
|
qint32 mZTDetectionsConfig;
|
|
qint32 mUnusedFlag14;
|
|
qint32 mUnusedFlag15;
|
|
qint32 mUnusedFlag16;
|
|
qint32 mUnusedFlag17;
|
|
qint32 mUnusedFlag18;
|
|
qint32 mUnusedFlag19;
|
|
qint32 mUnusedFlag20;
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source);
|
|
QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest);
|
|
|
|
class CZT1LogData
|
|
{
|
|
public:
|
|
CZT1LogData(CZT1ThreadData *ThreadData = 0);
|
|
~CZT1LogData();
|
|
|
|
QDateTime mDateTime;
|
|
qint64 mTimestamp;
|
|
quint32 mCIZT1;
|
|
quint32 mCDVApproach_ZT1;
|
|
quint32 mCDVARM_ZT1;
|
|
#ifdef USE_ANALOG_ACQUISITION
|
|
qint32 mAnalogData; //The analog data must be written or read to/from file manually (not part of the QStream << operator overloading)
|
|
#endif
|
|
|
|
CZT1ThreadData *mZT1ThreadData;
|
|
};
|
|
|
|
class CZT1Log
|
|
{
|
|
public:
|
|
// QList<CZT1LogData*> mZT1LogData;
|
|
QVector<CZT1LogData*> mZT1LogData;
|
|
CZT1FlagsData mZT1Flags;
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CZT1LogData &source);
|
|
QDataStream &operator>>(QDataStream &in, CZT1LogData &dest);
|
|
|
|
class CZT2ThreadData
|
|
{
|
|
public:
|
|
qint64 mTimeStamp;
|
|
quint32 mS1;
|
|
quint32 mPPInt;
|
|
quint32 mPPExt;
|
|
|
|
quint32 mBogie;
|
|
quint32 mRank;
|
|
quint32 mS1Count;
|
|
};
|
|
|
|
class CZTDetectionData
|
|
{
|
|
public:
|
|
|
|
qint64 mTimeStamp;
|
|
// QDateTime mDateTime;
|
|
quint32 mDetectionID;
|
|
quint32 mRank;
|
|
// quint32 mBogie;
|
|
|
|
};
|
|
QDataStream &operator<<(QDataStream &out, const CZTDetectionData &source);
|
|
QDataStream &operator>>(QDataStream &in, CZTDetectionData &dest);
|
|
|
|
class CZT2FlagsData
|
|
{
|
|
public:
|
|
qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
|
|
qint32 mTrainCompo1;
|
|
qint32 mTrainCompo2;
|
|
qint32 mTrainCompo3;
|
|
qint32 mModbusTrainType;
|
|
qint32 mZTDetectionsConfig;
|
|
qint32 mUnusedFlag7;
|
|
qint32 mUnusedFlag8;
|
|
qint32 mUnusedFlag9;
|
|
qint32 mUnusedFlag10;
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source);
|
|
QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest);
|
|
|
|
class CZT2LogData
|
|
{
|
|
public:
|
|
CZT2LogData(CZT2ThreadData *ThreadData = 0);
|
|
~CZT2LogData();
|
|
|
|
QDateTime mDateTime;
|
|
qint64 mTimestamp;
|
|
quint32 mCIZT2;
|
|
quint32 mCDVARM_ZT2;
|
|
quint32 mCDVApproach_ZT2;
|
|
|
|
CZT2ThreadData *mZT2ThreadData;
|
|
};
|
|
QDataStream &operator<<(QDataStream &out, const CZT2LogData &source);
|
|
QDataStream &operator>>(QDataStream &in, CZT2LogData &dest);
|
|
|
|
class CZT2Log
|
|
{
|
|
public:
|
|
QVector<CZT2LogData*> mZT2LogData;
|
|
CZT2FlagsData mZT2Flags;
|
|
};
|
|
|
|
|
|
class CZTDetectionConfig
|
|
{
|
|
public:
|
|
bool AnalysisActive;
|
|
bool TKActive;
|
|
};
|
|
|
|
class CZTDetectionFunctionConfig
|
|
{
|
|
public:
|
|
CZTDetectionFunctionConfig();
|
|
CZTDetectionConfig mZTDetectionConfig[DETECTION_FCT_MAX_FCT];
|
|
|
|
void operator=(CZTDetectionFunctionConfig& a);
|
|
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CZTDetectionFunctionConfig &source);
|
|
QDataStream &operator>>(QDataStream &in, CZTDetectionFunctionConfig &dest);
|
|
|
|
class CZTSettingsData
|
|
{
|
|
public:
|
|
CZTSettingsData();
|
|
|
|
CZTDetectionFunctionConfig *mDetectionFunctionSettings;
|
|
bool mAutoExportZT1CSV;
|
|
bool mAutoExportZT2CSV;
|
|
int mPGTreshold;
|
|
|
|
};
|
|
class CZTNetworkConfig
|
|
{
|
|
public:
|
|
int mZTID;
|
|
QString mIPAdress;
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CZTNetworkConfig &source);
|
|
QDataStream &operator>>(QDataStream &in, CZTNetworkConfig &dest);
|
|
|
|
class CSettingsData
|
|
{
|
|
public:
|
|
CSettingsData();
|
|
|
|
QString mDataSourceDirectoryPath;
|
|
QList<CZTNetworkConfig> mNetworkCfgList;
|
|
|
|
};
|
|
|
|
class CZTPGCalibrationData
|
|
{
|
|
public:
|
|
qint64 mTimestamp;
|
|
int mTrainNbr;
|
|
qint32 mPGExtValue;
|
|
qint32 mPGIntValue;
|
|
};
|
|
|
|
class CZTLogFileInfo
|
|
{
|
|
public:
|
|
QDateTime mStartDateTime;
|
|
QDateTime mEndDateTime;
|
|
QString mStationName;
|
|
int mZTStationID;
|
|
QString mZTLogFilePath;
|
|
};
|
|
|
|
#endif // ZTDATA_H
|