Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

408 Zeilen
8.6 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 eTrainTypeID
  86. {
  87. TRAIN_TYPE_UNKNOWN,
  88. TRAIN_TYPE_MR63_MR73,
  89. TRAIN_TYPE_MPM10,
  90. TRAIN_TYPE_MAX_ID
  91. };
  92. enum eOutilZTFlagsIndex
  93. {
  94. OUTILZT_FILE_PROTECTED_FLAG,
  95. OUTILSZT_UNUSED_FLAG_2,
  96. OUTILSZT_UNUSED_FLAG_3,
  97. OUTILSZT_UNUSED_FLAG_4,
  98. OUTILSZT_UNUSED_FLAG_5,
  99. OUTILSZT_UNUSED_FLAG_6,
  100. OUTILSZT_UNUSED_FLAG_7,
  101. OUTILSZT_UNUSED_FLAG_8,
  102. OUTILSZT_UNUSED_FLAG_9,
  103. OUTILSZT_UNUSED_FLAG_10
  104. };
  105. enum eModbusCCTrainTypes
  106. {
  107. MODBUS_CC_TRAIN_TYPE_MR63 = 63,
  108. MODBUS_CC_TRAIN_TYPE_MR73 = 73,
  109. MODBUS_CC_TRAIN_TYPE_MPM10 = 10,
  110. MODBUS_CC_TRAIN_TYPE_MAINTENANCE = 0,
  111. MODBUS_CC_TRAIN_TYPE_INVALID_ATS_OFFLINE = 98,
  112. MODBUS_CC_TRAIN_TYPE_INVALID_SERVICE_REBOOT = 97,
  113. MODBUS_CC_TRAIN_TYPE_INVALID_NOT_UPDATED = 99,
  114. MODBUS_CC_TRAIN_TYPE_INVALID_SACL_OFFLINE = 96,
  115. MODBUS_CC_TRAIN_TYPE_MAX_VALUE
  116. };
  117. enum eZT1FlagsID
  118. {
  119. ZT1_INT_PG_OFFSET_FLAG_ID,
  120. ZT1_EXT_PG_OFFSET_FLAG_ID,
  121. ZT1_PG_TRESHOLD_VALUE_FLAG_ID,
  122. ZT1_PG_CALIB_ON_FLAG_ID,
  123. ZT1_MAX_FLAG_ID
  124. };
  125. enum eZTStatus
  126. {
  127. SB_ZT_ACTIVE_STATUS,
  128. SB_ZT_INACTIVE_STATUS,
  129. SB_ZT_NOT_PRESENT_STATUS,
  130. SB_ZT_DISABLED_STATUS,
  131. SB_ZT_MAX_STATUS
  132. };
  133. class CZTData
  134. {
  135. public:
  136. CZTData();
  137. unsigned int mCIZT2;
  138. static const char *ErrorString[];
  139. static const char *ShortErrorString[];
  140. static const char* GetErrorString(unsigned int ErrorID);
  141. static const char* GetShortErrorString(unsigned int ErrorID);
  142. static const char *TrainTypeString[];
  143. static const char *GetTrainTypeString(unsigned int TrainType);
  144. static const char *GetModbusTrainTypeString(unsigned int TrainType);
  145. };
  146. //This class contains data from the ZT1 analysis thread
  147. //that is periodically communicated to the main thread
  148. class CZT1ThreadData
  149. {
  150. public:
  151. ~CZT1ThreadData();
  152. qint64 mTimeStamp; //nanosecs
  153. QDateTime mDateTime;
  154. quint32 mS1;
  155. quint32 mS2;
  156. quint32 mPInt;
  157. quint32 mPExt;
  158. quint32 mFN;
  159. quint32 mPG;
  160. quint32 mBogie;
  161. quint32 mRank;
  162. quint32 mS1Count;
  163. quint32 mS2Count;
  164. quint32 mFNCount;
  165. qint32 mPGExtValue;
  166. qint32 mPGIntValue;
  167. qreal mTrainSpeed;
  168. quint32 mTrainType;
  169. void operator=(CZT1ThreadData& a);
  170. };
  171. class CZT1FlagsData
  172. {
  173. public:
  174. qint32 mIntPGOffset;
  175. qint32 mExtPGOffset;
  176. qint32 mPGTresholdValue;
  177. qint32 mPGCalibrationON;
  178. qint32 mAnalogTracePresent;
  179. qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
  180. qint32 mTrainCompo1;
  181. qint32 mTrainCompo2;
  182. qint32 mTrainCompo3;
  183. qint32 mModbusTrainType;
  184. qint32 mZT1ITI;
  185. qint32 mUnusedFlag13;
  186. qint32 mUnusedFlag14;
  187. qint32 mUnusedFlag15;
  188. qint32 mUnusedFlag16;
  189. qint32 mUnusedFlag17;
  190. qint32 mUnusedFlag18;
  191. qint32 mUnusedFlag19;
  192. qint32 mUnusedFlag20;
  193. };
  194. QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source);
  195. QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest);
  196. class CZT1LogData
  197. {
  198. public:
  199. CZT1LogData(CZT1ThreadData *ThreadData = 0);
  200. ~CZT1LogData();
  201. QDateTime mDateTime;
  202. qint64 mTimestamp;
  203. quint32 mCIZT1;
  204. quint32 mCDVApproach_ZT1;
  205. quint32 mCDVARM_ZT1;
  206. #ifdef USE_ANALOG_ACQUISITION
  207. qint32 mAnalogData; //The analog data must be written or read to/from file manually (not part of the QStream << operator overloading)
  208. #endif
  209. CZT1ThreadData *mZT1ThreadData;
  210. };
  211. class CZT1Log
  212. {
  213. public:
  214. // QList<CZT1LogData*> mZT1LogData;
  215. QVector<CZT1LogData*> mZT1LogData;
  216. CZT1FlagsData mZT1Flags;
  217. };
  218. QDataStream &operator<<(QDataStream &out, const CZT1LogData &source);
  219. QDataStream &operator>>(QDataStream &in, CZT1LogData &dest);
  220. class CZT2ThreadData
  221. {
  222. public:
  223. qint64 mTimeStamp;
  224. quint32 mS1;
  225. quint32 mPPInt;
  226. quint32 mPPExt;
  227. quint32 mBogie;
  228. quint32 mRank;
  229. quint32 mS1Count;
  230. };
  231. class CZTDetectionData
  232. {
  233. public:
  234. qint64 mTimeStamp;
  235. // QDateTime mDateTime;
  236. quint32 mDetectionID;
  237. quint32 mRank;
  238. // quint32 mBogie;
  239. };
  240. QDataStream &operator<<(QDataStream &out, const CZTDetectionData &source);
  241. QDataStream &operator>>(QDataStream &in, CZTDetectionData &dest);
  242. class CZT2FlagsData
  243. {
  244. public:
  245. qint32 mIsProblematicPassage; //This flag will be set if problems have been detected but not sent to PCC due to PURE comitee rules.
  246. qint32 mTrainCompo1;
  247. qint32 mTrainCompo2;
  248. qint32 mTrainCompo3;
  249. qint32 mModbusTrainType;
  250. qint32 mUnusedFlag6;
  251. qint32 mUnusedFlag7;
  252. qint32 mUnusedFlag8;
  253. qint32 mUnusedFlag9;
  254. qint32 mUnusedFlag10;
  255. };
  256. QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source);
  257. QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest);
  258. class CZT2LogData
  259. {
  260. public:
  261. CZT2LogData(CZT2ThreadData *ThreadData = 0);
  262. ~CZT2LogData();
  263. QDateTime mDateTime;
  264. qint64 mTimestamp;
  265. quint32 mCIZT2;
  266. quint32 mCDVARM_ZT2;
  267. quint32 mCDVApproach_ZT2;
  268. CZT2ThreadData *mZT2ThreadData;
  269. };
  270. QDataStream &operator<<(QDataStream &out, const CZT2LogData &source);
  271. QDataStream &operator>>(QDataStream &in, CZT2LogData &dest);
  272. class CZT2Log
  273. {
  274. public:
  275. QVector<CZT2LogData*> mZT2LogData;
  276. CZT2FlagsData mZT2Flags;
  277. };
  278. class CZTDetectionConfig
  279. {
  280. public:
  281. bool AnalysisActive;
  282. bool TKActive;
  283. };
  284. class CZTDetectionFunctionConfig
  285. {
  286. public:
  287. CZTDetectionFunctionConfig();
  288. CZTDetectionConfig mZTDetectionConfig[DETECTION_FCT_MAX_FCT];
  289. void operator=(CZTDetectionFunctionConfig& a);
  290. };
  291. QDataStream &operator<<(QDataStream &out, const CZTDetectionFunctionConfig &source);
  292. QDataStream &operator>>(QDataStream &in, CZTDetectionFunctionConfig &dest);
  293. class CZTSettingsData
  294. {
  295. public:
  296. CZTSettingsData();
  297. CZTDetectionFunctionConfig *mDetectionFunctionSettings;
  298. bool mAutoExportZT1CSV;
  299. bool mAutoExportZT2CSV;
  300. int mPGTreshold;
  301. };
  302. class CZTNetworkConfig
  303. {
  304. public:
  305. int mZTID;
  306. QString mIPAdress;
  307. };
  308. QDataStream &operator<<(QDataStream &out, const CZTNetworkConfig &source);
  309. QDataStream &operator>>(QDataStream &in, CZTNetworkConfig &dest);
  310. class CSettingsData
  311. {
  312. public:
  313. CSettingsData();
  314. QString mDataSourceDirectoryPath;
  315. QList<CZTNetworkConfig> mNetworkCfgList;
  316. };
  317. class CZTPGCalibrationData
  318. {
  319. public:
  320. qint64 mTimestamp;
  321. int mTrainNbr;
  322. qint32 mPGExtValue;
  323. qint32 mPGIntValue;
  324. };
  325. class CZTLogFileInfo
  326. {
  327. public:
  328. QDateTime mStartDateTime;
  329. QDateTime mEndDateTime;
  330. QString mStationName;
  331. int mZTStationID;
  332. QString mZTLogFilePath;
  333. };
  334. #endif // ZTDATA_H