int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite &sat, iDVBFrontend *fe, int slot_id, int *highest_score_lnb)
{
bool simulate = ((eDVBFrontend*)fe)->is_simulate();
+ bool direct_connected = m_not_linked_slot_mask & slot_id;
int score=0, satcount=0;
if (highest_score_lnb)
if ( sit != lnb_param.m_satellites.end())
{
bool diseqc=false;
- bool direct_connected = m_not_linked_slot_mask & slot_id;
long band=0,
linked_prev_ptr=-1,
linked_next_ptr=-1,
eSecDebugNoSimulate("ret4 %d", ret);
}
- if (ret && rotor && curRotorPos != -1 && direct_connected) {
- ret -= abs(curRotorPos-sat.orbital_position);
- }
-
- eSecDebugNoSimulate("ret5 %d", ret);
-
if (ret)
if (satpos_depends_ptr != -1)
{
if (!rotor || curRotorPos != sat.orbital_position)
ret=0;
}
- eSecDebugNoSimulate("ret6 %d", ret);
+ eSecDebugNoSimulate("ret5 %d", ret);
}
+ if (ret && rotor && curRotorPos != -1 && (direct_connected || !satpos_depends_ptr) ) // direct conntected or loopthrough!
+ ret -= abs(curRotorPos-sat.orbital_position);
+
+ eSecDebugNoSimulate("ret6 %d", ret);
+
if (ret)
{
int lof = sat.frequency > lnb_param.m_lof_threshold ?
}
if (score && satcount)
score -= (satcount-1);
- if (score && m_not_linked_slot_mask & slot_id)
+ if (score && direct_connected)
score += 5; // increase score for tuners with direct sat connection
eSecDebugNoSimulate("final score %d", score);
return score;