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;
15 class eDVBCISlot: public iObject, public Object
17 DECLARE_REF(eDVBCISlot);
22 eSocketNotifier *notifier;
25 enum {stateRemoved, stateInserted};
26 uint8_t prev_sent_capmt_version;
30 eDVBCISlot(eMainloop *context, int nr);
33 int send(const unsigned char *data, size_t len);
35 eDVBCIApplicationManagerSession *application_manager;
36 eDVBCICAManagerSession *ca_manager;
37 eDVBCIMMISession *mmi_session;
44 int answerText(int answer);
45 int answerEnq(char *value);
48 int sendCAPMT(eDVBServicePMTHandler *ptr, const std::vector<uint16_t> &caids=std::vector<uint16_t>());
49 uint8_t getPrevSentCAPMTVersion() const { return prev_sent_capmt_version; }
50 void resetPrevSentCAPMTVersion() { prev_sent_capmt_version = 0xFF; }
52 int enableTS(int enable);
58 eDVBServicePMTHandler *pmthandler;
61 :pmthandler(NULL), cislot(NULL)
63 CIPmtHandler( const CIPmtHandler &x )
64 :pmthandler(x.pmthandler), cislot(x.cislot)
66 CIPmtHandler( eDVBServicePMTHandler *ptr )
67 :pmthandler(ptr), cislot(NULL)
69 bool operator==(const CIPmtHandler &x) const { return x.pmthandler == pmthandler; }
72 typedef std::list<CIPmtHandler> PMTHandlerList;
74 class eDVBCIInterfaces
76 DECLARE_REF(eDVBCIInterfaces);
77 static eDVBCIInterfaces *instance;
79 eSmartPtrList<eDVBCISlot> m_slots;
80 eDVBCISlot *getSlot(int slotid);
82 PMTHandlerList m_pmt_handlers;
87 void addPMTHandler(eDVBServicePMTHandler *pmthandler);
88 void removePMTHandler(eDVBServicePMTHandler *pmthandler);
89 void gotPMT(eDVBServicePMTHandler *pmthandler);
91 static eDVBCIInterfaces *getInstance();
94 int initialize(int slot);
95 int startMMI(int slot);
96 int stopMMI(int slot);
97 int answerText(int slot, int answer);
98 int answerEnq(int slot, char *value);
99 int cancelEnq(int slot);
100 int getMMIState(int slot);
101 int enableTS(int slot, int enable);