move from tabs to spaces

This commit is contained in:
uvos 2022-04-15 13:28:47 +02:00
parent a6aad07f05
commit fa45072998
86 changed files with 2611 additions and 2486 deletions

View file

@ -1,18 +1,19 @@
#include "auxitem.h"
AuxItem::AuxItem(Microcontroller* micro, uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value, parent), micro_(micro)
AuxItem::AuxItem(Microcontroller* micro, uint32_t itemIdIn, QString name, uint8_t value,
QObject* parent): Item(itemIdIn, name, value, parent), micro_(micro)
{
}
void AuxItem::setValue(uint8_t value)
{
Item::setValue(value);
micro_->setAuxPwm(value);
Item::setValue(value);
micro_->setAuxPwm(value);
}
void AuxItem::store(QJsonObject &json)
{
json["Type"] = "Aux";
Item::store(json);
json["Type"] = "Aux";
Item::store(json);
}

View file

@ -5,16 +5,17 @@
class AuxItem: public Item
{
Q_OBJECT
Q_OBJECT
private:
Microcontroller* micro_;
Microcontroller* micro_;
public slots:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
AuxItem(Microcontroller* micro, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
AuxItem(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(QJsonObject& json);
};

View file

@ -15,22 +15,22 @@ ItemData::ItemData(uint32_t itemIdIn, QString name, uint8_t value): name_(name),
QString ItemData::getName() const
{
return name_;
return name_;
}
void ItemData::setName(QString name)
{
name_ = name;
name_ = name;
}
uint8_t ItemData::getValue() const
{
return value_;
return value_;
}
uint32_t ItemData::id() const
{
return itemId_;
return itemId_;
}
@ -38,7 +38,8 @@ uint32_t ItemData::id() const
bool Item::secondaryFlag = false;
Item::Item(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name, value)
Item::Item(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent): QObject(parent), ItemData (itemIdIn, name,
value)
{
}
@ -54,116 +55,117 @@ Item::~Item()
void Item::store(QJsonObject &json)
{
json["Name"] = name_;
json["ItemId"] = static_cast<double>(itemId_);
json["override"] = override_;
QJsonArray actorsArray;
for(size_t i = 0; i < actors_.size(); ++i)
{
if(!actors_[i]->isExausted())
{
QJsonObject actorObject;
actors_[i]->store(actorObject);
actorsArray.append(actorObject);
}
}
json["Actors"] = actorsArray;
json["Name"] = name_;
json["ItemId"] = static_cast<double>(itemId_);
json["override"] = override_;
QJsonArray actorsArray;
for(size_t i = 0; i < actors_.size(); ++i)
{
if(!actors_[i]->isExausted())
{
QJsonObject actorObject;
actors_[i]->store(actorObject);
actorsArray.append(actorObject);
}
}
json["Actors"] = actorsArray;
}
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));
}
override_ = json["override"].toBool(false);
const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray()));
for(int i = 0; i < actorsArray.size(); ++i)
{
if(actorsArray[i].isObject())
{
std::shared_ptr<Actor> actor = Actor::loadActor(actorsArray[i].toObject());
if(actor != nullptr) addActor(actor);
}
}
if(!preserve)
{
name_ = json["Name"].toString(name_);
itemId_ = static_cast<uint32_t>(json["ItemId"].toDouble(0));
}
override_ = json["override"].toBool(false);
const QJsonArray actorsArray(json["Actors"].toArray(QJsonArray()));
for(int i = 0; i < actorsArray.size(); ++i)
{
if(actorsArray[i].isObject())
{
std::shared_ptr<Actor> actor = Actor::loadActor(actorsArray[i].toObject());
if(actor != nullptr) addActor(actor);
}
}
}
void Item::actorSetValue(uint8_t value)
{
if(!override_) setValue(value);
if(!override_) setValue(value);
}
void Item::setValue(uint8_t value)
{
value_ = value;
valueChanged(value_);
value_ = value;
valueChanged(value_);
}
void Item::informValue(uint8_t value)
{
Item::setValue(value);
Item::setValue(value);
}
void Item::addActor(std::shared_ptr<Actor> actor)
{
actor->setParent(this);
actors_.push_back(actor);
if(!secondaryFlag)
{
connect(actor.get(), &Actor::sigValue, this, &Item::actorSetValue);
}
connect(this, &Item::valueChanged, actor.get(), &Actor::onValueChanged);
actor->setParent(this);
actors_.push_back(actor);
if(!secondaryFlag)
{
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);
if(sensorActor)connect(&globalSensors, &SensorStore::sensorChangedState, sensorActor.get(), &SensorActor::sensorEvent);
std::shared_ptr<SensorActor> sensorActor = std::dynamic_pointer_cast<SensorActor>(actor);
if(sensorActor)connect(&globalSensors, &SensorStore::sensorChangedState, sensorActor.get(), &SensorActor::sensorEvent);
std::shared_ptr<Regulator> regulator = std::dynamic_pointer_cast<Regulator>(actor);
if(regulator)connect(&globalSensors, &SensorStore::sensorChangedState, regulator.get(), &Regulator::sensorEvent);
std::shared_ptr<Regulator> regulator = std::dynamic_pointer_cast<Regulator>(actor);
if(regulator)connect(&globalSensors, &SensorStore::sensorChangedState, regulator.get(), &Regulator::sensorEvent);
std::shared_ptr<PolynomalActor> polynomalActor = std::dynamic_pointer_cast<PolynomalActor>(actor);
if(polynomalActor != nullptr )connect(&globalSensors, &SensorStore::sensorChangedState, polynomalActor.get(), &PolynomalActor::sensorEvent);
std::shared_ptr<PolynomalActor> polynomalActor = std::dynamic_pointer_cast<PolynomalActor>(actor);
if(polynomalActor != nullptr )connect(&globalSensors, &SensorStore::sensorChangedState, polynomalActor.get(),
&PolynomalActor::sensorEvent);
}
bool Item::removeActor(std::shared_ptr<Actor> actor)
{
for(unsigned int i = 0; i < actors_.size(); i++)
{
if(actors_[i] == actor)
{
actors_.erase(actors_.begin()+i);
return true;
}
}
return false;
for(unsigned int i = 0; i < actors_.size(); i++)
{
if(actors_[i] == actor)
{
actors_.erase(actors_.begin()+i);
return true;
}
}
return false;
}
void Item::setOverride(const bool in)
{
override_ = in;
override_ = in;
}
bool Item::getOverride()
{
return override_;
return override_;
}
void Item::removeAllActors()
{
actors_.clear();
actors_.clear();
}
std::vector< std::shared_ptr<Actor> >& Item::getActors()
{
return actors_;
return actors_;
}
bool Item::hasActors()
{
return actors_.size() > 0;
return actors_.size() > 0;
}
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();
}

