mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 03:40:04 +02:00
client recieve rx parameters as a struct
This commit is contained in:
parent
3a1d87728c
commit
39fa5e0185
@ -6839,55 +6839,83 @@ int get_receiver_parameters(int file_des) {
|
||||
uint32_t u32 = 0;
|
||||
uint64_t u64 = 0;
|
||||
|
||||
// send fake parameters needed for shared memory
|
||||
// (so that client can receive a struct)
|
||||
// detector type
|
||||
i32 = 0;
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
// multisize
|
||||
i32 = 0;
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
i32 = 0;
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
// detId
|
||||
i32 = 0;
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
// hostname
|
||||
{
|
||||
char hostname[MAX_STR_LENGTH];
|
||||
memset(hostname, 0, MAX_STR_LENGTH);
|
||||
n += sendData(file_des, hostname, MAX_STR_LENGTH, OTHER);
|
||||
if (n < 0) return printSocketReadError();
|
||||
}
|
||||
// end of shared memory variables in struct
|
||||
|
||||
|
||||
// sending real detector parameters
|
||||
// udp interfaces
|
||||
#ifdef JUNGFRAUD
|
||||
i32 = getNumberofUDPInterfaces();
|
||||
#else
|
||||
i32 = 1;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst port
|
||||
i32 = udpDetails.dstport;
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst ip
|
||||
u32 = udpDetails.dstip;
|
||||
u32 = __builtin_bswap32(u32);
|
||||
n = sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
n += sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst mac
|
||||
u64 = udpDetails.dstmac;
|
||||
n = sendData(file_des,&u64,sizeof(u64),INT64);
|
||||
n += sendData(file_des,&u64,sizeof(u64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst port2
|
||||
i32 = udpDetails.dstport2;
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst ip2
|
||||
u32 = udpDetails.dstip2;
|
||||
u32 = __builtin_bswap32(u32);
|
||||
n = sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
n += sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// udp dst mac2
|
||||
u64 = udpDetails.dstmac2;
|
||||
n = sendData(file_des,&u64,sizeof(u64),INT64);
|
||||
n += sendData(file_des,&u64,sizeof(u64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// frames
|
||||
i64 = getNumFrames();
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// triggers
|
||||
i64 = getNumTriggers();
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// bursts
|
||||
@ -6896,7 +6924,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i64 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// analog samples
|
||||
@ -6905,7 +6933,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// digital samples
|
||||
@ -6914,17 +6942,17 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// exptime
|
||||
i64 = getExpTime();
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// period
|
||||
i64 = getPeriod();
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// sub exptime
|
||||
@ -6933,7 +6961,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i64 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// sub deadtime
|
||||
@ -6942,7 +6970,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i64 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
n += sendData(file_des,&i64,sizeof(i64),INT64);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// activate
|
||||
@ -6951,7 +6979,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// quad
|
||||
@ -6960,17 +6988,17 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// dynamic range
|
||||
i32 = setDynamicRange(-1);
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// timing mode
|
||||
i32 = (int)getTiming();
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// 10 gbe
|
||||
@ -6979,7 +7007,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// readout mode
|
||||
@ -6988,7 +7016,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// adc mask
|
||||
@ -6997,7 +7025,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
u32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
n += sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// 10g adc mask
|
||||
@ -7006,7 +7034,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
u32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
n += sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// roi
|
||||
@ -7018,9 +7046,9 @@ int get_receiver_parameters(int file_des) {
|
||||
roi.xmin = -1;
|
||||
roi.xmax = -1;
|
||||
#endif
|
||||
n = sendData(file_des,&roi.xmin,sizeof(int),INT32);
|
||||
n += sendData(file_des,&roi.xmin,sizeof(int),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
n = sendData(file_des,&roi.xmax,sizeof(int),INT32);
|
||||
n += sendData(file_des,&roi.xmax,sizeof(int),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
}
|
||||
|
||||
@ -7030,7 +7058,7 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
u32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
n += sendData(file_des,&u32,sizeof(u32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
// burst mode
|
||||
@ -7039,8 +7067,10 @@ int get_receiver_parameters(int file_des) {
|
||||
#else
|
||||
i32 = 0;
|
||||
#endif
|
||||
n = sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
n += sendData(file_des,&i32,sizeof(i32),INT32);
|
||||
if (n < 0) return printSocketReadError();
|
||||
|
||||
LOG(logINFO, ("Sent %d bytes for receiver parameters\n", n));
|
||||
|
||||
return OK;
|
||||
}
|
@ -1515,57 +1515,18 @@ void Module::setReceiverHostname(const std::string &receiverIP) {
|
||||
shm()->useReceiverFlag = true;
|
||||
checkReceiverVersionCompatibility();
|
||||
|
||||
// populate parameters for receiver
|
||||
int n = 0;
|
||||
// populate parameters from detector
|
||||
rxParameters retval;
|
||||
sendToDetector(F_GET_RECEIVER_PARAMETERS, nullptr, retval);
|
||||
|
||||
// populate from shared memory
|
||||
retval.detType = shm()->myDetectorType;
|
||||
n += sizeof(retval.detType);
|
||||
retval.multiSize.x = shm()->multiSize.x;
|
||||
retval.multiSize.y = shm()->multiSize.y;
|
||||
n += sizeof(retval.multiSize);
|
||||
retval.detId = detId;
|
||||
n += sizeof(retval.detId);
|
||||
memset(retval.hostname, 0, sizeof(retval.hostname));
|
||||
strcpy_safe(retval.hostname, shm()->hostname);
|
||||
n += sizeof(retval.hostname);
|
||||
|
||||
// populate from detector
|
||||
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
|
||||
client.sendCommandThenRead(F_GET_RECEIVER_PARAMETERS, nullptr, 0, nullptr, 0);
|
||||
n += client.Receive(&retval.udpInterfaces, sizeof(retval.udpInterfaces));
|
||||
n += client.Receive(&retval.udp_dstport, sizeof(retval.udp_dstport));
|
||||
n += client.Receive(&retval.udp_dstip, sizeof(retval.udp_dstip));
|
||||
n += client.Receive(&retval.udp_dstmac, sizeof(retval.udp_dstmac));
|
||||
n += client.Receive(&retval.udp_dstport2, sizeof(retval.udp_dstport2));
|
||||
n += client.Receive(&retval.udp_dstip2, sizeof(retval.udp_dstip2));
|
||||
n += client.Receive(&retval.udp_dstmac2, sizeof(retval.udp_dstmac2));
|
||||
n += client.Receive(&retval.frames, sizeof(retval.frames));
|
||||
n += client.Receive(&retval.triggers, sizeof(retval.triggers));
|
||||
n += client.Receive(&retval.bursts, sizeof(retval.bursts));
|
||||
n += client.Receive(&retval.analogSamples, sizeof(retval.analogSamples));
|
||||
n += client.Receive(&retval.digitalSamples, sizeof(retval.digitalSamples));
|
||||
n += client.Receive(&retval.expTimeNs, sizeof(retval.expTimeNs));
|
||||
n += client.Receive(&retval.periodNs, sizeof(retval.periodNs));
|
||||
n += client.Receive(&retval.subExpTimeNs, sizeof(retval.subExpTimeNs));
|
||||
n += client.Receive(&retval.subDeadTimeNs, sizeof(retval.subDeadTimeNs));
|
||||
n += client.Receive(&retval.activate, sizeof(retval.activate));
|
||||
n += client.Receive(&retval.quad, sizeof(retval.quad));
|
||||
n += client.Receive(&retval.dynamicRange, sizeof(retval.dynamicRange));
|
||||
n += client.Receive(&retval.timMode, sizeof(retval.timMode));
|
||||
n += client.Receive(&retval.tenGiga, sizeof(retval.tenGiga));
|
||||
n += client.Receive(&retval.roMode, sizeof(retval.roMode));
|
||||
n += client.Receive(&retval.adcMask, sizeof(retval.adcMask));
|
||||
n += client.Receive(&retval.adc10gMask, sizeof(retval.adc10gMask));
|
||||
n += client.Receive(&retval.roi.xmin, sizeof(retval.roi.xmin));
|
||||
n += client.Receive(&retval.roi.xmax, sizeof(retval.roi.xmax));
|
||||
n += client.Receive(&retval.countermask, sizeof(retval.countermask));
|
||||
n += client.Receive(&retval.burstType, sizeof(retval.burstType));
|
||||
|
||||
LOG(logDEBUG1) << "n:" << n << " retvalsize:" << sizeof(retval);
|
||||
if (n != sizeof(retval)) {
|
||||
throw RuntimeError("Could not get parameters from detector to configure receiver");
|
||||
}
|
||||
LOG(logDEBUG1)
|
||||
<< "detType:" << retval.detType << std::endl
|
||||
<< "multiSize.x:" << retval.multiSize.x << std::endl
|
||||
|
Loading…
x
Reference in New Issue
Block a user