[unicable] Support JESS(EN50607) and update unicable.xml, thanks to adenin.
[vuplus_dvbapp] / lib / python / Components / NimManager.py
index c68e521..ce063b4 100755 (executable)
@@ -265,7 +265,7 @@ class SecConfigure:
                        pass
 
                lnbSat = {}
-               for x in range(1,37):
+               for x in range(1,69):
                        lnbSat[x] = []
 
                #wildcard for all satellites ( for rotor )
@@ -282,12 +282,12 @@ class SecConfigure:
                                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
@@ -310,24 +310,46 @@ class SecConfigure:
                                                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":
@@ -452,8 +474,8 @@ class SecConfigure:
                                # 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]
@@ -474,7 +496,7 @@ class SecConfigure:
                                        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
@@ -1122,11 +1144,15 @@ def InitNimManager(nimmgr):
        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)):
@@ -1134,21 +1160,36 @@ def InitNimManager(nimmgr):
                                        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)):
@@ -1156,14 +1197,29 @@ def InitNimManager(nimmgr):
                                        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()
@@ -1176,8 +1232,14 @@ def InitNimManager(nimmgr):
                "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)]
@@ -1203,7 +1265,7 @@ def InitNimManager(nimmgr):
        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"))]
@@ -1228,81 +1290,127 @@ def InitNimManager(nimmgr):
                        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):
@@ -1333,7 +1441,7 @@ def InitNimManager(nimmgr):
                        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)
@@ -1384,7 +1492,7 @@ def InitNimManager(nimmgr):
                                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)