[dvbapp] fix MIS/PLS & support blindscan for zero4k.
authorhschang <chang@dev3>
Fri, 22 Dec 2017 10:35:03 +0000 (19:35 +0900)
committerhschang <chang@dev3>
Fri, 22 Dec 2017 10:35:03 +0000 (19:35 +0900)
meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend
meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_mis_pls.patch
meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_zero4k_blindscan.patch [new file with mode: 0644]
meta-bsp/recipes-vuplus/vuplus-blindscan-utils/vuplus-blindscan-utils.bb

index 3313e35..a11c933 100644 (file)
@@ -1,6 +1,6 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
-PR .= "-bsp24"
+PR .= "-bsp25"
 
 SRC_URI_append_vusolo = " \
        file://enigma2_vuplus_misc.patch \
@@ -60,6 +60,7 @@ SRC_URI_append_vuzero4k = " \
        file://enigma2_vuplus_zero4k_hdd_recording.patch \
        file://enigma2_vuplus_dvbs2x.patch \
        file://enigma2_vuplus_mis_pls.patch \
+       file://enigma2_vuplus_zero4k_blindscan.patch \
 "
 
 do_install_append_vuultimo() {
index f577e00..ab068ed 100644 (file)
@@ -1,5 +1,5 @@
 diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
-index ca435464..6eb8c8d4 100755
+index ca435464..b2d21f42 100755
 --- a/lib/dvb/db.cpp
 +++ b/lib/dvb/db.cpp
 @@ -378,11 +378,17 @@ void eDVBDB::loadServicelist(const char *file)
@@ -9,8 +9,8 @@ index ca435464..6eb8c8d4 100755
 -                                      pilot=eDVBFrontendParametersSatellite::Pilot_Unknown;
 +                                      pilot=eDVBFrontendParametersSatellite::Pilot_Unknown,
 +                                      is_id = NO_STREAM_ID_FILTER,
-+                                      pls_code = 1,
-+                                      pls_mode = eDVBFrontendParametersSatellite::PLS_Root;
++                                      pls_code = 0,
++                                      pls_mode = eDVBFrontendParametersSatellite::PLS_Unknown;
                                if (version == 3)
                                        sscanf(line+3, "%d:%d:%d:%d:%d:%d:%d:%d:%d:%d", &frequency, &symbol_rate, &polarisation, &fec, &orbital_position, &inversion, &system, &modulation, &rolloff, &pilot);
                                else
@@ -64,8 +64,8 @@ index ca435464..6eb8c8d4 100755
 +                              fprintf(f, ":%d:%d:%d:%d", sat.system, sat.modulation, sat.rolloff, sat.pilot);
 +
 +                              if (static_cast<unsigned int>(sat.is_id) != NO_STREAM_ID_FILTER ||
-+                                      (sat.pls_code & 0x3FFFF) != 1 ||
-+                                      (sat.pls_mode & 3) != eDVBFrontendParametersSatellite::PLS_Root)
++                                      (sat.pls_code & 0x3FFFF) != 0 ||
++                                      (sat.pls_mode & 3) != eDVBFrontendParametersSatellite::PLS_Unknown)
 +                              {
 +                                      fprintf(f, ":%d:%d:%d", sat.is_id, sat.pls_code & 0x3FFFF, sat.pls_mode & 3);
 +                              }
@@ -88,8 +88,8 @@ index ca435464..6eb8c8d4 100755
                                pilot = eDVBFrontendParametersSatellite::Pilot_Unknown;
                                rolloff = eDVBFrontendParametersSatellite::RollOff_alpha_0_35;
 +                              is_id = NO_STREAM_ID_FILTER;
-+                              pls_code = 1;
-+                              pls_mode = eDVBFrontendParametersSatellite::PLS_Root;
++                              pls_code = 0;
++                              pls_mode = eDVBFrontendParametersSatellite::PLS_Unknown;
                                tsid = -1;
                                onid = -1;
  
@@ -162,7 +162,7 @@ index 3e9fc7fd..f470fe13 100644
  };
  SWIG_TEMPLATE_TYPEDEF(ePtr<eDVBResourceManager>, eDVBResourceManager);
 diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
-index a2eb0e82..1fb40315 100755
+index a2eb0e82..bde90f8c 100755
 --- a/lib/dvb/frontend.cpp
 +++ b/lib/dvb/frontend.cpp
 @@ -129,12 +129,15 @@ void eDVBFrontendParametersSatellite::set(const SatelliteDeliverySystemDescripto
@@ -177,8 +177,8 @@ index a2eb0e82..1fb40315 100755
        }
        rolloff = descriptor.getRollOff();
 +      is_id = NO_STREAM_ID_FILTER;
