mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 03:10:02 +02:00
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
This commit is contained in:
parent
bc46d0f6ab
commit
d23722a4b7
@ -29,7 +29,8 @@ 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
|
- fixed rx_arping error
|
||||||
- fix hdf5 compilation (detspec fields)
|
- fix hdf5 compilation (detspec fields)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
Binary file not shown.
@ -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();
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
|
@ -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}));
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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 " +
|
||||||
|
@ -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"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user