]> www.vanbest.org Git - sasc-ng.git/commitdiff
fix DeCSA state reset
authorleslie <unknown>
Tue, 6 Oct 2009 12:20:41 +0000 (20:20 +0800)
committerleslie <unknown>
Tue, 6 Oct 2009 12:20:41 +0000 (20:20 +0800)
cam.c

diff --git a/cam.c b/cam.c
index 76850c162482be82a4e6ec7470bb49f0690b43ac..e810fe7a5bf032fa66d552eb7e8fa3760c17e08d 100644 (file)
--- a/cam.c
+++ b/cam.c
@@ -2733,6 +2733,7 @@ cDeCSA::~cDeCSA()
 
 void cDeCSA::ResetState(void)
 {
+  PRINTF(L_CORE_CSA,"%d: reset state",cardindex);
   memset(even_odd,0,sizeof(even_odd));
   memset(flags,0,sizeof(flags));
   memset(pidmap,0,sizeof(pidmap));
@@ -2741,7 +2742,7 @@ void cDeCSA::ResetState(void)
 
 void cDeCSA::SetActive(bool on)
 {
-  if(on && !active) ResetState();
+  if(!on && active) ResetState();
   active=on;
   PRINTF(L_CORE_CSA,"%d: set active %s",cardindex,active?"on":"off");
 }
@@ -2769,11 +2770,13 @@ bool cDeCSA::SetDescr(ca_descr_t *ca_descr, bool initial)
     if(ca_descr->parity==0) {
       set_even_control_word(keys[idx],ca_descr->cw);
       if(!CheckNull(ca_descr->cw,8)) flags[idx]|=FL_EVEN_GOOD|FL_ACTIVITY;
+      else PRINTF(L_CORE_CSA,"%d.%d: zero even CW",cardindex,idx);
       wait.Broadcast();
       }
     else {
       set_odd_control_word(keys[idx],ca_descr->cw);
       if(!CheckNull(ca_descr->cw,8)) flags[idx]|=FL_ODD_GOOD|FL_ACTIVITY;
+      else PRINTF(L_CORE_CSA,"%d.%d: zero odd CW",cardindex,idx);
       wait.Broadcast();
       }
     }