terrestrial.code_rate_HP != eDVBFrontendParametersTerrestrial::FEC_Auto)
diff = 1 << 30;
else
- diff = abs(terrestrial.frequency - oterrestrial.frequency);
+ diff = abs(terrestrial.frequency - oterrestrial.frequency) / 1000;
return 0;
default:
return -1;
return 0;
case iDVBFrontend::feTerrestrial:
hash = 0xEEEE0000;
- hash |= (terrestrial.frequency/1000)&0xFFFF;
+ hash |= (terrestrial.frequency/1000000)&0xFFFF;
return 0;
default:
return -1;
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_timeout(0), m_tuneTimer(0)
+ ,m_state(stateClosed), m_timeout(0), m_tuneTimer(0)
#if HAVE_DVB_API_VERSION < 3
,m_secfd(-1)
#endif
int eDVBFrontend::openFrontend()
{
- if (m_sn)
+ if (m_state != stateClosed)
return -1; // already opened
m_state=stateIdle;
if (snr != 0)
ret = 10 * (int)(-100 * (log10(snr) - log10(255)));
}
+ else if (!strcmp(m_description, "BCM4506"))
+ ret = (snr * 100) >> 8;
if (type == signalQuality)
{
eDebug("could not create PyObject for %s", key);
}
-void fillDictWithSatelliteData(ePyObject dict, const FRONTENDPARAMETERS &parm, eDVBFrontend *fe)
+void fillDictWithSatelliteData(ePyObject dict, const FRONTENDPARAMETERS &parm, long freq_offset, int orb_pos, int polarization)
{
- long freq_offset=0;
long tmp=0;
- fe->getData(eDVBFrontend::FREQ_OFFSET, freq_offset);
int frequency = parm_frequency + freq_offset;
PutToDict(dict, "frequency", frequency);
PutToDict(dict, "symbol_rate", parm_u_qpsk_symbol_rate);
+ PutToDict(dict, "orbital_position", orb_pos);
+ PutToDict(dict, "polarization", polarization);
+
switch(parm_u_qpsk_fec_inner)
{
case FEC_1_2: tmp = eDVBFrontendParametersSatellite::FEC_1_2; break;
switch(m_type)
{
case feSatellite:
- fillDictWithSatelliteData(dest, original?parm:front, this);
+ fillDictWithSatelliteData(dest, original?parm:front, m_data[FREQ_OFFSET], m_cur_orbpos, m_cur_pol);
break;
case feCable:
fillDictWithCableData(dest, original?parm:front);
state = sec_fe->m_state;
}
// sec_fe is closed... we must reopen it here..
- if (state == eDVBFrontend::stateClosed)
+ if (state == stateClosed)
{
regFE = prev;
prev->inc_use();
feparm.fec,
feparm.orbital_position);
#endif
+ m_cur_pol = feparm.polarisation;
+ m_cur_orbpos = feparm.orbital_position;
parm_u_qpsk_symbol_rate = feparm.symbol_rate;
switch (feparm.inversion)
{