ZT/sources/Modbus/ModbusTKTransport.h

66 lines
1.7 KiB
C++

#ifndef MODBUSTKTRANSPORT_H
#define MODBUSTKTRANSPORT_H
#include "TKTransportInterface.h"
#include "ModbusRepository.h"
#include <QTimer>
#include "ModbusCCDefs.h"
class CModbusTKTransport : public CTKTransportInterface
{
Q_OBJECT
public:
enum eModbusTKSMStates
{
MODBUS_ZT1_TK_STANDBY_STATE,
MODBUS_ZT1_TK_SHOW_STATE,
MODBUS_ZT1_TK_WAIT_FOR_CLEAR_STATE,
MODBUS_ZT2_TK_STANDBY_STATE,
MODBUS_ZT2_TK_SHOW_STATE,
MODBUS_ZT2_TK_WAIT_FOR_CLEAR_STATE
};
CModbusTKTransport(CModbusRepository *Repo);
~CModbusTKTransport();
int SendTKToCC(int ZT);
int ClearTK(int ZT);
unsigned int CancelAllTK();
virtual bool IsZT2TKProcessing();
virtual bool IsZT1TKProcessing();
virtual bool IsTKProcessing();
virtual int AddNewZT1Detection(CZTDetectionData Detection);
virtual int AddNewZT2Detection(CZTDetectionData Detection);
virtual unsigned int BeginTKEmission();
virtual unsigned int SetInputStates(bool AN1State, bool ZT1CDVState, bool AN2State, bool ZT2CDVState);
virtual unsigned int CancelMaintenanceCurrentTK();
virtual unsigned int ExitMaintenance();
virtual unsigned int EnterMaintenance();
private:
CModbusRepository *mModbusRepo;
QList<CZTDetectionData> mZT1TKDataList,mZT2TKDataList;
bool mZT1CDVState, mZT2CDVState;
bool mMaintenanceMode, mForceZT1Clear, mForceZT2Clear;
int mModbusTKZT1SMState,mModbusTKZT2SMState;
QTimer *mZT1TKStateMachineTimer, *mZT2TKStateMachineTimer;
bool mZT1Clear, mZT2Clear;
int RegOffset(qint16 Reg){return (int)Reg-MODBUS_ZT_DATA_BASE_REG;}
public slots:
void ExecZT1SM();
void ExecZT2SM();
void ModbusCCUpdated();
};
#endif // MODBUSTKTRANSPORT_H