Added json broadcasting

This commit is contained in:
Carl Klemm 2019-06-10 23:22:08 +02:00
parent df27b622a0
commit 3cbe947408
37 changed files with 514 additions and 487 deletions

View file

@ -16,9 +16,3 @@ void AuxItem::store(QJsonObject &json)
json["Type"] = "Aux";
Item::store(json);
}
void AuxItem::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Type", "Aux");
Item::store(subsecton, settings);
}

View file

@ -17,5 +17,4 @@ public:
AuxItem(SensorStore* sensors, Microcontroller* micro, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
virtual void store(QJsonObject& json);
virtual void store(QString subsecton, QSettings* settings);
};

View file

@ -86,34 +86,6 @@ void Item::load(const QJsonObject &json, const bool preserve)
}
}
void Item::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Name", name_);
settings->setValue(subsecton + "ItemId", static_cast<unsigned>(itemId_));
settings->setValue(subsecton + "ActorsActive", actorsActive_);
settings->setValue(subsecton + "Actors", static_cast<unsigned>(actors_.size()));
for(size_t i = 0; i < actors_.size(); ++i)
{
actors_[i]->store(subsecton + "/Actor" + QString::number(i), settings);
}
}
void Item::load(QString subsecton, QSettings* settings, bool preserve)
{
if(!preserve)
{
name_ = settings->value(subsecton + "Name").toString();
itemId_ = settings->value(subsecton + "ItemId").toUInt();
}
actorsActive_ = settings->value(subsecton + "ActorsActive").toBool();
unsigned actorsLen = settings->value(subsecton + "Actors").toUInt();
for(unsigned i = 0; i < actorsLen; ++i)
{
Actor* actor = Actor::loadActor(subsecton + "/Actor" + QString::number(i), settings);
if(actor != nullptr) addActor(actor);
}
}
void Item::setValue(uint8_t value)
{
value_ = value;

View file

@ -68,8 +68,5 @@ public:
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
virtual void store(QString subsecton, QSettings* settings);
virtual void load(QString subsecton, QSettings* settings, bool preserve = false);
};

View file

@ -49,6 +49,14 @@ void ItemStore::addItems(const std::vector<std::shared_ptr<Item>>& itemIn)
}
void ItemStore::clear()
{
for(size_t i = 0; i < items_.size(); ++i) itemDeleted(*items_[i]);
items_.clear();
}
void ItemStore::itemStateChanged(const ItemData& item)
{
for(unsigned i = 0; i < items_.size(); i++ )
@ -100,33 +108,3 @@ void ItemStore::load(const QJsonObject& json, Microcontroller * const micro)
}
}
}
void ItemStore::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "/NumberOfItems", static_cast<unsigned>(items_.size()));
for(size_t i = 0; i < items_.size(); ++i)
{
items_[i]->store(subsecton + "/Item" + QString::number(i), settings);
}
}
void ItemStore::load(QString subsecton, QSettings* settings, Microcontroller* micro)
{
unsigned itemLen = settings->value(subsecton + "/NumberOfItems").toUInt();
for(size_t i = 0; i < itemLen; ++i)
{
std::shared_ptr<Relay> newItem;
if(settings->value(subsecton + "/Item" + QString::number(i)+ "Type").toString() == "Relay")
{
newItem = std::shared_ptr<Relay>(new Relay(sensors_, micro));
}
else if(settings->value(subsecton + "/Item" + QString::number(i)+ "Type").toString() == "Aux")
{
}
if(newItem)
{
newItem->load(subsecton + "/Item" + QString::number(i), settings);
addItem(newItem);
}
}
}

View file

@ -25,8 +25,7 @@ public:
void store(QJsonObject &json);
void load(const QJsonObject &json, Microcontroller * const micro);
void store(QString subsecton, QSettings* settings);
void load(QString subsecton, QSettings* settings, Microcontroller* micro);
void clear();
signals:

View file

@ -2,7 +2,7 @@
#include <QProcess>
#include <QApplication>
PowerItem::PowerItem(SensorStore* sensors, QApplication* a, uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(sensors, itemIdIn, name, value, parent), a_(a)
PowerItem::PowerItem(SensorStore* sensors, uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(sensors, itemIdIn, name, value, parent)
{
stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 0));
setValue(true);
@ -21,7 +21,6 @@ void PowerItem::setValue(uint8_t value)
void PowerItem::timeout()
{
QProcess::startDetached("syncoff");
a_->exit(0);
}
void PowerItem::store(QJsonObject& json)
@ -29,9 +28,3 @@ void PowerItem::store(QJsonObject& json)
json["Type"] = "Power";
Item::store(json);
}
void PowerItem::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Type", "Power");
Item::store(subsecton, settings);
}

View file

@ -10,7 +10,6 @@ class PowerItem: public Item
{
Q_OBJECT
private:
QApplication* a_;
signals:
@ -25,8 +24,7 @@ public slots:
virtual void setValue(uint8_t value);
public:
PowerItem(SensorStore* sensors, QApplication* a, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
PowerItem(SensorStore* sensors, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
void emmitSensor(){stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 0));}
virtual void store(QJsonObject& json);
virtual void store(QString subsecton, QSettings* settings);
};

View file

@ -46,22 +46,6 @@ void Relay::load(const QJsonObject& json)
itemId_ = address_ | (static_cast<uint32_t>(id_) << 16);
}
void Relay::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Type", "Relay");
Item::store(subsecton, settings);
settings->setValue(subsecton + "Id", static_cast<unsigned>(id_));
settings->setValue(subsecton + "Address", address_);
}
void Relay::load(QString subsecton, QSettings* settings)
{
Item::load(subsecton, settings);
id_ = settings->value(subsecton + "Id").toUInt();
address_ = settings->value(subsecton + "Address").toUInt();
itemId_ = address_ | ((uint32_t)id_ << 16);
}
uint16_t Relay::getAddress() const
{
return address_;

View file

@ -34,8 +34,5 @@ public:
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json);
virtual void store(QString subsecton, QSettings* settings);
virtual void load(QString subsecton, QSettings* settings);
};
#endif // RELAY_H

View file

@ -16,9 +16,3 @@ void RgbItem::store(QJsonObject &json)
json["Type"] = "Rgb";
Item::store(json);
}
void RgbItem::store(QString subsecton, QSettings* settings)
{
settings->setValue(subsecton + "Type", "Rgb");
Item::store(subsecton, settings);
}

View file

@ -17,5 +17,4 @@ public:
RgbItem(SensorStore* sensors, Microcontroller* micro, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
virtual void store(QJsonObject& json);
virtual void store(QString subsecton, QSettings* settings);
};