X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/75db34c299094d2ae87941ed464e8efa79848e16..2e874fa14264bf37f17ae9b9375e26059e7f35ec:/lib/dvb_ci/dvbci.cpp diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp index 1be4232e..63df2650 100644 --- a/lib/dvb_ci/dvbci.cpp +++ b/lib/dvb_ci/dvbci.cpp @@ -66,6 +66,16 @@ eDVBCISlot *eDVBCIInterfaces::getSlot(int slotid) return 0; } +int eDVBCIInterfaces::getSlotState(int slotid) +{ + eDVBCISlot *slot; + + if( (slot = getSlot(slotid)) == 0 ) + return eDVBCISlot::stateInvalid; + + return slot->getState(); +} + int eDVBCIInterfaces::reset(int slotid) { eDVBCISlot *slot; @@ -359,7 +369,7 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler) if (slot && !sameServiceExist) { - if (slot->getNumOfServices() > 1) // fixme make it dependend of "ci can handle more than one service" + if (slot->getNumOfServices() > 1) { eDebug("[eDVBCIInterfaces] remove last pmt handler for service %s send empty capmt", service_to_remove.toString().c_str()); @@ -423,8 +433,6 @@ int eDVBCISlot::send(const unsigned char *data, size_t len) void eDVBCISlot::data(int what) { - if (state == stateInvalid) - return; if(what == eSocketNotifier::Priority) { if(state != stateRemoved) { state = stateRemoved; @@ -437,17 +445,18 @@ void eDVBCISlot::data(int what) eDVBCIInterfaces::getInstance()->ciRemoved(this); eDVBCISession::deleteSessions(this); notifier->setRequested(eSocketNotifier::Read); - //HACK - eDVBCI_UI::getInstance()->setState(0,0); + eDVBCI_UI::getInstance()->setState(getSlotID(),0); } return; } + if (state == stateInvalid) + return; + if(state != stateInserted) { eDebug("ci inserted"); state = stateInserted; -// HACK - eDVBCI_UI::getInstance()->setState(0,1); + eDVBCI_UI::getInstance()->setState(getSlotID(),1); notifier->setRequested(eSocketNotifier::Read|eSocketNotifier::Priority); /* enable PRI to detect removal or errors */ }