Revision: 8636 http://playerstage.svn.sourceforge.net/playerstage/?rev=8636&view=rev Author: thjc Date: 2010-05-03 16:59:20 +0000 (Mon, 03 May 2010)
Log Message: ----------- Applied patch 2976557: sonyevid30: nasty bug fixed Modified Paths: -------------- code/player/trunk/server/drivers/ptz/sonyevid30.cc Modified: code/player/trunk/server/drivers/ptz/sonyevid30.cc =================================================================== --- code/player/trunk/server/drivers/ptz/sonyevid30.cc 2010-05-03 16:56:41 UTC (rev 8635) +++ code/player/trunk/server/drivers/ptz/sonyevid30.cc 2010-05-03 16:59:20 UTC (rev 8636) @@ -554,6 +554,8 @@ int pandemand; int tiltdemand; short zoomdemand; + unsigned char buffer[MAX_PTZ_PACKET_LENGTH]; + int numread; public: SonyEVID30( ConfigFile* cf, int section); @@ -654,6 +656,8 @@ perror("SonyEVID30::Setup():open():"); return(-1); } + this->numread = 0; + memset(this->buffer, 0, sizeof this->buffer); read_pfd.fd = ptz_fd; @@ -791,9 +795,6 @@ int SonyEVID30::Receive(unsigned char *reply) { - static unsigned char buffer[MAX_PTZ_PACKET_LENGTH]; - static int numread = 0; - unsigned char temp_reply[MAX_PTZ_PACKET_LENGTH]; int newnumread = 0; int bufptr = -1; @@ -803,12 +804,12 @@ memset(temp_reply,0,MAX_PTZ_PACKET_LENGTH); memset(reply,0,MAX_PTZ_PACKET_LENGTH); - if(numread > 0) + if ((this->numread) > 0) { - //printf("copying %d old bytes\n", numread); - memcpy(temp_reply,buffer,numread); + //printf("copying %d old bytes\n", this->numread); + memcpy(temp_reply, this->buffer, this->numread); // look for the terminator - for(i=0;i<numread;i++) + for (i = 0; i < (this->numread); i++) { if(temp_reply[i] == 0xFF) { @@ -826,8 +827,8 @@ } else if (pret < 0) { printf("SONY: poll returned error!\n"); } - newnumread = read(ptz_fd, temp_reply+numread, MAX_PTZ_REPLY_LENGTH-numread); - if((numread += newnumread) < 0) + newnumread = read(ptz_fd, temp_reply + (this->numread), MAX_PTZ_REPLY_LENGTH - (this->numread)); + if (((this->numread) += newnumread) < 0) { perror("SonyEVID30::Send():read():"); return(-1); @@ -843,11 +844,11 @@ perror("SonyEVID30::Send():tcflush():"); return(-1); } - numread = 0; + this->numread = 0; return(0); } // look for the terminator - for(i=0;i<numread;i++) + for (i = 0; i < (this->numread); i++) { if(temp_reply[i] == 0xFF) { @@ -857,15 +858,15 @@ } } - temp = numread; + temp = this->numread; // if we read extra bytes, keep them around - if(bufptr == numread-1) - numread = 0; + if (bufptr == ((this->numread) - 1)) + this->numread = 0; else { - //printf("storing %d bytes\n", numread-(bufptr+1)); - memcpy(buffer,temp_reply+bufptr+1,numread-(bufptr+1)); - numread = numread-(bufptr+1); + //printf("storing %d bytes\n", (this->numread) - (bufptr + 1)); + memcpy(this->buffer, temp_reply + bufptr + 1, (this->numread) - (bufptr + 1)); + this->numread = ((this->numread) - (bufptr + 1)); } //PrintPacket("Really Received", temp_reply, temp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit