signal quality is SNR, signal power is AGC
authorFelix Domke <tmbinc@elitedvb.net>
Tue, 11 Mar 2008 22:45:54 +0000 (22:45 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Tue, 11 Mar 2008 22:45:54 +0000 (22:45 +0000)
lib/dvb/frontend.cpp
lib/dvb/frontend.h
lib/dvb/idvb.h
lib/python/Components/Sources/FrontendStatus.py
lib/python/Components/TunerInfo.py
lib/service/iservice.h

index af821cd..c8d6d15 100644 (file)
@@ -617,14 +617,14 @@ int eDVBFrontend::readFrontendData(int type)
                                eDebug("FE_READ_BER failed (%m)");
                        return ber;
                }
-               case signalPower:
+               case signalQuality:
                {
                        uint16_t snr=0;
                        if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE)
                                eDebug("FE_READ_SNR failed (%m)");
                        return snr;
                }
-               case signalPowerdB: /* this will move into the driver */
+               case signalQualitydB: /* this will move into the driver */
                {
                        uint16_t snr=0;
                        if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE)
@@ -669,11 +669,14 @@ int eDVBFrontend::readFrontendData(int type)
                        {
                                float snr_in_db=(snr-39075)/1764.7;
                                return (int)(snr_in_db * 100.0);
+                       } else if (!strcmp(m_description, "Alps BSBE2"))
+                       {
+                               return (int)((snr >> 7) * 10.0);
                        } /* else
                                eDebug("no SNR dB calculation for frontendtype %s yet", m_description); */
                        return 0x12345678;
                }
-               case signalQuality:
+               case signalPower:
                {
                        uint16_t strength=0;
                        if (ioctl(m_fd, FE_READ_SIGNAL_STRENGTH, &strength) < 0 && errno != ERANGE)
@@ -1060,17 +1063,17 @@ void eDVBFrontend::getFrontendStatus(ePyObject dest)
                PutToDict(dest, "tuner_locked", readFrontendData(locked));
                PutToDict(dest, "tuner_synced", readFrontendData(synced));
                PutToDict(dest, "tuner_bit_error_rate", readFrontendData(bitErrorRate));
-               PutToDict(dest, "tuner_signal_power", readFrontendData(signalPower));
-               int sigPowerdB = readFrontendData(signalPowerdB);
-               if (sigPowerdB == 0x12345678) // not support yet
+               PutToDict(dest, "tuner_signal_quality", readFrontendData(signalQuality));
+               int sigQualitydB = readFrontendData(signalQualitydB);
+               if (sigQualitydB == 0x12345678) // not support yet
                {
                        ePyObject obj=Py_None;
                        Py_INCREF(obj);
-                       PutToDict(dest, "tuner_signal_power_db", obj);
+                       PutToDict(dest, "tuner_signal_quality_db", obj);
                }
                else
-                       PutToDict(dest, "tuner_signal_power_db", sigPowerdB);
-               PutToDict(dest, "tuner_signal_quality", readFrontendData(signalQuality));
+                       PutToDict(dest, "tuner_signal_quality_db", sigQualitydB);
+               PutToDict(dest, "tuner_signal_power", readFrontendData(signalPower));
        }
 }
 
index 5821e54..41de874 100644 (file)
@@ -118,7 +118,7 @@ public:
        RESULT getData(int num, int &data);
        RESULT setData(int num, int val);
 
-       int readFrontendData(int type); // bitErrorRate, signalPower, signalPowerdB, signalQuality, locked, synced
+       int readFrontendData(int type); // bitErrorRate, signalPower, signalQualitydB, signalQuality, locked, synced
        void getFrontendStatus(ePyObject dest);
        void getTransponderData(ePyObject dest, bool original);
        void getFrontendData(ePyObject dest);
index c18d242..d16c9b4 100644 (file)
@@ -444,7 +444,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, signalPowerdB };
+       enum { bitErrorRate, signalPower, signalQuality, locked, synced, frontendNumber, signalQualitydB };
 };
 
 SWIG_IGNORE(iDVBFrontend);
index 8e29030..3e469e0 100644 (file)
@@ -20,9 +20,9 @@ class FrontendStatus(Source):
                if not status:
                        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.snr = status.get("tuner_signal_quality")
+                       self.snr_db = status.get("tuner_signal_quality_db")
+                       self.agc = status.get("tuner_signal_power")
                        self.ber = status.get("tuner_bit_error_rate")
                        self.lock = status.get("tuner_locked")
                self.changed((self.CHANGED_ALL, ))
index 2495022..d8b4d06 100644 (file)
@@ -73,9 +73,9 @@ class TunerInfo(GUIComponent):
        def getValue(self, what):
                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.AGC:
+                               return self.statusDict.get("tuner_signal_power", 0)
                        elif what == self.BER:
                                return self.statusDict.get("tuner_bit_error_rate", 0)
                        elif what == self.LOCK:
@@ -86,9 +86,9 @@ class TunerInfo(GUIComponent):
                                feinfo = service.frontendInfo()
                                if feinfo is not None:
                                        if what == self.SNR:
-                                               return feinfo.getFrontendInfo(iFrontendInformation.signalPower)
-                                       elif what == self.AGC:
                                                return feinfo.getFrontendInfo(iFrontendInformation.signalQuality)
+                                       elif what == self.AGC:
+                                               return feinfo.getFrontendInfo(iFrontendInformation.signalPower)
                                        elif what == self.BER:
                                                return feinfo.getFrontendInfo(iFrontendInformation.bitErrorRate)
                                        elif what == self.LOCK:
@@ -97,9 +97,9 @@ class TunerInfo(GUIComponent):
                        frontend = self.frontendfkt()
                        if frontend:
                                if what == self.SNR:
-                                       return frontend.readFrontendData(iFrontendInformation.signalPower)
-                               elif what == self.AGC:
                                        return frontend.readFrontendData(iFrontendInformation.signalQuality)
+                               elif what == self.AGC:
+                                       return frontend.readFrontendData(iFrontendInformation.signalPower)
                                elif what == self.BER:
                                        return frontend.readFrontendData(iFrontendInformation.bitErrorRate)
                                elif what == self.LOCK:
index f367f6a..462f3dc 100644 (file)
@@ -355,7 +355,7 @@ public:
                lockState,
                syncState,
                frontendNumber,
-               signalPowerdB,
+               signalQualitydB,
        };
 };