X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/68794a76cf18bbf9fd6970bdce4e5074896129c7..0980594e3037839b361eae71646ccf960aaa2659:/lib/dvb/frontend.cpp diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 8b214130..c8d6d15f 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -382,6 +382,8 @@ RESULT eDVBFrontendParameters::getHash(unsigned long &hash) const DEFINE_REF(eDVBFrontend); +int eDVBFrontend::PriorityOrder=0; + eDVBFrontend::eDVBFrontend(int adap, int fe, int &ok) :m_enabled(false), m_type(-1), m_dvbid(fe), m_slotid(fe) ,m_fd(-1), m_need_rotor_workaround(false), m_sn(0), m_timeout(0), m_tuneTimer(0) @@ -615,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) @@ -667,12 +669,14 @@ int eDVBFrontend::readFrontendData(int type) { float snr_in_db=(snr-39075)/1764.7; return (int)(snr_in_db * 100.0); - } - else - eDebug("no SNR dB caluclation for frontendtype %s yet", m_description); + } 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) @@ -1059,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)); } } @@ -2149,7 +2153,9 @@ bool eDVBFrontend::setSlotInfo(ePyObject obj) m_slotid = PyInt_AsLong(Id); m_enabled = Enabled == Py_True; // HACK.. the rotor workaround is neede for all NIMs with LNBP21 voltage regulator... - m_need_rotor_workaround = !!strstr(m_description, "Alps BSBE1") || !!strstr(m_description, "Alps -S"); + m_need_rotor_workaround = !!strstr(m_description, "Alps BSBE1") || + !!strstr(m_description, "Alps BSBE2") || + !!strstr(m_description, "Alps -S"); eDebug("setSlotInfo for dvb frontend %d to slotid %d, descr %s, need rotorworkaround %s, enabled %s", m_dvbid, m_slotid, m_description, m_need_rotor_workaround ? "Yes" : "No", m_enabled ? "Yes" : "No" ); return true;