From 32732fab5c3e2d2d0cad7478d0c08d21a55dfa12 Mon Sep 17 00:00:00 2001 From: leslie Date: Tue, 18 Aug 2009 11:09:44 +0800 Subject: [PATCH] improve SB tag creation in CAM messages --- cam.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cam.c b/cam.c index f817d06..f1daf38 100644 --- a/cam.c +++ b/cam.c @@ -2487,10 +2487,11 @@ void cScCiAdapter::Write(const unsigned char *buff, int len) if((b=frame.GetBuff(s+6))) { TPDU(b,slot); memcpy(b+2,d,s); - SB_TAG(b+2+s,0x00); + slotframe->Del(); // delete from rb before Avail() + SB_TAG(b+2+s,slotframe->Avail()>0 ? 0x80:0x00); frame.Put(); } - slotframe->Del(); + else slotframe->Del(); } break; } @@ -2498,19 +2499,18 @@ void cScCiAdapter::Write(const unsigned char *buff, int len) { tcid=tpdu->data[0]; unsigned char *b; - if((b=frame.GetBuff(9))) { - TPDU(b,slot); - TAG(&b[2],0x83,0x01); b[4]=tcid; - SB_TAG(&b[5],0x00); - frame.Put(); - } - static const unsigned char reqCAS[] = { 0xA0,0x07,0x01,0x91,0x04,0x00,0x03,0x00,0x41 }; if((b=slotframe->GetBuff(sizeof(reqCAS)))) { memcpy(b,reqCAS,sizeof(reqCAS)); b[2]=tcid; slotframe->Put(); } + if((b=frame.GetBuff(9))) { + TPDU(b,slot); + TAG(&b[2],0x83,0x01); b[4]=tcid; + SB_TAG(&b[5],slotframe->Avail()>0 ? 0x80:0x00); + frame.Put(); + } break; } case 0xA0: // T_DATA_LAST -- 2.39.5