#ifndef __dvb_dvb_h #define __dvb_dvb_h #include #include #include #include class eDVBChannel; class eDVBResourceManager: public virtual iDVBResourceManager { DECLARE_REF; int avail, busy; struct adapter { eSmartPtrList fe; eSmartPtrList demux; }; std::multimap m_active_channels; ePtr m_list; ePtr m_sec; static eDVBResourceManager *instance; public: eDVBResourceManager(); virtual ~eDVBResourceManager(); static RESULT getInstance(ePtr &ptr) { if (instance) { ptr = instance; return 0; } return -1; } RESULT setChannelList(iDVBChannelList *list); RESULT getChannelList(ePtr &list); RESULT allocateChannel(const eDVBChannelID &channelid, ePtr &channel); RESULT allocateRawChannel(ePtr &channel); RESULT allocatePVRChannel(int caps); RESULT addChannel(const eDVBChannelID &chid, eDVBChannel *ch); RESULT removeChannel(const eDVBChannelID &chid, eDVBChannel *ch); }; class eDVBChannel: public virtual iDVBChannel, public virtual eDVBDemux, public Object { ePtr m_frontend; ePtr m_current_frontend_parameters; eDVBChannelID m_channel_id; Signal1 m_stateChanged; int m_state; ePtr m_mgr; void frontendStateChanged(iDVBFrontend*fe); ePtr m_conn_frontendStateChanged; public: eDVBChannel(eDVBResourceManager *mgr, int adapter, int frontend, int demux); virtual ~eDVBChannel(); /* only for managed channels */ RESULT setChannel(const eDVBChannelID &id); RESULT connectStateChange(const Slot1 &stateChange, ePtr &connection); RESULT getState(int &state); RESULT setCIRouting(const eDVBCIRouting &routing); RESULT getDemux(ePtr &demux); RESULT getFrontend(ePtr &frontend); }; #endif