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