mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 15:00:02 +02:00
jungfrau header changed
This commit is contained in:
parent
41f7743af9
commit
0c9806e17f
@ -37,8 +37,10 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char emptyHeader[6];
|
unsigned char emptyHeader[6];
|
||||||
unsigned char frameNumber[8];
|
unsigned char reserved[4];
|
||||||
unsigned char packetNumber[8];
|
unsigned char packetNumber[1];
|
||||||
|
unsigned char frameNumber[3];
|
||||||
|
unsigned char bunchid[8];
|
||||||
} jfrau_packet_header_t;
|
} jfrau_packet_header_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1591,7 +1591,6 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, in
|
|||||||
|
|
||||||
int receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS + cSize, lSize + cSize);
|
int receivedSize = udpSocket[ithread]->ReceiveDataOnly(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS + cSize, lSize + cSize);
|
||||||
|
|
||||||
|
|
||||||
//throw away packets that is not one packet size, need to check status if socket is shut down
|
//throw away packets that is not one packet size, need to check status if socket is shut down
|
||||||
while(status != TRANSMITTING && myDetectorType == EIGER && receivedSize != onePacketSize) {
|
while(status != TRANSMITTING && myDetectorType == EIGER && receivedSize != onePacketSize) {
|
||||||
if(receivedSize != EIGER_HEADER_LENGTH){
|
if(receivedSize != EIGER_HEADER_LENGTH){
|
||||||
@ -1606,20 +1605,26 @@ int UDPStandardImplementation::prepareAndListenBuffer(int ithread, int lSize, in
|
|||||||
totalListeningFrameCount[ithread] += (receivedSize/onePacketSize);
|
totalListeningFrameCount[ithread] += (receivedSize/onePacketSize);
|
||||||
|
|
||||||
#ifdef MANUALDEBUG
|
#ifdef MANUALDEBUG
|
||||||
|
if(receivedSize>0){
|
||||||
if(myDetectorType == JUNGFRAU){
|
if(myDetectorType == JUNGFRAU){
|
||||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*)(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS);
|
jfrau_packet_header_t* header;
|
||||||
cprintf(RED,"framenumber:%llu\n",(long long unsigned int)(*( (uint64_t*) header->frameNumber)));
|
|
||||||
cprintf(RED,"packetnumber:%llu\n",(long long unsigned int)(*( (uint64_t*) header->packetNumber)));
|
for(int iloop=0;iloop<2;iloop++){
|
||||||
|
header = (jfrau_packet_header_t*)(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS + iloop * (JFRAU_HEADER_LENGTH+JFRAU_ONE_DATA_SIZE));
|
||||||
|
cprintf(RED,"[%d]: packetnumber:%x\n",iloop, (*( (uint8_t*) header->packetNumber)));
|
||||||
|
cprintf(RED," : framenumber :%x\n", (*( (uint32_t*) header->frameNumber))&0xffffff);
|
||||||
|
}
|
||||||
}else if(myDetectorType == EIGER){
|
}else if(myDetectorType == EIGER){
|
||||||
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);
|
||||||
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(buffer[ithread] + footerOffset + HEADER_SIZE_NUM_TOT_PACKETS);
|
eiger_packet_footer_t* footer = (eiger_packet_footer_t*)(buffer[ithread] + footerOffset + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
cprintf(GREEN,"thread:%d footeroffset:%dsubframenum:%d oldpacketnum:%d new pnum:%d new fnum:%d\n",
|
cprintf(GREEN,"thread:%d footeroffset:%dsubframenum:%d oldpacketnum:%d new pnum:%d new fnum:%d\n",
|
||||||
ithread,footerOffset,
|
ithread,footerOffset,
|
||||||
(*( (unsigned int*) header->subFameNumber)),
|
(*( (unsigned int*) header->subFrameNumber)),
|
||||||
(*( (uint8_t*) header->dynamicRange)),
|
(*( (uint8_t*) header->dynamicRange)),
|
||||||
(*( (uint16_t*) footer->packetNumber)),
|
(*( (uint16_t*) footer->packetNumber)),
|
||||||
(uint32_t)(*( (uint64_t*) footer)));
|
(uint32_t)(*( (uint64_t*) footer)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -1645,7 +1650,7 @@ void UDPStandardImplementation::startFrameIndices(int ithread){
|
|||||||
break;
|
break;
|
||||||
case JUNGFRAU:
|
case JUNGFRAU:
|
||||||
header = (jfrau_packet_header_t*)(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS);
|
header = (jfrau_packet_header_t*)(buffer[ithread] + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
startFrameIndex = (*( (uint64_t*) header->frameNumber));
|
startFrameIndex = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(shortFrameEnable < 0){
|
if(shortFrameEnable < 0){
|
||||||
@ -1859,31 +1864,31 @@ uint32_t UDPStandardImplementation::processListeningBuffer(int ithread, int cSiz
|
|||||||
lastPacketOffset = (((numberofJobsPerBuffer * packetsPerFrame - 1) * onePacketSize) + HEADER_SIZE_NUM_TOT_PACKETS);
|
lastPacketOffset = (((numberofJobsPerBuffer * packetsPerFrame - 1) * onePacketSize) + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
header = (jfrau_packet_header_t*) (buffer[ithread]+HEADER_SIZE_NUM_TOT_PACKETS);
|
header = (jfrau_packet_header_t*) (buffer[ithread]+HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
cprintf(BLUE, "Listening_Thread: First Header:%llu\t First Packet:%llu\n",
|
cprintf(BLUE, "Listening_Thread: First Header:%d\t First Packet:%d\n",
|
||||||
(long long unsigned int)(*( (uint64_t*) header->frameNumber)),
|
(*( (uint32_t*) header->frameNumber))&0xffffff,
|
||||||
(long long unsigned int)(*( (uint64_t*) header->packetNumber)));
|
(*( (uint8_t*) header->packetNumber)));
|
||||||
#endif
|
#endif
|
||||||
header = (jfrau_packet_header_t*) (buffer[ithread]+lastPacketOffset);
|
header = (jfrau_packet_header_t*) (buffer[ithread]+lastPacketOffset);
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
cprintf(BLUE, "Listening_Thread: Last Header:%llu\t Last Packet:%llu\n",
|
cprintf(BLUE, "Listening_Thread: Last Header:%du\t Last Packet:%d\n",
|
||||||
(long long unsigned int)(*( (uint64_t*) header->frameNumber)),
|
(*( (uint32_t*) header->frameNumber))&0xffffff,
|
||||||
(long long unsigned int)(*( (uint64_t*) header->packetNumber)));
|
(*( (uint8_t*) header->packetNumber)));
|
||||||
#endif
|
#endif
|
||||||
//jungfrau last packet value is 0, so find the last packet and store the others in a temp storage
|
//jungfrau last packet value is 0, so find the last packet and store the others in a temp storage
|
||||||
if(*( (uint64_t*) header->packetNumber)){
|
if((*( (uint8_t*) header->packetNumber))){
|
||||||
cprintf(RED,"entering missing packet zone\n");
|
cprintf(RED,"entering missing packet zone\n");
|
||||||
lastFrameHeader64 = (*( (uint64_t*) header->frameNumber));
|
lastFrameHeader64 = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
cSize += onePacketSize;
|
cSize += onePacketSize;
|
||||||
lastPacketOffset -= onePacketSize;
|
lastPacketOffset -= onePacketSize;
|
||||||
--packetCount;
|
--packetCount;
|
||||||
while (lastFrameHeader64 == (*( (uint64_t*) header->frameNumber))){
|
while (lastFrameHeader64 == (*( (uint32_t*) header->frameNumber))&0xffffff){
|
||||||
cSize += onePacketSize;
|
cSize += onePacketSize;
|
||||||
lastPacketOffset -= onePacketSize;
|
lastPacketOffset -= onePacketSize;
|
||||||
header = (jfrau_packet_header_t*) (buffer[ithread]+lastPacketOffset);
|
header = (jfrau_packet_header_t*) (buffer[ithread]+lastPacketOffset);
|
||||||
#ifdef DEBUG4
|
#ifdef DEBUG4
|
||||||
cprintf(RED,"new header:%llu new packet:%llu\n",
|
cprintf(RED,"new header:%d new packet:%d\n",
|
||||||
(long long unsigned int)(*( (uint64_t*) header->frameNumber)),
|
(*( (uint32_t*) header->frameNumber))&0xffffff,
|
||||||
(long long unsigned int)(*( (uint64_t*) header->packetNumber)));
|
(*( (uint8_t*) header->packetNumber)));
|
||||||
#endif
|
#endif
|
||||||
--packetCount;
|
--packetCount;
|
||||||
}
|
}
|
||||||
@ -2529,7 +2534,7 @@ void UDPStandardImplementation::stopWriting(int ithread, char* wbuffer[]){
|
|||||||
|
|
||||||
//statistics
|
//statistics
|
||||||
FILE_LOG(logINFO) << "Status: Run Finished";
|
FILE_LOG(logINFO) << "Status: Run Finished";
|
||||||
if(totalPacketsCaught != (numberOfFrames*packetsPerFrame)){
|
if(totalPacketsCaught != ((uint64_t)numberOfFrames*packetsPerFrame)){
|
||||||
cprintf(RED, "Total Missing Packets padded: %d\n",numTotMissingPackets);
|
cprintf(RED, "Total Missing Packets padded: %d\n",numTotMissingPackets);
|
||||||
cprintf(RED, "Total Packets Caught: %lld\n",(long long int)totalPacketsCaught);
|
cprintf(RED, "Total Packets Caught: %lld\n",(long long int)totalPacketsCaught);
|
||||||
cprintf(RED, "Total Frames Caught: %lld\n",(long long int)(totalPacketsCaught/packetsPerFrame));
|
cprintf(RED, "Total Frames Caught: %lld\n",(long long int)(totalPacketsCaught/packetsPerFrame));
|
||||||
@ -2555,7 +2560,7 @@ void UDPStandardImplementation::handleWithoutDataCompression(int ithread, char*
|
|||||||
if(myDetectorType != EIGER){
|
if(myDetectorType != EIGER){
|
||||||
if(myDetectorType == JUNGFRAU){
|
if(myDetectorType == JUNGFRAU){
|
||||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*)(wbuffer[0] + HEADER_SIZE_NUM_TOT_PACKETS);
|
jfrau_packet_header_t* header = (jfrau_packet_header_t*)(wbuffer[0] + HEADER_SIZE_NUM_TOT_PACKETS);
|
||||||
currentFrameNumber = (*( (uint64_t*) header->frameNumber));
|
currentFrameNumber = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
}else{
|
}else{
|
||||||
uint64_t tempframenumber = ((uint32_t)(*((uint32_t*)(wbuffer[0] + HEADER_SIZE_NUM_TOT_PACKETS))));
|
uint64_t tempframenumber = ((uint32_t)(*((uint32_t*)(wbuffer[0] + HEADER_SIZE_NUM_TOT_PACKETS))));
|
||||||
//for gotthard and normal frame, increment frame number to separate fnum and pnum
|
//for gotthard and normal frame, increment frame number to separate fnum and pnum
|
||||||
@ -2677,7 +2682,7 @@ void UDPStandardImplementation::writeFileWithoutCompression(char* wbuffer[],uint
|
|||||||
lastpacket = (((packetsToSave - 1) * onePacketSize) + offset);
|
lastpacket = (((packetsToSave - 1) * onePacketSize) + offset);
|
||||||
if(myDetectorType == JUNGFRAU){
|
if(myDetectorType == JUNGFRAU){
|
||||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*) (wbuffer[0] + lastpacket);
|
jfrau_packet_header_t* header = (jfrau_packet_header_t*) (wbuffer[0] + lastpacket);
|
||||||
currentFrameNumber = (*( (uint64_t*) header->frameNumber));
|
currentFrameNumber = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
}else{
|
}else{
|
||||||
tempframenumber = ((uint32_t)(*((uint32_t*)(wbuffer[0] + lastpacket))));
|
tempframenumber = ((uint32_t)(*((uint32_t*)(wbuffer[0] + lastpacket))));
|
||||||
//for gotthard and normal frame, increment frame number to separate fnum and pnum
|
//for gotthard and normal frame, increment frame number to separate fnum and pnum
|
||||||
|
@ -1858,7 +1858,7 @@ int slsReceiverTCPIPInterface::jungfrau_read_frame(){
|
|||||||
char fName[MAX_STR_LENGTH]="";
|
char fName[MAX_STR_LENGTH]="";
|
||||||
int acquisitionIndex = -1;
|
int acquisitionIndex = -1;
|
||||||
int frameIndex= -1;
|
int frameIndex= -1;
|
||||||
uint64_t currentIndex=0;
|
int64_t currentIndex=0;
|
||||||
uint64_t startAcquisitionIndex=0;
|
uint64_t startAcquisitionIndex=0;
|
||||||
uint64_t startFrameIndex=0;
|
uint64_t startFrameIndex=0;
|
||||||
strcpy(mess,"Could not read frame\n");
|
strcpy(mess,"Could not read frame\n");
|
||||||
@ -1915,7 +1915,7 @@ int slsReceiverTCPIPInterface::jungfrau_read_frame(){
|
|||||||
|
|
||||||
//fixed frame number
|
//fixed frame number
|
||||||
jfrau_packet_header_t* header = (jfrau_packet_header_t*) origVal;
|
jfrau_packet_header_t* header = (jfrau_packet_header_t*) origVal;
|
||||||
currentIndex = (*( (uint64_t*) header->frameNumber));
|
currentIndex = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
#ifdef VERYVERBOSE
|
#ifdef VERYVERBOSE
|
||||||
cout << "currentIndex:" << dec << currentIndex << endl;
|
cout << "currentIndex:" << dec << currentIndex << endl;
|
||||||
#endif
|
#endif
|
||||||
@ -1923,13 +1923,13 @@ int slsReceiverTCPIPInterface::jungfrau_read_frame(){
|
|||||||
int64_t currentPacket = packetsPerFrame-1;
|
int64_t currentPacket = packetsPerFrame-1;
|
||||||
int offsetsrc = 0;
|
int offsetsrc = 0;
|
||||||
int offsetdest = 0;
|
int offsetdest = 0;
|
||||||
uint64_t ifnum=-1;
|
int64_t ifnum=-1;
|
||||||
uint64_t ipnum=-1;
|
int64_t ipnum=-1;
|
||||||
|
|
||||||
while(currentPacket >= 0){
|
while(currentPacket >= 0){
|
||||||
header = (jfrau_packet_header_t*) (origVal + offsetsrc);
|
header = (jfrau_packet_header_t*) (origVal + offsetsrc);
|
||||||
ifnum = (*( (uint64_t*) header->frameNumber));
|
ifnum = (*( (uint32_t*) header->frameNumber))&0xffffff;
|
||||||
ipnum = (*( (uint64_t*) header->packetNumber));
|
ipnum = (*( (uint8_t*) header->packetNumber));
|
||||||
if(ifnum != currentIndex) {
|
if(ifnum != currentIndex) {
|
||||||
cout << "current packet " << currentPacket << " Wrong Frame number " << ifnum << ", copying blank packet" << endl;
|
cout << "current packet " << currentPacket << " Wrong Frame number " << ifnum << ", copying blank packet" << endl;
|
||||||
memcpy(retval+offsetdest,blackpacket,oneDataSize);
|
memcpy(retval+offsetdest,blackpacket,oneDataSize);
|
||||||
@ -1938,7 +1938,7 @@ int slsReceiverTCPIPInterface::jungfrau_read_frame(){
|
|||||||
currentPacket--;
|
currentPacket--;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if((int64_t)ipnum!= currentPacket){
|
if(ipnum!= currentPacket){
|
||||||
cout << "current packet " << currentPacket << " Wrong packet number " << ipnum << ", copying blank packet" << endl;
|
cout << "current packet " << currentPacket << " Wrong packet number " << ipnum << ", copying blank packet" << endl;
|
||||||
memcpy(retval+offsetdest,blackpacket,oneDataSize);
|
memcpy(retval+offsetdest,blackpacket,oneDataSize);
|
||||||
offsetdest += oneDataSize;
|
offsetdest += oneDataSize;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user