mirror of https://github.com/nymea/nymea.git
57 lines
1.4 KiB
C++
57 lines
1.4 KiB
C++
#include "hivecore.h"
|
|
#include "jsonrpcserver.h"
|
|
#include "devicemanager.h"
|
|
#include "ruleengine.h"
|
|
|
|
#include <QDebug>
|
|
|
|
HiveCore* HiveCore::s_instance = 0;
|
|
|
|
HiveCore *HiveCore::instance()
|
|
{
|
|
if (!s_instance) {
|
|
s_instance = new HiveCore();
|
|
}
|
|
return s_instance;
|
|
}
|
|
|
|
DeviceManager *HiveCore::deviceManager() const
|
|
{
|
|
return m_deviceManager;
|
|
}
|
|
|
|
RuleEngine *HiveCore::ruleEngine() const
|
|
{
|
|
return m_ruleEngine;
|
|
}
|
|
|
|
HiveCore::HiveCore(QObject *parent) :
|
|
QObject(parent)
|
|
{
|
|
|
|
qDebug() << "*****************************************";
|
|
qDebug() << "* Creating Device Manager *";
|
|
qDebug() << "*****************************************";
|
|
m_deviceManager = new DeviceManager(this);
|
|
|
|
qDebug() << "*****************************************";
|
|
qDebug() << "* Creating Rule Engine *";
|
|
qDebug() << "*****************************************";
|
|
m_ruleEngine = new RuleEngine(this);
|
|
|
|
qDebug() << "*****************************************";
|
|
qDebug() << "* Starting JSON RPC Server *";
|
|
qDebug() << "*****************************************";
|
|
m_jsonServer = new JsonRPCServer(this);
|
|
|
|
connect(m_deviceManager, &DeviceManager::emitTrigger, this, &HiveCore::gotSignal);
|
|
|
|
}
|
|
|
|
void HiveCore::gotSignal(const Trigger &trigger)
|
|
{
|
|
foreach (const Action &action, m_ruleEngine->evaluateTrigger(trigger)) {
|
|
m_deviceManager->executeAction(action);
|
|
}
|
|
}
|