150 lines
4.0 KiB
C++
150 lines
4.0 KiB
C++
#ifndef TCPPROTOCOL_H
|
|
#define TCPPROTOCOL_H
|
|
|
|
#include "GlobalDefine.h"
|
|
#include <QByteArray>
|
|
#include <QDateTime>
|
|
|
|
#define TCP_PROTOCOL_HEADER (quint32)0xDEADCAFE
|
|
|
|
class CTCPZTStatus
|
|
{
|
|
public:
|
|
quint32 mZT1Status; //
|
|
quint32 mZT2Status;
|
|
quint32 mNbPass;
|
|
quint32 mNbTrigs;
|
|
|
|
QDateTime mZTStartDateTime;
|
|
QDateTime mActualDateTime;
|
|
|
|
qint32 mPGTreshold;
|
|
|
|
bool mModeMaintenanceON;
|
|
bool mCalibModeON;
|
|
|
|
bool mFNTKActive;
|
|
bool mFNAnalysisActive;
|
|
bool mPGTKActive;
|
|
bool mPGAnalysisActive;
|
|
bool mPP1TKActive;
|
|
bool mPP1AnalysisActive;
|
|
bool mPP2TKActive;
|
|
bool mPP2AnalysisActive;
|
|
bool mZT1TKActive;
|
|
bool mZT1AnalysisActive;
|
|
bool mZT2TKActive;
|
|
bool mZT2AnalysisActive;
|
|
|
|
bool mUSBKeyConnected;
|
|
};
|
|
|
|
QDataStream &operator<<(QDataStream &out, const CTCPZTStatus &source);
|
|
//QDataStream &operator>>(QDataStream &in, CTCPZTStatus &dest);
|
|
|
|
class CTCPProtocol
|
|
{
|
|
public:
|
|
|
|
typedef enum
|
|
{
|
|
TCP_MSG_HEARTBEAT_REQUEST,
|
|
TCP_MSG_HEARTBEAT_RESPONSE,
|
|
TCP_MSG_STATION_NAME_REQUEST,
|
|
TCP_MSG_STATION_NAME_RESPONSE,
|
|
TCP_MSG_ZT_STATUS_REQUEST,
|
|
TCP_MSG_ZT_STATUS_RESPONSE,
|
|
TCP_MSG_ZTLOG_DOWNLOAD_REQUEST,
|
|
TCP_MSG_ZTLOG_DOWNLOAD_RESPONSE,
|
|
|
|
TCP_MSG_TRAINLOGS_DOWNLOAD_REQUEST,
|
|
TCP_MSG_TRAINSLOGS_DOWNLOAD_ACK,
|
|
TCP_MSG_TRAINLOG_FILE_DATA,
|
|
TCP_MSG_TRAINLOG_FILE_DATA_ACK,
|
|
TCP_MSG_TRAINLOGS_DOWNLOAD_FINISHED,
|
|
TCP_MSG_DELETE_ZTLOG_REQUEST,
|
|
TCP_MSG_DELETE_ZTLOG_ACK,
|
|
TCP_MSG_SET_ZT_FUNCTIONS,
|
|
TCP_MSG_SET_ZT_FUNCTIONS_ACK,
|
|
|
|
TCP_MSG_UNKNOWN
|
|
}eTCPMessage;
|
|
|
|
typedef enum
|
|
{
|
|
TCP_PROTOCOL_GET_HEADER_STATE,
|
|
TCP_PROTOCOL_GET_MSG_STATE,
|
|
TCP_PROTOCOL_GET_DATASIZE_STATE,
|
|
TCP_PROTOCOL_GET_DATA_STATE
|
|
}eTCPProtocolState;
|
|
|
|
typedef enum
|
|
{
|
|
TCP_PROTOCOL_NACK,
|
|
TCP_PROTOCOL_ACK,
|
|
TCP_PROTOCOL_NACK_ABORT,
|
|
TCP_PROTOCOL_INVALID_ACK
|
|
}eTCPProtocolAcknowledge;
|
|
|
|
CTCPProtocol();
|
|
|
|
virtual void TCPTxRequest(QByteArray request) = 0;
|
|
|
|
unsigned int AnalyzeNewData(QByteArray data);
|
|
|
|
QByteArray GetHeartbeatPacket();
|
|
QByteArray GetStationNamePacket(QString StationName);
|
|
QByteArray GetZTStatusPacket(CTCPZTStatus *Status);
|
|
QByteArray GetZTLogPacket(QString *ZTLog);
|
|
QByteArray GetTrainLogsDownloadAckPacket(qint32 FileCount);
|
|
QByteArray *GetTrainLogDataPacket(const QByteArray &FileData); //MUST BE DELETED BY CALLER
|
|
QByteArray GetTrainLogsDownloadFinishedPacket();
|
|
QByteArray GetDeleteZTLogsAckPacket(qint32 Acknowledge);
|
|
QByteArray GetSetZTFunctionsConfigAckPacket(qint32 Ack);
|
|
|
|
|
|
virtual void TCPHeartbeatRequest() = 0;
|
|
virtual void TCPStationNameRequest() = 0;
|
|
virtual void TCPStatusRequest() = 0;
|
|
virtual void TCPZTLogDownloadRequest() = 0;
|
|
virtual void TCPTrainLogsDownloadRequest() = 0;
|
|
virtual void TCPTrainLogFileDataAck(eTCPProtocolAcknowledge Acknowledge) = 0;
|
|
virtual void TCPDeleteZTLogRequest() = 0;
|
|
virtual void TCPSetZTFunctionsConfigRequest(QByteArray &Data) = 0;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
eTCPProtocolState mProtocolRxState;
|
|
eTCPMessage mCurTransactionMsg;
|
|
qint64 mCurTransactionDataSize;
|
|
QByteArray mCurTransactionData;
|
|
|
|
void ResetRxStateMachine();
|
|
int DecodeTCPMessage();
|
|
|
|
};
|
|
class CTCPZTFunctionsStatus
|
|
{
|
|
public:
|
|
bool mFNTKActive;
|
|
bool mFNAnalysisActive;
|
|
bool mPGTKActive;
|
|
bool mPGAnalysisActive;
|
|
bool mPP1TKActive;
|
|
bool mPP1AnalysisActive;
|
|
bool mPP2TKActive;
|
|
bool mPP2AnalysisActive;
|
|
bool mZT1TKActive;
|
|
bool mZT1AnalysisActive;
|
|
bool mZT2TKActive;
|
|
bool mZT2AnalysisActive;
|
|
};
|
|
QDataStream &operator>>(QDataStream &in, CTCPZTFunctionsStatus &dest);
|
|
QDataStream &operator<<(QDataStream &out, const CTCPZTFunctionsStatus &source);
|
|
|
|
|
|
#endif // TCPPROTOCOL_H
|