This commit is contained in:
Dhanya Maliakal 2016-10-31 16:04:46 +01:00
parent 13d225377d
commit 59ade286c2
2 changed files with 11 additions and 73 deletions

View File

@ -84,16 +84,6 @@ using namespace std;
#define DEFAULT_ZMQ_PORTNO 70001 #define DEFAULT_ZMQ_PORTNO 70001
typedef struct {
unsigned char emptyHeader[6];
unsigned char reserved[4];
unsigned char packetNumber[1];
unsigned char frameNumber[3];
unsigned char bunchid[8];
} jfrau_packet_header_t1;
class genericSocket{ class genericSocket{
@ -625,49 +615,11 @@ enum communicationProtocol{
//if length given, listens to length, else listens for packetsize till length is reached //if length given, listens to length, else listens for packetsize till length is reached
if(length){ if(length){
jfrau_packet_header_t1* header;
int currentpnum;
cout<<"\ngoing to read header " << endl;
nsent = recv(socketDescriptor,(char*)buf,22, 0);
cout<<"nsent:"<<nsent<<endl;
header = (jfrau_packet_header_t1*)(buf);
currentpnum = (*( (uint8_t*) header->packetNumber));
cout<<"1 current fnum:"<< ((*( (uint32_t*) header->frameNumber))&0xffffff) <<endl;
cout<<"1 currentpnum:"<<currentpnum<<endl;
cout<<"\ngoing to read data " << endl;
nsent = recv(socketDescriptor,(char*)buf,8192, 0);
cout<<"nsent:"<<nsent<<endl;
cout<<"\ngoing to read header " << endl;
nsent = recv(socketDescriptor,(char*)buf,22, 0);
cout<<"nsent:"<<nsent<<endl;
header = (jfrau_packet_header_t1*)(buf);
currentpnum = (*( (uint8_t*) header->packetNumber));
cout<<"2 current fnum:"<< ((*( (uint32_t*) header->frameNumber))&0xffffff) <<endl;
cout<<"3 currentpnum:"<<currentpnum<<endl;
exit(-1);
/*int k = 0;*/ /*int k = 0;*/
while(length>0){ while(length>0){
if(length<packet_size) nsending = (length>packet_size) ? packet_size:length;
nsending = length; //works for jungfrau to read packet header
else{
cprintf(BG_RED,"should not be here, wrong nsending\n");
nsending = (length>packet_size) ? packet_size:length; //works for eiger to get packets to discard image header packets
}
nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length); nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length);
cprintf(BLUE,"read %d\n",nsent);
if(nsent != nsending){ //if((nsent != nsending)){ && (nsent < packet_size)){ if(nsent != nsending){ //if((nsent != nsending)){ && (nsent < packet_size)){
if(nsent && (nsent != header_packet_size) && (nsent != -1)) if(nsent && (nsent != header_packet_size) && (nsent != -1))
cprintf(RED,"Incomplete Packet size %d\n",nsent); cprintf(RED,"Incomplete Packet size %d\n",nsent);
@ -679,7 +631,6 @@ enum communicationProtocol{
} }
//listens to only 1 packet //listens to only 1 packet
else{ else{
cprintf(BG_RED,"should not be here, length is zero\n");
//normal //normal
nsending=packet_size; nsending=packet_size;
nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length); nsent = recvfrom(socketDescriptor,(char*)buf+total_sent,nsending, 0, (struct sockaddr *) &clientAddress, &clientAddress_length);

View File

@ -2102,45 +2102,36 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int cSize, ch
int currentfnum=-1; int currentfnum=-1;
//read first packet header //read first packet
cout<<"going to read header " << JFRAU_HEADER_LENGTH <<endl; receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, onePacketSize);
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, JFRAU_HEADER_LENGTH);
if(!receivedSize) return 0; if(!receivedSize) return 0;
header = (jfrau_packet_header_t*)(buffer[ithread] + offset); header = (jfrau_packet_header_t*)(buffer[ithread] + offset);
currentpnum = (*( (uint8_t*) header->packetNumber)); currentpnum = (*( (uint8_t*) header->packetNumber));
cout<<"1 current fnum:"<< ((*( (uint32_t*) header->frameNumber))&frameIndexMask) <<endl;
cout<<"1 currentpnum:"<<currentpnum<<endl; cout<<"1 currentpnum:"<<currentpnum<<endl;
while(true){ while(true){
//correct packet //correct packet
if(currentpnum == pnum){ if(currentpnum == pnum){
cout<<"correct packet"<<endl; cout<<"correct packet"<<endl;
//complete frame, get frame number while u can if(pnum == packetsPerFrame-1){
if(pnum == 0){
(*((uint32_t*)(buffer[ithread]+8))) = (*( (uint32_t*) header->frameNumber))&frameIndexMask; (*((uint32_t*)(buffer[ithread]+8))) = (*( (uint32_t*) header->frameNumber))&frameIndexMask;
cout<<"current fnum:"<<(*((uint32_t*)(buffer[ithread]+8)))<<endl; cout<<"current fnum:"<<(*((uint32_t*)(buffer[ithread]+8)))<<endl;
} }
//get data
cout<<"going to read data " << oneDataSize <<endl; memcpy(buffer[ithread] + offset,buffer[ithread] + JFRAU_HEADER_LENGTH, oneDataSize);
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, oneDataSize);
if(!receivedSize) return 0;
cout<<"got data for " << pnum << endl;
offset+=oneDataSize; offset+=oneDataSize;
cout<<"offset now at:" << offset << endl;
//got a complete frame //got a complete frame
if(pnum == 0) if(pnum == 0)
break; break;
pnum --; pnum --;
cout<<"going to read header " << JFRAU_HEADER_LENGTH <<endl; receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, onePacketSize);
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, JFRAU_HEADER_LENGTH);
if(!receivedSize) return 0; if(!receivedSize) return 0;
header = (jfrau_packet_header_t*)(buffer[ithread] + offset); header = (jfrau_packet_header_t*)(buffer[ithread] + offset);
currentpnum = (*( (uint8_t*) header->packetNumber)); currentpnum = (*( (uint8_t*) header->packetNumber));
cout<<"offset:"<<offset<<endl;
cout<<"next currentpnum :"<<currentpnum<<endl; cout<<"next currentpnum :"<<currentpnum<<endl;
cout<<"next current fnum:"<< ((*( (uint32_t*) header->frameNumber))&frameIndexMask) <<endl;
} }
//wrong packet //wrong packet
@ -2150,16 +2141,12 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int cSize, ch
offset = fifoBufferHeaderSize; offset = fifoBufferHeaderSize;
//find the start of next image //find the start of next image
while(currentpnum != (packetsPerFrame-1)){ while(currentpnum != (packetsPerFrame-1)){
cout<<"going to read data " << oneDataSize <<endl;
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, oneDataSize); receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, onePacketSize);
if(!receivedSize) return 0;
cout<<"going to read header " << JFRAU_HEADER_LENGTH <<endl;
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + offset, JFRAU_HEADER_LENGTH);
if(!receivedSize) return 0; if(!receivedSize) return 0;
header = (jfrau_packet_header_t*)(buffer[ithread] + offset); header = (jfrau_packet_header_t*)(buffer[ithread] + offset);
currentpnum = (*( (uint8_t*) header->packetNumber)); currentpnum = (*( (uint8_t*) header->packetNumber));
cout<<"trying to find currentpnum:"<<currentpnum<<endl; cout<<"trying to find currentpnum:"<<currentpnum<<endl;
cout<<"trying to find current fnum:"<< ((*( (uint32_t*) header->frameNumber))&frameIndexMask) <<endl;
} }
} }
}//----- got a whole frame ------- }//----- got a whole frame -------