X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a7d4b01c25a9bbe388edf11ef6a7e5682f600e38..17e9e23c08a998eaa4ba6940cd09a9455f2ccf59:/lib/python/Components/NimManager.py diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 088c71bf..e1d3b068 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 @@ -84,8 +86,8 @@ class SecConfigure: for x in self.NimManager.satList: print "Add sat " + str(x[0]) self.addSatellite(sec, int(x[0])) - sec.setVoltageMode(0) - sec.setToneMode(0) + sec.setVoltageMode(switchParam.HV) + sec.setToneMode(switchParam.HILO) sec.setRotorPosNum(0) # USALS sec.setLNBSlotMask(tunermask) @@ -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,9 +155,9 @@ 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) - print "diseqcmode: ", nim.diseqcMode.value if nim.configMode.value in [ "loopthrough", "satposdepends", "nothing" ]: pass else: @@ -163,6 +165,7 @@ class SecConfigure: if nim.configMode.value == "equal": pass elif nim.configMode.value == "simple": #simple config + print "diseqcmode: ", nim.diseqcMode.value if nim.diseqcMode.value == "single": #single self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.NONE, diseqcpos = diseqcParam.SENDNO) elif nim.diseqcMode.value == "toneburst_a_b": #Toneburst A/B @@ -185,12 +188,11 @@ class SecConfigure: loValue = rotorParam.EAST else: loValue = rotorParam.WEST - inputPowerDelta=50 + inputPowerDelta=nim.powerThreshold.value useInputPower=False turning_speed=0 if nim.powerMeasurement.value: useInputPower=True - inputPowerDelta=nim.powerThreshold.value turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW } if turn_speed_dict.has_key(nim.turningSpeed.value): turning_speed = turn_speed_dict[nim.turningSpeed.value] @@ -276,8 +278,9 @@ class SecConfigure: elif dm == "1_2": sec.setDiSEqCMode(diseqcParam.V1_2) - if self.satposdepends.has_key(slotid): # only useable with rotors - tunermask |= (1 << self.satposdepends[slotid]) + if self.satposdepends.has_key(slotid): + for slot in self.satposdepends[slotid]: + tunermask |= (1 << slot) if dm != "none": if currLnb.toneburst.value == "none": @@ -363,20 +366,23 @@ 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": sec.setVoltageMode(switchParam._14V) elif currSat.voltage.value == "18V": sec.setVoltageMode(switchParam._18V) - - if currSat.tonemode == "band": + + if currSat.tonemode.value == "band": sec.setToneMode(switchParam.HILO) - elif currSat.tonemode == "on": + elif currSat.tonemode.value == "on": sec.setToneMode(switchParam.ON) - elif currSat.tonemode == "off": + elif currSat.tonemode.value == "off": sec.setToneMode(switchParam.OFF) if not currSat.usals.value and x < 34: @@ -652,7 +658,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[:]: @@ -660,16 +666,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) @@ -811,6 +831,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 @@ -827,6 +851,7 @@ def InitSecParams(): def InitNimManager(nimmgr): InitSecParams() + hw = HardwareInfo() config.Nims = ConfigSubList() for x in range(len(nimmgr.nim_slots)): @@ -847,21 +872,12 @@ def InitNimManager(nimmgr): choices["loopthrough"] = _("loopthrough to") nim.configMode = ConfigSelection(choices = choices, default = "nothing") - #important - check if just the 2nd one is LT only and the first one is DVB-S - # CHECKME: is this logic correct for >2 slots? -# if nim.configMode.value in ["loopthrough", "satposdepends", "equal"]: -# if x == 0: # first one can never be linked to anything -# # reset to simple -# nim.configMode.value = "simple" -# nim.configMode.save() -# else: - #FIXME: make it better - 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 = [ @@ -891,7 +907,7 @@ def InitNimManager(nimmgr): nim.latitude = ConfigFloat(default=[50,767], limits=[(0,359),(0,999)]) nim.latitudeOrientation = ConfigSelection(choices={"north": _("North"), "south": _("South")}, default="north") nim.powerMeasurement = ConfigYesNo(default=True) - nim.powerThreshold = ConfigInteger(default=50, limits=(0, 100)) + nim.powerThreshold = ConfigInteger(default=hw.get_device_name() == "dm8000" and 15 or 50, limits=(0, 100)) nim.turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch")) ], default = "fast") btime = datetime(1970, 1, 1, 7, 0); nim.fastTurningBegin = ConfigDateTime(default = mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 900) @@ -900,7 +916,7 @@ def InitNimManager(nimmgr): # advanced config: nim.advanced = ConfigSubsection() - tmp = [(3601, _('All Satellites 1'), 1), (3602, _('All Satellites 2'), 1), (3603, _('All Satellites 3'), 1), (3604, _('All Satellites 4'), 1)] + tmp = [(3601, _('All Satellites')+' 1', 1), (3602, _('All Satellites')+' 2', 1), (3603, _('All Satellites')+' 3', 1), (3604, _('All Satellites')+' 4', 1)] nim.advanced.sats = getConfigSatlist(192,nimmgr.satList+tmp) nim.advanced.sat = ConfigSubDict() lnbs = [("0", "not available")] @@ -966,7 +982,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) @@ -1028,7 +1044,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)