X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/edddbb8134523b087f6585868b281e88732d3bc7..7af17e298fb338d477f2d93ab230e395c656ea9f:/lib/dvb_ci/dvbci_session.h diff --git a/lib/dvb_ci/dvbci_session.h b/lib/dvb_ci/dvbci_session.h index 1705d765..89a58f3b 100644 --- a/lib/dvb_ci/dvbci_session.h +++ b/lib/dvb_ci/dvbci_session.h @@ -2,15 +2,17 @@ #define __dvbci_dvbci_tc_h #include +#include #include #define SLMS 256 class eDVBCISession { - static eDVBCISession *sessions[SLMS]; - static eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned char *resource_identifier, unsigned char &status); - static void eDVBCISession::sendSPDU(eDVBCISlot *slot, unsigned char tag,const void *data, int len, unsigned short session_nb, const void *apdu=0,int alen=0); + DECLARE_REF(eDVBCISession); + static ePtr sessions[SLMS]; + static void createSession(eDVBCISlot *slot, const unsigned char *resource_identifier, unsigned char &status, ePtr &ptr); + static void sendSPDU(eDVBCISlot *slot, unsigned char tag,const void *data, int len, unsigned short session_nb, const void *apdu=0,int alen=0); static void sendOpenSessionResponse(eDVBCISlot *slot,unsigned char session_status, const unsigned char *resource_identifier,unsigned short session_nb); void recvCreateSessionResponse(const unsigned char *data); void recvCloseSessionRequest(const unsigned char *data); @@ -21,13 +23,14 @@ protected: eDVBCISlot *slot; //base only unsigned short session_nb; virtual int receivedAPDU(const unsigned char *tag, const void *data, int len) = 0; - void eDVBCISession::sendAPDU(const unsigned char *tag, const void *data=0,int len=0); - void eDVBCISession::sendSPDU(unsigned char tag, const void *data, int len,const void *apdu=0, int alen=0); + void sendAPDU(const unsigned char *tag, const void *data=0,int len=0); + void sendSPDU(unsigned char tag, const void *data, int len,const void *apdu=0, int alen=0); virtual int doAction()=0; void handleClose(); public: virtual ~eDVBCISession(); + static void deleteSessions(const eDVBCISlot *slot); int poll() { if (action) { action=doAction(); return 1; } return 0; } enum { stateInCreation, stateBusy, stateInDeletion, stateStarted, statePrivate};