diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-03 21:16:59 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-12-03 21:16:59 +0000 |
| commit | 391f7559e77cf98ea3b5a1fba94a8fa6f4307da8 (patch) | |
| tree | ca83b3a1d5735027688b0f477c8d46262145336e /lib/dvb | |
| parent | 36940d42cf3cc58b40a5a6f5fe86bad50ff48ad7 (diff) | |
| download | enigma2-391f7559e77cf98ea3b5a1fba94a8fa6f4307da8.tar.gz enigma2-391f7559e77cf98ea3b5a1fba94a8fa6f4307da8.zip | |
add support for read signal quality, power and biterror rate from python
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/frontend.cpp | 29 | ||||
| -rw-r--r-- | lib/dvb/frontend.h | 4 | ||||
| -rw-r--r-- | lib/dvb/idvb.h | 6 |
3 files changed, 38 insertions, 1 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 8d035bfa..a26f6bd8 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -376,6 +376,35 @@ void eDVBFrontend::timeout() m_tuning = 0; } +int eDVBFrontend::readFrontendData(int type) +{ + switch(type) + { + case bitErrorRate: + { + uint32_t ber=0; + if (ioctl(m_fd, FE_READ_BER, &ber) < 0 && errno != ERANGE) + eDebug("FE_READ_BER failed (%m)"); + return ber; + } + case signalPower: + { + uint16_t snr=0; + if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE) + eDebug("FE_READ_SNR failed (%m)"); + return snr; + } + case signalQuality: + { + uint16_t strength=0; + if (ioctl(m_fd, FE_READ_SIGNAL_STRENGTH, &strength) < 0 && errno != ERANGE) + eDebug("FE_READ_SIGNAL_STRENGTH failed (%m)"); + return strength; + } + } + return 0; +} + #ifndef FP_IOCTL_GET_ID #define FP_IOCTL_GET_ID 0 #endif diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index d06da32a..8da0829c 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -91,7 +91,9 @@ public: RESULT setSecSequence(const eSecCommandList &list); RESULT getData(int num, int &data); RESULT setData(int num, int val); - + + int readFrontendData(int type); // bitErrorRate, signalPower, signalQuality + int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm); int getID() { return m_fe; } diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index a14e0af5..22eccbd9 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -344,6 +344,12 @@ public: virtual RESULT sendToneburst(int burst)=0; virtual RESULT setSEC(iDVBSatelliteEquipmentControl *sec)=0; virtual RESULT setSecSequence(const eSecCommandList &list)=0; + + enum { + bitErrorRate, signalPower, signalQuality + }; + virtual int readFrontendData(int type)=0; + virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; |
