X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d10f7fd19c29bb8a3f4aa32679317e00ac4a3cbb..0da52198b0394f88e10945d74bff75bf340960b1:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 550ce846..c24d8d35 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -2,7 +2,6 @@ from config import config #global config instance from config import configElement from config import ConfigSubsection -from config import ConfigSlider from config import configSelection from config import currentConfigSelectionElement from config import getConfigSelectionElement @@ -45,7 +44,7 @@ class SecConfigure: sec.setLNBTunerMask(tunermask) sec.setLNBLOFL(9750000) sec.setLNBLOFH(10600000) - sec.setLNBThreshold(11750000) + sec.setLNBThreshold(11700000) sec.setLNBIncreasedVoltage(lnbParam.OFF) sec.setRepeats(0) sec.setFastDiSEqC(0) @@ -177,7 +176,7 @@ class SecConfigure: if currentConfigSelectionElement(currLnb.lof) == "universal_lnb": sec.setLNBLOFL(9750000) sec.setLNBLOFH(10600000) - sec.setLNBThreshold(11750000) + sec.setLNBThreshold(11700000) elif currentConfigSelectionElement(currLnb.lof) == "c_band": sec.setLNBLOFL(5150000) sec.setLNBLOFH(5150000) @@ -252,11 +251,11 @@ class SecConfigure: if currentConfigSelectionElement(currLnb.diseqcRepeats) == "none": sec.setRepeats(0) - elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "One": + elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "one": sec.setRepeats(1) - elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "Two": + elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "two": sec.setRepeats(2) - elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "Three": + elif currentConfigSelectionElement(currLnb.diseqcRepeats) == "three": sec.setRepeats(3) setCommandOrder=False @@ -344,21 +343,23 @@ class NimManager: tpos = int(attrs.get('position',"")) if tpos < 0: tpos = 3600 + tpos - tname = attrs.get('name',"") + tname = attrs.get('name',"").encode("UTF-8") self.satellites[tpos] = tname self.satList.append( (tname, tpos) ) self.parsedSat = int(tpos) elif (name == "transponder"): + modulation = int(attrs.get('modulation',"1")) # QPSK default + system = int(attrs.get('system',"0")) # DVB-S default freq = int(attrs.get('frequency',"")) sr = int(attrs.get('symbol_rate',"")) pol = int(attrs.get('polarization',"")) - fec = int(attrs.get('fec_inner',"")) + fec = int(attrs.get('fec_inner',"0")) # AUTO default if self.parsedSat in self.transponders: pass else: self.transponders[self.parsedSat] = [ ] - self.transponders[self.parsedSat].append((0, freq, sr, pol, fec)) + self.transponders[self.parsedSat].append((0, freq, sr, pol, fec, system, modulation)) class parseCables(ContentHandler): def __init__(self, cablesList, transponders): @@ -369,19 +370,18 @@ class NimManager: def startElement(self, name, attrs): if (name == "cable"): #print "found sat " + attrs.get('name',"") + " " + str(attrs.get('position',"")) - tname = attrs.get('name',"") + tname = attrs.get('name',"").encode("UTF-8") self.cablesList.append(str(tname)) self.parsedCab = str(tname) elif (name == "transponder"): freq = int(attrs.get('frequency',"")) sr = int(attrs.get('symbol_rate',"")) - mod = int(attrs.get('modulation',"")) - fec = int(attrs.get('fec_inner',"")) + mod = int(attrs.get('modulation',"3")) # QAM64 default + fec = int(attrs.get('fec_inner',"0")) # AUTO default if self.parsedCab in self.transponders: pass else: self.transponders[self.parsedCab] = [ ] - self.transponders[self.parsedCab].append((1, freq, sr, mod, fec)) class parseTerrestrials(ContentHandler): @@ -393,21 +393,25 @@ class NimManager: def startElement(self, name, attrs): if (name == "terrestrial"): #print "found sat " + attrs.get('name',"") + " " + str(attrs.get('position',"")) - tname = attrs.get('name',"") + tname = attrs.get('name',"").encode("UTF-8") tflags = attrs.get('flags',"") self.terrestrialsList.append((tname, tflags)) self.parsedTer = str(tname) elif (name == "transponder"): # TODO finish this! freq = int(attrs.get('centre_frequency',"")) - bw = int(attrs.get('bandwidth',"")) - const = int(attrs.get('constellation',"")) - crh = int(attrs.get('code_rate_hp',"")) - crl = int(attrs.get('code_rate_lp',"")) - guard = int(attrs.get('guard_interval',"")) - transm = int(attrs.get('transmission_mode',"")) - hierarchy = int(attrs.get('hierarchy_information',"")) - inv = int(attrs.get('inversion',"")) + bw = int(attrs.get('bandwidth',"3")) # AUTO + const = int(attrs.get('constellation',"1")) # AUTO + crh = int(attrs.get('code_rate_hp',"5")) # AUTO + if crh > 5: # our terrestrial.xml is buggy... 6 for AUTO + crh = 5 + crl = int(attrs.get('code_rate_lp',"5")) # AUTO + if crl > 5: # our terrestrial.xml is buggy... 6 for AUTO + crl = 5 + guard = int(attrs.get('guard_interval',"4")) # AUTO + transm = int(attrs.get('transmission_mode',"2")) # AUTO + hierarchy = int(attrs.get('hierarchy_information',"4")) # AUTO + inv = int(attrs.get('inversion',"2")) # AUTO if self.parsedTer in self.transponders: pass else: @@ -416,7 +420,25 @@ class NimManager: self.transponders[self.parsedTer].append((2, freq, bw, const, crh, crl, guard, transm, hierarchy, inv)) def getTransponders(self, pos): - return self.transponders[pos] + if self.transponders.has_key(pos): + return self.transponders[pos] + else: + return [] + + def getTranspondersCable(self, cable): + return self.transponderscable[cable] + + def getTranspondersTerrestrial(self, region): + return self.transpondersterrestrial[region] + + def getCableDescription(self, nim): + return self.cablesList[config.Nims[nim].cable.value] + + def getTerrestrialDescription(self, nim): + return self.terrestrialsList[config.Nims[nim].terrestrial.value][0] + + def getTerrestrialFlags(self, nim): + return self.terrestrialsList[config.Nims[nim].terrestrial.value][1] def getConfiguredSats(self): return self.sec.getSatList() @@ -470,6 +492,7 @@ class NimManager: self.nimSocketCount += 1 elif line.strip().startswith("Type:"): self.nimTypes[lastsocket] = str(line.strip()[6:]) + #self.nimTypes[lastsocket] = str("DVB-T") elif line.strip().startswith("Name:"): self.nimNames[lastsocket] = str(line.strip()[6:]) elif line.strip().startswith("empty"): @@ -480,10 +503,16 @@ class NimManager: def getNimType(self, slotID): if slotID >= self.nimCount: - return "empty/unknown" + return self.nimType["empty/unknown"] else: return self.nimType[self.nimTypes[slotID]] + def getNimTypeName(self, slotID): + if slotID >= self.nimCount: + return "empty/unknown" + else: + return self.nimTypes[slotID] + def getNimName(self, slotID): return self.nimNames[slotID] @@ -544,7 +573,13 @@ 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 getSatList(self): + return self.satList + def getSatListForNim(self, slotid): list = [] if (self.getNimType(slotid) == self.nimType["DVB-S"]): @@ -553,6 +588,11 @@ class NimManager: #print "self.satellites:", self.satList[config.Nims[slotid].diseqcA.value] #print "diseqcA:", config.Nims[slotid].diseqcA.value configMode = currentConfigSelectionElement(config.Nims[slotid].configMode) + + if configMode == "equal": + slotid=0 #FIXME add handling for more than two tuners !!! + configMode = currentConfigSelectionElement(config.Nims[slotid].configMode) + if configMode == "simple": if (config.Nims[slotid].diseqcMode.value <= 3): list.append(self.satList[config.Nims[slotid].diseqcA.value]) @@ -568,6 +608,29 @@ class NimManager: for x in self.satList: if config.Nims[slotid].advanced.sat[x[1]].lnb.value != 0: list.append(x) + + return list + + def getRotorSatListForNim(self, slotid): + list = [] + if (self.getNimType(slotid) == self.nimType["DVB-S"]): + #print "slotid:", slotid + + #print "self.satellites:", self.satList[config.Nims[slotid].diseqcA.value] + #print "diseqcA:", config.Nims[slotid].diseqcA.value + configMode = currentConfigSelectionElement(config.Nims[slotid].configMode) + if configMode == "simple": + if (config.Nims[slotid].diseqcMode.value == 4): + for x in self.satList: + list.append(x) + elif configMode == "advanced": + for x in self.satList: + nim = config.Nims[slotid] + lnbnum = nim.advanced.sat[x[1]].lnb.value + if lnbnum != 0: + lnb = nim.advanced.lnb[lnbnum] + if lnb.diseqcMode.value == 3: # diseqc 1.2 + list.append(x) return list def nimDiseqcModeChanged(self, slotid, mode): @@ -642,9 +705,9 @@ def InitNimManager(nimmgr): nim.diseqcC = configElement(cname + "diseqcC", configSatlist, 0, nimmgr.satList, False); nim.diseqcD = configElement(cname + "diseqcD", configSatlist, 0, nimmgr.satList, False); nim.positionerMode = configElement(cname + "positionerMode", configSelection, 0, (("usals", _("USALS")), ("manual", _("manual"))), False); - nim.longitude = configElement(cname + "longitude", configSequence, [5,100], configsequencearg.get("FLOAT", [(0,90),(0,999)]), False); + nim.longitude = configElement(cname + "longitude", configSequence, [5,100], configsequencearg.get("FLOAT", [(0,359),(0,999)]), False); nim.longitudeOrientation = configElement(cname + "longitudeOrientation", configSelection, 0, (("east", _("East")), ("west", _("West"))), False) - nim.latitude = configElement(cname + "latitude", configSequence, [50,767], configsequencearg.get("FLOAT", [(0,90),(0,999)]), False); + nim.latitude = configElement(cname + "latitude", configSequence, [50,767], configsequencearg.get("FLOAT", [(0,359),(0,999)]), False); nim.latitudeOrientation = configElement(cname + "latitudeOrientation", configSelection, 0, (("north", _("North")), ("south", _("South"))), False) satNimList = nimmgr.getNimListOfType(nimmgr.nimType["DVB-S"], slot.slotid) satNimListNames = [] @@ -691,7 +754,7 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].lof = configElement(cname + "advanced.lnb" + str(x) + ".lof", configSelection, 0, (("universal_lnb", _("Universal LNB")), ("c_band", _("C-Band")), ("user_defined", _("User defined"))), False) nim.advanced.lnb[x].lofl = configElement(cname + "advanced.lnb" + str(x) + ".lofl", configSequence, [9750], configsequencearg.get("INTEGER", (0, 99999)), False) nim.advanced.lnb[x].lofh = configElement(cname + "advanced.lnb" + str(x) + ".lofh", configSequence, [10600], configsequencearg.get("INTEGER", (0, 99999)), False) - nim.advanced.lnb[x].threshold = configElement(cname + "advanced.lnb" + str(x) + ".threshold", configSequence, [11750], configsequencearg.get("INTEGER", (0, 99999)), False) + nim.advanced.lnb[x].threshold = configElement(cname + "advanced.lnb" + str(x) + ".threshold", configSequence, [11700], configsequencearg.get("INTEGER", (0, 99999)), False) nim.advanced.lnb[x].output_12v = configElement(cname + "advanced.lnb" + str(x) + ".output_12v", configSelection, 0, (("0V", _("0 V")), ("12V", _("12 V"))), False) nim.advanced.lnb[x].increased_voltage = configElement(cname + "advanced.lnb" + str(x) + ".increased_voltage", configSelection, 0, (("no", _("No")), ("yes", _("Yes"))), False) nim.advanced.lnb[x].toneburst = configElement(cname + "advanced.lnb" + str(x) + ".toneburst", configSelection, 0, (("none", _("None")), ("A", _("A")), ("B", _("B"))), False) @@ -703,19 +766,24 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].commandOrder = configElement(cname + "advanced.lnb" + str(x) + ".commandOrder", configSelection, 0, ("committed, toneburst", "toneburst, committed", "committed, uncommitted, toneburst", "toneburst, committed, uncommitted", "uncommitted, committed, toneburst", "toneburst, uncommitted, commmitted"), False) nim.advanced.lnb[x].uncommittedDiseqcCommand = configElement(cname + "advanced.lnb" + str(x) + ".uncommittedDiseqcCommand", configSelection, 0, ucsw, False) nim.advanced.lnb[x].diseqcRepeats = configElement(cname + "advanced.lnb" + str(x) + ".diseqcRepeats", configSelection, 0, (("none", _("None")), ("one", _("One")), ("two", _("Two")), ("three", _("Three"))), False) - nim.advanced.lnb[x].longitude = configElement(cname + "advanced.lnb" + str(x) + ".longitude", configSequence, [5,100], configsequencearg.get("FLOAT", [(0,90),(0,999)]), False) + nim.advanced.lnb[x].longitude = configElement(cname + "advanced.lnb" + str(x) + ".longitude", configSequence, [5,100], configsequencearg.get("FLOAT", [(0,359),(0,999)]), False) nim.advanced.lnb[x].longitudeOrientation = configElement(cname + "advanced.lnb" + str(x) + ".longitudeOrientation", configSelection, 0, (("east", _("East")), ("west", _("West"))), False) - nim.advanced.lnb[x].latitude = configElement(cname + "advanced.lnb" + str(x) + ".latitude", configSequence, [50,767], configsequencearg.get("FLOAT", [(0,90),(0,999)]), False) + nim.advanced.lnb[x].latitude = configElement(cname + "advanced.lnb" + str(x) + ".latitude", configSequence, [50,767], configsequencearg.get("FLOAT", [(0,359),(0,999)]), False) nim.advanced.lnb[x].latitudeOrientation = configElement(cname + "advanced.lnb" + str(x) + ".latitudeOrientation", configSelection, 0, (("north", _("North")), ("south", _("South"))), False) nim.advanced.lnb[x].powerMeasurement = configElement(cname + "advanced.lnb" + str(x) + ".powerMeasurement", configSelection, 0, (("yes", _("Yes")), ("no", _("No"))), False) nim.advanced.lnb[x].powerThreshold = configElement(cname + "advanced.lnb" + str(x) + ".powerThreshold", configSequence, [50], configsequencearg.get("INTEGER", (0, 100)), False) elif slot.nimType == nimmgr.nimType["DVB-C"]: nim.cable = configElement(cname + "cable", configSelection, 0, nimmgr.cablesList, False); elif slot.nimType == nimmgr.nimType["DVB-T"]: - nim.cable = configElement(cname + "terrestrial", configSelection, 0, nimmgr.terrestrialsList, False); + list = [] + for x in nimmgr.terrestrialsList: + list.append(x[0]) + nim.terrestrial = configElement(cname + "terrestrial", configSelection, 0, list, False); + nim.terrestrial_5V = configElement(cname + "terrestrial_5V", configSelection, 1, (("on", _("On")), ("off", _("Off"))), True); else: print "pls add support for this frontend type!" nimmgr.sec = SecConfigure(nimmgr) + nimmanager = NimManager()