View file

@ -11,67 +11,74 @@ class Actor;
class ItemData
{
protected:
QString name_;
uint8_t value_;
uint32_t itemId_;
QString name_;
uint8_t value_;
uint32_t itemId_;
public:
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0);
ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0);
inline bool operator==(const ItemData& in) const{ return itemId_==in.itemId_; }
inline bool operator!=(const ItemData& in) const{ return itemId_!=in.itemId_; }
inline bool operator==(const ItemData& in) const
{
return itemId_==in.itemId_;
}
inline bool operator!=(const ItemData& in) const
{
return itemId_!=in.itemId_;
}
uint32_t id() const;
uint32_t id() const;
void setName(QString name);
uint8_t getValue() const;
virtual QString getName() const;
void setName(QString name);
uint8_t getValue() const;
virtual QString getName() const;
};
class Item: public QObject, public ItemData
{
Q_OBJECT
Q_OBJECT
private:
std::vector< std::shared_ptr<Actor> > actors_;
std::vector< std::shared_ptr<Actor> > actors_;
bool override_ = false;
bool override_ = false;
public:
static bool secondaryFlag;
static bool secondaryFlag;
signals:
void valueChanged(uint8_t value);
void valueChanged(uint8_t value);
private slots:
virtual void actorSetValue(uint8_t value);
virtual void actorSetValue(uint8_t value);
public slots:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0, QObject *parent = nullptr);
Item(const ItemData& itemData, QObject *parent = nullptr);
Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0,
QObject *parent = nullptr);
Item(const ItemData& itemData, QObject *parent = nullptr);
virtual ~Item();
virtual ~Item();
std::vector< std::shared_ptr<Actor> >& getActors();
bool hasActors();
void addActor(std::shared_ptr<Actor> actor);
bool removeActor(std::shared_ptr<Actor> actor);
void removeAllActors();
void setActorsActive(bool in);
void setOverride(const bool in);
bool getOverride();
void informValue(uint8_t value);
std::vector< std::shared_ptr<Actor> >& getActors();
bool hasActors();
void addActor(std::shared_ptr<Actor> actor);
bool removeActor(std::shared_ptr<Actor> actor);
void removeAllActors();
void setActorsActive(bool in);
void setOverride(const bool in);
bool getOverride();
void informValue(uint8_t value);
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
};

