int mask=0;
for (eSmartPtrList<eDVBRegisteredFrontend>::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i)
if (i->m_inuse)
- mask |= ( 1 << i->m_frontend->getID() );
+ mask |= ( 1 << i->m_frontend->getSlotID() );
/* emit */ frontendUseMaskChanged(mask);
}
}
}
+void eDVBResourceManager::setFrontendSlotInformations(ePyObject list)
+{
+ if (!PyList_Check(list))
+ {
+ PyErr_SetString(PyExc_StandardError, "eDVBResourceManager::setFrontendSlotInformations argument should be a python list");
+ return;
+ }
+ if (PyList_Size(list) != m_frontend.size())
+ {
+ char blasel[256];
+ sprintf(blasel, "eDVBResourceManager::setFrontendSlotInformations list size incorrect %d frontends avail, but %d entries in slotlist",
+ m_frontend.size(), PyList_Size(list));
+ PyErr_SetString(PyExc_StandardError, blasel);
+ return;
+ }
+ int pos=0;
+ for (eSmartPtrList<eDVBRegisteredFrontend>::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i)
+ {
+ ePyObject obj = PyList_GET_ITEM(list, pos++);
+ i->m_frontend->setSlotInfo(obj);
+ }
+}
+
RESULT eDVBResourceManager::allocateFrontend(ePtr<eDVBAllocatedFrontend> &fe, ePtr<iDVBFrontendParameters> &feparm)
{
ePtr<eDVBRegisteredFrontend> best;
return -1;
}
-RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr<eDVBAllocatedFrontend> &fe, int nr)
+RESULT eDVBResourceManager::allocateFrontendByIndex(ePtr<eDVBAllocatedFrontend> &fe, int slot_index)
{
- for (eSmartPtrList<eDVBRegisteredFrontend>::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i, --nr)
- if ((!nr) && !i->m_inuse)
+ for (eSmartPtrList<eDVBRegisteredFrontend>::iterator i(m_frontend.begin()); i != m_frontend.end(); ++i)
+ if (!i->m_inuse && i->m_frontend->getSlotID() == slot_index)
{
fe = new eDVBAllocatedFrontend(i);
return 0;
demux = new eDVBAllocatedDemux(i);
if (fe)
- demux->get().setSourceFrontend(fe->m_frontend->getID());
+ demux->get().setSourceFrontend(fe->m_frontend->getDVBID());
else
demux->get().setSourcePVR(0);
return 0;
m_cached_channel=0;
}
-RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index)
+RESULT eDVBResourceManager::allocateRawChannel(eUsePtr<iDVBChannel> &channel, int slot_index)
{
ePtr<eDVBAllocatedFrontend> fe;
m_releaseCachedChannelTimer.stop();
}
- if (allocateFrontendByIndex(fe, frontend_index))
+ if (allocateFrontendByIndex(fe, slot_index))
return errNoFrontend;
eDVBChannel *ch;