use workaround for magic-ci
[enigma2.git] / lib / dvb_ci / dvbci_session.cpp
index 7971650f9aac0d5d2590ea129743b14527b68483..afe9e97e820619fb36be3232627ba46fdb917cb7 100644 (file)
@@ -136,7 +136,7 @@ eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned cha
                printf("session: %p\n",session);
                break;
        case 0x00020041:
-               session=slot->application_manager = new eDVBCIApplicationManagerSession;
+               session=slot->application_manager = new eDVBCIApplicationManagerSession(slot);
                printf("APPLICATION MANAGER\n");
                break;
        case 0x00030041:
@@ -148,8 +148,8 @@ eDVBCISession *eDVBCISession::createSession(eDVBCISlot *slot, const unsigned cha
                printf("DATE-TIME\n");
                break;
        case 0x00400041:
-               session=new eDVBCIMMISession;
-               printf("MMI\n");
+               session = new eDVBCIMMISession(slot);
+               printf("MMI - create session\n");
                break;
        case 0x00100041:
 //             session=new eDVBCIAuthSession;
@@ -293,13 +293,13 @@ void eDVBCISession::receiveData(eDVBCISlot *slot, const unsigned char *ptr, size
                        len-=hlen;
 
                        //if (eDVBCIModule::getInstance()->workarounds_active & eDVBCIModule::workaroundMagicAPDULength)
-                       //{
-                       //      if (((len-alen) > 0) && ((len - alen) < 3))
-                       //      {
-                       //              printf("WORKAROUND: applying work around MagicAPDULength\n");
-                       //              alen=len;
-                       //      }
-                       //}
+                       {
+                               if (((len-alen) > 0) && ((len - alen) < 3))
+                               {
+                                       printf("WORKAROUND: applying work around MagicAPDULength\n");
+                                       alen=len;
+                               }
+                       }
                        if (session->receivedAPDU(tag, pkt, alen))
                                session->action = 1;
                        pkt+=alen;
@@ -309,3 +309,8 @@ void eDVBCISession::receiveData(eDVBCISlot *slot, const unsigned char *ptr, size
        if (len)
                printf("PROTOCOL: warning, TL-Data has invalid length\n");
 }
+
+eDVBCISession::~eDVBCISession()
+{
+}
+