-+      pls_mode = eDVBFrontendParametersSatellite::PLS_Root;
-+      pls_code = 1;
++      pls_mode = eDVBFrontendParametersSatellite::PLS_Unknown;
++      pls_code = 0;
        if (system == eDVBFrontendParametersSatellite::System_DVB_S)
        {
                eDebug("SAT DVB-S freq %d, %s, pos %d, sr %d, fec %d",
@@ -454,8 +454,8 @@ index a2eb0e82..1fb40315 100755
                {
                        return 0;
                }
-+              bool multistream = (static_cast<unsigned int>(sat_parm.is_id) != NO_STREAM_ID_FILTER || (sat_parm.pls_code & 0x3FFFF) != 1 ||
-+                                      (sat_parm.pls_mode & 3) != eDVBFrontendParametersSatellite::PLS_Root);
++              bool multistream = (static_cast<unsigned int>(sat_parm.is_id) != NO_STREAM_ID_FILTER || (sat_parm.pls_code & 0x3FFFF) != 0 ||
++                                      (sat_parm.pls_mode & 3) != eDVBFrontendParametersSatellite::PLS_Unknown);
 +              if (((sat_parm.system == eDVBFrontendParametersSatellite::System_DVB_S2)||(sat_parm.system == eDVBFrontendParametersSatellite::System_DVB_S2X)) && multistream && !is_multistream())
 +              {
 +                      return 0;
@@ -559,7 +559,9 @@ index 74123861..3a405f23 100644
                                                network = _("Cable")
                                                tp = transponder.getDVBC()
 diff --git a/lib/python/Components/TuneTest.py b/lib/python/Components/TuneTest.py
-index 44b19091..61c80636 100644
+old mode 100644
+new mode 100755
+index 44b19091..9fb5143a
 --- a/lib/python/Components/TuneTest.py
 +++ b/lib/python/Components/TuneTest.py
 @@ -5,8 +5,7 @@ class Tuner:
@@ -582,8 +584,8 @@ index 44b19091..61c80636 100644
 +                              parm.pls_code = transponder[12]
 +                      else:
 +                              parm.is_id = -1
-+                              parm.pls_mode = 0
-+                              parm.pls_code = 1
++                              parm.pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                              parm.pls_code = 0
                        feparm = eDVBFrontendParameters()
                        feparm.setDVBS(parm, self.ignore_rotor)
                        self.lastparm = feparm
@@ -627,7 +629,9 @@ index 44b19091..61c80636 100644
                self.transponderlist.append(transponder)
                
 diff --git a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
-index 5215a4b8..582f2f5c 100644
+old mode 100644
+new mode 100755
+index 5215a4b8..aa80aa2a
 --- a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
 +++ b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
 @@ -546,6 +546,9 @@ class Blindscan(ConfigListScreen, Screen):
@@ -635,8 +639,8 @@ index 5215a4b8..582f2f5c 100644
                                                parm.modulation = qam[data[8]]
                                                parm.rolloff = roll[data[9]]
 +                                              parm.is_id = -1
-+                                              parm.pls_mode = 0
-+                                              parm.pls_code = 1
++                                              parm.pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                                              parm.pls_code = 0
                                                self.tmp_tplist.append(parm)
                                        except: pass
                self.blindscan_session.close(True)
@@ -656,7 +660,7 @@ index 4dcf6c6b..acb2a2da 100644
 diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
 old mode 100644
 new mode 100755
-index b94a8819..32dc8649
+index b94a8819..a9003503
 --- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
 +++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
 @@ -10,11 +10,13 @@ from Plugins.Plugin import PluginDescriptor
@@ -680,9 +684,9 @@ index b94a8819..32dc8649
                        cur.get("rolloff", eDVBFrontendParametersSatellite.RollOff_alpha_0_35),
 -                      cur.get("pilot", eDVBFrontendParametersSatellite.Pilot_Unknown))
 +                      cur.get("pilot", eDVBFrontendParametersSatellite.Pilot_Unknown),
-+                      cur.get("is_id", 0),
-+                      cur.get("pls_mode", eDVBFrontendParametersSatellite.PLS_Root),
-+                      cur.get("pls_code", 1))
++                      cur.get("is_id", -1),
++                      cur.get("pls_mode", eDVBFrontendParametersSatellite.PLS_Unknown),
++                      cur.get("pls_code", 0))
  
                self.tuner.tune(tp)
                self.createConfig()
