fixes bug #380
[vuplus_dvbapp] / lib / python / Screens / ServiceInfo.py
index 00adc74..fa2f447 100644 (file)
@@ -5,6 +5,7 @@ from Components.ActionMap import ActionMap
 from Components.Label import Label
 from ServiceReference import ServiceReference
 from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation, eServiceCenter
 from Components.Label import Label
 from ServiceReference import ServiceReference
 from enigma import eListboxPythonMultiContent, eListbox, gFont, iServiceInformation, eServiceCenter
+from Tools.Transponder import ConvertToHumanReadable
 
 RT_HALIGN_LEFT = 0
 
 
 RT_HALIGN_LEFT = 0
 
@@ -14,17 +15,12 @@ TYPE_VALUE_DEC = 2
 TYPE_VALUE_HEX_DEC = 3
 TYPE_SLIDER = 4
 
 TYPE_VALUE_HEX_DEC = 3
 TYPE_SLIDER = 4
 
-def to_unsinged(x):
+def to_unsigned(x):
        return x & 0xFFFFFFFF
 
 def ServiceInfoListEntry(a, b, valueType=TYPE_TEXT, param=4):
        return x & 0xFFFFFFFF
 
 def ServiceInfoListEntry(a, b, valueType=TYPE_TEXT, param=4):
-       res = [ ]
-
-       #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""))
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 25, 0, RT_HALIGN_LEFT, a))
        print "b:", b
        print "b:", b
-       if type(b) is not str:
+       if not isinstance(b, str):
                if valueType == TYPE_VALUE_HEX:
                        b = ("0x%0" + str(param) + "x") % to_unsigned(b)
                elif valueType == TYPE_VALUE_DEC:
                if valueType == TYPE_VALUE_HEX:
                        b = ("0x%0" + str(param) + "x") % to_unsigned(b)
                elif valueType == TYPE_VALUE_DEC:
@@ -33,10 +29,13 @@ def ServiceInfoListEntry(a, b, valueType=TYPE_TEXT, param=4):
                        b = ("0x%0" + str(param) + "x (%dd)") % (to_unsigned(b), b)
                else:
                        b = str(b)
                        b = ("0x%0" + str(param) + "x (%dd)") % (to_unsigned(b), b)
                else:
                        b = str(b)
-       
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 220, 0, 350, 25, 0, RT_HALIGN_LEFT, b))
 
 
-       return res
+       return [
+               #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
+               (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""),
+               (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 25, 0, RT_HALIGN_LEFT, a),
+               (eListboxPythonMultiContent.TYPE_TEXT, 220, 0, 350, 25, 0, RT_HALIGN_LEFT, b)
+       ]
 
 class ServiceInfoList(HTMLComponent, GUIComponent):
        def __init__(self, source):
 
 class ServiceInfoList(HTMLComponent, GUIComponent):
        def __init__(self, source):
@@ -131,26 +130,26 @@ class ServiceInfo(Screen):
                        self.fillList(Labels)
                else:
                        if self.transponder_info:
                        self.fillList(Labels)
                else:
                        if self.transponder_info:
-                               conv = { "type"                         : _("Transponder Type"),
-                                                "frequency"            : _("Frequency"),
-                                                "symbolrate"           : _("Symbolrate"),
-                                                "orbital position" : _("Orbital Position"),
-                                                "inversion"            : _("Inversion"),
-                                                "fec inner"            : _("FEC"),
-                                                "modulation"           : _("Modulation"),
-                                                "polarization"         : _("Polarization"),
-                                                "roll off"                     : _("Rolloff"),
+                               tp_info = ConvertToHumanReadable(self.transponder_info)
+                               conv = { "tuner_type"           : _("Transponder Type"),
                                                 "system"                       : _("System"),
                                                 "system"                       : _("System"),
+                                                "modulation"           : _("Modulation"),
+                                                "orbital_position" : _("Orbital Position"),
+                                                "frequency"            : _("Frequency"),
+                                                "symbol_rate"          : _("Symbolrate"),
                                                 "bandwidth"            : _("Bandwidth"),
                                                 "bandwidth"            : _("Bandwidth"),
-                                                "code rate lp"         : _("Coderate LP"),
-                                                "code rate hp"         : _("Coderate HP"),
+                                                "polarization"         : _("Polarization"),
+                                                "inversion"            : _("Inversion"),
+                                                "pilot"                        : _("Pilot"),
+                                                "rolloff"                      : _("Rolloff"),
+                                                "fec_inner"            : _("FEC"),
+                                                "code_rate_lp"         : _("Coderate LP"),
+                                                "code_rate_hp"         : _("Coderate HP"),
                                                 "constellation"        : _("Constellation"),
                                                 "constellation"        : _("Constellation"),
-                                                "transmission mode": _("Transmission Mode"),
-                                                "guard interval"       : _("Guard Interval"),
-                                                "hierarchy"            : _("Hierarchy Information") }
-                               Labels = [ ]
-                               for i in self.transponder_info.keys():
-                                       Labels.append( (conv[i], self.transponder_info[i], TYPE_TEXT) )
+                                                "transmission_mode": _("Transmission Mode"),
+                                                "guard_interval"       : _("Guard Interval"),
+                                                "hierarchy_information": _("Hierarchy Information") }
+                               Labels = [(conv[i], tp_info[i], TYPE_VALUE_DEC) for i in tp_info.keys()]
                                self.fillList(Labels)
 
        def pids(self):
                                self.fillList(Labels)
 
        def pids(self):
