mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 22:40:02 +02:00
vritual server sends 12 bit mode
This commit is contained in:
parent
2ba89b8a45
commit
40a9dce7e0
4
cmk.sh
4
cmk.sh
@ -219,8 +219,8 @@ fi
|
|||||||
|
|
||||||
#Debug
|
#Debug
|
||||||
if [ $DEBUG -eq 1 ]; then
|
if [ $DEBUG -eq 1 ]; then
|
||||||
# CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
||||||
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON "
|
# CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON "
|
||||||
echo "Debug Option enabled"
|
echo "Debug Option enabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -823,8 +823,9 @@ int readRegister(uint32_t offset, uint32_t *retval) {
|
|||||||
int setDynamicRange(int dr) {
|
int setDynamicRange(int dr) {
|
||||||
// setting dr
|
// setting dr
|
||||||
if (dr > 0) {
|
if (dr > 0) {
|
||||||
LOG(logDEBUG1, ("Setting dynamic range: %d\n", dr));
|
#ifdef VIRTUAL
|
||||||
#ifndef VIRTUAL
|
LOG(logINFO, ("Setting dynamic range: %d\n", dr));
|
||||||
|
#else
|
||||||
sharedMemory_lockLocalLink();
|
sharedMemory_lockLocalLink();
|
||||||
if (Feb_Control_SetDynamicRange(dr)) {
|
if (Feb_Control_SetDynamicRange(dr)) {
|
||||||
if (!Beb_SetUpTransferParameters(dr)) {
|
if (!Beb_SetUpTransferParameters(dr)) {
|
||||||
@ -2321,7 +2322,7 @@ void *start_timer(void *arg) {
|
|||||||
const int maxRows = MAX_ROWS_PER_READOUT;
|
const int maxRows = MAX_ROWS_PER_READOUT;
|
||||||
const int packetsPerFrame = (maxPacketsPerFrame * readNRows) / maxRows;
|
const int packetsPerFrame = (maxPacketsPerFrame * readNRows) / maxRows;
|
||||||
|
|
||||||
LOG(logDEBUG1,
|
LOG(logDEBUG,
|
||||||
(" dr:%d\n bytesperpixel:%f\n tgenable:%d\n datasize:%d\n "
|
(" dr:%d\n bytesperpixel:%f\n tgenable:%d\n datasize:%d\n "
|
||||||
"packetsize:%d\n maxnumpackes:%d\n npixelsx:%d\n databytes:%d\n",
|
"packetsize:%d\n maxnumpackes:%d\n npixelsx:%d\n databytes:%d\n",
|
||||||
dr, bytesPerPixel, tgEnable, datasize, packetsize, maxPacketsPerFrame,
|
dr, bytesPerPixel, tgEnable, datasize, packetsize, maxPacketsPerFrame,
|
||||||
@ -2334,15 +2335,18 @@ void *start_timer(void *arg) {
|
|||||||
int npixels = NCHAN * NCHIP;
|
int npixels = NCHAN * NCHIP;
|
||||||
const int pixelsPerPacket = (double)datasize / bytesPerPixel;
|
const int pixelsPerPacket = (double)datasize / bytesPerPixel;
|
||||||
int pixelVal = 0;
|
int pixelVal = 0;
|
||||||
if (dr == 4) {
|
if (dr == 4 || dr == 12) {
|
||||||
npixels /= 2;
|
npixels /= 2;
|
||||||
}
|
}
|
||||||
LOG(logDEBUG1,
|
LOG(logDEBUG1,
|
||||||
("pixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket));
|
("npixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket));
|
||||||
for (int i = 0; i < npixels; ++i) {
|
for (int i = 0; i < npixels; ++i) {
|
||||||
|
// not used by 12 bit mode
|
||||||
if (i > 0 && i % pixelsPerPacket == 0) {
|
if (i > 0 && i % pixelsPerPacket == 0) {
|
||||||
++pixelVal;
|
++pixelVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t temp_12 = 0;
|
||||||
switch (dr) {
|
switch (dr) {
|
||||||
case 4:
|
case 4:
|
||||||
*((uint8_t *)(imageData + i)) =
|
*((uint8_t *)(imageData + i)) =
|
||||||
@ -2357,6 +2361,31 @@ void *start_timer(void *arg) {
|
|||||||
*((uint8_t *)(imageData + i)) =
|
*((uint8_t *)(imageData + i)) =
|
||||||
eiger_virtual_test_mode ? 0xFE : (uint8_t)pixelVal;
|
eiger_virtual_test_mode ? 0xFE : (uint8_t)pixelVal;
|
||||||
break;
|
break;
|
||||||
|
case 12:
|
||||||
|
// first 12 bit pixel
|
||||||
|
// first 8 byte
|
||||||
|
*((uint8_t *)(imageData + (i * 3) * sizeof(uint8_t))) =
|
||||||
|
eiger_virtual_test_mode ? 0xFE : (uint8_t)(i & 0xFF);
|
||||||
|
|
||||||
|
// second 8 byte (first nibble)
|
||||||
|
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t))) =
|
||||||
|
eiger_virtual_test_mode ? 0xF : (uint8_t)((i >> 8) & 0xF);
|
||||||
|
temp_12 =
|
||||||
|
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t)));
|
||||||
|
|
||||||
|
// second 12bit pixel
|
||||||
|
++i;
|
||||||
|
|
||||||
|
// second 8 byte (second nibble)
|
||||||
|
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t))) =
|
||||||
|
eiger_virtual_test_mode ? 0xE
|
||||||
|
: temp_12 | ((uint8_t)(i & 0xF));
|
||||||
|
|
||||||
|
// third byte
|
||||||
|
*((uint8_t *)(imageData + (i * 3 + 2) * sizeof(uint8_t))) =
|
||||||
|
eiger_virtual_test_mode ? 0xFF : (uint8_t)((i >> 4) & 0xFF);
|
||||||
|
|
||||||
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
*((uint16_t *)(imageData + i * sizeof(uint16_t))) =
|
*((uint16_t *)(imageData + i * sizeof(uint16_t))) =
|
||||||
eiger_virtual_test_mode ? 0xFFE : (uint16_t)pixelVal;
|
eiger_virtual_test_mode ? 0xFFE : (uint16_t)pixelVal;
|
||||||
@ -2433,9 +2462,27 @@ void *start_timer(void *arg) {
|
|||||||
// fill data
|
// fill data
|
||||||
int dstOffset = sizeof(sls_detector_header);
|
int dstOffset = sizeof(sls_detector_header);
|
||||||
int dstOffset2 = sizeof(sls_detector_header);
|
int dstOffset2 = sizeof(sls_detector_header);
|
||||||
{
|
if (dr == 12) {
|
||||||
for (int psize = 0; psize < datasize; psize += npixelsx) {
|
// multiple of 768,1024,4096
|
||||||
|
int copysize = 256;
|
||||||
|
for (int psize = 0; psize < datasize; psize += copysize) {
|
||||||
|
memcpy(packetData + dstOffset, imageData + srcOffset,
|
||||||
|
copysize);
|
||||||
|
memcpy(packetData2 + dstOffset2, imageData + srcOffset2,
|
||||||
|
copysize);
|
||||||
|
srcOffset += copysize;
|
||||||
|
srcOffset2 += copysize;
|
||||||
|
dstOffset += copysize;
|
||||||
|
dstOffset2 += copysize;
|
||||||
|
|
||||||
|
// reached 1 row (quarter module)
|
||||||
|
if ((srcOffset % npixelsx) == 0) {
|
||||||
|
srcOffset += npixelsx;
|
||||||
|
srcOffset2 += npixelsx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int psize = 0; psize < datasize; psize += npixelsx) {
|
||||||
if (dr == 32 && tgEnable == 0) {
|
if (dr == 32 && tgEnable == 0) {
|
||||||
memcpy(packetData + dstOffset,
|
memcpy(packetData + dstOffset,
|
||||||
imageData + srcOffset, npixelsx / 2);
|
imageData + srcOffset, npixelsx / 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user