- int hi;
- eDebug("(very) ugly and hardcoded eDVBSatelliteEquipmentControl");
-
- if (sat.frequency > 11700000)
- hi = 1;
- else
- hi = 0;
-
- if (hi)
-#if HAVE_DVB_API_VERSION < 3
- parm.Frequency = sat.frequency - 10600000;
-#else
- parm.frequency = sat.frequency - 10600000;
-#endif
- else
-#if HAVE_DVB_API_VERSION < 3
- parm.Frequency = sat.frequency - 9750000;
-#else
- parm.frequency = sat.frequency - 9750000;
-#endif
-
-// frontend.sentDiseqc(...);
+ std::list<eDVBSatelliteLNBParameters>::iterator it = m_lnblist.begin();
+ for (;it != m_lnblist.end(); ++it )
+ {
+ eDVBSatelliteLNBParameters &lnb_param = *it;
+ std::map<int, eDVBSatelliteParameters>::iterator sit =
+ lnb_param.m_satellites.find(sat.orbital_position);
+ if ( sit != lnb_param.m_satellites.end())
+ {
+ int hi=0;
+ int voltage = iDVBFrontend::voltageOff;
+ int tone = iDVBFrontend::toneOff;
+
+ eDVBSatelliteDiseqcParameters &di_param = sit->second.m_diseqc_parameters;
+ eDVBSatelliteSwitchParameters &sw_param = sit->second.m_switch_parameters;
+
+ if ( sat.frequency > lnb_param.m_lof_threshold )
+ hi = 1;
+
+ if (hi)
+ parm.FREQUENCY = sat.frequency - lnb_param.m_lof_hi;
+ else
+ parm.FREQUENCY = sat.frequency - lnb_param.m_lof_lo;
+
+ parm.INVERSION = (!sat.inversion) ? INVERSION_ON : INVERSION_OFF;
+
+ switch (sat.fec)
+ {
+ // case 1:
+ // case ...:
+ default:
+ parm.u.qpsk.FEC_INNER = FEC_AUTO;
+ break;
+ }
+
+ parm.u.qpsk.SYMBOLRATE = sat.symbol_rate;
+
+ if ( sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::_14V
+ || ( sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Vertical
+ && sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
+ voltage = iDVBFrontend::voltage13;
+ else if ( sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::_18V
+ || ( sat.polarisation == eDVBFrontendParametersSatellite::Polarisation::Horizontal
+ && sw_param.m_voltage_mode == eDVBSatelliteSwitchParameters::HV ) )
+ voltage = iDVBFrontend::voltage18;
+
+ if ( (sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::ON)
+ || ( sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::HILO && hi ) )
+ tone = iDVBFrontend::toneOn;
+ else if ( (sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::OFF)
+ || ( sw_param.m_22khz_signal == eDVBSatelliteSwitchParameters::HILO && !hi ) )
+ tone = iDVBFrontend::toneOff;
+
+ eDVBDiseqcCommand diseqc;