aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2008-12-09 19:58:57 +0100
committerFraxinas <andreas.frisch@multimedia-labs.de>2008-12-09 19:58:57 +0100
commite3785cbad215df08d8e27161cdcbd4f7b08307be (patch)
tree448c05f59198cdabe64402c68950455e474983f0 /lib
parent1dded3f6689ecc572d633b101f91331d2979f3c2 (diff)
parentbb349d44c5c3e963d25f31c085e92407d2c2b0a9 (diff)
downloadenigma2-e3785cbad215df08d8e27161cdcbd4f7b08307be.tar.gz
enigma2-e3785cbad215df08d8e27161cdcbd4f7b08307be.zip
Merge branch 'master' of fraxinas@git.opendreambox.org:/git/enigma2
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/frontend.cpp60
-rw-r--r--lib/python/Components/TunerInfo.py40
-rw-r--r--lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py40
-rw-r--r--lib/python/Plugins/SystemPlugins/Satfinder/plugin.py40
4 files changed, 74 insertions, 106 deletions
diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
index b25794f8..af974c81 100644
--- a/lib/dvb/frontend.cpp
+++ b/lib/dvb/frontend.cpp
@@ -716,23 +716,15 @@ int eDVBFrontend::readFrontendData(int type)
return ber;
}
case signalQuality:
- {
- uint16_t snr=0;
- if (!m_simulate)
- {
- if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE)
- eDebug("FE_READ_SNR failed (%m)");
- }
- return snr;
- }
case signalQualitydB: /* this will move into the driver */
{
+ int ret = 0x12345678;
uint16_t snr=0;
if (m_simulate)
return 0;
if (ioctl(m_fd, FE_READ_SNR, &snr) < 0 && errno != ERANGE)
eDebug("FE_READ_SNR failed (%m)");
- if (!strcmp(m_description, "BCM4501 (internal)"))
+ else if (!strcmp(m_description, "BCM4501 (internal)"))
{
float SDS_SNRE = snr << 16;
float snr_in_db;
@@ -787,15 +779,16 @@ int eDVBFrontend::readFrontendData(int type)
snr_in_db = fval1;
}
#endif
- return (int)(snr_in_db * 100);
+ ret = (int)(snr_in_db * 100);
+ ret -= 150; // -1.5db for latest bcm4501 firmware..
}
else if (strstr(m_description, "Alps BSBE1 C01A") ||
!strcmp(m_description, "Alps -S(STV0288)"))
{
if (snr == 0)
- return 0;
+ ret = 0;
else if (snr == 0xFFFF) // i think this should not happen
- return 100*100;
+ ret = 100*100;
else
{
enum { REALVAL, REGVAL };
@@ -823,46 +816,59 @@ int eDVBFrontend::readFrontendData(int type)
else
Imin = i;
}
- return (((regval - CN_lookup[Imin][REGVAL])
+ ret = (((regval - CN_lookup[Imin][REGVAL])
* (CN_lookup[Imax][REALVAL] - CN_lookup[Imin][REALVAL])
/ (CN_lookup[Imax][REGVAL] - CN_lookup[Imin][REGVAL]))
+ CN_lookup[Imin][REALVAL]) * 10;
}
- return 100;
+ else
+ ret = 100;
}
- return 0;
}
else if (!strcmp(m_description, "Alps BSBE1 702A") || // some frontends with STV0299
!strcmp(m_description, "Alps -S") ||
!strcmp(m_description, "Philips -S") ||
!strcmp(m_description, "LG -S") )
{
- return (int)((snr-39075)/17.647);
+ ret = (int)((snr-39075)/17.647);
} else if (!strcmp(m_description, "Alps BSBE2"))
{
- return (int)((snr >> 7) * 10);
+ ret = (int)((snr >> 7) * 10);
} else if (!strcmp(m_description, "Philips CU1216Mk3"))
{
int mse = (~snr) & 0xFF;
switch (parm_u_qam_modulation) {
- case QAM_16: return fe_udiv(1950000, (32 * mse) + 138) + 1000;
- case QAM_32: return fe_udiv(2150000, (40 * mse) + 500) + 1350;
- case QAM_64: return fe_udiv(2100000, (40 * mse) + 500) + 1250;
- case QAM_128: return fe_udiv(1850000, (38 * mse) + 400) + 1380;
- case QAM_256: return fe_udiv(1800000, (100 * mse) + 40) + 2030;
+ case QAM_16: ret = fe_udiv(1950000, (32 * mse) + 138) + 1000; break;
+ case QAM_32: ret = fe_udiv(2150000, (40 * mse) + 500) + 1350; break;
+ case QAM_64: ret = fe_udiv(2100000, (40 * mse) + 500) + 1250; break;
+ case QAM_128: ret = fe_udiv(1850000, (38 * mse) + 400) + 1380; break;
+ case QAM_256: ret = fe_udiv(1800000, (100 * mse) + 40) + 2030; break;
default: break;
}
- return 0;
} else if (!strcmp(m_description, "Philips TU1216"))
{
snr = 0xFF - (snr & 0xFF);
if (snr != 0)
- return 10 * (int)(-100 * (log10(snr) - log10(255)));
- return 0;
+ ret = 10 * (int)(-100 * (log10(snr) - log10(255)));
+ }
+
+ if (type == signalQuality)
+ {
+ if (ret == 0x12345678) // no snr db calculation avail.. return untouched snr value..
+ return snr;
+ switch(m_type)
+ {
+ case feSatellite: // we assume a max of 16.0db here
+ return ret >= 1600 ? 65536 : ret * 65536 / 1600;
+ case feCable: // we assume a max of 42db here
+ return ret >= 4200 ? 65536 : ret * 65536 / 4200;
+ case feTerrestrial: // we assume a max of 24db here
+ return ret >= 2400 ? 65536 : ret * 65536 / 2400;
+ }
}
/* else
eDebug("no SNR dB calculation for frontendtype %s yet", m_description); */
- return 0x12345678;
+ return ret;
}
case signalPower:
{
diff --git a/lib/python/Components/TunerInfo.py b/lib/python/Components/TunerInfo.py
index d8b4d064..39f54c0b 100644
--- a/lib/python/Components/TunerInfo.py
+++ b/lib/python/Components/TunerInfo.py
@@ -10,13 +10,14 @@ class TunerInfo(GUIComponent):
BER = 2
LOCK = 3
SNR_PERCENTAGE = 0
- AGC_PERCENTAGE = 1
- BER_VALUE = 2
- SNR_BAR = 3
- AGC_BAR = 4
- BER_BAR = 5
- LOCK_STATE = 6
- SYNC_STATE = 7
+ SNR_DB = 1
+ AGC_PERCENTAGE = 2
+ BER_VALUE = 3
+ SNR_BAR = 4
+ AGC_BAR = 5
+ BER_BAR = 6
+ LOCK_STATE = 7
+ SYNC_STATE = 8
def __init__(self, type, servicefkt = None, frontendfkt = None, statusDict = None):
GUIComponent.__init__(self)
@@ -47,7 +48,9 @@ class TunerInfo(GUIComponent):
return val*100/65535
def update(self):
- if self.type == self.SNR_PERCENTAGE or self.type == self.SNR_BAR:
+ if self.type == self.SNR_DB:
+ value = self.getValue(self.SNR_DB)
+ elif self.type == self.SNR_PERCENTAGE or self.type == self.SNR_BAR:
value = self.getValue(self.SNR) * 100 / 65536
elif self.type == self.AGC_PERCENTAGE or self.type == self.AGC_BAR:
value = self.getValue(self.AGC) * 100 / 65536
@@ -55,8 +58,13 @@ class TunerInfo(GUIComponent):
value = self.getValue(self.BER)
elif self.type == self.LOCK_STATE:
value = self.getValue(self.LOCK)
-
- if self.type == self.SNR_PERCENTAGE or self.type == self.AGC_PERCENTAGE:
+
+ if self.type == self.SNR_DB:
+ if value != 0x12345678:
+ self.setText("%3.02f dB" % (value / 100.0))
+ else:
+ self.setText("")
+ elif self.type == self.SNR_PERCENTAGE or self.type == self.AGC_PERCENTAGE:
self.setText("%d%%" % (value))
elif self.type == self.BER_VALUE:
self.setText("%d" % (value))
@@ -72,7 +80,9 @@ class TunerInfo(GUIComponent):
def getValue(self, what):
if self.statusDict:
- if what == self.SNR:
+ if what == self.SNR_DB:
+ return self.statusDict.get("tuner_signal_quality_db", 0x12345678)
+ elif what == self.SNR:
return self.statusDict.get("tuner_signal_quality", 0)
elif what == self.AGC:
return self.statusDict.get("tuner_signal_power", 0)
@@ -85,7 +95,9 @@ class TunerInfo(GUIComponent):
if service is not None:
feinfo = service.frontendInfo()
if feinfo is not None:
- if what == self.SNR:
+ if what == self.SNR_DB:
+ return feinfo.getFrontendInfo(iFrontendInformation.signalQualitydB)
+ elif what == self.SNR:
return feinfo.getFrontendInfo(iFrontendInformation.signalQuality)
elif what == self.AGC:
return feinfo.getFrontendInfo(iFrontendInformation.signalPower)
@@ -96,7 +108,9 @@ class TunerInfo(GUIComponent):
elif self.frontendfkt:
frontend = self.frontendfkt()
if frontend:
- if what == self.SNR:
+ if what == self.SNR_DB:
+ return frontend.readFrontendData(iFrontendInformation.signalQualitydB)
+ elif what == self.SNR:
return frontend.readFrontendData(iFrontendInformation.signalQuality)
elif what == self.AGC:
return frontend.readFrontendData(iFrontendInformation.signalPower)
diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
index d67a97cb..928d72a6 100644
--- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
+++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
@@ -26,22 +26,20 @@ class PositionerSetup(Screen):
<widget name="green" position="140,155" size="140,80" backgroundColor="green" halign="center" valign="center" font="Regular;21" />
<widget name="yellow" position="280,155" size="140,80" backgroundColor="yellow" halign="center" valign="center" font="Regular;21" />
<widget name="blue" position="420,155" size="140,80" backgroundColor="blue" halign="center" valign="center" font="Regular;21" />
-
- <widget name="snr" text="SNR:" position="0,245" size="60,22" font="Regular;21" />
- <widget name="agc" text="AGC:" position="0,270" size="60,22" font="Regular;21" />
- <widget name="ber" text="BER:" position="0,295" size="60,22" font="Regular;21" />
- <widget name="lock" text="Lock:" position="0,320" size="60,22" font="Regular;21" />
- <widget name="snr_percentage" position="220,245" size="60,22" font="Regular;21" />
- <widget name="agc_percentage" position="220,270" size="60,22" font="Regular;21" />
+
+ <widget name="snr_db" position="60,245" size="150,22" halign="center" valign="center" font="Regular;21" />
+ <eLabel text="SNR:" position="0,270" size="60,22" font="Regular;21" />
+ <eLabel text="BER:" position="0,295" size="60,22" font="Regular;21" />
+ <eLabel text="Lock:" position="0,320" size="60,22" font="Regular;21" />
+ <widget name="snr_percentage" position="220,270" size="60,22" font="Regular;21" />
<widget name="ber_value" position="220,295" size="60,22" font="Regular;21" />
<widget name="lock_state" position="60,320" size="150,22" font="Regular;21" />
- <widget name="snr_bar" position="60,245" size="150,22" />
- <widget name="agc_bar" position="60,270" size="150,22" />
+ <widget name="snr_bar" position="60,270" size="150,22" />
<widget name="ber_bar" position="60,295" size="150,22" />
- <widget name="frequency" text="Frequency:" position="300,245" size="120,22" font="Regular;21" />
- <widget name="symbolrate" text="Symbolrate:" position="300,270" size="120,22" font="Regular;21" />
- <widget name="fec" text="FEC:" position="300,295" size="120,22" font="Regular;21" />
+ <eLabel text="Frequency:" position="300,245" size="120,22" font="Regular;21" />
+ <eLabel text="Symbolrate:" position="300,270" size="120,22" font="Regular;21" />
+ <eLabel text="FEC:" position="300,295" size="120,22" font="Regular;21" />
<widget name="frequency_value" position="420,245" size="120,22" font="Regular;21" />
<widget name="symbolrate_value" position="420,270" size="120,22" font="Regular;21" />
<widget name="fec_value" position="420,295" size="120,22" font="Regular;21" />
@@ -81,27 +79,18 @@ class PositionerSetup(Screen):
self["yellow"] = self.yellow
self.blue = Label("")
self["blue"] = self.blue
-
+
self.list = []
self["list"] = ConfigList(self.list)
self.createSetup()
-
- self["snr"] = Label()
- self["agc"] = Label()
- self["ber"] = Label()
- self["lock"] = Label()
+
+ self["snr_db"] = TunerInfo(TunerInfo.SNR_DB, statusDict = self.frontendStatus)
self["snr_percentage"] = TunerInfo(TunerInfo.SNR_PERCENTAGE, statusDict = self.frontendStatus)
- self["agc_percentage"] = TunerInfo(TunerInfo.AGC_PERCENTAGE, statusDict = self.frontendStatus)
self["ber_value"] = TunerInfo(TunerInfo.BER_VALUE, statusDict = self.frontendStatus)
self["snr_bar"] = TunerInfo(TunerInfo.SNR_BAR, statusDict = self.frontendStatus)
- self["agc_bar"] = TunerInfo(TunerInfo.AGC_BAR, statusDict = self.frontendStatus)
self["ber_bar"] = TunerInfo(TunerInfo.BER_BAR, statusDict = self.frontendStatus)
self["lock_state"] = TunerInfo(TunerInfo.LOCK_STATE, statusDict = self.frontendStatus)
- self["frequency"] = Label()
- self["symbolrate"] = Label()
- self["fec"] = Label()
-
self["frequency_value"] = Label("")
self["symbolrate_value"] = Label("")
self["fec_value"] = Label("")
@@ -329,11 +318,10 @@ class PositionerSetup(Screen):
def updateStatus(self):
if self.frontend:
self.frontend.getFrontendStatus(self.frontendStatus)
+ self["snr_db"].update()
self["snr_percentage"].update()
- self["agc_percentage"].update()
self["ber_value"].update()
self["snr_bar"].update()
- self["agc_bar"].update()
self["ber_bar"].update()
self["lock_state"].update()
transponderdata = self.tuner.getTransponderData()
diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
index 74568855..064ac673 100644
--- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
+++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
@@ -39,46 +39,6 @@ class Tuner:
self.frontend.tune(self.lastparm)
class Satfinder(ScanSetup):
- skin = """
- <screen position="90,100" size="520,400" title="Tune">
- <widget name="config" position="20,10" size="460,210" scrollbarMode="showOnDemand" />
- <widget name="introduction" position="20,360" zPosition="-10" size="350,30" font="Regular;23" />
- <eLabel text="dB:" position="23,230" size="60,22" font="Regular;21" />
- <eLabel text="SNR:" position="23,255" size="60,22" font="Regular;21" />
- <eLabel text="AGC:" position="23,280" size="60,22" font="Regular;21" />
- <eLabel text="BER:" position="23,305" size="60,22" font="Regular;21" />
- <eLabel text="Lock:" position="23,330" size="60,22" font="Regular;21" />
- <widget source="Frontend" render="Label" position="295,230" size="60,22" font="Regular;21" >
- <convert type="FrontendInfo">SNRdB</convert>
- </widget>
- <widget source="Frontend" render="Label" position="295,255" size="60,22" font="Regular;21" >
- <convert type="FrontendInfo">SNR</convert>
- </widget>
- <widget source="Frontend" render="Label" position="295,280" size="60,22" font="Regular;21" >
- <convert type="FrontendInfo">AGC</convert>
- </widget>
- <widget source="Frontend" render="Label" position="295,305" size="60,22" font="Regular;21" >
- <convert type="FrontendInfo">BER</convert>
- </widget>
- <widget source="Frontend" render="Progress" position="85,257" size="200,22" >
- <convert type="FrontendInfo">SNR</convert>
- </widget>
- <widget source="Frontend" render="Progress" position="85,282" size="200,22" >
- <convert type="FrontendInfo">AGC</convert>
- </widget>
- <widget source="Frontend" render="Progress" position="85,307" size="200,22" >
- <convert type="FrontendInfo">BER</convert>
- </widget>
- <widget source="Frontend" render="Pixmap" pixmap="skin_default/buttons/key_green.png" position="295,330" zPosition="4" size="28,20" alphatest="on" >
- <convert type="FrontendInfo">LOCK</convert>
- <convert type="ConditionalShowHide" />
- </widget>
- <widget source="Frontend" render="Pixmap" pixmap="skin_default/buttons/key_red.png" position="295,330" zPosition="4" size="28,20" alphatest="on" >
- <convert type="FrontendInfo">LOCK</convert>
- <convert type="ConditionalShowHide">Invert</convert>
- </widget>
- </screen>"""
-
def openFrontend(self):
res_mgr = eDVBResourceManager.getInstance()
if res_mgr: