/******************************************************************************* * * * Société de Transports de Montréal. * * 2012 * * * * Projet Zones Tests * * * * * * * *******************************************************************************/ /* Description: Classe fourre-tout qui contient les différentes structures données utilisées un peu partout dans le programme. */ /* ************************************************************************** */ /* Revision: ### YYYMMDD JFM Verision d'origine. ### YYYYMMDD Description du besoin ou du bug Description du changement. */ /* ************************************************************************** */ #include "ZTData.h" const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10", "MR63", "MR73", "Véhicule Travaux"}; CZTData::CZTData() { } const char * CZTData::ErrorString[] = {"Erreur de comptage S1-S2", "Déclenchement frotteur négatif", "Déclenchement pneu de guidage", "Déclenchement pneu porteur intérieur", "Déclenchement pneu porteur extérieur", "Erreur de comptage ZT2", "Déclenchement pneu porteur intérieur ZT2", "Déclenchement pneu porteur extérieur ZT2", "Panne équipement ZT1", "Panne équipement ZT2", }; const char * CZTData::ShortErrorString[] = {"V00", "DFN", "DPG", "DPPI", "DPPE", "V002", "DPPI2", "DPPE2", "PEQ1", "PEQ2"}; const char* CZTData::GetErrorString(unsigned int ErrorID) { if(ErrorID >= DETECTION_MAX_DETECTION_ID) ErrorID = 0; return ErrorString[ErrorID]; } const char* CZTData::GetShortErrorString(unsigned int ErrorID) { if(ErrorID >= DETECTION_MAX_DETECTION_ID) ErrorID = 0; return ShortErrorString[ErrorID]; } const char* CZTData::GetTrainTypeString(unsigned int TrainType) { if(TrainType >= TRAIN_TYPE_MAX_ID) TrainType = TRAIN_TYPE_UNKNOWN; return TrainTypeString[TrainType]; } CZT1LogData::CZT1LogData(CZT1ThreadData *ThreadData): mZT1ThreadData(ThreadData) { } CZT1LogData::~CZT1LogData() { if(mZT1ThreadData != 0) delete mZT1ThreadData; } CZT1ThreadData::~CZT1ThreadData() { } void CZT1ThreadData::operator =(CZT1ThreadData& TD) { mTimeStamp = TD.mTimeStamp; mDateTime = TD.mDateTime; mS1 = TD.mS1; mS2 = TD.mS2; mPInt = TD.mPInt; mPExt = TD.mPExt; mFN = TD.mFN; mPG = TD.mPG; mBogie = TD.mBogie; mRank = TD.mRank; mS1Count = TD.mS1Count; mS2Count = TD.mS2Count; mFNCount = TD.mFNCount; mPGExtValue = TD.mPGExtValue; mPGIntValue = TD.mPGIntValue; mTrainSpeed = TD.mTrainSpeed; mTrainType = TD.mTrainType; } QDataStream &operator<<(QDataStream &out, const CZT1FlagsData &source) { out << source.mExtPGOffset << source.mIntPGOffset << source.mPGCalibrationON << source.mPGTresholdValue << source.mAnalogTracePresent << source.mIsProblematicPassage; //do not save mPEQ1Type return out; } QDataStream &operator>>(QDataStream &in, CZT1FlagsData &dest) { in >> dest.mExtPGOffset >> dest.mIntPGOffset >> dest.mPGCalibrationON >> dest.mPGTresholdValue >> dest.mAnalogTracePresent >> dest.mIsProblematicPassage; //do not restore mPEQ1Type return in; } QDataStream &operator<<(QDataStream &out, const CZT2FlagsData &source) { out << source.mIsProblematicPassage; return out; } QDataStream &operator>>(QDataStream &in, CZT2FlagsData &dest) { in >> dest.mIsProblematicPassage; return in; } QDataStream& operator<<(QDataStream &out, const CZT1LogData &source) { quint32 ThreadDataValid = 0; if(source.mZT1ThreadData != 0) ThreadDataValid = 1; out << source.mDateTime << source.mTimestamp << source.mCIZT1 << source.mCDVApproach_ZT1 << source.mCDVARM_ZT1 << ThreadDataValid; if(ThreadDataValid == 1) { out << source.mZT1ThreadData->mS1 << source.mZT1ThreadData->mS2 << source.mZT1ThreadData->mFN << source.mZT1ThreadData->mPInt << source.mZT1ThreadData->mPExt << source.mZT1ThreadData->mPG << source.mZT1ThreadData->mTrainSpeed << source.mZT1ThreadData->mBogie << source.mZT1ThreadData->mRank << source.mZT1ThreadData->mPGExtValue << source.mZT1ThreadData->mPGIntValue << source.mZT1ThreadData->mTrainType << source.mZT1ThreadData->mS1Count << source.mZT1ThreadData->mS2Count; } return out; } QDataStream &operator>>(QDataStream &in, CZT1LogData &dest) { quint32 ThreadValid; in >> dest.mDateTime >> dest.mTimestamp >> dest.mCIZT1 >> dest.mCDVApproach_ZT1 >> dest.mCDVARM_ZT1 >> ThreadValid; if(ThreadValid == 1) { dest.mZT1ThreadData = new CZT1ThreadData(); in >> dest.mZT1ThreadData->mS1 >> dest.mZT1ThreadData->mS2 >> dest.mZT1ThreadData->mFN >> dest.mZT1ThreadData->mPInt >> dest.mZT1ThreadData->mPExt >> dest.mZT1ThreadData->mPG >> dest.mZT1ThreadData->mTrainSpeed >> dest.mZT1ThreadData->mBogie >> dest.mZT1ThreadData->mRank >> dest.mZT1ThreadData->mPGExtValue >> dest.mZT1ThreadData->mPGIntValue >> dest.mZT1ThreadData->mTrainType >>dest.mZT1ThreadData->mS1Count >>dest.mZT1ThreadData->mS2Count; } return in; } QDataStream &operator<<(QDataStream &out, const CZTDetectionData &source) { out << source.mTimeStamp << source.mRank << source.mDetectionID; return out; } QDataStream &operator>>(QDataStream &in, CZTDetectionData &dest) { in >> dest.mTimeStamp >> dest.mRank >> dest.mDetectionID; return in; } void CZTDetectionData::operator =(const CZTDetectionData& DT) { mDetectionID = DT.mDetectionID; mRank = DT.mRank; mTimeStamp = DT.mTimeStamp; } CZTDetectionData::CZTDetectionData() { mTimeStamp = 0; mDetectionID = 0; mRank = 0; } CZT2LogData::CZT2LogData(CZT2ThreadData *ThreadData): mZT2ThreadData(ThreadData) { } CZT2LogData::~CZT2LogData() { if(mZT2ThreadData != 0) delete mZT2ThreadData; } QDataStream& operator<<(QDataStream &out, const CZT2LogData &source) { quint32 ThreadDataValid = 0; if(source.mZT2ThreadData != 0) ThreadDataValid = 1; out << source.mDateTime << source.mTimestamp << source.mCIZT2 << source.mCDVARM_ZT2 << source.mCDVApproach_ZT2 << ThreadDataValid; if(ThreadDataValid == 1) { out << source.mZT2ThreadData->mS1 << source.mZT2ThreadData->mPPInt << source.mZT2ThreadData->mPPExt << source.mZT2ThreadData->mBogie << source.mZT2ThreadData->mRank << source.mZT2ThreadData->mS1Count; } return out; } QDataStream &operator>>(QDataStream &in, CZT2LogData &dest) { quint32 ThreadValid; in >> dest.mDateTime >> dest.mTimestamp >> dest.mCIZT2 >> dest.mCDVARM_ZT2 >> dest.mCDVApproach_ZT2 >> ThreadValid; if(ThreadValid == 1) { dest.mZT2ThreadData = new CZT2ThreadData(); in >> dest.mZT2ThreadData->mS1 >> dest.mZT2ThreadData->mPPInt >> dest.mZT2ThreadData->mPPExt >> dest.mZT2ThreadData->mBogie >> dest.mZT2ThreadData->mRank >> dest.mZT2ThreadData->mS1Count; } return in; } CZTDetectionFunctionConfig::CZTDetectionFunctionConfig() { for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++) { mZTDetectionConfig[i].AnalysisActive = false; mZTDetectionConfig[i].TKActive = false; } } void CZTDetectionFunctionConfig::operator =(CZTDetectionFunctionConfig& DF) { for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++) { mZTDetectionConfig[i].AnalysisActive = DF.mZTDetectionConfig[i].AnalysisActive; mZTDetectionConfig[i].TKActive = DF.mZTDetectionConfig[i].TKActive; } } QDataStream &operator<<(QDataStream &out, const CZTDetectionFunctionConfig &source) { for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++) { out << source.mZTDetectionConfig[i].AnalysisActive << source.mZTDetectionConfig[i].TKActive; } return out; } QDataStream &operator>>(QDataStream &in, CZTDetectionFunctionConfig &dest) { for(int i = 0; i < DETECTION_FCT_MAX_FCT; i++) { in >> dest.mZTDetectionConfig[i].AnalysisActive >> dest.mZTDetectionConfig[i].TKActive; } return in; } CZTSettingsData::CZTSettingsData() { mDetectionFunctionSettings = new CZTDetectionFunctionConfig(); mAutoExportZT1CSV = false; mAutoExportZT2CSV = false; }