@@ -697,7 +701,7 @@ index b94a8819..32dc8649
        skin = """
                <screen position="90,100" size="520,400" title="Tune">
                        <widget name="config" position="20,10" size="460,350" scrollbarMode="showOnDemand" />
-@@ -418,29 +421,38 @@ class TunerScreen(ScanSetup):
+@@ -418,29 +421,40 @@ class TunerScreen(ScanSetup):
        def __init__(self, session, feid, fe_data):
                self.feid = feid
                self.fe_data = fe_data
@@ -712,6 +716,7 @@ index b94a8819..32dc8649
 +              self.scan_sat.system.addNotifier(self.systemChanged)
 +              self.scan_sat.system_dvbs2x.addNotifier(self.systemChanged)
 +              self.scan_sat.is_id_bool.addNotifier(self.isIdChanged, initial_call = False)
++              self.scan_sat.pls_mode.addNotifier(self.plsModeChanged, initial_call = False)
 +
 +              self["actions"] = NumberActionMap(["SetupActions"],
 +              {
@@ -733,6 +738,7 @@ index b94a8819..32dc8649
 +              self.list.append(getConfigListEntry(_('Satellite'), self.tuning.sat)    )
 +
 +              self.is_id_boolEntry = None
++              self.plsModeEntry = None
                nim = nimmanager.nim_slots[self.feid]
 -              self.systemEntry = None
 -              
@@ -751,7 +757,7 @@ index b94a8819..32dc8649
                        else:
                                # downgrade to dvb-s, in case a -s2 config was active
                                self.scan_sat.system.value = eDVBFrontendParametersSatellite.System_DVB_S
-@@ -471,44 +483,233 @@ class TunerScreen(ScanSetup):
+@@ -471,44 +485,218 @@ class TunerScreen(ScanSetup):
                                self.list.append(self.modulationEntry)
                                self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff))
                                self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
@@ -763,12 +769,10 @@ index b94a8819..32dc8649
 +                                      self.list.append(self.is_id_boolEntry)
 +                                      if self.scan_sat.is_id_bool.value:
 +                                              self.list.append(getConfigListEntry(_('Input Stream ID'), self.scan_sat.is_id))
-+                                              self.list.append(getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode))
-+                                              self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
-+                                      else:
-+                                              self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                                              self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                                              self.scan_sat.pls_code.value = 1
++                                              self.plsModeEntry = getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode)
++                                              self.list.append(self.plsModeEntry)
++                                              if self.scan_sat.pls_mode.value != eDVBFrontendParametersSatellite.PLS_Unknown:
++                                                      self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
 +              elif self.tuning.type.value == "predefined_transponder":
 +                      self.list.append(getConfigListEntry(_("Transponder"), self.tuning.transponder))
                self["config"].list = self.list
@@ -814,7 +818,6 @@ index b94a8819..32dc8649
 +
 +              self.updateTransponders()
 +
-+              self.NO_STREAM_ID_FILTER = -1
 +              defaultSat = {
 +                      "orbpos": 192,
 +                      "system": eDVBFrontendParametersSatellite.System_DVB_S,
@@ -831,9 +834,9 @@ index b94a8819..32dc8649
 +                      "fec_s2x_32apsk": eDVBFrontendParametersSatellite.FEC_2_3_L,
 +                      "modulation": eDVBFrontendParametersSatellite.Modulation_QPSK,
 +                      "modulation_s2x": eDVBFrontendParametersSatellite.Modulation_QPSK,
-+                      "is_id": self.NO_STREAM_ID_FILTER,
-+                      "pls_mode": eDVBFrontendParametersSatellite.PLS_Root,
-+                      "pls_code": 1 }
++                      "is_id": -1,
++                      "pls_mode": eDVBFrontendParametersSatellite.PLS_Unknown,
++                      "pls_code": 0 }
 +
 +              if frontendData is not None:
 +                      ttype = frontendData.get("tuner_type", "UNKNOWN")
@@ -966,17 +969,14 @@ index b94a8819..32dc8649
 +                      (eDVBFrontendParametersSatellite.Pilot_Off, _("Off")),
 +                      (eDVBFrontendParametersSatellite.Pilot_On, _("On")),
 +                      (eDVBFrontendParametersSatellite.Pilot_Unknown, _("Auto"))])
-+              self.scan_sat.is_id = ConfigInteger(default = defaultSat["is_id"], limits = (self.NO_STREAM_ID_FILTER, 255))
-+              self.scan_sat.is_id_bool = ConfigSelection(default = defaultSat["is_id"] != self.NO_STREAM_ID_FILTER, choices = [(True, _("Multistream")),(False, _("Ordinary"))])
++              self.scan_sat.is_id = ConfigInteger(default = defaultSat["is_id"] if defaultSat["is_id"] != -1 else 0, limits = (0, 255))
++              self.scan_sat.is_id_bool = ConfigSelection(default = defaultSat["is_id"] != -1, choices = [(True, _("Multistream")),(False, _("Ordinary"))])
 +              self.scan_sat.pls_mode = ConfigSelection(default = defaultSat["pls_mode"], choices = [
-+                      (eDVBFrontendParametersSatellite.PLS_Root, _("Root")),
-+                      (eDVBFrontendParametersSatellite.PLS_Gold, _("Gold")),
-+                      (eDVBFrontendParametersSatellite.PLS_Combo, _("Combo"))])
-+              self.scan_sat.pls_code = ConfigInteger(default = defaultSat["pls_code"], limits = (0, 262142))
-+
-+              self.is_id_memory = self.scan_sat.is_id.value # used to prevent is_id value being lost when self.scan_sat.is_id_bool state changes
-+              self.pls_mode_memory = self.scan_sat.pls_mode.value
-+              self.pls_code_memory = self.scan_sat.pls_code.value
++                              (eDVBFrontendParametersSatellite.PLS_Root, _("Root")),
++                              (eDVBFrontendParametersSatellite.PLS_Gold, _("Gold")),
++                              (eDVBFrontendParametersSatellite.PLS_Combo, _("Combo")),
++                              (eDVBFrontendParametersSatellite.PLS_Unknown, _("Auto"))])
++              self.scan_sat.pls_code = ConfigInteger(default = defaultSat["pls_code"], limits = (0, 262143))
  
        def tuningSatChanged(self, *parm):
                self.updateTransponders()
@@ -989,18 +989,9 @@ index b94a8819..32dc8649
 +              self.createSetup()
 +
 +      def isIdChanged(self, *parm):
-+              if self.is_id_boolEntry:
-+                      if self.is_id_boolEntry[1].value:
-+                              self.scan_sat.is_id.value = 0 if self.is_id_memory < 0 else self.is_id_memory
-+                              self.scan_sat.pls_mode.value = self.pls_mode_memory
-+                              self.scan_sat.pls_code.value = self.pls_code_memory
-+                      else:
-+                              self.is_id_memory = self.scan_sat.is_id.value
-+                              self.pls_mode_memory = self.scan_sat.pls_mode.value
-+                              self.pls_code_memory = self.scan_sat.pls_code.value
-+                              self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                              self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                              self.scan_sat.pls_code.value = 1
++              self.createSetup()
++
++      def plsModeChanged(self, *parm):
 +              self.createSetup()
  
        def updateTransponders(self):
@@ -1011,7 +1002,7 @@ index b94a8819..32dc8649
                        tps = []
                        cnt=0
                        for x in transponderlist:
-@@ -534,13 +735,19 @@ class TunerScreen(ScanSetup):
+@@ -534,13 +722,19 @@ class TunerScreen(ScanSetup):
                                else:
                                        fec = fec_desc[x[4]]
                                tps.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec)
@@ -1027,7 +1018,7 @@ index b94a8819..32dc8649
        def keyGo(self):
 -              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 -              satpos = int(tuning.sat.value)
-+              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1)
++              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0)
 +              satpos = int(self.tuning.sat.value)
                nim = nimmanager.nim_slots[self.feid]
 -              if tuning.type.value == "manual_transponder":
@@ -1035,16 +1026,27 @@ index b94a8819..32dc8649
                        system = self.scan_sat.system.value
                        modulation = self.scan_sat.modulation.value
                        if nim.isCompatible("DVB-S2X"):
-@@ -563,7 +770,7 @@ class TunerScreen(ScanSetup):
+@@ -563,7 +757,18 @@ class TunerScreen(ScanSetup):
                                elif modulation == eDVBFrontendParametersSatellite.Modulation_32APSK:
                                        fec = self.scan_sat.fec_s2x_32apsk.value
                        else:
 -                              fec = self.scan_sat.fec_s2.value
 +                              fec = self.scan_sat.fec.value
++
++                      is_id = -1
++                      pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                      pls_code = 0
++                      if self.scan_sat.is_id_bool.value:
++                              is_id = self.scan_sat.is_id.value
++                              pls_mode = self.scan_sat.pls_mode.value
++                              if pls_mode == eDVBFrontendParametersSatellite.PLS_Unknown:
++                                      pls_code = 0
++                              else:
++                                      pls_code = self.scan_sat.pls_code.value
  
                        returnvalue = (
                                self.scan_sat.frequency.value,
-@@ -575,11 +782,14 @@ class TunerScreen(ScanSetup):
+@@ -575,11 +780,14 @@ class TunerScreen(ScanSetup):
                                system,
                                modulation,
                                self.scan_sat.rolloff.value,
@@ -1052,9 +1054,9 @@ index b94a8819..32dc8649
 -              elif tuning.type.value == "predefined_transponder":
 -                      transponder = nimmanager.getTransponders(satpos)[tuning.transponder.index]
 +                              self.scan_sat.pilot.value,
-+                              self.scan_sat.is_id.value,
-+                              self.scan_sat.pls_mode.value,
-+                              self.scan_sat.pls_code.value)
++                              is_id,
++                              pls_mode,
++                              pls_code)
 +              elif self.tuning.type.value == "predefined_transponder":
 +                      transponder = nimmanager.getTransponders(satpos)[self.tuning.transponder.index]
                        returnvalue = (transponder[1] / 1000, transponder[2] / 1000,
@@ -1064,16 +1066,19 @@ index b94a8819..32dc8649
  
        def keyCancel(self):
 diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
-index a87ca26f..402c8770 100644
+old mode 100644
+new mode 100755
+index a87ca26f..ad1c450b
 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
 +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
-@@ -59,17 +59,15 @@ class Satfinder(ScanSetup):
+@@ -59,17 +59,16 @@ class Satfinder(ScanSetup):
        def createSetup(self):
                self.typeOfTuningEntry = None
                self.satEntry = None
 -              
 +              self.systemEntry = None
 +              self.is_id_boolEntry = None
++              self.plsModeEntry = None
                self.list = []
 -
                self.typeOfTuningEntry = getConfigListEntry(_('Tune'), self.tuning_type)
@@ -1087,7 +1092,7 @@ index a87ca26f..402c8770 100644
                if self.tuning_type.value == "manual_transponder":
                        scan_sat_system_value = self.scan_sat.system.value
                        if nim.isCompatible("DVB-S2X"):
-@@ -109,6 +107,18 @@ class Satfinder(ScanSetup):
+@@ -109,6 +108,16 @@ class Satfinder(ScanSetup):
                                self.list.append(self.modulationEntry)
                                self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff))
                                self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
@@ -1097,56 +1102,63 @@ index a87ca26f..402c8770 100644
 +                                      self.list.append(self.is_id_boolEntry)
 +                                      if self.scan_sat.is_id_bool.value:
 +                                              self.list.append(getConfigListEntry(_('Input Stream ID'), self.scan_sat.is_id))
-+                                              self.list.append(getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode))
-+                                              self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
-+                              else:
-+                                      self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                                      self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                                      self.scan_sat.pls_code.value = 1
++                                              self.plsModeEntry = getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode)
++                                              self.list.append(self.plsModeEntry)
++                                              if self.scan_sat.pls_mode.value != eDVBFrontendParametersSatellite.PLS_Unknown:
++                                                      self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
                elif self.tuning_transponder and self.tuning_type.value == "predefined_transponder":
                        self.list.append(getConfigListEntry(_("Transponder"), self.tuning_transponder))
                self["config"].list = self.list
-@@ -124,13 +134,26 @@ class Satfinder(ScanSetup):
-               elif self.modulationEntry and (cur == self.modulationEntry) and \
-                       self.systemEntry and (self.systemEntry[1].value == eDVBFrontendParametersSatellite.System_DVB_S2X):
-                       self.createSetup()
-+              elif cur == self.is_id_boolEntry:
-+                      if self.is_id_boolEntry[1].value:
-+                              self.scan_sat.is_id.value = 0 if self.is_id_memory < 0 else self.is_id_memory
-+                              self.scan_sat.pls_mode.value = self.pls_mode_memory
-+                              self.scan_sat.pls_code.value = self.pls_code_memory
-+                      else:
-+                              self.is_id_memory = self.scan_sat.is_id.value
-+                              self.pls_mode_memory = self.scan_sat.pls_mode.value
-+                              self.pls_code_memory = self.scan_sat.pls_code.value
-+                              self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                              self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                              self.scan_sat.pls_code.value = 1
-+                      self.createSetup()
+@@ -116,7 +125,7 @@ class Satfinder(ScanSetup):
  
-       def sat_changed(self, config_element):
-               self.newConfig()
+       def newConfig(self):
+               cur = self["config"].getCurrent()
+-              if cur in (self.typeOfTuningEntry, self.systemEntry):
++              if cur in (self.typeOfTuningEntry, self.systemEntry, self.is_id_boolEntry, self.plsModeEntry):
+                       self.createSetup()
+               elif cur == self.satEntry:
+                       self.updateSats()
+@@ -130,7 +139,7 @@ class Satfinder(ScanSetup):
                self.retune(config_element)
  
        def retune(self, configElement):
 -              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
-+              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1)
++              returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 3, 0)
                satpos = int(self.tuning_sat.value)
                nim = nimmanager.nim_slots[self.feid]
                if self.tuning_type.value == "manual_transponder":
-@@ -165,7 +188,10 @@ class Satfinder(ScanSetup):
+@@ -155,6 +164,18 @@ class Satfinder(ScanSetup):
+                                       fec = self.scan_sat.fec_s2x_16apsk.value
+                               elif modulation == eDVBFrontendParametersSatellite.Modulation_32APSK:
+                                       fec = self.scan_sat.fec_s2x_32apsk.value
++
++                      is_id = -1
++                      pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                      pls_code = 0
++                      if self.scan_sat.is_id_bool.value:
++                              is_id = self.scan_sat.is_id.value
++                              pls_mode = self.scan_sat.pls_mode.value
++                              if pls_mode == eDVBFrontendParametersSatellite.PLS_Unknown:
++                                      pls_code = 0
++                              else:
++                                      pls_code = self.scan_sat.pls_code.value
++
+                       returnvalue = (
+                               self.scan_sat.frequency.value,
+                               self.scan_sat.symbolrate.value,
+@@ -165,7 +186,10 @@ class Satfinder(ScanSetup):
                                system,
                                modulation,
                                self.scan_sat.rolloff.value,
 -                              self.scan_sat.pilot.value)
 +                              self.scan_sat.pilot.value,
-+                              self.scan_sat.is_id.value,
-+                              self.scan_sat.pls_mode.value,
-+                              self.scan_sat.pls_code.value)
++                              is_id,
++                              pls_mode,
++                              pls_code)
                        self.tune(returnvalue)
                elif self.tuning_type.value == "predefined_transponder":
                        tps = nimmanager.getTransponders(satpos)
-@@ -173,7 +199,7 @@ class Satfinder(ScanSetup):
+@@ -173,7 +197,7 @@ class Satfinder(ScanSetup):
                        if l > self.tuning_transponder.index:
                                transponder = tps[self.tuning_transponder.index]
                                returnvalue = (transponder[1] / 1000, transponder[2] / 1000,
@@ -1155,18 +1167,20 @@ index a87ca26f..402c8770 100644
                                self.tune(returnvalue)
  
        def createConfig(self, foo):
-@@ -188,7 +214,8 @@ class Satfinder(ScanSetup):
+@@ -188,7 +212,8 @@ class Satfinder(ScanSetup):
                        self.scan_sat.inversion, self.scan_sat.symbolrate,
                        self.scan_sat.polarization, self.scan_sat.fec, self.scan_sat.pilot,
                        self.scan_sat.fec_s2, self.scan_sat.fec, self.scan_sat.modulation,
 -                      self.scan_sat.rolloff, self.scan_sat.system]
 +                      self.scan_sat.rolloff, self.scan_sat.system,
-+                      self.scan_sat.is_id, self.scan_sat.pls_mode, self.scan_sat.pls_code]
++                      self.scan_sat.is_id_bool, self.scan_sat.is_id, self.scan_sat.pls_mode, self.scan_sat.pls_code]
  
                nim = nimmanager.nim_slots[self.feid]
                if nim.isCompatible("DVB-S2X"):
 diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py
-index b7f57887..e1844458 100644
+old mode 100644
+new mode 100755
+index b7f57887..fa3126b0
 --- a/lib/python/Screens/ScanSetup.py
 +++ b/lib/python/Screens/ScanSetup.py
 @@ -49,6 +49,9 @@ def getInitialTransponderList(tlist, pos):
@@ -1179,15 +1193,16 @@ index b7f57887..e1844458 100644
                        tlist.append(parm)
  
  def getInitialCableTransponderList(tlist, nim):
-@@ -587,6 +590,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -587,6 +590,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                self.typeOfScanEntry = None
                self.systemEntry = None
                self.modulationEntry = None
 +              self.is_id_boolEntry = None
++              self.plsModeEntry = None
                nim = nimmanager.nim_slots[index_to_scan]
                if nim.isCompatible("DVB-S"):
                        self.typeOfScanEntry = getConfigListEntry(_("Type of scan"), self.scan_type)
-@@ -647,6 +651,18 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -647,6 +652,17 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                                        elif self.scan_sat.modulation_dvbs2x.value == eDVBFrontendParametersSatellite.Modulation_32APSK:
                                                self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2x_32apsk))
  
@@ -1197,51 +1212,38 @@ index b7f57887..e1844458 100644
 +                                              self.list.append(self.is_id_boolEntry)
 +                                              if self.scan_sat.is_id_bool.value:
 +                                                      self.list.append(getConfigListEntry(_('Input Stream ID'), self.scan_sat.is_id))
-+                                                      self.list.append(getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode))
-+                                                      self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
-+                                      else:
-+                                              self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                                              self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                                              self.scan_sat.pls_code.value = 1
++                                                      self.plsModeEntry = getConfigListEntry(_('PLS Mode'), self.scan_sat.pls_mode)
++                                                      self.list.append(self.plsModeEntry)
++                                                      if self.scan_sat.pls_mode.value != eDVBFrontendParametersSatellite.PLS_Unknown:
++                                                              self.list.append(getConfigListEntry(_('PLS Code'), self.scan_sat.pls_code))
++
                        elif self.scan_type.value == "single_satellite":
                                self.updateSatList()
                                print self.scan_satselection[index_to_scan]
-@@ -723,8 +739,22 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -721,7 +737,9 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+                       cur == self.systemEntry or \
+                       (self.modulationEntry and \
                        (self.systemEntry[1].value in (eDVBFrontendParametersSatellite.System_DVB_S2, eDVBFrontendParametersSatellite.System_DVB_S2X)) and \
-                       cur == self.modulationEntry):
+-                      cur == self.modulationEntry):
++                      cur == self.modulationEntry) or \
++                      cur == self.is_id_boolEntry or \
++                      cur == self.plsModeEntry:
                        self.createSetup()
-+              elif cur == self.is_id_boolEntry:
-+                      if self.is_id_boolEntry[1].value:
-+                              self.scan_sat.is_id.value = 0 if self.is_id_memory < 0 else self.is_id_memory
-+                              self.scan_sat.pls_mode.value = self.pls_mode_memory
-+                              self.scan_sat.pls_code.value = self.pls_code_memory
-+                      else:
-+                              self.is_id_memory = self.scan_sat.is_id.value
-+                              self.pls_mode_memory = self.scan_sat.pls_mode.value
-+                              self.pls_code_memory = self.scan_sat.pls_code.value
-+                              self.scan_sat.is_id.value = self.NO_STREAM_ID_FILTER
-+                              self.scan_sat.pls_mode.value = eDVBFrontendParametersSatellite.PLS_Root
-+                              self.scan_sat.pls_code.value = 1
-+                      self.createSetup()
  
        def createConfig(self, frontendData):
-+                      self.NO_STREAM_ID_FILTER = -1
-                       defaultSat = {
-                               "orbpos": 192,
-                               "system": eDVBFrontendParametersSatellite.System_DVB_S,
-@@ -740,7 +770,10 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -740,7 +758,10 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                                "fec_s2x_16apsk": eDVBFrontendParametersSatellite.FEC_1_2_L,
                                "fec_s2x_32apsk": eDVBFrontendParametersSatellite.FEC_2_3_L,
                                "modulation": eDVBFrontendParametersSatellite.Modulation_QPSK,
 -                              "modulation_s2x": eDVBFrontendParametersSatellite.Modulation_QPSK}
 +                              "modulation_s2x": eDVBFrontendParametersSatellite.Modulation_QPSK,
-+                              "is_id": self.NO_STREAM_ID_FILTER,
-+                              "pls_mode": eDVBFrontendParametersSatellite.PLS_Root,
-+                              "pls_code": 1 }
++                              "is_id": -1,
++                              "pls_mode": eDVBFrontendParametersSatellite.PLS_Unknown,
++                              "pls_code": 0 }
                        defaultCab = {
                                "frequency": 466,
                                "inversion": eDVBFrontendParametersCable.Inversion_Unknown,
-@@ -795,6 +828,9 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -795,6 +816,9 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                                        if defaultSat["system"] in (eDVBFrontendParametersSatellite.System_DVB_S2, eDVBFrontendParametersSatellite.System_DVB_S2X):
                                                defaultSat["rolloff"] = frontendData.get("rolloff", eDVBFrontendParametersSatellite.RollOff_alpha_0_35)
                                                defaultSat["pilot"] = frontendData.get("pilot", eDVBFrontendParametersSatellite.Pilot_Unknown)
@@ -1251,25 +1253,22 @@ index b7f57887..e1844458 100644
  
                                elif ttype == "DVB-C":
                                        defaultCab["frequency"] = frontendData.get("frequency", 0) / 1000
-@@ -943,6 +979,17 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -943,6 +967,14 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                                (eDVBFrontendParametersSatellite.Pilot_Off, _("Off")),
                                (eDVBFrontendParametersSatellite.Pilot_On, _("On")),
                                (eDVBFrontendParametersSatellite.Pilot_Unknown, _("Auto"))])
-+                      self.scan_sat.is_id = ConfigInteger(default = defaultSat["is_id"], limits = (self.NO_STREAM_ID_FILTER, 255))
-+                      self.scan_sat.is_id_bool = ConfigSelection(default = defaultSat["is_id"] != self.NO_STREAM_ID_FILTER, choices = [(True, _("Multistream")),(False, _("Ordinary"))])
++                      self.scan_sat.is_id = ConfigInteger(default = defaultSat["is_id"] if defaultSat["is_id"] != -1 else 0, limits = (0, 255))
++                      self.scan_sat.is_id_bool = ConfigSelection(default = defaultSat["is_id"] != -1, choices = [(True, _("Multistream")),(False, _("Ordinary"))])
 +                      self.scan_sat.pls_mode = ConfigSelection(default = defaultSat["pls_mode"], choices = [
 +                              (eDVBFrontendParametersSatellite.PLS_Root, _("Root")),
 +                              (eDVBFrontendParametersSatellite.PLS_Gold, _("Gold")),
-+                              (eDVBFrontendParametersSatellite.PLS_Combo, _("Combo"))])
-+                      self.scan_sat.pls_code = ConfigInteger(default = defaultSat["pls_code"], limits = (0, 262142))
-+                      
-+                      self.is_id_memory = self.scan_sat.is_id.value # used to prevent is_id value being lost when self.scan_sat.is_id_bool state changes
-+                      self.pls_mode_memory = self.scan_sat.pls_mode.value
-+                      self.pls_code_memory = self.scan_sat.pls_code.value
++                              (eDVBFrontendParametersSatellite.PLS_Combo, _("Combo")),
++                              (eDVBFrontendParametersSatellite.PLS_Unknown, _("Auto"))])
++                      self.scan_sat.pls_code = ConfigInteger(default = defaultSat["pls_code"], limits = (0, 262143))
  
                        # cable
                        self.scan_cab.frequency = ConfigInteger(default = defaultCab["frequency"], limits = (50, 999))
-@@ -1092,8 +1139,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -1092,8 +1124,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
        def updateStatus(self):
                print "updatestatus"
  
@@ -1280,7 +1279,7 @@ index b7f57887..e1844458 100644
                print "orbpos: " + str(orbital_position)
                parm = eDVBFrontendParametersSatellite()
                parm.modulation = modulation
-@@ -1106,6 +1153,9 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -1106,6 +1138,9 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                parm.orbital_position = orbital_position
                parm.rolloff = rolloff
                parm.pilot = pilot
@@ -1290,15 +1289,33 @@ index b7f57887..e1844458 100644
                tlist.append(parm)
  
        def addCabTransponder(self, tlist, frequency, symbol_rate, modulation, fec, inversion):
-@@ -1188,7 +1238,10 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+@@ -1178,6 +1213,17 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
+                                       else:
+                                               fec = self.scan_sat.fec_s2.value
++                                      is_id = -1
++                                      pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                                      pls_code = 0
++                                      if self.scan_sat.is_id_bool.value:
++                                              is_id = self.scan_sat.is_id.value
++                                              pls_mode = self.scan_sat.pls_mode.value
++                                              if pls_mode == eDVBFrontendParametersSatellite.PLS_Unknown:
++                                                      pls_code = 0
++                                              else:
++                                                      pls_code = self.scan_sat.pls_code.value
++
+                                       print "add sat transponder"
+                                       self.addSatTransponder(tlist, self.scan_sat.frequency.value,
+                                                               self.scan_sat.symbolrate.value,
+@@ -1188,7 +1234,10 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport, Terrest
                                                                system,
                                                                modulation,
                                                                self.scan_sat.rolloff.value,
 -                                                              self.scan_sat.pilot.value)
 +                                                              self.scan_sat.pilot.value,
-+                                                              self.scan_sat.is_id.value,
-+                                                              self.scan_sat.pls_mode.value,
-+                                                              self.scan_sat.pls_code.value)
++                                                              is_id,
++                                                              pls_mode,
++                                                              pls_code)
                                removeAll = False
                        elif self.scan_type.value == "single_satellite":
                                sat = self.satList[index_to_scan][self.scan_satselection[index_to_scan].index]
@@ -1319,7 +1336,9 @@ index ffd288f3..5a52028c 100644
                                return ((_("NIM"), chr(ord('A')+int(frontendData["tuner_number"])), TYPE_TEXT),
                                                (_("Type"), frontendData["tuner_type"], TYPE_TEXT),
 diff --git a/lib/python/Tools/Transponder.py b/lib/python/Tools/Transponder.py
-index 2b46d0e6..08109b63 100644
+old mode 100644
+new mode 100755
+index 2b46d0e6..dffc3d26
 --- a/lib/python/Tools/Transponder.py
 +++ b/lib/python/Tools/Transponder.py
 @@ -69,6 +69,17 @@ def ConvertToHumanReadable(tp, type = None):
@@ -1330,7 +1349,7 @@ index 2b46d0e6..08109b63 100644
 +                              eDVBFrontendParametersSatellite.PLS_Root : _("Root"),
 +                              eDVBFrontendParametersSatellite.PLS_Gold : _("Gold"),
 +                              eDVBFrontendParametersSatellite.PLS_Combo : _("Combo"),
-+                              eDVBFrontendParametersSatellite.PLS_Unknown : _("Unknown")}.get(tp.get("pls_mode"))
++                              eDVBFrontendParametersSatellite.PLS_Unknown : _("Auto")}.get(tp.get("pls_mode"))
 +                      #ret["is_id"] = tp.get("is_id")
 +                      #ret["pls_code"] = tp.get("pls_code")
 +              else:
diff --git a/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_zero4k_blindscan.patch b/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_zero4k_blindscan.patch
new file mode 100644 (file)
index 0000000..23e6ea5
--- /dev/null
@@ -0,0 +1,140 @@
+diff --git a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
+index aa80aa2a..d12a67e6 100755
+--- a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
++++ b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py
+@@ -19,7 +19,7 @@ from Tools.Directories import resolveFilename, SCOPE_DEFAULTPARTITIONMOUNTDIR, S
+ from enigma import eTimer, eDVBFrontendParametersSatellite, eComponentScan, eDVBSatelliteEquipmentControl, eDVBFrontendParametersTerrestrial, eDVBFrontendParametersCable, eConsoleAppContainer, eDVBResourceManager, getDesktop
+ _modelName = file('/proc/stb/info/vumodel').read().strip()
+-_supportNimType = { 'AVL1208':'', 'AVL6222':'6222_', 'AVL6211':'6211_', 'BCM7356':'bcm7346_'}
++_supportNimType = { 'AVL1208':'', 'AVL6222':'6222_', 'AVL6211':'6211_', 'BCM7356':'bcm7346_', 'SI2166':'si2166_'}
+ class Blindscan(ConfigListScreen, Screen):
+       skin =  """
+@@ -502,57 +502,68 @@ class Blindscan(ConfigListScreen, Screen):
+               for line in lines:
+                       data = line.split()
+                       print "cnt :", len(data), ", data :", data
+-                      if len(data) >= 10:
+-                              if data[0] == 'OK':
+-                                      parm = eDVBFrontendParametersSatellite()
+-                                      sys = { "DVB-S" : eDVBFrontendParametersSatellite.System_DVB_S,
+-                                              "DVB-S2" : eDVBFrontendParametersSatellite.System_DVB_S2,
+-                                              "DVB-S2X" : eDVBFrontendParametersSatellite.System_DVB_S2X}
+-                                      qam = { "QPSK" : parm.Modulation_QPSK,
+-                                              "8PSK" : parm.Modulation_8PSK}
+-                                      inv = { "INVERSION_OFF" : parm.Inversion_Off,
+-                                              "INVERSION_ON" : parm.Inversion_On,
+-                                              "INVERSION_AUTO" : parm.Inversion_Unknown}
+-                                      fec = { "FEC_AUTO" : parm.FEC_Auto,
+-                                              "FEC_1_2" : parm.FEC_1_2,
+-                                              "FEC_2_3" : parm.FEC_2_3,
+-                                              "FEC_3_4" : parm.FEC_3_4,
+-                                              "FEC_5_6": parm.FEC_5_6,
+-                                              "FEC_7_8" : parm.FEC_7_8,
+-                                              "FEC_8_9" : parm.FEC_8_9,
+-                                              "FEC_3_5" : parm.FEC_3_5,
+-                                              "FEC_9_10" : parm.FEC_9_10,
+-                                              "FEC_NONE" : parm.FEC_None, 
+-                                              "FEC_13_45" : parm.FEC_13_45, "FEC_9_20" : parm.FEC_9_20, "FEC_11_20" : parm.FEC_11_20, "FEC_23_36" : parm.FEC_23_36, "FEC_25_36" : parm.FEC_25_36,
+-                                              "FEC_13_18" : parm.FEC_13_18, "FEC_26_45" : parm.FEC_26_45, "FEC_28_45" : parm.FEC_28_45, "FEC_7_9" : parm.FEC_7_9, "FEC_77_90" : parm.FEC_77_90,
+-                                              "FEC_32_45" : parm.FEC_32_45, "FEC_11_15" : parm.FEC_11_15, "FEC_1_2_L" : parm.FEC_1_2_L, "FEC_8_15_L" : parm.FEC_8_15_L, "FEC_3_5_L" : parm.FEC_3_5_L,
+-                                              "FEC_2_3_L" : parm.FEC_2_3_L, "FEC_5_9_L" : parm.FEC_5_9_L, "FEC_26_45_L" : parm.FEC_26_45_L}
+-                                      roll ={ "ROLLOFF_20" : parm.RollOff_alpha_0_20,
+-                                              "ROLLOFF_25" : parm.RollOff_alpha_0_25,
+-                                              "ROLLOFF_35" : parm.RollOff_alpha_0_35}
+-                                      pilot={ "PILOT_ON" : parm.Pilot_On,
+-                                              "PILOT_OFF" : parm.Pilot_Off,
+-                                              "PILOT_AUTO" : parm.Pilot_Unknown}
+-                                      pol = { "HORIZONTAL" : parm.Polarisation_Horizontal,
+-                                              "VERTICAL" : parm.Polarisation_Vertical}
+-                                      try :
+-                                              parm.orbital_position = self.orb_position
+-                                              parm.polarisation = pol[data[1]]
+-                                              parm.frequency = int(data[2])
+-                                              parm.symbol_rate = int(data[3])
+-                                              parm.system = sys[data[4]]
+-                                              parm.inversion = inv[data[5]]
+-                                              parm.pilot = pilot[data[6]]
+-                                              parm.fec = fec[data[7]]
+-                                              parm.modulation = qam[data[8]]
+-                                              parm.rolloff = roll[data[9]]
+-                                              parm.is_id = -1
+-                                              parm.pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
+-                                              parm.pls_code = 0
+-                                              self.tmp_tplist.append(parm)
+-                                      except: pass
++                      if len(data) >= 12: # multi stream channel
++                              is_id_list = data[11:]
++                              for is_id in is_id_list:
++                                      self.appendFrontendParams(data[:10] + [is_id])
++                      elif len(data) >= 10:
++                              self.appendFrontendParams(data + ["-1"])
++
+               self.blindscan_session.close(True)
++      def appendFrontendParams(self, data):
++              if data[0] == 'OK':
++                      parm = eDVBFrontendParametersSatellite()
++                      sys = { "DVB-S" : eDVBFrontendParametersSatellite.System_DVB_S,
++                              "DVB-S2" : eDVBFrontendParametersSatellite.System_DVB_S2,
++                              "DVB-S2X" : eDVBFrontendParametersSatellite.System_DVB_S2X}
++                      qam = { "QPSK" : parm.Modulation_QPSK,
++                              "8PSK" : parm.Modulation_8PSK,
++                              "16APSK" : parm.Modulation_16APSK,
++                              "32APSK" : parm.Modulation_32APSK,
++                              "8APSK" : parm.Modulation_8APSK}
++                      inv = { "INVERSION_OFF" : parm.Inversion_Off,
++                              "INVERSION_ON" : parm.Inversion_On,
++                              "INVERSION_AUTO" : parm.Inversion_Unknown}
++                      fec = { "FEC_AUTO" : parm.FEC_Auto,
++                              "FEC_1_2" : parm.FEC_1_2,
++                              "FEC_2_3" : parm.FEC_2_3,
++                              "FEC_3_4" : parm.FEC_3_4,
++                              "FEC_5_6": parm.FEC_5_6,
++                              "FEC_7_8" : parm.FEC_7_8,
++                              "FEC_8_9" : parm.FEC_8_9,
++                              "FEC_3_5" : parm.FEC_3_5,
++                              "FEC_9_10" : parm.FEC_9_10,
++                              "FEC_NONE" : parm.FEC_None,
++                              "FEC_13_45" : parm.FEC_13_45, "FEC_9_20" : parm.FEC_9_20, "FEC_11_20" : parm.FEC_11_20, "FEC_23_36" : parm.FEC_23_36, "FEC_25_36" : parm.FEC_25_36,
++                              "FEC_13_18" : parm.FEC_13_18, "FEC_26_45" : parm.FEC_26_45, "FEC_28_45" : parm.FEC_28_45, "FEC_7_9" : parm.FEC_7_9, "FEC_77_90" : parm.FEC_77_90,
++                              "FEC_32_45" : parm.FEC_32_45, "FEC_11_15" : parm.FEC_11_15, "FEC_1_2_L" : parm.FEC_1_2_L, "FEC_8_15_L" : parm.FEC_8_15_L, "FEC_3_5_L" : parm.FEC_3_5_L,
++                              "FEC_2_3_L" : parm.FEC_2_3_L, "FEC_5_9_L" : parm.FEC_5_9_L, "FEC_26_45_L" : parm.FEC_26_45_L}
++                      roll ={ "ROLLOFF_20" : parm.RollOff_alpha_0_20,
++                              "ROLLOFF_25" : parm.RollOff_alpha_0_25,
++                              "ROLLOFF_35" : parm.RollOff_alpha_0_35}
++                      pilot={ "PILOT_ON" : parm.Pilot_On,
++                              "PILOT_OFF" : parm.Pilot_Off,
++                              "PILOT_AUTO" : parm.Pilot_Unknown}
++                      pol = { "HORIZONTAL" : parm.Polarisation_Horizontal,
++                              "VERTICAL" : parm.Polarisation_Vertical}
++                      try :
++                              parm.orbital_position = self.orb_position
++                              parm.polarisation = pol[data[1]]
++                              parm.frequency = int(data[2])
++                              parm.symbol_rate = int(data[3])
++                              parm.system = sys[data[4]]
++                              parm.inversion = inv[data[5]]
++                              parm.pilot = pilot[data[6]]
++                              parm.fec = fec[data[7]]
++                              parm.modulation = qam[data[8]]
++                              parm.rolloff = roll[data[9]]
++                              parm.is_id = int(data[10])
++                              parm.pls_mode = eDVBFrontendParametersSatellite.PLS_Unknown
++                              parm.pls_code = 0
++                              self.tmp_tplist.append(parm)
++                      except: pass
++
+       def blindscanContainerAvail(self, str):
+               print str
+               #if str.startswith("OK"):
+@@ -579,7 +590,7 @@ class Blindscan(ConfigListScreen, Screen):
+               if self.tmp_tplist != None and self.tmp_tplist != []:
+                       for p in self.tmp_tplist:
+-                              print "data : [%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]" % (p.orbital_position, p.polarisation, p.frequency, p.symbol_rate, p.system, p.inversion, p.pilot, p.fec, p.modulation, p.modulation)
++                              print "data : [%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]" % (p.orbital_position, p.polarisation, p.frequency, p.symbol_rate, p.system, p.inversion, p.pilot, p.fec, p.modulation, p.modulation, p.is_id)
+                       self.startScan(self.tmp_tplist, self.feid)
+               else:
index 994e6b0..2c5cbf4 100755 (executable)
@@ -7,7 +7,7 @@ LICENSE = "CLOSED"
 require conf/license/license-close.inc
 
 PV = "4.3"