@@ -179,10 +178,11 @@ class ServiceInfo(Screen):
                if self.type == TYPE_SERVICE_INFO:
                        self.showFrontendData(False)
 
                if self.type == TYPE_SERVICE_INFO:
                        self.showFrontendData(False)
 
-       def getFEData(self, frontendData):
-               if frontendData and len(frontendData):
-                       if frontendData["tuner_type"] == "DVB-S":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+       def getFEData(self, frontendDataOrg):
+               if frontendDataOrg and len(frontendDataOrg):
+                       frontendData = ConvertToHumanReadable(frontendDataOrg)
+                       if frontendDataOrg["tuner_type"] == "DVB-S":
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                        ("Type", frontendData["system"], TYPE_TEXT),
                                                        ("Modulation", frontendData["modulation"], TYPE_TEXT),
                                                        ("Orbital position", frontendData["orbital_position"], TYPE_VALUE_DEC),
                                                        ("Type", frontendData["system"], TYPE_TEXT),
                                                        ("Modulation", frontendData["modulation"], TYPE_TEXT),
                                                        ("Orbital position", frontendData["orbital_position"], TYPE_VALUE_DEC),
@@ -190,17 +190,19 @@ class ServiceInfo(Screen):
                                                        ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
                                                        ("Polarization", frontendData["polarization"], TYPE_TEXT),
                                                        ("Inversion", frontendData["inversion"], TYPE_TEXT),
                                                        ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
                                                        ("Polarization", frontendData["polarization"], TYPE_TEXT),
                                                        ("Inversion", frontendData["inversion"], TYPE_TEXT),
-                                                       ("FEC inner", frontendData["fec_inner"], TYPE_TEXT))
-                       elif frontendData["tuner_type"] == "DVB-C":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+                                                       ("FEC inner", frontendData["fec_inner"], TYPE_TEXT),
+                                                       ("Pilot", frontendData.get("pilot", None), TYPE_TEXT),
+                                                       ("Rolloff", frontendData.get("rolloff", None), TYPE_TEXT))
+                       elif frontendDataOrg["tuner_type"] == "DVB-C":
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
                                                ("Modulation", frontendData["modulation"], TYPE_TEXT),
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
                                                ("FEC inner", frontendData["fec_inner"], TYPE_TEXT))
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
                                                ("Modulation", frontendData["modulation"], TYPE_TEXT),
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
                                                ("FEC inner", frontendData["fec_inner"], TYPE_TEXT))
-                       elif frontendData["tuner_type"] == "DVB-T":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+                       elif frontendDataOrg["tuner_type"] == "DVB-T":
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
@@ -217,6 +219,8 @@ class ServiceInfo(Screen):
                tlist = [ ]
 
                for item in Labels:
                tlist = [ ]
 
                for item in Labels:
+                       if item[1] is None:
+                               continue;
                        value = item[1]
                        if len(item) < 4:
                                tlist.append(ServiceInfoListEntry(item[0]+":", value, item[2]))
                        value = item[1]
                        if len(item) < 4:
                                tlist.append(ServiceInfoListEntry(item[0]+":", value, item[2]))