dont try to get frontend informations when the eDVBServicePlay is a pvr service
[enigma2.git] / lib / service / servicedvb.cpp
index 143269149e1ff8eab75879ced08588ce88ea88cb..271b94f075e4a38922f812d430d15369b6eea590 100644 (file)
@@ -25,7 +25,7 @@ DEFINE_REF(eStaticServiceDVBInformation);
 
 RESULT eStaticServiceDVBInformation::getName(const eServiceReference &ref, std::string &name)
 {
-       if ( ref.name.length() )
+       if ( !ref.name.empty() )
        {
                name = ref.name;
                return 0;
@@ -358,25 +358,25 @@ RESULT eServiceFactoryDVB::list(const eServiceReference &ref, ePtr<iListableServ
 
 RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
 {
-               /* do we have a PVR service? */
+       /* is a listable service? */
        if ((ref.flags & eServiceReference::flagDirectory) == eServiceReference::flagDirectory) // bouquet
        {
-               if ( !ref.name.empty() )
+               if ( !ref.name.empty() )  // satellites or providers list
                        ptr = new eStaticServiceDVBInformation;
-               else
+               else // a dvb bouquet
                        ptr = new eStaticServiceDVBBouquetInformation;
                return 0;
        }
-       else if (!ref.path.empty())
+       else if (!ref.path.empty()) /* do we have a PVR service? */
        {
                ptr = new eStaticServiceDVBPVRInformation(ref);
                return 0;
        }
-       else
+       else // normal dvb service
        {
                ePtr<eDVBService> service;
                int r = lookupService(service, ref);
-               if (r)
+               if (r) // no eDVBService avail for this reference ( Linkage Services... )
                        ptr = new eStaticServiceDVBInformation;
                else
                        /* eDVBService has the iStaticServiceInformation interface, so we pass it here. */
@@ -681,6 +681,12 @@ RESULT eDVBServicePlay::getPlayPosition(pts_t &pos)
        return pvr_channel->getCurrentPosition(demux, pos);
 }
 
+RESULT eDVBServicePlay::frontendStatusInfo(ePtr<iFrontendStatusInformation> &ptr)
+{
+       ptr = this;
+       return 0;
+}
+
 RESULT eDVBServicePlay::info(ePtr<iServiceInformation> &ptr)
 {
        ptr = this;
@@ -811,6 +817,19 @@ int eDVBServicePlay::selectAudioStream(int i)
        return 0;
 }
 
+int eDVBServicePlay::getFrontendInfo(int w)
+{
+       if (m_is_pvr)
+               return 0;
+       eUsePtr<iDVBChannel> channel;
+       if(m_service_handler.getChannel(channel))
+               return 0;
+       ePtr<iDVBFrontend> fe;
+       if(channel->getFrontend(fe))
+               return 0;
+       return fe->readFrontendData(w);
+}
+
 DEFINE_REF(eDVBServicePlay)
 
 eAutoInitPtr<eServiceFactoryDVB> init_eServiceFactoryDVB(eAutoInitNumbers::service+1, "eServiceFactoryDVB");