diff --git a/libnymea/hardware/electricity.h b/libnymea/hardware/electricity.h new file mode 100644 index 00000000..6e423e30 --- /dev/null +++ b/libnymea/hardware/electricity.h @@ -0,0 +1,87 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +* +* Copyright 2013 - 2022, nymea GmbH +* Contact: contact@nymea.io +* +* This file is part of nymea. +* This project including source code and documentation is protected by +* copyright law, and remains the property of nymea GmbH. All rights, including +* reproduction, publication, editing and translation, are reserved. The use of +* this project is subject to the terms of a license agreement to be concluded +* with nymea GmbH in accordance with the terms of use of nymea GmbH, available +* under https://nymea.io/license +* +* GNU Lesser General Public License Usage +* Alternatively, this project may be redistributed and/or modified under the +* terms of the GNU Lesser General Public License as published by the Free +* Software Foundation; version 3. This project is distributed in the hope that +* it will be useful, but WITHOUT ANY WARRANTY; without even the implied +* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this project. If not, see . +* +* For any further details and any questions please contact us under +* contact@nymea.io or see our FAQ/Licensing Information on +* https://nymea.io/license/faq +* +* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef ELECTRICITY_H +#define ELECTRICITY_H + +#include "libnymea.h" + +#include +#include + +class LIBNYMEA_EXPORT Electricity +{ + Q_GADGET +public: + enum Phase { + PhaseNone = 0x00, + PhaseA = 0x01, + PhaseB = 0x02, + PhaseC = 0x04, + PhaseAll = 0x07, + PhaseUnknown = 0xff + }; + Q_DECLARE_FLAGS(Phases, Phase) + Q_FLAG(Phases) + + static Phases convertPhasesFromString(const QString &phasesString) { + Phases phases = PhaseUnknown; + + if (phasesString.contains("A")) + phases |= PhaseA; + + if (phasesString.contains("B")) + phases |= PhaseB; + + if (phasesString.contains("C")) + phases |= PhaseC; + + return phases; + }; + + static uint getPhaseCount(Phases phases) { + uint count = 0; + + if (phases.testFlag(PhaseA)) + count++; + + if (phases.testFlag(PhaseB)) + count++; + + if (phases.testFlag(PhaseC)) + count++; + + return count; + } +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(Electricity::Phases) + +#endif // ELECTRICITY_H diff --git a/libnymea/libnymea.pro b/libnymea/libnymea.pro index 5be73135..414a969e 100644 --- a/libnymea/libnymea.pro +++ b/libnymea/libnymea.pro @@ -14,6 +14,7 @@ PKGCONFIG += nymea-zigbee nymea-mqtt nymea-gpio QMAKE_LFLAGS += -fPIC HEADERS += \ + hardware/electricity.h \ hardware/modbus/modbusrtuhardwareresource.h \ hardware/modbus/modbusrtumaster.h \ hardware/modbus/modbusrtureply.h \