mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00
virtual, adding veto command
This commit is contained in:
parent
46daa7e2de
commit
4300e95a8e
@ -89,6 +89,8 @@
|
|||||||
|
|
||||||
#define CONFIG_VETO_ENBL_OFST (0)
|
#define CONFIG_VETO_ENBL_OFST (0)
|
||||||
#define CONFIG_VETO_ENBL_MSK (0x00000001 << CONFIG_VETO_ENBL_OFST)
|
#define CONFIG_VETO_ENBL_MSK (0x00000001 << CONFIG_VETO_ENBL_OFST)
|
||||||
|
#define CONFIG_VETO_CH_10GB_ENBL_OFST (1)
|
||||||
|
#define CONFIG_VETO_CH_10GB_ENBL_MSK (0x00000001 << CONFIG_VETO_CH_10GB_ENBL_OFST)
|
||||||
|
|
||||||
/* Control RW register */
|
/* Control RW register */
|
||||||
#define CONTROL_REG (0x21 * REG_OFFSET + BASE_CONTROL)
|
#define CONTROL_REG (0x21 * REG_OFFSET + BASE_CONTROL)
|
||||||
|
@ -1295,23 +1295,21 @@ void setNumberofUDPInterfaces(int val) {
|
|||||||
|
|
||||||
// 2 interfaces (enable veto)
|
// 2 interfaces (enable veto)
|
||||||
if (val > 1) {
|
if (val > 1) {
|
||||||
LOG(logINFOBLUE,
|
LOG(logINFOBLUE, ("Setting #Interfaces: 2 (10gbps veto streaming)\n"));
|
||||||
("Setting #Interfaces: 2 (enabling veto streaming)\n"));
|
bus_w(addr, bus_r(addr) | CONFIG_VETO_CH_10GB_ENBL_MSK);
|
||||||
bus_w(addr, bus_r(addr) | CONFIG_VETO_ENBL_MSK);
|
|
||||||
}
|
}
|
||||||
// 1 interface (disable veto)
|
// 1 interface (disable veto)
|
||||||
else {
|
else {
|
||||||
LOG(logINFOBLUE,
|
LOG(logINFOBLUE, ("Setting #Interfaces: 1 (2.5gbps veto streaming)\n"));
|
||||||
("Setting #Interfaces: 1 (disabling veto streaming)\n"));
|
bus_w(addr, bus_r(addr) & ~CONFIG_VETO_CH_10GB_ENBL_MSK);
|
||||||
bus_w(addr, bus_r(addr) & ~CONFIG_VETO_ENBL_MSK);
|
|
||||||
}
|
}
|
||||||
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(addr)));
|
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(addr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
int getNumberofUDPInterfaces() {
|
int getNumberofUDPInterfaces() {
|
||||||
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(CONFIG_REG)));
|
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(CONFIG_REG)));
|
||||||
// return 2 if veto enabled, else 1
|
// return 2 if 10gbps veto streaming enabled, else 1
|
||||||
return ((bus_r(CONFIG_REG) & CONFIG_VETO_ENBL_MSK) ? 2 : 1);
|
return ((bus_r(CONFIG_REG) & CONFIG_VETO_CH_10GB_ENBL_MSK) ? 2 : 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupHeader(int iRxEntry, int vetoInterface, uint32_t destip,
|
void setupHeader(int iRxEntry, int vetoInterface, uint32_t destip,
|
||||||
@ -2207,6 +2205,27 @@ enum timingSourceType getTimingSource() {
|
|||||||
return TIMING_INTERNAL;
|
return TIMING_INTERNAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setVeto(int enable) {
|
||||||
|
if (enable >= 0) {
|
||||||
|
uint32_t addr = CONFIG_REG;
|
||||||
|
|
||||||
|
if (enable) {
|
||||||
|
LOG(logINFOBLUE, ("Enabling veto streaming\n"));
|
||||||
|
bus_w(addr, bus_r(addr) | CONFIG_VETO_ENBL_MSK);
|
||||||
|
} else {
|
||||||
|
LOG(logINFOBLUE, ("Disabling veto streaming\n"));
|
||||||
|
bus_w(addr, bus_r(addr) & ~CONFIG_VETO_ENBL_MSK);
|
||||||
|
}
|
||||||
|
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(addr)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int getVeto() {
|
||||||
|
LOG(logDEBUG, ("config reg:0x%x\n", bus_r(CONFIG_REG)));
|
||||||
|
return ((bus_r(CONFIG_REG) & CONFIG_VETO_ENBL_MSK) >>
|
||||||
|
CONFIG_VETO_ENBL_OFST);
|
||||||
|
}
|
||||||
|
|
||||||
/* aquisition */
|
/* aquisition */
|
||||||
|
|
||||||
int startStateMachine() {
|
int startStateMachine() {
|
||||||
|
@ -518,6 +518,8 @@ void setCurrentSource(int value);
|
|||||||
int getCurrentSource();
|
int getCurrentSource();
|
||||||
void setTimingSource(enum timingSourceType value);
|
void setTimingSource(enum timingSourceType value);
|
||||||
enum timingSourceType getTimingSource();
|
enum timingSourceType getTimingSource();
|
||||||
|
void setVeto(int enable);
|
||||||
|
int getVeto();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(JUNGFRAUD) || defined(EIGERD)
|
#if defined(JUNGFRAUD) || defined(EIGERD)
|
||||||
|
@ -225,3 +225,5 @@ int set_gate_delay(int);
|
|||||||
int get_gate_delay(int);
|
int get_gate_delay(int);
|
||||||
int get_exptime_all_gates(int);
|
int get_exptime_all_gates(int);
|
||||||
int get_gate_delay_all_gates(int);
|
int get_gate_delay_all_gates(int);
|
||||||
|
int get_veto(int);
|
||||||
|
int set_veto(int);
|
@ -336,6 +336,8 @@ void function_table() {
|
|||||||
flist[F_GET_GATE_DELAY] = &get_gate_delay;
|
flist[F_GET_GATE_DELAY] = &get_gate_delay;
|
||||||
flist[F_GET_EXPTIME_ALL_GATES] = &get_exptime_all_gates;
|
flist[F_GET_EXPTIME_ALL_GATES] = &get_exptime_all_gates;
|
||||||
flist[F_GET_GATE_DELAY_ALL_GATES] = &get_gate_delay_all_gates;
|
flist[F_GET_GATE_DELAY_ALL_GATES] = &get_gate_delay_all_gates;
|
||||||
|
flist[F_GET_VETO] = &get_veto;
|
||||||
|
flist[F_SET_VETO] = &set_veto;
|
||||||
|
|
||||||
// check
|
// check
|
||||||
if (NUM_DET_FUNCTIONS >= RECEIVER_ENUM_START) {
|
if (NUM_DET_FUNCTIONS >= RECEIVER_ENUM_START) {
|
||||||
@ -7420,3 +7422,43 @@ int get_gate_delay_all_gates(int file_des) {
|
|||||||
#endif
|
#endif
|
||||||
return Server_SendResult(file_des, INT64, retvals, sizeof(retvals));
|
return Server_SendResult(file_des, INT64, retvals, sizeof(retvals));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_veto(int file_des) {
|
||||||
|
ret = OK;
|
||||||
|
memset(mess, 0, sizeof(mess));
|
||||||
|
int retval = -1;
|
||||||
|
|
||||||
|
LOG(logDEBUG1, ("Getting veto\n"));
|
||||||
|
|
||||||
|
#ifndef GOTTHARD2D
|
||||||
|
functionNotImplemented();
|
||||||
|
#else
|
||||||
|
// get only
|
||||||
|
retval = getVeto();
|
||||||
|
LOG(logDEBUG1, ("veto mode retval: %u\n", retval));
|
||||||
|
#endif
|
||||||
|
return Server_SendResult(file_des, INT32, &retval, sizeof(retval));
|
||||||
|
}
|
||||||
|
|
||||||
|
int set_veto(int file_des) {
|
||||||
|
ret = OK;
|
||||||
|
memset(mess, 0, sizeof(mess));
|
||||||
|
int arg = 0;
|
||||||
|
|
||||||
|
if (receiveData(file_des, &arg, sizeof(arg), INT32) < 0)
|
||||||
|
return printSocketReadError();
|
||||||
|
LOG(logINFO, ("Setting veto mode: %u\n", arg));
|
||||||
|
|
||||||
|
#ifndef GOTTHARD2D
|
||||||
|
functionNotImplemented();
|
||||||
|
#else
|
||||||
|
// only set
|
||||||
|
if (Server_VerifyLock() == OK) {
|
||||||
|
setVeto(arg);
|
||||||
|
int retval = getVeto();
|
||||||
|
LOG(logDEBUG1, ("veto mode retval: %u\n", retval));
|
||||||
|
validate(arg, retval, "set veto mode", DEC);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return Server_SendResult(file_des, INT32, NULL, 0);
|
||||||
|
}
|
||||||
|
@ -205,6 +205,8 @@ enum detFuncs {
|
|||||||
F_GET_GATE_DELAY,
|
F_GET_GATE_DELAY,
|
||||||
F_GET_EXPTIME_ALL_GATES,
|
F_GET_EXPTIME_ALL_GATES,
|
||||||
F_GET_GATE_DELAY_ALL_GATES,
|
F_GET_GATE_DELAY_ALL_GATES,
|
||||||
|
F_GET_VETO,
|
||||||
|
F_SET_VETO,
|
||||||
|
|
||||||
NUM_DET_FUNCTIONS,
|
NUM_DET_FUNCTIONS,
|
||||||
RECEIVER_ENUM_START = 256, /**< detector function should not exceed this
|
RECEIVER_ENUM_START = 256, /**< detector function should not exceed this
|
||||||
@ -508,7 +510,8 @@ const char* getFunctionNameFromEnum(enum detFuncs func) {
|
|||||||
case F_GET_GATE_DELAY: return "F_GET_GATE_DELAY";
|
case F_GET_GATE_DELAY: return "F_GET_GATE_DELAY";
|
||||||
case F_GET_EXPTIME_ALL_GATES: return "F_GET_EXPTIME_ALL_GATES";
|
case F_GET_EXPTIME_ALL_GATES: return "F_GET_EXPTIME_ALL_GATES";
|
||||||
case F_GET_GATE_DELAY_ALL_GATES: return "F_GET_GATE_DELAY_ALL_GATES";
|
case F_GET_GATE_DELAY_ALL_GATES: return "F_GET_GATE_DELAY_ALL_GATES";
|
||||||
|
case F_GET_VETO: return "F_GET_VETO";
|
||||||
|
case F_SET_VETO: return "F_SET_VETO";
|
||||||
|
|
||||||
case NUM_DET_FUNCTIONS: return "NUM_DET_FUNCTIONS";
|
case NUM_DET_FUNCTIONS: return "NUM_DET_FUNCTIONS";
|
||||||
case RECEIVER_ENUM_START: return "RECEIVER_ENUM_START";
|
case RECEIVER_ENUM_START: return "RECEIVER_ENUM_START";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user