diff --git a/libnymea-modbus/libnymea-modbus.pro b/libnymea-modbus/libnymea-modbus.pro index a1b787c..c4e1616 100644 --- a/libnymea-modbus/libnymea-modbus.pro +++ b/libnymea-modbus/libnymea-modbus.pro @@ -17,6 +17,7 @@ gcc { HEADERS += \ modbusdatautils.h \ + modbustcpconnection.h \ modbustcpmaster.h \ queuedmodbusreply.h diff --git a/libnymea-modbus/modbustcpconnection.h b/libnymea-modbus/modbustcpconnection.h new file mode 100644 index 0000000..222a1e2 --- /dev/null +++ b/libnymea-modbus/modbustcpconnection.h @@ -0,0 +1,34 @@ +#ifndef MODBUSTCPCONNECTION_H +#define MODBUSTCPCONNECTION_H + +#include + +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 diff --git a/libnymea-modbus/tools/generate-connection.py b/libnymea-modbus/tools/generate-connection.py index de96504..9b34dfa 100644 --- a/libnymea-modbus/tools/generate-connection.py +++ b/libnymea-modbus/tools/generate-connection.py @@ -44,10 +44,11 @@ def writeTcpHeaderFile(): writeLine(headerFile) writeLine(headerFile, '#include ') writeLine(headerFile, '#include ') + writeLine(headerFile, '#include ') 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, '}')