]> www.vanbest.org Git - sasc-ng.git/commitdiff
CAM announces full CAID (experimental)
authorleslie <unknown>
Sat, 13 Jun 2009 07:38:38 +0000 (15:38 +0800)
committerleslie <unknown>
Sat, 13 Jun 2009 07:38:38 +0000 (15:38 +0800)
cam.c

diff --git a/cam.c b/cam.c
index 36e15f3c4f8d2a275373e4d9dfe07f2c871eb24b..80a3494022072db034fc23addbe814c99dbb2724 100644 (file)
--- a/cam.c
+++ b/cam.c
@@ -1741,7 +1741,7 @@ public:
   void Unique(void);
   void CheckIgnore(void);
   int Histo(void);
-  void Purge(int caid);
+  void Purge(int caid, bool fullch);
   };
 
 cChannelList::cChannelList(int N)
@@ -1799,10 +1799,11 @@ int cChannelList::Histo(void)
   return h;
 }
 
-void cChannelList::Purge(int caid)
+void cChannelList::Purge(int caid, bool fullch)
 {
   for(cChannelCaids *ch=First(); ch;) {
-    if(ch->NumCaids()<=0 || ch->HasCaid(caid)) {
+    if(!fullch) ch->Del(caid);
+    if(ch->NumCaids()<=0 || (fullch && ch->HasCaid(caid))) {
       cChannelCaids *t=Next(ch);
       Del(ch);
       ch=t;
@@ -2144,7 +2145,7 @@ void cScCiAdapter::BuildCaids(bool force)
       LBSTART(L_CORE_CAIDS);
       LBPUT("%d: added %04x caids now",cardIndex,h); for(int i=0; i<n; i++) LBPUT(" %04x",c[i]);
       LBEND();
-      list.Purge(h);
+      list.Purge(h,false);
       } while(n<MAX_CI_SLOT_CAIDS && list.Count()>0);
     c[n]=0;
     if(n==0) PRINTF(L_CORE_CI,"no active CAIDs");