X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Ffrontend.cpp;h=843a5181c48bf1c8095c2c21b7b29fce69dab8fc;hp=0081e324070454e216fa7213a53f6f55cc0a2cc1;hb=fee5f5b17c9197470c10dfaadbcb0145a5313d54;hpb=655727641a20ce58063bb6e6ca997fdf99cb2f49 diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp old mode 100644 new mode 100755 index 0081e32..843a518 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -490,6 +490,11 @@ void eDVBFrontend::reopenFrontend() openFrontend(); } +#ifdef BUILD_VUPLUS /* ikseong */ +int frontend0_fd; +int frontend1_fd; +#endif + int eDVBFrontend::openFrontend() { if (m_state != stateClosed) @@ -514,6 +519,15 @@ int eDVBFrontend::openFrontend() eWarning("failed! (%s) %m", m_filename); return -1; } +#ifdef BUILD_VUPLUS /* ikseong */ + else + { + if (m_dvbid==0) + frontend0_fd = m_fd; + else if (m_dvbid==1) + frontend1_fd = m_fd; + } +#endif } } else @@ -739,6 +753,10 @@ void eDVBFrontend::timeout() m_tuning = 0; if (m_state == stateTuning) { +#ifdef BUILD_VUPLUS /* ikseong */ + eDVBFrontend *sec_fe = this; + sec_fe->m_data[CSW] = sec_fe->m_data[UCSW] = sec_fe->m_data[TONEBURST] = -1; // reset diseqc +#endif m_state = stateFailed; m_stateChanged(this); } @@ -906,6 +924,19 @@ int eDVBFrontend::readFrontendData(int type) } else if (strstr(m_description, "BCM4506") || strstr(m_description, "BCM4505")) ret = (snr * 100) >> 8; + else if (!strcmp(m_description, "CXD1981")) + { + int mse = (~snr) & 0xFF; + switch (parm_u_qam_modulation) { + case QAM_16: + case QAM_64: + case QAM_256: ret = (int)(-950 * log(((double)mse) / 760)); break; + case QAM_32: + case QAM_128: ret = (int)(-875 * log(((double)mse) / 650)); break; + + default: break; + } + } if (type == signalQuality) { @@ -1076,6 +1107,7 @@ static void fillDictWithSatelliteData(ePyObject dict, const FRONTENDPARAMETERS & case FEC_AUTO: tmp = eDVBFrontendParametersSatellite::FEC_Auto; break; default: eDebug("got unsupported FEC from frontend! report as FEC_AUTO!\n"); } + PutToDict(dict, "fec_inner", tmp); switch (p[0].u.data) { @@ -1458,9 +1490,11 @@ int eDVBFrontend::readInputpower() return 0; int power=m_slotid; // this is needed for read inputpower from the correct tuner ! char proc_name[64]; - sprintf(proc_name, "/proc/stb/fp/lnb_sense%d", m_slotid); - FILE *f=fopen(proc_name, "r"); - if (f) + char proc_name2[64]; + sprintf(proc_name, "/proc/stb/frontend/%d/lnb_sense", m_slotid); + sprintf(proc_name2, "/proc/stb/fp/lnb_sense%d", m_slotid); + FILE *f; + if ((f=fopen(proc_name, "r")) || (f=fopen(proc_name2, "r"))) { if (fscanf(f, "%d", &power) != 1) eDebug("read %s failed!! (%m)", proc_name);