diff = 1<<29;
else if (sat.polarisation != osat.polarisation)
diff = 1<<28;
- else
+ else
+ {
diff = abs(sat.frequency - osat.frequency);
+ diff += abs(sat.symbol_rate - osat.symbol_rate);
+ }
return 0;
}
case iDVBFrontend::feCable:
DEFINE_REF(eDVBFrontend);
eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok)
- :m_type(-1), m_fe(fe), m_timeout(0), m_tuneTimer(0), m_fd(-1)
+ :m_type(-1), m_fe(fe), m_fd(-1), m_timeout(0), m_tuneTimer(0)
#if HAVE_DVB_API_VERSION < 3
,m_secfd(-1)
#endif
for (int i=0; i<entries; ++i)
m_data[i] = -1;
+ m_idleInputpower[0]=m_idleInputpower[1]=0;
+
ok = !openFrontend();
closeFrontend();
}
return 0;
}
-void eDVBFrontend::closeFrontend()
+int eDVBFrontend::closeFrontend()
{
if (!m_fe && m_data[7] != -1)
{
{
eDebug("dont close frontend %d until the linked frontend %d is still in use",
m_fe, linked_fe->m_frontend->getID());
- return;
+ return -1;
}
}
eDebug("close frontend %d", m_fe);
setTone(iDVBFrontend::toneOff);
setVoltage(iDVBFrontend::voltageOff);
+ return 0;
}
eDVBFrontend::~eDVBFrontend()
cmd = SEC_MINI_B;
if (::ioctl(m_secfd, SEC_DISEQC_SEND_BURST, cmd))
return -EINVAL;
+#else
+ fe_sec_mini_cmd_t cmd = SEC_MINI_A;
+ if ( burst == eDVBSatelliteDiseqcParameters::A )
+ cmd = SEC_MINI_A;
+ else if ( burst == eDVBSatelliteDiseqcParameters::B )
+ cmd = SEC_MINI_B;
+ else
+ {
+ eDebug("unknown toneburst!");
+ return -EINVAL;
+ }
+ if (::ioctl(m_fd, FE_DISEQC_SEND_BURST, cmd))
+ return -EINVAL;
#endif
return 0;
}