X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fdvb_ci%2Fdvbci.h;h=de84e181cabbb24cd485fb257d45b172054f63ba;hb=27b36b78b0e7018a1e40b8943ebc2b1d021bfaa0;hp=2f528d2de452b427aa0bb1ead682bd324bbb13e2;hpb=54c4c8458e71ef9630420e0dead6897165255c5b;p=vuplus_dvbapp diff --git a/lib/dvb_ci/dvbci.h b/lib/dvb_ci/dvbci.h index 2f528d2..de84e18 100644 --- a/lib/dvb_ci/dvbci.h +++ b/lib/dvb_ci/dvbci.h @@ -1,8 +1,11 @@ #ifndef __dvbci_dvbci_h #define __dvbci_dvbci_h -#include +#ifndef SWIG +#include +#include +#include #include #include @@ -12,6 +15,7 @@ class eDVBCICAManagerSession; class eDVBCIMMISession; class eDVBServicePMTHandler; class eDVBCISlot; +class eDVBCIInterfaces; struct queueData { @@ -34,28 +38,36 @@ 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 { -DECLARE_REF(eDVBCISlot); -private: + friend class eDVBCIInterfaces; + DECLARE_REF(eDVBCISlot); int slotid; int fd; - void data(int); - eSocketNotifier *notifier; - + ePtr notifier; int state; std::map running_services; eDVBCIApplicationManagerSession *application_manager; eDVBCICAManagerSession *ca_manager; eDVBCIMMISession *mmi_session; std::priority_queue sendqueue; -public: - enum {stateRemoved, stateInserted, stateInvalid, stateResetted}; + 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); ~eDVBCISlot(); @@ -82,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 @@ -102,15 +115,18 @@ struct CIPmtHandler typedef std::list PMTHandlerList; +#endif // SWIG + class eDVBCIInterfaces { -DECLARE_REF(eDVBCIInterfaces); + DECLARE_REF(eDVBCIInterfaces); static eDVBCIInterfaces *instance; -private: eSmartPtrList m_slots; eDVBCISlot *getSlot(int slotid); PMTHandlerList m_pmt_handlers; +#ifndef SWIG public: +#endif eDVBCIInterfaces(); ~eDVBCIInterfaces(); @@ -121,8 +137,6 @@ public: void ciRemoved(eDVBCISlot *slot); int getSlotState(int slot); - static eDVBCIInterfaces *getInstance(); - int reset(int slot); int initialize(int slot); int startMMI(int slot); @@ -133,6 +147,15 @@ 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 + static eDVBCIInterfaces *getInstance(); + int getNumOfSlots() { return m_slots.size(); } + PyObject *getDescrambleRules(int slotid); + RESULT setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject) ); + PyObject *readCICaIds(int slotid); }; #endif