/******************************************************************************* * * * 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 #include #include #include 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 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 mZT1LogData; QVector 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 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 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