- // check for linked tuners
- int tmp1, tmp2;
- p1->m_frontend->getData(7, tmp1);
- p2->m_frontend->getData(7, tmp2);
- if ((void*)tmp1 != p2 && (void*)tmp2 != p1)
- {
- // check for rotor dependency
- p1->m_frontend->getData(8, tmp1);
- p2->m_frontend->getData(8, tmp2);
- if ((void*)tmp1 != p2 && (void*)tmp2 != p1)
- {
- std::set<sat_compare> tu1sats, tu2sats;
- std::list<sat_compare> tu1difference, tu2difference;
- std::insert_iterator<std::list<sat_compare> > insert1(tu1difference, tu1difference.begin()),
- insert2(tu2difference, tu2difference.begin());
- for (int idx=0; idx <= m_lnbidx; ++idx )
- {
- eDVBSatelliteLNBParameters &lnb_param = m_lnbs[idx];
- for (std::map<int, eDVBSatelliteSwitchParameters>::iterator sit(lnb_param.m_satellites.begin());
- sit != lnb_param.m_satellites.end(); ++sit)
- {
- if ( lnb_param.tuner_mask & tu1_mask )
- tu1sats.insert(sat_compare(sit->first, lnb_param.m_lof_lo, lnb_param.m_lof_hi));
- if ( lnb_param.tuner_mask & tu2_mask )
- tu2sats.insert(sat_compare(sit->first, lnb_param.m_lof_lo, lnb_param.m_lof_hi));
- }
- }
- std::set_difference(tu1sats.begin(), tu1sats.end(),
- tu2sats.begin(), tu2sats.end(),
- insert1);
- std::set_difference(tu2sats.begin(), tu2sats.end(),
- tu1sats.begin(), tu1sats.end(),
- insert2);
- if (!tu1sats.empty() || !tu2sats.empty())
- {
- int idx=0;
- ret = PyList_New(2+tu1difference.size()+tu2difference.size());
-
- PyList_SET_ITEM(ret, idx++, PyInt_FromLong(tu1difference.size()));
- for(std::list<sat_compare>::iterator it(tu1difference.begin()); it != tu1difference.end(); ++it)
- PyList_SET_ITEM(ret, idx++, PyInt_FromLong(it->orb_pos));