From 1995abf236d34dd3264435a35f2c9c128cf3afaa Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Sun, 20 May 2007 23:47:19 +0000 Subject: [PATCH] invent proper signalPowerdB enums and use them --- lib/dvb/frontend.cpp | 12 ++++++++---- lib/dvb/frontend.h | 2 +- lib/dvb/idvb.h | 2 +- lib/python/Components/Converter/FrontendInfo.py | 4 ++-- lib/python/Components/Sources/FrontendStatus.py | 3 ++- lib/service/iservice.h | 3 ++- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index f9ca6c70..d2730a26 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -623,8 +623,13 @@ int eDVBFrontend::readFrontendData(int type) uint16_t snr=0; if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE) eDebug("FE_READ_SNR failed (%m)"); - -#if defined(DM8000) + return snr; + } + case signalPowerdB: /* this will move into the driver */ + { + uint16_t snr=0; + if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE) + eDebug("FE_READ_SNR failed (%m)"); unsigned int SDS_SNRE = snr << 16; static float SNR_COEFF[6] = { @@ -655,8 +660,6 @@ int eDVBFrontend::readFrontendData(int type) snr_in_db = fval1; return (int)(snr_in_db * 100.0); -#endif - return snr; } case signalQuality: { @@ -1034,6 +1037,7 @@ void eDVBFrontend::getFrontendStatus(ePyObject dest) PutToDict(dest, "tuner_synced", readFrontendData(synced)); PutToDict(dest, "tuner_bit_error_rate", readFrontendData(bitErrorRate)); PutToDict(dest, "tuner_signal_power", readFrontendData(signalPower)); + PutToDict(dest, "tuner_signal_power_db", readFrontendData(signalPowerdB)); PutToDict(dest, "tuner_signal_quality", readFrontendData(signalQuality)); } } diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index cfe25d1a..eb91eb72 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -109,7 +109,7 @@ public: RESULT getData(int num, int &data); RESULT setData(int num, int val); - int readFrontendData(int type); // bitErrorRate, signalPower, signalQuality, locked, synced + int readFrontendData(int type); // bitErrorRate, signalPower, signalPowerdB, signalQuality, locked, synced void getFrontendStatus(ePyObject dest); void getTransponderData(ePyObject dest, bool original); void getFrontendData(ePyObject dest); diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 0fa10bc8..9c210502 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -443,7 +443,7 @@ public: enum { stateIdle, stateTuning, stateFailed, stateLock, stateLostLock }; enum { toneOff, toneOn }; enum { voltageOff, voltage13, voltage18, voltage13_5, voltage18_5 }; - enum { bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber }; + enum { bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber, signalPowerdB }; }; SWIG_IGNORE(iDVBFrontend); diff --git a/lib/python/Components/Converter/FrontendInfo.py b/lib/python/Components/Converter/FrontendInfo.py index bcef9311..34d55be4 100644 --- a/lib/python/Components/Converter/FrontendInfo.py +++ b/lib/python/Components/Converter/FrontendInfo.py @@ -35,9 +35,9 @@ class FrontendInfo(Converter, object): elif self.type == self.SNR: percent = self.source.snr elif self.type == self.SNRdB: - if self.source.snr is None: + if self.source.snr_db is None: return "N/A" - return "%3.02f dB" % (self.source.snr / 100.0) + return "%3.02f dB" % (self.source.snr_db / 100.0) if percent is None: return "N/A" diff --git a/lib/python/Components/Sources/FrontendStatus.py b/lib/python/Components/Sources/FrontendStatus.py index 60b70102..1af03f95 100644 --- a/lib/python/Components/Sources/FrontendStatus.py +++ b/lib/python/Components/Sources/FrontendStatus.py @@ -13,7 +13,7 @@ class FrontendStatus(Source): self.poll_timer.start(1000) def invalidate(self): - self.snr = self.agc = self.ber = self.lock = None + self.snr = self.agc = self.ber = self.lock = self.snr_db = None def updateFrontendStatus(self): status = self.getFrontendStatus() @@ -21,6 +21,7 @@ class FrontendStatus(Source): self.invalidate() else: self.snr = status.get("tuner_signal_power") + self.snr_db = status.get("tuner_signal_power_db") self.agc = status.get("tuner_signal_quality") self.ber = status.get("tuner_bit_error_rate") self.lock = status.get("tuner_locked") diff --git a/lib/service/iservice.h b/lib/service/iservice.h index b0042735..2e88f235 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -354,7 +354,8 @@ public: signalQuality, lockState, syncState, - frontendNumber + frontendNumber, + signalPowerdB, }; }; -- 2.30.2