X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/32f4c3875b106243e27f418665779fe16f567af5..c138841fc86578cb4344a305cc2ca7e0f7fd4ca8:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 1d8e354c..32fca47f 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -1,3 +1,5 @@ +from Tools.HardwareInfo import HardwareInfo + from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, \ ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, \ ConfigSubDict, ConfigOnOff, ConfigDateTime @@ -123,7 +125,7 @@ class SecConfigure: for slot in nim_slots: if slot.type is not None: - used_nim_slots.append((slot.slot, slot.description, slot.config.configMode.value != "nothing" and True or False)) + used_nim_slots.append((slot.slot, slot.description, slot.config.configMode.value != "nothing" and True or False, slot.isCompatible("DVB-S2"))) eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots) for slot in nim_slots: @@ -153,6 +155,7 @@ class SecConfigure: for slot in nim_slots: x = slot.slot nim = slot.config + hw = HardwareInfo() if slot.isCompatible("DVB-S"): print "slot: " + str(x) + " configmode: " + str(nim.configMode.value) if nim.configMode.value in [ "loopthrough", "satposdepends", "nothing" ]: @@ -185,7 +188,7 @@ class SecConfigure: loValue = rotorParam.EAST else: loValue = rotorParam.WEST - inputPowerDelta=50 + inputPowerDelta=hw.get_device_name() == "dm8000" and 15 or 50 useInputPower=False turning_speed=0 if nim.powerMeasurement.value: @@ -364,8 +367,11 @@ class SecConfigure: # finally add the orbital positions for y in lnbSat[x]: self.addSatellite(sec, y) - currSat = config.Nims[slotid].advanced.sat[y] - + if x > 32: + satpos = x > 32 and (3604-(36 - x)) or y + else: + satpos = y + currSat = config.Nims[slotid].advanced.sat[satpos] if currSat.voltage.value == "polarization": sec.setVoltageMode(switchParam.HV) elif currSat.voltage.value == "13V": @@ -653,7 +659,7 @@ class NimManager: def canEqualTo(self, slotid): type = self.getNimType(slotid) - if self.getNimConfig(slotid) == "DVB-S2": + if type == "DVB-S2": type = "DVB-S" nimList = self.getNimListOfType(type, slotid) for nim in nimList[:]: @@ -661,16 +667,30 @@ class NimManager: if mode.configMode.value == "loopthrough" or mode.configMode.value == "satposdepends": nimList.remove(nim) return nimList - + def canDependOn(self, slotid): type = self.getNimType(slotid) - if self.getNimConfig(slotid) == "DVB-S2": + if type == "DVB-S2": type = "DVB-S" nimList = self.getNimListOfType(type, slotid) positionerList = [] for nim in nimList[:]: mode = self.getNimConfig(nim) - if mode.configMode.value == "simple" and mode.diseqcMode.value == "positioner": + nimHaveRotor = mode.configMode.value == "simple" and mode.diseqcMode.value == "positioner" + if not nimHaveRotor and mode.configMode.value == "advanced": + for x in range(3601, 3605): + lnb = int(mode.advanced.sat[x].lnb.value) + if lnb != 0: + nimHaveRotor = True + break + if not nimHaveRotor: + for sat in mode.advanced.sat.values(): + lnb_num = int(sat.lnb.value) + diseqcmode = lnb_num and mode.advanced.lnb[lnb_num].diseqcMode.value or "" + if diseqcmode == "1_2": + nimHaveRotor = True + break + if nimHaveRotor: alreadyConnected = False for testnim in nimList: testmode = self.getNimConfig(testnim) @@ -812,6 +832,10 @@ def InitSecParams(): 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=70, limits = (0, 9999)) + x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_BEFORE_SEQUENCE_REPEAT, configElement.value)) + config.sec.delay_before_sequence_repeat = x + x = ConfigInteger(default=360, limits = (0, 9999)) x.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_RUNNING_TIMEOUT, configElement.value)) config.sec.motor_running_timeout = x @@ -828,6 +852,7 @@ def InitSecParams(): def InitNimManager(nimmgr): InitSecParams() + hw = HardwareInfo() config.Nims = ConfigSubList() for x in range(len(nimmgr.nim_slots)): @@ -848,12 +873,12 @@ def InitNimManager(nimmgr): choices["loopthrough"] = _("loopthrough to") nim.configMode = ConfigSelection(choices = choices, default = "nothing") - for y in nimmgr.nim_slots: - if y.slot == 0: - if not y.isCompatible("DVB-S"): - # reset to simple - nim.configMode.value = "simple" - nim.configMode.save() +# for y in nimmgr.nim_slots: +# if y.slot == 0: +# if not y.isCompatible("DVB-S"): +# # reset to simple +# nim.configMode.value = "simple" +# nim.configMode.save() nim.diseqcMode = ConfigSelection( choices = [ @@ -958,7 +983,7 @@ def InitNimManager(nimmgr): nim.advanced.lnb[x].latitude = ConfigFloat(default = [50,767], limits = [(0,359),(0,999)]) nim.advanced.lnb[x].latitudeOrientation = ConfigSelection(choices = [("north", _("North")), ("south", _("South"))], default = "north") nim.advanced.lnb[x].powerMeasurement = ConfigYesNo(default=True) - nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=50, limits=(0, 100)) + nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=hw.get_device_name() == "dm8000" and 15 or 50, limits=(0, 100)) nim.advanced.lnb[x].turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch"))], default = "fast") btime = datetime(1970, 1, 1, 7, 0); nim.advanced.lnb[x].fastTurningBegin = ConfigDateTime(default=mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 600) @@ -1020,7 +1045,8 @@ def InitNimManager(nimmgr): nim.terrestrial_5V = ConfigOnOff() else: nim.configMode = ConfigSelection(choices = { "nothing": _("disabled") }, default="nothing"); - print "pls add support for this frontend type!" + if slot.type is not None: + print "pls add support for this frontend type!", slot.type # assert False nimmgr.sec = SecConfigure(nimmgr)