moench receiver with packet index for each frame

git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@534 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
l_maliakal_d 2013-04-26 15:43:09 +00:00
parent ded2a4de5c
commit 60f7fc9f84
3 changed files with 9 additions and 9 deletions

View File

@ -73,6 +73,8 @@ int init_detector(int b, int checkType) {
printf("***Assuming this to be a MOENCH detector***\n"); printf("***Assuming this to be a MOENCH detector***\n");
} }
withGotthard = 1; withGotthard = 1;
} else if(b){
printf("***This is a MOENCH detector with %d chips per module***\n",NCHIP);
} }
if (b) { if (b) {

View File

@ -198,9 +198,6 @@ public:
*/ */
void registerWriteReceiverDataCallback(int( *userCallback)(char*, int, FILE*, void*), void *pArg) {writeReceiverData = userCallback; pwriteReceiverDataArg = pArg;}; void registerWriteReceiverDataCallback(int( *userCallback)(char*, int, FILE*, void*), void *pArg) {writeReceiverData = userCallback; pwriteReceiverDataArg = pArg;};
int getFrameIndex(int index){return index & MOENCH_FRAME_INDEX_MASK}
int get
private: private:

View File

@ -1005,7 +1005,8 @@ int slsReceiverFuncs::moench_read_frame(){
int numPackets = MOENCH_PACKETS_PER_FRAME; //40 int numPackets = MOENCH_PACKETS_PER_FRAME; //40
int onePacketSize = MOENCH_DATA_BYTES / MOENCH_PACKETS_PER_FRAME; //1280*40 / 40 = 1280 int onePacketSize = MOENCH_DATA_BYTES / MOENCH_PACKETS_PER_FRAME; //1280*40 / 40 = 1280
int partsPerFrame = onePacketSize / MOENCH_BYTES_PER_ADC; // 1280 / 80 = 16 int partsPerFrame = onePacketSize / MOENCH_BYTES_PER_ADC; // 1280 / 80 = 16
int origvalHeader = origVal; offset = 4;
int packetOffset = 0;
int thisFrameNumber = (index & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET; int thisFrameNumber = (index & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET;
cout<<"this frame number:"<<thisFrameNumber<<endl; cout<<"this frame number:"<<thisFrameNumber<<endl;
int packetIndex,x,y; int packetIndex,x,y;
@ -1015,7 +1016,7 @@ int slsReceiverFuncs::moench_read_frame(){
while (iPacket < numPackets){ while (iPacket < numPackets){
//read packet index //read packet index
packetIndex = (*origvalHeader) & MOENCH_PACKET_INDEX_MASK;cout<<"packet index:"<<packetIndex<<endl; packetIndex = (*((int*)((char*)(origVal+packetOffset)))) & MOENCH_PACKET_INDEX_MASK;cout<<"packet index:"<<packetIndex<<endl;
//if its valid //if its valid
if ((packetIndex < 40) || (packetIndex >= 0)){ if ((packetIndex < 40) || (packetIndex >= 0)){
x = packetIndex / 10; x = packetIndex / 10;
@ -1037,18 +1038,18 @@ int slsReceiverFuncs::moench_read_frame(){
//increment //increment
offset+=6; offset+=6;
origvalHeader = origvalHeader + offset + onePacketSize;
iPacket++; iPacket++;
packetOffset = packetOffset + offset + onePacketSize;
cout <<" checking next frame number:"<<(((*origvalHeader) & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET)<<endl; cout <<" checking next frame number:"<<(((*((int*)((char*)(origVal+packetOffset)))) & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET)<<endl;
//check if same frame number //check if same frame number
while ((((*origvalHeader) & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET) != thisFrameNumber){cout<<"did not match"<<endl; while ((((*((int*)((char*)(origVal+packetOffset)))) & (MOENCH_FRAME_INDEX_MASK)) >> MOENCH_FRAME_INDEX_OFFSET) != thisFrameNumber){cout<<"did not match"<<endl;
if(iPacket >= numPackets) if(iPacket >= numPackets)
break; break;
//increment //increment
offset+=6; offset+=6;
origvalHeader = origvalHeader + offset + onePacketSize;
iPacket++; iPacket++;
packetOffset = packetOffset + offset + onePacketSize;
} }
cout<<"found or exited"<<endl; cout<<"found or exited"<<endl;
} }