From: leslie Date: Tue, 6 Oct 2009 12:20:41 +0000 (+0800) Subject: fix DeCSA state reset X-Git-Tag: upstream/620~153 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=b367e3256ccfdd30ce955c59eba1f3ed1d8f0e3d;p=sasc-ng.git fix DeCSA state reset --- diff --git a/cam.c b/cam.c index 76850c1..e810fe7 100644 --- 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(); } }