convert event_id from string to long
[enigma2.git] / lib / dvb / dvb.h
index 71c6a6c1b5e6e391934ba4ab57a26ff5da81d456..5fc2f043d26ce3f34af0a4f1d1a18443bc2c2dfc 100644 (file)
@@ -21,8 +21,8 @@ class eDVBRegisteredFrontend: public iObject, public Object
        eTimer *disable;
        void closeFrontend()
        {
-               if (!m_inuse)
-                       m_frontend->closeFrontend();
+               if (!m_inuse && m_frontend->closeFrontend()) // frontend busy
+                       disable->start(60000, true);  // retry close in 60secs
        }
 public:
        eDVBRegisteredFrontend(eDVBFrontend *fe, iDVBAdapter *adap)
@@ -206,6 +206,8 @@ public:
        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);
@@ -215,7 +217,7 @@ public:
                /* iDVBPVRChannel */
        RESULT playFile(const char *file);
        RESULT getLength(pts_t &len);
-       RESULT getCurrentPosition(iDVBDemux *decoding_demux, pts_t &pos);
+       RESULT getCurrentPosition(iDVBDemux *decoding_demux, pts_t &pos, int mode);
        RESULT seekTo(iDVBDemux *decoding_demux, int relative, pts_t &pts);
                        /* seeking to relative positions won't work - 
                           there is an unknown amount of buffers in between */
@@ -223,12 +225,14 @@ public:
 
        int getUseCount() { return m_use_count; }
 private:
+       ePtr<iDVBFrontendParameters> m_feparm; // for retune on lostlock
        ePtr<eDVBAllocatedFrontend> m_frontend;
        ePtr<eDVBAllocatedDemux> m_demux, m_decoder_demux;
        
        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 */
@@ -239,6 +243,8 @@ private:
        
                /* for PVR playback */
        eFilePushThread *m_pvr_thread;
+       void pvrEvent(int event);
+       
        int m_pvr_fd_src, m_pvr_fd_dst;
        eDVBTSTools m_tstools;