offline headers for dynamic range, fixed port to be same 1 bit always

This commit is contained in:
Dhanya Maliakal
2015-06-26 11:52:17 +02:00
parent d69c6df9ce
commit 9041c48bbf
2 changed files with 40 additions and 29 deletions

View File

@ -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

View File

@ -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;};
/** /**