Merge PR #176: modbus-tool: Create TCP connection pure virtual base class

pull/178/head
jenkins 2024-07-19 21:06:38 +02:00
commit 9e49117b1c
3 changed files with 52 additions and 18 deletions

View File

@ -17,6 +17,7 @@ gcc {
HEADERS += \
modbusdatautils.h \
modbustcpconnection.h \
modbustcpmaster.h \
queuedmodbusreply.h

View File

@ -0,0 +1,34 @@
#ifndef MODBUSTCPCONNECTION_H
#define MODBUSTCPCONNECTION_H
#include <QObject>
class ModbusTcpMaster;
class ModbusTcpConnection : public QObject
{
Q_OBJECT
public:
explicit ModbusTcpConnection(QObject *parent = nullptr) : QObject{parent} { }
virtual ~ModbusTcpConnection() = default;
virtual ModbusTcpMaster *modbusTcpMaster() const = 0;
virtual bool reachable() const = 0;
virtual bool initializing() const = 0;
virtual bool initialize() = 0;
virtual bool update() = 0;
public slots:
virtual bool connectDevice() = 0;
virtual void disconnectDevice() = 0;
virtual bool reconnectDevice() = 0;
signals:
void reachableChanged(bool reachable);
void initializationFinished(bool success);
};
#endif // MODBUSTCPCONNECTION_H

View File

@ -44,10 +44,11 @@ def writeTcpHeaderFile():
writeLine(headerFile)
writeLine(headerFile, '#include <modbusdatautils.h>')
writeLine(headerFile, '#include <modbustcpmaster.h>')
writeLine(headerFile, '#include <modbustcpconnection.h>')
writeLine(headerFile)
# Begin of class
writeLine(headerFile, 'class %s : public QObject' % className)
writeLine(headerFile, 'class %s : public ModbusTcpConnection' % className)
writeLine(headerFile, '{')
writeLine(headerFile, ' Q_OBJECT')
@ -69,18 +70,18 @@ def writeTcpHeaderFile():
# Constructor
writeLine(headerFile, ' explicit %s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent = nullptr);' % className)
writeLine(headerFile, ' explicit %s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent = nullptr);' % className)
writeLine(headerFile, ' ~%s() = default;' % className)
writeLine(headerFile, ' ~%s() override = default;' % className)
writeLine(headerFile)
writeLine(headerFile, ' ModbusTcpMaster *modbusTcpMaster() const;')
writeLine(headerFile, ' ModbusTcpMaster *modbusTcpMaster() const override; ')
writeLine(headerFile, ' quint16 slaveId() const;')
writeLine(headerFile)
writeLine(headerFile, ' bool reachable() const;')
writeLine(headerFile, ' bool initializing() const;')
writeLine(headerFile, ' bool reachable() const override;')
writeLine(headerFile, ' bool initializing() const override;')
writeLine(headerFile)
# Write init and update method declarations
writeLine(headerFile, ' virtual bool initialize();')
writeLine(headerFile, ' virtual bool update();')
writeLine(headerFile, ' virtual bool initialize() override;')
writeLine(headerFile, ' virtual bool update() override;')
writeLine(headerFile)
writeLine(headerFile, ' ModbusDataUtils::ByteOrder endianness() const;')
@ -137,18 +138,16 @@ def writeTcpHeaderFile():
writeLine(headerFile)
writeLine(headerFile, 'public slots:')
writeLine(headerFile, ' bool connectDevice();')
writeLine(headerFile, ' void disconnectDevice();')
writeLine(headerFile, ' bool reconnectDevice();')
writeLine(headerFile, ' bool connectDevice() override;')
writeLine(headerFile, ' void disconnectDevice() override;')
writeLine(headerFile, ' bool reconnectDevice() override;')
writeLine(headerFile)
# Write registers value changed signals
writeLine(headerFile, 'signals:')
writeLine(headerFile, ' void reachableChanged(bool reachable);')
writeLine(headerFile, ' void checkReachabilityFailed();')
writeLine(headerFile, ' void checkReachableRetriesChanged(uint checkReachableRetries);')
writeLine(headerFile)
writeLine(headerFile, ' void initializationFinished(bool success);')
writeLine(headerFile, ' void updateFinished();')
writeLine(headerFile)
writeLine(headerFile, ' void endiannessChanged(ModbusDataUtils::ByteOrder endianness);')
@ -257,18 +256,18 @@ def writeTcpSourceFile():
# Constructor
writeLine(sourceFile, '%s::%s(const QHostAddress &hostAddress, uint port, quint16 slaveId, QObject *parent) :' % (className, className))
writeLine(sourceFile, ' QObject(parent),')
writeLine(sourceFile, ' m_modbusTcpMaster(new ModbusTcpMaster(hostAddress, port, this)),')
writeLine(sourceFile, ' m_slaveId(slaveId)')
writeLine(sourceFile, ' ModbusTcpConnection{parent},')
writeLine(sourceFile, ' m_modbusTcpMaster{new ModbusTcpMaster(hostAddress, port, this)},')
writeLine(sourceFile, ' m_slaveId{slaveId}')
writeLine(sourceFile, '{')
writeLine(sourceFile, ' setupConnection();')
writeLine(sourceFile, '}')
writeLine(sourceFile)
writeLine(sourceFile, '%s::%s(ModbusTcpMaster *modbusTcpMaster, quint16 slaveId, QObject *parent) :' % (className, className))
writeLine(sourceFile, ' QObject(parent),')
writeLine(sourceFile, ' m_modbusTcpMaster(modbusTcpMaster),')
writeLine(sourceFile, ' m_slaveId(slaveId)')
writeLine(sourceFile, ' ModbusTcpConnection{parent},')
writeLine(sourceFile, ' m_modbusTcpMaster{modbusTcpMaster},')
writeLine(sourceFile, ' m_slaveId{slaveId}')
writeLine(sourceFile, '{')
writeLine(sourceFile, ' setupConnection();')
writeLine(sourceFile, '}')