/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, 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 TVDEVICE_H
#define TVDEVICE_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "integrations/integrationplugin.h"
#include "tveventhandler.h"
class TvDevice : public QObject
{
Q_OBJECT
public:
explicit TvDevice(const QHostAddress &hostAddress, const int &port, QObject *parent = 0);
enum RemoteKey{
Power = 1,
Num0 = 2,
Num1 = 3,
Num2 = 4,
Num3 = 5,
Num4 = 6,
Num5 = 7,
Num6 = 8,
Num7 = 9,
Num8 = 10,
Num9 = 11,
Up = 12,
Down = 13,
Left = 14,
Right = 15,
Ok = 20,
Home = 21,
Menu = 22,
Back = 23,
VolUp = 24,
VolDown = 25,
Mute = 26,
ChannelUp = 27,
ChannelDown = 28,
Blue = 29,
Green = 30,
Red = 31,
Yellow = 32,
Play = 33,
Pause = 34,
Stop = 35,
FastForward = 36,
Rewind = 37,
SkipForward = 38,
SkipBackward = 39,
Record = 40,
RecrodList = 41,
Repeat = 42,
LiveTv = 43,
EPG = 44,
Info = 45,
AspectRatio = 46,
ExternalInput = 47,
PIP = 48,
ChangeSub = 49,
ProgramList = 50,
TeleText = 51,
Mark = 52,
Video3D = 400,
LR_3D = 401,
Dash = 402,
PrevoiusChannel = 403,
FavouritChannel = 404,
QuickMenu = 405,
TextOption = 406,
AudioDescription= 407,
NetCastKey = 408,
EnergySaving = 409,
AV_Mode = 410,
SimpLink = 411,
Exit = 412,
ReservationList = 413,
PipUp = 414,
PipDown = 415,
SwitchVideo = 416,
MyApps = 417
};
// propertys
void setKey(const QString &key);
QString key() const;
void setHostAddress(const QHostAddress &hostAddress);
QHostAddress hostAddress() const;
void setPort(const int &port);
int port() const;
void setUuid(const QString &uuid);
QString uuid() const;
// States
void setPaired(const bool &paired);
bool paired() const;
void setReachable(const bool &reachable);
bool reachable() const;
bool is3DMode() const;
int volumeLevel() const;
bool mute() const;
QString channelType() const;
QString channelName() const;
int channelNumber() const;
QString programName() const;
int inputSourceIndex() const;
QString inputSourceLabelName() const;
// other methods
static QPair createDisplayKeyRequest(const QHostAddress &host, const int &port);
static QPair createPairingRequest(const QHostAddress &host, const int &port, const QString &key);
static QPair createEndPairingRequest(const QUrl &url);
static QPair createEndPairingRequest(const QHostAddress &host, const int &port);
static QPair createEventRequest(const QHostAddress &host, const int &port);
QPair createPressButtonRequest(const TvDevice::RemoteKey &key);
QNetworkRequest createVolumeInformationRequest();
QNetworkRequest createChannelInformationRequest();
void onVolumeInformationUpdate(const QByteArray &data);
void onChannelInformationUpdate(const QByteArray &data);
private:
TvEventHandler *m_eventHandler;
QHostAddress m_hostAddress;
int m_port;
QString m_uuid;
QString m_key;
// States
bool m_paired;
bool m_reachable;
bool m_is3DMode;
bool m_mute;
int m_volumeLevel;
int m_inputSourceIndex;
int m_channelNumber;
QString m_channelType;
QString m_channelName;
QString m_programName;
QString m_inputSourceLabel;
QString printXmlData(const QByteArray &data);
signals:
void stateChanged();
private slots:
void eventOccured(const QByteArray &data);
};
#endif // TVDEVICE_H