Initialize modbus manager and clean up class hirarchy
This commit is contained in:
parent
fc9c030ebc
commit
673bce61ff
@ -49,12 +49,12 @@ QList<ModbusRtuMaster *> ModbusRtuHardwareResourceImplementation::modbusRtuMaste
|
|||||||
return m_modbusRtuManager->modbusRtuMasters();
|
return m_modbusRtuManager->modbusRtuMasters();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ModbusRtuHardwareResourceImplementation::hasModbusRtuMaster(const QUuid &modbusUuid)
|
bool ModbusRtuHardwareResourceImplementation::hasModbusRtuMaster(const QUuid &modbusUuid) const
|
||||||
{
|
{
|
||||||
return m_modbusRtuManager->hasModbusRtuMaster(modbusUuid);
|
return m_modbusRtuManager->hasModbusRtuMaster(modbusUuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModbusRtuMaster *ModbusRtuHardwareResourceImplementation::getModbusRtuMaster(const QUuid &modbusUuid)
|
ModbusRtuMaster *ModbusRtuHardwareResourceImplementation::getModbusRtuMaster(const QUuid &modbusUuid) const
|
||||||
{
|
{
|
||||||
return m_modbusRtuManager->getModbusRtuMaster(modbusUuid);
|
return m_modbusRtuManager->getModbusRtuMaster(modbusUuid);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include "modbus/modbusrtumanager.h"
|
#include "modbus/modbusrtumanager.h"
|
||||||
|
#include "hardware/modbus/modbusrtumaster.h"
|
||||||
#include "hardware/modbus/modbusrtuhardwareresource.h"
|
#include "hardware/modbus/modbusrtuhardwareresource.h"
|
||||||
|
|
||||||
namespace nymeaserver {
|
namespace nymeaserver {
|
||||||
@ -43,10 +44,11 @@ class ModbusRtuHardwareResourceImplementation : public ModbusRtuHardwareResource
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit ModbusRtuHardwareResourceImplementation(ModbusRtuManager *modbusRtuManager, QObject *parent = nullptr);
|
explicit ModbusRtuHardwareResourceImplementation(ModbusRtuManager *modbusRtuManager, QObject *parent = nullptr);
|
||||||
|
~ModbusRtuHardwareResourceImplementation() override = default;
|
||||||
|
|
||||||
QList<ModbusRtuMaster *> modbusRtuMasters() const override;
|
QList<ModbusRtuMaster *> modbusRtuMasters() const override;
|
||||||
bool hasModbusRtuMaster(const QUuid &modbusUuid) override;
|
bool hasModbusRtuMaster(const QUuid &modbusUuid) const override;
|
||||||
ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid) override;
|
ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid) const override;
|
||||||
|
|
||||||
bool available() const override;
|
bool available() const override;
|
||||||
bool enabled() const override;
|
bool enabled() const override;
|
||||||
|
|||||||
@ -43,11 +43,13 @@
|
|||||||
#include "hardware/network/mqtt/mqttproviderimplementation.h"
|
#include "hardware/network/mqtt/mqttproviderimplementation.h"
|
||||||
#include "hardware/i2c/i2cmanagerimplementation.h"
|
#include "hardware/i2c/i2cmanagerimplementation.h"
|
||||||
#include "hardware/zigbee/zigbeehardwareresourceimplementation.h"
|
#include "hardware/zigbee/zigbeehardwareresourceimplementation.h"
|
||||||
|
|
||||||
|
#include "modbus/modbusrtumanager.h"
|
||||||
#include "hardware/modbus/modbusrtuhardwareresourceimplementation.h"
|
#include "hardware/modbus/modbusrtuhardwareresourceimplementation.h"
|
||||||
|
|
||||||
namespace nymeaserver {
|
namespace nymeaserver {
|
||||||
|
|
||||||
HardwareManagerImplementation::HardwareManagerImplementation(Platform *platform, MqttBroker *mqttBroker, ZigbeeManager *zigbeeManager, QObject *parent) :
|
HardwareManagerImplementation::HardwareManagerImplementation(Platform *platform, MqttBroker *mqttBroker, ZigbeeManager *zigbeeManager, ModbusRtuManager *modbusRtuManager, QObject *parent) :
|
||||||
HardwareManager(parent),
|
HardwareManager(parent),
|
||||||
m_platform(platform)
|
m_platform(platform)
|
||||||
{
|
{
|
||||||
@ -74,6 +76,8 @@ HardwareManagerImplementation::HardwareManagerImplementation(Platform *platform,
|
|||||||
|
|
||||||
m_zigbeeResource = new ZigbeeHardwareResourceImplementation(zigbeeManager, this);
|
m_zigbeeResource = new ZigbeeHardwareResourceImplementation(zigbeeManager, this);
|
||||||
|
|
||||||
|
m_modbusRtuResource = new ModbusRtuHardwareResourceImplementation(modbusRtuManager, this);
|
||||||
|
|
||||||
// Enable all the resources
|
// Enable all the resources
|
||||||
setResourceEnabled(m_pluginTimerManager, true);
|
setResourceEnabled(m_pluginTimerManager, true);
|
||||||
setResourceEnabled(m_radio433, true);
|
setResourceEnabled(m_radio433, true);
|
||||||
@ -143,7 +147,7 @@ ZigbeeHardwareResource *HardwareManagerImplementation::zigbeeResource()
|
|||||||
return m_zigbeeResource;
|
return m_zigbeeResource;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModbusRtuHardwareResouce *HardwareManagerImplementation::modbusRtuResource()
|
ModbusRtuHardwareResource *HardwareManagerImplementation::modbusRtuResource()
|
||||||
{
|
{
|
||||||
return m_modbusRtuResource;
|
return m_modbusRtuResource;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,13 +43,15 @@ class Platform;
|
|||||||
class MqttBroker;
|
class MqttBroker;
|
||||||
class ZigbeeManager;
|
class ZigbeeManager;
|
||||||
class ZigbeeHardwareResourceImplementation;
|
class ZigbeeHardwareResourceImplementation;
|
||||||
|
class ModbusRtuManager;
|
||||||
|
class ModbusRtuHardwareResourceImplementation;
|
||||||
|
|
||||||
class HardwareManagerImplementation : public HardwareManager
|
class HardwareManagerImplementation : public HardwareManager
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit HardwareManagerImplementation(Platform *platform, MqttBroker *mqttBroker, ZigbeeManager *zigbeeManager, QObject *parent = nullptr);
|
explicit HardwareManagerImplementation(Platform *platform, MqttBroker *mqttBroker, ZigbeeManager *zigbeeManager, ModbusRtuManager *modbusRtuManager, QObject *parent = nullptr);
|
||||||
~HardwareManagerImplementation() override;
|
~HardwareManagerImplementation() override;
|
||||||
|
|
||||||
Radio433 *radio433() override;
|
Radio433 *radio433() override;
|
||||||
@ -61,7 +63,7 @@ public:
|
|||||||
MqttProvider *mqttProvider() override;
|
MqttProvider *mqttProvider() override;
|
||||||
I2CManager *i2cManager() override;
|
I2CManager *i2cManager() override;
|
||||||
ZigbeeHardwareResource *zigbeeResource() override;
|
ZigbeeHardwareResource *zigbeeResource() override;
|
||||||
ModbusRtuHardwareResouce *modbusRtuResource() override;
|
ModbusRtuHardwareResource *modbusRtuResource() override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void thingsLoaded();
|
void thingsLoaded();
|
||||||
@ -80,7 +82,7 @@ private:
|
|||||||
MqttProvider *m_mqttProvider = nullptr;
|
MqttProvider *m_mqttProvider = nullptr;
|
||||||
I2CManager *m_i2cManager = nullptr;
|
I2CManager *m_i2cManager = nullptr;
|
||||||
ZigbeeHardwareResourceImplementation *m_zigbeeResource = nullptr;
|
ZigbeeHardwareResourceImplementation *m_zigbeeResource = nullptr;
|
||||||
ModbusRtuHardwareResouce *m_modbusRtuResource = nullptr;
|
ModbusRtuHardwareResourceImplementation *m_modbusRtuResource = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,8 @@ CONFIG(withoutpython) {
|
|||||||
# Let's check if the package exists, not the qt version
|
# Let's check if the package exists, not the qt version
|
||||||
packagesExist(Qt5SerialBus) {
|
packagesExist(Qt5SerialBus) {
|
||||||
message("Building with QtSerialBus support.")
|
message("Building with QtSerialBus support.")
|
||||||
Qt += serialbus
|
# Qt += serialbus
|
||||||
|
PKGCONFIG += Qt5SerialBus
|
||||||
DEFINES += WITH_QTSERIALBUS
|
DEFINES += WITH_QTSERIALBUS
|
||||||
} else {
|
} else {
|
||||||
message("Qt5SerialBus package not found. Building without QtSerialBus support.")
|
message("Qt5SerialBus package not found. Building without QtSerialBus support.")
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
#include "modbusrtumanager.h"
|
#include "modbusrtumanager.h"
|
||||||
#include "nymeasettings.h"
|
#include "nymeasettings.h"
|
||||||
#include "loggingcategories.h"
|
#include "loggingcategories.h"
|
||||||
|
|
||||||
#include "modbusrtumasterimpl.h"
|
#include "modbusrtumasterimpl.h"
|
||||||
|
|
||||||
NYMEA_LOGGING_CATEGORY(dcModbusRtu, "ModbusRtu")
|
NYMEA_LOGGING_CATEGORY(dcModbusRtu, "ModbusRtu")
|
||||||
@ -39,6 +40,12 @@ namespace nymeaserver {
|
|||||||
|
|
||||||
ModbusRtuManager::ModbusRtuManager(QObject *parent) : QObject(parent)
|
ModbusRtuManager::ModbusRtuManager(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
|
// Load uart configurations
|
||||||
|
loadRtuMasters();
|
||||||
|
|
||||||
|
// Connect signals
|
||||||
|
|
||||||
|
// Enable autoconnect for each modbus rtu master
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,9 +68,8 @@ ModbusRtuMaster *ModbusRtuManager::getModbusRtuMaster(const QUuid &modbusUuid)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModbusRtuManager::init()
|
void ModbusRtuManager::loadRtuMasters()
|
||||||
{
|
{
|
||||||
// Load uart configurations
|
|
||||||
NymeaSettings settings(NymeaSettings::SettingsRoleModbusRtu);
|
NymeaSettings settings(NymeaSettings::SettingsRoleModbusRtu);
|
||||||
qCDebug(dcModbusRtu()) << "Loading modbus RTU resources from" << settings.fileName();
|
qCDebug(dcModbusRtu()) << "Loading modbus RTU resources from" << settings.fileName();
|
||||||
|
|
||||||
@ -85,11 +91,6 @@ void ModbusRtuManager::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
settings.endGroup(); // ModbusRtuMasters
|
settings.endGroup(); // ModbusRtuMasters
|
||||||
|
|
||||||
// Connect signals
|
|
||||||
|
|
||||||
// Enable autoconnect for each modbus rtu master
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModbusRtuManager::saveModbusRtuMaster(ModbusRtuMaster *modbusRtuMaster)
|
void ModbusRtuManager::saveModbusRtuMaster(ModbusRtuMaster *modbusRtuMaster)
|
||||||
|
|||||||
@ -50,8 +50,6 @@ public:
|
|||||||
bool hasModbusRtuMaster(const QUuid &modbusUuid) const;
|
bool hasModbusRtuMaster(const QUuid &modbusUuid) const;
|
||||||
ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid);
|
ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid);
|
||||||
|
|
||||||
void init();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void modbusRtuMasterAdded(const QUuid &modbusUuid);
|
void modbusRtuMasterAdded(const QUuid &modbusUuid);
|
||||||
void modbusRtuMasterRemoved(const QUuid &modbusUuid);
|
void modbusRtuMasterRemoved(const QUuid &modbusUuid);
|
||||||
@ -60,6 +58,7 @@ signals:
|
|||||||
private:
|
private:
|
||||||
QHash<QUuid, ModbusRtuMaster *> m_modbusRtuMasters;
|
QHash<QUuid, ModbusRtuMaster *> m_modbusRtuMasters;
|
||||||
|
|
||||||
|
void loadRtuMasters();
|
||||||
void saveModbusRtuMaster(ModbusRtuMaster *modbusRtuMaster);
|
void saveModbusRtuMaster(ModbusRtuMaster *modbusRtuMaster);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -53,6 +53,8 @@
|
|||||||
|
|
||||||
#include "zigbee/zigbeemanager.h"
|
#include "zigbee/zigbeemanager.h"
|
||||||
|
|
||||||
|
#include "modbus/modbusrtumanager.h"
|
||||||
|
|
||||||
#include <networkmanager.h>
|
#include <networkmanager.h>
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
@ -108,8 +110,11 @@ void NymeaCore::init(const QStringList &additionalInterfaces) {
|
|||||||
qCDebug(dcCore()) << "Create Zigbee Manager";
|
qCDebug(dcCore()) << "Create Zigbee Manager";
|
||||||
m_zigbeeManager = new ZigbeeManager(this);
|
m_zigbeeManager = new ZigbeeManager(this);
|
||||||
|
|
||||||
|
qCDebug(dcCore()) << "Create Modbus RTU Manager";
|
||||||
|
m_modbusRtuManager = new ModbusRtuManager(this);
|
||||||
|
|
||||||
qCDebug(dcCore) << "Creating Hardware Manager";
|
qCDebug(dcCore) << "Creating Hardware Manager";
|
||||||
m_hardwareManager = new HardwareManagerImplementation(m_platform, m_serverManager->mqttBroker(), m_zigbeeManager, this);
|
m_hardwareManager = new HardwareManagerImplementation(m_platform, m_serverManager->mqttBroker(), m_zigbeeManager, m_modbusRtuManager, this);
|
||||||
|
|
||||||
qCDebug(dcCore) << "Creating Thing Manager (locale:" << m_configuration->locale() << ")";
|
qCDebug(dcCore) << "Creating Thing Manager (locale:" << m_configuration->locale() << ")";
|
||||||
m_thingManager = new ThingManagerImplementation(m_hardwareManager, m_configuration->locale(), this);
|
m_thingManager = new ThingManagerImplementation(m_hardwareManager, m_configuration->locale(), this);
|
||||||
@ -645,6 +650,11 @@ ZigbeeManager *NymeaCore::zigbeeManager() const
|
|||||||
return m_zigbeeManager;
|
return m_zigbeeManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ModbusRtuManager *NymeaCore::modbusRtuManager() const
|
||||||
|
{
|
||||||
|
return m_modbusRtuManager;
|
||||||
|
}
|
||||||
|
|
||||||
void NymeaCore::gotEvent(const Event &event)
|
void NymeaCore::gotEvent(const Event &event)
|
||||||
{
|
{
|
||||||
emit eventTriggered(event);
|
emit eventTriggered(event);
|
||||||
|
|||||||
@ -67,6 +67,7 @@ class ExperienceManager;
|
|||||||
class ScriptEngine;
|
class ScriptEngine;
|
||||||
class CloudManager;
|
class CloudManager;
|
||||||
class ZigbeeManager;
|
class ZigbeeManager;
|
||||||
|
class ModbusRtuManager;
|
||||||
|
|
||||||
class NymeaCore : public QObject
|
class NymeaCore : public QObject
|
||||||
{
|
{
|
||||||
@ -107,6 +108,7 @@ public:
|
|||||||
TagsStorage *tagsStorage() const;
|
TagsStorage *tagsStorage() const;
|
||||||
Platform *platform() const;
|
Platform *platform() const;
|
||||||
ZigbeeManager *zigbeeManager() const;
|
ZigbeeManager *zigbeeManager() const;
|
||||||
|
ModbusRtuManager *modbusRtuManager() const;
|
||||||
|
|
||||||
static QStringList getAvailableLanguages();
|
static QStringList getAvailableLanguages();
|
||||||
static QStringList loggingFilters();
|
static QStringList loggingFilters();
|
||||||
@ -151,6 +153,7 @@ private:
|
|||||||
System *m_system;
|
System *m_system;
|
||||||
ExperienceManager *m_experienceManager;
|
ExperienceManager *m_experienceManager;
|
||||||
ZigbeeManager *m_zigbeeManager;
|
ZigbeeManager *m_zigbeeManager;
|
||||||
|
ModbusRtuManager *m_modbusRtuManager;
|
||||||
|
|
||||||
QList<RuleId> m_executingRules;
|
QList<RuleId> m_executingRules;
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||||
|
|
||||||
#include "modbusrtuhardwareresource.h"
|
#include "modbusrtuhardwareresource.h"
|
||||||
|
#include "modbusrtumaster.h"
|
||||||
|
|
||||||
ModbusRtuHardwareResource::ModbusRtuHardwareResource(QObject *parent) :
|
ModbusRtuHardwareResource::ModbusRtuHardwareResource(QObject *parent) :
|
||||||
HardwareResource("Modbus RTU resource", parent)
|
HardwareResource("Modbus RTU resource", parent)
|
||||||
|
|||||||
@ -34,16 +34,16 @@
|
|||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include "modbusrtumaster.h"
|
|
||||||
#include "hardwareresource.h"
|
#include "hardwareresource.h"
|
||||||
|
#include "modbusrtumaster.h"
|
||||||
|
|
||||||
class ModbusRtuHardwareResource : public HardwareResource
|
class ModbusRtuHardwareResource : public HardwareResource
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
virtual QList<ModbusRtuMaster *> modbusRtuMasters() const = 0;
|
virtual QList<ModbusRtuMaster *> modbusRtuMasters() const = 0;
|
||||||
virtual bool hasModbusRtuMaster(const QUuid &modbusUuid) = 0;
|
virtual bool hasModbusRtuMaster(const QUuid &modbusUuid) const = 0;
|
||||||
virtual ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid) = 0;
|
virtual ModbusRtuMaster *getModbusRtuMaster(const QUuid &modbusUuid) const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit ModbusRtuHardwareResource(QObject *parent = nullptr);
|
explicit ModbusRtuHardwareResource(QObject *parent = nullptr);
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class MqttProvider;
|
|||||||
class I2CManager;
|
class I2CManager;
|
||||||
class ZigbeeHardwareResource;
|
class ZigbeeHardwareResource;
|
||||||
class HardwareResource;
|
class HardwareResource;
|
||||||
class ModbusRtuHardwareResouce;
|
class ModbusRtuHardwareResource;
|
||||||
|
|
||||||
class HardwareManager : public QObject
|
class HardwareManager : public QObject
|
||||||
{
|
{
|
||||||
@ -64,7 +64,7 @@ public:
|
|||||||
virtual MqttProvider *mqttProvider() = 0;
|
virtual MqttProvider *mqttProvider() = 0;
|
||||||
virtual I2CManager *i2cManager() = 0;
|
virtual I2CManager *i2cManager() = 0;
|
||||||
virtual ZigbeeHardwareResource *zigbeeResource() = 0;
|
virtual ZigbeeHardwareResource *zigbeeResource() = 0;
|
||||||
virtual ModbusRtuHardwareResouce *modbusRtuResource() = 0;
|
virtual ModbusRtuHardwareResource *modbusRtuResource() = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setResourceEnabled(HardwareResource* resource, bool enabled);
|
void setResourceEnabled(HardwareResource* resource, bool enabled);
|
||||||
|
|||||||
@ -2,6 +2,18 @@ QT += dbus testlib network sql websockets
|
|||||||
CONFIG += testcase
|
CONFIG += testcase
|
||||||
CONFIG += link_pkgconfig
|
CONFIG += link_pkgconfig
|
||||||
|
|
||||||
|
# Qt serial bus module is officially available since Qt 5.8
|
||||||
|
# but not all platforms host the qt serialbus package.
|
||||||
|
# Let's check if the package exists, not the qt version
|
||||||
|
packagesExist(Qt5SerialBus) {
|
||||||
|
message("Building with QtSerialBus support.")
|
||||||
|
# Qt += serialbus
|
||||||
|
PKGCONFIG += Qt5SerialBus
|
||||||
|
DEFINES += WITH_QTSERIALBUS
|
||||||
|
} else {
|
||||||
|
message("Qt5SerialBus package not found. Building without QtSerialBus support.")
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDEPATH += $$top_srcdir/libnymea \
|
INCLUDEPATH += $$top_srcdir/libnymea \
|
||||||
$$top_srcdir/libnymea-core \
|
$$top_srcdir/libnymea-core \
|
||||||
$$top_srcdir/tests/testlib/ \
|
$$top_srcdir/tests/testlib/ \
|
||||||
|
|||||||
@ -5,6 +5,14 @@ include(../../nymea.pri)
|
|||||||
|
|
||||||
QT += testlib dbus network sql websockets
|
QT += testlib dbus network sql websockets
|
||||||
|
|
||||||
|
# Qt serial bus module is officially available since Qt 5.8
|
||||||
|
# but not all platforms host the qt serialbus package.
|
||||||
|
# Let's check if the package exists, not the qt version
|
||||||
|
packagesExist(Qt5SerialBus) {
|
||||||
|
Qt += serialbus
|
||||||
|
DEFINES += WITH_QTSERIALBUS
|
||||||
|
}
|
||||||
|
|
||||||
INCLUDEPATH += $$top_srcdir/libnymea \
|
INCLUDEPATH += $$top_srcdir/libnymea \
|
||||||
$$top_srcdir/libnymea-core
|
$$top_srcdir/libnymea-core
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user