X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/df31302ca30e09aa7d2183fcf6f61147bd1addf7..6fdb2d2094c50a2bc324f4094473c2107d2ea943:/lib/dvb_ci/dvbci.h diff --git a/lib/dvb_ci/dvbci.h b/lib/dvb_ci/dvbci.h index 603fadfd..de84e181 100644 --- a/lib/dvb_ci/dvbci.h +++ b/lib/dvb_ci/dvbci.h @@ -38,28 +38,34 @@ enum data_source TUNER_A, TUNER_B, TUNER_C, TUNER_D, CI_A, CI_B, CI_C, CI_D }; +typedef std::pair providerPair; +typedef std::set providerSet; +typedef std::set caidSet; +typedef std::set serviceSet; + class eDVBCISlot: public iObject, public Object { friend class eDVBCIInterfaces; -DECLARE_REF(eDVBCISlot); -private: + DECLARE_REF(eDVBCISlot); int slotid; int fd; - eSocketNotifier *notifier; + ePtr notifier; int state; std::map running_services; eDVBCIApplicationManagerSession *application_manager; eDVBCICAManagerSession *ca_manager; eDVBCIMMISession *mmi_session; std::priority_queue sendqueue; - std::set possible_caids; - std::set possible_services; - std::set possible_providers; + caidSet possible_caids; + serviceSet possible_services; + providerSet possible_providers; int use_count; eDVBCISlot *linked_next; // needed for linked CI handling data_source current_source; int current_tuner; + bool user_mapped; void data(int); + bool plugged; public: enum {stateRemoved, stateInserted, stateInvalid, stateResetted}; eDVBCISlot(eMainloop *context, int nr); @@ -88,6 +94,7 @@ public: void removeService(uint16_t program_number=0xFFFF); int getNumOfServices() { return running_services.size(); } int setSource(data_source source); + int setClockRate(int); }; struct CIPmtHandler @@ -112,9 +119,8 @@ typedef std::list PMTHandlerList; class eDVBCIInterfaces { -DECLARE_REF(eDVBCIInterfaces); + DECLARE_REF(eDVBCIInterfaces); static eDVBCIInterfaces *instance; -private: eSmartPtrList m_slots; eDVBCISlot *getSlot(int slotid); PMTHandlerList m_pmt_handlers; @@ -141,6 +147,7 @@ public: int getMMIState(int slot); int sendCAPMT(int slot); int setInputSource(int tunerno, data_source source); + int setCIClockRate(int slot, int rate); #ifdef SWIG public: #endif @@ -148,6 +155,7 @@ public: int getNumOfSlots() { return m_slots.size(); } PyObject *getDescrambleRules(int slotid); RESULT setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject) ); + PyObject *readCICaIds(int slotid); }; #endif