fixed virtual server fake data for 12 bit mode

This commit is contained in:
maliakal_d 2022-02-18 13:21:21 +01:00
parent aea0efa1b6
commit 6433704086
2 changed files with 19 additions and 15 deletions

View File

@ -2347,18 +2347,19 @@ 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 || dr == 12) { if (dr == 4) {
npixels /= 2; npixels /= 2;
} }
LOG(logDEBUG1, LOG(logDEBUG1,
("npixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket)); ("npixels:%d pixelsperpacket:%d\n", npixels, pixelsPerPacket));
uint8_t *source = (uint8_t *)imageData;
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; uint8_t temp = 0;
switch (dr) { switch (dr) {
case 4: case 4:
*((uint8_t *)(imageData + i)) = *((uint8_t *)(imageData + i)) =
@ -2376,26 +2377,29 @@ void *start_timer(void *arg) {
case 12: case 12:
// first 12 bit pixel // first 12 bit pixel
// first 8 byte // first 8 byte
*((uint8_t *)(imageData + (i * 3) * sizeof(uint8_t))) = *source =
eiger_virtual_test_mode ? 0xFE : (uint8_t)(i & 0xFF); eiger_virtual_test_mode ? 0xFE : (uint8_t)(pixelVal & 0xFF);
++source;
// second 8 byte (first nibble) // second 8 byte (first nibble)
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t))) = temp = eiger_virtual_test_mode
eiger_virtual_test_mode ? 0xF : (uint8_t)((i >> 8) & 0xF); ? 0xF
temp_12 = : (uint8_t)((pixelVal >> 8) & 0xF);
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t)));
// second 12bit pixel // second 12bit pixel
++i; ++i;
// second 8 byte (second nibble) // second 8 byte (second nibble)
*((uint8_t *)(imageData + (i * 3 + 1) * sizeof(uint8_t))) = *source = eiger_virtual_test_mode
eiger_virtual_test_mode ? 0xE ? 0xE
: temp_12 | ((uint8_t)(i & 0xF)); : temp | ((uint8_t)(pixelVal & 0xF) << 4);
++source;
// third byte // third byte
*((uint8_t *)(imageData + (i * 3 + 2) * sizeof(uint8_t))) = *source = eiger_virtual_test_mode
eiger_virtual_test_mode ? 0xFF : (uint8_t)((i >> 4) & 0xFF); ? 0xFF
: (uint8_t)((pixelVal >> 4) & 0xFF);
++source;
break; break;
case 16: case 16:

View File

@ -2830,7 +2830,7 @@ int set_dynamic_range(int file_des) {
} }
// get // get
if (ret == OK { if (ret == OK) {
ret = getDynamicRange(&retval); ret = getDynamicRange(&retval);
if (ret == FAIL) { if (ret == FAIL) {
strcpy(mess, "Could not get dynamic range\n"); strcpy(mess, "Could not get dynamic range\n");