- int tu1_mask = 1 << p1->m_frontend->getID(),
- tu2_mask = 1 << p2->m_frontend->getID();
- 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));
-
- PyList_SET_ITEM(ret, idx++, PyInt_FromLong(tu2difference.size()));
- for(std::list<sat_compare>::iterator it(tu2difference.begin()); it != tu2difference.end(); ++it)
- PyList_SET_ITEM(ret, idx++, PyInt_FromLong(it->orb_pos));
- }