mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-25 07:40:03 +02:00
all changes done
This commit is contained in:
parent
3045876a86
commit
f19031a736
@ -1568,7 +1568,6 @@ void UDPStandardImplementation::startListening(){
|
|||||||
|
|
||||||
int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, int cSize, char* temp){
|
int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, int cSize, char* temp){
|
||||||
FILE_LOG(logDEBUG) << __AT__ << " called";
|
FILE_LOG(logDEBUG) << __AT__ << " called";
|
||||||
int testbit = 0;
|
|
||||||
|
|
||||||
//listen to UDP packets
|
//listen to UDP packets
|
||||||
if(cSize)
|
if(cSize)
|
||||||
@ -1580,9 +1579,7 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, in
|
|||||||
while(status != TRANSMITTING && myDetectorType == EIGER && receivedSize != onePacketSize) {
|
while(status != TRANSMITTING && myDetectorType == EIGER && receivedSize != onePacketSize) {
|
||||||
if(receivedSize != EIGER_HEADER_LENGTH){
|
if(receivedSize != EIGER_HEADER_LENGTH){
|
||||||
cprintf(RED,"Listening_Thread %d: Listened to a weird packet size %d\n",ithread, receivedSize);
|
cprintf(RED,"Listening_Thread %d: Listened to a weird packet size %d\n",ithread, receivedSize);
|
||||||
}/*else{
|
}
|
||||||
testbit = 1;
|
|
||||||
}*/
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
else
|
else
|
||||||
cprintf(BLUE,"Listening_Thread %d: Listened to a header packet\n",ithread);
|
cprintf(BLUE,"Listening_Thread %d: Listened to a header packet\n",ithread);
|
||||||
@ -1590,11 +1587,6 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, in
|
|||||||
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS);
|
receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
}
|
}
|
||||||
totalListeningFrameCount[ithread] += (receivedSize/onePacketSize);
|
totalListeningFrameCount[ithread] += (receivedSize/onePacketSize);
|
||||||
/*if(testbit == 1){
|
|
||||||
testbit = 0;
|
|
||||||
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(buffer[ithread] + footerOffset + HEADER_SIZE_NUM_TOT_PACKETS);
|
|
||||||
cprintf(CYAN,"Listening_Thread %d: fnum:%d\n",ithread,(uint32_t)(*( (uint64_t*) footer)));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
#ifdef MANUALDEBUG
|
#ifdef MANUALDEBUG
|
||||||
eiger_packet_header_t* header = (eiger_packet_header_t*) (buffer[ithread]+HEADER_SIZE_NUM_TOT_PACKETS);
|
eiger_packet_header_t* header = (eiger_packet_header_t*) (buffer[ithread]+HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
@ -2099,7 +2091,7 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
numberofMissingPackets[i] = (LAST_PACKET_VALUE - lastPacketNumber[i]);
|
numberofMissingPackets[i] = (LAST_PACKET_VALUE - lastPacketNumber[i]);
|
||||||
else
|
else
|
||||||
numberofMissingPackets[i] = (currentPacketNumber[i] - lastPacketNumber[i] - 1);
|
numberofMissingPackets[i] = (currentPacketNumber[i] - lastPacketNumber[i] - 1);
|
||||||
|
numMissingPackets += numberofMissingPackets[i];
|
||||||
|
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
if(numPackets[i] == dummyPacketValue)
|
if(numPackets[i] == dummyPacketValue)
|
||||||
@ -2118,7 +2110,6 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
for(int j=0;j<numberofMissingPackets[i];++j){
|
for(int j=0;j<numberofMissingPackets[i];++j){
|
||||||
|
|
||||||
blankoffset = frameBufferoffset[i];
|
blankoffset = frameBufferoffset[i];
|
||||||
//cout<<"blank offset:"<<blankoffset<<endl;
|
|
||||||
frameBuffer[frameBufferoffset[i]] = blankframe[blankoffset];
|
frameBuffer[frameBufferoffset[i]] = blankframe[blankoffset];
|
||||||
eiger_packet_header_t* frameBuffer_header = (eiger_packet_header_t*) frameBuffer[frameBufferoffset[i]];
|
eiger_packet_header_t* frameBuffer_header = (eiger_packet_header_t*) frameBuffer[frameBufferoffset[i]];
|
||||||
if (*( (uint16_t*) frameBuffer_header->missingPacket)!= missingPacketValue){
|
if (*( (uint16_t*) frameBuffer_header->missingPacket)!= missingPacketValue){
|
||||||
@ -2137,10 +2128,10 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
*( (uint16_t*) frameBuffer_header->missingPacket));
|
*( (uint16_t*) frameBuffer_header->missingPacket));
|
||||||
#endif
|
#endif
|
||||||
frameBufferoffset[i]=frameBufferoffset[i]+1;
|
frameBufferoffset[i]=frameBufferoffset[i]+1;
|
||||||
//blankoffset++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//missed packets/future packet: do not pop over and determine fullframe--------------------
|
||||||
popReady[i] = false;
|
popReady[i] = false;
|
||||||
if((numPackets[i] == dummyPacketValue) ||(threadFrameNumber[i] != presentFrameNumber))
|
if((numPackets[i] == dummyPacketValue) ||(threadFrameNumber[i] != presentFrameNumber))
|
||||||
fullframe[i] = true;
|
fullframe[i] = true;
|
||||||
@ -2149,24 +2140,8 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
if(threadFrameNumber[i] != presentFrameNumber)
|
if(threadFrameNumber[i] != presentFrameNumber)
|
||||||
threadFrameNumber[i] = presentFrameNumber;
|
threadFrameNumber[i] = presentFrameNumber;
|
||||||
|
|
||||||
//missed packets/future packet: do not pop over and determine fullframe--------------------
|
|
||||||
if(numberofMissingPackets[i]){
|
|
||||||
//popReady[i] = false;
|
|
||||||
//if((numPackets[i] == dummyPacketValue) ||(threadFrameNumber[i] != presentFrameNumber))
|
|
||||||
// fullframe[i] = true;
|
|
||||||
//else{
|
|
||||||
// fullframe[i] = false;
|
|
||||||
//update last packet
|
|
||||||
//lastPacketNumber[i] = currentPacketNumber[i] - 1;
|
|
||||||
//}
|
|
||||||
//if(threadFrameNumber[i] != presentFrameNumber)
|
|
||||||
// threadFrameNumber[i] = presentFrameNumber;
|
|
||||||
numMissingPackets += numberofMissingPackets[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//add current packet--------------------------------------------------------------
|
//add current packet--------------------------------------------------------------
|
||||||
|
|
||||||
if(fullframe[i] == false){
|
if(fullframe[i] == false){
|
||||||
if(currentPacketNumber[i] != (uint32_t)(frameBufferoffset[i]-(i*packetsPerFrame/numberofListeningThreads))+1){
|
if(currentPacketNumber[i] != (uint32_t)(frameBufferoffset[i]-(i*packetsPerFrame/numberofListeningThreads))+1){
|
||||||
cprintf(BG_RED, "Fifo %d: Correct Packet Offset Error: "
|
cprintf(BG_RED, "Fifo %d: Correct Packet Offset Error: "
|
||||||
@ -2545,11 +2520,11 @@ void UDPStandardImplementation::handleWithoutDataCompression(int ithread, char*
|
|||||||
|
|
||||||
|
|
||||||
//copy frame for gui
|
//copy frame for gui
|
||||||
/*if(npackets >= packetsPerFrame)
|
if(npackets >= packetsPerFrame)
|
||||||
copyFrameToGui(wbuffer);
|
copyFrameToGui(wbuffer);
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
cprintf(GREEN,"Writing_Thread: Copied frame\n");
|
cprintf(GREEN,"Writing_Thread: Copied frame\n");
|
||||||
#endif*/
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//free fifo addresses (eiger frees for each packet later)
|
//free fifo addresses (eiger frees for each packet later)
|
||||||
@ -2708,8 +2683,8 @@ void UDPStandardImplementation::createHeaders(char* wbuffer[]){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//add frame number
|
//add frame number
|
||||||
/**( (uint64_t*) wbuf_footer) = (currentFrameNumber+1) | (((uint64_t)(*( (uint16_t*) wbuf_footer->packetNumber)))<<0x30);*/
|
( (uint64_t*) wbuf_footer) = (currentFrameNumber+1) | (((uint64_t)(*( (uint16_t*) wbuf_footer->packetNumber)))<<0x30);
|
||||||
//*( (uint16_t*) wbuf_footer->packetNumber) = (i+1);
|
//*( (uint16_t*) wbuf_footer->packetNumber) = (i+1); // missing frames already have the right packet number
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
cprintf(RED, "Missing Packet Loop index:%d fnum:%d Pnum:%d\n",i,
|
cprintf(RED, "Missing Packet Loop index:%d fnum:%d Pnum:%d\n",i,
|
||||||
(uint32_t)(*( (uint64_t*) wbuf_footer)),
|
(uint32_t)(*( (uint64_t*) wbuf_footer)),
|
||||||
@ -2731,13 +2706,17 @@ void UDPStandardImplementation::createHeaders(char* wbuffer[]){
|
|||||||
exitVal =1;
|
exitVal =1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*uint16_t p = *( (uint16_t*) wbuf_footer->packetNumber);
|
uint16_t p = *( (uint16_t*) wbuf_footer->packetNumber);
|
||||||
//correct the packet numbers of port2 so that port1 and 2 are not the same
|
//correct the packet numbers of port2 so that port1 and 2 are not the same
|
||||||
if(port) *( (uint16_t*) wbuf_footer->packetNumber) = (p +(packetsPerFrame/2));*/
|
if(port) *( (uint16_t*) wbuf_footer->packetNumber) = (p +(packetsPerFrame/2));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*//DEBUGGING
|
//overwriting port number and dynamic range
|
||||||
|
( (uint8_t*) wbuf_header->portIndex) = (uint8_t)port;
|
||||||
|
*( (uint8_t*) wbuf_header->dynamicRange) = (uint8_t)dynamicRange;
|
||||||
|
|
||||||
|
//DEBUGGING
|
||||||
if(*( (uint16_t*) wbuf_footer->packetNumber) != (i+1)){
|
if(*( (uint16_t*) wbuf_footer->packetNumber) != (i+1)){
|
||||||
cprintf(BG_RED, "Writing_Thread: Packet Number Mismatch! "
|
cprintf(BG_RED, "Writing_Thread: Packet Number Mismatch! "
|
||||||
"i %d, real pnum %d, real fnum %d, missingPacket 0x%x\n",
|
"i %d, real pnum %d, real fnum %d, missingPacket 0x%x\n",
|
||||||
@ -2746,10 +2725,7 @@ void UDPStandardImplementation::createHeaders(char* wbuffer[]){
|
|||||||
(uint32_t)(*( (uint64_t*) wbuf_footer)),
|
(uint32_t)(*( (uint64_t*) wbuf_footer)),
|
||||||
*( (uint16_t*) wbuf_header->missingPacket));
|
*( (uint16_t*) wbuf_header->missingPacket));
|
||||||
exitVal =1;
|
exitVal =1;
|
||||||
}*/
|
}
|
||||||
//overwriting port number and dynamic range
|
|
||||||
/**( (uint8_t*) wbuf_header->portIndex) = (uint8_t)port;
|
|
||||||
*( (uint8_t*) wbuf_header->dynamicRange) = (uint8_t)dynamicRange;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(exitVal){exit(-1);}
|
if(exitVal){exit(-1);}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user