X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/75db34c299094d2ae87941ed464e8efa79848e16..636070f4e47caf18e752b59485758e0f4eb19492:/lib/dvb_ci/dvbci.h diff --git a/lib/dvb_ci/dvbci.h b/lib/dvb_ci/dvbci.h index 2ef70b0e..603fadfd 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 { @@ -29,25 +33,35 @@ struct queueData } }; +enum data_source +{ + TUNER_A, TUNER_B, TUNER_C, TUNER_D, CI_A, CI_B, CI_C, CI_D +}; + class eDVBCISlot: public iObject, public Object { + friend class eDVBCIInterfaces; DECLARE_REF(eDVBCISlot); private: int slotid; int fd; - void data(int); eSocketNotifier *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; + int use_count; + eDVBCISlot *linked_next; // needed for linked CI handling + data_source current_source; + int current_tuner; + void data(int); public: enum {stateRemoved, stateInserted, stateInvalid, stateResetted}; - int use_count; - eDVBCISlot(eMainloop *context, int nr); ~eDVBCISlot(); @@ -73,9 +87,7 @@ public: int sendCAPMT(eDVBServicePMTHandler *ptr, const std::vector &caids=std::vector()); void removeService(uint16_t program_number=0xFFFF); int getNumOfServices() { return running_services.size(); } - - int enableTS(int enable, int tuner=0); - + int setSource(data_source source); }; struct CIPmtHandler @@ -96,6 +108,8 @@ struct CIPmtHandler typedef std::list PMTHandlerList; +#endif // SWIG + class eDVBCIInterfaces { DECLARE_REF(eDVBCIInterfaces); @@ -103,9 +117,10 @@ DECLARE_REF(eDVBCIInterfaces); private: eSmartPtrList m_slots; eDVBCISlot *getSlot(int slotid); - PMTHandlerList m_pmt_handlers; +#ifndef SWIG public: +#endif eDVBCIInterfaces(); ~eDVBCIInterfaces(); @@ -114,9 +129,8 @@ public: void recheckPMTHandlers(); void gotPMT(eDVBServicePMTHandler *pmthandler); void ciRemoved(eDVBCISlot *slot); + int getSlotState(int slot); - static eDVBCIInterfaces *getInstance(); - int reset(int slot); int initialize(int slot); int startMMI(int slot); @@ -125,8 +139,15 @@ public: int answerEnq(int slot, char *value); int cancelEnq(int slot); int getMMIState(int slot); - int enableTS(int slot, int enable); int sendCAPMT(int slot); + int setInputSource(int tunerno, data_source source); +#ifdef SWIG +public: +#endif + static eDVBCIInterfaces *getInstance(); + int getNumOfSlots() { return m_slots.size(); } + PyObject *getDescrambleRules(int slotid); + RESULT setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject) ); }; #endif