removed ndac from sls_detector_module and from the servers (not used), fixed setting module by eiger bug in sending number of channels

This commit is contained in:
2018-11-02 17:08:25 +01:00
parent d1c8d0b01c
commit a99584a0da
18 changed files with 113 additions and 535 deletions

View File

@ -356,8 +356,6 @@ int sendModule(int file_des, sls_detector_module *myMod) {
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->ndac), sizeof(myMod->ndac), INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->nadc), sizeof(myMod->nadc), INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->reg), sizeof(myMod->reg), INT32);
if (!n) return -1; ts += n;
n = sendData(file_des,&(myMod->iodelay), sizeof(myMod->iodelay), INT32);
@ -369,9 +367,6 @@ int sendModule(int file_des, sls_detector_module *myMod) {
// dacs
n = sendData(file_des,myMod->dacs, sizeof(int)*(myMod->ndac), INT32);
if (!n) return -1; ts += n;
// adcs
n = sendData(file_des,myMod->adcs, sizeof(int)*(myMod->nadc), INT32);
if (!n) return -1; ts += n;
// channels
#ifdef EIGERD
n = sendData(file_des,myMod->chanregs, sizeof(int) * (myMod->nchan), INT32);
@ -384,58 +379,60 @@ int sendModule(int file_des, sls_detector_module *myMod) {
int receiveModule(int file_des, sls_detector_module* myMod) {
TLogLevel level = logDEBUG1;
FILE_LOG(level, ("Receiving Module\n"));
int ts = 0, n = 0;
int nDacs = myMod->ndac;
int nAdcs = myMod->nadc;
#ifdef EIGERD
int nChans = myMod->nchan; // can be zero for no trimbits
FILE_LOG(level, ("nChans: %d\n",nChans));
#endif
n = receiveData(file_des,&(myMod->serialnumber), sizeof(myMod->serialnumber), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("serialno received. %d bytes. serialno: %d\n", n, myMod->serialnumber));
n = receiveData(file_des,&(myMod->nchan), sizeof(myMod->nchan), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("nchan received. %d bytes. nchan: %d\n", n, myMod->nchan));
n = receiveData(file_des,&(myMod->nchip), sizeof(myMod->nchip), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("nchip received. %d bytes. nchip: %d\n", n, myMod->nchip));
n = receiveData(file_des,&(myMod->ndac), sizeof(myMod->ndac), INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des,&(myMod->nadc), sizeof(myMod->nadc), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("ndac received. %d bytes. ndac: %d\n", n, myMod->ndac));
n = receiveData(file_des,&(myMod->reg), sizeof(myMod->reg), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("reg received. %d bytes. reg: %d\n", n, myMod->reg));
n = receiveData(file_des,&(myMod->iodelay), sizeof(myMod->iodelay), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("iodelay received. %d bytes. iodelay: %d\n", n, myMod->iodelay));
n = receiveData(file_des,&(myMod->tau), sizeof(myMod->tau), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("tau received. %d bytes. tau: %d\n", n, myMod->tau));
n = receiveData(file_des,&(myMod->eV), sizeof(myMod->eV), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("eV received. %d bytes. eV: %d\n", n, myMod->eV));
// dacs
if (nDacs != (myMod->ndac)) {
FILE_LOG(logERROR, ("received wrong number of dacs. "
"Expected %d, got %d\n", nDacs, myMod->ndac));
"Expected %d, got %d\n", nDacs, myMod->ndac));
return 0;
}
n = receiveData(file_des,&(myMod->dacs), sizeof(int) * (myMod->ndac), INT32);
if (!n) return -1; ts += n;
// adcs
if (nAdcs != (myMod->nadc)) {
FILE_LOG(logERROR, ("received wrong number of adcs. "
"Expected %d, got %d\n", nAdcs, myMod->nadc));
return 0;
}
n = receiveData(file_des,&(myMod->adcs), sizeof(int) * (myMod->nadc), INT32);
n = receiveData(file_des, myMod->dacs, sizeof(int) * (myMod->ndac), INT32);
if (!n) return -1; ts += n;
FILE_LOG(level, ("dacs received. %d bytes.\n", n));
// channels
#ifdef EIGERD
if (((myMod->nchan) != 0 ) || // no trimbits
if (((myMod->nchan) != 0 ) && // no trimbits
(nChans != (myMod->nchan))) { // with trimbits
FILE_LOG(logERROR, ("received wrong number of channels. "
"Expected %d, got %d\n", nChans, (myMod->nchan)));
return 0;
}
n = receiveData(file_des,&(myMod->chanregs), sizeof(int) * (myMod->nchan), INT32);
if (!n) return -1; ts += n;
n = receiveData(file_des, myMod->chanregs, sizeof(int) * (myMod->nchan), INT32);
FILE_LOG(level, ("chanregs received. %d bytes.\n", n));
if (!n) return -1; ts += n;
#endif
FILE_LOG(logDEBUG1, ("received module of size %d register %x\n",ts,myMod->reg));
FILE_LOG(level, ("received module of size %d register %x\n",ts,myMod->reg));
return ts;
}

View File

@ -225,7 +225,6 @@ int calculateDataBytes();
int getTotalNumberOfChannels();
int getNumberOfChips();
int getNumberOfDACs();
int getNumberOfADCs();
int getNumberOfChannelsPerChip();

View File

@ -839,10 +839,8 @@ int set_module(int file_des) {
sls_detector_module module;
int *myDac = NULL;
int *myAdc = NULL;
int *myChan = NULL;
module.dacs = NULL;
module.adcs = NULL;
module.chanregs = NULL;
// allocate to receive arguments
@ -856,18 +854,6 @@ int set_module(int file_des) {
} else
module.dacs = myDac;
// allocate adcs
if (ret == OK) {
myAdc = (int*)malloc(getNumberOfADCs() * sizeof(int));
// error
if (getNumberOfADCs() > 0 && myAdc == NULL) {
ret = FAIL;
sprintf(mess,"Could not allocate adcs\n");
FILE_LOG(logERROR,(mess));
} else
module.adcs = myAdc;
}
// allocate chans
#ifdef EIGERD
if (ret == OK) {
@ -885,22 +871,20 @@ int set_module(int file_des) {
module.nchip = getNumberOfChips();
module.nchan = getTotalNumberOfChannels();
module.ndac = getNumberOfDACs();
module.nadc = getNumberOfADCs();
int ts = receiveModule(file_des, &module);
if (ts < 0) {
if (myChan != NULL) free(myChan);
if (myDac != NULL) free(myDac);
if (myAdc != NULL) free(myAdc);
return printSocketReadError();
}
FILE_LOG(logDEBUG1, ("module register is %d, nchan %d, nchip %d, "
"ndac %d, nadc %d, iodelay %d, tau %d, eV %d\n",
"ndac %d, iodelay %d, tau %d, eV %d\n",
module.reg, module.nchan, module.nchip,
module.ndac, module.nadc, module.iodelay, module.tau, module.eV));
module.ndac, module.iodelay, module.tau, module.eV));
// should at least have a dac
if (ts <= sizeof(sls_detector_module)) {
ret = FAIL;
sprintf(mess, "Cannot set module. Received incorrect number of dacs or adcs or channels\n");
sprintf(mess, "Cannot set module. Received incorrect number of dacs or channels\n");
FILE_LOG(logERROR,(mess));
}
}
@ -923,6 +907,7 @@ int set_module(int file_des) {
case VERYHIGHGAIN:
case VERYLOWGAIN:
#elif JUNGFRAUD
case GET_SETTINGS:
case DYNAMICGAIN:
case DYNAMICHG0:
case FIXGAIN1:
@ -949,7 +934,6 @@ int set_module(int file_des) {
}
if (myChan != NULL) free(myChan);
if (myDac != NULL) free(myDac);
if (myAdc != NULL) free(myAdc);
return Server_SendResult(file_des, INT32, 1, &retval, sizeof(retval));
}
@ -961,10 +945,8 @@ int get_module(int file_des) {
memset(mess, 0, sizeof(mess));
sls_detector_module module;
int *myDac = NULL;
int *myAdc = NULL;
int *myChan = NULL;
module.dacs = NULL;
module.adcs = NULL;
module.chanregs = NULL;
// allocate to send arguments
@ -978,18 +960,6 @@ int get_module(int file_des) {
} else
module.dacs = myDac;
// allocate adcs
if (ret == OK) {
myAdc = (int*)malloc(getNumberOfADCs() * sizeof(int));
// error
if (getNumberOfADCs() > 0 && myAdc == NULL) {
ret = FAIL;
sprintf(mess,"Could not allocate adcs\n");
FILE_LOG(logERROR,(mess));
} else
module.adcs=myAdc;
}
// allocate chans
#ifdef EIGERD
if (ret == OK) {
@ -1008,7 +978,6 @@ int get_module(int file_des) {
module.nchip = getNumberOfChips();
module.nchan = getTotalNumberOfChannels();
module.ndac = getNumberOfDACs();
module.nadc = getNumberOfADCs();
// only get
FILE_LOG(logDEBUG1, ("Getting module\n"));
@ -1024,7 +993,6 @@ int get_module(int file_des) {
}
if (myChan != NULL) free(myChan);
if (myDac != NULL) free(myDac);
if (myAdc != NULL) free(myAdc);
return ret;
}