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
|
||||
if [ $DEBUG -eq 1 ]; then
|
||||
# CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
||||
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON "
|
||||
CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug "
|
||||
# CMAKE_POST+=" -DCMAKE_BUILD_TYPE=Debug -DSLS_USE_SANITIZER=ON "
|
||||
echo "Debug Option enabled"
|
||||
fi
|
||||
|
||||
|
@ -823,8 +823,9 @@ int readRegister(uint32_t offset, uint32_t *retval) {
|
||||
int setDynamicRange(int dr) {
|
||||
// setting dr
|
||||
if (dr > 0) {
|
||||
LOG(logDEBUG1, ("Setting dynamic range: %d\n", dr));
|
||||
#ifndef VIRTUAL
|
||||
#ifdef VIRTUAL
|
||||
LOG(logINFO, ("Setting dynamic range: %d\n", dr));
|
||||
#else
|
||||
sharedMemory_lockLocalLink();
|
||||
if (Feb_Control_SetDynamicRange(dr)) {
|
||||
if (!Beb_SetUpTransferParameters(dr)) {
|
||||
@ -2321,7 +2322,7 @@ void *start_timer(void *arg) {
|
||||
const int maxRows = MAX_ROWS_PER_READOUT;
|
||||
const int packetsPerFrame = (maxPacketsPerFrame * readNRows) / maxRows;
|
||||
|
||||
LOG(logDEBUG1,
|
||||
LOG(logDEBUG,
|
||||
(" dr:%d\n bytesperpixel:%f\n tgenable:%d\n datasize:%d\n "
|
||||
"packetsize:%d\n maxnumpackes:%d\n npixelsx:%d\n databytes:%d\n",
|
||||
dr, bytesPerPixel, tgEnable, datasize, packetsize, maxPacketsPerFrame,
|
||||
@ -2334,15 +2335,18 @@ void *start_timer(void *arg) {
|
||||
int npixels = NCHAN * NCHIP;
|
||||
const int pixelsPerPacket = (double)datasize / bytesPerPixel;
|
||||
int pixelVal = 0;
|
||||
if (dr == 4) {
|
||||
if (dr == 4 || dr == 12) {
|
||||
npixels /= 2;
|
||||
}
|
||||
LOG(logDEBUG1,
|
||||
("pixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket));
|
||||
("npixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket));
|
||||
for (int i = 0; i < npixels; ++i) {
|
||||
// not used by 12 bit mode
|
||||
if (i > 0 && i % pixelsPerPacket == 0) {
|
||||
++pixelVal;
|
||||
}
|
||||
|
||||
uint8_t temp_12 = 0;
|
||||
switch (dr) {
|
||||
case 4:
|
||||
*((uint8_t *)(imageData + i)) =
|
||||
@ -2357,6 +2361,31 @@ void *start_timer(void *arg) {
|
||||
*((uint8_t *)(imageData + i)) =
|
||||
eiger_virtual_test_mode ? 0xFE : (uint8_t)pixelVal;
|
||||
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:
|
||||
*((uint16_t *)(imageData + i * sizeof(uint16_t))) =
|
||||
eiger_virtual_test_mode ? 0xFFE : (uint16_t)pixelVal;
|
||||
@ -2433,9 +2462,27 @@ void *start_timer(void *arg) {
|
||||
// fill data
|
||||
int dstOffset = sizeof(sls_detector_header);
|
||||
int dstOffset2 = sizeof(sls_detector_header);
|
||||
{
|
||||
for (int psize = 0; psize < datasize; psize += npixelsx) {
|
||||
if (dr == 12) {
|
||||
// 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) {
|
||||
memcpy(packetData + dstOffset,
|
||||
imageData + srcOffset, npixelsx / 2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user