aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-03 13:59:56 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-03 13:59:56 +0000
commitaf6a8a3a102ff0230fcc6d90ad213e2e7d706fa8 (patch)
tree1c2d6a115cacfe99292fb8599a03e2c9a20f0a4f /lib/service
parent88a6749020acfb921ae70f714e995af74e72c47c (diff)
downloadenigma2-af6a8a3a102ff0230fcc6d90ad213e2e7d706fa8.tar.gz
enigma2-af6a8a3a102ff0230fcc6d90ad213e2e7d706fa8.zip
implement readFrontendData method to get a python dictionary containing data
about current used transponder/frontend (frontend state, frontend type, lock state, sync state, frequency, symbolrate, fec_innter...) when it is called with True as param it returns the original transponder data (written to tuner) otherwise it reads the current data out of the frontend (corrected tuner data)
Diffstat (limited to 'lib/service')
-rw-r--r--lib/service/iservice.h2
-rw-r--r--lib/service/servicedvb.cpp31
-rw-r--r--lib/service/servicedvb.h2
3 files changed, 30 insertions, 5 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h
index f3183187..354f90a2 100644
--- a/lib/service/iservice.h
+++ b/lib/service/iservice.h
@@ -276,7 +276,7 @@ public:
SyncState
};
virtual int getFrontendInfo(int w)=0;
- virtual PyObject *getFrontendTransponderData()=0;
+ virtual PyObject *getFrontendData(bool original=false)=0;
};
TEMPLATE_TYPEDEF(ePtr<iFrontendStatusInformation>, iFrontendStatusInformationPtr);
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index c3bd1e69..0fdeb743 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1152,7 +1152,7 @@ int eDVBServicePlay::getFrontendInfo(int w)
return fe->readFrontendData(w);
}
-PyObject *eDVBServicePlay::getFrontendTransponderData()
+PyObject *eDVBServicePlay::getFrontendData(bool original)
{
PyObject *ret=0;
@@ -1161,9 +1161,34 @@ PyObject *eDVBServicePlay::getFrontendTransponderData()
{
ePtr<iDVBFrontend> fe;
if(!channel->getFrontend(fe))
- ret = fe->readTransponderData();
+ {
+ ret = fe->readTransponderData(original);
+ if (ret)
+ {
+ ePtr<iDVBFrontendParameters> feparm;
+ channel->getCurrentFrontendParameters(feparm);
+ if (feparm)
+ {
+ eDVBFrontendParametersSatellite osat;
+ if (!feparm->getDVBS(osat))
+ {
+ void PutToDict(PyObject *dict, const char*key, long value);
+ PutToDict(ret, "orbital_position", osat.orbital_position);
+ const char *tmp = "unknown";
+ switch(osat.polarisation)
+ {
+ case eDVBFrontendParametersSatellite::Polarisation::Horizontal: tmp="horizontal"; break;
+ case eDVBFrontendParametersSatellite::Polarisation::Vertical: tmp="vertical"; break;
+ case eDVBFrontendParametersSatellite::Polarisation::CircularLeft: tmp="circular_left"; break;
+ case eDVBFrontendParametersSatellite::Polarisation::CircularRight: tmp="circular_right"; break;
+ default:break;
+ }
+ PutToDict(ret, "polarization", osat.polarisation);
+ }
+ }
+ }
+ }
}
-
if (!ret)
{
ret = Py_None;
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index 437a454b..39318b22 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -105,7 +105,7 @@ public:
// iFrontendStatusInformation
int getFrontendInfo(int w);
- PyObject *getFrontendTransponderData();
+ PyObject *getFrontendData(bool);
// iSubserviceList
int getNumberOfSubservices();