mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00
transmission delay added
This commit is contained in:
parent
1db5ef4fd4
commit
d28d737fb9
@ -59,6 +59,7 @@ using namespace std;
|
|||||||
#define COULD_NOT_PULSE_CHIP 0x0000000000100000ULL
|
#define COULD_NOT_PULSE_CHIP 0x0000000000100000ULL
|
||||||
#define COULD_NOT_SET_RATE_CORRECTION 0x0000000000200000ULL
|
#define COULD_NOT_SET_RATE_CORRECTION 0x0000000000200000ULL
|
||||||
#define RATE_CORRECTION_TAU_SUBEXPOSURE 0x0000000000400000ULL
|
#define RATE_CORRECTION_TAU_SUBEXPOSURE 0x0000000000400000ULL
|
||||||
|
#define TRANSMISSION_DELAY 0x0000000000800000ULL
|
||||||
|
|
||||||
// 0x00000000FFFFFFFFULL
|
// 0x00000000FFFFFFFFULL
|
||||||
/** @short class returning all error messages for error mask */
|
/** @short class returning all error messages for error mask */
|
||||||
@ -190,6 +191,11 @@ public:
|
|||||||
if(slsErrorMask&RATE_CORRECTION_TAU_SUBEXPOSURE)
|
if(slsErrorMask&RATE_CORRECTION_TAU_SUBEXPOSURE)
|
||||||
retval.append("Rate Correction Deactivated: (tau/subexptime) must be less than 0.0015\n");
|
retval.append("Rate Correction Deactivated: (tau/subexptime) must be less than 0.0015\n");
|
||||||
|
|
||||||
|
if(slsErrorMask&TRANSMISSION_DELAY)
|
||||||
|
retval.append("Could not set/get transmission delay\n");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------ length of message
|
//------------------------------------------------------ length of message
|
||||||
|
|
||||||
|
@ -183,7 +183,10 @@ enum networkParameter {
|
|||||||
RECEIVER_UDP_IP, /**< receiever UDP IP */
|
RECEIVER_UDP_IP, /**< receiever UDP IP */
|
||||||
RECEIVER_UDP_PORT, /**< receiever UDP Port */
|
RECEIVER_UDP_PORT, /**< receiever UDP Port */
|
||||||
RECEIVER_UDP_MAC, /**< receiever UDP MAC */
|
RECEIVER_UDP_MAC, /**< receiever UDP MAC */
|
||||||
RECEIVER_UDP_PORT2 /**< receiever UDP Port of second half module for eiger */
|
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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -523,7 +526,6 @@ enum angleConversionParameter {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//typedef struct {
|
//typedef struct {
|
||||||
//float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
//float center; /**< center of the module (channel at which the radius is perpendicular to the module surface) */
|
||||||
//float ecenter; /**< error in the center determination */
|
//float ecenter; /**< error in the center determination */
|
||||||
|
@ -268,10 +268,27 @@ int Beb_Activate(int enable){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Beb_SetTransmissionDelay(int delay){
|
int Beb_SetTransmissionDelay(enum transmissionDelayIndex mode, int delay){
|
||||||
//mapping new memory
|
//mapping new memory
|
||||||
u_int32_t baseaddr, value = 0;
|
u_int32_t baseaddr, value = 0;
|
||||||
|
u_int32_t offset = TXM_DELAY_LEFT_OFFSET;
|
||||||
|
char modename[100] = "";
|
||||||
|
|
||||||
|
switch(mode){
|
||||||
|
case TXN_LEFT:
|
||||||
|
offset = TXM_DELAY_LEFT_OFFSET;
|
||||||
|
strcpy(modename,"Transmission Delay Left");
|
||||||
|
break;
|
||||||
|
case TXN_RIGHT:
|
||||||
|
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;
|
||||||
|
default: cprintf(BG_RED,"Unrecognized mode in transmission delay: %d\n",mode); return -1;
|
||||||
|
}
|
||||||
//open file pointer
|
//open file pointer
|
||||||
int fd = Beb_open(XPAR_PLB_GPIO_SYS_BASEADDR,&baseaddr);
|
int fd = Beb_open(XPAR_PLB_GPIO_SYS_BASEADDR,&baseaddr);
|
||||||
if(fd < 0){
|
if(fd < 0){
|
||||||
@ -280,19 +297,19 @@ int Beb_SetTransmissionDelay(int delay){
|
|||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(delay > -1){
|
if(delay > -1){
|
||||||
value = Beb_Read32(baseaddr, TXM_DELAY_LEFT_OFFSET);
|
value = Beb_Read32(baseaddr, offset);
|
||||||
cprintf(BLUE, "Transmission Delay value before:%d\n",value);
|
cprintf(BLUE, "%s value before:%d\n",modename,value);
|
||||||
Beb_Write32(baseaddr, TXM_DELAY_LEFT_OFFSET,delay);
|
Beb_Write32(baseaddr, offset,delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
value = Beb_Read32(baseaddr, TXM_DELAY_LEFT_OFFSET);
|
value = Beb_Read32(baseaddr, offset);
|
||||||
cprintf(BLUE,"Transmission Delay value:%d\n", value);
|
cprintf(BLUE,"%s value:%d\n", modename,value);
|
||||||
}
|
}
|
||||||
//close file pointer
|
//close file pointer
|
||||||
if(fd > 0)
|
if(fd > 0)
|
||||||
Beb_close(fd);
|
Beb_close(fd);
|
||||||
|
|
||||||
return 0;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,8 +11,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "LocalLinkInterface.h"
|
#include "LocalLinkInterface.h"
|
||||||
|
#include "slsDetectorServer_defs.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct BebInfo{
|
struct BebInfo{
|
||||||
@ -51,7 +50,7 @@ struct BebInfo{
|
|||||||
int Beb_SetMasterViaSoftware();
|
int Beb_SetMasterViaSoftware();
|
||||||
int Beb_SetSlaveViaSoftware();
|
int Beb_SetSlaveViaSoftware();
|
||||||
int Beb_Activate(int enable);
|
int Beb_Activate(int enable);
|
||||||
int Beb_SetTransmissionDelay(int delay);
|
int Beb_SetTransmissionDelay(enum transmissionDelayIndex mode, int delay);
|
||||||
int Beb_ResetToHardwareSettings();
|
int Beb_ResetToHardwareSettings();
|
||||||
u_int32_t Beb_GetFirmwareRevision();
|
u_int32_t Beb_GetFirmwareRevision();
|
||||||
u_int32_t Beb_GetFirmwareSoftwareAPIVersion();
|
u_int32_t Beb_GetFirmwareSoftwareAPIVersion();
|
||||||
|
@ -123,6 +123,8 @@
|
|||||||
#define DEACTIVATE_BIT 0x4
|
#define DEACTIVATE_BIT 0x4
|
||||||
|
|
||||||
#define TXM_DELAY_LEFT_OFFSET 0x180
|
#define TXM_DELAY_LEFT_OFFSET 0x180
|
||||||
|
#define TXM_DELAY_RIGHT_OFFSET 0x1A0
|
||||||
|
#define TXM_DELAY_FRAME_OFFSET 0x1C0
|
||||||
|
|
||||||
//command memory
|
//command memory
|
||||||
#define LEFT_OFFSET 0x0
|
#define LEFT_OFFSET 0x0
|
||||||
|
Binary file not shown.
@ -1303,8 +1303,7 @@ int getAllTrimbits(){
|
|||||||
return *((detectorModules->chanregs));
|
return *((detectorModules->chanregs));
|
||||||
}
|
}
|
||||||
|
|
||||||
int getBebFPGATemp()
|
int getBebFPGATemp(){
|
||||||
{
|
|
||||||
return Beb_GetBebFPGATemp();
|
return Beb_GetBebFPGATemp();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1314,4 +1313,8 @@ int activate(int enable){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int setTransmissionDelay(enum transmissionDelayIndex mode, int delay){
|
||||||
|
return Beb_SetTransmissionDelay(mode, delay);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -42,5 +42,7 @@ enum detDacIndex{SVP,VTR,VRF,VRS,SVN,VTGSTV,VCMP_LL,VCMP_LR,CAL,VCMP_RL,RXB_RB,R
|
|||||||
|
|
||||||
enum detAdcIndex{TEMP_FPGAEXT, TEMP_10GE, TEMP_DCDC, TEMP_SODL, TEMP_SODR, TEMP_FPGA};
|
enum detAdcIndex{TEMP_FPGAEXT, TEMP_10GE, TEMP_DCDC, TEMP_SODL, TEMP_SODR, TEMP_FPGA};
|
||||||
|
|
||||||
|
enum transmissionDelayIndex{TXN_LEFT, TXN_RIGHT, TXN_FRAME};
|
||||||
|
|
||||||
|
|
||||||
#endif /* SLSDETECTORSERVER_DEFS_H_ */
|
#endif /* SLSDETECTORSERVER_DEFS_H_ */
|
||||||
|
@ -2077,7 +2077,7 @@ slsDetectorDefs::ROI* multiSlsDetector::getROI(int &n){
|
|||||||
int maxroi = ndet*MAX_ROIS;
|
int maxroi = ndet*MAX_ROIS;
|
||||||
ROI temproi;
|
ROI temproi;
|
||||||
ROI roiLimits[maxroi];
|
ROI roiLimits[maxroi];
|
||||||
ROI retval[maxroi];
|
ROI* retval = new ROI[maxroi];
|
||||||
ROI* temp=0;
|
ROI* temp=0;
|
||||||
int index=0;
|
int index=0;
|
||||||
|
|
||||||
|
@ -5366,8 +5366,13 @@ char* slsDetector::setNetworkParameter(networkParameter index, string value) {
|
|||||||
if(thisDetector->myDetectorType == EIGER)
|
if(thisDetector->myDetectorType == EIGER)
|
||||||
return getReceiverUDPPort2();
|
return getReceiverUDPPort2();
|
||||||
return getReceiverUDPPort();
|
return getReceiverUDPPort();
|
||||||
|
case DETECTOR_TXN_DELAY_LEFT:
|
||||||
|
case DETECTOR_TXN_DELAY_RIGHT:
|
||||||
|
case DETECTOR_TXN_DELAY_FRAME:
|
||||||
|
sscanf(value.c_str(),"%d",&i);
|
||||||
|
return setTransmissionDelay(index, i);
|
||||||
default:
|
default:
|
||||||
return ("unknown network parameter");
|
return (char*)("unknown network parameter");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -5398,15 +5403,16 @@ char* slsDetector::getNetworkParameter(networkParameter index) {
|
|||||||
case RECEIVER_UDP_PORT2:
|
case RECEIVER_UDP_PORT2:
|
||||||
return getReceiverUDPPort2();
|
return getReceiverUDPPort2();
|
||||||
break;
|
break;
|
||||||
|
case DETECTOR_TXN_DELAY_LEFT:
|
||||||
|
case DETECTOR_TXN_DELAY_RIGHT:
|
||||||
|
case DETECTOR_TXN_DELAY_FRAME:
|
||||||
|
return setTransmissionDelay(index, -1);
|
||||||
default:
|
default:
|
||||||
return ("unknown network parameter");
|
return (char*)("unknown network parameter");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char* slsDetector::setDetectorMAC(string detectorMAC){
|
char* slsDetector::setDetectorMAC(string detectorMAC){
|
||||||
if(detectorMAC.length()==17){
|
if(detectorMAC.length()==17){
|
||||||
if((detectorMAC[2]==':')&&(detectorMAC[5]==':')&&(detectorMAC[8]==':')&&
|
if((detectorMAC[2]==':')&&(detectorMAC[5]==':')&&(detectorMAC[8]==':')&&
|
||||||
@ -5587,6 +5593,43 @@ int slsDetector::setReceiverUDPPort2(int udpport){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* slsDetector::setTransmissionDelay(networkParameter index, int delay){
|
||||||
|
int fnum = F_SET_TRANSMISSION_DELAY;
|
||||||
|
char* cretval = new char[MAX_STR_LENGTH];
|
||||||
|
int ret = FAIL;
|
||||||
|
int retval = -1;
|
||||||
|
char mess[MAX_STR_LENGTH]="";
|
||||||
|
|
||||||
|
#ifdef VERBOSE
|
||||||
|
std::cout<< "Setting Transmission delay of mode "<< index << " to " << delay << std::endl;
|
||||||
|
#endif
|
||||||
|
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||||
|
if (connectControl() == OK){
|
||||||
|
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||||
|
controlSocket->SendDataOnly(&index,sizeof(index));
|
||||||
|
controlSocket->SendDataOnly(&delay,sizeof(delay));
|
||||||
|
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||||
|
if (ret==FAIL) {
|
||||||
|
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||||
|
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||||
|
setErrorMask((getErrorMask())|(TRANSMISSION_DELAY));
|
||||||
|
} else
|
||||||
|
controlSocket->ReceiveDataOnly(&retval,sizeof(retval));
|
||||||
|
disconnectControl();
|
||||||
|
if (ret==FORCE_UPDATE)
|
||||||
|
updateDetector();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef VERBOSE
|
||||||
|
std::cout<< "Speed set to "<< retval << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(cretval,"%d",retval);
|
||||||
|
return cretval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int slsDetector::setUDPConnection(){
|
int slsDetector::setUDPConnection(){
|
||||||
|
|
||||||
int ret = FAIL;
|
int ret = FAIL;
|
||||||
|
@ -1673,6 +1673,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
|||||||
int setReceiverUDPPort(int udpport);
|
int setReceiverUDPPort(int udpport);
|
||||||
/** sets the receiver udp port2 for Eiger \sa sharedSlsDetector */
|
/** sets the receiver udp port2 for Eiger \sa sharedSlsDetector */
|
||||||
int setReceiverUDPPort2(int udpport);
|
int setReceiverUDPPort2(int udpport);
|
||||||
|
/** sets the transmission delay for left or right port or for an entire frame*/
|
||||||
|
char* setTransmissionDelay(networkParameter index, int delay);
|
||||||
|
|
||||||
/** Sets the read receiver frequency
|
/** Sets the read receiver frequency
|
||||||
if Receiver read upon gui request, readRxrFrequency=0,
|
if Receiver read upon gui request, readRxrFrequency=0,
|
||||||
|
@ -363,6 +363,18 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
|||||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter;
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
|
descrToFuncMap[i].m_pFuncName="txndelay_left"; //
|
||||||
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
descrToFuncMap[i].m_pFuncName="txndelay_right"; //
|
||||||
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
descrToFuncMap[i].m_pFuncName="txndelay_frame"; //
|
||||||
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter;
|
||||||
|
i++;
|
||||||
|
|
||||||
descrToFuncMap[i].m_pFuncName="configuremac"; //
|
descrToFuncMap[i].m_pFuncName="configuremac"; //
|
||||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdConfigureMac;
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdConfigureMac;
|
||||||
i++;
|
i++;
|
||||||
@ -2679,6 +2691,24 @@ string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int actio
|
|||||||
if (!(sscanf(args[1],"%d",&i)))
|
if (!(sscanf(args[1],"%d",&i)))
|
||||||
return ("cannot parse argument") + string(args[1]);
|
return ("cannot parse argument") + string(args[1]);
|
||||||
}
|
}
|
||||||
|
} else if (cmd=="txndelay_left") {
|
||||||
|
t=DETECTOR_TXN_DELAY_LEFT;
|
||||||
|
if (action==PUT_ACTION){
|
||||||
|
if (!(sscanf(args[1],"%d",&i)))
|
||||||
|
return ("cannot parse argument") + string(args[1]);
|
||||||
|
}
|
||||||
|
} else if (cmd=="txndelay_right") {
|
||||||
|
t=DETECTOR_TXN_DELAY_RIGHT;
|
||||||
|
if (action==PUT_ACTION){
|
||||||
|
if (!(sscanf(args[1],"%d",&i)))
|
||||||
|
return ("cannot parse argument") + string(args[1]);
|
||||||
|
}
|
||||||
|
} else if (cmd=="txndelay_frame") {
|
||||||
|
t=DETECTOR_TXN_DELAY_FRAME;
|
||||||
|
if (action==PUT_ACTION){
|
||||||
|
if (!(sscanf(args[1],"%d",&i)))
|
||||||
|
return ("cannot parse argument") + string(args[1]);
|
||||||
|
}
|
||||||
} else return ("unknown network parameter")+cmd;
|
} else return ("unknown network parameter")+cmd;
|
||||||
|
|
||||||
if (action==PUT_ACTION)
|
if (action==PUT_ACTION)
|
||||||
@ -2701,6 +2731,9 @@ string slsDetectorCommand::helpNetworkParameter(int narg, char *args[], int acti
|
|||||||
os << "rx_udpmac mac \n sets receiver udp mac to mac"<< std::endl;
|
os << "rx_udpmac mac \n sets receiver udp mac to mac"<< std::endl;
|
||||||
os << "rx_udpport port \n sets receiver udp port to port"<< std::endl;
|
os << "rx_udpport port \n sets receiver udp port to port"<< std::endl;
|
||||||
os << "rx_udpport2 port \n sets receiver udp port to port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl;
|
os << "rx_udpport2 port \n sets receiver udp port to port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl;
|
||||||
|
os << "txndelay_left port \n sets detector transmission delay of the left port"<< std::endl;
|
||||||
|
os << "txndelay_right port \n sets detector transmission delay of the right port"<< std::endl;
|
||||||
|
os << "txndelay_frame port \n sets detector transmission delay of the entire frame"<< std::endl;
|
||||||
}
|
}
|
||||||
if (action==GET_ACTION || action==HELP_ACTION) {
|
if (action==GET_ACTION || action==HELP_ACTION) {
|
||||||
os << "detectormac \n gets detector mac "<< std::endl;
|
os << "detectormac \n gets detector mac "<< std::endl;
|
||||||
@ -2709,7 +2742,9 @@ string slsDetectorCommand::helpNetworkParameter(int narg, char *args[], int acti
|
|||||||
os << "rx_udpmac \n gets receiver udp mac "<< std::endl;
|
os << "rx_udpmac \n gets receiver udp mac "<< std::endl;
|
||||||
os << "rx_udpport \n gets receiver udp port "<< std::endl;
|
os << "rx_udpport \n gets receiver udp port "<< std::endl;
|
||||||
os << "rx_udpport2 \n gets receiver udp port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl;
|
os << "rx_udpport2 \n gets receiver udp port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl;
|
||||||
|
os << "txndelay_left \n gets detector transmission delay of the left port"<< std::endl;
|
||||||
|
os << "txndelay_right \n gets detector transmission delay of the right port"<< std::endl;
|
||||||
|
os << "txndelay_frame \n gets detector transmission delay of the entire frame"<< std::endl;
|
||||||
}
|
}
|
||||||
return os.str();
|
return os.str();
|
||||||
|
|
||||||
|
@ -154,6 +154,7 @@ void setAllTrimbits(int val);
|
|||||||
int getAllTrimbits();
|
int getAllTrimbits();
|
||||||
int getBebFPGATemp();
|
int getBebFPGATemp();
|
||||||
int activate(int enable);
|
int activate(int enable);
|
||||||
|
int setTransmissionDelay(enum transmissionDelayIndex mode, int delay);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,6 +205,7 @@ int function_table() {
|
|||||||
flist[F_SET_RATE_CORRECT]=&set_rate_correct;
|
flist[F_SET_RATE_CORRECT]=&set_rate_correct;
|
||||||
flist[F_GET_RATE_CORRECT]=&get_rate_correct;
|
flist[F_GET_RATE_CORRECT]=&get_rate_correct;
|
||||||
flist[F_ACTIVATE]=&set_activate;
|
flist[F_ACTIVATE]=&set_activate;
|
||||||
|
flist[F_SET_TRANSMISSION_DELAY]=&set_transmission_delay;
|
||||||
|
|
||||||
|
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
@ -4084,3 +4085,80 @@ int set_activate(int file_des) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int set_transmission_delay(int file_des) {
|
||||||
|
|
||||||
|
enum transmissionDelayIndex index;
|
||||||
|
enum networkParameter mode;
|
||||||
|
int delay = -1;
|
||||||
|
int ret=OK,ret1=OK;
|
||||||
|
int retval = -1,n;
|
||||||
|
|
||||||
|
sprintf(mess,"can't set transmission delay\n");
|
||||||
|
n = receiveData(file_des,&mode,sizeof(mode),INT32);
|
||||||
|
if (n < 0) {
|
||||||
|
sprintf(mess,"Error reading from socket\n");
|
||||||
|
ret=FAIL;
|
||||||
|
}
|
||||||
|
n = receiveData(file_des,&delay,sizeof(delay),INT32);
|
||||||
|
if (n < 0) {
|
||||||
|
sprintf(mess,"Error reading from socket\n");
|
||||||
|
ret=FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VERBOSE
|
||||||
|
printf("setting transmission delay mode %d to %d\n",(int)mode,delay);
|
||||||
|
#endif
|
||||||
|
if (ret==OK) {
|
||||||
|
if (differentClients==1 && lockStatus==1 && delay>=0) {
|
||||||
|
ret=FAIL;
|
||||||
|
sprintf(mess,"Detector locked by %s\n",lastClientIP);
|
||||||
|
} else {
|
||||||
|
#ifdef SLS_DETECTOR_FUNCTION_LIST
|
||||||
|
switch (mode) {
|
||||||
|
#ifdef EIGERD
|
||||||
|
case DETECTOR_TXN_DELAY_LEFT:
|
||||||
|
index = TXN_LEFT;
|
||||||
|
break;
|
||||||
|
case DETECTOR_TXN_DELAY_RIGHT:
|
||||||
|
index = TXN_RIGHT;
|
||||||
|
break;
|
||||||
|
case DETECTOR_TXN_DELAY_FRAME:
|
||||||
|
index = TXN_FRAME;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
sprintf(mess,"unknown transmission mode %d for this detector\n",mode);
|
||||||
|
ret=FAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ret==OK)
|
||||||
|
retval=setTransmissionDelay(index, delay);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (ret==OK){
|
||||||
|
if ((retval!=delay) && (delay>=0)) {
|
||||||
|
ret=FAIL;
|
||||||
|
sprintf(mess,"could not change transmission mode %d: should be %d but is %d \n",index, delay, retval);
|
||||||
|
printf(RED, mess);
|
||||||
|
}else if (differentClients)
|
||||||
|
ret=FORCE_UPDATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//ret could be swapped during sendData
|
||||||
|
ret1 = ret;
|
||||||
|
n = sendData(file_des,&ret1,sizeof(ret),INT32);
|
||||||
|
if (ret==FAIL)
|
||||||
|
n = sendData(file_des,mess,sizeof(mess),OTHER);
|
||||||
|
else
|
||||||
|
n = sendData(file_des,&retval,sizeof(retval),INT32);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -90,5 +90,6 @@ int pulse_chip(int);
|
|||||||
int set_rate_correct(int);
|
int set_rate_correct(int);
|
||||||
int get_rate_correct(int);
|
int get_rate_correct(int);
|
||||||
int set_activate(int);
|
int set_activate(int);
|
||||||
|
int set_transmission_delay(int);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user