X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/6eeefece35e4269e02fdb7abab4f79d8e7b8f98b..b41d5f967712c1ef48b63a00052f61275fc8e737:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 783288ec..04ea2889 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, ConfigDummy, ConfigSubDict +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) @@ -212,14 +220,13 @@ class SecConfigure: # Committed Diseqc Command cdc = currLnb.commitedDiseqcCommand.value - c = [ - ("none", diseqcParam.SENDNO), - ("AA", diseqcParam.AA), - ("AB", diseqcParam.AB), - ("BA", diseqcParam.BA), - ("BB", diseqcParam.BB)] - - if cdc in c: + c = { "none": diseqcParam.SENDNO, + "AA": diseqcParam.AA, + "AB": diseqcParam.AB, + "BA": diseqcParam.BA, + "BB": diseqcParam.BB } + + if c.has_key(cdc): sec.setCommittedCommand(c[cdc]) else: sec.setCommittedCommand(long(cdc)) @@ -354,14 +361,14 @@ class NimManager: self.parsedCab = str(tname) elif (name == "transponder"): freq = int(attrs.get('frequency',"")) - sr = int(attrs.get('symbol_rate',"")) - mod = int(attrs.get('modulation',"3")) # QAM64 default - fec = int(attrs.get('fec_inner',"0")) # AUTO default + #sr = int(attrs.get('symbol_rate',"")) + #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)) + self.transponders[self.parsedCab].append((1, freq)) class parseTerrestrials(ContentHandler): def __init__(self, terrestrialsList, transponders): @@ -411,13 +418,16 @@ class NimManager: return self.transpondersterrestrial[region] def getCableDescription(self, nim): - return self.cablesList[config.Nims[nim].cable.value] + return self.cablesList[0] + + def getCableTrustNit(self, nim): + return config.Nims[nim].cabletype.value == "quick" def getTerrestrialDescription(self, nim): - return self.terrestrialsList[config.Nims[nim].terrestrial.value][0] + return self.terrestrialsList[config.Nims[nim].terrestrial.index][0] def getTerrestrialFlags(self, nim): - return self.terrestrialsList[config.Nims[nim].terrestrial.value][1] + return self.terrestrialsList[config.Nims[nim].terrestrial.index][1] def getConfiguredSats(self): return self.sec.getSatList() @@ -574,9 +584,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]) @@ -609,7 +619,7 @@ class NimManager: lnbnum = int(nim.advanced.sat[x[0]].lnb.value) if lnbnum != 0: lnb = nim.advanced.lnb[lnbnum] - if lnb.diseqcMode.value == "diseqc_a_b_c_d": + if lnb.diseqcMode.value == "1_2": list.append(x) return list @@ -630,7 +640,65 @@ class NimManager: #print "nimDiseqcD set to " + str(val) pass +def InitSecParams(): + config.sec = ConfigSubsection() + + x = ConfigInteger(default=15) + 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) + 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) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_BETWEEN_DISEQC_REPEATS, configElement.value)) + config.sec.delay_between_diseqc_repeats = x + + x = ConfigInteger(default=50) + 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) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_TONEBURST, configElement.value)) + config.sec.delay_after_toneburst = x + + x = ConfigInteger(default=120) + 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) + 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) + 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) + 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) + 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) + 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) + x.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_RUNNING_TIMEOUT, configElement.value)) + config.sec.motor_running_timeout = x + + x = ConfigInteger(default=1) + 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()) @@ -662,16 +730,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"]: @@ -696,8 +763,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( @@ -728,7 +796,7 @@ def InitNimManager(nimmgr): # 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): @@ -745,20 +813,20 @@ 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(ConfigDummy()) + nim.advanced.lnb.append(ConfigNothing()) for x in range(1, 33): nim.advanced.lnb.append(ConfigSubsection()) nim.advanced.lnb[x].lof = ConfigSelection(choices={"universal_lnb": _("Universal LNB"), "c_band": _("C-Band"), "user_defined": _("User defined")}, default="universal_lnb") 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") @@ -784,11 +852,13 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=50, limits=(0, 100)) elif slot.nimType == nimmgr.nimType["DVB-C"]: - nim.cable = ConfigSelection(choices = nimmgr.cablesList) + nim.cabletype = ConfigSelection(choices = [("quick", _("Quick")), ("complete", _("Complete"))], default = "complete") elif slot.nimType == nimmgr.nimType["DVB-T"]: list = [] + n = 0 for x in nimmgr.terrestrialsList: - list.append(x[0]) + list.append((str(n), x[0])) + n += 1 nim.terrestrial = ConfigSelection(choices = list) nim.terrestrial_5V = ConfigOnOff() else: