X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c326dee2e7ce346cffecd196d971dd91ef1454f5..319b1d154578f02388b6a7910c5048ed3bab1343:/lib/dvb_ci/dvbci.h diff --git a/lib/dvb_ci/dvbci.h b/lib/dvb_ci/dvbci.h index 1df87eaa..e8f30ab6 100644 --- a/lib/dvb_ci/dvbci.h +++ b/lib/dvb_ci/dvbci.h @@ -10,6 +10,7 @@ class eDVBCIApplicationManagerSession; class eDVBCICAManagerSession; class eDVBCIMMISession; class eDVBServicePMTHandler; +class eDVBCISlot; class eDVBCISlot: public iObject, public Object { @@ -23,46 +24,60 @@ private: int state; enum {stateRemoved, stateInserted}; uint8_t prev_sent_capmt_version; + eDVBCIApplicationManagerSession *application_manager; + eDVBCICAManagerSession *ca_manager; + eDVBCIMMISession *mmi_session; public: + int use_count; + eDVBCISlot(eMainloop *context, int nr); ~eDVBCISlot(); int send(const unsigned char *data, size_t len); - - eDVBCIApplicationManagerSession *application_manager; - eDVBCICAManagerSession *ca_manager; - eDVBCIMMISession *mmi_session; - + + void setAppManager( eDVBCIApplicationManagerSession *session ); + void setMMIManager( eDVBCIMMISession *session ); + void setCAManager( eDVBCICAManagerSession *session ); + + eDVBCIApplicationManagerSession *getAppManager() { return application_manager; } + eDVBCIMMISession *getMMIManager() { return mmi_session; } + eDVBCICAManagerSession *getCAManager() { return ca_manager; } + int getSlotID(); int reset(); int initialize(); int startMMI(); int stopMMI(); int answerText(int answer); - int answerEnq(int answer, char *value); + int answerEnq(char *value); + int cancelEnq(); int getMMIState(); + void resendCAPMT(); int sendCAPMT(eDVBServicePMTHandler *ptr, const std::vector &caids=std::vector()); uint8_t getPrevSentCAPMTVersion() const { return prev_sent_capmt_version; } void resetPrevSentCAPMTVersion() { prev_sent_capmt_version = 0xFF; } + + int enableTS(int enable, int tuner=0); + }; struct CIPmtHandler { eDVBServicePMTHandler *pmthandler; - eDVBCISlot *usedby; + eDVBCISlot *cislot; CIPmtHandler() - :pmthandler(NULL), usedby(NULL) + :pmthandler(NULL), cislot(NULL) {} CIPmtHandler( const CIPmtHandler &x ) - :pmthandler(x.pmthandler), usedby(x.usedby) + :pmthandler(x.pmthandler), cislot(x.cislot) {} CIPmtHandler( eDVBServicePMTHandler *ptr ) - :pmthandler(ptr), usedby(NULL) + :pmthandler(ptr), cislot(NULL) {} - bool operator<(const CIPmtHandler &x) const { return x.pmthandler < pmthandler; } + bool operator==(const CIPmtHandler &x) const { return x.pmthandler == pmthandler; } }; -typedef std::set PMTHandlerSet; +typedef std::list PMTHandlerList; class eDVBCIInterfaces { @@ -72,7 +87,7 @@ private: eSmartPtrList m_slots; eDVBCISlot *getSlot(int slotid); - PMTHandlerSet m_pmt_handlers; + PMTHandlerList m_pmt_handlers; public: eDVBCIInterfaces(); ~eDVBCIInterfaces(); @@ -88,8 +103,11 @@ public: int startMMI(int slot); int stopMMI(int slot); int answerText(int slot, int answer); - int answerEnq(int slot, int answer, char *value); + int answerEnq(int slot, char *value); + int cancelEnq(int slot); int getMMIState(int slot); + int enableTS(int slot, int enable); + int sendCAPMT(int slot); }; #endif