View file

@ -10,121 +10,121 @@ ItemStore::ItemStore(QObject *parent): QObject(parent)
void ItemStore::addItem(std::shared_ptr<Item> item)
{
bool mached = false;
for(unsigned i = 0; i < items_.size(); i++ ) if(*items_[i] == *item) mached = true;
if(!mached)
{
items_.push_back(std::shared_ptr<Item>(item));
itemAdded(std::weak_ptr<Item>(items_.back()));
}
bool mached = false;
for(unsigned i = 0; i < items_.size(); i++ ) if(*items_[i] == *item) mached = true;
if(!mached)
{
items_.push_back(std::shared_ptr<Item>(item));
itemAdded(std::weak_ptr<Item>(items_.back()));
}
}
void ItemStore::addItems(const std::vector<std::shared_ptr<Item>>& itemIn)
{
for(unsigned i = 0; i < items_.size(); i++ )
{
if(Relay* relay = dynamic_cast<Relay*>(items_[i].get()))
{
bool mached = false;
for(unsigned j = 0; j < itemIn.size(); j++) if(*(items_[i]) == *(itemIn[j]))
{
mached = true;
if(itemIn[j]->getValue() != items_[i]->getValue()) items_[i]->informValue(itemIn[j]->getValue());
Relay* relayIn = dynamic_cast<Relay*>(itemIn[j].get());
if(relayIn)
{
if(relay->getId() != relayIn->getId()) relay->setId(relayIn->getId());
}
for(unsigned i = 0; i < items_.size(); i++ )
{
if(Relay* relay = dynamic_cast<Relay*>(items_[i].get()))
{
bool mached = false;
for(unsigned j = 0; j < itemIn.size(); j++) if(*(items_[i]) == *(itemIn[j]))
{
mached = true;
if(itemIn[j]->getValue() != items_[i]->getValue()) items_[i]->informValue(itemIn[j]->getValue());
Relay* relayIn = dynamic_cast<Relay*>(itemIn[j].get());
if(relayIn)
{
if(relay->getId() != relayIn->getId()) relay->setId(relayIn->getId());
}
}
if(!mached)
{
itemDeleted(*items_[i].get());
items_.erase(items_.begin()+i);
}
}
}
}
if(!mached)
{
itemDeleted(*items_[i].get());
items_.erase(items_.begin()+i);
}
}
}
for(unsigned j = 0; j < itemIn.size(); j++)addItem(itemIn[j]);
for(unsigned j = 0; j < itemIn.size(); j++)addItem(itemIn[j]);
}
void ItemStore::removeItem(const ItemData& item)
{
for(unsigned j = 0; j < items_.size(); j++)
{
if(item == *items_[j])
{
items_.erase(items_.begin()+j);
--j;
}
}
for(unsigned j = 0; j < items_.size(); j++)
{
if(item == *items_[j])
{
items_.erase(items_.begin()+j);
--j;
}
}
}
void ItemStore::clear()
{
for(size_t i = 0; i < items_.size(); ++i) itemDeleted(*items_[i]);
items_.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++ )
{
if(items_[i]->operator==(item))
{
for(unsigned i = 0; i < items_.size(); i++ )
{
if(items_[i]->operator==(item))
{
if(items_[i]->getValue() != item.getValue())items_[i]->informValue(item.getValue());
}
if(items_[i]->getValue() != item.getValue())items_[i]->informValue(item.getValue());
}
}
}
}
void ItemStore::store(QJsonObject& json)
{
QJsonArray itemsArray;
for(size_t i = 0; i < items_.size(); ++i)
{
QJsonObject itemObject;
items_[i]->store(itemObject);
itemsArray.append(itemObject);
}
json["Items"] = itemsArray;
QJsonArray itemsArray;
for(size_t i = 0; i < items_.size(); ++i)
{
QJsonObject itemObject;
items_[i]->store(itemObject);
itemsArray.append(itemObject);
}
json["Items"] = itemsArray;
}
void ItemStore::load(const QJsonObject& json)
{
const QJsonArray itemsArray(json["Items"].toArray(QJsonArray()));
for(int i = 0; i < itemsArray.size(); ++i)
{
if(itemsArray[i].isObject())
{
const QJsonObject itemObject = itemsArray[i].toObject();
std::shared_ptr<Item> newItem;
if(itemObject["Type"].toString("") == "Relay")
{
newItem = std::shared_ptr<Relay>(new Relay());
}
else if(itemObject["Type"].toString("") == "Message")
{
newItem = std::shared_ptr<MessageItem>(new MessageItem);
}
else if(itemObject["Type"].toString("") == "System")
{
newItem = std::shared_ptr<SystemItem>(new SystemItem());
}
else if(itemObject["Type"].toString("") == "Aux")
{
}
if(newItem)
{
newItem->load(itemObject);
addItem(newItem);
}
}
}
const QJsonArray itemsArray(json["Items"].toArray(QJsonArray()));
for(int i = 0; i < itemsArray.size(); ++i)
{
if(itemsArray[i].isObject())
{
const QJsonObject itemObject = itemsArray[i].toObject();
std::shared_ptr<Item> newItem;
if(itemObject["Type"].toString("") == "Relay")
{
newItem = std::shared_ptr<Relay>(new Relay());
}
else if(itemObject["Type"].toString("") == "Message")
{
newItem = std::shared_ptr<MessageItem>(new MessageItem);
}
else if(itemObject["Type"].toString("") == "System")
{
newItem = std::shared_ptr<SystemItem>(new SystemItem());
}
else if(itemObject["Type"].toString("") == "Aux")
{
}
if(newItem)
{
newItem->load(itemObject);
addItem(newItem);
}
}
}
}

