mapping of bottom and top for all bit modes work

This commit is contained in:
Dhanya Maliakal
2015-05-19 10:12:57 +02:00
parent 0c2bd83e96
commit bbcd984df0
2 changed files with 69 additions and 41 deletions

View File

@ -40,18 +40,23 @@ public:
int iPacket1 = 8; int iPacket1 = 8;
int iPacket2 = (totalNumberOfBytes/2) + 8; int iPacket2 = (totalNumberOfBytes/2) + 8;
int iData1 = 0, iData2 = 0; int iData1 = 0, iData2 = 0;
/*int iData=0*/ int increment = (dynamicRange/8);
int ic_increment = 1;
if (dynamicRange == 4) {
increment = 1;
ic_increment = 2;
}
int iPort; int iPort;
if(top){ if(top){
for (int ir=0; ir<ypixels; ir++) { for (int ir=0; ir<ypixels; ir++) {
for (int ic=0; ic<xpixels; ic++) { for (int ic=0; ic<xpixels; ic = ic + ic_increment) {
iPort = ic / (xpixels/2); iPort = ic / (xpixels/2);
if(!iPort){ if(!iPort){
dMap[ir][ic] = iPacket1; dMap[ir][ic] = iPacket1;
iPacket1 += (dynamicRange / 8); iPacket1 += increment;
iData1 +=(dynamicRange / 8); iData1 += increment;
//increment header //increment header
if(iData1 >= dataSize){ if(iData1 >= dataSize){
iPacket1 += 16; iPacket1 += 16;
@ -59,61 +64,84 @@ public:
} }
}else{ }else{
dMap[ir][ic] = iPacket2; dMap[ir][ic] = iPacket2;
iPacket2 += (dynamicRange / 8); iPacket2 += increment;
iData2 +=(dynamicRange / 8); iData2 += increment;
//increment header //increment header
if(iData2 >= dataSize){ if(iData2 >= dataSize){
iPacket2 += 16; iPacket2 += 16;
iData2 = 0; iData2 = 0;
} }
} }
/*iData +=(dynamicRange / 8);
//increment header
if(iData1 >= dataSize){
iPacket1 += 16;
iData1 = 0;
}*/
} }
} }
} }
//bottom
else{ else{
/*int iData=0;*/
iData1 = 0; iData2 = 0; iData1 = 0; iData2 = 0;
iPacket1 = (totalNumberOfBytes/2) - bufferSize - 8; int numbytesperlineperport = 1024;
iPacket2 = totalNumberOfBytes - bufferSize - 8; if (dynamicRange == 8)
numbytesperlineperport = 512;
else if (dynamicRange == 4)
numbytesperlineperport = 256;
else if (dynamicRange == 32)
numbytesperlineperport = 2048;
iPacket1 = (totalNumberOfBytes/2) - numbytesperlineperport - 8;
iPacket2 = totalNumberOfBytes - numbytesperlineperport - 8;
if (dynamicRange == 32){
iPacket1 -= 16;
iPacket2 -= 16;
}
for (int ir=0; ir<ypixels; ir++) { for (int ir=0; ir<ypixels; ir++) {
for (int ic=0; ic<xpixels; ic++) { for (int ic=0; ic<xpixels; ic = ic + ic_increment) {
iPort = ic / (xpixels/2); iPort = ic / (xpixels/2);
if(!iPort){ if(!iPort){
dMap[ir][ic] = iPacket1; dMap[ir][ic] = iPacket1;
iPacket1 += (dynamicRange / 8); iPacket1 += increment;
iData1 +=(dynamicRange / 8); iData1 += increment;
if(iData1 >= dataSize){ if(dynamicRange == 32){
iPacket1 -= (dataSize*2); if(iData1 == numbytesperlineperport){
iPacket1 -= 16; iPacket1 -= (numbytesperlineperport*2 + 16*3);
iData1 = 0; iData1 = 0;
} }
}else{ if(iData1 == dataSize){
dMap[ir][ic] = iPacket2; iPacket1 += 16;
iPacket2 += (dynamicRange / 8); }
iData2 +=(dynamicRange / 8); }else if((iData1 % numbytesperlineperport) == 0){
if(iData2 >= dataSize){ iPacket1 -= (numbytesperlineperport*2);
iPacket2 -= (dataSize*2); if(iData1 == dataSize){
iPacket2 -= 16; iPacket1 -= 16;
iData2 = 0; iData1 = 0;
}
}
}
//other port
else{
dMap[ir][ic] = iPacket2;
iPacket2 += increment;
iData2 += increment;
if(dynamicRange == 32){
if(iData2 == numbytesperlineperport){
iPacket2 -= (numbytesperlineperport*2 + 16*3);
iData2 = 0;
}
if(iData2 == dataSize){
iPacket2 += 16;
}
}else if((iData2 % numbytesperlineperport) == 0){
iPacket2 -= (numbytesperlineperport*2);
if(iData2 == dataSize){
iPacket2 -= 16;
iData2 = 0;
}
} }
} }
/*iData +=(dynamicRange / 8);
//increment header
if(iData >= dataSize){
iPacket1 -= (bufferSize*2);
iPacket2 -= (bufferSize*2);
iPacket1 += 16;
iPacket2 += 16;
iData = 0;
}*/
} }
} }
} }

View File

@ -228,7 +228,7 @@ class slsDetectorData {
uint64_t t; uint64_t t;
int numBytes,divFactor,newix,pixelval; int numBytes,divFactor,newix,pixelval;
//cout <<"ix:"<<ix<<" nx:"<<nx<<" iy:"<<ny<<" ny:"<<ny<<" datamap[iy][ix]:"<< dataMap[iy][ix] <<"datasize:"<< dataSize <<endl;
if (ix>=0 && ix<nx && iy>=0 && iy<ny && dataMap[iy][ix]>=0 && dataMap[iy][ix]<dataSize) { if (ix>=0 && ix<nx && iy>=0 && iy<ny && dataMap[iy][ix]>=0 && dataMap[iy][ix]<dataSize) {
m=dataMask[iy][ix]; m=dataMask[iy][ix];