unsigned char cw[16];
cMutex cwmutex;
cCondVar cwwait;
+ tThreadId readerTid;
//
void PacketAnalyzer(const struct CmdHeader *hdr, int length);
protected:
cCardClientCCcam2::cCardClientCCcam2(const char *Name)
:cCardClient(Name)
-,cThread("CCcam2 listener")
+,cThread("CCcam2 reader")
{
- shareid=0; newcw=login=false;
+ shareid=0; readerTid=0; newcw=login=false;
so.SetRWTimeout(10*1000);
}
void cCardClientCCcam2::Logout(void)
{
login=false;
- Cancel(3);
+ Cancel(cThread::ThreadId()!=readerTid ? 2:-1);
+ readerTid=0;
cCardClient::Logout();
}
void cCardClientCCcam2::Action(void)
{
+ readerTid=cThread::ThreadId();
int cnt=0;
while(Running() && so.Connected()) {
unsigned char recvbuff[1024];
memmove(recvbuff,recvbuff+proc,cnt);
usleep(10);
}
+ readerTid=0;
}