View file

@ -8,31 +8,34 @@
class ItemStore: public QObject
{
Q_OBJECT
Q_OBJECT
private:
std::vector< std::shared_ptr<Item> > items_;
std::vector< std::shared_ptr<Item> > items_;
public:
ItemStore(QObject *parent = nullptr);
virtual ~ItemStore(){}
ItemStore(QObject *parent = nullptr);
virtual ~ItemStore() {}
inline std::vector< std::shared_ptr<Item> >* getItems(){ return &items_; }
inline std::vector< std::shared_ptr<Item> >* getItems()
{
return &items_;
}
void store(QJsonObject &json);
void load(const QJsonObject &json);
void store(QJsonObject &json);
void load(const QJsonObject &json);
void clear();
void clear();
signals:
void itemDeleted(ItemData item);
void itemAdded(std::weak_ptr<Item> Item);
void itemDeleted(ItemData item);
void itemAdded(std::weak_ptr<Item> Item);
public slots:
void removeItem(const ItemData& item);
void addItem(std::shared_ptr<Item> item);
void addItems(const std::vector<std::shared_ptr<Item>>& itemsIn);
void itemStateChanged(const ItemData& item);
void removeItem(const ItemData& item);
void addItem(std::shared_ptr<Item> item);
void addItems(const std::vector<std::shared_ptr<Item>>& itemsIn);
void itemStateChanged(const ItemData& item);
};

View file

