implement readFrontendData method to get a python dictionary containing data
[enigma2.git] / lib / service / servicedvb.cpp
index 4f392a6a576b06f9e6a7dde060fe0c5663527379..0fdeb743213ac957576dc0db29548c0bf91097a5 100644 (file)
@@ -837,12 +837,18 @@ RESULT eDVBServicePlay::seekRelative(int direction, pts_t to)
        if ((m_timeshift_enabled ? m_service_handler_timeshift : m_service_handler).getPVRChannel(pvr_channel))
                return -1;
        
+       int mode = 1;
+       
+                       /* HACK until we have skip-AP api */
+       if ((to > 0) && (to < 100))
+               mode = 2;
+       
        to *= direction;
        
        if (!m_cue)
                return 0;
        
-       m_cue->seekTo(1, to);
+       m_cue->seekTo(mode, to);
        return 0;
 }
 
@@ -1146,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;