7 #include <libsig_comp.h>
8 #include <lib/dvb/esection.h>
9 #include <lib/system/econfig.h>
10 #include <lib/base/estring.h>
11 #include <lib/base/eptrlist.h>
12 #include <lib/dvb/settings.h>
16 class eTransponderList
;
17 class eDVBServiceController
;
29 #define ENOCASYS 1000 /// service is not free and no valid caid
30 #define ENOSTREAM 1001 /// no video or audio stream
31 #define ENVOD 1002 /// nvod stream has to be selected
35 class eStreamWatchdog
;
39 class eDVBScanController
;
41 class eConsoleAppContainer
;
56 eventRecordWriteError
,
60 eTransponder
*transponder
;
67 eDVBEvent(int type
, int err
, eTransponder
*transponder
)
68 :type(type
), err(err
), transponder(transponder
)
97 eDVBController(eDVB
&dvb
)
101 virtual ~eDVBController()=0;
102 virtual void handleEvent(const eDVBEvent
&event
)=0;
106 * \brief High level DVB class.
108 * eDVB contains high-level dvb-functions like
109 * "switchService" which can be called almost
110 * stateless from everywhere...
112 class eDVB
: public Object
114 static eDVB
*instance
;
116 static eDVB
*getInstance() { return instance
; }
119 eString
getVersion();
121 //////////// tables for current service/transponder /////////////////
126 eAUTable
<NIT
> tNIT
, tONIT
;
131 Signal2
<void, EIT
*, int> gotEIT
;
132 Signal1
<void, SDT
*> gotSDT
;
133 Signal1
<void, PMT
*> gotPMT
;
134 Signal1
<void, int> gotContentPid
;
136 // use from external classes to get PMT/EIT/SDT ... for refcounting
141 /////////////////////////// eDVB Recoder ////////////////////////////
144 void recMessage(int);
147 eDVBRecorder
*recorder
;
149 /// starts a new recording
150 void recBegin(const char *filename
, eServiceReferenceDVB service
);
151 /// pauses a recording
153 /// resumes a recording
155 /// closes a recording
157 /// sets current slice
158 void recSetSlice(int slice
);
160 #endif //DISABLE_FILE
162 ///////////////////////////// CI Instances //////////////////////////
170 ///////////////////////////// State Handling ////////////////////////
172 void tunedIn(eTransponder
*, int);
175 const eDVBState
&getState() const { return state
; }
176 void setState(const eDVBState
&newstate
) { /*emit*/ stateChanged(state
=newstate
); }
177 void event(const eDVBEvent
&event
);
178 Signal1
<void, const eDVBState
&> stateChanged
;
179 Signal1
<void, const eDVBEvent
&> eventOccured
;
181 Signal1
<void, bool> scrambled
;
182 Signal0
<void> serviceListChanged
;
183 Signal0
<void> bouquetListChanged
;
184 Signal1
<void, const eServiceReferenceDVB
&> leaveService
;
185 Signal1
<void, const eServiceReferenceDVB
&> enterService
;
186 Signal1
<void, eTransponder
*> leaveTransponder
;
187 Signal1
<void, eTransponder
*> enterTransponder
;
188 Signal2
<void, eTransponder
*, int> switchedTransponder
;
189 Signal2
<void, const eServiceReferenceDVB
&, int> switchedService
;
191 /////////////////////////Scan and Service Controller////////////////////////////
193 void setMode(int mode
);
194 eDVBServiceController
*getServiceAPI();
195 eDVBScanController
*getScanAPI();
196 enum {controllerNone
,controllerScan
,controllerService
};
199 eDVBController
*controller
;
201 //////////////////////////////Network Stuff////////////////////////////////////
203 #ifndef DISABLE_NETWORK
204 void configureNetwork();
205 void UDHCPC_DataAvail(eString
);
206 void UDHCPC_Closed(int);
208 eConsoleAppContainer
*udhcpc
;
214 ///////////////////////////////////////////////////////////////////////////////
216 /* container for settings */
217 eDVBSettings
*settings
;
218 Signal0
<void> timeUpdated
;