From 7fcee9d52e615789975fd049a6c5d5eb5a34faa2 Mon Sep 17 00:00:00 2001 From: Ronny Strutz Date: Tue, 22 Nov 2005 22:33:54 +0000 Subject: [PATCH] send capmt to ci --- lib/dvb_ci/dvbci.cpp | 6 +++++- lib/dvb_ci/dvbci_camgr.cpp | 20 ++++++++++++++++++++ lib/dvb_ci/dvbci_camgr.h | 4 ++++ lib/dvb_ci/dvbci_session.cpp | 2 +- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/dvb_ci/dvbci.cpp b/lib/dvb_ci/dvbci.cpp index 82d3349..efd6925 100644 --- a/lib/dvb_ci/dvbci.cpp +++ b/lib/dvb_ci/dvbci.cpp @@ -404,6 +404,7 @@ int eDVBCISlot::sendCAPMT(eDVBServicePMTHandler *pmthandler, const std::vectorsendCAPMT(raw_data + hlen, wp - hlen); prev_sent_capmt_version = pmt_version; } } diff --git a/lib/dvb_ci/dvbci_camgr.cpp b/lib/dvb_ci/dvbci_camgr.cpp index d700b0a..b765146 100644 --- a/lib/dvb_ci/dvbci_camgr.cpp +++ b/lib/dvb_ci/dvbci_camgr.cpp @@ -2,6 +2,17 @@ #include +eDVBCICAManagerSession::eDVBCICAManagerSession(eDVBCISlot *tslot) +{ + slot = tslot; + slot->ca_manager = this; +} + +eDVBCICAManagerSession::~eDVBCICAManagerSession() +{ + slot->ca_manager = 0; +} + int eDVBCICAManagerSession::receivedAPDU(const unsigned char *tag, const void *data, int len) { printf("SESSION(%d)/CA %02x %02x %02x: ", session_nb, tag[0], tag[1],tag[2]); @@ -47,3 +58,12 @@ int eDVBCICAManagerSession::doAction() return 0; } } + +int eDVBCICAManagerSession::sendCAPMT(unsigned char *data, int len) +{ + int i; + const unsigned char tag[3]={0x9F, 0x80, 0x32}; // ca_pmt + + sendAPDU(tag, data, len); +} + diff --git a/lib/dvb_ci/dvbci_camgr.h b/lib/dvb_ci/dvbci_camgr.h index c09997c..91d3eef 100644 --- a/lib/dvb_ci/dvbci_camgr.h +++ b/lib/dvb_ci/dvbci_camgr.h @@ -14,7 +14,11 @@ class eDVBCICAManagerSession: public eDVBCISession int receivedAPDU(const unsigned char *tag, const void *data, int len); int doAction(); public: + eDVBCICAManagerSession(eDVBCISlot *tslot); + ~eDVBCICAManagerSession(); + const std::vector &getCAIDs() const { return caids; } + int sendCAPMT(unsigned char *pmt, int len); }; #endif diff --git a/lib/dvb_ci/dvbci_session.cpp b/lib/dvb_ci/dvbci_session.cpp index afe9e97..1bd3d18 100644 --- a/lib/dvb_ci/dvbci_session.cpp +++ b/lib/dvb_ci/dvbci_session.cpp @@ -140,7 +140,7 @@ eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned cha printf("APPLICATION MANAGER\n"); break; case 0x00030041: - session=slot->ca_manager=new eDVBCICAManagerSession; + session = new eDVBCICAManagerSession(slot); printf("CA MANAGER\n"); break; case 0x00240041: -- 2.7.4