#include "relay.h" #include "../microcontroller.h" //Relay Relay::Relay(SensorStore* sensors, Microcontroller* micro, uint8_t id, QString name, uint16_t address, bool state, QObject* parent): Item(sensors, 0, name, state, parent), micro_(micro), id_(id), address_(address) { itemId_ = address | ((uint32_t)id << 16); } void Relay::setValue(uint8_t value) { Item::setValue(value); if(value)micro_->relayOn(id_); else micro_->relayOff(id_); } void Relay::on() { setValue(true); } void Relay::off() { setValue(false); } void Relay::toggle() { value_ ? off() : on(); } void Relay::store(QJsonObject& json) { json["Type"] = "Relay"; Item::store(json); json["Id"] = static_cast(id_); json["Address"] = address_; } void Relay::load(const QJsonObject& json) { Item::load(json); id_ = static_cast(json["Id"].toInt(0)); address_ = static_cast(json["Address"].toInt(0)); itemId_ = address_ | (static_cast(id_) << 16); } void Relay::store(QString subsecton, QSettings* settings) { settings->setValue(subsecton + "Type", "Relay"); Item::store(subsecton, settings); settings->setValue(subsecton + "Id", static_cast(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_; } uint8_t Relay::getId() const { return id_; } void Relay::setId(uint8_t id) { id_=id; itemId_ = address_ | ((uint32_t)id << 16); }