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
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)
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);
}
eWarning("couldnt close sec %d", m_dvbid);
}
#endif
- delete m_sn;
m_sn=0;
m_state = stateClosed;
{
m_data[LINKED_PREV_PTR] = m_data[LINKED_NEXT_PTR] = -1;
closeFrontend();
- delete m_timeout;
- delete m_tuneTimer;
}
void eDVBFrontend::feEvent(int w)
tmp = prev->m_frontend->m_data[LINKED_PREV_PTR];
if (tmp == -1 && sec_fe != this && !prev->m_inuse) {
int state = sec_fe->m_state;
+ // workaround to put the kernel frontend thread into idle state!
if (state != eDVBFrontend::stateIdle && state != stateClosed)
{
sec_fe->closeFrontend(true);
state = sec_fe->m_state;
}
+ // sec_fe is closed... we must reopen it here..
if (state == eDVBFrontend::stateClosed)
{
regFE = prev;
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: