Add DiSEqC reset after voltage enable and tune failed... hopefully this fixes problem...
[enigma2.git] / lib / dvb / frontend.cpp
index bfbd9b57934ee89dc89c9febcf5ab079b05c5449..635de8f55778145b3c5567184189c58d87eb69f7 100644 (file)
@@ -443,7 +443,7 @@ int eDVBFrontend::PriorityOrder=0;
 eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok, bool simulate)
        :m_simulate(simulate), m_enabled(false), m_type(-1), m_dvbid(fe), m_slotid(fe)
        ,m_fd(-1), m_need_rotor_workaround(false), m_can_handle_dvbs2(false)
-       ,m_sn(0), m_timeout(0), m_tuneTimer(0)
+       , m_timeout(0), m_tuneTimer(0)
 #if HAVE_DVB_API_VERSION < 3
        ,m_secfd(-1)
 #endif
@@ -455,10 +455,10 @@ eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok, bool simulate)
        sprintf(m_filename, "/dev/dvb/adapter%d/frontend%d", adap, fe);
 #endif
 
-       m_timeout = new eTimer(eApp);
+       m_timeout = eTimer::create(eApp);
        CONNECT(m_timeout->timeout, eDVBFrontend::timeout);
 
-       m_tuneTimer = new eTimer(eApp);
+       m_tuneTimer = eTimer::create(eApp);
        CONNECT(m_tuneTimer->timeout, eDVBFrontend::tuneLoop);
 
        for (int i=0; i<eDVBFrontend::NUM_DATA_ENTRIES; ++i)
@@ -555,7 +555,7 @@ int eDVBFrontend::openFrontend()
 
        if (!m_simulate)
        {
-               m_sn = new eSocketNotifier(eApp, m_fd, eSocketNotifier::Read, false);
+               m_sn = eSocketNotifier::create(eApp, m_fd, eSocketNotifier::Read, false);
                CONNECT(m_sn->activated, eDVBFrontend::feEvent);
        }
 
@@ -607,7 +607,6 @@ int eDVBFrontend::closeFrontend(bool force)
                        eWarning("couldnt close sec %d", m_dvbid);
        }
 #endif
-       delete m_sn;
        m_sn=0;
        m_state = stateClosed;
 
@@ -618,8 +617,6 @@ eDVBFrontend::~eDVBFrontend()
 {
        m_data[LINKED_PREV_PTR] = m_data[LINKED_NEXT_PTR] = -1;
        closeFrontend();
-       delete m_timeout;
-       delete m_tuneTimer;
 }
 
 void eDVBFrontend::feEvent(int w)
@@ -1495,7 +1492,12 @@ void eDVBFrontend::tuneLoop()  // called by m_tuneTimer
                                eDebugNoSimulateNoNewLine("[SEC] sendDiseqc: ");
                                for (int i=0; i < m_sec_sequence.current()->diseqc.len; ++i)
                                    eDebugNoSimulateNoNewLine("%02x", m_sec_sequence.current()->diseqc.data[i]);
-                               eDebugNoSimulate("");
+                               if (!memcmp(m_sec_sequence.current()->diseqc.data, "\xE0\x00\x00", 3))
+                                       eDebugNoSimulate("(DiSEqC reset)");
+                               else if (!memcmp(m_sec_sequence.current()->diseqc.data, "\xE0\x00\x03", 3))
+                                       eDebugNoSimulate("(DiSEqC peripherial power on)");
+                               else
+                                       eDebugNoSimulate("");
                                ++m_sec_sequence.current();
                                break;
                        case eSecCommand::SEND_TONEBURST: