mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 14:38:14 +02:00
fixes
This commit is contained in:
parent
5790e4961b
commit
5f8dc7a7f0
@ -2304,30 +2304,25 @@ void *start_timer(void *arg) {
|
||||
int numFrames = (getNumFrames() * getNumTriggers() *
|
||||
(getNumAdditionalStorageCells() + 1));
|
||||
int64_t expUs = getExpTime() / 1000;
|
||||
const int npixels = 256 * 256 * 8;
|
||||
const int dataSize = 8192;
|
||||
const int packetsize = dataSize + sizeof(sls_detector_header);
|
||||
int maxPacketsPerFrame = 128;
|
||||
int maxRows = MAX_ROWS_PER_READOUT;
|
||||
if (numInterfaces == 2) {
|
||||
maxPacketsPerFrame /= 2;
|
||||
maxRows /= 2;
|
||||
}
|
||||
const int maxPacketsPerFrame = 128;
|
||||
const int maxRows = MAX_ROWS_PER_READOUT;
|
||||
int partialReadout = getPartialReadout();
|
||||
if (partialReadout == -1) {
|
||||
LOG(logERROR,
|
||||
("partial readout is -1. Assuming no partial readout.\n"));
|
||||
partialReadout = MAX_ROWS_PER_READOUT;
|
||||
}
|
||||
const int packetsPerFrame = (maxPacketsPerFrame * partialReadout) / maxRows;
|
||||
|
||||
//LOG(logINFOBLUE, ("packetsperframe:%d numFrames:%d partial:%d maxpacketsperframe:%d maxrows:%d \n", packetsPerFrame, numFrames, partialReadout, maxPacketsPerFrame, maxRows));
|
||||
|
||||
// starting packet number
|
||||
//const int startPnum = (128 / 2) - ()
|
||||
const int packetsPerFrame =
|
||||
((maxPacketsPerFrame / 2) * partialReadout) / (maxRows / 2);
|
||||
|
||||
// Generate data
|
||||
char imageData[DATA_BYTES];
|
||||
memset(imageData, 0, DATA_BYTES);
|
||||
const int pixelsPerPacket = dataSize / 2;
|
||||
{
|
||||
const int npixels = (NCHAN * NCHIP);
|
||||
const int pixelsPerPacket = dataSize / NUM_BYTES_PER_PIXEL;
|
||||
int pixelVal = 0;
|
||||
for (int i = 0; i < npixels; ++i) {
|
||||
// avoiding gain also being divided when gappixels enabled in call
|
||||
@ -2338,6 +2333,7 @@ void *start_timer(void *arg) {
|
||||
*((uint16_t *)(imageData + i * sizeof(uint16_t))) =
|
||||
virtual_image_test_mode ? 0x0FFE : (uint16_t)pixelVal;
|
||||
}
|
||||
}
|
||||
|
||||
// Send data
|
||||
{
|
||||
@ -2359,9 +2355,27 @@ void *start_timer(void *arg) {
|
||||
|
||||
int srcOffset = 0;
|
||||
int srcOffset2 = DATA_BYTES / 2;
|
||||
// loop packet
|
||||
for (int i = 0; i != packetsPerFrame; ++i) {
|
||||
// set header
|
||||
// loop packet (128 packets)
|
||||
for (int i = 0; i != maxPacketsPerFrame; ++i) {
|
||||
|
||||
// send out only the partial packets
|
||||
if (partialReadout != MAX_ROWS_PER_READOUT) {
|
||||
// get the mid point
|
||||
const int startval =
|
||||
(maxPacketsPerFrame / 2) - (packetsPerFrame / 2);
|
||||
const int endval = startval + packetsPerFrame - 1;
|
||||
LOG(logINFOBLUE,
|
||||
("packetsperframe:%d startval:%d endval:%d'\n",
|
||||
packetsPerFrame, startval, endval));
|
||||
// skip sending out this packet
|
||||
if (i < startval || i > endval) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int pnum = i;
|
||||
|
||||
// first interface
|
||||
if (numInterfaces == 1 || i < (maxPacketsPerFrame / 2)) {
|
||||
char packetData[packetsize];
|
||||
memset(packetData, 0, packetsize);
|
||||
sls_detector_header *header =
|
||||
@ -2369,37 +2383,43 @@ void *start_timer(void *arg) {
|
||||
header->detType = (uint16_t)myDetectorType;
|
||||
header->version = SLS_DETECTOR_HEADER_VERSION - 1;
|
||||
header->frameNumber = frameNr + iframes;
|
||||
header->packetNumber = i;
|
||||
header->modId = 0;
|
||||
header->row = detPos[2];
|
||||
header->column = detPos[3];
|
||||
|
||||
// fill data
|
||||
memcpy(packetData + sizeof(sls_detector_header),
|
||||
imageData + srcOffset, dataSize);
|
||||
srcOffset += dataSize;
|
||||
|
||||
sendUDPPacket(0, packetData, packetsize);
|
||||
|
||||
// second interface
|
||||
char packetData2[packetsize];
|
||||
memset(packetData2, 0, packetsize);
|
||||
if (numInterfaces == 2) {
|
||||
header = (sls_detector_header *)(packetData2);
|
||||
header->detType = (uint16_t)myDetectorType;
|
||||
header->version = SLS_DETECTOR_HEADER_VERSION - 1;
|
||||
header->frameNumber = frameNr + iframes;
|
||||
header->packetNumber = i;
|
||||
header->packetNumber = pnum;
|
||||
header->modId = 0;
|
||||
header->row = detPos[0];
|
||||
header->column = detPos[1];
|
||||
|
||||
// fill data
|
||||
memcpy(packetData + sizeof(sls_detector_header),
|
||||
imageData + srcOffset, dataSize);
|
||||
|
||||
sendUDPPacket(0, packetData, packetsize);
|
||||
srcOffset += dataSize;
|
||||
LOG(logDEBUG1, ("Sent packet: %d [interface 0]\n", i));
|
||||
}
|
||||
|
||||
// second interface
|
||||
else if (numInterfaces == 2 && i >= (maxPacketsPerFrame / 2)) {
|
||||
pnum = i % (maxPacketsPerFrame / 2);
|
||||
|
||||
char packetData2[packetsize];
|
||||
memset(packetData2, 0, packetsize);
|
||||
sls_detector_header *header =
|
||||
(sls_detector_header *)(packetData2);
|
||||
header->detType = (uint16_t)myDetectorType;
|
||||
header->version = SLS_DETECTOR_HEADER_VERSION - 1;
|
||||
header->frameNumber = frameNr + iframes;
|
||||
header->packetNumber = pnum;
|
||||
header->modId = 0;
|
||||
header->row = detPos[2];
|
||||
header->column = detPos[3];
|
||||
|
||||
// fill data
|
||||
memcpy(packetData2 + sizeof(sls_detector_header),
|
||||
imageData + srcOffset2, dataSize);
|
||||
srcOffset2 += dataSize;
|
||||
|
||||
sendUDPPacket(1, packetData2, packetsize);
|
||||
srcOffset2 += dataSize;
|
||||
LOG(logDEBUG1, ("Sent packet: %d [interface 1]\n", pnum));
|
||||
}
|
||||
}
|
||||
LOG(logINFO, ("Sent frame: %d\n", iframes));
|
||||
|
@ -1694,8 +1694,8 @@ int acquire(int blocking, int file_des) {
|
||||
// chipv1.1 has to be configured before acquisition
|
||||
if (getChipVersion() == 11 && !isChipConfigured()) {
|
||||
ret = FAIL;
|
||||
strcpy(mess,
|
||||
"Could not start acquisition. Chip is not configured.\n");
|
||||
strcpy(mess, "Could not start acquisition. Chip is not configured. "
|
||||
"Power it on to configure it.\n");
|
||||
LOG(logERROR, (mess));
|
||||
} else
|
||||
#endif
|
||||
@ -4755,11 +4755,13 @@ int set_partial_readout(int file_des) {
|
||||
maxnl);
|
||||
LOG(logERROR, (mess));
|
||||
} else
|
||||
#elif JUNGFRAU
|
||||
#elif JUNGFRAUD
|
||||
if (arg % PARTIAL_READOUT_MULTIPLE != 0) {
|
||||
ret = FAIL;
|
||||
sprintf(mess,
|
||||
"Could not set %d partial readout. %d must be a multiple of %d\n", arg, PARTIAL_READOUT_MULTIPLE);
|
||||
"Could not set partial readout. %d must be a multiple "
|
||||
"of %d\n",
|
||||
arg, PARTIAL_READOUT_MULTIPLE);
|
||||
LOG(logERROR, (mess));
|
||||
} else
|
||||
#endif
|
||||
@ -7137,7 +7139,7 @@ int get_receiver_parameters(int file_des) {
|
||||
return printSocketReadError();
|
||||
|
||||
// partialReadout
|
||||
#ifdef EIGERD
|
||||
#if defined(EIGERD) || defined(JUNGFRAUD)
|
||||
i32 = getPartialReadout();
|
||||
#else
|
||||
i32 = 0;
|
||||
|
@ -847,13 +847,14 @@ void Detector::setNumberofUDPInterfaces_(int n, Positions pos) {
|
||||
bool previouslyClientStreaming = pimpl->getDataStreamingToClient();
|
||||
bool useReceiver = getUseReceiverFlag().squash(false);
|
||||
bool previouslyReceiverStreaming = false;
|
||||
int startingPort = 0;
|
||||
if (useReceiver) {
|
||||
previouslyReceiverStreaming = getRxZmqDataStream(pos).squash(true);
|
||||
startingPort = getRxZmqPort({0}).squash(0);
|
||||
}
|
||||
pimpl->Parallel(&Module::setNumberofUDPInterfaces, pos, n);
|
||||
// ensure receiver zmq socket ports are multiplied by 2 (2 interfaces)
|
||||
if (getUseReceiverFlag().squash(false) && size()) {
|
||||
int startingPort = getRxZmqPort({0}).squash(0);
|
||||
setRxZmqPort(startingPort, -1);
|
||||
}
|
||||
// redo the zmq sockets if enabled
|
||||
|
@ -129,7 +129,7 @@ void DataStreamer::ThreadExecution() {
|
||||
}
|
||||
|
||||
void DataStreamer::StopProcessing(char *buf) {
|
||||
LOG(logDEBUG1) << "DataStreamer " << index << ": Dummy";
|
||||
LOG(logINFOBLUE) << "DataStreamer " << index << ": Dummy";
|
||||
|
||||
sls_receiver_header *header = (sls_receiver_header *)(buf);
|
||||
// send dummy header and data
|
||||
@ -149,7 +149,7 @@ void DataStreamer::ProcessAnImage(char *buf) {
|
||||
sls_receiver_header *header =
|
||||
(sls_receiver_header *)(buf + FIFO_HEADER_NUMBYTES);
|
||||
uint64_t fnum = header->detHeader.frameNumber;
|
||||
LOG(logDEBUG1) << "DataStreamer " << index << ": fnum:" << fnum;
|
||||
LOG(logINFOBLUE) << "DataStreamer " << index << ": fnum:" << fnum;
|
||||
|
||||
if (!startedFlag) {
|
||||
RecordFirstIndex(fnum, buf);
|
||||
|
@ -491,7 +491,7 @@ uint32_t Listener::ListenToAnImage(char *buf) {
|
||||
|
||||
lastCaughtFrameIndex = fnum;
|
||||
|
||||
LOG(logDEBUG5) << "Listening " << index
|
||||
LOG(logDEBUG1) << "Listening " << index
|
||||
<< ": currentfindex:" << currentFrameIndex
|
||||
<< ", fnum:" << fnum << ", pnum:" << pnum
|
||||
<< ", numpackets:" << numpackets;
|
||||
|
@ -26,7 +26,7 @@ ZmqSocket::ZmqSocket(const char *const hostname_or_ip,
|
||||
if (sockfd.contextDescriptor == nullptr)
|
||||
throw sls::ZmqSocketError("Could not create contextDescriptor");
|
||||
|
||||
// create publisher
|
||||
// create subscriber
|
||||
sockfd.socketDescriptor = zmq_socket(sockfd.contextDescriptor, ZMQ_SUB);
|
||||
if (sockfd.socketDescriptor == nullptr) {
|
||||
PrintError();
|
||||
|
Loading…
x
Reference in New Issue
Block a user