-from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff
+from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, \
+ ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, \
+ ConfigSubDict, ConfigOnOff, ConfigDateTime
from enigma import eDVBSatelliteEquipmentControl as secClass, \
eDVBSatelliteLNBParameters as lnbParam, \
eDVBSatelliteDiseqcParameters as diseqcParam, \
eDVBSatelliteSwitchParameters as switchParam, \
- eDVBSatelliteRotorParameters as rotorParam
+ eDVBSatelliteRotorParameters as rotorParam, \
+ eDVBResourceManager, eDVBDB
-import xml.dom.minidom
-from xml.dom import EMPTY_NAMESPACE
-from skin import elementsWithTag
-from Tools import XMLTools
+from time import localtime, mktime
+from datetime import datetime
-from xml.sax import make_parser
-from xml.sax.handler import ContentHandler
-
-from Tools.BoundFunction import boundFunction
+from sets import Set
def getConfigSatlist(orbpos, satlist):
default_orbpos = None
return procFile
class SecConfigure:
- def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = 0, diseqcpos = 0, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0):
+ def getConfiguredSats(self):
+ return self.configuredSatellites
+
+ def addSatellite(self, sec, orbpos):
+ sec.addSatellite(orbpos)
+ self.configuredSatellites.add(orbpos)
+
+ def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = diseqcParam.NO, diseqcpos = diseqcParam.SENDNO, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0, turningSpeed = rotorParam.FAST, useInputPower=True, inputPowerDelta=50):
+ if orbpos is None:
+ return
#simple defaults
sec.addLNB()
tunermask = 1 << slotid
sec.setDiSEqCMode(diseqcmode)
sec.setToneburst(toneburstmode)
sec.setCommittedCommand(diseqcpos)
+ sec.setUncommittedCommand(0) # SENDNO
#print "set orbpos to:" + str(orbpos)
if 0 <= diseqcmode < 3:
- sec.addSatellite(orbpos)
- self.satList.append(orbpos)
+ self.addSatellite(sec, orbpos)
elif (diseqcmode == 3): # diseqc 1.2
if self.satposdepends.has_key(slotid):
tunermask |= (1 << self.satposdepends[slotid])
sec.setLaDirection(laDirection)
sec.setLongitude(longitude)
sec.setLoDirection(loDirection)
- sec.setUseInputpower(True)
- sec.setInputpowerDelta(50)
+ sec.setUseInputpower(useInputPower)
+ sec.setInputpowerDelta(inputPowerDelta)
+ sec.setRotorTurningSpeed(turningSpeed)
for x in self.NimManager.satList:
print "Add sat " + str(x[0])
- sec.addSatellite(int(x[0]))
+ self.addSatellite(sec, int(x[0]))
sec.setVoltageMode(0)
sec.setToneMode(0)
sec.setRotorPosNum(0) # USALS
- self.satList.append(int(x[0]))
- sec.setLNBTunerMask(tunermask)
+ sec.setLNBSlotMask(tunermask)
def setSatposDepends(self, sec, nim1, nim2):
print "tuner", nim1, "depends on satpos of", nim2
print "link tuner", nim1, "to tuner", nim2
sec.setTunerLinked(nim1, nim2)
- def getSatList(self):
- return self.satList
-
def update(self):
sec = secClass.getInstance()
+ self.configuredSatellites = Set()
sec.clear() ## this do unlinking NIMs too !!
print "sec config cleared"
- self.satList = []
self.linked = { }
self.satposdepends = { }
self.equal = { }
-
+
nim_slots = self.NimManager.nim_slots
-
+
+ used_nim_slots = [ ]
+
+ 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))
+ eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots)
+
for slot in nim_slots:
x = slot.slot
nim = slot.config
# this is stored in the *value* (not index!) of the config list
if nim.configMode.value == "equal":
self.equal[int(nim.equalTo.value)]=x
- if nim.configMode.value == "loopthrough":
+ elif nim.configMode.value == "loopthrough":
self.linkNIMs(sec, x, int(nim.linkedTo.value))
self.linked[int(nim.linkedTo.value)]=x
elif nim.configMode.value == "satposdepends":
if slot.isCompatible("DVB-S"):
print "slot: " + str(x) + " configmode: " + str(nim.configMode.value)
print "diseqcmode: ", nim.configMode.value
- if nim.configMode.value in [ "loopthrough", "satposdepends", "equal", "nothing" ]:
+ if nim.configMode.value in [ "loopthrough", "satposdepends", "nothing" ]:
pass
- elif nim.configMode.value == "simple": #simple config
- 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
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.A, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.SENDNO)
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.B, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.SENDNO)
- elif nim.diseqcMode.value == "diseqc_a_b": #DiSEqC A/B
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AA)
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AB)
- elif nim.diseqcMode.value == "diseqc_a_b_c_d": #DiSEqC A/B/C/D
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AA)
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AB)
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcC.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.BA)
- self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcD.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.BB)
- elif nim.diseqcMode.value == "positioner": #Positioner
- if nim.latitudeOrientation.value == "north":
- laValue = rotorParam.NORTH
- else:
- laValue = rotorParam.SOUTH
- if nim.longitudeOrientation.value == "east":
- loValue = rotorParam.EAST
- else:
- loValue = rotorParam.WEST
- self.addLNBSimple(sec, slotid = x, diseqcmode = 3,
- longitude = nim.longitude.float,
- loDirection = loValue,
- latitude = nim.latitude.float,
- laDirection = laValue)
- elif nim.configMode.value == "advanced": #advanced config
- self.updateAdvanced(sec, x)
+ else:
+ sec.setSlotNotLinked(x)
+ if nim.configMode.value == "equal":
+ pass
+ elif nim.configMode.value == "simple": #simple config
+ 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
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.A, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.SENDNO)
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.B, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.SENDNO)
+ elif nim.diseqcMode.value == "diseqc_a_b": #DiSEqC A/B
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AA)
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AB)
+ elif nim.diseqcMode.value == "diseqc_a_b_c_d": #DiSEqC A/B/C/D
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcA.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AA)
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcB.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.AB)
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcC.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.BA)
+ self.addLNBSimple(sec, slotid = x, orbpos = nim.diseqcD.orbital_position, toneburstmode = diseqcParam.NO, diseqcmode = diseqcParam.V1_0, diseqcpos = diseqcParam.BB)
+ elif nim.diseqcMode.value == "positioner": #Positioner
+ if nim.latitudeOrientation.value == "north":
+ laValue = rotorParam.NORTH
+ else:
+ laValue = rotorParam.SOUTH
+ if nim.longitudeOrientation.value == "east":
+ loValue = rotorParam.EAST
+ else:
+ loValue = rotorParam.WEST
+ inputPowerDelta=50
+ 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]
+ else:
+ beg_time = localtime(nim.fastTurningBegin.value)
+ end_time = localtime(nim.fastTurningEnd.value)
+ turning_speed = ((beg_time.tm_hour+1) * 60 + beg_time.tm_min + 1) << 16
+ turning_speed |= (end_time.tm_hour+1) * 60 + end_time.tm_min + 1
+ self.addLNBSimple(sec, slotid = x, diseqcmode = 3,
+ longitude = nim.longitude.float,
+ loDirection = loValue,
+ latitude = nim.latitude.float,
+ laDirection = laValue,
+ turningSpeed = turning_speed,
+ useInputPower = useInputPower,
+ inputPowerDelta = inputPowerDelta)
+ elif nim.configMode.value == "advanced": #advanced config
+ self.updateAdvanced(sec, x)
print "sec config completed"
def updateAdvanced(self, sec, slotid):
sec.setLNBLOFL(currLnb.lofl.value * 1000)
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.increased_voltage.value:
sec.setLNBIncreasedVoltage(lnbParam.ON)
else:
sec.setLNBIncreasedVoltage(lnbParam.OFF)
-
- dm = currLnb.diseqcMode.value
+
+ dm = currLnb.diseqcMode.value
if dm == "none":
sec.setDiSEqCMode(diseqcParam.NONE)
elif dm == "1_0":
sec.setToneburst(diseqcParam.A)
elif currLnb.toneburst.value == "B":
sec.setToneburst(diseqcParam.B)
-
+
# Committed Diseqc Command
cdc = currLnb.commitedDiseqcCommand.value
-
+
c = { "none": diseqcParam.SENDNO,
"AA": diseqcParam.AA,
"AB": diseqcParam.AB,
sec.setCommittedCommand(long(cdc))
sec.setFastDiSEqC(currLnb.fastDiseqc.value)
-
+
sec.setSeqRepeat(currLnb.sequenceRepeat.value)
-
+
if currLnb.diseqcMode.value == "1_0":
currCO = currLnb.commandOrder1_0.value
else:
sec.setRepeats({"none": 0, "one": 1, "two": 2, "three": 3}[currLnb.diseqcRepeats.value])
setCommandOrder = False
-
- # 0 "committed, toneburst",
- # 1 "toneburst, committed",
+
+ # 0 "committed, toneburst",
+ # 1 "toneburst, committed",
# 2 "committed, uncommitted, toneburst",
# 3 "toneburst, committed, uncommitted",
# 4 "uncommitted, committed, toneburst"
sec.setLoDirection(rotorParam.EAST)
else:
sec.setLoDirection(rotorParam.WEST)
-
+
if currLnb.powerMeasurement.value:
sec.setUseInputpower(True)
sec.setInputpowerDelta(currLnb.powerThreshold.value)
+ turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW }
+ if turn_speed_dict.has_key(currLnb.turningSpeed.value):
+ turning_speed = turn_speed_dict[currLnb.turningSpeed.value]
+ else:
+ beg_time = localtime(currLnb.fastTurningBegin.value)
+ end_time = localtime(currLnb.fastTurningEnd.value)
+ turning_speed = ((beg_time.tm_hour + 1) * 60 + beg_time.tm_min + 1) << 16
+ turning_speed |= (end_time.tm_hour + 1) * 60 + end_time.tm_min + 1
+ sec.setRotorTurningSpeed(turning_speed)
else:
sec.setUseInputpower(False)
- sec.setLNBTunerMask(tunermask)
+ sec.setLNBSlotMask(tunermask)
# finally add the orbital positions
for y in lnbSat[x]:
- sec.addSatellite(y)
+ self.addSatellite(sec, y)
currSat = config.Nims[slotid].advanced.sat[y]
if currSat.voltage.value == "polarization":
def __init__(self, nimmgr):
self.NimManager = nimmgr
+ self.configuredSatellites = Set()
self.update()
class NIM(object):
empty = property(lambda self: self.type is None)
class NimManager:
- class parseSats(ContentHandler):
- def __init__(self, satList, satellites, transponders):
- self.isPointsElement, self.isReboundsElement = 0, 0
- self.satList = satList
- self.satellites = satellites
- self.transponders = transponders
-
- def startElement(self, name, attrs):
- if (name == "sat"):
- #print "found sat " + attrs.get('name',"") + " " + str(attrs.get('position',""))
- tpos = int(attrs.get('position',""))
- if tpos < 0:
- tpos = 3600 + tpos
- tname = attrs.get('name',"").encode("UTF-8")
- self.satellites[tpos] = tname
- self.satList.append( (tpos, tname) )
- 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',"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, system, modulation))
-
- class parseCables(ContentHandler):
- def __init__(self, cablesList, transponders):
- self.isPointsElement, self.isReboundsElement = 0, 0
- self.cablesList = cablesList
- for x in self.cablesList:
- self.cablesList.remove(x)
- self.transponders = transponders
-
- def startElement(self, name, attrs):
- if (name == "cable"):
- #print "found sat " + attrs.get('name',"") + " " + str(attrs.get('position',""))
- tname = attrs.get('name',"").encode("UTF-8")
- tflags = int(attrs.get('flags',"0"))
- self.cablesList.append((tname, tflags))
- self.parsedCab = tname
- elif (name == "transponder"):
- freq = int(attrs.get('frequency',""))
- while freq > 999999:
- freq /= 10
- sr = int(attrs.get('symbol_rate',"0"))
- 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):
- def __init__(self, terrestrialsList, transponders):
- self.isPointsElement, self.isReboundsElement = 0, 0
- self.terrestrialsList = terrestrialsList
- self.transponders = transponders
-
- def startElement(self, name, attrs):
- if (name == "terrestrial"):
- #print "found sat " + attrs.get('name',"") + " " + str(attrs.get('position',""))
- 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',"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:
- self.transponders[self.parsedTer] = [ ]
-
- self.transponders[self.parsedTer].append((2, freq, bw, const, crh, crl, guard, transm, hierarchy, inv))
+ def getConfiguredSats(self):
+ return self.sec.getConfiguredSats()
def getTransponders(self, pos):
if self.transponders.has_key(pos):
def getTerrestrialFlags(self, nim):
return self.terrestrialsList[config.Nims[nim].terrestrial.index][1]
- def getConfiguredSats(self):
- return self.sec.getSatList()
-
def getSatDescription(self, pos):
return self.satellites[pos]
- def readSatsfromFile(self):
+ def readTransponders(self):
# read initial networks from file. we only read files which we are interested in,
# which means only these where a compatible tuner exists.
self.satellites = { }
self.transponders = { }
self.transponderscable = { }
- self.transpondersterrestrial = { }
-
- parser = make_parser()
-
+ self.transpondersterrestrial = { }
+ db = eDVBDB.getInstance()
if self.hasNimType("DVB-S"):
print "Reading satellites.xml"
- satHandler = self.parseSats(self.satList, self.satellites, self.transponders)
- parser.setContentHandler(satHandler)
- parser.parse('/etc/tuxbox/satellites.xml')
+ db.readSatellites(self.satList, self.satellites, self.transponders)
+# print "SATLIST", self.satList
+# print "SATS", self.satellites
+# print "TRANSPONDERS", self.transponders
if self.hasNimType("DVB-C"):
print "Reading cables.xml"
- cabHandler = self.parseCables(self.cablesList, self.transponderscable)
- parser.setContentHandler(cabHandler)
- parser.parse('/etc/tuxbox/cables.xml')
+ db.readCables(self.cablesList, self.transponderscable)
+# print "CABLIST", self.cablesList
+# print "TRANSPONDERS", self.transponders
if self.hasNimType("DVB-T"):
print "Reading terrestrial.xml"
- terHandler = self.parseTerrestrials(self.terrestrialsList, self.transpondersterrestrial)
- parser.setContentHandler(terHandler)
- parser.parse('/etc/tuxbox/terrestrial.xml')
+ db.readTerrestrials(self.terrestrialsList, self.transpondersterrestrial)
+# print "TERLIST", self.terrestrialsList
+# print "TRANSPONDERS", self.transpondersterrestrial
def enumerateNIMs(self):
# enum available NIMs. This is currently very dreambox-centric and uses the /proc/bus/nim_sockets interface.
#
# Type will be either "DVB-S", "DVB-S2", "DVB-T", "DVB-C" or None.
+ # nim_slots is an array which has exactly one entry for each slot, even for empty ones.
+ self.nim_slots = [ ]
+
nimfile = tryOpen("/proc/bus/nim_sockets")
if nimfile is None:
entries[current_slot]["name"] = _("N/A")
nimfile.close()
- # nim_slots is an array which has exactly one entry for each slot, even for empty ones.
- self.nim_slots = [ ]
-
for id, entry in entries.items():
if not (entry.has_key("name") and entry.has_key("type")):
entry["name"] = _("N/A")
self.cablesList = []
self.terrestrialsList = []
self.enumerateNIMs()
- self.readSatsfromFile()
-
+ self.readTransponders()
InitNimManager(self) #init config stuff
# get a list with the friendly full description
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 = ConfigInteger(default=200, 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.addNotifier(lambda configElement: secClass.setParam(secClass.MOTOR_COMMAND_RETRIES, configElement.value))
config.sec.motor_command_retries = x
+ x = ConfigInteger(default=20, limits = (0, 9999))
+ x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS, configElement.value))
+ config.sec.delay_after_change_voltage_before_switch_command = x
+
+# TODO add support for satpos depending nims to advanced nim configuration
+# so a second/third/fourth cable from a motorized lnb can used behind a
+# diseqc 1.0 / diseqc 1.1 / toneburst switch
+# the C(++) part should can handle this
+# the configElement should be only visible when diseqc 1.2 is disabled
+
def InitNimManager(nimmgr):
InitSecParams()
nim.longitudeOrientation = ConfigSelection(choices={"east": _("East"), "west": _("West")}, default = "east")
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.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)
+ etime = datetime(1970, 1, 1, 19, 0);
+ nim.fastTurningEnd = ConfigDateTime(default = mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 900)
# get other frontends of the same type
- satNimList = nimmgr.getNimListOfType(slot.type, slot.slot)
+
+ satNimList = nimmgr.getNimListOfType("DVB-S", slot.slot)
satNimListNames = {}
for x in satNimList:
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].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)
+ etime = datetime(1970, 1, 1, 19, 0);
+ nim.advanced.lnb[x].fastTurningEnd = ConfigDateTime(default=mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 600)
elif slot.isCompatible("DVB-C"):
nim.configMode = ConfigSelection(
choices = {
possible_scan_types = [("bands", _("Frequency bands")), ("steps", _("Frequency steps"))]
if n:
possible_scan_types.append(("provider", _("Provider")))
+ nim.cable.scan_provider = ConfigSelection(default = "0", choices = list)
nim.cable.scan_type = ConfigSelection(default = "bands", choices = possible_scan_types)
- nim.cable.scan_provider = ConfigSelection(default = "0", choices = list)
nim.cable.scan_band_EU_VHF_I = ConfigYesNo(default = True)
nim.cable.scan_band_EU_MID = ConfigYesNo(default = True)
nim.cable.scan_band_EU_VHF_III = ConfigYesNo(default = True)
nim.cable.scan_mod_qam256 = ConfigYesNo(default = True)
nim.cable.scan_sr_6900 = ConfigYesNo(default = True)
nim.cable.scan_sr_6875 = ConfigYesNo(default = True)
- nim.cable.scan_sr_ext1 = ConfigInteger(default = 0, limits = (0, 15000))
- nim.cable.scan_sr_ext2 = ConfigInteger(default = 0, limits = (0, 15000))
+ nim.cable.scan_sr_ext1 = ConfigInteger(default = 0, limits = (0, 7230))
+ nim.cable.scan_sr_ext2 = ConfigInteger(default = 0, limits = (0, 7230))
elif slot.isCompatible("DVB-T"):
nim.configMode = ConfigSelection(
choices = {