From af6a8a3a102ff0230fcc6d90ad213e2e7d706fa8 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Fri, 3 Mar 2006 13:59:56 +0000 Subject: 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) --- lib/service/iservice.h | 2 +- lib/service/servicedvb.cpp | 31 ++++++++++++++++++++++++++++--- lib/service/servicedvb.h | 2 +- 3 files changed, 30 insertions(+), 5 deletions(-) (limited to 'lib/service') 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, 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 fe; if(!channel->getFrontend(fe)) - ret = fe->readTransponderData(); + { + ret = fe->readTransponderData(original); + if (ret) + { + ePtr 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(); -- cgit v1.2.3