#ifndef CMODBUSSLAVE_H #define CMODBUSSLAVE_H #include #include "ModbusBackend.h" #include #include "ModbusRepository.h" #include class CModbusCCMgr : public CModbusBackend { Q_OBJECT public: explicit CModbusCCMgr(CModbusRepository *Repo, int ModbusPort, int DevID); virtual ~CModbusCCMgr(); int StartModbusCCServer(); bool IsModbusConnected(); virtual void RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length); virtual void ModbusRequestException(quint8 ExceptionCode, quint8 FctCode); //Helper functions QList GetZT1TrainComposition(); QList GetZT2TrainComposition(); bool GetZT1InhibitionFlag(); bool GetZT2InhibitionFlag(); qint16 GetZT1TrainType(); qint16 GetZT2TrainType(); private: QTcpServer *mModbusServer; int mModbusPort; QTimer *mZTWatchdogTimer, *mCCWatchdogTimer; qint16 mZTWatchdog; qint16 mCCWatchdogState; bool mCCLinkState; QDateTime *mLastDateTime; signals: void RepoHasChanged(); void ModbusCCConnected(); void ModbusCCDisconnected(); void ModbusCCLinkLost(); void ModbusCCLinkRecovered(); void ModbusDateTimeReceived(QDateTime *DateTime); public slots: void NewModbusConnection(); void ConnectionLost(); void ModbusZTWatchdogTimeout(); void ModbusCCWatchdogTimeout(); }; #endif // CMODBUSSLAVE_H