diff --git a/slsDetectorGui/src/qTabDebugging.cpp b/slsDetectorGui/src/qTabDebugging.cpp
index 0365930cb..30844a861 100755
--- a/slsDetectorGui/src/qTabDebugging.cpp
+++ b/slsDetectorGui/src/qTabDebugging.cpp
@@ -186,25 +186,20 @@ void qTabDebugging::TestDetector() {
//detector firmware
if (chkDetectorFirmware->isChecked()) {
- auto retval = det->executeFirmwareTest({comboDetector->currentIndex()})[0];
- if (retval == slsDetectorDefs::FAIL) {
- message.append(QString("%1 Firmware: FAIL
").arg(moduleName));
- FILE_LOG(logERROR) << "Firmware fail";
- }
- else
- message.append(QString("%1 Firmware: %2
").arg(moduleName, QString::number(retval)));
- FILE_LOG(logINFO) << "Detector Firmware Test: " << retval;
+ try {
+ det->executeFirmwareTest({comboDetector->currentIndex()});
+ message.append(QString("%1 Firmware: PASS
").arg(moduleName));
+ FILE_LOG(logINFO) << "Detector Firmware Test: Pass";
+ } CATCH_DISPLAY ("Firmware test failed.", "qTabDebugging::TestDetector")
}
//detector CPU-FPGA bus
if (chkDetectorBus->isChecked()) {
- auto retval = det->executeBusTest({comboDetector->currentIndex()})[0];
- if (retval == slsDetectorDefs::FAIL) {
- message.append(QString("%1 Bus: FAIL
").arg(moduleName));
- FILE_LOG(logERROR) << "Bus Test fail";
- } else
- message.append(QString("%1 Bus: %2
").arg(moduleName, QString::number(retval)));
- FILE_LOG(logINFO) << "Detector Bus Test: " << retval;
+ try {
+ det->executeBusTest({comboDetector->currentIndex()});
+ message.append(QString("%1 Bus: PASS
").arg(moduleName));
+ FILE_LOG(logINFO) << "Detector Bus Test: Pass";
+ } CATCH_DISPLAY ("Bus test failed.", "qTabDebugging::TestDetector")
}
//display message
diff --git a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer
index 9d7bbbbfb..1ffc0f30a 100755
Binary files a/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer and b/slsDetectorServers/ctbDetectorServer/bin/ctbDetectorServer_developer differ
diff --git a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c
index ae8117394..69a7e563c 100755
--- a/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/ctbDetectorServer/slsDetectorFunctionList.c
@@ -118,14 +118,14 @@ void basictests() {
uint16_t hsnumber = getHardwareSerialNumber();
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
int64_t sw_fw_apiversion = 0;
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
if (fwversion >= MIN_REQRD_VRSN_T_RD_API)
- sw_fw_apiversion = getDetectorId(SOFTWARE_FIRMWARE_API_VERSION);
+ sw_fw_apiversion = getFirmwareAPIVersion();
FILE_LOG(logINFOBLUE, ("************ Chip Test Board Server *********************\n"
"Hardware Version:\t\t 0x%x\n"
"Hardware Serial Nr:\t\t 0x%x\n"
@@ -323,39 +323,15 @@ int testBus() {
return ret;
}
-int detectorTest( enum digitalTestMode arg){
-#ifdef VIRTUAL
- return OK;
-#endif
- switch(arg){
- case DETECTOR_FIRMWARE_TEST: return testFpga();
- case DETECTOR_BUS_TEST: return testBus();
- default:
- FILE_LOG(logERROR, ("Test %s not implemented for this detector\n", (int)arg));
- break;
- }
- return OK;
-}
-
/* Ids */
-int64_t getDetectorId(enum idMode arg){
- int64_t retval = -1;
+uint64_t getServerVersion() {
+ return APICTB;
+}
- switch(arg){
- case DETECTOR_SERIAL_NUMBER:
- return getDetectorNumber();
- case DETECTOR_FIRMWARE_VERSION:
- return getFirmwareVersion();
- case SOFTWARE_FIRMWARE_API_VERSION:
- return getFirmwareAPIVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APICTB;
- default:
- return retval;
- }
+uint64_t getClientServerAPIVersion() {
+ return APICTB;
}
uint64_t getFirmwareVersion() {
diff --git a/slsDetectorServers/eigerDetectorServer/Beb.c b/slsDetectorServers/eigerDetectorServer/Beb.c
index e958f5da7..a4b9b7da1 100755
--- a/slsDetectorServers/eigerDetectorServer/Beb.c
+++ b/slsDetectorServers/eigerDetectorServer/Beb.c
@@ -454,6 +454,146 @@ int Beb_Set32bitOverflow(int val) {
return valueread;
}
+int Beb_GetTenGigaFlowControl() {
+ u_int32_t offset = FLOW_REG_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to get ten giga flow control. FAIL\n"));
+ return -1;
+ } else {
+ u_int32_t retval = Beb_Read32(csp0base, offset);
+ retval = (retval & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK) >> FLOW_REG_TXM_FLOW_CNTRL_10G_OFST;
+
+ Beb_close(fd,csp0base);
+ return retval;
+ }
+}
+
+int Beb_SetTenGigaFlowControl(int value) {
+ FILE_LOG(logINFO, ("Setting ten giga flow control to %d\n", value));
+ value = value == 0 ? 0 : 1;
+ u_int32_t offset = FLOW_REG_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to set ten giga flow control. FAIL\n"));
+ return 0;
+ } else {
+ // reset bit
+ u_int32_t retval = Beb_Read32(csp0base, offset);
+ Beb_Write32(csp0base, offset,retval & ~FLOW_REG_TXM_FLOW_CNTRL_10G_MSK);
+
+ // set bit
+ retval = Beb_Read32(csp0base, offset);
+ Beb_Write32(csp0base, offset,retval |
+ ((value << FLOW_REG_TXM_FLOW_CNTRL_10G_OFST) & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK));
+
+ Beb_close(fd,csp0base);
+ return 1;
+ }
+}
+
+int Beb_GetTransmissionDelayFrame() {
+ u_int32_t offset = TXM_DELAY_FRAME_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to get transmission delay frame. FAIL\n"));
+ return -1;
+ } else {
+ u_int32_t retval = Beb_Read32(csp0base, offset);
+ Beb_close(fd,csp0base);
+ return retval;
+ }
+}
+
+int Beb_SetTransmissionDelayFrame(int value) {
+ FILE_LOG(logINFO, ("Setting transmission delay frame to %d\n", value));
+ if (value < 0) {
+ FILE_LOG(logERROR, ("Invalid transmission delay frame value %d\n", value));
+ return 0;
+ }
+ u_int32_t offset = TXM_DELAY_FRAME_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to set transmission delay frame. FAIL\n"));
+ return 0;
+ } else {
+ Beb_Write32(csp0base, offset, value);
+ Beb_close(fd,csp0base);
+ return 1;
+ }
+}
+
+int Beb_GetTransmissionDelayLeft() {
+ u_int32_t offset = TXM_DELAY_LEFT_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to get transmission delay left. FAIL\n"));
+ return -1;
+ } else {
+ u_int32_t retval = Beb_Read32(csp0base, offset);
+ Beb_close(fd,csp0base);
+ return retval;
+ }
+}
+
+int Beb_SetTransmissionDelayLeft(int value) {
+ FILE_LOG(logINFO, ("Setting transmission delay left to %d\n", value));
+ if (value < 0) {
+ FILE_LOG(logERROR, ("Invalid transmission delay left value %d\n", value));
+ return 0;
+ }
+ u_int32_t offset = TXM_DELAY_LEFT_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to set transmission delay left. FAIL\n"));
+ return 0;
+ } else {
+ Beb_Write32(csp0base, offset, value);
+ Beb_close(fd,csp0base);
+ return 1;
+ }
+}
+
+int Beb_GetTransmissionDelayRight() {
+ u_int32_t offset = TXM_DELAY_RIGHT_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to get transmission delay right. FAIL\n"));
+ return -1;
+ } else {
+ u_int32_t retval = Beb_Read32(csp0base, offset);
+ Beb_close(fd,csp0base);
+ return retval;
+ }
+}
+
+int Beb_SetTransmissionDelayRight(int value) {
+ FILE_LOG(logINFO, ("Setting transmission delay right to %d\n", value));
+ if (value < 0) {
+ FILE_LOG(logERROR, ("Invalid transmission delay right value %d\n", value));
+ return 0;
+ }
+ u_int32_t offset = TXM_DELAY_RIGHT_OFFSET;
+ u_int32_t* csp0base = 0;
+ int fd = Beb_open(&csp0base,XPAR_PLB_GPIO_SYS_BASEADDR);
+ if (fd <= 0) {
+ FILE_LOG(logERROR, ("Could not read register to set transmission delay right. FAIL\n"));
+ return 0;
+ } else {
+ Beb_Write32(csp0base, offset, value);
+ Beb_close(fd,csp0base);
+ return 1;
+ }
+}
+
+
int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
if (!Beb_activated)
@@ -475,15 +615,8 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
offset = TXM_DELAY_RIGHT_OFFSET;
strcpy(modename,"Transmission Delay Right");
break;
- case TXN_FRAME:
- offset = TXM_DELAY_FRAME_OFFSET;
- strcpy(modename,"Transmission Delay Frame");
- break;
- case FLOWCTRL_10G:
- offset = FLOW_REG_OFFSET;
- strcpy(modename,"Flow Control for 10G");
- if (val>0) val = 1;
- break;
+
+
default: FILE_LOG(logERROR, ("Unrecognized mode in network parameter: %d\n",mode)); return -1;
}
//open file pointer
@@ -491,31 +624,15 @@ int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val) {
if (fd < 0) {
FILE_LOG(logERROR, ("Could not read register to set network parameter. FAIL\n"));
return -1;
- }
- else {
+ } else {
if (val > -1) {
- if (mode != FLOWCTRL_10G) {
valueread = Beb_Read32(csp0base, offset);
Beb_Write32(csp0base, offset,val);
- }
- // flow control reg has other bits for other control
- else {
- // reset bit
- valueread = Beb_Read32(csp0base, offset);
- Beb_Write32(csp0base, offset,valueread & ~FLOW_REG_TXM_FLOW_CNTRL_10G_MSK);
-
- // set bit
- valueread = Beb_Read32(csp0base, offset);
- Beb_Write32(csp0base, offset,valueread |
- ((val << FLOW_REG_TXM_FLOW_CNTRL_10G_OFST) & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK));
-
- }
}
valueread = Beb_Read32(csp0base, offset);
- if (mode == FLOWCTRL_10G)
- valueread = (valueread & FLOW_REG_TXM_FLOW_CNTRL_10G_MSK) >> FLOW_REG_TXM_FLOW_CNTRL_10G_OFST;
+
}
//close file pointer
diff --git a/slsDetectorServers/eigerDetectorServer/Beb.h b/slsDetectorServers/eigerDetectorServer/Beb.h
index 3ca53043b..e661873a2 100755
--- a/slsDetectorServers/eigerDetectorServer/Beb.h
+++ b/slsDetectorServers/eigerDetectorServer/Beb.h
@@ -41,7 +41,16 @@ int Beb_SetSlaveViaSoftware();
int Beb_Activate(int enable);
int Beb_GetActivate();
int Beb_Set32bitOverflow(int val);
-int Beb_SetNetworkParameter(enum NETWORKINDEX mode, int val);
+
+int Beb_GetTenGigaFlowControl();
+int Beb_SetTenGigaFlowControl(int value);
+int Beb_GetTransmissionDelayFrame();
+int Beb_SetTransmissionDelayFrame(int value);
+int Beb_GetTransmissionDelayLeft();
+int Beb_SetTransmissionDelayLeft(int value);
+int Beb_GetTransmissionDelayRight();
+int Beb_SetTransmissionDelayRight(int value);
+
int Beb_ResetToHardwareSettings();
u_int32_t Beb_GetFirmwareRevision();
u_int32_t Beb_GetFirmwareSoftwareAPIVersion();
diff --git a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer
index ea52597d8..23dce501c 100755
Binary files a/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer and b/slsDetectorServers/eigerDetectorServer/bin/eigerDetectorServer_developer differ
diff --git a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c
index 7750da6ff..a5c7a4aa2 100755
--- a/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/eigerDetectorServer/slsDetectorFunctionList.c
@@ -110,10 +110,10 @@ void basictests() {
#endif
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
- int64_t sw_fw_apiversion = getDetectorId(SOFTWARE_FIRMWARE_API_VERSION);
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
+ int64_t sw_fw_apiversion = getFirmwareAPIVersion();
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
FILE_LOG(logINFOBLUE, ("**************** EIGER Server *********************\n\n"
"Detector IP Addr:\t\t 0x%x\n"
@@ -190,26 +190,12 @@ void basictests() {
/* Ids */
-int64_t getDetectorId(enum idMode arg) {
-
- int64_t retval = -1;
- switch(arg) {
- case DETECTOR_SERIAL_NUMBER:
- retval = getDetectorNumber();/** to be implemented with mac? */
- break;
- case DETECTOR_FIRMWARE_VERSION:
- return (int64_t)getFirmwareVersion();
- case SOFTWARE_FIRMWARE_API_VERSION:
- return (int64_t)getFirmwareAPIVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APIEIGER;
- default:
- break;
- }
-
- return retval;
+uint64_t getServerVersion() {
+ return APIEIGER;
+}
+uint64_t getClientServerAPIVersion() {
+ return APIEIGER;
}
u_int64_t getFirmwareVersion() {
@@ -1347,6 +1333,7 @@ int setClockDivider(enum CLKINDEX ind, int val) {
#endif
eiger_readoutspeed = val;
}
+ return OK;
}
int getClockDivider(enum CLKINDEX ind) {
@@ -1600,44 +1587,83 @@ int activate(int enable) {
#endif
}
-int setNetworkParameter(enum NETWORKINDEX mode, int value) {
-#ifndef VIRTUAL
- return Beb_SetNetworkParameter(mode, value);
+int getTenGigaFlowControl() {
+#ifdef VIRTUAL
+ return eiger_virtual_transmission_flowcontrol_10g;
#else
- if (value>-1) {
- switch(mode) {
- case TXN_LEFT:
- eiger_virtual_transmission_delay_left = value;
- break;
- case TXN_RIGHT:
- eiger_virtual_transmission_delay_right = value;
- break;
- case TXN_FRAME:
- eiger_virtual_transmission_delay_frame = value;
- break;
- case FLOWCTRL_10G:
- eiger_virtual_transmission_flowcontrol_10g = value;
- if (value>0) value = 1;
- break;
- default: FILE_LOG(logERROR, ("Unrecognized mode in network parameter: %d\n",mode));
- return -1;
- }
- }
- switch(mode) {
- case TXN_LEFT:
- return eiger_virtual_transmission_delay_left;
- case TXN_RIGHT:
- return eiger_virtual_transmission_delay_right;
- case TXN_FRAME:
- return eiger_virtual_transmission_delay_frame;
- case FLOWCTRL_10G:
- return eiger_virtual_transmission_flowcontrol_10g;
- default: FILE_LOG(logERROR, ("Unrecognized mode in network parameter: %d\n",mode));
- return -1;
- }
+ return Beb_GetTenGigaFlowControl();
#endif
}
+int setTenGigaFlowControl(int value) {
+#ifdef VIRTUAL
+ eiger_virtual_transmission_flowcontrol_10g = (value == 0? 0 : 1);
+#else
+ if (!Beb_SetTenGigaFlowControl(value)) {
+ return FAIL;
+ }
+#endif
+ return OK;
+}
+
+int getTransmissionDelayFrame() {
+#ifdef VIRTUAL
+ return eiger_virtual_transmission_delay_frame;
+#else
+ return Beb_GetTransmissionDelayFrame();
+#endif
+}
+
+int setTransmissionDelayFrame(int value) {
+#ifdef VIRTUAL
+ eiger_virtual_transmission_delay_frame = value;
+#else
+ if (!Beb_SetTransmissionDelayFrame(value)) {
+ return FAIL;
+ }
+#endif
+ return OK;
+}
+
+int getTransmissionDelayLeft() {
+#ifdef VIRTUAL
+ return eiger_virtual_transmission_delay_left;
+#else
+ return Beb_GetTransmissionDelayLeft();
+#endif
+}
+
+int setTransmissionDelayLeft(int value) {
+#ifdef VIRTUAL
+ eiger_virtual_transmission_delay_left = value;
+#else
+ if (!Beb_SetTransmissionDelayLeft(value)) {
+ return FAIL;
+ }
+#endif
+ return OK;
+}
+
+int getTransmissionDelayRight() {
+#ifdef VIRTUAL
+ return eiger_virtual_transmission_delay_right;
+#else
+ return Beb_GetTransmissionDelayRight();
+#endif
+}
+
+int setTransmissionDelayRight(int value) {
+#ifdef VIRTUAL
+ eiger_virtual_transmission_delay_right = value;
+#else
+ if (!Beb_SetTransmissionDelayRight(value)) {
+ return FAIL;
+ }
+#endif
+ return OK;
+}
+
+
diff --git a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer
index 9e75428bc..374ef5ee6 100755
Binary files a/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer and b/slsDetectorServers/gotthard2DetectorServer/bin/gotthard2DetectorServer_developer differ
diff --git a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c
index a6848a43b..33420f4c6 100644
--- a/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/gotthard2DetectorServer/slsDetectorFunctionList.c
@@ -78,7 +78,7 @@ void basictests() {
// does check only if flag is 0 (by default), set by command line
if ((!debugflag) && ((testFpga() == FAIL) || (testBus() == FAIL))) {
sprintf(firmware_message,
- "Could not pass basic tests of FPGA and bus. Dangerous to continue. (Firmware version:0x%llx) \n", getDetectorId(DETECTOR_FIRMWARE_VERSION));
+ "Could not pass basic tests of FPGA and bus. Dangerous to continue. (Firmware version:0x%llx) \n", getFirmwareVersion());
FILE_LOG(logERROR, ("%s\n\n", firmware_message));
firmware_compatibility = FAIL;
firmware_check_done = 1;
@@ -88,10 +88,10 @@ void basictests() {
uint16_t hversion = getHardwareVersionNumber();
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
- int64_t sw_fw_apiversion = getDetectorId(SOFTWARE_FIRMWARE_API_VERSION);
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
+ int64_t sw_fw_apiversion = getFirmwareAPIVersion();
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
uint32_t requiredFirmwareVersion = REQRD_FRMWRE_VRSN;
FILE_LOG(logINFOBLUE, ("************ Gotthard2 Server *********************\n"
@@ -223,22 +223,12 @@ int testBus() {
/* Ids */
-int64_t getDetectorId(enum idMode arg){
- int64_t retval = -1;
+uint64_t getServerVersion() {
+ return APIGOTTHARD2;
+}
- switch(arg){
- case DETECTOR_SERIAL_NUMBER:
- return getDetectorNumber();// or getDetectorMAC()
- case DETECTOR_FIRMWARE_VERSION:
- return getFirmwareVersion();
- case SOFTWARE_FIRMWARE_API_VERSION:
- return getFirmwareAPIVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APIGOTTHARD2;
- default:
- return retval;
- }
+uint64_t getClientServerAPIVersion() {
+ return APIGOTTHARD2;
}
u_int64_t getFirmwareVersion() {
diff --git a/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer b/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer
index 18df6dc55..710f6215b 100755
Binary files a/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer and b/slsDetectorServers/gotthardDetectorServer/bin/gotthardDetectorServer_developer differ
diff --git a/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c
index c828b8c59..c998d6ddd 100755
--- a/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/gotthardDetectorServer/slsDetectorFunctionList.c
@@ -101,9 +101,9 @@ void basictests() {
uint32_t boardrev = getBoardRevision();
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
FILE_LOG(logINFOBLUE, ("************ Gotthard Server *********************\n"
"Board Revision : 0x%x\n"
@@ -243,51 +243,32 @@ int testBus() {
return ret;
}
-int detectorTest( enum digitalTestMode arg, int ival) {
-#ifdef VIRTUAL
- return OK;
-#endif
- switch(arg){
- case IMAGE_TEST: return testImage(ival);
- case DETECTOR_FIRMWARE_TEST: return testFpga();
- case DETECTOR_BUS_TEST: return testBus();
- default:
- FILE_LOG(logERROR, ("Test not implemented for this detector %d\n", (int)arg));
- break;
- }
- return OK;
-}
-int testImage(int ival) {
+void setTestImageMode(int ival) {
uint32_t addr = MULTI_PURPOSE_REG;
if (ival >= 0) {
if (ival == 0) {
- FILE_LOG(logINFO, ("Switching on Image Test\n"));
+ FILE_LOG(logINFO, ("Switching on Image Test Mode\n"));
bus_w (addr, bus_r(addr) & ~DGTL_TST_MSK);
} else {
- FILE_LOG(logINFO, ("Switching off Image Test\n"));
+ FILE_LOG(logINFO, ("Switching off Image Test Mode\n"));
bus_w (addr, bus_r(addr) | DGTL_TST_MSK);
}
}
- return ((bus_r(addr) & DGTL_TST_MSK) >> DGTL_TST_OFST);
+}
+
+int getTestImageMode() {
+ return ((bus_r(MULTI_PURPOSE_REG) & DGTL_TST_MSK) >> DGTL_TST_OFST);
}
/* Ids */
-int64_t getDetectorId(enum idMode arg){
- int64_t retval = -1;
+uint64_t getServerVersion() {
+ return APIGOTTHARD;
+}
- switch(arg){
- case DETECTOR_SERIAL_NUMBER:
- return getDetectorNumber();
- case DETECTOR_FIRMWARE_VERSION:
- return getFirmwareVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APIGOTTHARD;
- default:
- return retval;
- }
+uint64_t getClientServerAPIVersion() {
+ return APIGOTTHARD;
}
u_int64_t getFirmwareVersion() {
@@ -426,6 +407,9 @@ void setupDetector() {
setPeriod(DEFAULT_PERIOD);
setDelayAfterTrigger(DEFAULT_DELAY);
+ cleanFifos();
+
+
}
int setDefaultDacs() {
@@ -1509,6 +1493,7 @@ int setPhase(enum CLKINDEX ind, int val, int degrees) {
return FAIL;
}
setPhaseShift(val);
+ return OK;
}
/* aquisition */
diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer
index df5a5edd6..2200353bc 100755
Binary files a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer and b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer differ
diff --git a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c
index 0e4d58525..5993d1596 100755
--- a/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/jungfrauDetectorServer/slsDetectorFunctionList.c
@@ -95,15 +95,15 @@ void basictests() {
uint16_t hsnumber = getHardwareSerialNumber();
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
int64_t sw_fw_apiversion = 0;
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
uint32_t requiredFirmwareVersion = (isHardwareVersion2() ? REQRD_FRMWRE_VRSN_BOARD2 : REQRD_FRMWRE_VRSN);
if (fwversion >= MIN_REQRD_VRSN_T_RD_API)
- sw_fw_apiversion = getDetectorId(SOFTWARE_FIRMWARE_API_VERSION);
+ sw_fw_apiversion = getFirmwareAPIVersion();
FILE_LOG(logINFOBLUE, ("************ Jungfrau Server *********************\n"
"Hardware Version:\t\t 0x%x\n"
"Hardware Serial Nr:\t\t 0x%x\n"
@@ -240,44 +240,15 @@ int testBus() {
-int detectorTest( enum digitalTestMode arg){
-#ifdef VIRTUAL
- return OK;
-#endif
- switch(arg){
- case DETECTOR_FIRMWARE_TEST: return testFpga();
- case DETECTOR_BUS_TEST: return testBus();
- //DETECTOR_MEMORY_TEST:testRAM
- //DETECTOR_SOFTWARE_TEST:
- default:
- FILE_LOG(logERROR, ("Test %s not implemented for this detector\n", (int)arg));
- break;
- }
- return OK;
-}
-
-
-
-
/* Ids */
-int64_t getDetectorId(enum idMode arg){
- int64_t retval = -1;
+uint64_t getServerVersion() {
+ return APIJUNGFRAU;
+}
- switch(arg){
- case DETECTOR_SERIAL_NUMBER:
- return getDetectorNumber();// or getDetectorMAC()
- case DETECTOR_FIRMWARE_VERSION:
- return getFirmwareVersion();
- case SOFTWARE_FIRMWARE_API_VERSION:
- return getFirmwareAPIVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APIJUNGFRAU;
- default:
- return retval;
- }
+uint64_t getClientServerAPIVersion() {
+ return APIJUNGFRAU;
}
u_int64_t getFirmwareVersion() {
@@ -1593,45 +1564,44 @@ void alignDeserializer() {
bus_w(ADC_DSRLZR_3_REG, bus_r(ADC_DSRLZR_3_REG) & (~(ADC_DSRLZR_3_RFRSH_ALGNMNT_MSK)));
}
-
-int setNetworkParameter(enum NETWORKINDEX mode, int value) {
- switch(mode) {
-
- case TXN_FRAME:
- if (value >= 0) {
- FILE_LOG(logINFO, ("Setting transmission delay: %d\n", value));
- bus_w(CONFIG_REG, (bus_r(CONFIG_REG) &~CONFIG_TDMA_TIMESLOT_MSK)
- | (((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK)));
- if (value == 0) {
- FILE_LOG(logINFO, ("Switching off transmission delay\n"));
- bus_w(CONFIG_REG, bus_r(CONFIG_REG) &~ CONFIG_TDMA_ENABLE_MSK);
- } else {
- FILE_LOG(logINFO, ("Switching on transmission delay\n"));
- bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_TDMA_ENABLE_MSK);
- }
- FILE_LOG(logDEBUG1, ("Transmission delay read %d\n",
- ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST)));
- }
- return ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST);
-
- case FLOWCTRL_10G:
- if (value >= 0) {
- if (value == 0) {
- FILE_LOG(logINFO, ("Switching off 10G flow control\n"));
- bus_w(CONFIG_REG, bus_r(CONFIG_REG) &~ CONFIG_ETHRNT_FLW_CNTRL_MSK);
- } else {
- FILE_LOG(logINFO, ("Switching on 10G flow control\n"));
- bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_ETHRNT_FLW_CNTRL_MSK);
- }
- }
- return ((bus_r(CONFIG_REG) & CONFIG_ETHRNT_FLW_CNTRL_MSK) >> CONFIG_ETHRNT_FLW_CNTRL_OFST);
-
- default:
- return -1;
- }
+int getTenGigaFlowControl() {
+ return ((bus_r(CONFIG_REG) & CONFIG_ETHRNT_FLW_CNTRL_MSK) >> CONFIG_ETHRNT_FLW_CNTRL_OFST);
}
+int setTenGigaFlowControl(int value) {
+ if (value >= 0) {
+ if (value == 0) {
+ FILE_LOG(logINFO, ("Switching off 10G flow control\n"));
+ bus_w(CONFIG_REG, bus_r(CONFIG_REG) &~ CONFIG_ETHRNT_FLW_CNTRL_MSK);
+ } else {
+ FILE_LOG(logINFO, ("Switching on 10G flow control\n"));
+ bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_ETHRNT_FLW_CNTRL_MSK);
+ }
+ }
+ return OK;
+}
+int getTransmissionDelayFrame() {
+ return ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST);
+}
+
+int setTransmissionDelayFrame(int value) {
+ if (value >= 0) {
+ FILE_LOG(logINFO, ("Setting transmission delay: %d\n", value));
+ bus_w(CONFIG_REG, (bus_r(CONFIG_REG) &~CONFIG_TDMA_TIMESLOT_MSK)
+ | (((value << CONFIG_TDMA_TIMESLOT_OFST) & CONFIG_TDMA_TIMESLOT_MSK)));
+ if (value == 0) {
+ FILE_LOG(logINFO, ("Switching off transmission delay\n"));
+ bus_w(CONFIG_REG, bus_r(CONFIG_REG) &~ CONFIG_TDMA_ENABLE_MSK);
+ } else {
+ FILE_LOG(logINFO, ("Switching on transmission delay\n"));
+ bus_w(CONFIG_REG, bus_r(CONFIG_REG) | CONFIG_TDMA_ENABLE_MSK);
+ }
+ FILE_LOG(logDEBUG1, ("Transmission delay read %d\n",
+ ((bus_r(CONFIG_REG) & CONFIG_TDMA_TIMESLOT_MSK) >> CONFIG_TDMA_TIMESLOT_OFST)));
+ }
+ return OK;
+}
diff --git a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer
index 064578eb3..2e8f15ce3 100755
Binary files a/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer and b/slsDetectorServers/mythen3DetectorServer/bin/mythen3DetectorServer_developer differ
diff --git a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c
index e39a8e193..0e04eae6c 100644
--- a/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c
+++ b/slsDetectorServers/mythen3DetectorServer/slsDetectorFunctionList.c
@@ -87,15 +87,15 @@ void basictests() {
uint16_t hversion = getHardwareVersionNumber();
uint32_t ipadd = getDetectorIP();
uint64_t macadd = getDetectorMAC();
- int64_t fwversion = getDetectorId(DETECTOR_FIRMWARE_VERSION);
- int64_t swversion = getDetectorId(DETECTOR_SOFTWARE_VERSION);
+ int64_t fwversion = getFirmwareVersion();
+ int64_t swversion = getServerVersion();
int64_t sw_fw_apiversion = 0;
- int64_t client_sw_apiversion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
+ int64_t client_sw_apiversion = getClientServerAPIVersion();
uint32_t requiredFirmwareVersion = REQRD_FRMWRE_VRSN;
if (fwversion >= MIN_REQRD_VRSN_T_RD_API)
- sw_fw_apiversion = getDetectorId(SOFTWARE_FIRMWARE_API_VERSION);
+ sw_fw_apiversion = getFirmwareAPIVersion();
FILE_LOG(logINFOBLUE, ("************ Mythen3 Server *********************\n"
"Hardware Version:\t\t 0x%x\n"
@@ -228,22 +228,12 @@ int testBus() {
/* Ids */
-int64_t getDetectorId(enum idMode arg){
- int64_t retval = -1;
+uint64_t getServerVersion() {
+ return APIMYTHEN3;
+}
- switch(arg){
- case DETECTOR_SERIAL_NUMBER:
- return getDetectorNumber();// or getDetectorMAC()
- case DETECTOR_FIRMWARE_VERSION:
- return getFirmwareVersion();
- case SOFTWARE_FIRMWARE_API_VERSION:
- return getFirmwareAPIVersion();
- case DETECTOR_SOFTWARE_VERSION:
- case CLIENT_SOFTWARE_API_VERSION:
- return APIMYTHEN3;
- default:
- return retval;
- }
+uint64_t getClientServerAPIVersion() {
+ return APIMYTHEN3;
}
u_int64_t getFirmwareVersion() {
diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h
index 9df9c8c35..ec1934979 100755
--- a/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h
+++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorFunctionList.h
@@ -41,14 +41,13 @@ int testBus();
#endif
#ifdef GOTTHARDD
-int detectorTest(enum digitalTestMode arg, int ival);
-int testImage(int ival);
-#elif defined(JUNGFRAUD) || defined(CHIPTESTBOARDD) || defined(MOENCHD)
-int detectorTest(enum digitalTestMode arg);
+void setTestImageMode(int ival);
+int getTestImageMode();
#endif
// Ids
-int64_t getDetectorId(enum idMode arg);
+u_int64_t getServerVersion();
+u_int64_t getClientServerAPIVersion();
u_int64_t getFirmwareVersion();
u_int64_t getFirmwareAPIVersion();
#if defined(JUNGFRAUD) || defined(CHIPTESTBOARDD) || defined(MOENCHD) || defined(MYTHEN3D) || defined(GOTTHARD2D)
@@ -445,7 +444,16 @@ int getClockDivider(enum CLKINDEX ind);
#if defined(JUNGFRAUD) || defined(EIGERD)
-int setNetworkParameter(enum NETWORKINDEX mode, int value);
+int getTenGigaFlowControl();
+int setTenGigaFlowControl(int value);
+int getTransmissionDelayFrame();
+int setTransmissionDelayFrame(int value);
+#endif
+#ifdef EIGERD
+int getTransmissionDelayLeft();
+int setTransmissionDelayLeft(int value);
+int getTransmissionDelayRight();
+int setTransmissionDelayRight(int value);
#endif
diff --git a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h
index de415bb0d..8b8293808 100755
--- a/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h
+++ b/slsDetectorServers/slsDetectorServer/include/slsDetectorServer_funcs.h
@@ -26,8 +26,13 @@ int exec_command(int);
int get_detector_type(int);
int set_external_signal_flag(int);
int set_timing_mode(int);
-int get_id(int);
-int digital_test(int);
+int get_firmware_version(int);
+int get_server_version(int);
+int get_serial_number(int);
+int set_firmware_test(int);
+int set_bus_test(int);
+int set_image_test_mode(int);
+int get_image_test_mode(int);
int set_dac(int);
int get_adc(int);
int write_register(int);
@@ -104,7 +109,14 @@ int pulse_pixel_and_move(int);
int pulse_chip(int);
int set_rate_correct(int);
int get_rate_correct(int);
-int set_network_parameter(int);
+int set_ten_giga_flow_control(int);
+int get_ten_giga_flow_control(int);
+int set_transmission_delay_frame(int);
+int get_transmission_delay_frame(int);
+int set_transmission_delay_left(int);
+int get_transmission_delay_left(int);
+int set_transmission_delay_right(int);
+int get_transmission_delay_right(int);
int program_fpga(int);
int reset_fpga(int);
int power_chip(int);
diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c
index 81751b921..3178afb77 100755
--- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c
+++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c
@@ -133,8 +133,13 @@ const char* getFunctionName(enum detFuncs func) {
case F_GET_DETECTOR_TYPE: return "F_GET_DETECTOR_TYPE";
case F_SET_EXTERNAL_SIGNAL_FLAG: return "F_SET_EXTERNAL_SIGNAL_FLAG";
case F_SET_TIMING_MODE: return "F_SET_TIMING_MODE";
- case F_GET_ID: return "F_GET_ID";
- case F_DIGITAL_TEST: return "F_DIGITAL_TEST";
+ case F_GET_FIRMWARE_VERSION: return "F_GET_FIRMWARE_VERSION";
+ case F_GET_SERVER_VERSION: return "F_GET_SERVER_VERSION";
+ case F_GET_SERIAL_NUMBER: return "F_GET_SERIAL_NUMBER";
+ case F_SET_FIRMWARE_TEST: return "F_SET_FIRMWARE_TEST";
+ case F_SET_BUS_TEST: return "F_SET_BUS_TEST";
+ case F_SET_IMAGE_TEST_MODE: return "F_SET_IMAGE_TEST_MODE";
+ case F_GET_IMAGE_TEST_MODE: return "F_GET_IMAGE_TEST_MODE";
case F_SET_DAC: return "F_SET_DAC";
case F_GET_ADC: return "F_GET_ADC";
case F_WRITE_REGISTER: return "F_WRITE_REGISTER";
@@ -209,7 +214,14 @@ const char* getFunctionName(enum detFuncs func) {
case F_PULSE_CHIP: return "F_PULSE_CHIP";
case F_SET_RATE_CORRECT: return "F_SET_RATE_CORRECT";
case F_GET_RATE_CORRECT: return "F_GET_RATE_CORRECT";
- case F_SET_NETWORK_PARAMETER: return "F_SET_NETWORK_PARAMETER";
+ case F_SET_TEN_GIGA_FLOW_CONTROL: return "F_SET_TEN_GIGA_FLOW_CONTROL";
+ case F_GET_TEN_GIGA_FLOW_CONTROL: return "F_GET_TEN_GIGA_FLOW_CONTROL";
+ case F_SET_TRANSMISSION_DELAY_FRAME: return "F_SET_TRANSMISSION_DELAY_FRAME";
+ case F_GET_TRANSMISSION_DELAY_FRAME: return "F_GET_TRANSMISSION_DELAY_FRAME";
+ case F_SET_TRANSMISSION_DELAY_LEFT: return "F_SET_TRANSMISSION_DELAY_LEFT";
+ case F_GET_TRANSMISSION_DELAY_LEFT: return "F_GET_TRANSMISSION_DELAY_LEFT";
+ case F_SET_TRANSMISSION_DELAY_RIGHT: return "F_SET_TRANSMISSION_DELAY_RIGHT";
+ case F_GET_TRANSMISSION_DELAY_RIGHT: return "F_GET_TRANSMISSION_DELAY_RIGHT";
case F_PROGRAM_FPGA: return "F_PROGRAM_FPGA";
case F_RESET_FPGA: return "F_RESET_FPGA";
case F_POWER_CHIP: return "F_POWER_CHIP";
@@ -292,8 +304,13 @@ void function_table() {
flist[F_GET_DETECTOR_TYPE] = &get_detector_type;
flist[F_SET_EXTERNAL_SIGNAL_FLAG] = &set_external_signal_flag;
flist[F_SET_TIMING_MODE] = &set_timing_mode;
- flist[F_GET_ID] = &get_id;
- flist[F_DIGITAL_TEST] = &digital_test;
+ flist[F_GET_FIRMWARE_VERSION] = &get_firmware_version;
+ flist[F_GET_SERVER_VERSION] = &get_server_version;
+ flist[F_GET_SERIAL_NUMBER] = &get_serial_number;
+ flist[F_SET_FIRMWARE_TEST] = &set_firmware_test;
+ flist[F_SET_BUS_TEST] = &set_bus_test;
+ flist[F_SET_IMAGE_TEST_MODE] = &set_image_test_mode;
+ flist[F_GET_IMAGE_TEST_MODE] = &get_image_test_mode;
flist[F_SET_DAC] = &set_dac;
flist[F_GET_ADC] = &get_adc;
flist[F_WRITE_REGISTER] = &write_register;
@@ -368,7 +385,14 @@ void function_table() {
flist[F_PULSE_CHIP] = &pulse_chip;
flist[F_SET_RATE_CORRECT] = &set_rate_correct;
flist[F_GET_RATE_CORRECT] = &get_rate_correct;
- flist[F_SET_NETWORK_PARAMETER] = &set_network_parameter;
+ flist[F_SET_TEN_GIGA_FLOW_CONTROL] = &set_ten_giga_flow_control;
+ flist[F_GET_TEN_GIGA_FLOW_CONTROL] = &get_ten_giga_flow_control;
+ flist[F_SET_TRANSMISSION_DELAY_FRAME] = &set_transmission_delay_frame;
+ flist[F_GET_TRANSMISSION_DELAY_FRAME] = &get_transmission_delay_frame;
+ flist[F_SET_TRANSMISSION_DELAY_LEFT] = &set_transmission_delay_left;
+ flist[F_GET_TRANSMISSION_DELAY_LEFT] = &get_transmission_delay_left;
+ flist[F_SET_TRANSMISSION_DELAY_RIGHT] = &set_transmission_delay_right;
+ flist[F_GET_TRANSMISSION_DELAY_RIGHT] = &get_transmission_delay_right;
flist[F_PROGRAM_FPGA] = &program_fpga;
flist[F_RESET_FPGA] = &reset_fpga;
flist[F_POWER_CHIP] = &power_chip;
@@ -666,78 +690,87 @@ int set_timing_mode(int file_des) {
-
-int get_id(int file_des) {
+int get_firmware_version(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));
- enum idMode arg = 0;
int64_t retval = -1;
-
- if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
- return printSocketReadError();
- FILE_LOG(logDEBUG1, ("Getting Id %d\n", arg));
-
- // get
- switch (arg) {
-#ifndef GOTTHARDD
- case SOFTWARE_FIRMWARE_API_VERSION:
- case DETECTOR_SERIAL_NUMBER:
-#endif
- case DETECTOR_FIRMWARE_VERSION:
- case DETECTOR_SOFTWARE_VERSION:
- retval = getDetectorId(arg);
- FILE_LOG(logDEBUG1, ("Id(%d): %lld\n", retval));
- break;
- default:
- modeNotImplemented("ID Index", (int)arg);
- break;
- }
+ retval = getFirmwareVersion();
+ FILE_LOG(logDEBUG1, ("firmware version retval: 0x%llx\n", (long long int)retval));
return Server_SendResult(file_des, INT64, UPDATE, &retval, sizeof(retval));
}
-
-
-
-
-int digital_test(int file_des) {
+int get_server_version(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));
- int args[2] = {-1, -1};
- int retval = -1;
+ int64_t retval = -1;
+ retval = getServerVersion();
+ FILE_LOG(logDEBUG1, ("firmware version retval: 0x%llx\n", (long long int)retval));
+ return Server_SendResult(file_des, INT64, UPDATE, &retval, sizeof(retval));
+}
- if (receiveData(file_des, args, sizeof(args), INT32) < 0)
- return printSocketReadError();
- enum digitalTestMode mode = args[0];
-#ifdef GOTTHARDD
- int ival = args[1];
- FILE_LOG(logDEBUG1, ("Digital test, mode = %d, ival:%d\n", mode, ival));
-#else
- FILE_LOG(logDEBUG1, ("Digital test, mode = %d\n", mode));
-#endif
+int get_serial_number(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int64_t retval = -1;
+ retval = getDetectorNumber();
+ FILE_LOG(logDEBUG1, ("firmware version retval: 0x%llx\n", (long long int)retval));
+ return Server_SendResult(file_des, INT64, UPDATE, &retval, sizeof(retval));
+}
-#if defined(EIGERD) || defined(MYTHEN3D) || defined(GOTTHARD2D)
+int set_firmware_test(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ FILE_LOG(logDEBUG1, ("Executing firmware test\n"));
+
+#if !defined(GOTTHARDD) && !defined(JUNGFRAUD) && !defined(CHIPTESTBOARDD) && !defined(MOENCHD) && !defined(GOTTHARD2D) && !defined(MYTHEN3D)
functionNotImplemented();
#else
- // only set
- if (Server_VerifyLock() == OK) {
- switch (mode) {
-
- case DETECTOR_FIRMWARE_TEST:
- case DETECTOR_BUS_TEST:
-#ifdef GOTTHARDD
- case IMAGE_TEST:
- retval = detectorTest(mode, ival);
- break;
-#else
- retval = detectorTest(mode);
+ ret = testFpga();
#endif
- FILE_LOG(logDEBUG1, ("Digital Test (%d): %d\n", mode, retval));
- break;
- default:
- modeNotImplemented("Digital Test Mode", (int)mode);
- break;
- }
- }
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int set_bus_test(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ FILE_LOG(logDEBUG1, ("Executing bus test\n"));
+
+#if !defined(GOTTHARDD) && !defined(JUNGFRAUD) && !defined(CHIPTESTBOARDD) && !defined(MOENCHD) && !defined(GOTTHARD2D) && !defined(MYTHEN3D)
+ functionNotImplemented();
+#else
+ ret = testBus();
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int set_image_test_mode(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int arg = -1;
+
+ if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
+ return printSocketReadError();
+ FILE_LOG(logDEBUG1, ("Setting image test mode to \n", arg));
+
+#ifndef GOTTHARDD
+ functionNotImplemented();
+#else
+ setTestImageMode(arg);
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int get_image_test_mode(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int retval = -1;
+ FILE_LOG(logDEBUG1, ("Getting image test mode\n"));
+
+#ifndef GOTTHARDD
+ functionNotImplemented();
+#else
+ retval = getTestImageMode();
+ FILE_LOG(logDEBUG1, ("image test mode retval: %d\n", retval));
#endif
return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval));
}
@@ -746,7 +779,6 @@ int digital_test(int file_des) {
-
int set_dac(int file_des) {
ret = OK;
memset(mess, 0, sizeof(mess));
@@ -3365,70 +3397,221 @@ int get_rate_correct(int file_des) {
-
-
-int set_network_parameter(int file_des) {
- ret = OK;
+int set_ten_giga_flow_control(int file_des) {
+ ret = OK;
memset(mess, 0, sizeof(mess));
- int args[2] = {-1,-1};
- int retval = -1;
+ int arg = 0;
- if (receiveData(file_des, args, sizeof(args), INT32) < 0)
- return printSocketReadError();
- enum networkParameter mode = args[0];
- int value = args[1];
- FILE_LOG(logDEBUG1, ("Set network parameter index %d to %d\n", mode, value));
+ if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
+ return printSocketReadError();
+ FILE_LOG(logINFO, ("Setting ten giga flow control: %d\n", arg));
-#if defined(GOTTHARDD) || defined (CHIPTESTBOARDD) || defined(MOENCHD) || defined(MYTHEN3D) || defined(GOTTHARD2D)
+#if !defined(EIGERD) && !defined(JUNGFRAUD)
functionNotImplemented();
#else
- enum NETWORKINDEX serverIndex = 0;
-
- // set & get
- if ((value == -1) || (Server_VerifyLock() == OK)) {
- // check index
- switch (mode) {
-
- case FLOW_CONTROL_10G:
- serverIndex = FLOWCTRL_10G;
- break;
-
-#ifdef EIGERD
- case DETECTOR_TXN_DELAY_LEFT:
- serverIndex = TXN_LEFT;
- break;
- case DETECTOR_TXN_DELAY_RIGHT:
- serverIndex = TXN_RIGHT;
- break;
-#endif
- case DETECTOR_TXN_DELAY_FRAME:
- serverIndex = TXN_FRAME;
-#ifdef JUNGFRAUD
- if (value > MAX_TIMESLOT_VAL) {
- ret = FAIL;
- sprintf(mess,"Transmission delay %d should be in range: 0 - %d\n",
- value, MAX_TIMESLOT_VAL);
- FILE_LOG(logERROR, (mess));
- }
-#endif
- break;
- default:
- modeNotImplemented("Image index", (int)serverIndex);
- break;
- }
- // valid index
- if (ret == OK) {
- retval = setNetworkParameter(serverIndex, value);
- FILE_LOG(logDEBUG1, ("Network Parameter index %d: %d\n", serverIndex, retval));
- validate(value, retval, "set network parameter", DEC);
+ // only set
+ if (Server_VerifyLock() == OK) {
+ ret = setTenGigaFlowControl(arg);
+ if (ret == FAIL) {
+ strcpy(mess,"Could not set ten giga flow control.\n");
+ FILE_LOG(logERROR,(mess));
+ } else {
+ int retval = getTenGigaFlowControl();
+ FILE_LOG(logDEBUG1, ("ten giga flow control retval: %d\n", retval));
+ validate(arg, retval, "set ten giga flow control", DEC);
}
}
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int get_ten_giga_flow_control(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int retval = -1;
+
+ FILE_LOG(logDEBUG1, ("Getting ten giga flow control\n"));
+
+#if !defined(EIGERD) && !defined(JUNGFRAUD)
+ functionNotImplemented();
+#else
+ // get only
+ retval = getTenGigaFlowControl();
+ FILE_LOG(logDEBUG1, ("ten giga flow control retval: %d\n", retval));
+ if (retval == -1) {
+ strcpy(mess,"Could not get ten giga flow control.\n");
+ FILE_LOG(logERROR,(mess));
+ }
#endif
return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval));
}
+int set_transmission_delay_frame(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int arg = 0;
+
+ if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
+ return printSocketReadError();
+ FILE_LOG(logINFO, ("Setting transmission delay frame: %d\n", arg));
+
+#if !defined(EIGERD) && !defined(JUNGFRAUD)
+ functionNotImplemented();
+#else
+ // only set
+ if (Server_VerifyLock() == OK) {
+#ifdef JUNGFRAUD
+ if (arg > MAX_TIMESLOT_VAL) {
+ ret = FAIL;
+ sprintf(mess,"Transmission delay %d should be in range: 0 - %d\n",
+ arg, MAX_TIMESLOT_VAL);
+ FILE_LOG(logERROR, (mess));
+ }
+#endif
+ if (ret == OK) {
+ ret = setTransmissionDelayFrame(arg);
+ if (ret == FAIL) {
+ strcpy(mess,"Could not set transmission delay frame.\n");
+ FILE_LOG(logERROR,(mess));
+ } else {
+ int retval = getTransmissionDelayFrame();
+ FILE_LOG(logDEBUG1, ("transmission delay frame retval: %d\n", retval));
+ validate(arg, retval, "set transmission delay frame", DEC);
+ }
+ }
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int get_transmission_delay_frame(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int retval = -1;
+
+ FILE_LOG(logDEBUG1, ("Getting transmission delay frame\n"));
+
+#if !defined(EIGERD) && !defined(JUNGFRAUD)
+ functionNotImplemented();
+#else
+ // get only
+ retval = getTransmissionDelayFrame();
+ FILE_LOG(logDEBUG1, ("transmission delay frame retval: %d\n", retval));
+ if (retval == -1) {
+ strcpy(mess,"Could not get transmission delay frame.\n");
+ FILE_LOG(logERROR,(mess));
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval));
+}
+
+
+
+
+int set_transmission_delay_left(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int arg = 0;
+
+ if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
+ return printSocketReadError();
+ FILE_LOG(logINFO, ("Setting transmission delay left: %d\n", arg));
+
+#ifndef EIGERD
+ functionNotImplemented();
+#else
+ // only set
+ if (Server_VerifyLock() == OK) {
+ ret = setTransmissionDelayLeft(arg);
+ if (ret == FAIL) {
+ strcpy(mess,"Could not set transmission delay left.\n");
+ FILE_LOG(logERROR,(mess));
+ } else {
+ int retval = getTransmissionDelayLeft();
+ FILE_LOG(logDEBUG1, ("transmission delay left retval: %d\n", retval));
+ validate(arg, retval, "set transmission delay left", DEC);
+ }
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int get_transmission_delay_left(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int retval = -1;
+
+ FILE_LOG(logDEBUG1, ("Getting transmission delay left\n"));
+
+#ifndef EIGERD
+ functionNotImplemented();
+#else
+ // get only
+ retval = getTransmissionDelayLeft();
+ FILE_LOG(logDEBUG1, ("transmission delay left: %d\n", retval));
+ if (retval == -1) {
+ strcpy(mess,"Could not get transmission delay left.\n");
+ FILE_LOG(logERROR,(mess));
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval));
+}
+
+
+
+
+int set_transmission_delay_right(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int arg = 0;
+
+ if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
+ return printSocketReadError();
+ FILE_LOG(logINFO, ("Setting transmission delay right: %d\n", arg));
+
+#ifndef EIGERD
+ functionNotImplemented();
+#else
+ // only set
+ if (Server_VerifyLock() == OK) {
+ ret = setTransmissionDelayRight(arg);
+ if (ret == FAIL) {
+ strcpy(mess,"Could not set transmission delay right.\n");
+ FILE_LOG(logERROR,(mess));
+ } else {
+ int retval = getTransmissionDelayRight();
+ FILE_LOG(logDEBUG1, ("transmission delay right retval: %d\n", retval));
+ validate(arg, retval, "set transmission delay right", DEC);
+ }
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, NULL, 0);
+}
+
+int get_transmission_delay_right(int file_des) {
+ ret = OK;
+ memset(mess, 0, sizeof(mess));
+ int retval = -1;
+
+ FILE_LOG(logDEBUG1, ("Getting transmission delay right\n"));
+
+#ifndef EIGERD
+ functionNotImplemented();
+#else
+ // get only
+ retval = getTransmissionDelayRight();
+ FILE_LOG(logDEBUG1, ("transmission delay right retval: %d\n", retval));
+ if (retval == -1) {
+ strcpy(mess,"Could not get transmission delay right.\n");
+ FILE_LOG(logERROR,(mess));
+ }
+#endif
+ return Server_SendResult(file_des, INT32, UPDATE, &retval, sizeof(retval));
+}
+
+
@@ -3825,8 +4008,8 @@ int check_version(int file_des) {
FILE_LOG(logDEBUG1, ("Checking versioning compatibility with value 0x%llx\n",arg));
int64_t client_requiredVersion = arg;
- int64_t det_apiVersion = getDetectorId(CLIENT_SOFTWARE_API_VERSION);
- int64_t det_version = getDetectorId(DETECTOR_SOFTWARE_VERSION);
+ int64_t det_apiVersion = getClientServerAPIVersion();
+ int64_t det_version = getServerVersion();
// old client
if (det_apiVersion > client_requiredVersion) {
diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h
index 1e57bdbda..2f19252d7 100644
--- a/slsDetectorSoftware/include/Detector.h
+++ b/slsDetectorSoftware/include/Detector.h
@@ -865,7 +865,7 @@ class Detector {
/** [Gotthard] If 1, adds channel intensity with precalculated values.
* Default is 0 */
- Result setImageTestMode(const int value, Positions pos = {});
+ void setImageTestMode(const int value, Positions pos = {});
/**************************************************
* *
@@ -1182,10 +1182,10 @@ class Detector {
void clearBit(uint32_t addr, int bitnr, Positions pos = {});
/** [Gotthard][Jungfrau][CTB] */
- Result executeFirmwareTest(Positions pos = {});
+ void executeFirmwareTest(Positions pos = {});
/** [Gotthard][Jungfrau][CTB] */
- Result executeBusTest(Positions pos = {});
+ void executeBusTest(Positions pos = {});
/** [Gotthard][Jungfrau][CTB] not possible to read back*/
void writeAdcRegister(uint32_t addr, uint32_t value, Positions pos = {});
diff --git a/slsDetectorSoftware/include/slsDetector.h b/slsDetectorSoftware/include/slsDetector.h
index 3d5bebd9a..60f04c4d1 100755
--- a/slsDetectorSoftware/include/slsDetector.h
+++ b/slsDetectorSoftware/include/slsDetector.h
@@ -223,12 +223,11 @@ class slsDetector : public virtual slsDetectorDefs {
*/
void checkDetectorVersionCompatibility();
- /**
- * Get ID or version numbers
- * @param mode version type
- * @returns Id or version number of that type
- */
- int64_t getId(idMode mode);
+ int64_t getFirmwareVersion();
+
+ int64_t getDetectorServerVersion();
+
+ int64_t getSerialNumber();
/**
* Get Receiver Software version
@@ -994,14 +993,42 @@ class slsDetector : public virtual slsDetectorDefs {
*/
void updateReceiverStreamingIP();
+ /** [Eiger, Jungfrau] */
+ bool getTenGigaFlowControl();
+
+ /** [Eiger, Jungfrau] */
+ void setTenGigaFlowControl(bool enable);
+
+ /** [Eiger, Jungfrau] */
+ int getTransmissionDelayFrame();
+
/**
- * Sets the transmission delay for left, right or entire frame
- * (Eiger, Jungfrau(only entire frame))
- * @param index type of delay
- * @param delay delay
- * @returns transmission delay
+ * [Jungfrau]: Sets the transmission delay of the first UDP packet being
+ * streamed out of the module. Options: 0 - 31, each value represenets 1 ms
+ * [Eiger]: Sets the transmission delay of entire frame streamed out for
+ * both left and right UDP ports. Options: //TODO possible values
*/
- int setDetectorNetworkParameter(networkParameter index, int delay);
+ void setTransmissionDelayFrame(int value);
+
+ /** [Eiger] */
+ int getTransmissionDelayLeft();
+
+ /**
+ * [Eiger]
+ * Sets the transmission delay of first packet streamed out of the left UDP
+ * port
+ */
+ void setTransmissionDelayLeft(int value);
+
+ /** [Eiger] */
+ int getTransmissionDelayRight();
+
+ /**
+ * [Eiger]
+ * Sets the transmission delay of first packet streamed ut of the right UDP
+ * port
+ */
+ void setTransmissionDelayRight(int value);
/**
* Sets the additional json header\sa sharedSlsDetector
@@ -1056,13 +1083,18 @@ class slsDetector : public virtual slsDetectorDefs {
*/
int64_t getReceiverRealUDPSocketBufferSize() const;
- /**
- * Execute a digital test (Gotthard, Jungfrau, CTB)
- * @param mode testmode type
- * @param value 1 to set or 0 to clear the digital test bit
- * @returns result of test
- */
- int digitalTest(digitalTestMode mode, int ival = -1);
+ /** [Gotthard][Jungfrau][CTB] */
+ void executeFirmwareTest();
+
+ /** [Gotthard][Jungfrau][CTB] */
+ void executeBusTest();
+
+ /** [Gotthard] */
+ int getImageTestMode();
+
+ /** [Gotthard] If 1, adds channel intensity with precalculated values.
+ * Default is 0 */
+ void setImageTestMode(const int value);
/**
* Set/get counter bit in detector (Gotthard)
diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp
index a6840339a..ef7a4eac0 100644
--- a/slsDetectorSoftware/src/Detector.cpp
+++ b/slsDetectorSoftware/src/Detector.cpp
@@ -48,18 +48,15 @@ int64_t Detector::getClientVersion() const {
}
Result Detector::getFirmwareVersion(Positions pos) const {
- return pimpl->Parallel(&slsDetector::getId, pos,
- defs::DETECTOR_FIRMWARE_VERSION);
+ return pimpl->Parallel(&slsDetector::getFirmwareVersion, pos);
}
Result Detector::getDetectorServerVersion(Positions pos) const {
- return pimpl->Parallel(&slsDetector::getId, pos,
- defs::DETECTOR_SOFTWARE_VERSION);
+ return pimpl->Parallel(&slsDetector::getDetectorServerVersion, pos);
}
Result Detector::getSerialNumber(Positions pos) const {
- return pimpl->Parallel(&slsDetector::getId, pos,
- defs::DETECTOR_SERIAL_NUMBER);
+ return pimpl->Parallel(&slsDetector::getSerialNumber, pos);
}
Result Detector::getReceiverVersion(Positions pos) const {
@@ -485,43 +482,35 @@ void Detector::setTenGiga(bool value, Positions pos) {
}
Result Detector::getTenGigaFlowControl(Positions pos) const {
- return pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::FLOW_CONTROL_10G, -1);
+ return pimpl->Parallel(&slsDetector::getTenGigaFlowControl, pos);
}
void Detector::setTenGigaFlowControl(bool enable, Positions pos) {
- pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::FLOW_CONTROL_10G, static_cast(enable));
+ pimpl->Parallel(&slsDetector::setTenGigaFlowControl, pos, enable);
}
Result Detector::getTransmissionDelayFrame(Positions pos) const {
- return pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_FRAME, -1);
+ return pimpl->Parallel(&slsDetector::getTransmissionDelayFrame, pos);
}
void Detector::setTransmissionDelayFrame(int value, Positions pos) {
- pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_FRAME, value);
+ pimpl->Parallel(&slsDetector::setTransmissionDelayFrame, pos, value);
}
Result Detector::getTransmissionDelayLeft(Positions pos) const {
- return pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_LEFT, -1);
+ return pimpl->Parallel(&slsDetector::getTransmissionDelayLeft, pos);
}
void Detector::setTransmissionDelayLeft(int value, Positions pos) {
- pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_LEFT, value);
+ pimpl->Parallel(&slsDetector::setTransmissionDelayLeft, pos, value);
}
Result Detector::getTransmissionDelayRight(Positions pos) const {
- return pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_RIGHT, -1);
+ return pimpl->Parallel(&slsDetector::getTransmissionDelayRight, pos);
}
void Detector::setTransmissionDelayRight(int value, Positions pos) {
- pimpl->Parallel(&slsDetector::setDetectorNetworkParameter, pos,
- defs::DETECTOR_TXN_DELAY_RIGHT, value);
+ pimpl->Parallel(&slsDetector::setTransmissionDelayRight, pos, value);
}
// Receiver
@@ -1082,13 +1071,11 @@ void Detector::setExternalSignalFlags(defs::externalSignalFlag value,
}
Result Detector::getImageTestMode(Positions pos) {
- return pimpl->Parallel(&slsDetector::digitalTest, pos, defs::IMAGE_TEST,
- -1);
+ return pimpl->Parallel(&slsDetector::getImageTestMode, pos);
}
-Result Detector::setImageTestMode(int value, Positions pos) {
- return pimpl->Parallel(&slsDetector::digitalTest, pos, defs::IMAGE_TEST,
- value);
+void Detector::setImageTestMode(int value, Positions pos) {
+ pimpl->Parallel(&slsDetector::setImageTestMode, pos, value);
}
// CTB Specific
@@ -1527,14 +1514,12 @@ void Detector::clearBit(uint32_t addr, int bitnr, Positions pos) {
pimpl->Parallel(&slsDetector::clearBit, pos, addr, bitnr);
}
-Result Detector::executeFirmwareTest(Positions pos) {
- return pimpl->Parallel(&slsDetector::digitalTest, pos,
- defs::DETECTOR_FIRMWARE_TEST, -1);
+void Detector::executeFirmwareTest(Positions pos) {
+ pimpl->Parallel(&slsDetector::executeFirmwareTest, pos);
}
-Result Detector::executeBusTest(Positions pos) {
- return pimpl->Parallel(&slsDetector::digitalTest, pos,
- defs::DETECTOR_BUS_TEST, -1);
+void Detector::executeBusTest(Positions pos) {
+ pimpl->Parallel(&slsDetector::executeBusTest, pos);
}
void Detector::writeAdcRegister(uint32_t addr, uint32_t value, Positions pos) {
diff --git a/slsDetectorSoftware/src/slsDetector.cpp b/slsDetectorSoftware/src/slsDetector.cpp
index 5412a2f74..018ea1356 100755
--- a/slsDetectorSoftware/src/slsDetector.cpp
+++ b/slsDetectorSoftware/src/slsDetector.cpp
@@ -104,27 +104,33 @@ void slsDetector::checkReceiverVersionCompatibility() {
sendToReceiver(F_RECEIVER_CHECK_VERSION, arg, nullptr);
}
-int64_t slsDetector::getId(idMode mode) {
- // These should not go to detector...
- assert(mode != THIS_SOFTWARE_VERSION);
- assert(mode != RECEIVER_VERSION);
- assert(mode != CLIENT_SOFTWARE_API_VERSION);
- assert(mode != CLIENT_RECEIVER_API_VERSION);
-
- int arg = static_cast(mode);
+int64_t slsDetector::getFirmwareVersion() {
int64_t retval = -1;
- FILE_LOG(logDEBUG1) << "Getting id type " << mode;
- sendToDetector(F_GET_ID, arg, retval);
- FILE_LOG(logDEBUG1) << "Id (" << mode << "): 0x" << std::hex << retval
- << std::dec;
+ sendToDetector(F_GET_FIRMWARE_VERSION, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "firmware version: 0x" << std::hex << retval << std::dec;
return retval;
}
+int64_t slsDetector::getDetectorServerVersion() {
+ int64_t retval = -1;
+ sendToDetector(F_GET_SERVER_VERSION, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "firmware version: 0x" << std::hex << retval << std::dec;
+ return retval;
+}
+
+int64_t slsDetector::getSerialNumber() {
+ int64_t retval = -1;
+ sendToDetector(F_GET_SERIAL_NUMBER, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "firmware version: 0x" << std::hex << retval << std::dec;
+ return retval;
+}
+
+
int64_t slsDetector::getReceiverSoftwareVersion() const {
FILE_LOG(logDEBUG1) << "Getting receiver software version";
int64_t retval = -1;
if (shm()->useReceiverFlag) {
- sendToReceiver(F_GET_RECEIVER_ID, nullptr, retval);
+ sendToReceiver(F_GET_RECEIVER_VERSION, nullptr, retval);
}
return retval;
}
@@ -1049,7 +1055,7 @@ std::string slsDetector::getTrimbitFilename(detectorSettings s, int e_eV) {
std::ostringstream ostfn;
ostfn << shm()->settingsDir << ssettings << "/" << e_eV << "eV"
<< "/noise.sn" << std::setfill('0') << std::setw(3) << std::dec
- << getId(DETECTOR_SERIAL_NUMBER) << std::setbase(10);
+ << getSerialNumber() << std::setbase(10);
return ostfn.str();
}
@@ -1073,7 +1079,7 @@ void slsDetector::loadSettingsFile(const std::string &fname) {
fname.find(".trim") == std::string::npos &&
fname.find(".settings") == std::string::npos) {
ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec
- << getId(DETECTOR_SERIAL_NUMBER);
+ << getSerialNumber();
}
}
fn = ostfn.str();
@@ -1089,7 +1095,7 @@ void slsDetector::saveSettingsFile(const std::string &fname) {
// find specific file if it has detid in file name (.snxxx)
if (shm()->myDetectorType == EIGER) {
ostfn << ".sn" << std::setfill('0') << std::setw(3) << std::dec
- << getId(DETECTOR_SERIAL_NUMBER);
+ << getSerialNumber();
}
fn = ostfn.str();
sls_detector_module myMod = getModule();
@@ -2110,17 +2116,57 @@ void slsDetector::updateReceiverStreamingIP() {
setReceiverStreamingIP(ip);
}
-int slsDetector::setDetectorNetworkParameter(networkParameter index,
- int delay) {
- int args[]{static_cast(index), delay};
+
+bool slsDetector::getTenGigaFlowControl() {
int retval = -1;
- FILE_LOG(logDEBUG1) << "Setting network parameter index " << index << " to "
- << delay;
- sendToDetector(F_SET_NETWORK_PARAMETER, args, retval);
- FILE_LOG(logDEBUG1) << "Network Parameter (" << index << "): " << retval;
- return retval;
+ sendToDetector(F_GET_TEN_GIGA_FLOW_CONTROL, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "ten giga flow control :" << retval;
+ return retval == 1 ? true : false;
}
+void slsDetector::setTenGigaFlowControl(bool enable) {
+ int arg = static_cast(enable);
+ FILE_LOG(logDEBUG1) << "Setting ten giga flow control to " << arg;
+ sendToDetector(F_SET_TEN_GIGA_FLOW_CONTROL, arg, nullptr);
+}
+
+int slsDetector::getTransmissionDelayFrame() {
+ int retval = -1;
+ sendToDetector(F_GET_TRANSMISSION_DELAY_FRAME, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "transmission delay frame :" << retval;
+ return retval;
+}
+
+void slsDetector::setTransmissionDelayFrame(int value) {
+ FILE_LOG(logDEBUG1) << "Setting transmission delay frame to " << value;
+ sendToDetector(F_SET_TRANSMISSION_DELAY_FRAME, value, nullptr);
+}
+
+int slsDetector::getTransmissionDelayLeft() {
+ int retval = -1;
+ sendToDetector(F_GET_TRANSMISSION_DELAY_LEFT, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "transmission delay left :" << retval;
+ return retval;
+}
+
+void slsDetector::setTransmissionDelayLeft(int value) {
+ FILE_LOG(logDEBUG1) << "Setting transmission delay left to " << value;
+ sendToDetector(F_SET_TRANSMISSION_DELAY_LEFT, value, nullptr);
+}
+
+int slsDetector::getTransmissionDelayRight() {
+ int retval = -1;
+ sendToDetector(F_GET_TRANSMISSION_DELAY_RIGHT, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "transmission delay right :" << retval;
+ return retval;
+}
+
+void slsDetector::setTransmissionDelayRight(int value) {
+ FILE_LOG(logDEBUG1) << "Setting transmission delay right to " << value;
+ sendToDetector(F_SET_TRANSMISSION_DELAY_RIGHT, value, nullptr);
+}
+
+
std::string
slsDetector::setAdditionalJsonHeader(const std::string &jsonheader) {
int fnum = F_ADDITIONAL_JSON_HEADER;
@@ -2262,16 +2308,28 @@ int64_t slsDetector::getReceiverRealUDPSocketBufferSize() const {
return retval;
}
-int slsDetector::digitalTest(digitalTestMode mode, int ival) {
- int args[]{static_cast(mode), ival};
+void slsDetector::executeFirmwareTest() {
+ FILE_LOG(logDEBUG1) << "Executing firmware test";
+ sendToDetector(F_SET_FIRMWARE_TEST);
+}
+
+void slsDetector::executeBusTest() {
+ FILE_LOG(logDEBUG1) << "Executing bus test";
+ sendToDetector(F_SET_BUS_TEST);
+}
+
+int slsDetector::getImageTestMode() {
int retval = -1;
- FILE_LOG(logDEBUG1) << "Sending digital test of mode " << mode << ", ival "
- << ival;
- sendToDetector(F_DIGITAL_TEST, args, retval);
- FILE_LOG(logDEBUG1) << "Digital Test returned: " << retval;
+ sendToDetector(F_GET_IMAGE_TEST_MODE, nullptr, retval);
+ FILE_LOG(logDEBUG1) << "image test mode: " << retval;
return retval;
}
+void slsDetector::setImageTestMode(const int value) {
+ FILE_LOG(logDEBUG1) << "Sending image test mode " << value;
+ sendToDetector(F_SET_IMAGE_TEST_MODE, value, nullptr);
+}
+
int slsDetector::setCounterBit(int cb) {
int retval = -1;
FILE_LOG(logDEBUG1) << "Sending counter bit " << cb;
diff --git a/slsReceiverSoftware/include/slsReceiverTCPIPInterface.h b/slsReceiverSoftware/include/slsReceiverTCPIPInterface.h
index 1bff84ed5..199da818e 100755
--- a/slsReceiverSoftware/include/slsReceiverTCPIPInterface.h
+++ b/slsReceiverSoftware/include/slsReceiverTCPIPInterface.h
@@ -147,8 +147,8 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
/** Sends the updated parameters to client */
int send_update(sls::ServerInterface2 &socket);
- /** get version, calls get_version */
- int get_id(sls::ServerInterface2 &socket);
+ /** get version */
+ int get_version(sls::ServerInterface2 &socket);
/** Set detector type */
int set_detector_type(sls::ServerInterface2 &socket);
diff --git a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp
index 75cdb5e74..55947bb5e 100755
--- a/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp
+++ b/slsReceiverSoftware/src/slsReceiverTCPIPInterface.cpp
@@ -153,7 +153,7 @@ int slsReceiverTCPIPInterface::function_table(){
flist[F_GET_LAST_RECEIVER_CLIENT_IP] = &slsReceiverTCPIPInterface::get_last_client_ip;
flist[F_SET_RECEIVER_PORT] = &slsReceiverTCPIPInterface::set_port;
flist[F_UPDATE_RECEIVER_CLIENT] = &slsReceiverTCPIPInterface::update_client;
- flist[F_GET_RECEIVER_ID] = &slsReceiverTCPIPInterface::get_id;
+ flist[F_GET_RECEIVER_VERSION] = &slsReceiverTCPIPInterface::get_version;
flist[F_GET_RECEIVER_TYPE] = &slsReceiverTCPIPInterface::set_detector_type;
flist[F_SEND_RECEIVER_DETHOSTNAME] = &slsReceiverTCPIPInterface::set_detector_hostname;
flist[F_RECEIVER_SET_ROI] = &slsReceiverTCPIPInterface::set_roi;
@@ -453,7 +453,7 @@ int slsReceiverTCPIPInterface::send_update(Interface &socket) {
return OK;
}
-int slsReceiverTCPIPInterface::get_id(Interface &socket) {
+int slsReceiverTCPIPInterface::get_version(Interface &socket) {
return socket.sendResult(getReceiverVersion());
}
diff --git a/slsSupportLib/include/sls_detector_defs.h b/slsSupportLib/include/sls_detector_defs.h
index 8a56be44d..0d97a0baf 100755
--- a/slsSupportLib/include/sls_detector_defs.h
+++ b/slsSupportLib/include/sls_detector_defs.h
@@ -198,37 +198,6 @@ format
} ROI;
#endif
- /**
- network parameters
- */
-
- enum networkParameter {
- DETECTOR_MAC, /**< detector MAC */
- DETECTOR_IP, /**< detector IP */
- RECEIVER_HOSTNAME, /**< receiver IP/hostname */
- RECEIVER_UDP_IP, /**< receiever UDP IP */
- RECEIVER_UDP_PORT, /**< receiever UDP Port */
- RECEIVER_UDP_MAC, /**< receiever UDP MAC */
- RECEIVER_UDP_PORT2, /**< receiever UDP Port of second half module for
- eiger */
- DETECTOR_TXN_DELAY_LEFT, /**< transmission delay on the (left) port for
- next frame */
- DETECTOR_TXN_DELAY_RIGHT, /**< transmission delay on the right port for
- next frame */
- DETECTOR_TXN_DELAY_FRAME, /**< transmission delay of a whole frame for
- all the ports */
- FLOW_CONTROL_10G, /**< flow control for 10GbE */
- FLOW_CONTROL_WR_PTR, /**< memory write pointer for flow control */
- FLOW_CONTROL_RD_PTR, /**< memory read pointer for flow control */
- RECEIVER_STREAMING_PORT, /**< receiever streaming TCP(ZMQ) port */
- CLIENT_STREAMING_PORT, /**< client streaming TCP(ZMQ) port */
- RECEIVER_STREAMING_SRC_IP, /**< receiever streaming TCP(ZMQ) ip */
- CLIENT_STREAMING_SRC_IP, /**< client streaming TCP(ZMQ) ip */
- ADDITIONAL_JSON_HEADER, /**< additional json header (ZMQ) */
- RECEIVER_UDP_SCKT_BUF_SIZE, /**< UDP socket buffer size */
- RECEIVER_REAL_UDP_SCKT_BUF_SIZE /**< real UDP socket buffer size */
- };
-
/**
type of action performed (for text client)
*/
@@ -249,13 +218,7 @@ format
int y;
};
#endif
- /**
- enable/disable flags
- */
- enum {
- DISABLED, /**