X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/8b921858d57c9d4cd5ff0ec40a484a4231762974..6f50f87ade33d60f05939a38de1ae0f4117b414b:/lib/dvb/frontend.cpp diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index b86acef8..14be44bb 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -1535,7 +1535,19 @@ void eDVBFrontend::tuneLoop() // called by m_tuneTimer break; case eSecCommand::SET_POWER_LIMITING_MODE: { - if (m_need_rotor_workaround) + char proc_name[64]; + sprintf(proc_name, "/proc/stb/frontend/%d/static_current_limiting", m_dvbid); + FILE *f=fopen(proc_name, "w"); + if (f) // new interface exist? + { + bool slimiting = m_sec_sequence.current()->mode == eSecCommand::modeStatic; + if (fprintf(f, "%s", slimiting ? "on" : "off") <= 0) + eDebug("write %s failed!! (%m)", proc_name); + else + eDebug("[SEC] set %s current limiting", slimiting ? "static" : "dynamic"); + fclose(f); + } + else if (m_need_rotor_workaround) { char dev[16]; @@ -2224,7 +2236,6 @@ int eDVBFrontend::isCompatibleWith(ePtr &feparm) int type; if (feparm->getSystem(type) || type != m_type || !m_enabled) return 0; - if (m_type == eDVBFrontend::feSatellite) { ASSERT(m_sec); @@ -2236,10 +2247,13 @@ int eDVBFrontend::isCompatibleWith(ePtr &feparm) ret = m_sec->canTune(sat_parm, this, 1 << m_slotid); if (ret > 1 && sat_parm.system == eDVBFrontendParametersSatellite::System::DVB_S && m_can_handle_dvbs2) ret -= 1; + return ret; } else if (m_type == eDVBFrontend::feCable) return 2; // more prio for cable frontends - return 1; + else if (m_type == eDVBFrontend::feTerrestrial) + return 1; + return 0; } bool eDVBFrontend::setSlotInfo(ePyObject obj) @@ -2258,7 +2272,8 @@ bool eDVBFrontend::setSlotInfo(ePyObject obj) // 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 BSBE2") || - !!strstr(m_description, "Alps -S"); + !!strstr(m_description, "Alps -S") || + !!strstr(m_description, "BCM4501"); m_can_handle_dvbs2 = !!strstr(m_description, "Alps BSBE2") || !!strstr(m_description, "BCM4501"); eDebug("setSlotInfo for dvb frontend %d to slotid %d, descr %s, need rotorworkaround %s, enabled %s, DVB-S2 %s", m_dvbid, m_slotid, m_description, m_need_rotor_workaround ? "Yes" : "No", m_enabled ? "Yes" : "No", m_can_handle_dvbs2 ? "Yes" : "No" );