pass
lnbSat = {}
- for x in range(1,37):
+ for x in range(1,69):
lnbSat[x] = []
#wildcard for all satellites ( for rotor )
print "add", x[0], "to", lnb
lnbSat[lnb].append(x[0])
- for x in range(1,37):
+ for x in range(1,69):
if len(lnbSat[x]) > 0:
currLnb = config.Nims[slotid].advanced.lnb[x]
sec.addLNB()
- if x < 33:
+ if x < 65:
sec.setLNBNum(x)
tunermask = 1 << slotid
manufacturer_name = configManufacturer.value
manufacturer = ProductDict[manufacturer_name]
product_name = manufacturer.product.value
- sec.setLNBSatCR(manufacturer.scr[product_name].index)
- sec.setLNBSatCRvco(manufacturer.vco[product_name][manufacturer.scr[product_name].index].value*1000)
- sec.setLNBSatCRpositions(manufacturer.positions[product_name][0].value)
- sec.setLNBLOFL(manufacturer.lofl[product_name][0].value * 1000)
- sec.setLNBLOFH(manufacturer.lofh[product_name][0].value * 1000)
- sec.setLNBThreshold(manufacturer.loft[product_name][0].value * 1000)
- configManufacturer.save_forced = True
- manufacturer.product.save_forced = True
- manufacturer.vco[product_name][manufacturer.scr[product_name].index].save_forced = True
-
+ manufacturer_scr = manufacturer.scr
+ manufacturer_positions_value = manufacturer.positions[product_name][0].value
+ position_idx = (x-1) % manufacturer_positions_value
+ if product_name in manufacturer_scr:
+ diction = manufacturer.diction[product_name].value
+ if x <= manufacturer_positions_value or diction !="EN50607": #for every allowed position
+ sec.setLNBSatCR(manufacturer_scr[product_name].index)
+
+ if diction =="EN50607":
+ sec.setLNBSatCRformat(1) #JESS
+ else:
+ sec.setLNBSatCRformat(0) #DiSEqC
+ sec.setLNBSatCRvco(manufacturer.vco[product_name][manufacturer_scr[product_name].index].value*1000)
+ sec.setLNBSatCRpositions(manufacturer_positions_value)
+ sec.setLNBLOFL(manufacturer.lofl[product_name][position_idx].value * 1000)
+ sec.setLNBLOFH(manufacturer.lofh[product_name][position_idx].value * 1000)
+ sec.setLNBThreshold(manufacturer.loft[product_name][position_idx].value * 1000)
+ configManufacturer.save_forced = True
+ manufacturer.product.save_forced = True
+ manufacturer.vco[product_name][manufacturer_scr[product_name].index].save_forced = True
+ else: #positionnumber out of range
+ print "positionnumber out of range"
+ else:
+ print "no product in list"
+
if currLnb.unicable.value == "unicable_user":
#TODO satpositions for satcruser
+ if currLnb.dictionuser.value == "EN50607":
+ sec.setLNBSatCRformat(1)
+ sec.setLNBSatCR(currLnb.satcruserEN50607.index)
+ sec.setLNBSatCRvco(currLnb.satcrvcouserEN50607[currLnb.satcruserEN50607.index].value*1000)
+ else:
+ sec.setLNBSatCRformat(0)
+ sec.setLNBSatCR(currLnb.satcruserEN50494.index)
+ sec.setLNBSatCRvco(currLnb.satcrvcouserEN50494[currLnb.satcruserEN50494.index].value*1000)
+
sec.setLNBLOFL(currLnb.lofl.value * 1000)
sec.setLNBLOFH(currLnb.lofh.value * 1000)
sec.setLNBThreshold(currLnb.threshold.value * 1000)
- sec.setLNBSatCR(currLnb.satcruser.index)
- sec.setLNBSatCRvco(currLnb.satcrvcouser[currLnb.satcruser.index].value*1000)
- sec.setLNBSatCRpositions(1) #HACK
+ sec.setLNBSatCRpositions(64) #HACK
elif currLnb.unicable.value == "unicable_matrix":
setupUnicable(currLnb.unicableMatrixManufacturer, currLnb.unicableMatrix)
elif currLnb.unicable.value == "unicable_lnb":
# finally add the orbital positions
for y in lnbSat[x]:
self.addSatellite(sec, y)
- if x > 32:
- satpos = x > 32 and (3604-(36 - x)) or y
+ if x > 64:
+ satpos = x > 64 and (3604-(68 - x)) or y
else:
satpos = y
currSat = config.Nims[slotid].advanced.sat[satpos]
elif currSat.tonemode.value == "off":
sec.setToneMode(switchParam.OFF)
- if not currSat.usals.value and x < 34:
+ if not currSat.usals.value and x < 66:
sec.setRotorPosNum(currSat.rotorposition.value)
else:
sec.setRotorPosNum(0) #USALS
root = doc.getroot()
entry = root.find("lnb")
+ lscr=("scr1","scr2","scr3","scr4","scr5","scr6","scr7","scr8","scr9","scr10",
+ "scr11","scr12","scr13","scr14","scr15","scr16","scr17","scr18","scr19","scr20",
+ "scr21","scr22","scr23","scr24","scr25","scr26","scr27","scr28","scr29","scr30",
+ "scr31","scr32")
for manufacturer in entry.getchildren():
m={}
for product in manufacturer.getchildren():
+ p={} #new dict empty for new product
scr=[]
- lscr=("scr1","scr2","scr3","scr4","scr5","scr6","scr7","scr8")
for i in range(len(lscr)):
scr.append(product.get(lscr[i],"0"))
for i in range(len(lscr)):
scr.pop()
else:
break;
- lof=[]
- lof.append(int(product.get("positions",1)))
- lof.append(int(product.get("lofl",9750)))
- lof.append(int(product.get("lofh",10600)))
- lof.append(int(product.get("threshold",11700)))
- scr.append(tuple(lof))
- m.update({product.get("name"):tuple(scr)})
+
+ p.update({"frequencies":tuple(scr)}) #add scr frequencies to dict product
+
+ diction = product.get("format","EN50494").upper()
+ if diction =="JESS" or diction =="UNICABLE2" or diction =="SCD2" or diction =="EN50607":
+ diction = "EN50607"
+ else:
+ diction = "EN50494"
+ p.update({"diction":tuple([diction])}) #add diction to dict product
+
+ positions=[]
+ positions.append(int(product.get("positions",1)))
+ for cnt in range(positions[0]):
+ lof=[]
+ lof.append(int(product.get("lofl",9750)))
+ lof.append(int(product.get("lofh",10600)))
+ lof.append(int(product.get("threshold",11700)))
+ positions.append(tuple(lof))
+
+ p.update({"positions":tuple(positions)}) #add positons to dict product.
+
+ m.update({product.get("name"):p}) #add dict product to dict manufacturer
unicablelnbproducts.update({manufacturer.get("name"):m})
entry = root.find("matrix")
for manufacturer in entry.getchildren():
m={}
for product in manufacturer.getchildren():
+ p={} #new dict empty for new product
scr=[]
- lscr=("scr1","scr2","scr3","scr4","scr5","scr6","scr7","scr8")
for i in range(len(lscr)):
scr.append(product.get(lscr[i],"0"))
for i in range(len(lscr)):
scr.pop()
else:
break;
- lof=[]
- lof.append(int(product.get("positions",1)))
- lof.append(int(product.get("lofl",9750)))
- lof.append(int(product.get("lofh",10600)))
- lof.append(int(product.get("threshold",11700)))
- scr.append(tuple(lof))
- m.update({product.get("name"):tuple(scr)})
- unicablematrixproducts.update({manufacturer.get("name"):m})
+
+ p.update({"frequencies":tuple(scr)}) #add scr frequencies to dict product
+
+ diction = product.get("format","EN50494").upper()
+ if diction =="JESS" or diction =="UNICABLE2" or diction =="SCD2" or diction =="EN50607":
+ diction = "EN50607"
+ else:
+ diction = "EN50494"
+ p.update({"diction":tuple([diction])}) #add diction to dict product
+
+ positions=[]
+ positions.append(int(product.get("positions",1)))
+ for cnt in range(positions[0]):
+ lof=[]
+ lof.append(int(product.get("lofl",9750)))
+ lof.append(int(product.get("lofh",10600)))
+ lof.append(int(product.get("threshold",11700)))
+ positions.append(tuple(lof))
+
+ p.update({"positions":tuple(positions)}) #add positons to dict product
+
+ m.update({product.get("name"):p}) #add dict product to dict manufacturer
+ unicablematrixproducts.update({manufacturer.get("name"):m}) #add dict manufacturer to dict unicablematrixproducts
UnicableLnbManufacturers = unicablelnbproducts.keys()
UnicableLnbManufacturers.sort()
"unicable_user": "Unicable "+_("User defined")}
unicable_choices_default = "unicable_lnb"
- advanced_lnb_satcruser_choices = [ ("1", "SatCR 1"), ("2", "SatCR 2"), ("3", "SatCR 3"), ("4", "SatCR 4"),
- ("5", "SatCR 5"), ("6", "SatCR 6"), ("7", "SatCR 7"), ("8", "SatCR 8")]
+ advanced_lnb_satcr_user_choicesEN50494 = [("1", "SatCR 1"), ("2", "SatCR 2"), ("3", "SatCR 3"), ("4", "SatCR 4"), ("5", "SatCR 5"), ("6", "SatCR 6"), ("7", "SatCR 7"), ("8", "SatCR 8")]
+
+ advanced_lnb_satcr_user_choicesEN50607 = [("1", "SatCR 1"), ("2", "SatCR 2"), ("3", "SatCR 3"), ("4", "SatCR 4"), ("5", "SatCR 5"), ("6", "SatCR 6"), ("7", "SatCR 7"), ("8", "SatCR 8"),
+ ("9", "SatCR 9"), ("10", "SatCR 10"), ("11", "SatCR 11"), ("12", "SatCR 12"), ("13", "SatCR 13"), ("14", "SatCR 14"), ("15", "SatCR 15"), ("16", "SatCR 16"),
+ ("17", "SatCR 17"), ("18", "SatCR 18"), ("19", "SatCR 19"), ("20", "SatCR 20"), ("21", "SatCR 21"), ("22", "SatCR 22"), ("23", "SatCR 23"), ("24", "SatCR 24"),
+ ("25", "SatCR 25"), ("26", "SatCR 26"), ("27", "SatCR 27"), ("28", "SatCR 28"), ("29", "SatCR 29"), ("30", "SatCR 30"), ("31", "SatCR 31"), ("32", "SatCR 32")]
+
+ advanced_lnb_diction_user_choices = [("EN50494", "Unicable(EN50494)"), ("EN50607", "JESS(EN50607)")]
prio_list = [ ("-1", _("Auto")) ]
prio_list += [(str(prio), str(prio)) for prio in range(65)+range(14000,14065)+range(19000,19065)]
advanced_satlist_choices = nimmgr.satList + [
(3601, _('All Satellites')+' 1', 1), (3602, _('All Satellites')+' 2', 1),
(3603, _('All Satellites')+' 3', 1), (3604, _('All Satellites')+' 4', 1)]
- advanced_lnb_choices = [("0", "not available")] + [(str(y), "LNB " + str(y)) for y in range(1, 33)]
+ advanced_lnb_choices = [("0", "not available")] + [(str(y), "LNB " + str(y)) for y in range(1, 65)]
advanced_voltage_choices = [("polarization", _("Polarization")), ("13V", _("13 V")), ("18V", _("18 V"))]
advanced_tonemode_choices = [("band", _("Band")), ("on", _("On")), ("off", _("Off"))]
advanced_lnb_toneburst_choices = [("none", _("None")), ("A", _("A")), ("B", _("B"))]
if isinstance(section.unicable, ConfigNothing):
if lnb == 1:
section.unicable = ConfigSelection(unicable_choices, unicable_choices_default)
- elif lnb == 2:
- section.unicable = ConfigSelection(choices = {"unicable_matrix": _("Unicable Martix"),"unicable_user": "Unicable "+_("User defined")}, default = "unicable_matrix")
+# elif lnb == 2:
else:
- section.unicable = ConfigSelection(choices = {"unicable_user": _("User defined")}, default = "unicable_user")
-
- def fillUnicableConf(sectionDict, unicableproducts, vco_null_check):
- for y in unicableproducts:
- products = unicableproducts[y].keys()
- products.sort()
- tmp = ConfigSubsection()
- tmp.product = ConfigSelection(choices = products, default = products[0])
- tmp.scr = ConfigSubDict()
- tmp.vco = ConfigSubDict()
- tmp.lofl = ConfigSubDict()
- tmp.lofh = ConfigSubDict()
- tmp.loft = ConfigSubDict()
- tmp.positions = ConfigSubDict()
- for z in products:
+ section.unicable = ConfigSelection(choices = {"unicable_matrix": _("Unicable Martix"),"unicable_user": "Unicable "+_("User defined")}, default = "unicable_matrix")
+# section.unicable = ConfigSelection(choices = {"unicable_user": _("User defined")}, default = "unicable_user")
+ def fillUnicableConf(sectionDict, unicableproducts, vco_null_check):
+ for manufacturer in unicableproducts:
+ products = unicableproducts[manufacturer].keys()
+ products.sort()
+ products_valide = []
+ products_valide_append = products_valide.append
+ tmp = ConfigSubsection()
+ tmp.scr = ConfigSubDict()
+ tmp.vco = ConfigSubDict()
+ tmp.lofl = ConfigSubDict()
+ tmp.lofh = ConfigSubDict()
+ tmp.loft = ConfigSubDict()
+ tmp.positions = ConfigSubDict()
+ tmp.diction = ConfigSubDict()
+ for article in products:
+ positionslist = unicableproducts[manufacturer][article].get("positions")
+ positions = int(positionslist[0])
+ dictionlist = [unicableproducts[manufacturer][article].get("diction")]
+ if lnb <= positions or dictionlist[0][0] !="EN50607":
+ tmp.positions[article] = ConfigSubList()
+ tmp.positions[article].append(ConfigInteger(default=positions, limits = (positions, positions)))
+ tmp.diction[article] = ConfigSelection(choices = dictionlist, default = dictionlist[0][0])
+
scrlist = []
- vcolist = unicableproducts[y][z]
- tmp.vco[z] = ConfigSubList()
- for cnt in range(1,1+len(vcolist)-1):
+ scrlist_append = scrlist.append
+ vcolist=unicableproducts[manufacturer][article].get("frequencies")
+ tmp.vco[article] = ConfigSubList()
+ for cnt in range(1,len(vcolist)+1):
vcofreq = int(vcolist[cnt-1])
if vcofreq == 0 and vco_null_check:
- scrlist.append(("%d" %cnt,"SCR %d " %cnt +_("not used")))
+ scrlist_append(("%d" %cnt,"SCR %d " %cnt +_("not used")))
else:
- scrlist.append(("%d" %cnt,"SCR %d" %cnt))
- tmp.vco[z].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
- tmp.scr[z] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
-
- positions = int(vcolist[len(vcolist)-1][0])
- tmp.positions[z] = ConfigSubList()
- tmp.positions[z].append(ConfigInteger(default=positions, limits = (positions, positions)))
-
- lofl = vcolist[len(vcolist)-1][1]
- tmp.lofl[z] = ConfigSubList()
- tmp.lofl[z].append(ConfigInteger(default=lofl, limits = (lofl, lofl)))
-
- lofh = int(vcolist[len(vcolist)-1][2])
- tmp.lofh[z] = ConfigSubList()
- tmp.lofh[z].append(ConfigInteger(default=lofh, limits = (lofh, lofh)))
-
- loft = int(vcolist[len(vcolist)-1][3])
- tmp.loft[z] = ConfigSubList()
- tmp.loft[z].append(ConfigInteger(default=loft, limits = (loft, loft)))
- sectionDict[y] = tmp
-
- if lnb < 3:
- print "MATRIX"
- section.unicableMatrix = ConfigSubDict()
- section.unicableMatrixManufacturer = ConfigSelection(UnicableMatrixManufacturers, UnicableMatrixManufacturers[0])
- fillUnicableConf(section.unicableMatrix, unicablematrixproducts, True)
-
- if lnb < 2:
- print "LNB"
- section.unicableLnb = ConfigSubDict()
- section.unicableLnbManufacturer = ConfigSelection(UnicableLnbManufacturers, UnicableLnbManufacturers[0])
- fillUnicableConf(section.unicableLnb, unicablelnbproducts, False)
+ scrlist_append(("%d" %cnt,"SCR %d" %cnt))
+ tmp.vco[article].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
+
+ tmp.scr[article] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
+
+ tmp.lofl[article] = ConfigSubList()
+ tmp.lofh[article] = ConfigSubList()
+ tmp.loft[article] = ConfigSubList()
+
+ tmp_lofl_article_append = tmp.lofl[article].append
+ tmp_lofh_article_append = tmp.lofh[article].append
+ tmp_loft_article_append = tmp.loft[article].append
+
+ for cnt in range(1,positions+1):
+ lofl = int(positionslist[cnt][0])
+ lofh = int(positionslist[cnt][1])
+ loft = int(positionslist[cnt][2])
+ tmp_lofl_article_append(ConfigInteger(default=lofl, limits = (lofl, lofl)))
+ tmp_lofh_article_append(ConfigInteger(default=lofh, limits = (lofh, lofh)))
+ tmp_loft_article_append(ConfigInteger(default=loft, limits = (loft, loft)))
+ products_valide_append(article)
+
+ if len(products_valide)==0:
+ products_valide_append("None")
+ tmp.product = ConfigSelection(choices = products_valide, default = products_valide[0])
+ sectionDict[manufacturer] = tmp
+
+ if lnb < 65:
+ print "MATRIX"
+ section.unicableMatrix = ConfigSubDict()
+ section.unicableMatrixManufacturer = ConfigSelection(UnicableMatrixManufacturers, UnicableMatrixManufacturers[0])
+ fillUnicableConf(section.unicableMatrix, unicablematrixproducts, True)
+
+ if lnb < 2: #Konfiguration nur fuer LNB1 zulassen
+ print "LNB"
+ section.unicableLnb = ConfigSubDict()
+ section.unicableLnbManufacturer = ConfigSelection(UnicableLnbManufacturers, UnicableLnbManufacturers[0])
+ fillUnicableConf(section.unicableLnb, unicablelnbproducts, False)
#TODO satpositions for satcruser
- section.satcruser = ConfigSelection(advanced_lnb_satcruser_choices, default="1")
- tmp = ConfigSubList()
- tmp.append(ConfigInteger(default=1284, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1400, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1516, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1632, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1748, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1864, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=1980, limits = (950, 2150)))
- tmp.append(ConfigInteger(default=2096, limits = (950, 2150)))
- section.satcrvcouser = tmp
-
- nim.advanced.unicableconnected = ConfigYesNo(default=False)
- nim.advanced.unicableconnectedTo = ConfigSelection([(str(id), nimmgr.getNimDescription(id)) for id in nimmgr.getNimListOfType("DVB-S") if id != x])
-
+
+ section.dictionuser = ConfigSelection(advanced_lnb_diction_user_choices, default="EN50494")
+ section.satcruserEN50494 = ConfigSelection(advanced_lnb_satcr_user_choicesEN50494, default="1")
+ section.satcruserEN50607 = ConfigSelection(advanced_lnb_satcr_user_choicesEN50607, default="1")
+
+ tmp = ConfigSubList()
+ tmp.append(ConfigInteger(default=1284, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1400, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1516, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1632, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1748, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1864, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1980, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=2096, limits = (950, 2150)))
+ section.satcrvcouserEN50494 = tmp
+
+ tmp.append(ConfigInteger(default=1284, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1400, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1516, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1632, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1748, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1864, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1980, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=2096, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1284, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1400, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1516, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1632, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1748, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1864, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1980, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=2096, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1284, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1400, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1516, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1632, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1748, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1864, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=1980, limits = (950, 2150)))
+ tmp.append(ConfigInteger(default=2096, limits = (950, 2150)))
+ section.satcrvcouserEN50607 = tmp
+
+ nim.advanced.unicableconnected = ConfigYesNo(default=False)
+ nim.advanced.unicableconnectedTo = ConfigSelection([(str(id), nimmgr.getNimDescription(id)) for id in nimmgr.getNimListOfType("DVB-S") if id != x])
+
def configDiSEqCModeChanged(configElement):
section = configElement.section
if configElement.value == "1_2" and isinstance(section.longitude, ConfigNothing):
section.increased_voltage = ConfigYesNo(False)
section.toneburst = ConfigSelection(advanced_lnb_toneburst_choices, "none")
section.longitude = ConfigNothing()
- if lnb > 32:
+ if lnb > 64:
tmp = ConfigSelection(advanced_lnb_allsat_diseqcmode_choices, "1_2")
tmp.section = section
configDiSEqCModeChanged(tmp)
tmp.tonemode = ConfigSelection(advanced_tonemode_choices, "band")
tmp.usals = ConfigYesNo(default=True)
tmp.rotorposition = ConfigInteger(default=1, limits=(1, 255))
- lnbnum = 33+x-3601
+ lnbnum = 65+x-3601
lnb = ConfigSelection([("0", "not available"), (str(lnbnum), "LNB %d"%(lnbnum))], "0")
lnb.slot_id = slot_id
lnb.addNotifier(configLNBChanged, initial_call = False)