mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 13:27:14 +02:00
offline headers for dynamic range, fixed port to be same 1 bit always
This commit is contained in:
@ -182,49 +182,51 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** gets the packets number (last packet is labelled with 0 and is replaced with 40)
|
/** gets the packets number
|
||||||
\param buff pointer to the memory
|
\param buff pointer to the memory
|
||||||
\returns packet number
|
\returns packet number
|
||||||
*/
|
*/
|
||||||
int getPacketNumber(char *buff){
|
int getPacketNumber(char *buff){
|
||||||
#ifdef VERY_DEBUG
|
#ifdef VERY_DEBUG
|
||||||
cprintf(RED, "\n0x%x - %d - %d",
|
cprintf(RED, "\n0x%x - %d - %d",
|
||||||
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)),
|
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)),//port and dr
|
||||||
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num4)),
|
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num4)),//non 32 bit packet#
|
||||||
(*(uint16_t*)(((eiger_packet_header *)((char*)(buff)))->num2)));
|
(*(uint16_t*)(((eiger_packet_header *)((char*)(buff)))->num2)));//32 bit packet#
|
||||||
#endif
|
#endif
|
||||||
//32 bit packet number written in num2
|
|
||||||
|
//both ports have same packet numbers, so reconstruct
|
||||||
|
//16 bit packet number written in num2 for 32 bit mode
|
||||||
|
|
||||||
if(dynamicRange == 32){
|
if(dynamicRange == 32){
|
||||||
//both ports have same packet numbers, so reconstruct, ports interchanged for bottom
|
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3)) & 0x1)
|
||||||
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
||||||
if (top)
|
else
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
||||||
else
|
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
|
||||||
}else{
|
|
||||||
if (top)
|
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1);
|
|
||||||
else
|
|
||||||
return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//both ports have same packet numbers, so reconstruct
|
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3)) &0x1)
|
||||||
if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
||||||
if (top)
|
else
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
||||||
else
|
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
|
||||||
}else{
|
|
||||||
if (top)
|
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+1);
|
|
||||||
else
|
|
||||||
return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** gets the dynamic range for offline processing
|
||||||
|
\param buff pointer to the memory
|
||||||
|
\returns dynamic range
|
||||||
|
*/
|
||||||
|
static int getDynamicRange(char *buff){
|
||||||
|
#ifdef VERY_DEBUG
|
||||||
|
cprintf(RED, "\n0x%x",
|
||||||
|
(*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)));
|
||||||
|
#endif
|
||||||
|
return (*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3)) >> 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
returns the pixel value as double correcting for the output buffer crosstalk
|
returns the pixel value as double correcting for the output buffer crosstalk
|
||||||
\param data pointer to the memory
|
\param data pointer to the memory
|
||||||
|
@ -48,6 +48,15 @@ public:
|
|||||||
virtual int getPacketNumber(char *buff){return (*(int*)buff)&0xff;};
|
virtual int getPacketNumber(char *buff){return (*(int*)buff)&0xff;};
|
||||||
|
|
||||||
|
|
||||||
|
/** gets the dynamic range for offline processing
|
||||||
|
\param buff pointer to the memory
|
||||||
|
\returns dynamic range
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//virtual int getDynamicRange(char *buff){return 16;};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user