#include <fcntl.h>
#include <sys/ioctl.h>
+#ifndef I2C_SLAVE_FORCE
+#define I2C_SLAVE_FORCE 0x0706
+#endif
+
#if HAVE_DVB_API_VERSION < 3
#include <ost/frontend.h>
#include <ost/sec.h>
return 0;
}
-RESULT eDVBFrontendParameters::setDVBS(eDVBFrontendParametersSatellite &p)
+RESULT eDVBFrontendParameters::setDVBS(const eDVBFrontendParametersSatellite &p)
{
sat = p;
m_type = iDVBFrontend::feSatellite;
return 0;
}
-RESULT eDVBFrontendParameters::setDVBC(eDVBFrontendParametersCable &p)
+RESULT eDVBFrontendParameters::setDVBC(const eDVBFrontendParametersCable &p)
{
cable = p;
m_type = iDVBFrontend::feCable;
return 0;
}
-RESULT eDVBFrontendParameters::setDVBT(eDVBFrontendParametersTerrestrial &p)
+RESULT eDVBFrontendParameters::setDVBT(const eDVBFrontendParametersTerrestrial &p)
{
terrestrial = p;
m_type = iDVBFrontend::feTerrestrial;
DEFINE_REF(eDVBFrontend);
-eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok): m_type(-1), m_curVoltage(-1)
+eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok): m_type(-1), m_fe(fe), m_curVoltage(-1)
{
#if HAVE_DVB_API_VERSION < 3
char sec_filename[128];
if (m_tuning)
state = stateTuning;
else
- state = stateFailed;
+ {
+ state = stateLostLock;
+
+ if (m_state != stateLostLock)
+ eDebug("FIXME: we lost lock, so we might have to retune.");
+ }
}
if (m_state != state)
{
m_state = state;
m_stateChanged(this);
}
+ m_tuning = 0;
} else
m_tuning = 0;
}
m_sec_sequence.clear();
- eDebug("eDVBFrontend::tune. type: %d", m_type);
-
switch (m_type)
{
case feSatellite:
return -ENOENT;
}
- res = m_sec->prepare(*this, parm, feparm);
+ res = m_sec->prepare(*this, parm, feparm, 1 << m_fe);
if (res)
return res;
#if HAVE_DVB_API_VERSION < 3
return -EINVAL;
}
+int eDVBFrontend::isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm)
+{
+ if (m_type != eDVBFrontend::feSatellite)
+ return 1;
+
+ ASSERT(m_sec);
+
+ eDVBFrontendParametersSatellite sat_parm;
+
+ ASSERT(!feparm->getDVBS(sat_parm));
+
+ return m_sec->canTune(sat_parm, this, 1 << m_fe);
+}