1 #ifndef __dvbci_dvbci_h
2 #define __dvbci_dvbci_h
4 #include <lib/base/ebase.h>
9 class eDVBCIApplicationManagerSession;
10 class eDVBCICAManagerSession;
11 class eDVBCIMMISession;
12 class eDVBServicePMTHandler;
14 class eDVBCISlot: public iObject, public Object
16 DECLARE_REF(eDVBCISlot);
21 eSocketNotifier *notifier;
24 enum {stateRemoved, stateInserted};
25 uint8_t prev_sent_capmt_version;
27 eDVBCISlot(eMainloop *context, int nr);
30 int send(const unsigned char *data, size_t len);
32 eDVBCIApplicationManagerSession *application_manager;
33 eDVBCICAManagerSession *ca_manager;
34 eDVBCIMMISession *mmi_session;
41 int answerText(int answer);
42 int answerEnq(int answer, char *value);
44 int sendCAPMT(eDVBServicePMTHandler *ptr, const std::vector<uint16_t> &caids=std::vector<uint16_t>());
45 uint8_t getPrevSentCAPMTVersion() const { return prev_sent_capmt_version; }
46 void resetPrevSentCAPMTVersion() { prev_sent_capmt_version = 0xFF; }
51 eDVBServicePMTHandler *pmthandler;
54 :pmthandler(NULL), usedby(NULL)
56 CIPmtHandler( const CIPmtHandler &x )
57 :pmthandler(x.pmthandler), usedby(x.usedby)
59 CIPmtHandler( eDVBServicePMTHandler *ptr )
60 :pmthandler(ptr), usedby(NULL)
62 bool operator<(const CIPmtHandler &x) const { return x.pmthandler < pmthandler; }
65 typedef std::set<CIPmtHandler> PMTHandlerSet;
67 class eDVBCIInterfaces
69 DECLARE_REF(eDVBCIInterfaces);
70 static eDVBCIInterfaces *instance;
72 eSmartPtrList<eDVBCISlot> m_slots;
73 eDVBCISlot *getSlot(int slotid);
75 PMTHandlerSet m_pmt_handlers;
80 void addPMTHandler(eDVBServicePMTHandler *pmthandler);
81 void removePMTHandler(eDVBServicePMTHandler *pmthandler);
82 void gotPMT(eDVBServicePMTHandler *pmthandler);
84 static eDVBCIInterfaces *getInstance();
87 int initialize(int slot);
88 int startMMI(int slot);
89 int stopMMI(int slot);
90 int answerText(int slot, int answer);
91 int answerEnq(int slot, int answer, char *value);
92 int getMMIState(int slot);