From 9041c48bbf14d5be673788da7f9c9c69757c7b19 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Fri, 26 Jun 2015 11:52:17 +0200 Subject: [PATCH] offline headers for dynamic range, fixed port to be same 1 bit always --- slsDetectorCalibration/eigerHalfModuleData.h | 60 ++++++++++---------- slsDetectorCalibration/slsReceiverData.h | 9 +++ 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/slsDetectorCalibration/eigerHalfModuleData.h b/slsDetectorCalibration/eigerHalfModuleData.h index 3b698c966..f727a8ee8 100644 --- a/slsDetectorCalibration/eigerHalfModuleData.h +++ b/slsDetectorCalibration/eigerHalfModuleData.h @@ -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 \returns packet number */ int getPacketNumber(char *buff){ #ifdef VERY_DEBUG cprintf(RED, "\n0x%x - %d - %d", - (*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)), - (*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num4)), - (*(uint16_t*)(((eiger_packet_header *)((char*)(buff)))->num2))); + (*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num3)),//port and dr + (*(uint8_t*)(((eiger_packet_header *)((char*)(buff)))->num4)),//non 32 bit packet# + (*(uint16_t*)(((eiger_packet_header *)((char*)(buff)))->num2)));//32 bit packet# #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){ - //both ports have same packet numbers, so reconstruct, ports interchanged for bottom - if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){ - if (top) - return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +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); - } + if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3)) & 0x1) + return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+(numberOfPackets/2) +1); + else + return ((*(uint16_t*)(((eiger_packet_header *)((char*)buff))->num2))+1); } else{ - //both ports have same packet numbers, so reconstruct - if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3))){ - if (top) - return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +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); - } + if((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num3)) &0x1) + return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+(numberOfPackets/2) +1); + else + return ((*(uint8_t*)(((eiger_packet_header *)((char*)buff))->num4))+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 \param data pointer to the memory diff --git a/slsDetectorCalibration/slsReceiverData.h b/slsDetectorCalibration/slsReceiverData.h index bfe7a88c5..2658ad27e 100644 --- a/slsDetectorCalibration/slsReceiverData.h +++ b/slsDetectorCalibration/slsReceiverData.h @@ -48,6 +48,15 @@ public: 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;}; + + + /**