1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
#pragma once
/*
* Copyright (C) 2005-2013 Team XBMC
* http://xbmc.org
*
* This Program 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; either version 2, or (at your option)
* any later version.
*
* This Program 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 XBMC; see the file COPYING. If not, see
* <http://www.gnu.org/licenses/>.
*
*/
#include <string>
#include "threads/Thread.h"
class CURL;
class TiXmlElement;
class CFileItem;
class CFileItemList;
struct STREAMINFO
{
std::string frontend;
std::string service_name;
std::string service_reference;
std::string provider;
std::string vpid;
std::string apid;
std::string pcrpid;
std::string tpid;
std::string tsid;
std::string onid;
std::string sid;
std::string pmt;
std::string video_format;
std::string supported_crypt_systems;
std::string used_crypt_systems;
std::string satellite;
std::string frequency;
std::string symbol_rate;
std::string polarisation;
std::string inversion;
std::string fec;
std::string snr;
std::string agc;
std::string ber;
std::string lock;
std::string sync;
};
struct VIDEOSUBCHANNEL
{
std::vector<std::string> reference;
std::vector<std::string> name;
std::vector<std::string> selected;
std::string current_name;
bool mode;
};
typedef struct AUDIOCHANNEL
{
std::string pid;
std::string selected;
std::string name;
} sAudioChannel;
struct CURRENTSERVICEDATA
{
std::string service_name;
std::string service_reference;
std::vector<AUDIOCHANNEL> audio_channels;
int requested_audio_channel;
std::string audio_track;
std::string current_event_date;
std::string current_event_time;
std::string current_event_start;
std::string current_event_duration;
std::string current_event_description;
std::string current_event_details;
std::string next_event_date;
std::string next_event_time;
std::string next_event_start;
std::string next_event_duration;
std::string next_event_description;
std::string next_event_details;
};
struct BOXSTATUS
{
std::string current_time;
std::string standby;
std::string recording;
std::string mode;
std::string ip;
};
struct BOXSINFO
{
std::string image_version;
std::string image_url;
std::string image_comment;
std::string image_catalog;
std::string firmware;
std::string fpfirmware;
std::string webinterface;
std::string model;
std::string manufacturer;
std::string processor;
std::string usbstick;
std::string disk;
};
struct SERVICE_EPG
{
std::string service_reference;
std::string service_name;
std::string image_comment;
std::string event;
std::string date;
std::string time;
std::string duration;
std::string descritption;
std::string genre;
std::string genrecategory;
std::string start;
std::string details;
};
struct ZAPSTREAM
{
bool initialized;
bool available;
};
class CTuxBoxUtil
{
public:
STREAMINFO sStrmInfo;
CURRENTSERVICEDATA sCurSrvData;
BOXSTATUS sBoxStatus;
BOXSINFO sBoxInfo;
SERVICE_EPG sServiceEPG;
VIDEOSUBCHANNEL vVideoSubChannel;
ZAPSTREAM sZapstream;
CTuxBoxUtil(void);
virtual ~CTuxBoxUtil(void);
bool GetZapUrl(const std::string& strPath, CFileItem &items);
static bool ParseBouquets(TiXmlElement *root, CFileItemList &items, CURL &url, std::string strFilter, std::string strChild);
static bool ParseBouquetsEnigma2(TiXmlElement *root, CFileItemList &items, CURL &url, std::string& strFilter, std::string& strChild);
static bool ParseChannels(TiXmlElement *root, CFileItemList &items, CURL &url, std::string strFilter, std::string strChild);
static bool ParseChannelsEnigma2(TiXmlElement *root, CFileItemList &items, CURL &url, std::string& strFilter, std::string& strChild);
bool ZapToUrl(CURL url, const std::string &pathOption);
bool StreamInformations(TiXmlElement *pRootElement);
bool CurrentServiceData(TiXmlElement *pRootElement);
bool BoxStatus(TiXmlElement *pRootElement);
bool BoxInfo(TiXmlElement *pRootElement);
bool ServiceEPG(TiXmlElement *pRootElement);
bool GetHttpXML(CURL url,std::string strRequestType);
bool GetGUIRequestedAudioChannel(AUDIOCHANNEL& sRequestedAC);
bool GetRequestedAudioChannel(AUDIOCHANNEL& sRequestedAC) const;
bool GetVideoSubChannels(std::string& strVideoSubChannelName, std::string& strVideoSubChannelPid);
bool GetVideoChannels(TiXmlElement *pRootElement);
bool CreateNewItem(const CFileItem& item, CFileItem& item_new);
static bool InitZapstream(const std::string& strPath);
static bool SetAudioChannel(const std::string& strPath, const AUDIOCHANNEL& sAC);
static std::string GetPicon(std::string strServiceName);
static std::string GetSubMode(int iMode, std::string& strXMLRootString, std::string& strXMLChildString);
static std::string DetectSubMode(std::string strSubMode, std::string& strXMLRootString, std::string& strXMLChildString);
};
extern CTuxBoxUtil g_tuxbox;
class CTuxBoxService : public CThread
{
public:
CTuxBoxService();
~CTuxBoxService();
bool Start();
void Stop();
bool IsRunning();
virtual void OnExit();
virtual void OnStartup();
virtual void Process();
};
extern CTuxBoxService g_tuxboxService;
|