diff options
| author | Ronny Strutz <ronny.strutz@multimedia-labs.de> | 2005-08-12 20:15:04 +0000 |
|---|---|---|
| committer | Ronny Strutz <ronny.strutz@multimedia-labs.de> | 2005-08-12 20:15:04 +0000 |
| commit | 5c66de23e71d94ddba590c67e4751e046a095e68 (patch) | |
| tree | c621e5659093d90bc2d3a405835f5b2015cc88cc | |
| parent | 640fa7fc2dab8135f04952e3dec9abd1d715a328 (diff) | |
| download | enigma2-5c66de23e71d94ddba590c67e4751e046a095e68.tar.gz enigma2-5c66de23e71d94ddba590c67e4751e046a095e68.zip | |
add datetime mgr
| -rw-r--r-- | lib/dvb_ci/Makefile.am | 3 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_datetimemgr.cpp | 46 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_datetimemgr.h | 16 | ||||
| -rw-r--r-- | lib/dvb_ci/dvbci_session.cpp | 3 |
4 files changed, 66 insertions, 2 deletions
diff --git a/lib/dvb_ci/Makefile.am b/lib/dvb_ci/Makefile.am index 9b70269e..f2600281 100644 --- a/lib/dvb_ci/Makefile.am +++ b/lib/dvb_ci/Makefile.am @@ -4,5 +4,6 @@ INCLUDES = \ noinst_LIBRARIES = libenigma_dvb_ci.a libenigma_dvb_ci_a_SOURCES = dvbci.cpp dvbci_session.cpp dvbci_resmgr.cpp \ - dvbci_appmgr.cpp dvbci_camgr.cpp + dvbci_appmgr.cpp dvbci_camgr.cpp \ + dvbci_datetimemgr.cpp diff --git a/lib/dvb_ci/dvbci_datetimemgr.cpp b/lib/dvb_ci/dvbci_datetimemgr.cpp new file mode 100644 index 00000000..5d2c61d1 --- /dev/null +++ b/lib/dvb_ci/dvbci_datetimemgr.cpp @@ -0,0 +1,46 @@ +/* DVB CI DateTime Manager */ + +#include <lib/dvb_ci/dvbci_datetimemgr.h> + +int eDVBCIDateTimeSession::receivedAPDU(const unsigned char *tag,const void *data, int len) +{ + printf("SESSION(%d)/DATETIME %02x %02x %02x: ", session_nb, tag[0],tag[1], tag[2]); + for (int i=0; i<len; i++) + printf("%02x ", ((const unsigned char*)data)[i]); + printf("\n"); + + if ((tag[0]==0x9f) && (tag[1]==0x84)) + { + switch (tag[2]) + { + case 0x40: + state=stateSendDateTime; + return 1; + break; + default: + printf("unknown APDU tag 9F 84 %02x\n", tag[2]); + break; + } + } + return 0; +} + +int eDVBCIDateTimeSession::doAction() +{ + switch (state) + { + case stateStarted: + return 0; + case stateSendDateTime: + { + unsigned char tag[3]={0x9f, 0x84, 0x41}; // date_time_response + unsigned char msg[7]={0, 0, 0, 0, 0, 0, 0}; + sendAPDU(tag, msg, 7); + return 0; + } + case stateFinal: + printf("stateFinal und action! kann doch garnicht sein ;)\n"); + default: + return 0; + } +} diff --git a/lib/dvb_ci/dvbci_datetimemgr.h b/lib/dvb_ci/dvbci_datetimemgr.h new file mode 100644 index 00000000..7134ad4b --- /dev/null +++ b/lib/dvb_ci/dvbci_datetimemgr.h @@ -0,0 +1,16 @@ +#ifndef __dvbci_dvbci_datetimemgr_h +#define __dvbci_dvbci_datetimemgr_h + +#include <lib/dvb_ci/dvbci_session.h> + +class eDVBCIDateTimeSession: public eDVBCISession +{ + enum { + stateFinal=statePrivate, stateSendDateTime + }; + int receivedAPDU(const unsigned char *tag, const void *data, int len); + int doAction(); +public: +}; + +#endif diff --git a/lib/dvb_ci/dvbci_session.cpp b/lib/dvb_ci/dvbci_session.cpp index ab997e5d..a9c26d16 100644 --- a/lib/dvb_ci/dvbci_session.cpp +++ b/lib/dvb_ci/dvbci_session.cpp @@ -4,6 +4,7 @@ #include <lib/dvb_ci/dvbci_resmgr.h> #include <lib/dvb_ci/dvbci_appmgr.h> #include <lib/dvb_ci/dvbci_camgr.h> +#include <lib/dvb_ci/dvbci_datetimemgr.h> int eDVBCISession::buildLengthField(unsigned char *pkt, int len) { @@ -138,7 +139,7 @@ eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned cha printf("CA MANAGER\n"); break; case 0x00240041: -// session=new eDVBCIDateTimeSession; + session=new eDVBCIDateTimeSession; printf("DATE-TIME\n"); break; case 0x00400041: |
