Compare commits

...

3 Commits

Author SHA1 Message Date
d23722a4b7 Eiger: add hardware version (#688)
* eiger: hardwareversion, fix firmware version unable to read version scenarios, check to see if febl, febr and beb have same fw version

* feb versions can be picked up only after feb initialization
2023-03-16 11:59:06 +01:00
bc46d0f6ab rx_arping handle sigchld (#691)
* rx_arping pclose gave -1 due to sigchld being ignored, fixed with sig handler doing a wait
2023-03-16 11:57:30 +01:00
532f76ed4f fix hdf5 compilation using det spec fields in header (#693)
* fix hdf5 compilation using det spec fields in header
2023-03-16 09:23:27 +01:00
20 changed files with 177 additions and 78 deletions

View File

@ -29,7 +29,10 @@ This document describes the differences between v7.x.x and v7.0.0
- moench being made compatible with jungfrau 2.0 boards (jungfrau structure, away from ctb) - moench being made compatible with jungfrau 2.0 boards (jungfrau structure, away from ctb)
- eiger febl and feb in versions - eiger febl and febr in versions, ensure its the same as beb fw version
- eiger hardware version fx30 and fx70 (versions command)
- fixed rx_arping error
- fix hdf5 compilation (detspec fields)

View File

@ -230,7 +230,8 @@ class Detector(CppDetectorApi):
@element @element
def hardwareversion(self): def hardwareversion(self):
""" """
[Jungfrau][Moench][Gotthard2][Myhten3][Gotthard][Ctb] Hardware version of detector. [Jungfrau][Moench][Gotthard2][Myhten3][Gotthard][Ctb] Hardware version of detector. \n
[Eiger] Hardware version of front FPGA on detector.
""" """
return self.getHardwareVersion() return self.getHardwareVersion()
@ -1890,17 +1891,18 @@ class Detector(CppDetectorApi):
def versions(self): def versions(self):
version_list = {'type': self.type, version_list = {'type': self.type,
'package': self.packageversion, 'package': self.packageversion,
'client': self.clientversion, 'client': self.clientversion}
'detectorserver': self.detectorserverversion,
'kernel': self.kernelversion}
if self.type == detectorType.EIGER: if self.type == detectorType.EIGER:
version_list ['firmware (Beb)'] = self.firmwareversion version_list ['firmware (Beb)'] = self.firmwareversion
version_list ['firmware(Febl)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_LEFT) version_list ['firmware(Febl)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_LEFT)
version_list ['firmware (Febr)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_RIGHT) version_list ['firmware (Febr)'] = self.getFrontEndFirmwareVersion(slsDetectorDefs.fpgaPosition.FRONT_RIGHT)
else: else:
version_list ['firmware'] = self.firmwareversion version_list ['firmware'] = self.firmwareversion
version_list ['hardware'] = self.hardwareversion
version_list ['detectorserver'] = self.detectorserverversion
version_list ['kernel'] = self.kernelversion
version_list ['hardware'] = self.hardwareversion
if self.use_receiver: if self.use_receiver:
version_list ['receiver'] = self.rx_version version_list ['receiver'] = self.rx_version

View File

@ -1742,6 +1742,7 @@ int Feb_Control_WriteRegister_BitMask(uint32_t offset, uint32_t data,
int Feb_Control_ReadRegister_BitMask(uint32_t offset, uint32_t *retval, int Feb_Control_ReadRegister_BitMask(uint32_t offset, uint32_t *retval,
uint32_t bitmask) { uint32_t bitmask) {
uint32_t actualOffset = offset; uint32_t actualOffset = offset;
char side[2][10] = {"right", "left"}; char side[2][10] = {"right", "left"};
unsigned int addr[2] = {Feb_Control_rightAddress, Feb_Control_leftAddress}; unsigned int addr[2] = {Feb_Control_rightAddress, Feb_Control_leftAddress};
@ -2206,6 +2207,21 @@ int Feb_Control_GetRightFPGATemp() {
return (int)temperature; return (int)temperature;
} }
int Feb_Control_GetFPGAHardwareVersion(int *retval) {
if (!Feb_Control_activated) {
return 0;
}
unsigned int value = 0;
if (!Feb_Control_ReadRegister_BitMask(FEB_REG_STATUS, &value,
FEB_REG_STATUS_FX30_MSK)) {
LOG(logERROR,
("Trouble reading FEB_REG_STATUS reg to feb hardware version\n"));
return 0;
}
*retval = (value >> FEB_REG_STATUS_FX30_OFST);
return 1;
}
int64_t Feb_Control_GetFrontLeftFirmwareVersion() { int64_t Feb_Control_GetFrontLeftFirmwareVersion() {
if (!Feb_Control_activated) { if (!Feb_Control_activated) {
return 0; return 0;

View File

@ -46,6 +46,8 @@
#define FEB_REG_STATUS_WAIT_FOR_TRGGR_MSK (0x00000001 << FEB_REG_STATUS_WAIT_FOR_TRGGR_OFST) #define FEB_REG_STATUS_WAIT_FOR_TRGGR_MSK (0x00000001 << FEB_REG_STATUS_WAIT_FOR_TRGGR_OFST)
#define FEB_REG_STATUS_ACQ_DONE_OFST (6) #define FEB_REG_STATUS_ACQ_DONE_OFST (6)
#define FEB_REG_STATUS_ACQ_DONE_MSK (0x00000001 << FEB_REG_STATUS_ACQ_DONE_OFST) #define FEB_REG_STATUS_ACQ_DONE_MSK (0x00000001 << FEB_REG_STATUS_ACQ_DONE_OFST)
#define FEB_REG_STATUS_FX30_OFST (7)
#define FEB_REG_STATUS_FX30_MSK (0x00000001 << FEB_REG_STATUS_FX30_OFST)
#define FEB_REG_STATUS_FW_VERSION_OFST (8) #define FEB_REG_STATUS_FW_VERSION_OFST (8)
#define FEB_REG_STATUS_FW_VERSION_MSK (0x000000FF << FEB_REG_STATUS_FW_VERSION_OFST) #define FEB_REG_STATUS_FW_VERSION_MSK (0x000000FF << FEB_REG_STATUS_FW_VERSION_OFST)
#define FEB_REG_STATUS_TEMP_OFST (16) #define FEB_REG_STATUS_TEMP_OFST (16)

View File

@ -123,18 +123,18 @@ void basictests() {
int64_t sw_fw_apiversion = getFirmwareAPIVersion(); int64_t sw_fw_apiversion = getFirmwareAPIVersion();
LOG(logINFOBLUE, LOG(logINFOBLUE,
("**************************************************\n" ("\n********************************************************\n"
"Detector IP Addr:\t\t 0x%x\n" "Detector IP Addr : 0x%x\n"
"Detector MAC Addr:\t\t 0x%llx\n" "Detector MAC Addr : 0x%llx\n"
"Firmware Version:\t\t %lld\n" "Firmware (Beb) Version : %lld\n"
"Software Version:\t\t %s\n" "F/w-S/w API Version : %lld\n"
"F/w-S/w API Version:\t\t %lld\n" "Required Firmware Version: %d\n"
"Required Firmware Version:\t %d\n" "Software Version : %s\n"
"********************************************************\n", "********************************************************\n",
(unsigned int)ipadd, (long long unsigned int)macadd, (unsigned int)ipadd, (long long unsigned int)macadd,
(long long int)fwversion, swversion, (long long int)sw_fw_apiversion, (long long int)fwversion,
REQUIRED_FIRMWARE_VERSION)); (long long int)sw_fw_apiversion, REQUIRED_FIRMWARE_VERSION, swversion));
// update default udpdstip and udpdstmac (1g is hardware ip and hardware // update default udpdstip and udpdstmac (1g is hardware ip and hardware
// mac) // mac)
@ -161,9 +161,9 @@ void basictests() {
// check for API compatibility - old server // check for API compatibility - old server
if (sw_fw_apiversion > REQUIRED_FIRMWARE_VERSION) { if (sw_fw_apiversion > REQUIRED_FIRMWARE_VERSION) {
sprintf(initErrorMessage, sprintf(initErrorMessage,
"This firmware-software api version (0x%llx) is incompatible " "This firmware-software api version (0x%lld) is incompatible "
"with the software's minimum required firmware version " "with the software's minimum required firmware version "
"(0x%llx).\nPlease update detector software to be compatible " "(0x%lld).\nPlease update detector software to be compatible "
"with this firmware.\n", "with this firmware.\n",
(long long int)sw_fw_apiversion, (long long int)sw_fw_apiversion,
(long long int)REQUIRED_FIRMWARE_VERSION); (long long int)REQUIRED_FIRMWARE_VERSION);
@ -210,7 +210,7 @@ void getServerVersion(char *version) { strcpy(version, APIEIGER); }
u_int64_t getFirmwareVersion() { u_int64_t getFirmwareVersion() {
#ifdef VIRTUAL #ifdef VIRTUAL
return 0; return REQUIRED_FIRMWARE_VERSION;
#else #else
return Beb_GetFirmwareRevision(); return Beb_GetFirmwareRevision();
#endif #endif
@ -218,7 +218,9 @@ u_int64_t getFirmwareVersion() {
uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition) { uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition) {
uint64_t retval = 0; uint64_t retval = 0;
#ifndef VIRTUAL #ifdef VIRTUAL
return REQUIRED_FIRMWARE_VERSION;
#else
sharedMemory_lockLocalLink(); sharedMemory_lockLocalLink();
switch (fpgaPosition) { switch (fpgaPosition) {
case FRONT_LEFT: case FRONT_LEFT:
@ -230,7 +232,7 @@ uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition) {
default: default:
LOG(logERROR, LOG(logERROR,
("unknown index for fpga position to read firmware version\n")); ("unknown index for fpga position to read firmware version\n"));
retval = -1; retval = 0;
} }
sharedMemory_unlockLocalLink(); sharedMemory_unlockLocalLink();
#endif #endif
@ -239,12 +241,39 @@ uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition) {
u_int64_t getFirmwareAPIVersion() { u_int64_t getFirmwareAPIVersion() {
#ifdef VIRTUAL #ifdef VIRTUAL
return 0; return REQUIRED_FIRMWARE_VERSION;
#else #else
return (u_int64_t)Beb_GetFirmwareSoftwareAPIVersion(); return Beb_GetFirmwareSoftwareAPIVersion();
#endif #endif
} }
void getHardwareVersion(char *version) {
strcpy(version, "unknown");
int hwversion = getHardwareVersionNumber();
const int hwNumberList[] = HARDWARE_VERSION_NUMBERS;
const char *hwNamesList[] = HARDWARE_VERSION_NAMES;
for (int i = 0; i != NUM_HARDWARE_VERSIONS; ++i) {
LOG(logDEBUG, ("0x%x %d 0x%x %s\n", hwversion, i, hwNumberList[i],
hwNamesList[i]));
if (hwNumberList[i] == hwversion) {
strcpy(version, hwNamesList[i]);
return;
}
}
}
int getHardwareVersionNumber() {
int retval = 0;
#ifndef VIRTUAL
sharedMemory_lockLocalLink();
if (!Feb_Control_GetFPGAHardwareVersion(&retval)) {
retval = -1;
}
sharedMemory_unlockLocalLink();
#endif
return retval;
}
int getModuleId(int *ret, char *mess) { int getModuleId(int *ret, char *mess) {
return getModuleIdInFile(ret, mess, ID_FILE); return getModuleIdInFile(ret, mess, ID_FILE);
} }
@ -376,6 +405,36 @@ void initControlServer() {
Beb_SetTopVariable(top); Beb_SetTopVariable(top);
Beb_Beb(); Beb_Beb();
LOG(logDEBUG1, ("Control server: BEB Initialization done\n")); LOG(logDEBUG1, ("Control server: BEB Initialization done\n"));
// Getting the feb versions after initialization
char hversion[MAX_STR_LENGTH] = {0};
memset(hversion, 0, MAX_STR_LENGTH);
getHardwareVersion(hversion);
int64_t fwversion = getFirmwareVersion();
int64_t feblfwversion = getFrontEndFirmwareVersion(FRONT_LEFT);
int64_t febrfwversion = getFrontEndFirmwareVersion(FRONT_RIGHT);
LOG(logINFOBLUE,
("\n********************************************************\n"
"Feb Versions\n"
"Hardware Version : %s\n"
"Firmware (Febl) Version : %lld\n"
"Firmware (Febr) Version : %lld\n"
"********************************************************\n",
hversion, (long long int)feblfwversion,
(long long int)febrfwversion));
// ensure febl, febr and beb fw versions are the same
if (fwversion != feblfwversion || fwversion != febrfwversion) {
sprintf(initErrorMessage,
"Inconsistent firmware versions in feb and beb. [Beb: %lld, "
"Febl: %lld Febr: %lld]\n",
(long long int)fwversion, (long long int)feblfwversion,
(long long int)febrfwversion);
LOG(logERROR, (initErrorMessage));
initError = FAIL;
return;
}
#endif #endif
// also reads config file and deactivates // also reads config file and deactivates
setupDetector(); setupDetector();

View File

@ -5,6 +5,11 @@
#define LINKED_SERVER_NAME "eigerDetectorServer" #define LINKED_SERVER_NAME "eigerDetectorServer"
#define NUM_HARDWARE_VERSIONS (2)
#define HARDWARE_VERSION_NUMBERS {0x0, 0x1};
#define HARDWARE_VERSION_NAMES \
{ "FX70T", "FX30T" }
#define REQUIRED_FIRMWARE_VERSION (31) #define REQUIRED_FIRMWARE_VERSION (31)
// virtual ones renamed for consistency // virtual ones renamed for consistency
// real ones keep previous name for compatibility (already in production) // real ones keep previous name for compatibility (already in production)

View File

@ -82,8 +82,10 @@ u_int64_t getFirmwareVersion();
uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition); uint64_t getFrontEndFirmwareVersion(enum fpgaPosition fpgaPosition);
#endif #endif
u_int64_t getFirmwareAPIVersion(); u_int64_t getFirmwareAPIVersion();
#ifndef EIGERD
void getHardwareVersion(char *version); void getHardwareVersion(char *version);
#ifdef EIGERD
int getHardwareVersionNumber();
#else
u_int16_t getHardwareVersionNumber(); u_int16_t getHardwareVersionNumber();
#endif #endif
#if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD) #if defined(JUNGFRAUD) || defined(MOENCHD) || defined(CHIPTESTBOARDD)

View File

@ -732,8 +732,14 @@ int get_firmware_version(int file_des) {
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
int64_t retval = -1; int64_t retval = -1;
retval = getFirmwareVersion(); retval = getFirmwareVersion();
LOG(logDEBUG1, if (retval == 0) {
("firmware version retval: 0x%llx\n", (long long int)retval)); ret = FAIL;
strcpy(mess, "Could not get firmware version\n");
LOG(logERROR, (mess));
} else {
LOG(logDEBUG1,
("firmware version retval: 0x%llx\n", (long long int)retval));
}
return Server_SendResult(file_des, INT64, &retval, sizeof(retval)); return Server_SendResult(file_des, INT64, &retval, sizeof(retval));
} }
@ -10138,12 +10144,8 @@ int get_hardware_version(int file_des) {
memset(mess, 0, sizeof(mess)); memset(mess, 0, sizeof(mess));
char retvals[MAX_STR_LENGTH]; char retvals[MAX_STR_LENGTH];
memset(retvals, 0, MAX_STR_LENGTH); memset(retvals, 0, MAX_STR_LENGTH);
#ifdef EIGERD
functionNotImplemented();
#else
getHardwareVersion(retvals); getHardwareVersion(retvals);
LOG(logDEBUG1, ("hardware version retval: %s\n", retvals)); LOG(logDEBUG1, ("hardware version retval: %s\n", retvals));
#endif
return Server_SendResult(file_des, OTHER, retvals, sizeof(retvals)); return Server_SendResult(file_des, OTHER, retvals, sizeof(retvals));
} }
@ -10171,9 +10173,15 @@ int get_frontend_firmware_version(int file_des) {
} }
if (ret == OK) { if (ret == OK) {
retval = getFrontEndFirmwareVersion(arg); retval = getFrontEndFirmwareVersion(arg);
LOG(logDEBUG1, if (retval == 0) {
("Front %s version retval: 0x%llx\n", ret = FAIL;
(arg == FRONT_LEFT ? "left" : "right"), (long long int)retval)); strcpy(mess, "Could not get febl/r firmware version\n");
LOG(logERROR, (mess));
} else {
LOG(logDEBUG1, ("Front %s version retval: 0x%llx\n",
(arg == FRONT_LEFT ? "left" : "right"),
(long long int)retval));
}
} }
#endif #endif
return Server_SendResult(file_des, INT64, &retval, sizeof(retval)); return Server_SendResult(file_des, INT64, &retval, sizeof(retval));

View File

@ -85,7 +85,6 @@ class Detector {
Result<std::string> getDetectorServerVersion(Positions pos = {}) const; Result<std::string> getDetectorServerVersion(Positions pos = {}) const;
/** [Jungfrau][Moench][Gotthard2][Myhten3][Gotthard][Ctb] */
Result<std::string> getHardwareVersion(Positions pos = {}) const; Result<std::string> getHardwareVersion(Positions pos = {}) const;
Result<std::string> getKernelVersion(Positions pos = {}) const; Result<std::string> getKernelVersion(Positions pos = {}) const;

View File

@ -279,11 +279,7 @@ std::string CmdProxy::Versions(int action) {
auto t = det->getFirmwareVersion(std::vector<int>{det_id}); auto t = det->getFirmwareVersion(std::vector<int>{det_id});
os << "\nType : " << OutString(det->getDetectorType()) os << "\nType : " << OutString(det->getDetectorType())
<< "\nRelease : " << det->getPackageVersion() << std::hex << "\nRelease : " << det->getPackageVersion() << std::hex
<< "\nClient : " << det->getClientVersion() << "\nClient : " << det->getClientVersion();
<< "\nServer : "
<< OutString(det->getDetectorServerVersion(std::vector<int>{det_id}))
<< "\nKernel : "
<< OutString(det->getKernelVersion({std::vector<int>{det_id}}));
if (eiger) { if (eiger) {
os << "\nFirmware (Beb) : " os << "\nFirmware (Beb) : "
@ -297,11 +293,16 @@ std::string CmdProxy::Versions(int action) {
} else { } else {
os << "\nFirmware : " os << "\nFirmware : "
<< OutStringHex( << OutStringHex(
det->getFirmwareVersion(std::vector<int>{det_id})) det->getFirmwareVersion(std::vector<int>{det_id}));
<< "\nHardware : "
<< OutString(det->getHardwareVersion(std::vector<int>{det_id}));
} }
os << "\nServer : "
<< OutString(det->getDetectorServerVersion(std::vector<int>{det_id}))
<< "\nKernel : "
<< OutString(det->getKernelVersion({std::vector<int>{det_id}}))
<< "\nHardware : "
<< OutString(det->getHardwareVersion(std::vector<int>{det_id}));
if (det->getUseReceiverFlag().squash(true)) { if (det->getUseReceiverFlag().squash(true)) {
os << "\nReceiver : " os << "\nReceiver : "
<< OutString(det->getReceiverVersion(std::vector<int>{det_id})); << OutString(det->getReceiverVersion(std::vector<int>{det_id}));

View File

@ -1244,7 +1244,8 @@ class CmdProxy {
GET_COMMAND(hardwareversion, getHardwareVersion, GET_COMMAND(hardwareversion, getHardwareVersion,
"\n\t[Jungfrau][Gotthard2][Myhten3][Gotthard][Ctb][Moench] " "\n\t[Jungfrau][Gotthard2][Myhten3][Gotthard][Ctb][Moench] "
"Hardware version of detector."); "Hardware version of detector. \n\t[Eiger] Hardware version of "
"front FPGA on detector.");
GET_COMMAND( GET_COMMAND(
kernelversion, getKernelVersion, kernelversion, getKernelVersion,

View File

@ -116,14 +116,8 @@ TEST_CASE("detectorserverversion", "[.cmd]") {
TEST_CASE("hardwareversion", "[.cmd]") { TEST_CASE("hardwareversion", "[.cmd]") {
Detector det; Detector det;
CmdProxy proxy(&det); CmdProxy proxy(&det);
auto det_type = det.getDetectorType().squash(); REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET));
if (det_type != defs::EIGER) { REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET));
REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
} else {
REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
REQUIRE_THROWS(proxy.Call("hardwareversion", {}, -1, GET));
}
} }
TEST_CASE("kernelversion", "[.cmd]") { TEST_CASE("kernelversion", "[.cmd]") {
@ -519,7 +513,7 @@ TEST_CASE("gappixels", "[.cmd]") {
// test eiger(quad or full module only) // test eiger(quad or full module only)
bool gapPixelTest = false; bool gapPixelTest = false;
if (det_type == defs:: || det_type == defs::MOENCH) if (det_type == defs::JUNGFRAU || det_type == defs::MOENCH)
gapPixelTest = true; gapPixelTest = true;
else if (det_type == defs::EIGER) { else if (det_type == defs::EIGER) {
bool quad = det.getQuad().squash(false); bool quad = det.getQuad().squash(false);

View File

@ -7,6 +7,7 @@
#include <signal.h> #include <signal.h>
#include <thread> #include <thread>
#include <unistd.h> #include <unistd.h>
#include<sys/wait.h>
namespace sls { namespace sls {
@ -16,6 +17,10 @@ namespace sls {
#define gettid() syscall(SYS_gettid) #define gettid() syscall(SYS_gettid)
#endif #endif
void func(int signum) {
wait(NULL);
}
Arping::Arping() {} Arping::Arping() {}
Arping::~Arping() { Arping::~Arping() {
@ -44,10 +49,11 @@ pid_t Arping::GetProcessId() const { return childPid; }
bool Arping::IsRunning() const { return runningFlag; } bool Arping::IsRunning() const { return runningFlag; }
void Arping::StartProcess() { void Arping::StartProcess() {
TestCommands();
// to prevent zombies from child processes being killed // to prevent zombies from child processes being killed
signal(SIGCHLD, SIG_IGN); signal(SIGCHLD, func);
// test once to throw exception if arping failed
TestForErrors();
// Needs to be a fork and udp socket deleted after Listening threads // Needs to be a fork and udp socket deleted after Listening threads
// done running to prevent udp socket cannot bind because of popen // done running to prevent udp socket cannot bind because of popen
@ -90,7 +96,7 @@ void Arping::ProcessExecution() {
} }
} }
void Arping::TestCommands() { void Arping::TestForErrors() {
// atleast one interface must be set up // atleast one interface must be set up
if (commands[0].empty()) { if (commands[0].empty()) {
throw RuntimeError( throw RuntimeError(
@ -116,7 +122,7 @@ std::string Arping::ExecuteCommands() {
FILE *sysFile = popen(cmd.c_str(), "r"); FILE *sysFile = popen(cmd.c_str(), "r");
if (sysFile == NULL) { if (sysFile == NULL) {
std::ostringstream os; std::ostringstream os;
os << "Could not Arping [" << cmd << " ] : Popen fail"; os << "Could not Arping (" << cmd << " ) : Popen fail (" << strerror(errno) << ')';
return os.str(); return os.str();
} }
@ -128,7 +134,7 @@ std::string Arping::ExecuteCommands() {
// check exit status of command // check exit status of command
if (pclose(sysFile)) { if (pclose(sysFile)) {
std::ostringstream os; std::ostringstream os;
os << "Could not arping[" << cmd << "] : " << output; os << "Could not arping (" << cmd << ") : " << strerror(errno);
return os.str(); return os.str();
} else { } else {
LOG(logDEBUG) << output; LOG(logDEBUG) << output;

View File

@ -28,7 +28,7 @@ class Arping {
void StopProcess(); void StopProcess();
private: private:
void TestCommands(); void TestForErrors();
std::string ExecuteCommands(); std::string ExecuteCommands();
void ProcessExecution(); void ProcessExecution();

View File

@ -402,7 +402,8 @@ int ClientInterface::setup_receiver(Interface &socket) {
impl()->setDynamicRange(arg.dynamicRange); impl()->setDynamicRange(arg.dynamicRange);
} }
impl()->setTimingMode(arg.timMode); impl()->setTimingMode(arg.timMode);
if (detType == EIGER || detType == CHIPTESTBOARD || detType == MYTHEN3) { if (detType == EIGER || detType == CHIPTESTBOARD ||
detType == MYTHEN3) {
impl()->setTenGigaEnable(arg.tenGiga); impl()->setTenGigaEnable(arg.tenGiga);
} }
if (detType == CHIPTESTBOARD) { if (detType == CHIPTESTBOARD) {

View File

@ -14,14 +14,14 @@ HDF5DataFile::HDF5DataFile(int index, std::mutex *hdf5Lib)
"frame number", "frame number",
"exp length or sub exposure time", "exp length or sub exposure time",
"packets caught", "packets caught",
"bunch id", "detector specific 1",
"timestamp", "timestamp",
"mod id", "mod id",
"row", "row",
"column", "column",
"reserved", "detector specific 2",
"debug", "detector specific 3",
"round robin number", "detector specific 4",
"detector type", "detector type",
"detector header version", "detector header version",
"packets caught bit mask", "packets caught bit mask",
@ -317,7 +317,7 @@ void HDF5DataFile::WriteParameterDatasets(const uint64_t currentFrameNumber,
dataSetPara[2]->write(&header.packetNumber, parameterDataTypes[2], dataSetPara[2]->write(&header.packetNumber, parameterDataTypes[2],
memspace, *dataSpacePara); memspace, *dataSpacePara);
i = 3; i = 3;
dataSetPara[3]->write(&header.bunchId, parameterDataTypes[3], memspace, dataSetPara[3]->write(&header.detSpec1, parameterDataTypes[3], memspace,
*dataSpacePara); *dataSpacePara);
i = 4; i = 4;
dataSetPara[4]->write(&header.timestamp, parameterDataTypes[4], dataSetPara[4]->write(&header.timestamp, parameterDataTypes[4],
@ -332,13 +332,13 @@ void HDF5DataFile::WriteParameterDatasets(const uint64_t currentFrameNumber,
dataSetPara[7]->write(&header.column, parameterDataTypes[7], memspace, dataSetPara[7]->write(&header.column, parameterDataTypes[7], memspace,
*dataSpacePara); *dataSpacePara);
i = 8; i = 8;
dataSetPara[8]->write(&header.reserved, parameterDataTypes[8], memspace, dataSetPara[8]->write(&header.detSpec2, parameterDataTypes[8], memspace,
*dataSpacePara); *dataSpacePara);
i = 9; i = 9;
dataSetPara[9]->write(&header.debug, parameterDataTypes[9], memspace, dataSetPara[9]->write(&header.detSpec3, parameterDataTypes[9], memspace,
*dataSpacePara); *dataSpacePara);
i = 10; i = 10;
dataSetPara[10]->write(&header.roundRNumber, parameterDataTypes[10], dataSetPara[10]->write(&header.detSpec4, parameterDataTypes[10],
memspace, *dataSpacePara); memspace, *dataSpacePara);
i = 11; i = 11;
dataSetPara[11]->write(&header.detType, parameterDataTypes[11], dataSetPara[11]->write(&header.detType, parameterDataTypes[11],

View File

@ -1132,7 +1132,7 @@ int Implementation::getUDPSocketBufferSize() const {
void Implementation::setUDPSocketBufferSize(const int s) { void Implementation::setUDPSocketBufferSize(const int s) {
size_t listSize = listener.size(); size_t listSize = listener.size();
if ((generalData->detType == JUNGFRAU || generalData->detType == MOENCH || if ((generalData->detType == JUNGFRAU || generalData->detType == MOENCH ||
generalData->detType == GOTTHARD2) && generalData->detType == GOTTHARD2) &&
(int)listSize != generalData->numUDPInterfaces) { (int)listSize != generalData->numUDPInterfaces) {
throw RuntimeError("Number of Interfaces " + throw RuntimeError("Number of Interfaces " +

View File

@ -635,7 +635,7 @@ void MasterAttributes::GetMoenchBinaryAttributes(
} }
#ifdef HDF5C #ifdef HDF5C
void MasterAttributes::WriteMoenchuHDF5Attributes(H5::H5File *fd, void MasterAttributes::WriteMoenchHDF5Attributes(H5::H5File *fd,
H5::Group *group) { H5::Group *group) {
MasterAttributes::WriteHDF5Exptime(fd, group); MasterAttributes::WriteHDF5Exptime(fd, group);
MasterAttributes::WriteHDF5Period(fd, group); MasterAttributes::WriteHDF5Period(fd, group);

View File

@ -1,13 +1,13 @@
// SPDX-License-Identifier: LGPL-3.0-or-other // SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package // Copyright (C) 2021 Contributors to the SLS Detector Package
/** API versions */ /** API versions */
#define RELEASE "developer" #define RELEASE "developer"
#define APICTB "developer 0x230224" #define APICTB "developer 0x230224"
#define APIGOTTHARD "developer 0x230224" #define APIGOTTHARD "developer 0x230224"
#define APIGOTTHARD2 "developer 0x230224" #define APIGOTTHARD2 "developer 0x230224"
#define APIJUNGFRAU "developer 0x230224" #define APIJUNGFRAU "developer 0x230224"
#define APIMYTHEN3 "developer 0x230224" #define APIMYTHEN3 "developer 0x230224"
#define APIMOENCH "developer 0x230224" #define APIMOENCH "developer 0x230224"
#define APILIB "developer 0x230224"
#define APIRECEIVER "developer 0x230224"
#define APIEIGER "developer 0x230224" #define APIEIGER "developer 0x230224"
#define APILIB "developer 0x230224"
#define APIRECEIVER "developer 0x230224"