mirror of https://github.com/nymea/nymea.git
188 lines
6.0 KiB
C++
188 lines
6.0 KiB
C++
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* *
|
|
* Copyright (C) 2015 Simon Stuerz <simon.stuerz@guh.guru> *
|
|
* *
|
|
* This file is part of guh. *
|
|
* *
|
|
* Guh is free software: you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation, version 2 of the License. *
|
|
* *
|
|
* Guh 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 General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with guh. If not, see <http://www.gnu.org/licenses/>. *
|
|
* *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#ifndef TVDEVICE_H
|
|
#define TVDEVICE_H
|
|
|
|
#include <QObject>
|
|
#include <QUrl>
|
|
#include <QHostAddress>
|
|
#include <QNetworkAccessManager>
|
|
#include <QNetworkReply>
|
|
#include <QNetworkRequest>
|
|
#include <QUrl>
|
|
#include <QXmlStreamReader>
|
|
#include <QXmlReader>
|
|
#include <QXmlStreamWriter>
|
|
#include <QXmlStreamAttributes>
|
|
|
|
#include "plugin/deviceplugin.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<QNetworkRequest, QByteArray> createDisplayKeyRequest(const QHostAddress &host, const int &port);
|
|
static QPair<QNetworkRequest, QByteArray> createPairingRequest(const QHostAddress &host, const int &port, const QString &key);
|
|
static QPair<QNetworkRequest, QByteArray> createEndPairingRequest(const QUrl &url);
|
|
static QPair<QNetworkRequest, QByteArray> createEndPairingRequest(const QHostAddress &host, const int &port);
|
|
QPair<QNetworkRequest, QByteArray> 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
|