aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-13 23:22:55 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-13 23:22:55 +0000
commit94f8049fca5c1522aef72334ab4f4697600618c0 (patch)
tree2d74302fba4c111bcfecc91cc7a8b9b167912ba2
parent707680758061af81a33f094241c1f74a6c932a8e (diff)
downloadenigma2-94f8049fca5c1522aef72334ab4f4697600618c0.tar.gz
enigma2-94f8049fca5c1522aef72334ab4f4697600618c0.zip
dont ask for scanning second nim in automatic scan, when it is not meaningful
-rw-r--r--lib/dvb/sec.cpp45
-rw-r--r--lib/dvb/sec.h1
-rw-r--r--lib/python/Components/NimManager.py5
-rw-r--r--lib/python/Screens/ScanSetup.py26
4 files changed, 71 insertions, 6 deletions
diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp
index b003e16d..c13334d1 100644
--- a/lib/dvb/sec.cpp
+++ b/lib/dvb/sec.cpp
@@ -1032,6 +1032,51 @@ RESULT eDVBSatelliteEquipmentControl::setRotorPosNum(int rotor_pos_num)
return 0;
}
+PyObject *eDVBSatelliteEquipmentControl::get_different_satellites(int tu1, int tu2)
+{
+ PyObject *ret=0;
+ if (tu1 != tu2)
+ {
+ eDVBRegisteredFrontend *p1=NULL, *p2=NULL;
+ int cnt=0;
+ for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it, ++cnt)
+ {
+ if (cnt == tu1)
+ p1 = *it;
+ else if (cnt == tu2)
+ p2 = *it;
+ }
+ if (p1 && p2)
+ {
+ // check for linked tuners
+ int tmp1, tmp2;
+ p1->m_frontend->getData(7, tmp1);
+ p2->m_frontend->setData(7, tmp2);
+ if ((void*)tmp1 != p2 && (void*)tmp2 != p1)
+ {
+ // check for rotor dependency
+ p1->m_frontend->getData(8, tmp1);
+ p2->m_frontend->setData(8, tmp2);
+ if ((void*)tmp1 != p2 && (void*)tmp2 != p1)
+ {
+ // here we know the tuners are not linked and no rotor dependency exist.
+ // now we check all configured satellites/lnb for difference and at all difference
+ // to a list of tuples with first value tuner number and second value orbital position
+ // of satellite
+ ret = PyList_New(0);
+ // FIXMEE !! fill list (compare satellites (lofh, lofl, lof threshold, opos))
+ }
+ }
+ }
+ }
+ if (!ret)
+ {
+ Py_INCREF(Py_None);
+ ret = Py_None;
+ }
+ return ret;
+}
+
RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
{
return setDependencyPointers(tu1, tu2, 7);
diff --git a/lib/dvb/sec.h b/lib/dvb/sec.h
index d86d96ea..ab1f1ac3 100644
--- a/lib/dvb/sec.h
+++ b/lib/dvb/sec.h
@@ -290,6 +290,7 @@ public:
RESULT setTunerLinked(int from, int to);
RESULT setTunerDepends(int from, int to);
+ PyObject *get_different_satellites(int tu1, int tu2);
void setRotorMoving(bool); // called from the frontend's
bool isRotorMoving();
};
diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py
index ac73c00e..8769aae9 100644
--- a/lib/python/Components/NimManager.py
+++ b/lib/python/Components/NimManager.py
@@ -557,7 +557,10 @@ class NimManager:
nimText += ("DVB-S", "DVB-C", "DVB-T")[slot.nimType] + ")"
list.append((nimText, slot))
return list
-
+
+ def getNimConfigMode(self, slotid):
+ return currentConfigSelectionElement(config.Nims[slotid].configMode)
+
def getSatListForNim(self, slotid):
list = []
if (self.getNimType(slotid) == self.nimType["DVB-S"]):
diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py
index 9541c60f..0229d5e8 100644
--- a/lib/python/Screens/ScanSetup.py
+++ b/lib/python/Screens/ScanSetup.py
@@ -5,7 +5,7 @@ from Components.ActionMap import NumberActionMap
from Components.ConfigList import ConfigList
from Components.NimManager import nimmanager
from Components.Label import Label
-from enigma import eDVBFrontendParametersSatellite, eComponentScan
+from enigma import eDVBFrontendParametersSatellite, eComponentScan, eDVBSatelliteEquipmentControl
def getInitialTransponderList(tlist, pos):
list = nimmanager.getTransponders(pos)
@@ -408,6 +408,19 @@ class ScanSimple(Screen):
return 1
return 0
+ def ScanNimTwoNeeded(self):
+ if nimmanager.getNimType(0) != nimmanager.getNimType(1):
+ return True
+ if nimmanager.getNimType(0) == nimmanager.nimType["DVB-S"]: #two dvb-s nims
+ if nimmanager.getNimConfigMode(1) in ["loopthrough", "satposdepends", "equal", "nothing"]:
+ return False
+ sec = eDVBSatelliteEquipmentControl.getInstance()
+ if sec is not None:
+ different_satellites = sec.get_different_satellites(0,1)
+ if different_satellites is None:# or not len(different_satellites):
+ return False
+ return True
+
def __init__(self, session):
Screen.__init__(self, session)
@@ -422,10 +435,13 @@ class ScanSimple(Screen):
self.list = []
tlist = []
- for slotid in range(nimmanager.getNimSocketCount()):
- if nimmanager.getNimType(slotid) != nimmanager.nimType["DVB-S"] or currentConfigSelectionElement(config.Nims[slotid].configMode) != "nothing":
- nim = configElement_nonSave(slotid, configSelection, 0, (("yes", _("yes")), ("no", _("no"))))
- self.list.append(getConfigListEntry(_("Scan NIM") + " " + str(slotid) + " (" + nimmanager.getNimTypeName(slotid) + ")", nim))
+ nimcount = nimmanager.getNimSocketCount()
+ if nimcount > 0:
+ nim = configElement_nonSave(0, configSelection, 0,(("yes", _("yes")),("no", _("no"))))
+ self.list.append(getConfigListEntry(_("Scan NIM") + " 0 (" + nimmanager.getNimTypeName(0) + ")", nim))
+ if nimcount > 1 and self.ScanNimTwoNeeded():
+ nim = configElement_nonSave(1, configSelection, 0, (("yes", _("yes")), ("no", _("no"))))
+ self.list.append(getConfigListEntry(_("Scan NIM") + " 1 (" + nimmanager.getNimTypeName(1) + ")", nim))
self["config"] = ConfigList(self.list)
self["header"] = Label(_("Automatic Scan"))