RESULT eStaticServiceDVBInformation::getName(const eServiceReference &ref, std::string &name)
{
- if ( ref.name.length() )
+ if ( !ref.name.empty() )
{
name = ref.name;
return 0;
RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
- /* do we have a PVR service? */
- if (ref.flags & eServiceReference::flagDirectory) // bouquet
+ /* is a listable service? */
+ if ((ref.flags & eServiceReference::flagDirectory) == eServiceReference::flagDirectory) // bouquet
{
- ptr = new eStaticServiceDVBBouquetInformation;
+ if ( !ref.name.empty() ) // satellites or providers list
+ ptr = new eStaticServiceDVBInformation;
+ 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. */
return pvr_channel->getCurrentPosition(demux, pos);
}
+RESULT eDVBServicePlay::frontendStatusInfo(ePtr<iFrontendStatusInformation> &ptr)
+{
+ ptr = this;
+ return 0;
+}
+
RESULT eDVBServicePlay::info(ePtr<iServiceInformation> &ptr)
{
ptr = this;
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");