mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 04:47:14 +02:00
merge conflict removed, jungfrau server and eiger server re compiled
This commit is contained in:
@ -3369,6 +3369,173 @@ dacs_t multiSlsDetector::getADC(dacIndex idac, int imod) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::setThresholdTemperature(int val, int imod) {
|
||||
int ret = -100;
|
||||
|
||||
// single
|
||||
{
|
||||
int id=-1, im=-1;
|
||||
if (decodeNMod(imod, id, im)>=0) {
|
||||
if(detectors[id]){
|
||||
ret = detectors[id]->setThresholdTemperature(val, im);
|
||||
if(detectors[id]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<id));
|
||||
return ret;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// multi
|
||||
if(!threadpool){
|
||||
cout << "Error in creating threadpool. Exiting" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
||||
int* iret[posmax-posmin];
|
||||
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
iret[idet]= new dacs_t(-1);
|
||||
Task* task = new Task(new func2_t<int,int,int>(&slsDetector::setThresholdTemperature,
|
||||
detectors[idet], val, imod, iret[idet]));
|
||||
threadpool->add_task(task);
|
||||
}
|
||||
}
|
||||
threadpool->startExecuting();
|
||||
threadpool->wait_for_tasks_to_complete();
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
if(iret[idet] != NULL){
|
||||
if (ret==-100)
|
||||
ret=*iret[idet];
|
||||
else if (ret!=*iret[idet])
|
||||
ret=-1;
|
||||
delete iret[idet];
|
||||
}else ret=-1;
|
||||
if(detectors[idet]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<idet));
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::setTemperatureControl(int val, int imod) {
|
||||
int ret = -100;
|
||||
|
||||
// single
|
||||
{
|
||||
int id=-1, im=-1;
|
||||
if (decodeNMod(imod, id, im)>=0) {
|
||||
if(detectors[id]){
|
||||
ret = detectors[id]->setTemperatureControl(val, im);
|
||||
if(detectors[id]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<id));
|
||||
return ret;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// multi
|
||||
if(!threadpool){
|
||||
cout << "Error in creating threadpool. Exiting" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
||||
int* iret[posmax-posmin];
|
||||
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
iret[idet]= new dacs_t(-1);
|
||||
Task* task = new Task(new func2_t<int,int,int>(&slsDetector::setTemperatureControl,
|
||||
detectors[idet], val, imod, iret[idet]));
|
||||
threadpool->add_task(task);
|
||||
}
|
||||
}
|
||||
threadpool->startExecuting();
|
||||
threadpool->wait_for_tasks_to_complete();
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
if(iret[idet] != NULL){
|
||||
if (ret==-100)
|
||||
ret=*iret[idet];
|
||||
else if (ret!=*iret[idet])
|
||||
ret=-1;
|
||||
delete iret[idet];
|
||||
}else ret=-1;
|
||||
if(detectors[idet]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<idet));
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::setTemperatureEvent(int val, int imod) {
|
||||
int ret = -100;
|
||||
|
||||
// single
|
||||
{
|
||||
int id=-1, im=-1;
|
||||
if (decodeNMod(imod, id, im)>=0) {
|
||||
if(detectors[id]){
|
||||
ret = detectors[id]->setTemperatureEvent(val, im);
|
||||
if(detectors[id]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<id));
|
||||
return ret;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// multi
|
||||
if(!threadpool){
|
||||
cout << "Error in creating threadpool. Exiting" << endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
||||
int* iret[posmax-posmin];
|
||||
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
iret[idet]= new dacs_t(-1);
|
||||
Task* task = new Task(new func2_t<int,int,int>(&slsDetector::setTemperatureEvent,
|
||||
detectors[idet], val, imod, iret[idet]));
|
||||
threadpool->add_task(task);
|
||||
}
|
||||
}
|
||||
threadpool->startExecuting();
|
||||
threadpool->wait_for_tasks_to_complete();
|
||||
for(int idet=posmin; idet<posmax; ++idet){
|
||||
if(detectors[idet]){
|
||||
if(iret[idet] != NULL){
|
||||
if (ret==-100)
|
||||
ret=*iret[idet];
|
||||
else if (ret!=*iret[idet])
|
||||
ret=-1;
|
||||
delete iret[idet];
|
||||
}else ret=-1;
|
||||
if(detectors[idet]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<idet));
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::setChannel(int64_t reg, int ichan, int ichip, int imod) {
|
||||
int ret, ret1=-100;
|
||||
int id=-1, im=-1;
|
||||
@ -4507,6 +4674,22 @@ int multiSlsDetector::powerChip(int ival){
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::setAutoComparatorDisableMode(int ival) {
|
||||
int ret=OK, ret1=OK;
|
||||
|
||||
for (int i=0; i<thisMultiDetector->numberOfDetectors; ++i) {
|
||||
if (detectors[i]) {
|
||||
ret=detectors[i]->setAutoComparatorDisableMode(ival);
|
||||
if(detectors[i]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<i));
|
||||
if (ret==FAIL)
|
||||
ret1=FAIL;
|
||||
}
|
||||
}
|
||||
return ret1;
|
||||
}
|
||||
|
||||
|
||||
int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
||||
int ret=OK;
|
||||
|
||||
|
@ -554,6 +554,12 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
*/
|
||||
int powerChip(int ival= -1);
|
||||
|
||||
/** automatic comparator disable for Jungfrau only
|
||||
\param ival on is 1, off is 0, -1 to get
|
||||
\returns OK or FAIL
|
||||
*/
|
||||
int setAutoComparatorDisableMode(int ival= -1);
|
||||
|
||||
/** loads the modules settings/trimbits reading from a file - file name extension is automatically generated! */
|
||||
int loadSettingsFile(string fname, int nmod=-1);
|
||||
|
||||
@ -975,6 +981,31 @@ class multiSlsDetector : public slsDetectorUtils {
|
||||
\returns current DAC value (temperature for eiger and jungfrau in millidegrees)
|
||||
*/
|
||||
dacs_t getADC(dacIndex index, int imod=-1);
|
||||
|
||||
/**
|
||||
set/gets threshold temperature (Jungfrau only)
|
||||
\param val value in millidegrees, -1 gets
|
||||
\param imod module number, -1 is all
|
||||
\returns threshold temperature in millidegrees
|
||||
*/
|
||||
int setThresholdTemperature(int val=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
enables/disables temperature control (Jungfrau only)
|
||||
\param val value, -1 gets
|
||||
\param imod module number, -1 is all
|
||||
\returns temperature control enable
|
||||
*/
|
||||
int setTemperatureControl(int val=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
Resets/ gets over-temperature event (Jungfrau only)
|
||||
\param val value, -1 gets
|
||||
\param imod module number, -1 is all
|
||||
\returns over-temperature event
|
||||
*/
|
||||
int setTemperatureEvent(int val=-1, int imod=-1);
|
||||
|
||||
/**
|
||||
configure channel
|
||||
\param reg channel register
|
||||
|
Reference in New Issue
Block a user