X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FComponents%2FConverter%2FFrontendInfo.py;h=4043a1be53c820cbc0f5c0be1e0555c4b8de6668;hp=bcef9311fc7a750dca5a201efe1f29136777d7f4;hb=574f425cc1ebece0aa5f09fb77a8cb7ad0310a1f;hpb=8bb6976db1427c12c4cae54ca25f9a6f0243c233 diff --git a/lib/python/Components/Converter/FrontendInfo.py b/lib/python/Components/Converter/FrontendInfo.py index bcef931..4043a1b 100644 --- a/lib/python/Components/Converter/FrontendInfo.py +++ b/lib/python/Components/Converter/FrontendInfo.py @@ -7,6 +7,8 @@ class FrontendInfo(Converter, object): AGC = 2 LOCK = 3 SNRdB = 4 + SLOT_NUMBER = 5 + TUNER_TYPE = 6 def __init__(self, type): Converter.__init__(self, type) @@ -18,12 +20,17 @@ class FrontendInfo(Converter, object): self.type = self.SNRdB elif type == "AGC": self.type = self.AGC + elif type == "NUMBER": + self.type = self.SLOT_NUMBER + elif type == "TYPE": + self.type = self.TUNER_TYPE else: self.type = self.LOCK @cached def getText(self): - assert self.type != self.LOCK, "the text output of FrontendInfo cannot be used for lock info" + assert self.type not in (self.LOCK, self.SLOT_NUMBER), "the text output of FrontendInfo cannot be used for lock info" + percent = None if self.type == self.BER: # as count count = self.source.ber if count is not None: @@ -35,21 +42,29 @@ class FrontendInfo(Converter, object): elif self.type == self.SNR: percent = self.source.snr elif self.type == self.SNRdB: - if self.source.snr is None: - return "N/A" - return "%3.02f dB" % (self.source.snr / 100.0) + if self.source.snr_db is not None: + return "%3.02f dB" % (self.source.snr_db / 100.0) + elif self.source.snr is not None: #fallback to normal SNR... + percent = self.source.snr + elif self.type == self.TUNER_TYPE: + return self.source.frontend_type and self.frontend_type or "Unknown" if percent is None: return "N/A" - return "%d %%" % (percent * 100 / 65536) @cached def getBool(self): - assert self.type in [self.LOCK, self.BER], "the boolean output of FrontendInfo can only be used for lock or BER info" + assert self.type in (self.LOCK, self.BER), "the boolean output of FrontendInfo can only be used for lock or BER info" if self.type == self.LOCK: - return self.source.lock + lock = self.source.lock + if lock is None: + lock = False + return lock else: - return self.source.ber > 0 + ber = self.source.ber + if ber is None: + ber = 0 + return ber > 0 text = property(getText) @@ -67,6 +82,18 @@ class FrontendInfo(Converter, object): return self.BER or 0 else: return self.range + elif self.type == self.TUNER_TYPE: + type = self.source.frontend_type + if type == 'DVB-S': + return 0 + elif type == 'DVB-C': + return 1 + elif type == 'DVB-T': + return 2 + return -1 + elif self.type == self.SLOT_NUMBER: + num = self.source.slot_number + return num is None and -1 or num range = 65536 value = property(getValue)