ZT/sources/Modbus/ModbusTKTransport.h
jfmartel d235255053 V1.19 : Corrections suite aux essais CC du 19 février 2019
//Version 1.19
//-Suite aux essais sur site, changement des CDV d'acquitement des
alarmes
// À Montmorency (12BC -> 12A et 22BC -> 22A).
//-Correction d'un bug qui causait systématiquement une erreur de
comptage
// lorsqu'une panne équipement survenait alors que l'analyse était
inhibée.
2019-02-22 10:45:01 -05:00

88 lines
2.3 KiB
C++

/*******************************************************************************/
/*
Description:
Classe qui implémente les TC/TK avec la CC via le lien Modbus
Gère l'émission des alarmes à la CC.
*/
/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#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 ClearTKForNewTrain();
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;
bool mNewTrainIncoming;
int RegOffset(qint16 Reg){return (int)Reg-MODBUS_ZT_DATA_BASE_REG;}
public slots:
void ExecZT1SM();
void ExecZT2SM();
void ModbusCCUpdated();
};
#endif // MODBUSTKTRANSPORT_H