@ -6,83 +6,83 @@
BroadCast* MessageItem::broadCast = nullptr;
MessageItem::MessageItem(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent):
Item(itemIdIn, name, value, parent)
Item(itemIdIn, name, value, parent)
{
}
MessageItem::MessageItem(const ItemData& itemData, QObject *parent):
Item(itemData, parent)
Item(itemData, parent)
{
}
MessageItem::~MessageItem()
{
closeMessageBox();
closeMessageBox();
}
void MessageItem::setValue(uint8_t value)
{
Item::setValue(value);
if(value && !messageBox_)
{
if(broadCast) broadCast->sendMessage(name_, message_);
if(!alertSoundFileName.isEmpty()) QSound::play(alertSoundFileName);
messageBox_ = new QMessageBox(QMessageBox::NoIcon, name_, message_);
messageBox_->setModal(false);
connect(messageBox_, &QMessageBox::finished, this, &MessageItem::closeMessageBox);
messageBox_->show();
}
else if(!value && messageBox_)
{
closeMessageBox();
}
Item::setValue(value);
if(value && !messageBox_)
{
if(broadCast) broadCast->sendMessage(name_, message_);
if(!alertSoundFileName.isEmpty()) QSound::play(alertSoundFileName);
messageBox_ = new QMessageBox(QMessageBox::NoIcon, name_, message_);
messageBox_->setModal(false);
connect(messageBox_, &QMessageBox::finished, this, &MessageItem::closeMessageBox);
messageBox_->show();
}
else if(!value && messageBox_)
{
closeMessageBox();
}
}
void MessageItem::closeMessageBox()
{
if(messageBox_)
{
value_ = 0;
messageBox_->hide();
delete messageBox_;
messageBox_ = nullptr;
}
if(messageBox_)
{
value_ = 0;
messageBox_->hide();
delete messageBox_;
messageBox_ = nullptr;
}
}
QString MessageItem::getAlert()
{
return alertSoundFileName;
return alertSoundFileName;
}
void MessageItem::setAlert(const QString &in)
{
alertSoundFileName = in;
alertSoundFileName = in;
}
void MessageItem::setMessage(const QString& in)
{
message_ = in;
message_ = in;
}
QString MessageItem::getMessage()
{
return message_;
return message_;
}
void MessageItem::store(QJsonObject &json)
{
json["Type"] = "Message";
Item::store(json);
json["Message"] = message_;
if(!alertSoundFileName.isEmpty()) json["Alert"] = alertSoundFileName;
json["Type"] = "Message";
Item::store(json);
json["Message"] = message_;
if(!alertSoundFileName.isEmpty()) json["Alert"] = alertSoundFileName;
}
void MessageItem::load(const QJsonObject &json, const bool preserve)
{
Item::load(json,preserve);
message_ = json["Message"].toString("Invalid Message");
alertSoundFileName = json["Alert"].toString("");
Item::load(json,preserve);
message_ = json["Message"].toString("Invalid Message");
alertSoundFileName = json["Alert"].toString("");
}

View file

@ -8,37 +8,38 @@
class MessageItem : public Item
{
Q_OBJECT
Q_OBJECT
private:
QString message_;
QMessageBox* messageBox_ = nullptr;
QString alertSoundFileName = "";
QString message_;
QMessageBox* messageBox_ = nullptr;
QString alertSoundFileName = "";
public:
static BroadCast* broadCast;
static BroadCast* broadCast;
private slots:
void closeMessageBox();
void closeMessageBox();
public:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
MessageItem(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0, QObject *parent = nullptr);
MessageItem(const ItemData& itemData, QObject *parent = nullptr);
~MessageItem();
MessageItem(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0,
QObject *parent = nullptr);
MessageItem(const ItemData& itemData, QObject *parent = nullptr);
~MessageItem();
void setMessage(const QString& in);
QString getMessage();
void setAlert(const QString& in);
QString getAlert();
void setMessage(const QString& in);
QString getMessage();
void setAlert(const QString& in);
QString getAlert();
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
};
#endif // MESSAGEITEM_H

View file

@ -3,31 +3,32 @@
#include <QApplication>
#include <QDebug>
PowerItem::PowerItem(uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value, parent)
PowerItem::PowerItem(uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value,
parent)
{
stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 0, "Shutdown Imminent", true));
setValue(true);
stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 0, "Shutdown Imminent", true));
setValue(true);
}
void PowerItem::setValue(uint8_t value)
{
qDebug()<<"shutdown";
Item::setValue(value);
if(!value)
{
QTimer::singleShot(5000, this, &PowerItem::timeout);
stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 1, "Shutdown Imminent", true));
}
qDebug()<<"shutdown";
Item::setValue(value);
if(!value)
{
QTimer::singleShot(5000, this, &PowerItem::timeout);
stateChanged(Sensor(Sensor::TYPE_SHUTDOWN_IMMINENT, 0, 1, "Shutdown Imminent", true));
}
}
void PowerItem::timeout()
{
qDebug()<<"shutdown timeout";
QProcess::startDetached("syncoff");
qDebug()<<"shutdown timeout";
QProcess::startDetached("syncoff");
}
void PowerItem::store(QJsonObject& json)
{
json["Type"] = "Power";
Item::store(json);
json["Type"] = "Power";
Item::store(json);
}

