From 9b7e5e469db44d25ed6a11fda2c023cbc9e587ee Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 6 Apr 2022 23:28:12 +0200 Subject: [PATCH] Allow modbus RTU plugins to request a connection reset --- libnymea-core/hardware/modbus/modbusrtumasterimpl.cpp | 6 ++++++ libnymea-core/hardware/modbus/modbusrtumasterimpl.h | 2 ++ libnymea/hardware/modbus/modbusrtumaster.h | 2 ++ 3 files changed, 10 insertions(+) diff --git a/libnymea-core/hardware/modbus/modbusrtumasterimpl.cpp b/libnymea-core/hardware/modbus/modbusrtumasterimpl.cpp index a11bf6e7..3b2f0fa2 100644 --- a/libnymea-core/hardware/modbus/modbusrtumasterimpl.cpp +++ b/libnymea-core/hardware/modbus/modbusrtumasterimpl.cpp @@ -167,6 +167,12 @@ bool ModbusRtuMasterImpl::connected() const return m_connected; } +void ModbusRtuMasterImpl::requestReconnect() +{ + disconnectDevice(); + connectDevice(); +} + bool ModbusRtuMasterImpl::connectDevice() { #ifdef WITH_QTSERIALBUS diff --git a/libnymea-core/hardware/modbus/modbusrtumasterimpl.h b/libnymea-core/hardware/modbus/modbusrtumasterimpl.h index 6df0749f..559b4fb9 100644 --- a/libnymea-core/hardware/modbus/modbusrtumasterimpl.h +++ b/libnymea-core/hardware/modbus/modbusrtumasterimpl.h @@ -68,6 +68,8 @@ public: bool connected() const override; + void requestReconnect() override; + bool connectDevice(); void disconnectDevice(); diff --git a/libnymea/hardware/modbus/modbusrtumaster.h b/libnymea/hardware/modbus/modbusrtumaster.h index 39ba94be..28c3a85a 100644 --- a/libnymea/hardware/modbus/modbusrtumaster.h +++ b/libnymea/hardware/modbus/modbusrtumaster.h @@ -54,6 +54,8 @@ public: virtual bool connected() const = 0; + virtual void requestReconnect() = 0; + // Requests virtual ModbusRtuReply *readCoil(int slaveAddress, int registerAddress, quint16 size = 1) = 0; virtual ModbusRtuReply *readDiscreteInput(int slaveAddress, int registerAddress, quint16 size = 1) = 0;