mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 13:27:14 +02:00
dsg
This commit is contained in:
@ -1935,7 +1935,9 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
|
|
||||||
for(int i=0;i<numberofListeningThreads;++i){
|
for(int i=0;i<numberofListeningThreads;++i){
|
||||||
|
|
||||||
/**Check if ths required*/
|
numberofMissingPackets[i] = 0;
|
||||||
|
|
||||||
|
/**Check if this required*/
|
||||||
//dummy done-------------------------------------------------------------------------
|
//dummy done-------------------------------------------------------------------------
|
||||||
if(numPackets[i] == dummyPacketValue && frameBufferoffset[i]== (((i+1)*packetsPerFrame/numberofListeningThreads)));
|
if(numPackets[i] == dummyPacketValue && frameBufferoffset[i]== (((i+1)*packetsPerFrame/numberofListeningThreads)));
|
||||||
|
|
||||||
@ -1955,6 +1957,14 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
}
|
}
|
||||||
threadFrameNumber[i] = (uint32_t)(*( (uint64_t*) packetBuffer_footer));
|
threadFrameNumber[i] = (uint32_t)(*( (uint64_t*) packetBuffer_footer));
|
||||||
threadFrameNumber[i] += (startFrameIndex - 1);
|
threadFrameNumber[i] += (startFrameIndex - 1);
|
||||||
|
|
||||||
|
//update current packet
|
||||||
|
eiger_packet_footer_t* packetBuffer_footer = (eiger_packet_footer_t*)(packetBuffer[i] + footerOffset + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
|
currentPacketNumber[i] = *( (uint16_t*) packetBuffer_footer->packetNumber);
|
||||||
|
#ifdef DEBUG4
|
||||||
|
cprintf(GREEN,"Fifo %d: Packet has fnum %d, pnum %d, last_packet %d, pnum_offset\n",
|
||||||
|
i,threadFrameNumber[i],currentPacketNumber[i],lastPacketNumber[i],frameBufferoffset[i]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1970,8 +1980,9 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
threadFrameNumber[i] = dummyPacketValue;
|
threadFrameNumber[i] = dummyPacketValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//wrong packet (dummy (not full) or from next frame))--------------------------------
|
/**check if next frame lastpacket number is actually +1*/
|
||||||
else if (threadFrameNumber[i] != presentFrameNumber){
|
//wrong packet & correct (dummy (not full) or from future packet))--------------------------------
|
||||||
|
else{// if ((threadFrameNumber[i] != presentFrameNumber) ||(currentPacketNumber[i] != lastPacketNumber[i] + 1)){
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
cprintf(GREEN,"Fifo %d: Wrong Packet has fnum %d, (firmware fnum %d), pnum %d, last_packet %d, pnum_offset %d\n",
|
cprintf(GREEN,"Fifo %d: Wrong Packet has fnum %d, (firmware fnum %d), pnum %d, last_packet %d, pnum_offset %d\n",
|
||||||
i,presentFrameNumber[i],(uint32_t)(*( (uint64_t*) packetBuffer_footer)),
|
i,presentFrameNumber[i],(uint32_t)(*( (uint64_t*) packetBuffer_footer)),
|
||||||
@ -1979,20 +1990,12 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
cprintf(RED,"Fifo %d: Add missing packets to the right fnum %d\n",
|
cprintf(RED,"Fifo %d: Add missing packets to the right fnum %d\n",
|
||||||
i,presentFrameNumber);
|
i,presentFrameNumber);
|
||||||
#endif
|
#endif
|
||||||
numberofMissingPackets[i] = (LAST_PACKET_VALUE - lastPacketNumber[i]);
|
if(threadFrameNumber[i] != presentFrameNumber)
|
||||||
|
numberofMissingPackets[i] = (LAST_PACKET_VALUE - lastPacketNumber[i]);
|
||||||
|
else
|
||||||
|
numberofMissingPackets[i] = (currentPacketNumber[i] - lastPacketNumber[i] - 1);
|
||||||
}
|
}
|
||||||
//correct packet (but never dummy frame)-------------------------------------------
|
|
||||||
else{
|
|
||||||
//update current packet
|
|
||||||
eiger_packet_footer_t* packetBuffer_footer = (eiger_packet_footer_t*)(packetBuffer[i] + footerOffset + HEADER_SIZE_NUM_TOT_PACKETS);
|
|
||||||
currentPacketNumber[i] = *( (uint16_t*) packetBuffer_footer->packetNumber);
|
|
||||||
#ifdef DEBUG4
|
|
||||||
cprintf(GREEN,"Fifo %d: Correct Packet has fnum %d, pnum %d, last_packet %d, pnum_offset\n",
|
|
||||||
i,threadFrameNumber[i],currentPacketNumber[i],lastPacketNumber[i],frameBufferoffset[i]);
|
|
||||||
#endif
|
|
||||||
numberofMissingPackets[i] = (currentPacketNumber[i] - lastPacketNumber[i] - 1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//add missing packets
|
//add missing packets
|
||||||
@ -2017,13 +2020,13 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
frameBufferoffset[i]++;
|
frameBufferoffset[i]++;
|
||||||
blankoffset++;
|
blankoffset++;
|
||||||
}
|
}
|
||||||
if(threadFrameNumber[i] != presentFrameNumber){
|
|
||||||
//set fullframe and dont let fifo pop over it
|
|
||||||
fullframe[i] = true;
|
|
||||||
popReady[i] = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
if((numPackets[i] == dummyPacketValue) ||(threadFrameNumber[i] != presentFrameNumber)){
|
||||||
|
//set fullframe and dont let fifo pop over it
|
||||||
|
fullframe[i] = true;
|
||||||
|
popReady[i] = false;
|
||||||
|
}
|
||||||
//add current packet
|
//add current packet
|
||||||
if(threadFrameNumber[i] == presentFrameNumber){
|
if(threadFrameNumber[i] == presentFrameNumber){
|
||||||
if(currentPacketNumber[i] != (uint32_t)(frameBufferoffset[i]-(i*packetsPerFrame/numberofListeningThreads))+1){
|
if(currentPacketNumber[i] != (uint32_t)(frameBufferoffset[i]-(i*packetsPerFrame/numberofListeningThreads))+1){
|
||||||
@ -2054,6 +2057,8 @@ void UDPStandardImplementation::processWritingBufferPacketByPacket(int ithread){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
numMissingPackets += numberofMissingPackets[i];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user