Major wip refactor
Allow running without gui Remove serialPortMultiplexer broadcast use Add TcpServer and TcpClient Introduce the concept of an item source
This commit is contained in:
parent
cbeb8d49a7
commit
6d742e60db
38 changed files with 928 additions and 825 deletions
|
|
@ -1,10 +1,12 @@
|
|||
#include "item.h"
|
||||
|
||||
#include "src/actors/sensoractor.h"
|
||||
#include "src/actors/regulator.h"
|
||||
#include "src/actors/polynomalactor.h"
|
||||
#include "src/programmode.h"
|
||||
#include "relay.h"
|
||||
#include "../microcontroller.h"
|
||||
#include "../actors/sensoractor.h"
|
||||
#include "../actors/regulator.h"
|
||||
#include "../actors/polynomalactor.h"
|
||||
#include "messageitem.h"
|
||||
#include "systemitem.h"
|
||||
|
||||
#include <QJsonArray>
|
||||
|
||||
|
|
@ -33,11 +35,25 @@ uint32_t ItemData::id() const
|
|||
return itemId_;
|
||||
}
|
||||
|
||||
void ItemData::store(QJsonObject &json)
|
||||
{
|
||||
json["Name"] = name_;
|
||||
json["ItemId"] = static_cast<double>(itemId_);
|
||||
json["Value"] = static_cast<double>(value_);
|
||||
}
|
||||
|
||||
void ItemData::load(const QJsonObject &json, const bool preserve)
|
||||
{
|
||||
if(!preserve)
|
||||
{
|
||||
name_ = json["Name"].toString(name_);
|
||||
itemId_ = static_cast<uint32_t>(json["ItemId"].toDouble(0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//item
|
||||
|
||||
bool Item::secondaryFlag = false;
|
||||
|
||||
Item::Item(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name,
|
||||
value)
|
||||
{
|
||||
|
|
@ -55,8 +71,7 @@ Item::~Item()
|
|||
|
||||
void Item::store(QJsonObject &json)
|
||||
{
|
||||
json["Name"] = name_;
|
||||
json["ItemId"] = static_cast<double>(itemId_);
|
||||
ItemData::store(json);
|
||||
json["override"] = override_;
|
||||
QJsonArray actorsArray;
|
||||
for(size_t i = 0; i < actors_.size(); ++i)
|
||||
|
|
@ -73,11 +88,7 @@ void Item::store(QJsonObject &json)
|
|||
|
||||
void Item::load(const QJsonObject &json, const bool preserve)
|
||||
{
|
||||
if(!preserve)
|
||||
{
|
||||
name_ = json["Name"].toString(name_);
|
||||
itemId_ = static_cast<uint32_t>(json["ItemId"].toDouble(0));
|
||||
}
|
||||
ItemData::load(json, preserve);
|
||||
override_ = json["override"].toBool(false);
|
||||
const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray()));
|
||||
for(int i = 0; i < actorsArray.size(); ++i)
|
||||
|
|
@ -92,28 +103,35 @@ void Item::load(const QJsonObject &json, const bool preserve)
|
|||
|
||||
void Item::actorSetValue(uint8_t value)
|
||||
{
|
||||
if(!override_) setValue(value);
|
||||
if(!override_ && (programMode == PROGRAM_MODE_PRIMARY || programMode == PROGRAM_MODE_HEADLESS_PRIMARY))
|
||||
setValue(value);
|
||||
}
|
||||
|
||||
void Item::setValue(uint8_t value)
|
||||
{
|
||||
value_ = value;
|
||||
valueChanged(value_);
|
||||
informValue(value);
|
||||
if(programMode == PROGRAM_MODE_PRIMARY || programMode == PROGRAM_MODE_HEADLESS_PRIMARY)
|
||||
enactValue(value);
|
||||
}
|
||||
|
||||
void Item::informValue(uint8_t value)
|
||||
{
|
||||
Item::setValue(value);
|
||||
value_ = value;
|
||||
valueChanged(value_);
|
||||
updated(*this);
|
||||
}
|
||||
|
||||
void Item::enactValue(uint8_t value)
|
||||
{
|
||||
(void)value;
|
||||
}
|
||||
|
||||
void Item::addActor(std::shared_ptr<Actor> actor)
|
||||
{
|
||||
actor->setParent(this);
|
||||
actors_.push_back(actor);
|
||||
if(!secondaryFlag)
|
||||
{
|
||||
if(programMode == PROGRAM_MODE_PRIMARY || programMode == PROGRAM_MODE_HEADLESS_PRIMARY)
|
||||
connect(actor.get(), &Actor::sigValue, this, &Item::actorSetValue);
|
||||
}
|
||||
connect(this, &Item::valueChanged, actor.get(), &Actor::onValueChanged);
|
||||
|
||||
std::shared_ptr<SensorActor> sensorActor = std::dynamic_pointer_cast<SensorActor>(actor);
|
||||
|
|
@ -167,5 +185,29 @@ bool Item::hasActors()
|
|||
|
||||
void Item::setActorsActive(bool in)
|
||||
{
|
||||
for(unsigned i = 0; i < actors_.size(); i++) in ? actors_[i]->makeActive() : actors_[i]->makeInactive();
|
||||
for(unsigned i = 0; i < actors_.size(); i++)
|
||||
in ? actors_[i]->makeActive() : actors_[i]->makeInactive();
|
||||
}
|
||||
|
||||
std::shared_ptr<Item> Item::loadItem(const QJsonObject& json)
|
||||
{
|
||||
std::shared_ptr<Item> newItem = nullptr;
|
||||
if(json["Type"].toString("") == "Relay")
|
||||
{
|
||||
newItem = std::shared_ptr<Relay>(new Relay);
|
||||
}
|
||||
else if(json["Type"].toString("") == "Message")
|
||||
{
|
||||
newItem = std::shared_ptr<MessageItem>(new MessageItem);
|
||||
}
|
||||
else if(json["Type"].toString("") == "System")
|
||||
{
|
||||
newItem = std::shared_ptr<SystemItem>(new SystemItem);
|
||||
}
|
||||
else if(json["Type"].toString("") == "Aux")
|
||||
{
|
||||
}
|
||||
if(newItem)
|
||||
newItem->load(json);
|
||||
return newItem;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue