}
}
+void eDVBChannel::pvrEvent(int event)
+{
+ switch (event)
+ {
+ case eFilePushThread::evtEOF:
+ eDebug("eDVBChannel: End of file!");
+ m_event(this, evtEOF);
+ break;
+ }
+}
+
void eDVBChannel::AddUse()
{
++m_use_count;
return 0;
}
+RESULT eDVBChannel::connectEvent(const Slot2<void,iDVBChannel*,int> &event, ePtr<eConnection> &connection)
+{
+ connection = new eConnection((iDVBChannel*)this, m_event.connect(event));
+ return 0;
+}
+
RESULT eDVBChannel::getState(int &state)
{
state = m_state;
m_pvr_thread = new eFilePushThread();
m_pvr_thread->start(m_pvr_fd_src, m_pvr_fd_dst);
+ CONNECT(m_pvr_thread->m_event, eDVBChannel::pvrEvent);
return 0;
}
eDVBChannelID getChannelID() { return m_channel_id; }
RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection);
+ RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection);
+
RESULT getState(int &state);
RESULT setCIRouting(const eDVBCIRouting &routing);
ePtr<iDVBFrontendParameters> m_current_frontend_parameters;
eDVBChannelID m_channel_id;
Signal1<void,iDVBChannel*> m_stateChanged;
+ Signal2<void,iDVBChannel*,int> m_event;
int m_state;
/* for channel list */
/* for PVR playback */
eFilePushThread *m_pvr_thread;
+ void pvrEvent(int event);
+
int m_pvr_fd_src, m_pvr_fd_dst;
eDVBTSTools m_tstools;
state_ok, /* ok */
state_release /* channel is being shut down. */
};
+
+ enum
+ {
+ evtEOF, evtFailed
+ };
virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
+ virtual RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection)=0;
virtual RESULT getState(int &state)=0;
/* demux capabilities */