fixed gui getting stuck (wrong datathreadmask more than 64 bits cuz of 72 sockets), gotthard detector receiver updated

This commit is contained in:
Dhanya Maliakal 2017-06-20 12:43:28 +02:00
parent 68bbea17d1
commit cbd1570a8c
2 changed files with 42 additions and 8 deletions

View File

@ -17,7 +17,7 @@
#include <rapidjson/document.h> //json header in zmq stream #include <rapidjson/document.h> //json header in zmq stream
using namespace rapidjson; using namespace rapidjson;
#define DEFAULT_ZMQ_PORTNO 70001 #define DEFAULT_ZMQ_PORTNO 30001
class ZmqSocket { class ZmqSocket {
@ -68,6 +68,15 @@ public:
} }
//Socket Options provided above //Socket Options provided above
//ZMQ_LINGER default is already -1 means no messages discarded. use this options if optimizing required
//ZMQ_SNDHWM default is 0 means no limit. use this to optimize if optimizing required
// eg. int value = -1;
int value = -1;
if (zmq_setsockopt(socketDescriptor, ZMQ_LINGER, &value,sizeof(value))) {
PrintError ();
Close();
}
//connect socket //connect socket
if (zmq_connect(socketDescriptor, serverAddress) < 0) { if (zmq_connect(socketDescriptor, serverAddress) < 0) {
@ -231,7 +240,7 @@ public:
modId, xCoord, yCoord, zCoord, debug, roundRNumber, modId, xCoord, yCoord, zCoord, debug, roundRNumber,
detType, version); detType, version);
#ifdef VERBOSE #ifdef VERBOSE
if(!index) //if(!index)
printf("%d Streamer: buf:%s\n", index, buf); printf("%d Streamer: buf:%s\n", index, buf);
#endif #endif
@ -295,7 +304,7 @@ public:
if ( len > 0 ) { if ( len > 0 ) {
bool dummy = false; bool dummy = false;
#ifdef VERBOSE #ifdef VERBOSE
cprintf( RED,"Header %d Length: %d Header:%s \n", index, length, (char*) zmq_msg_data (&message) ); cprintf( BLUE,"Header %d Length: %d Header:%s \n", index, len, (char*) zmq_msg_data (&message) );
#endif #endif
if ( ParseHeader (index, len, message, acqIndex, frameIndex, subframeIndex, filename, dummy)) { if ( ParseHeader (index, len, message, acqIndex, frameIndex, subframeIndex, filename, dummy)) {
zmq_msg_close (&message); zmq_msg_close (&message);
@ -308,6 +317,7 @@ public:
#endif #endif
return 0; return 0;
} }
cprintf(GREEN,"%d data\n",index);
return 1; return 1;
} }
} }

View File

@ -324,7 +324,7 @@ uint32_t Listener::ListenToAnImage(char* buf) {
//look for carry over //look for carry over
if (carryOverFlag) { if (carryOverFlag) {
//if(!index) cprintf(RED,"carry flag\n"); cprintf(RED,"%d carry flag\n",index);
//check if its the current image packet //check if its the current image packet
// -------------------------- new header ---------------------------------------------------------------------- // -------------------------- new header ----------------------------------------------------------------------
if (standardheader) { if (standardheader) {
@ -347,8 +347,21 @@ uint32_t Listener::ListenToAnImage(char* buf) {
return generalData->imageSize; return generalData->imageSize;
} }
memcpy(buf + fifohsize + (pnum * dsize), //copy packet
carryOverPacket + hsize, dsize); switch(myDetectorType) {
//for gotthard, 1st packet: 4 bytes fnum, CACA, 1278 bytes data
// 2nd packet: 4 bytes fnu, 1282 bytes data !!
case GOTTHARD:
if(!pnum)
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize+4, dsize-2);
else
memcpy(buf + fifohsize + (pnum * dsize) - 2, carryOverPacket + hsize, dsize+2);
break;
default:
memcpy(buf + fifohsize + (pnum * dsize), carryOverPacket + hsize, dsize);
break;
}
carryOverFlag = false; carryOverFlag = false;
numpackets++; //number of packets in this image (each time its copied to buf) numpackets++; //number of packets in this image (each time its copied to buf)
@ -430,8 +443,19 @@ uint32_t Listener::ListenToAnImage(char* buf) {
} }
//copy packet //copy packet
memcpy(buf + fifohsize + (pnum * dsize), switch(myDetectorType) {
listeningPacket + hsize, dsize); //for gotthard, 1st packet: 4 bytes fnum, CACA, 1278 bytes data
// 2nd packet: 4 bytes fnu, 1282 bytes data !!
case GOTTHARD:
if(!pnum)
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize+4, dsize-2);
else
memcpy(buf + fifohsize + (pnum * dsize) - 2, listeningPacket + hsize, dsize+2);
break;
default:
memcpy(buf + fifohsize + (pnum * dsize), listeningPacket + hsize, dsize);
break;
}
numpackets++; //number of packets in this image (each time its copied to buf) numpackets++; //number of packets in this image (each time its copied to buf)
if(isHeaderEmpty) { if(isHeaderEmpty) {
// -------------------------- new header ---------------------------------------------------------------------- // -------------------------- new header ----------------------------------------------------------------------