Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

418 рядки
8.9 KiB

  1. /*******************************************************************************
  2. * *
  3. * Société de Transports de Montréal. *
  4. * 2012 *
  5. * *
  6. * Projet Zones Tests *
  7. * *
  8. * *
  9. * *
  10. *******************************************************************************/
  11. /*
  12. Description:
  13. Ces classes contiennent l'état de la Zone Tests et les informations nécessaires
  14. au fonctionnement des machines à états.
  15. */
  16. /* ************************************************************************** */
  17. /* Revision:
  18. ### 20130501 JFM
  19. Verision d'origine.
  20. ### YYYYMMDD Description du besoin ou du bug
  21. Description du changement.
  22. */
  23. /* ************************************************************************** */
  24. #ifndef ZTDATA_H
  25. #define ZTDATA_H
  26. #include "GlobalDefine.h"
  27. #include <QObject>
  28. #include <QTime>
  29. #include <QDataStream>
  30. #include <QVector>
  31. enum eZTLOGType
  32. {
  33. ZT1_LOG_TYPE,
  34. ZT2_LOG_TYPE,
  35. UNKNOWN_LOG_TYPE
  36. };
  37. enum eCDVState
  38. {
  39. CDV_STATE_OCCUPIED,
  40. CDV_STATE_FREE,
  41. CDV_STATE_ITI_CMD,
  42. CDV_STATE_UNKNOWN
  43. };
  44. enum eSwitchCVDPosition
  45. {
  46. SWITCH_CDV_NORMAL_POSITION,
  47. SWITCH_CDV_REVERSE_POSITION,
  48. SWITCH_CDV_UNKNOWN_POSITION
  49. };
  50. enum eCDVType
  51. {
  52. CDV_NORMAL_TYPE,
  53. CDV_SWITCH_TYPE
  54. };
  55. enum eZTITI
  56. {
  57. ZT_PRIMARY_ITI, // Itinéraire 10/12 ou en voie normale
  58. ZT_SECONDARY_ITI, // Itinéraire 10/22 ou autre changement de voie (quai banalisé)
  59. ZT_MAX_ITI
  60. };
  61. enum eDetectionID
  62. {
  63. DETECTION_MAGNETIC_SENSOR_COUNT,
  64. DETECTION_FN_DETECTION,
  65. DETECTION_PG_DETECTION,
  66. DETECTION_PPI_DETECTION,
  67. DETECTION_PPE_DETECTION,
  68. DETECTION_ZT2_MAGNETIC_SENCOR_COUNT,
  69. DETECTION_ZT2_PPI_DETECTION,
  70. DETECTION_ZT2_PPE_DETECTION,
  71. DETECTION_PEQ1_DETECTION,
  72. DETECTION_PEQ2_DETECTION,
  73. DETECTION_MAX_DETECTION_ID
  74. };
  75. enum eDetectionFunctionID
  76. {
  77. DETECTION_FCT_FN,
  78. DETECTION_FCT_PG,
  79. DETECTION_FCT_PP,
  80. DETECTION_FCT_PP2,
  81. DETECTION_FCT_ZT1,
  82. DETECTION_FCT_ZT2,
  83. DETECTION_FCT_MAX_FCT
  84. };
  85. enum eDetectionFunctionMask
  86. {
  87. DETECTION_FCT_FN_MASK = 0x00000001,
  88. DETECTION_FCT_PG_MASK = 0x00000002,
  89. DETECTION_FCT_PP_MASK = 0x00000004,
  90. DETECTION_FCT_PP2_MASK = 0x00000008,
  91. DETECTION_FCT_ZT1_MASK = 0x00000010,
  92. DETECTION_FCT_ZT2_MASK = 0x00000020
  93. };
  94. enum eTrainTypeID
  95. {
  96. TRAIN_TYPE_UNKNOWN,
  97. TRAIN_TYPE_MR63_MR73,
  98. TRAIN_TYPE_MPM10,
  99. TRAIN_TYPE_MAX_ID
  100. };
  101. enum eOutilZTFlagsIndex
  102. {
  103. OUTILZT_FILE_PROTECTED_FLAG,
  104. OUTILSZT_UNUSED_FLAG_2,
  105. OUTILSZT_UNUSED_FLAG_3,
  106. OUTILSZT_UNUSED_FLAG_4,
  107. OUTILSZT_UNUSED_FLAG_5,
  108. OUTILSZT_UNUSED_FLAG_6,
  109. OUTILSZT_UNUSED_FLAG_7,
  110. OUTILSZT_UNUSED_FLAG_8,
  111. OUTILSZT_UNUSED_FLAG_9,
  112. OUTILSZT_UNUSED_FLAG_10
  113. };
  114. enum eModbusCCTrainTypes
  115. {
  116. MODBUS_CC_TRAIN_TYPE_MR63 = 63,
  117. MODBUS_CC_TRAIN_TYPE_MR73 = 73,
  118. MODBUS_CC_TRAIN_TYPE_MPM10 = 10,
  119. MODBUS_CC_TRAIN_TYPE_MAINTENANCE = 0,
  120. MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE = 98,
  121. MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT = 97,
  122. MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED = 99,
  123. MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE = 96,
  124. MODBUS_CC_TRAIN_TYPE_MAX_VALUE
  125. };
  126. enum eZT1FlagsID
  127. {
  128. ZT1_INT_PG_OFFSET_FLAG_ID,
  129. ZT1_EXT_PG_OFFSET_FLAG_ID,
  130. ZT1_PG_TRESHOLD_VALUE_FLAG_ID,
  131. ZT1_PG_CALIB_ON_FLAG_ID,
  132. ZT1_MAX_FLAG_ID
  133. };
  134. enum eZTStatus
  135. {
  136. SB_ZT_ACTIVE_STATUS,
  137. SB_ZT_INACTIVE_STATUS,
  138. SB_ZT_NOT_PRESENT_STATUS,
  139. SB_ZT_DISABLED_STATUS,
  140. SB_ZT_MAX_STATUS
  141. };
  142. class CZTData
  143. {
  144. public:
  145. CZTData();
  146. unsigned int mCIZT2;
  147. static const char *ErrorString[];
  148. static const char *ShortErrorString[];
  149. static const char* GetErrorString(unsigned int ErrorID);
  150. static const char* GetShortErrorString(unsigned int ErrorID);
  151. static const char *TrainTypeString[];
  152. static const char *GetTrainTypeString(unsigned int TrainType);
  153. static const char *GetModbusTrainTypeString(unsigned int TrainType);
  154. };
  155. //This class contains data from the ZT1 analysis thread
  156. //that is periodically communicated to the main thread
  157. class CZT1ThreadData
  158. {
  159. public:
  160. ~CZT1ThreadData();
  161. qint64 mTimeStamp; //nanosecs
  162. QDateTime mDateTime;
  163. quint32 mS1;
  164. quint32 mS2;
  165. quint32 mPInt;
  166. quint32 mPExt;
  167. quint32 mFN;
  168. quint32 mPG;
  169. quint32 mBogie;
  170. quint32 mRank;
  171. quint32 mS1Count;
  172. quint32 mS2Count;
  173. quint32 mFNCount;
  174. qint32 mPGExtValue;
  175. qint32 mPGIntValue;
  176. qreal mTrainSpeed;
  177. quint32 mTrainType;
  178. void operator=(CZT1ThreadData& a);
  179. };
  180. class CZT1FlagsData
  181. {
  182. public:
  183. qint32 mIntPGOffset;
  184. qint32 mExtPGOffset;
  185. qint32 mPGTresholdValue;
  186. qint32 mPGCalibrationON;
  187. qint32 mAnalogTracePresent;
  188. qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
  189. qint32 mTrainCompo1;
  190. qint32 mTrainCompo2;
  191. qint32 mTrainCompo3;
  192. qint32 mModbusTrainType;
  193. qint32 mZT1ITI;
  194. qint32 mZTDetectionsConfig;
  195. qint32 mUnusedFlag14;
  196. qint32 mUnusedFlag15;
  197. qint32 mUnusedFlag16;
  198. qint32 mUnusedFlag17;
  199. qint32 mUnusedFlag18;
  200. qint32 mUnusedFlag19;
  201. qint32 mUnusedFlag20;
  202. };
  203. QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source);
  204. QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest);
  205. class CZT1LogData
  206. {
  207. public:
  208. CZT1LogData(CZT1ThreadData *ThreadData = 0);
  209. ~CZT1LogData();
  210. QDateTime mDateTime;
  211. qint64 mTimestamp;
  212. quint32 mCIZT1;
  213. quint32 mCDVApproach_ZT1;
  214. quint32 mCDVARM_ZT1;
  215. #ifdef USE_ANALOG_ACQUISITION
  216. qint32 mAnalogData; //The analog data must be written or read to/from file manually (not part of the QStream << operator overloading)
  217. #endif
  218. CZT1ThreadData *mZT1ThreadData;
  219. };
  220. class CZT1Log
  221. {
  222. public:
  223. // QList<CZT1LogData*> mZT1LogData;
  224. QVector<CZT1LogData*> mZT1LogData;
  225. CZT1FlagsData mZT1Flags;
  226. };
  227. QDataStream &operator<<(QDataStream &out, const CZT1LogData &source);
  228. QDataStream &operator>>(QDataStream &in, CZT1LogData &dest);
  229. class CZT2ThreadData
  230. {
  231. public:
  232. qint64 mTimeStamp;
  233. quint32 mS1;
  234. quint32 mPPInt;
  235. quint32 mPPExt;
  236. quint32 mBogie;
  237. quint32 mRank;
  238. quint32 mS1Count;
  239. };
  240. class CZTDetectionData
  241. {
  242. public:
  243. qint64 mTimeStamp;
  244. // QDateTime mDateTime;
  245. quint32 mDetectionID;
  246. quint32 mRank;
  247. // quint32 mBogie;
  248. };
  249. QDataStream &operator<<(QDataStream &out, const CZTDetectionData &source);
  250. QDataStream &operator>>(QDataStream &in, CZTDetectionData &dest);
  251. class CZT2FlagsData
  252. {
  253. public:
  254. qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
  255. qint32 mTrainCompo1;
  256. qint32 mTrainCompo2;
  257. qint32 mTrainCompo3;
  258. qint32 mModbusTrainType;
  259. qint32 mZTDetectionsConfig;
  260. qint32 mUnusedFlag7;
  261. qint32 mUnusedFlag8;
  262. qint32 mUnusedFlag9;
  263. qint32 mUnusedFlag10;
  264. };
  265. QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source);
  266. QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest);
  267. class CZT2LogData
  268. {
  269. public:
  270. CZT2LogData(CZT2ThreadData *ThreadData = 0);
  271. ~CZT2LogData();
  272. QDateTime mDateTime;
  273. qint64 mTimestamp;
  274. quint32 mCIZT2;
  275. quint32 mCDVARM_ZT2;
  276. quint32 mCDVApproach_ZT2;
  277. CZT2ThreadData *mZT2ThreadData;
  278. };
  279. QDataStream &operator<<(QDataStream &out, const CZT2LogData &source);
  280. QDataStream &operator>>(QDataStream &in, CZT2LogData &dest);
  281. class CZT2Log
  282. {
  283. public:
  284. QVector<CZT2LogData*> mZT2LogData;
  285. CZT2FlagsData mZT2Flags;
  286. };
  287. class CZTDetectionConfig
  288. {
  289. public:
  290. bool AnalysisActive;
  291. bool TKActive;
  292. };
  293. class CZTDetectionFunctionConfig
  294. {
  295. public:
  296. CZTDetectionFunctionConfig();
  297. CZTDetectionConfig mZTDetectionConfig[DETECTION_FCT_MAX_FCT];
  298. void operator=(CZTDetectionFunctionConfig& a);
  299. };
  300. QDataStream &operator<<(QDataStream &out, const CZTDetectionFunctionConfig &source);
  301. QDataStream &operator>>(QDataStream &in, CZTDetectionFunctionConfig &dest);
  302. class CZTSettingsData
  303. {
  304. public:
  305. CZTSettingsData();
  306. CZTDetectionFunctionConfig *mDetectionFunctionSettings;
  307. bool mAutoExportZT1CSV;
  308. bool mAutoExportZT2CSV;
  309. int mPGTreshold;
  310. };
  311. class CZTNetworkConfig
  312. {
  313. public:
  314. int mZTID;
  315. QString mIPAdress;
  316. };
  317. QDataStream &operator<<(QDataStream &out, const CZTNetworkConfig &source);
  318. QDataStream &operator>>(QDataStream &in, CZTNetworkConfig &dest);
  319. class CSettingsData
  320. {
  321. public:
  322. CSettingsData();
  323. QString mDataSourceDirectoryPath;
  324. QList<CZTNetworkConfig> mNetworkCfgList;
  325. };
  326. class CZTPGCalibrationData
  327. {
  328. public:
  329. qint64 mTimestamp;
  330. int mTrainNbr;
  331. qint32 mPGExtValue;
  332. qint32 mPGIntValue;
  333. };
  334. class CZTLogFileInfo
  335. {
  336. public:
  337. QDateTime mStartDateTime;
  338. QDateTime mEndDateTime;
  339. QString mStationName;
  340. int mZTStationID;
  341. QString mZTLogFilePath;
  342. };
  343. #endif // ZTDATA_H