From 4e4f91c4b362e5b9ae834ccbf563e919de9490fd Mon Sep 17 00:00:00 2001 From: hschang Date: Tue, 5 Dec 2017 13:20:28 +0900 Subject: [PATCH] [dvbapp] Fix PositionSetup & SatFinder for DVB-S2X. --- meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend | 2 +- .../enigma2/enigma2/enigma2_vuplus_dvbs2x.patch | 174 ++++++++++++++++----- 2 files changed, 138 insertions(+), 38 deletions(-) diff --git a/meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend b/meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend index d5b9003..4168e28 100644 --- a/meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend +++ b/meta-bsp/recipes-vuplus/enigma2/enigma2.bbappend @@ -1,6 +1,6 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -PR .= "-bsp22" +PR .= "-bsp23" SRC_URI_append_vusolo = " \ file://enigma2_vuplus_misc.patch \ diff --git a/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_dvbs2x.patch b/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_dvbs2x.patch index 5ff1247..7b70ac1 100644 --- a/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_dvbs2x.patch +++ b/meta-bsp/recipes-vuplus/enigma2/enigma2/enigma2_vuplus_dvbs2x.patch @@ -1,11 +1,5 @@ -commit 8b323facfe629645939134a6422e4850425009ce -Author: hschang -Date: Mon Nov 27 11:45:33 2017 +0900 - - Support DVB-S2X - diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp -index 0f367be..ca43546 100755 +index 0f367be5..ca435464 100755 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -512,7 +512,7 @@ void eDVBDB::saveServicelist(const char *file) @@ -18,7 +12,7 @@ index 0f367be..ca43546 100755 fprintf(f, "\ts %d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d\n", sat.frequency, sat.symbol_rate, diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp -index 852c403..67c3aa9 100644 +index 852c4034..67c3aa98 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -414,6 +414,10 @@ bool eDVBResourceManager::frontendIsCompatible(int index, const char *type) @@ -42,7 +36,7 @@ index 852c403..67c3aa9 100644 else if (!strcmp(type, "DVB-T2") || !strcmp(type, "DVB-T")) { diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp -index 91c866c..a2eb0e8 100755 +index 91c866c9..a2eb0e82 100755 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -38,6 +38,9 @@ @@ -300,7 +294,7 @@ index 91c866c..a2eb0e8 100755 arg_error: PyErr_SetString(PyExc_StandardError, diff --git a/lib/dvb/frontendparms.h b/lib/dvb/frontendparms.h -index c4989fb..c941ca6 100644 +index c4989fbc..c941ca69 100644 --- a/lib/dvb/frontendparms.h +++ b/lib/dvb/frontendparms.h @@ -21,15 +21,19 @@ struct eDVBFrontendParametersSatellite @@ -327,7 +321,7 @@ index c4989fb..c941ca6 100644 // dvb-s2 diff --git a/lib/dvb/scan.cpp b/lib/dvb/scan.cpp -index 969ed9f..1f045df 100644 +index 969ed9fa..1f045df8 100644 --- a/lib/dvb/scan.cpp +++ b/lib/dvb/scan.cpp @@ -832,15 +832,41 @@ void eDVBScan::channelDone() @@ -375,7 +369,7 @@ index 969ed9f..1f045df 100644 parm.polarisation ? 'V' : 'H', parm.orbital_position/10, diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py -index b92ad92..d726fec 100755 +index b92ad92b..d726fece 100755 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -153,7 +153,7 @@ class SecConfigure: @@ -465,7 +459,7 @@ index b92ad92..d726fec 100755 positionerList = [] for nim in nimList[:]: diff --git a/lib/python/Components/ServiceScan.py b/lib/python/Components/ServiceScan.py -index 6a82ade..7412386 100644 +index 6a82ade0..74123861 100644 --- a/lib/python/Components/ServiceScan.py +++ b/lib/python/Components/ServiceScan.py @@ -54,9 +54,11 @@ class ServiceScan: @@ -496,7 +490,7 @@ index 6a82ade..7412386 100644 network = _("Cable") tp = transponder.getDVBC() diff --git a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py -index 82ce819..5215a4b 100644 +index 82ce819a..5215a4b8 100644 --- a/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Blindscan/plugin.py @@ -199,7 +199,7 @@ class Blindscan(ConfigListScreen, Screen): @@ -541,14 +535,38 @@ index 82ce819..5215a4b 100644 "ROLLOFF_25" : parm.RollOff_alpha_0_25, "ROLLOFF_35" : parm.RollOff_alpha_0_35} diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py -index e097117..eb0fe51 100644 +index e0971173..b94a8819 100644 --- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py +++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py -@@ -451,6 +451,21 @@ class TunerScreen(ScanSetup): +@@ -433,7 +433,12 @@ class TunerScreen(ScanSetup): + self.systemEntry = None + + if tuning.type.value == "manual_transponder": +- if nim.isCompatible("DVB-S2"): ++ scan_sat_system_value = self.scan_sat.system.value ++ if nim.isCompatible("DVB-S2X"): ++ scan_sat_system_value = self.scan_sat.system_dvbs2x.value ++ self.systemEntry = getConfigListEntry(_('System'), self.scan_sat.system_dvbs2x) ++ self.list.append(self.systemEntry) ++ elif nim.isCompatible("DVB-S2"): + self.systemEntry = getConfigListEntry(_('System'), self.scan_sat.system) + self.list.append(self.systemEntry) + else: +@@ -443,21 +448,39 @@ class TunerScreen(ScanSetup): + self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion)) + self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate)) + self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization)) +- if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S: ++ if scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec)) +- elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: ++ elif scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S2: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2)) + self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation) self.list.append(self.modulationEntry) self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff)) self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot)) -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2X: ++ elif scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S2X: + if self.scan_sat.modulation_dvbs2x.value == eDVBFrontendParametersSatellite.Modulation_QPSK: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2x_qpsk)) + elif self.scan_sat.modulation_dvbs2x.value == eDVBFrontendParametersSatellite.Modulation_8PSK: @@ -566,7 +584,18 @@ index e097117..eb0fe51 100644 elif tuning.type.value == "predefined_transponder": self.list.append(getConfigListEntry(_("Transponder"), tuning.transponder)) self["config"].list = self.list -@@ -499,30 +514,17 @@ class TunerScreen(ScanSetup): + self["config"].l.setList(self.list) + + def newConfig(self): +- if self["config"].getCurrent() in (self.typeOfTuningEntry, self.satEntry, self.systemEntry): ++ cur = self["config"].getCurrent() ++ if cur in (self.typeOfTuningEntry, self.satEntry, self.systemEntry) or \ ++ (self.modulationEntry and (cur == self.modulationEntry) and \ ++ self.systemEntry and (self.systemEntry[1].value == eDVBFrontendParametersSatellite.System_DVB_S2X)): + self.createSetup() + + def createConfig(self, foo): +@@ -499,41 +522,49 @@ class TunerScreen(ScanSetup): pol = "CR" else: pol = "??" @@ -607,18 +636,23 @@ index e097117..eb0fe51 100644 tps.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec) tuning.transponder = ConfigSelection(choices=tps) -@@ -530,10 +532,26 @@ class TunerScreen(ScanSetup): + def keyGo(self): returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) satpos = int(tuning.sat.value) ++ nim = nimmanager.nim_slots[self.feid] if tuning.type.value == "manual_transponder": - if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: ++ system = self.scan_sat.system.value + modulation = self.scan_sat.modulation.value -+ if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S: ++ if nim.isCompatible("DVB-S2X"): ++ system = self.scan_sat.system_dvbs2x.value ++ modulation = self.scan_sat.modulation_dvbs2x.value ++ ++ if system == eDVBFrontendParametersSatellite.System_DVB_S: + fec = self.scan_sat.fec.value -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: ++ elif system == eDVBFrontendParametersSatellite.System_DVB_S2: fec = self.scan_sat.fec_s2.value -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2X -+ modulation = self.scan_sat.modulation_dvbs2x.value ++ elif system == eDVBFrontendParametersSatellite.System_DVB_S2X: + if modulation == eDVBFrontendParametersSatellite.Modulation_QPSK: + fec = self.scan_sat.fec_s2x_qpsk.value + elif modulation == eDVBFrontendParametersSatellite.Modulation_8PSK: @@ -636,24 +670,50 @@ index e097117..eb0fe51 100644 returnvalue = ( self.scan_sat.frequency.value, self.scan_sat.symbolrate.value, -@@ -542,7 +560,7 @@ class TunerScreen(ScanSetup): +@@ -541,8 +572,8 @@ class TunerScreen(ScanSetup): + fec, self.scan_sat.inversion.value, satpos, - self.scan_sat.system.value, +- self.scan_sat.system.value, - self.scan_sat.modulation.value, ++ system, + modulation, self.scan_sat.rolloff.value, self.scan_sat.pilot.value) elif tuning.type.value == "predefined_transponder": diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py -index e611ca5..3e4a043 100644 +index e611ca53..a87ca26f 100644 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py -@@ -89,6 +89,21 @@ class Satfinder(ScanSetup): +@@ -71,7 +71,12 @@ class Satfinder(ScanSetup): + + self.systemEntry = None + if self.tuning_type.value == "manual_transponder": +- if nim.isCompatible("DVB-S2"): ++ scan_sat_system_value = self.scan_sat.system.value ++ if nim.isCompatible("DVB-S2X"): ++ scan_sat_system_value = self.scan_sat.system_dvbs2x.value ++ self.systemEntry = getConfigListEntry(_('System'), self.scan_sat.system_dvbs2x) ++ self.list.append(self.systemEntry) ++ elif nim.isCompatible("DVB-S2"): + self.systemEntry = getConfigListEntry(_('System'), self.scan_sat.system) + self.list.append(self.systemEntry) + else: +@@ -81,14 +86,29 @@ class Satfinder(ScanSetup): + self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion)) + self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate)) + self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization)) +- if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S: ++ if scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec)) +- elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: ++ elif scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S2: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2)) + self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation) self.list.append(self.modulationEntry) self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff)) self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot)) -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2X: ++ elif scan_sat_system_value == eDVBFrontendParametersSatellite.System_DVB_S2X: + if self.scan_sat.modulation_dvbs2x.value == eDVBFrontendParametersSatellite.Modulation_QPSK: + self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2x_qpsk)) + elif self.scan_sat.modulation_dvbs2x.value == eDVBFrontendParametersSatellite.Modulation_8PSK: @@ -671,20 +731,36 @@ index e611ca5..3e4a043 100644 elif self.tuning_transponder and self.tuning_type.value == "predefined_transponder": self.list.append(getConfigListEntry(_("Transponder"), self.tuning_transponder)) self["config"].list = self.list -@@ -110,10 +125,23 @@ class Satfinder(ScanSetup): +@@ -101,6 +121,9 @@ class Satfinder(ScanSetup): + elif cur == self.satEntry: + self.updateSats() + self.createSetup() ++ elif self.modulationEntry and (cur == self.modulationEntry) and \ ++ self.systemEntry and (self.systemEntry[1].value == eDVBFrontendParametersSatellite.System_DVB_S2X): ++ self.createSetup() + + def sat_changed(self, config_element): + self.newConfig() +@@ -109,11 +132,29 @@ class Satfinder(ScanSetup): + def retune(self, configElement): returnvalue = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) satpos = int(self.tuning_sat.value) ++ nim = nimmanager.nim_slots[self.feid] if self.tuning_type.value == "manual_transponder": - if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: - fec = self.scan_sat.fec_s2.value - else: ++ system = self.scan_sat.system.value + modulation = self.scan_sat.modulation.value -+ if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S: ++ if nim.isCompatible("DVB-S2X"): ++ system = self.scan_sat.system_dvbs2x.value ++ modulation = self.scan_sat.modulation_dvbs2x.value ++ ++ if system == eDVBFrontendParametersSatellite.System_DVB_S: fec = self.scan_sat.fec.value -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2: ++ elif system == eDVBFrontendParametersSatellite.System_DVB_S2: + fec = self.scan_sat.fec_s2.value -+ elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2X: -+ modulation = modulation = self.scan_sat.modulation_dvbs2x.value ++ elif system == eDVBFrontendParametersSatellite.System_DVB_S2X: + if modulation == eDVBFrontendParametersSatellite.Modulation_QPSK: + fec = self.scan_sat.fec_s2x_qpsk.value + elif modulation == eDVBFrontendParametersSatellite.Modulation_8PSK: @@ -698,17 +774,41 @@ index e611ca5..3e4a043 100644 returnvalue = ( self.scan_sat.frequency.value, self.scan_sat.symbolrate.value, -@@ -122,7 +150,7 @@ class Satfinder(ScanSetup): +@@ -121,8 +162,8 @@ class Satfinder(ScanSetup): + fec, self.scan_sat.inversion.value, satpos, - self.scan_sat.system.value, +- self.scan_sat.system.value, - self.scan_sat.modulation.value, ++ system, + modulation, self.scan_sat.rolloff.value, self.scan_sat.pilot.value) self.tune(returnvalue) +@@ -143,11 +184,19 @@ class Satfinder(ScanSetup): + + self.updateSats() + +- for x in (self.tuning_type, self.tuning_sat, self.scan_sat.frequency, ++ setup_list = [self.tuning_type, self.tuning_sat, self.scan_sat.frequency, + 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] ++ ++ nim = nimmanager.nim_slots[self.feid] ++ if nim.isCompatible("DVB-S2X"): ++ dvbs2x_setup_list = [self.scan_sat.system_dvbs2x, self.scan_sat.modulation_dvbs2x, self.scan_sat.fec_s2x_qpsk, ++ self.scan_sat.fec_s2x_8psk, self.scan_sat.fec_s2x_8apsk, self.scan_sat.fec_s2x_16apsk, self.scan_sat.fec_s2x_32apsk] ++ setup_list.extend(dvbs2x_setup_list) ++ ++ for x in setup_list: + x.addNotifier(self.retune, initial_call = False) + + def updateSats(self): diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py -index 9cc6dea..b7f5788 100644 +index 9cc6dea9..b7f57887 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -7,6 +7,7 @@ from Components.ActionMap import NumberActionMap, ActionMap @@ -997,7 +1097,7 @@ index 9cc6dea..b7f5788 100644 self.scan_sat.pilot.value) removeAll = False diff --git a/lib/python/Tools/Transponder.py b/lib/python/Tools/Transponder.py -index a882981..2b46d0e 100644 +index a8829813..2b46d0e6 100644 --- a/lib/python/Tools/Transponder.py +++ b/lib/python/Tools/Transponder.py @@ -22,12 +22,34 @@ def ConvertToHumanReadable(tp, type = None): -- 2.7.4