From b9bda8a0d43be892f2e5d96ea45ba8d4b2fdae20 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Mon, 15 Jan 2007 15:51:19 +0000 Subject: change iFrontendInformation api getFrontendData(bool) is now splitted in three seperate calls getFrontendData() returns the frontend number and frontend type in a dict getFrontendStatus() return signal quality, signal power, bit error rate, lock state, sync state, frontend state in a dict getTransponderData(bool) when the bool is true it returns a dict with the original tuned transponder data, when false the transponderdata read out from the frontend driver getAll(bool) is a sum of the three single calls and the direct replacement of the old getFrontendData call --- lib/service/iservice.h | 5 +++- lib/service/servicedvb.cpp | 72 ++++++++++++++++++++++++++++++++++++++++------ lib/service/servicedvb.h | 5 +++- 3 files changed, 71 insertions(+), 11 deletions(-) (limited to 'lib/service') diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 015ef879..feaa771e 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -367,7 +367,10 @@ class iFrontendInformation: public iFrontendInformation_ENUMS, public iObject #endif public: virtual int getFrontendInfo(int w)=0; - virtual PyObject *getFrontendData(bool original=false)=0; + virtual PyObject *getFrontendData()=0; + virtual PyObject *getFrontendStatus()=0; + virtual PyObject *getTransponderData(bool original)=0; + virtual PyObject *getAll(bool original)=0; // a sum of getFrontendData/Status/TransponderData }; SWIG_TEMPLATE_TYPEDEF(ePtr, iFrontendInformationPtr); diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 238f838f..9d9f2d1f 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -1770,19 +1770,54 @@ int eDVBServiceBase::getFrontendInfo(int w) return fe->readFrontendData(w); } -PyObject *eDVBServiceBase::getFrontendData(bool original) +PyObject *eDVBServiceBase::getFrontendData() { - ePyObject ret; + ePyObject ret = PyDict_New(); + if (ret) + { + eUsePtr channel; + if(!m_service_handler.getChannel(channel)) + { + ePtr fe; + if(!channel->getFrontend(fe)) + fe->getFrontendData(ret); + } + } + else + Py_RETURN_NONE; + return ret; +} - eUsePtr channel; - if(!m_service_handler.getChannel(channel)) +PyObject *eDVBServiceBase::getFrontendStatus() +{ + ePyObject ret = PyDict_New(); + if (ret) + { + eUsePtr channel; + if(!m_service_handler.getChannel(channel)) + { + ePtr fe; + if(!channel->getFrontend(fe)) + fe->getFrontendStatus(ret); + } + } + else + Py_RETURN_NONE; + return ret; +} + +PyObject *eDVBServiceBase::getTransponderData(bool original) +{ + ePyObject ret = PyDict_New(); + if (ret) { - ePtr fe; - if(!channel->getFrontend(fe)) + eUsePtr channel; + if(!m_service_handler.getChannel(channel)) { - ret = fe->readTransponderData(original); - if (ret) + ePtr fe; + if(!channel->getFrontend(fe)) { + fe->getTransponderData(ret, original); ePtr feparm; channel->getCurrentFrontendParameters(feparm); if (feparm) @@ -1808,11 +1843,30 @@ PyObject *eDVBServiceBase::getFrontendData(bool original) } } } - if (!ret) + else Py_RETURN_NONE; return ret; } +PyObject *eDVBServiceBase::getAll(bool original) +{ + ePyObject ret = getTransponderData(original); + if (ret != Py_None) + { + eUsePtr channel; + if(!m_service_handler.getChannel(channel)) + { + ePtr fe; + if(!channel->getFrontend(fe)) + { + fe->getFrontendData(ret); + fe->getFrontendStatus(ret); + } + } + } + return ret; +} + int eDVBServicePlay::getNumberOfSubservices() { ePtr evt; diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h index c765e0e3..34ed9720 100644 --- a/lib/service/servicedvb.h +++ b/lib/service/servicedvb.h @@ -75,7 +75,10 @@ protected: public: // iFrontendInformation int getFrontendInfo(int w); - PyObject *getFrontendData(bool); + PyObject *getFrontendData(); + PyObject *getFrontendStatus(); + PyObject *getTransponderData(bool); + PyObject *getAll(bool original); // a sum of getFrontendData/Status/TransponderData }; class eSubtitleWidget; -- cgit v1.2.3