if (!service_center->info(parent, service_info))
{
if (!service_info->getName(parent, name))
- {
- // just show short name
- unsigned int pos = name.find("\xc2\x86");
- if ( pos != std::string::npos )
- name.erase(0, pos+2);
- pos = name.find("\xc2\x87");
- if ( pos != std::string::npos )
- name.erase(pos);
- name+=" - ";
- }
+ name=buildShortName(name) + " - ";
}
}
}
// S = Service Reference (as python string object .. same as ref.toString())
// C = Service Reference (as python string object .. same as ref.toCompareString())
// N = Service Name (as python string object)
+// n = Short Service Name (short name brakets used) (as python string object)
// when exactly one return value per service is selected in the format string,
// then each value is directly a list entry
// when more than one value is returned per service, then the list is a list of
ePtr<iStaticServiceInformation> sptr;
eServiceCenterPtr service_center;
- if (strchr(format, 'N'))
+ if (strchr(format, 'N') || strchr(format, 'n'))
eServiceCenter::getPrivInstance(service_center);
ret = PyList_New(services);
{
std::string name;
sptr->getName(ref, name);
+
+ // filter short name brakets
+ unsigned int pos;
+ while((pos = name.find("\xc2\x86")) != std::string::npos)
+ name.erase(pos,2);
+ while((pos = name.find("\xc2\x87")) != std::string::npos)
+ name.erase(pos,2);
+
+ if (name.length())
+ tmp = PyString_FromString(name.c_str());
+ }
+ }
+ if (!tmp)
+ tmp = PyString_FromString("<n/a>");
+ break;
+ case 'n': // short service name
+ if (service_center)
+ {
+ service_center->info(ref, sptr);
+ if (sptr)
+ {
+ std::string name;
+ sptr->getName(ref, name);
+ name = buildShortName(name);
if (name.length())
tmp = PyString_FromString(name.c_str());
}
return fe->readFrontendData(w);
}
-PyObject *eDVBServiceBase::getFrontendData(bool original)
+PyObject *eDVBServiceBase::getFrontendData()
{
- ePyObject ret;
+ ePyObject ret = PyDict_New();
+ if (ret)
+ {
+ eUsePtr<iDVBChannel> channel;
+ if(!m_service_handler.getChannel(channel))
+ {
+ ePtr<iDVBFrontend> fe;
+ if(!channel->getFrontend(fe))
+ fe->getFrontendData(ret);
+ }
+ }
+ else
+ Py_RETURN_NONE;
+ return ret;
+}
- eUsePtr<iDVBChannel> channel;
- if(!m_service_handler.getChannel(channel))
+PyObject *eDVBServiceBase::getFrontendStatus()
+{
+ ePyObject ret = PyDict_New();
+ if (ret)
{
- ePtr<iDVBFrontend> fe;
- if(!channel->getFrontend(fe))
+ eUsePtr<iDVBChannel> channel;
+ if(!m_service_handler.getChannel(channel))
{
- ret = fe->readTransponderData(original);
- if (ret)
+ ePtr<iDVBFrontend> 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)
+ {
+ eUsePtr<iDVBChannel> channel;
+ if(!m_service_handler.getChannel(channel))
+ {
+ ePtr<iDVBFrontend> fe;
+ if(!channel->getFrontend(fe))
{
+ fe->getTransponderData(ret, original);
ePtr<iDVBFrontendParameters> feparm;
channel->getCurrentFrontendParameters(feparm);
if (feparm)
}
}
}
- if (!ret)
+ else
Py_RETURN_NONE;
return ret;
}
+PyObject *eDVBServiceBase::getAll(bool original)
+{
+ ePyObject ret = getTransponderData(original);
+ if (ret != Py_None)
+ {
+ eUsePtr<iDVBChannel> channel;
+ if(!m_service_handler.getChannel(channel))
+ {
+ ePtr<iDVBFrontend> fe;
+ if(!channel->getFrontend(fe))
+ {
+ fe->getFrontendData(ret);
+ fe->getFrontendStatus(ret);
+ }
+ }
+ }
+ return ret;
+}
+
int eDVBServicePlay::getNumberOfSubservices()
{
ePtr<eServiceEvent> evt;