View file

@ -8,23 +8,27 @@
class PowerItem: public Item
{
Q_OBJECT
Q_OBJECT
private:
signals:
void stateChanged(Sensor sensor);
void stateChanged(Sensor sensor);
private slots:
void timeout();
void timeout();
public slots:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
PowerItem(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, "Shutdown Imminent", true));}
virtual void store(QJsonObject& json);
PowerItem(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, "Shutdown Imminent", true));
}
virtual void store(QJsonObject& json);
};

View file

@ -5,66 +5,67 @@
Microcontroller* Relay::micro_ = nullptr;
Relay::Relay(uint8_t id, QString name, uint16_t address, bool state, QObject* parent): Item(0, name, state, parent), id_(id), address_(address)
Relay::Relay(uint8_t id, QString name, uint16_t address, bool state, QObject* parent): Item(0, name, state, parent),
id_(id), address_(address)
{
itemId_ = address | ((uint32_t)id << 16);
qDebug()<<"Relay "<<id_<<"Name "<<name<<" id "<<itemId_<<" state "<<state<<" addr: "<<address;
itemId_ = address | ((uint32_t)id << 16);
qDebug()<<"Relay "<<id_<<"Name "<<name<<" id "<<itemId_<<" state "<<state<<" addr: "<<address;
}
void Relay::setValue(uint8_t value)
{
Item::setValue(value);
if(micro_)
{
if(value)micro_->relayOn(id_);
else micro_->relayOff(id_);
}
Item::setValue(value);
if(micro_)
{
if(value)micro_->relayOn(id_);
else micro_->relayOff(id_);
}
}
void Relay::on()
{
setValue(true);
setValue(true);
}
void Relay::off()
{
setValue(false);
setValue(false);
}
void Relay::toggle()
{
value_ ? off() : on();
value_ ? off() : on();
}
void Relay::store(QJsonObject& json)
{
json["Type"] = "Relay";
Item::store(json);
json["Id"] = static_cast<double>(id_);
json["Address"] = address_;
json["Type"] = "Relay";
Item::store(json);
json["Id"] = static_cast<double>(id_);
json["Address"] = address_;
}
void Relay::load(const QJsonObject& json, const bool preserve)
{
Item::load(json, preserve);
id_ = static_cast<uint8_t>(json["Id"].toInt(0));
address_ = static_cast<uint16_t>(json["Address"].toInt(0));
itemId_ = address_ | (static_cast<uint32_t>(id_) << 16);
Item::load(json, preserve);
id_ = static_cast<uint8_t>(json["Id"].toInt(0));
address_ = static_cast<uint16_t>(json["Address"].toInt(0));
itemId_ = address_ | (static_cast<uint32_t>(id_) << 16);
}
uint16_t Relay::getAddress() const
{
return address_;
return address_;
}
uint8_t Relay::getId() const
{
return id_;
return id_;
}
void Relay::setId(uint8_t id)
{
id_=id;
itemId_ = address_ | ((uint32_t)id << 16);
id_=id;
itemId_ = address_ | ((uint32_t)id << 16);
}

View file

@ -11,30 +11,33 @@ class Microcontroller;
class Relay : public Item
{
Q_OBJECT
Q_OBJECT
private:
static Microcontroller* micro_;
static Microcontroller* micro_;
uint8_t id_;
uint16_t address_;
uint8_t id_;
uint16_t address_;
public slots:
virtual void setValue(uint8_t value);
void on();
void off();
void toggle();
virtual void setValue(uint8_t value);
void on();
void off();
void toggle();
public:
Relay(uint8_t id = 0, QString name = "", uint16_t address = 0, bool state = false, QObject* parent = nullptr);
Relay(uint8_t id = 0, QString name = "", uint16_t address = 0, bool state = false, QObject* parent = nullptr);
uint16_t getAddress() const;
uint8_t getId() const;
void setId(uint8_t id);
uint16_t getAddress() const;
uint8_t getId() const;
void setId(uint8_t id);
inline static void setMicrocontroller(Microcontroller* micro){ micro_ = micro; }
inline static void setMicrocontroller(Microcontroller* micro)
{
micro_ = micro;
}
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
};
#endif // RELAY_H

