implement readFrontendData method to get a python dictionary containing data
[enigma2.git] / lib / service / servicedvb.cpp
index 8ff07250d611618d97190f8b95e03b1026c52886..0fdeb743213ac957576dc0db29548c0bf91097a5 100644 (file)
@@ -1152,6 +1152,51 @@ int eDVBServicePlay::getFrontendInfo(int w)
        return fe->readFrontendData(w);
 }
 
+PyObject *eDVBServicePlay::getFrontendData(bool original)
+{
+       PyObject *ret=0;
+
+       eUsePtr<iDVBChannel> channel;
+       if(!m_service_handler.getChannel(channel))
+       {
+               ePtr<iDVBFrontend> fe;
+               if(!channel->getFrontend(fe))
+               {
+                       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;
+               Py_INCREF(ret);
+       }
+       return ret;
+}
+
 int eDVBServicePlay::getNumberOfSubservices()
 {
        ePtr<eServiceEvent> evt;