openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
dvbci_session.h
Go to the documentation of this file.
1 #ifndef __dvbci_dvbci_tc_h
2 #define __dvbci_dvbci_tc_h
3 
4 #include <lib/base/ebase.h>
5 #include <lib/base/object.h>
6 #include <lib/dvb_ci/dvbci.h>
7 
8 #define SLMS 256
9 
11 {
12  DECLARE_REF(eDVBCISession);
13  static ePtr<eDVBCISession> sessions[SLMS];
14  static void createSession(eDVBCISlot *slot, const unsigned char *resource_identifier, unsigned char &status, ePtr<eDVBCISession> &ptr);
15  static void sendSPDU(eDVBCISlot *slot, unsigned char tag,const void *data, int len, unsigned short session_nb, const void *apdu=0,int alen=0);
16  static void sendOpenSessionResponse(eDVBCISlot *slot,unsigned char session_status, const unsigned char *resource_identifier,unsigned short session_nb);
17  void recvCreateSessionResponse(const unsigned char *data);
18  void recvCloseSessionRequest(const unsigned char *data);
19 protected:
20  int state;
21  int status;
22  int action;
23  eDVBCISlot *slot; //base only
24  unsigned short session_nb;
25  virtual int receivedAPDU(const unsigned char *tag, const void *data, int len) = 0;
26  void sendAPDU(const unsigned char *tag, const void *data=0,int len=0);
27  void sendSPDU(unsigned char tag, const void *data, int len,const void *apdu=0, int alen=0);
28  virtual int doAction()=0;
29  void handleClose();
30 public:
31  virtual ~eDVBCISession();
32 
33  static void deleteSessions(const eDVBCISlot *slot);
34 
35  int poll() { if (action) { action=doAction(); return 1; } return 0; }
37 
38  static int parseLengthField(const unsigned char *pkt, int &len);
39  static int buildLengthField(unsigned char *pkt, int len);
40 
41  static void receiveData(eDVBCISlot *slot, const unsigned char *ptr, size_t len);
42 
43  int getState() { return state; }
44  int getStatus() { return status; }
45 
46  static int pollAll();
47 
48 };
49 
50 #endif
static int ptr
Definition: bcm.cpp:17
Definition: dvbci_session.h:11
static int parseLengthField(const unsigned char *pkt, int &len)
Definition: dvbci_session.cpp:39
static int pollAll()
Definition: dvbci_session.cpp:201
virtual int doAction()=0
static void receiveData(eDVBCISlot *slot, const unsigned char *ptr, size_t len)
Definition: dvbci_session.cpp:222
virtual ~eDVBCISession()
Definition: dvbci_session.cpp:328
int status
Definition: dvbci_session.h:21
int poll()
Definition: dvbci_session.h:35
int action
Definition: dvbci_session.h:22
void sendAPDU(const unsigned char *tag, const void *data=0, int len=0)
Definition: dvbci_session.cpp:55
int state
Definition: dvbci_session.h:20
static int buildLengthField(unsigned char *pkt, int len)
Definition: dvbci_session.cpp:15
@ stateBusy
Definition: dvbci_session.h:36
@ stateInCreation
Definition: dvbci_session.h:36
@ stateInDeletion
Definition: dvbci_session.h:36
@ stateStarted
Definition: dvbci_session.h:36
@ statePrivate
Definition: dvbci_session.h:36
unsigned short session_nb
Definition: dvbci_session.h:24
void handleClose()
Definition: dvbci_session.cpp:195
eDVBCISlot * slot
Definition: dvbci_session.h:23
int getStatus()
Definition: dvbci_session.h:44
virtual int receivedAPDU(const unsigned char *tag, const void *data, int len)=0
int getState()
Definition: dvbci_session.h:43
static void deleteSessions(const eDVBCISlot *slot)
Definition: dvbci_session.cpp:114
Definition: dvbci.h:81
#define SLMS
Definition: dvbci_session.h:8
unsigned char data[256]
Definition: hdmi_cec.h:2