X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c988d4c237e871138360bbfd73ff92215904eb70..a759137c52904daf4d707ca82930595ad0b13f8a:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 8bbe2810..919bf587 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -18,6 +18,13 @@ from Tools import XMLTools from xml.sax import make_parser from xml.sax.handler import ContentHandler +def tryOpen(filename): + try: + procFile = open(filename) + except IOError: + return "" + return procFile + class SecConfigure: def addLNBSimple(self, slotid, orbpos, toneburstmode, diseqcmode, diseqcpos): #simple defaults @@ -122,12 +129,36 @@ class NimManager: def getNimType(self, slotID): #FIXME get it from /proc - if slotID == 0: - return self.nimType["DVB-S"] - elif slotID == 1: - return self.nimType["DVB-S"] - else: - return self.nimType["empty/unknown"] + nimfile = tryOpen("/proc/bus/nim_sockets") + + if nimfile == "": + # FIXME: remove this in the final version + # check if we have a device for 7020 comp?atibility reasons + try: + open("/dev/dvb/card0/frontend" + str(slotID)) + return self.nimType["DVB-S"] + except IOError: + return self.nimType["empty/unknown"] + + + while 1: + line = nimfile.readline() + if line == "": + break + if line.startswith("NIM Socket"): + parts = line.strip().split(" ") + id = int(parts[2][:1]) + if id == slotID: + line = nimfile.readline() + if line == "": + break + if line.startswith(" Type:"): + nimfile.close() + return self.nimType["DVB-S"] + else: + break + nimfile.close() + return self.nimType["empty/unknown"] def getNimName(self, slotID): #FIXME get it from /proc @@ -176,17 +207,19 @@ class NimManager: return list def getSatListForNim(self, slotid): - #print "slotid:", slotid list = [] - #print "self.satellites:", self.satList[config.Nims[slotid].diseqcA.value] - #print "diseqcA:", config.Nims[slotid].diseqcA.value - if (config.Nims[slotid].diseqcMode.value <= 3): - list.append(self.satList[config.Nims[slotid].diseqcA.value]) - if (0 < config.Nims[slotid].diseqcMode.value <= 3): - list.append(self.satList[config.Nims[slotid].diseqcB.value]) - if (config.Nims[slotid].diseqcMode.value == 3): - list.append(self.satList[config.Nims[slotid].diseqcC.value]) - list.append(self.satList[config.Nims[slotid].diseqcD.value]) + if (self.getNimType(slotid) != self.nimType["empty/unknown"]): + #print "slotid:", slotid + + #print "self.satellites:", self.satList[config.Nims[slotid].diseqcA.value] + #print "diseqcA:", config.Nims[slotid].diseqcA.value + if (config.Nims[slotid].diseqcMode.value <= 3): + list.append(self.satList[config.Nims[slotid].diseqcA.value]) + if (0 < config.Nims[slotid].diseqcMode.value <= 3): + list.append(self.satList[config.Nims[slotid].diseqcB.value]) + if (config.Nims[slotid].diseqcMode.value == 3): + list.append(self.satList[config.Nims[slotid].diseqcC.value]) + list.append(self.satList[config.Nims[slotid].diseqcD.value]) return list #callbacks for c++ config