X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ae602961330ac8eab5312a7f8dd991f45e211709..7731625e1ec4c5b9af80a8ac241cd8b8b0c35adc:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 5b3b853f..8bfdb5bb 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -1,6 +1,6 @@ from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff -from enigma import eDVBSatelliteEquipmentControl, \ +from enigma import eDVBSatelliteEquipmentControl as secClass, \ eDVBSatelliteLNBParameters as lnbParam, \ eDVBSatelliteDiseqcParameters as diseqcParam, \ eDVBSatelliteSwitchParameters as switchParam, \ @@ -16,6 +16,14 @@ from xml.sax.handler import ContentHandler from Tools.BoundFunction import boundFunction +def getConfigSatlist(orbpos, satlist): + default_orbpos = None + for x in satlist: + if x[0] == orbpos: + default_orbpos = orbpos + break + return ConfigSatlist(satlist, default_orbpos) + def tryOpen(filename): try: procFile = open(filename) @@ -32,7 +40,6 @@ class SecConfigure: tunermask |= (1 << self.equal[slotid]) elif self.linked.has_key(slotid): tunermask |= (1 << self.linked[slotid]) - sec.setLNBTunerMask(tunermask) sec.setLNBLOFL(9750000) sec.setLNBLOFH(10600000) sec.setLNBThreshold(11700000) @@ -56,7 +63,6 @@ class SecConfigure: elif (diseqcmode == 3): # diseqc 1.2 if self.satposdepends.has_key(slotid): tunermask |= (1 << self.satposdepends[slotid]) - sec.setLNBTunerMask(tunermask) sec.setLatitude(latitude) sec.setLaDirection(laDirection) sec.setLongitude(longitude) @@ -72,6 +78,8 @@ class SecConfigure: sec.setRotorPosNum(0) # USALS self.satList.append(int(x[0])) + sec.setLNBTunerMask(tunermask) + def setSatposDepends(self, sec, nim1, nim2): print "tuner", nim1, "depends on satpos of", nim2 sec.setTunerDepends(nim1, nim2) @@ -84,7 +92,7 @@ class SecConfigure: return self.satList def update(self): - sec = eDVBSatelliteEquipmentControl.getInstance() + sec = secClass.getInstance() sec.clear() ## this do unlinking NIMs too !! print "sec config cleared" self.satList = [] @@ -97,13 +105,13 @@ class SecConfigure: nim = config.Nims[x] if slot.nimType == self.NimManager.nimType["DVB-S"]: if nim.configMode.value == "equal": - self.equal[nim.equalTo.value]=x + self.equal[nim.equalTo.index]=x if nim.configMode.value == "loopthrough": - self.linkNIMs(sec, x, nim.linkedTo.value) - self.linked[nim.linkedTo.value]=x + self.linkNIMs(sec, x, nim.linkedTo.index) + self.linked[nim.linkedTo.index]=x elif nim.configMode.value == "satposdepends": self.setSatposDepends(sec, x, nim.satposDependsTo.index) - self.satposdepends[nim.satposDependsTo.value]=x + self.satposdepends[nim.satposDependsTo.index]=x for slot in self.NimManager.nimslots: x = slot.slotid @@ -178,10 +186,10 @@ class SecConfigure: sec.setLNBLOFH(currLnb.lofh.value * 1000) sec.setLNBThreshold(currLnb.threshold.value * 1000) - if currLnb.output_12v.value == "0V": - pass # nyi in drivers - elif currLnb.output_12v.value == "12V": - pass # nyi in drivers +# if currLnb.output_12v.value == "0V": +# pass # nyi in drivers +# elif currLnb.output_12v.value == "12V": +# pass # nyi in drivers if currLnb.increased_voltage.value: sec.setLNBIncreasedVoltage(lnbParam.ON) @@ -413,7 +421,7 @@ class NimManager: return self.cablesList[0] def getCableTrustNit(self, nim): - return (config.Nims[nim].cabletype.value == "quick") + return config.Nims[nim].cabletype.value == "quick" def getTerrestrialDescription(self, nim): return self.terrestrialsList[config.Nims[nim].terrestrial.index][0] @@ -462,6 +470,7 @@ class NimManager: lastsocket = -1 + entries = {} while 1: line = nimfile.readline() if line == "": @@ -470,17 +479,24 @@ class NimManager: parts = line.strip().split(" ") id = int(parts[2][:1]) lastsocket = int(id) - self.nimSocketCount += 1 + entries[lastsocket] = {} elif line.strip().startswith("Type:"): - self.nimTypes[lastsocket] = str(line.strip()[6:]) - #self.nimTypes[lastsocket] = str("DVB-T") + entries[lastsocket]["type"] = str(line.strip()[6:]) + #entries[lastsocket]["type"] = str("DVB-S2") elif line.strip().startswith("Name:"): - self.nimNames[lastsocket] = str(line.strip()[6:]) + entries[lastsocket]["name"] = str(line.strip()[6:]) elif line.strip().startswith("empty"): - self.nimNames[lastsocket] = _("N/A") - self.nimTypes[lastsocket] = "empty/unknown" - + entries[lastsocket]["type"] = "empty/unknown" + entries[lastsocket]["name"] = _("N/A") nimfile.close() + + for id,entry in entries.items(): + if not(entry.has_key("name") and entry.has_key("type") and self.nimType.has_key(entry["type"])): + entry["name"] = _("N/A") + entry["type"] = "empty/unknown" + self.nimNames[id] = entry["name"] + self.nimTypes[id] = entry["type"] + self.nimSocketCount += 1 def getNimType(self, slotID): if slotID >= self.nimCount: @@ -576,9 +592,9 @@ class NimManager: if configMode == "simple": dm = config.Nims[slotid].diseqcMode.value - if dm in ["single", "toneburst", "diseqc_a_b", "diseqc_a_b_c_d"]: + if dm in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]: list.append(self.satList[config.Nims[slotid].diseqcA.index]) - if dm in ["toneburst", "diseqc_a_b", "diseqc_a_b_c_d"]: + if dm in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]: list.append(self.satList[config.Nims[slotid].diseqcB.index]) if dm == "diseqc_a_b_c_d": list.append(self.satList[config.Nims[slotid].diseqcC.index]) @@ -632,16 +648,74 @@ class NimManager: #print "nimDiseqcD set to " + str(val) pass +def InitSecParams(): + config.sec = ConfigSubsection() + + x = ConfigInteger(default=15, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_CONT_TONE, configElement.value)) + config.sec.delay_after_continuous_tone_change = x + + x = ConfigInteger(default=10, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_FINAL_VOLTAGE_CHANGE, configElement.value)) + config.sec.delay_after_final_voltage_change = x + + x = ConfigInteger(default=120, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_BETWEEN_DISEQC_REPEATS, configElement.value)) + config.sec.delay_between_diseqc_repeats = x + + x = ConfigInteger(default=50, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_LAST_DISEQC_CMD, configElement.value)) + config.sec.delay_after_last_diseqc_command = x + + x = ConfigInteger(default=50, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_TONEBURST, configElement.value)) + config.sec.delay_after_toneburst = x + + x = ConfigInteger(default=750, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_ENABLE_VOLTAGE_BEFORE_SWITCH_CMDS, configElement.value)) + config.sec.delay_after_enable_voltage_before_switch_command = x + + x = ConfigInteger(default=700, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_BETWEEN_SWITCH_AND_MOTOR_CMD, configElement.value)) + config.sec.delay_between_switch_and_motor_command = x + + x = ConfigInteger(default=150, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MEASURE_IDLE_INPUTPOWER, configElement.value)) + config.sec.delay_after_voltage_change_before_measure_idle_inputpower = x + + x = ConfigInteger(default=750, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_ENABLE_VOLTAGE_BEFORE_MOTOR_CMD, configElement.value)) + config.sec.delay_after_enable_voltage_before_motor_command = x + + x = ConfigInteger(default=150, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_MOTOR_STOP_CMD, configElement.value)) + config.sec.delay_after_motor_stop_command = x + + x = ConfigInteger(default=150, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MOTOR_CMD, configElement.value)) + config.sec.delay_after_voltage_change_before_motor_command = x + + x = ConfigInteger(default=120, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_RUNNING_TIMEOUT, configElement.value)) + config.sec.motor_running_timeout = x + + x = ConfigInteger(default=1, limits = (0, 5)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_COMMAND_RETRIES, configElement.value)) + config.sec.motor_command_retries = x + + def InitNimManager(nimmgr): + InitSecParams() + config.Nims = ConfigSubList() for x in range(nimmgr.nimCount): config.Nims.append(ConfigSubsection()) - + # def nimConfigModeChanged(slotid, configElement): # nimmgr.nimConfigModeChanged(slotid, configElement.value) def nimDiseqcModeChanged(slotid, configElement): nimmgr.nimDiseqcModeChanged(slotid, configElement.value) - + def nimPortAChanged(slotid, configElement): nimmgr.nimPortAChanged(slotid, configElement.value) def nimPortBChanged(slotid, configElement): @@ -655,7 +729,7 @@ def InitNimManager(nimmgr): x = slot.slotid cname = nimmgr.getConfigPrefix(x) nim = config.Nims[x] - + if slot.nimType == nimmgr.nimType["DVB-S"]: if slot.slotid == 0: nim.configMode = ConfigSelection( @@ -664,16 +738,15 @@ def InitNimManager(nimmgr): "advanced": _("advanced")}, default = "simple") else: - nim.configMode = ConfigSelection( choices = { "equal": _("equal to Socket A"), - "looptrough": _("loopthrough to socket A"), + "loopthrough": _("loopthrough to socket A"), "nothing": _("nothing connected"), "satposdepends": _("second cable of motorized LNB"), "simple": _("simple"), "advanced": _("advanced")}, - default = "looptrough") + default = "loopthrough") #important - check if just the 2nd one is LT only and the first one is DVB-S if nim.configMode.value in ["loopthrough", "satposdepends", "equal"]: @@ -698,8 +771,9 @@ def InitNimManager(nimmgr): ("diseqc_a_b_c_d", _("DiSEqC A/B/C/D")), ("positioner", _("Positioner"))], default = "diseqc_a_b") - nim.diseqcA = ConfigSatlist(default = 192, list = nimmgr.satList) - nim.diseqcB = ConfigSatlist(default = 130, list = nimmgr.satList) + + nim.diseqcA = getConfigSatlist(192, nimmgr.satList) + nim.diseqcB = getConfigSatlist(130, nimmgr.satList) nim.diseqcC = ConfigSatlist(list = nimmgr.satList) nim.diseqcD = ConfigSatlist(list = nimmgr.satList) nim.positionerMode = ConfigSelection( @@ -719,7 +793,7 @@ def InitNimManager(nimmgr): nim.equalTo = ConfigSelection(choices = satNimListNames) nim.linkedTo = ConfigSelection(choices = satNimListNames) nim.satposDependsTo = ConfigSelection(choices = satNimListNames) - + #perhaps the instance of the slot is more useful? # nim.configMode.addNotifier(boundFunction(nimConfigModeChanged,x)) nim.diseqcMode.addNotifier(boundFunction(nimDiseqcModeChanged,x)) @@ -727,10 +801,10 @@ def InitNimManager(nimmgr): nim.diseqcB.addNotifier(boundFunction(nimPortBChanged,x)) nim.diseqcC.addNotifier(boundFunction(nimPortCChanged,x)) nim.diseqcD.addNotifier(boundFunction(nimPortDChanged,x)) - + # advanced config: nim.advanced = ConfigSubsection() - nim.advanced.sats = ConfigSatlist(default = 192, list = nimmgr.satList) + nim.advanced.sats = getConfigSatlist(192,nimmgr.satList) nim.advanced.sat = ConfigSubDict() lnbs = [("0", "not available")] for y in range(1, 33): @@ -747,11 +821,11 @@ def InitNimManager(nimmgr): csw = [("none", _("None")), ("AA", _("AA")), ("AB", _("AB")), ("BA", _("BA")), ("BB", _("BB"))] for y in range(0, 16): csw.append((str(0xF0|y), "Input " + str(y+1))) - + ucsw = [("0", _("None"))] for y in range(1, 17): ucsw.append((str(y), "Input " + str(y))) - + nim.advanced.lnb = ConfigSubList() nim.advanced.lnb.append(ConfigNothing()) for x in range(1, 33): @@ -760,7 +834,7 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].lofl = ConfigInteger(default=9750, limits = (0, 99999)) nim.advanced.lnb[x].lofh = ConfigInteger(default=10600, limits = (0, 99999)) nim.advanced.lnb[x].threshold = ConfigInteger(default=11700, limits = (0, 99999)) - nim.advanced.lnb[x].output_12v = ConfigSelection(choices = [("0V", _("0 V")), ("12V", _("12 V"))], default="0V") +# nim.advanced.lnb[x].output_12v = ConfigSelection(choices = [("0V", _("0 V")), ("12V", _("12 V"))], default="0V") nim.advanced.lnb[x].increased_voltage = ConfigYesNo(default=False) nim.advanced.lnb[x].toneburst = ConfigSelection(choices = [("none", _("None")), ("A", _("A")), ("B", _("B"))], default = "none") nim.advanced.lnb[x].diseqcMode = ConfigSelection(choices = [("none", _("None")), ("1_0", _("1.0")), ("1_1", _("1.1")), ("1_2", _("1.2"))], default = "none") @@ -769,11 +843,11 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].sequenceRepeat = ConfigYesNo(default=False) nim.advanced.lnb[x].commandOrder1_0 = ConfigSelection(choices = [("ct", "committed, toneburst"), ("tc", "toneburst, committed")], default = "ct") nim.advanced.lnb[x].commandOrder = ConfigSelection(choices = [ - ("ct", "committed, toneburst"), - ("tc", "toneburst, committed"), - ("cut", "committed, uncommitted, toneburst"), - ("tcu", "toneburst, committed, uncommitted"), - ("uct", "uncommitted, committed, toneburst"), + ("ct", "committed, toneburst"), + ("tc", "toneburst, committed"), + ("cut", "committed, uncommitted, toneburst"), + ("tcu", "toneburst, committed, uncommitted"), + ("uct", "uncommitted, committed, toneburst"), ("tuc", "toneburst, uncommitted, commmitted")], default="ct") nim.advanced.lnb[x].uncommittedDiseqcCommand = ConfigSelection(choices = ucsw) @@ -786,7 +860,7 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=50, limits=(0, 100)) elif slot.nimType == nimmgr.nimType["DVB-C"]: - nim.cabletype = ConfigSelection(choices = [("quick", _("Quick")), ("complete", _("Complete"))]) + nim.cabletype = ConfigSelection(choices = [("quick", _("Quick")), ("complete", _("Complete"))], default = "complete") elif slot.nimType == nimmgr.nimType["DVB-T"]: list = [] n = 0