From cd1a7f3bcbaef1e9c23549f472bce4ae42b2afad Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Wed, 8 Jan 2020 23:00:14 -0800 Subject: libqtappfw: add initial HVAC support To remove QML handling of websockets this patchset is required to move it to libqtappfw access. Bug-AGL: SPEC-2984 Change-Id: Ieef6174d2ae7adec2fcaadf44fcb22cf86c7138d Signed-off-by: Matt Ranostay --- hvac/hvac.cpp | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 hvac/hvac.cpp (limited to 'hvac/hvac.cpp') diff --git a/hvac/hvac.cpp b/hvac/hvac.cpp new file mode 100644 index 0000000..507cfeb --- /dev/null +++ b/hvac/hvac.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2020 Konsulko Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "message.h" +#include "messageengine.h" +#include "hvac.h" +#include "hvacmessage.h" +#include "responsemessage.h" + +// TODO: don't duplicate defaults from HVAC service here +HVAC::HVAC (QUrl &url, QObject * parent) : + QObject(parent), + m_mloop(nullptr), + m_fanspeed(0), + m_temp_left_zone(21), + m_temp_right_zone(21) +{ + m_mloop = new MessageEngine(url); + QObject::connect(m_mloop, &MessageEngine::messageReceived, this, &HVAC::onMessageReceived); +} + +HVAC::~HVAC() +{ + delete m_mloop; +} + +void HVAC::control(QString verb, QString field, int value) +{ + HVACMessage *tmsg = new HVACMessage(); + QJsonObject parameter; + + parameter.insert(field, value); + tmsg->createRequest(verb, parameter); + m_mloop->sendMessage(tmsg); + delete tmsg; +} + +void HVAC::set_fanspeed(int speed) +{ + control("set", "FanSpeed", speed); + emit fanSpeedChanged(speed); +} + +void HVAC::set_temp_left_zone(int temp) +{ + control("set", "LeftTemperature", temp); + control("set", "LeftLed", temp); + emit leftTemperatureChanged(temp); +} + +void HVAC::set_temp_right_zone(int temp) +{ + + control("set", "RightTemperature", temp); + control("set", "RightLed", temp); + emit rightTemperatureChanged(temp); +} + +void HVAC::onMessageReceived(MessageType type, Message *msg) +{ + if (msg->isEvent() && type == HVACEventMessage) { + HVACMessage *tmsg = qobject_cast(msg); + + if (tmsg->isLanguageEvent()) { + // TODO: cannot be currently tested with identity service + QVariantMap data = tmsg->eventData().toVariantMap(); + emit languageChanged(data.value("language").toString()); + } + } +} -- cgit 1.2.3-korg