diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-15 15:51:19 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-15 15:51:19 +0000 |
| commit | b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20 (patch) | |
| tree | 12b771f91ee8351764d8e0087cfd122b7ccfb263 /lib/python | |
| parent | c866e3ad3c089e189ff94d51cb125603b998f5c6 (diff) | |
| download | enigma2-b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20.tar.gz enigma2-b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20.zip | |
change iFrontendInformation api
getFrontendData(bool) is now splitted in three seperate calls
getFrontendData() returns the frontend number and frontend type in a dict
getFrontendStatus() return signal quality, signal power, bit error rate,
lock state, sync state, frontend state in a dict
getTransponderData(bool) when the bool is true it returns a dict with the
original tuned transponder data, when false the transponderdata read out
from the frontend driver
getAll(bool) is a sum of the three single calls and the direct replacement
of the old getFrontendData call
Diffstat (limited to 'lib/python')
| -rw-r--r-- | lib/python/Components/Sources/FrontendStatus.py | 26 | ||||
| -rw-r--r-- | lib/python/Components/TunerInfo.py | 33 | ||||
| -rw-r--r-- | lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py | 38 | ||||
| -rw-r--r-- | lib/python/Plugins/SystemPlugins/Satfinder/plugin.py | 23 | ||||
| -rw-r--r-- | lib/python/Screens/ScanSetup.py | 2 | ||||
| -rw-r--r-- | lib/python/Screens/ServiceInfo.py | 2 |
6 files changed, 69 insertions, 55 deletions
diff --git a/lib/python/Components/Sources/FrontendStatus.py b/lib/python/Components/Sources/FrontendStatus.py index 352b9fdc..d9311771 100644 --- a/lib/python/Components/Sources/FrontendStatus.py +++ b/lib/python/Components/Sources/FrontendStatus.py @@ -16,25 +16,27 @@ class FrontendStatus(Source): self.snr = self.agc = self.ber = self.lock = None def updateFrontendStatus(self): - feinfo = self.getFrontendInfo() - if feinfo is None: + print "updateFrontendStatus" + status = self.getFrontendStatus() + if not status: self.invalidate() else: - (self.snr, self.agc, self.ber, self.lock) = \ - [feinfo.getFrontendInfo(x) \ - for x in [iFrontendInformation.signalPower, - iFrontendInformation.signalQuality, - iFrontendInformation.bitErrorRate, - iFrontendInformation.lockState] ] - + self.snr = status.get("tuner_signal_power") + self.agc = status.get("tuner_signal_quality") + self.ber = status.get("tuner_bit_error_rate") + self.lock = status.get("tuner_locked") self.changed((self.CHANGED_ALL, )) - def getFrontendInfo(self): + def getFrontendStatus(self): if self.frontend_source: - return self.frontend_source() + frontend = self.frontend_source() + if frontend: + dict = { } + frontend.getFrontendStatus(dict) elif self.service_source: service = self.service_source() - return service and service.frontendInfo() + feinfo = service and service.frontendInfo() + return feinfo and feinfo.getFrontendStatus() else: return None diff --git a/lib/python/Components/TunerInfo.py b/lib/python/Components/TunerInfo.py index 490b9bef..24950221 100644 --- a/lib/python/Components/TunerInfo.py +++ b/lib/python/Components/TunerInfo.py @@ -9,7 +9,6 @@ class TunerInfo(GUIComponent): AGC = 1 BER = 2 LOCK = 3 - SNR_PERCENTAGE = 0 AGC_PERCENTAGE = 1 BER_VALUE = 2 @@ -18,34 +17,35 @@ class TunerInfo(GUIComponent): BER_BAR = 5 LOCK_STATE = 6 SYNC_STATE = 7 - def __init__(self, type, servicefkt = None, frontendfkt = None): + + def __init__(self, type, servicefkt = None, frontendfkt = None, statusDict = None): GUIComponent.__init__(self) self.instance = None self.message = None self.value = None - self.servicefkt = servicefkt self.frontendfkt = frontendfkt + self.statusDict = statusDict self.type = type self.update() - + def setText(self, text): self.message = text if self.instance: self.instance.setText(self.message) - + def setValue(self, value): self.value = value if self.instance: self.instance.setValue(self.value) - + def calc(self,val): if not val: return 0 if val < 2500: return (long)(log(val)/log(2)) return val*100/65535 - + def update(self): if self.type == self.SNR_PERCENTAGE or self.type == self.SNR_BAR: value = self.getValue(self.SNR) * 100 / 65536 @@ -69,9 +69,18 @@ class TunerInfo(GUIComponent): self.setText(_("locked")) else: self.setText(_("not locked")) - + def getValue(self, what): - if self.servicefkt is not None: + if self.statusDict: + if what == self.SNR: + return self.statusDict.get("tuner_signal_power", 0) + elif what == self.AGC: + return self.statusDict.get("tuner_signal_quality", 0) + elif what == self.BER: + return self.statusDict.get("tuner_bit_error_rate", 0) + elif what == self.LOCK: + return self.statusDict.get("tuner_locked", 0) + elif self.servicefkt: service = self.servicefkt() if service is not None: feinfo = service.frontendInfo() @@ -84,7 +93,7 @@ class TunerInfo(GUIComponent): return feinfo.getFrontendInfo(iFrontendInformation.bitErrorRate) elif what == self.LOCK: return feinfo.getFrontendInfo(iFrontendInformation.lockState) - elif self.frontendfkt is not None: + elif self.frontendfkt: frontend = self.frontendfkt() if frontend: if what == self.SNR: @@ -96,7 +105,7 @@ class TunerInfo(GUIComponent): elif what == self.LOCK: return frontend.readFrontendData(iFrontendInformation.lockState) return 0 - + def createWidget(self, parent): if self.SNR_PERCENTAGE <= self.type <= self.BER_VALUE or self.type == self.LOCK_STATE: return eLabel(parent) @@ -104,7 +113,7 @@ class TunerInfo(GUIComponent): self.g = eSlider(parent) self.g.setRange(0, 100) return self.g - + def postWidgetCreate(self, instance): if self.message is not None: instance.setText(self.message) diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py index 49ce9a70..40688df5 100644 --- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py +++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py @@ -61,8 +61,9 @@ class PositionerSetup(Screen): del session.pip if not self.openFrontend(): self.frontend = None # in normal case this should not happen - self.getFrontend = None - + + self.frontendStatus = { } + self.diseqc = Diseqc(self.frontend) self.tuner = Tuner(self.frontend) self.tuner.tune((0,0,0,0,0,0)) @@ -89,13 +90,13 @@ class PositionerSetup(Screen): self["agc"] = Label() self["ber"] = Label() self["lock"] = Label() - self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, frontendfkt = self.getFrontend) - self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, frontendfkt = self.getFrontend) - self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, frontendfkt = self.getFrontend) - self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, frontendfkt = self.getFrontend) - self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, frontendfkt = self.getFrontend) - self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, frontendfkt = self.getFrontend) - self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, frontendfkt = self.getFrontend) + self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, statusDict = self.frontendStatus) + self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, statusDict = self.frontendStatus) + self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, statusDict = self.frontendStatus) + self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, statusDict = self.frontendStatus) + self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, statusDict = self.frontendStatus) + self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, statusDict = self.frontendStatus) + self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, statusDict = self.frontendStatus) self["frequency"] = Label() self["symbolrate"] = Label() @@ -139,9 +140,6 @@ class PositionerSetup(Screen): else: self.restartPrevService(False) - def getFrontend(self): - return self.frontend - def openFrontend(self): res_mgr = eDVBResourceManager.getInstance() if res_mgr: @@ -324,6 +322,8 @@ class PositionerSetup(Screen): self.tuner.retune() def updateStatus(self): + if self.frontend: + self.frontend.getFrontendStatus(self.frontendStatus) self["snr_percentage"].update() self["agc_percentage"].update() self["ber_value"].update() @@ -332,10 +332,10 @@ class PositionerSetup(Screen): self["ber_bar"].update() self["lock_state"].update() transponderdata = self.tuner.getTransponderData() - self["frequency_value"].setText(str(transponderdata["frequency"])) - self["symbolrate_value"].setText(str(transponderdata["symbol_rate"])) - self["fec_value"].setText(str(transponderdata["fec_inner"])) - if transponderdata["tuner_locked"] == 1 and self.isMoving and self.stopOnLock: + self["frequency_value"].setText(str(transponderdata.get("frequency"))) + self["symbolrate_value"].setText(str(transponderdata.get("symbol_rate"))) + self["fec_value"].setText(str(transponderdata.get("fec_inner"))) + if self.frontendStatus.get("tuner_locked", 0) == 1 and self.isMoving and self.stopOnLock: self.diseqccommand("stop") self.isMoving = False self.stopOnLock = False @@ -407,9 +407,10 @@ class Tuner: self.frontend.tune(self.lastparm) def getTransponderData(self): + ret = { } if self.frontend: - return self.frontend.readTransponderData(True) - return None + self.frontend.getTransponderData(ret, True) + return ret tuning = None @@ -573,3 +574,4 @@ def PositionerSetupStart(menuid): def Plugins(**kwargs): return PluginDescriptor(name=_("Positioner setup"), description="Setup your positioner", where = PluginDescriptor.WHERE_SETUP, fnc=PositionerSetupStart) +
\ No newline at end of file diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py index b7c9ae70..6e4e27b5 100644 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py @@ -73,13 +73,11 @@ class Satfinder(ScanSetup): print "getResourceManager instance failed" return False - def getFrontend(self): - return self.frontend - def __init__(self, session, feid): self.initcomplete = False self.feid = feid self.oldref = None + self.frontendStatus = { } if not self.openFrontend(): self.oldref = session.nav.getCurrentlyPlayingServiceReference() @@ -90,7 +88,6 @@ class Satfinder(ScanSetup): del session.pip if not self.openFrontend(): self.frontend = None # in normal case this should not happen - self.getFrontend = None ScanSetup.__init__(self, session) self.tuner = Tuner(self.frontend) @@ -99,13 +96,13 @@ class Satfinder(ScanSetup): self["agc"] = Label() self["ber"] = Label() self["lock"] = Label() - self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, frontendfkt = self.getFrontend) - self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, frontendfkt = self.getFrontend) - self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, frontendfkt = self.getFrontend) - self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, frontendfkt = self.getFrontend) - self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, frontendfkt = self.getFrontend) - self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, frontendfkt = self.getFrontend) - self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, frontendfkt = self.getFrontend) + self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, statusDict = self.frontendStatus) + self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, statusDict = self.frontendStatus) + self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, statusDict = self.frontendStatus) + self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, statusDict = self.frontendStatus) + self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, statusDict = self.frontendStatus) + self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, statusDict = self.frontendStatus) + self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, statusDict = self.frontendStatus) self["introduction"].setText("") @@ -115,6 +112,10 @@ class Satfinder(ScanSetup): self.initcomplete = True def updateStatus(self): + if self.frontend: + self.frontend.getFrontendStatus(self.frontendStatus) + else: + self.frontendStatus.clear() self["snr_percentage"].update() self["agc_percentage"].update() self["ber_value"].update() diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index f9c25c70..a3baf70c 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -135,7 +135,7 @@ class ScanSetup(ConfigListScreen, Screen): frontendData = None if self.service is not None: self.feinfo = self.service.frontendInfo() - frontendData = self.feinfo and self.feinfo.getFrontendData(True) + frontendData = self.feinfo and self.feinfo.getAll(True) self.createConfig(frontendData) del self.feinfo del self.service diff --git a/lib/python/Screens/ServiceInfo.py b/lib/python/Screens/ServiceInfo.py index fa948150..af53621a 100644 --- a/lib/python/Screens/ServiceInfo.py +++ b/lib/python/Screens/ServiceInfo.py @@ -161,7 +161,7 @@ class ServiceInfo(Screen): def showFrontendData(self, real): if self.type == TYPE_SERVICE_INFO: - frontendData = self.feinfo and self.feinfo.getFrontendData(real) + frontendData = self.feinfo and self.feinfo.getAll(real) Labels = self.getFEData(frontendData) self.fillList(Labels) |