-PV_arm = "4.8"
+PV_arm = "4.9"
 
 PR = "r10"
 PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -114,13 +114,14 @@ do_install_vuzero4k() {
        install -d "${D}/${bindir}"
        install -m 0755 "${S}/tt2l08b" "${D}/${bindir}/tt2l08"
        install -m 0755 "${S}/tt2l08b_t2_scan" "${D}/${bindir}/tt2l08_t2_scan"
+       install -m 0755 "${S}/vuplus_si2166_blindscan" "${D}/${bindir}/vuplus_si2166_blindscan"
 }
 
 SRC_URI[md5sum] = "a8ca2f8ce06d37b7d01b729b1e4e4abb"
 SRC_URI[sha256sum] = "ec9b5dd552e72a0d775a77212350b71f5ea6f3619687c40c2bf97b12c5d7abd9"
 
-SRC_URI[arm.md5sum] = "7dea1e6dd1a9e53ef5c29750cf834d96"
-SRC_URI[arm.sha256sum] = "e35a4ef006ae66b79c224f3f6c5364a402bf4512fc39d3df756ca22a88d4ab0b"
+SRC_URI[arm.md5sum] = "d617f49fc3ac65f8fee84cab645c30b4"
+SRC_URI[arm.sha256sum] = "b217b568f6d5fa1c921d687f05297059dc6ca1eb8df3e7002ec839681658ac7e"
 
 INSANE_SKIP_${PN} = "already-stripped"