View file

@ -1,18 +1,19 @@
#include "rgbitem.h"
RgbItem::RgbItem(Microcontroller* micro, uint32_t itemIdIn, QString name, uint8_t value, QObject* parent): Item(itemIdIn, name, value, parent), micro_(micro)
RgbItem::RgbItem(Microcontroller* micro, uint32_t itemIdIn, QString name, uint8_t value,
QObject* parent): Item(itemIdIn, name, value, parent), micro_(micro)
{
}
void RgbItem::setValue(uint8_t value)
{
Item::setValue(value);
value ? micro_->rgbOn() : micro_->rgbOff();
Item::setValue(value);
value ? micro_->rgbOn() : micro_->rgbOff();
}
void RgbItem::store(QJsonObject &json)
{
json["Type"] = "Rgb";
Item::store(json);
json["Type"] = "Rgb";
Item::store(json);
}

View file

@ -5,16 +5,17 @@
class RgbItem: public Item
{
Q_OBJECT
Q_OBJECT
private:
Microcontroller* micro_;
Microcontroller* micro_;
public slots:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
RgbItem(Microcontroller* micro, uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "", uint8_t value = 0, QObject* parent = nullptr);
RgbItem(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(QJsonObject& json);
};

View file

@ -3,41 +3,41 @@
void SystemItem::setValue(uint8_t value)
{
QProcess::execute(value ? onCommand_ : offCommand_);
QProcess::execute(value ? onCommand_ : offCommand_);
}
SystemItem::SystemItem(uint32_t itemIdIn, QString name, uint8_t value, QObject *parent):
Item(itemIdIn, name, value, parent)
Item(itemIdIn, name, value, parent)
{
}
SystemItem::SystemItem(const ItemData& itemData, QObject *parent):
Item(itemData, parent)
Item(itemData, parent)
{
}
void SystemItem::setOnCommand(const QString& in)
{
onCommand_ = in;
onCommand_ = in;
}
void SystemItem::setOffCommand(const QString& in)
{
offCommand_ = in;
offCommand_ = in;
}
void SystemItem::store(QJsonObject& json)
{
json["Type"] = "System";
Item::store(json);
json["OnCommand"] = onCommand_;
json["OffCommand"] = offCommand_;
json["Type"] = "System";
Item::store(json);
json["OnCommand"] = onCommand_;
json["OffCommand"] = offCommand_;
}
void SystemItem::load(const QJsonObject& json, const bool preserve)
{
Item::load(json,preserve);
onCommand_ = json["OnCommand"].toString("");
offCommand_ = json["OffCommand"].toString("");
Item::load(json,preserve);
onCommand_ = json["OnCommand"].toString("");
offCommand_ = json["OffCommand"].toString("");
}

View file

@ -6,29 +6,36 @@
class SystemItem : public Item
{
Q_OBJECT
Q_OBJECT
private:
QString onCommand_;
QString offCommand_;
QString onCommand_;
QString offCommand_;
public:
virtual void setValue(uint8_t value);
virtual void setValue(uint8_t value);
public:
SystemItem(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0, QObject *parent = nullptr);
SystemItem(const ItemData& itemData, QObject *parent = nullptr);
~SystemItem() = default;
SystemItem(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0,
QObject *parent = nullptr);
SystemItem(const ItemData& itemData, QObject *parent = nullptr);
~SystemItem() = default;
void setOnCommand(const QString& in);
void setOffCommand(const QString& in);
QString getOnCommand(){return onCommand_;}
QString getOffCommand(){return offCommand_;}
void setOnCommand(const QString& in);
void setOffCommand(const QString& in);
QString getOnCommand()
{
return onCommand_;
}
QString getOffCommand()
{
return offCommand_;
}
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
virtual void store(QJsonObject& json);
virtual void load(const QJsonObject& json, const bool preserve = false);
};
#endif // SYSTEMITEM_H