mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-20 03:10:40 +02:00
changes to gotthard server to include write adc, and also changes to fix the dma=dma+1
This commit is contained in:
parent
a583f3d6e2
commit
931a5840e8
1
slsDetectorSoftware/gotthardDetectorServer/AD9257.h
Symbolic link
1
slsDetectorSoftware/gotthardDetectorServer/AD9257.h
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../slsDetectorServer/AD9257.h
|
@ -16,7 +16,7 @@ INSTMODE= 0777
|
|||||||
|
|
||||||
|
|
||||||
BINS = testlib_sharedlibc
|
BINS = testlib_sharedlibc
|
||||||
SRCS = server.c server_funcs.c communication_funcs.c firmware_funcs.c mcb_funcs.c trimming_funcs.c sharedmemory.c
|
SRCS = server.c firmware_funcs.c server_funcs.c communication_funcs.c mcb_funcs.c trimming_funcs.c sharedmemory.c
|
||||||
OBJS = $(SRCS:%.c=%.o)
|
OBJS = $(SRCS:%.c=%.o)
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
../slsDetectorServer/commonServerFunctions.h
|
@ -4,6 +4,8 @@
|
|||||||
#include "mcb_funcs.h"
|
#include "mcb_funcs.h"
|
||||||
#include "registers_g.h"
|
#include "registers_g.h"
|
||||||
|
|
||||||
|
#include "AD9257.h" // include "commonServerFunctions.h"
|
||||||
|
|
||||||
#ifdef SHAREDMEMORY
|
#ifdef SHAREDMEMORY
|
||||||
#include "sharedmemory.h"
|
#include "sharedmemory.h"
|
||||||
#endif
|
#endif
|
||||||
@ -1814,7 +1816,9 @@ int allocateRAM() {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
int prepareADC(){
|
|
||||||
|
|
||||||
|
int configureADC(){
|
||||||
printf("Preparing ADC\n");
|
printf("Preparing ADC\n");
|
||||||
u_int32_t valw,codata,csmask;
|
u_int32_t valw,codata,csmask;
|
||||||
int i,j,cdx,ddx;
|
int i,j,cdx,ddx;
|
||||||
@ -1834,26 +1838,26 @@ int prepareADC(){
|
|||||||
|
|
||||||
// start point
|
// start point
|
||||||
valw=0xff;
|
valw=0xff;
|
||||||
bus_w(ADC_WRITE_REG,(valw));
|
bus_w(ADC_SPI_REG,(valw));
|
||||||
|
|
||||||
//chip sel bar down
|
//chip sel bar down
|
||||||
valw=((0xffffffff&(~csmask)));
|
valw=((0xffffffff&(~csmask)));
|
||||||
bus_w(ADC_WRITE_REG,valw);
|
bus_w(ADC_SPI_REG,valw);
|
||||||
|
|
||||||
for (i=0;i<24;i++) {
|
for (i=0;i<24;i++) {
|
||||||
//cldwn
|
//cldwn
|
||||||
valw=valw&(~(0x1<<cdx));
|
valw=valw&(~(0x1<<cdx));
|
||||||
bus_w(ADC_WRITE_REG,valw);
|
bus_w(ADC_SPI_REG,valw);
|
||||||
usleep(0);
|
usleep(0);
|
||||||
|
|
||||||
//write data (i)
|
//write data (i)
|
||||||
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx);
|
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx);
|
||||||
bus_w(ADC_WRITE_REG,valw);
|
bus_w(ADC_SPI_REG,valw);
|
||||||
usleep(0);
|
usleep(0);
|
||||||
|
|
||||||
//clkup
|
//clkup
|
||||||
valw=valw+(0x1<<cdx);
|
valw=valw+(0x1<<cdx);
|
||||||
bus_w(ADC_WRITE_REG,valw);
|
bus_w(ADC_SPI_REG,valw);
|
||||||
usleep(0);
|
usleep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1861,7 +1865,7 @@ int prepareADC(){
|
|||||||
valw=valw&(~(0x1<<cdx));
|
valw=valw&(~(0x1<<cdx));
|
||||||
usleep(0);
|
usleep(0);
|
||||||
valw=0xff;
|
valw=0xff;
|
||||||
bus_w(ADC_WRITE_REG,(valw));
|
bus_w(ADC_SPI_REG,(valw));
|
||||||
|
|
||||||
//usleep in between
|
//usleep in between
|
||||||
usleep(50000);
|
usleep(50000);
|
||||||
@ -1872,19 +1876,19 @@ int prepareADC(){
|
|||||||
/*
|
/*
|
||||||
codata=0;
|
codata=0;
|
||||||
codata=(0x14<<8)+(0x0); //command and value;
|
codata=(0x14<<8)+(0x0); //command and value;
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // start point
|
||||||
valw=((0xffffffff&(~csmask)));bus_w(ADC_WRITE_REG,valw); //chip sel bar down
|
valw=((0xffffffff&(~csmask)));bus_w(ADC_SPI_REG,valw); //chip sel bar down
|
||||||
for (i=0;i<24;i++) {
|
for (i=0;i<24;i++) {
|
||||||
valw=valw&(~(0x1<<cdx));bus_w(ADC_WRITE_REG,valw);usleep(0); //cldwn
|
valw=valw&(~(0x1<<cdx));bus_w(ADC_SPI_REG,valw);usleep(0); //cldwn
|
||||||
|
|
||||||
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_WRITE_REG,valw); usleep(0); //write data (i)
|
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_SPI_REG,valw); usleep(0); //write data (i)
|
||||||
|
|
||||||
valw=valw+(0x1<<cdx);bus_w(ADC_WRITE_REG,valw); usleep(0); //clkup
|
valw=valw+(0x1<<cdx);bus_w(ADC_SPI_REG,valw); usleep(0); //clkup
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
valw=valw&(~(0x1<<cdx));usleep(0);
|
valw=valw&(~(0x1<<cdx));usleep(0);
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // stop point =start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // stop point =start point
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1892,36 +1896,36 @@ int prepareADC(){
|
|||||||
|
|
||||||
codata=0;
|
codata=0;
|
||||||
codata=(0x08<<8)+(0x3); //command and value;Power modes(global) reset
|
codata=(0x08<<8)+(0x3); //command and value;Power modes(global) reset
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // start point
|
||||||
valw=((0xffffffff&(~csmask)));bus_w(ADC_WRITE_REG,valw); //chip sel bar down
|
valw=((0xffffffff&(~csmask)));bus_w(ADC_SPI_REG,valw); //chip sel bar down
|
||||||
for (i=0;i<24;i++) {
|
for (i=0;i<24;i++) {
|
||||||
valw=valw&(~(0x1<<cdx));bus_w(ADC_WRITE_REG,valw);usleep(0); //cldwn
|
valw=valw&(~(0x1<<cdx));bus_w(ADC_SPI_REG,valw);usleep(0); //cldwn
|
||||||
|
|
||||||
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_WRITE_REG,valw); usleep(0); //write data (i)
|
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_SPI_REG,valw); usleep(0); //write data (i)
|
||||||
valw=valw+(0x1<<cdx);bus_w(ADC_WRITE_REG,valw); usleep(0); //clkup
|
valw=valw+(0x1<<cdx);bus_w(ADC_SPI_REG,valw); usleep(0); //clkup
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
valw=valw&(~(0x1<<cdx));usleep(0);
|
valw=valw&(~(0x1<<cdx));usleep(0);
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // stop point =start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // stop point =start point
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
usleep(50000);
|
usleep(50000);
|
||||||
codata=0;
|
codata=0;
|
||||||
codata=(0x08<<8)+(0x0); //command and value;Power modes(global) reset
|
codata=(0x08<<8)+(0x0); //command and value;Power modes(global) reset
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // start point
|
||||||
valw=((0xffffffff&(~csmask)));bus_w(ADC_WRITE_REG,valw); //chip sel bar down
|
valw=((0xffffffff&(~csmask)));bus_w(ADC_SPI_REG,valw); //chip sel bar down
|
||||||
for (i=0;i<24;i++) {
|
for (i=0;i<24;i++) {
|
||||||
valw=valw&(~(0x1<<cdx));bus_w(ADC_WRITE_REG,valw);usleep(0); //cldwn
|
valw=valw&(~(0x1<<cdx));bus_w(ADC_SPI_REG,valw);usleep(0); //cldwn
|
||||||
|
|
||||||
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_WRITE_REG,valw); usleep(0); //write data (i)
|
valw=(valw&(~(0x1<<ddx)))+(((codata>>(23-i))&0x1)<<ddx); bus_w(ADC_SPI_REG,valw); usleep(0); //write data (i)
|
||||||
valw=valw+(0x1<<cdx);bus_w(ADC_WRITE_REG,valw); usleep(0); //clkup
|
valw=valw+(0x1<<cdx);bus_w(ADC_SPI_REG,valw); usleep(0); //clkup
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
valw=valw&(~(0x1<<cdx));usleep(0);
|
valw=valw&(~(0x1<<cdx));usleep(0);
|
||||||
valw=0xff; bus_w(ADC_WRITE_REG,(valw)); // stop point =start point
|
valw=0xff; bus_w(ADC_SPI_REG,(valw)); // stop point =start point
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,6 +139,7 @@ int allocateRAM();
|
|||||||
int clearRAM();
|
int clearRAM();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int setMaster(int f);
|
int setMaster(int f);
|
||||||
int setSynchronization(int s);
|
int setSynchronization(int s);
|
||||||
|
|
||||||
|
Binary file not shown.
BIN
slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.1
Executable file
BIN
slsDetectorSoftware/gotthardDetectorServer/gotthardDetectorServerv3.0.0.1
Executable file
Binary file not shown.
@ -33,7 +33,16 @@
|
|||||||
//#define TIME_FROM_START_REG 0x16<<11
|
//#define TIME_FROM_START_REG 0x16<<11
|
||||||
#define MCB_CNTRL_REG_OFF 0x17<<11// control the dacs
|
#define MCB_CNTRL_REG_OFF 0x17<<11// control the dacs
|
||||||
//ADC
|
//ADC
|
||||||
#define ADC_WRITE_REG 0x18<<11
|
#define ADC_SPI_REG 0x18<<11
|
||||||
|
|
||||||
|
#define ADC_SERIAL_CLK_OUT_OFST (0)
|
||||||
|
#define ADC_SERIAL_CLK_OUT_MSK (0x00000001 << ADC_SERIAL_CLK_OUT_OFST)
|
||||||
|
#define ADC_SERIAL_DATA_OUT_OFST (1)
|
||||||
|
#define ADC_SERIAL_DATA_OUT_MSK (0x00000001 << ADC_SERIAL_DATA_OUT_OFST)
|
||||||
|
#define ADC_SERIAL_CS_OUT_OFST (2)
|
||||||
|
#define ADC_SERIAL_CS_OUT_MSK (0x0000000F << ADC_SERIAL_CS_OUT_OFST)
|
||||||
|
|
||||||
|
|
||||||
#define ADC_SYNC_REG 0x19<<11
|
#define ADC_SYNC_REG 0x19<<11
|
||||||
//#define MUTIME_REG 0x1a<<11
|
//#define MUTIME_REG 0x1a<<11
|
||||||
//temperature
|
//temperature
|
||||||
|
@ -84,7 +84,7 @@ int init_detector( int b) {
|
|||||||
|
|
||||||
//gotthard specific
|
//gotthard specific
|
||||||
setPhaseShiftOnce();
|
setPhaseShiftOnce();
|
||||||
prepareADC();
|
configureADC();
|
||||||
setADC(-1); //already does setdaqreg and clean fifo
|
setADC(-1); //already does setdaqreg and clean fifo
|
||||||
setSettings(GET_SETTINGS,-1);
|
setSettings(GET_SETTINGS,-1);
|
||||||
|
|
||||||
@ -192,6 +192,7 @@ int function_table() {
|
|||||||
flist[F_PREPARE_ACQUISITION]=&start_receiver;
|
flist[F_PREPARE_ACQUISITION]=&start_receiver;
|
||||||
flist[F_CLEANUP_ACQUISITION]=&stop_receiver;
|
flist[F_CLEANUP_ACQUISITION]=&stop_receiver;
|
||||||
flist[F_CALIBRATE_PEDESTAL]=&calibrate_pedestal;
|
flist[F_CALIBRATE_PEDESTAL]=&calibrate_pedestal;
|
||||||
|
flist[F_WRITE_ADC_REG]=&write_adc_register;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3055,3 +3056,54 @@ int calibrate_pedestal(int file_des){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int write_adc_register(int file_des) {
|
||||||
|
int ret=OK;
|
||||||
|
int n=0;
|
||||||
|
int retval=-1;
|
||||||
|
sprintf(mess,"write to adc register failed\n");
|
||||||
|
|
||||||
|
// receive arguments
|
||||||
|
int arg[2]={-1,-1};
|
||||||
|
n = receiveData(file_des,arg,sizeof(arg),INT32);
|
||||||
|
if (n < 0) {
|
||||||
|
sprintf(mess,"Error reading from socket\n");
|
||||||
|
ret=FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int addr=arg[0];
|
||||||
|
int val=arg[1];
|
||||||
|
|
||||||
|
// execute action
|
||||||
|
if (ret == OK) {
|
||||||
|
if (differentClients && lockStatus) {
|
||||||
|
ret = FAIL;
|
||||||
|
sprintf(mess,"Detector locked by %s\n",lastClientIP);
|
||||||
|
cprintf(RED, "Warning: %s", mess);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
#ifdef VERBOSE
|
||||||
|
printf("writing to register 0x%x data 0x%x\n", addr, val);
|
||||||
|
#endif
|
||||||
|
setAdc(addr,val);
|
||||||
|
#ifdef VERBOSE
|
||||||
|
printf("Data set to 0x%x\n", retval);
|
||||||
|
#endif
|
||||||
|
if (ret==OK && differentClients)
|
||||||
|
ret=FORCE_UPDATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// send ok / fail
|
||||||
|
n = sendDataOnly(file_des,&ret,sizeof(ret));
|
||||||
|
// send return argument
|
||||||
|
if (ret==FAIL) {
|
||||||
|
n = sendDataOnly(file_des,mess,sizeof(mess));
|
||||||
|
} else
|
||||||
|
n = sendDataOnly(file_des,&retval,sizeof(retval));
|
||||||
|
|
||||||
|
// return ok / fail
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ int set_dynamic_range(int);
|
|||||||
int set_roi(int);
|
int set_roi(int);
|
||||||
int get_roi(int);
|
int get_roi(int);
|
||||||
int set_speed(int);
|
int set_speed(int);
|
||||||
void prepareADC(void);
|
void configureADC();
|
||||||
int set_readout_flags(int);
|
int set_readout_flags(int);
|
||||||
int execute_trimming(int);
|
int execute_trimming(int);
|
||||||
int lock_server(int);
|
int lock_server(int);
|
||||||
@ -94,4 +94,6 @@ int calibrate_pedestal(int);
|
|||||||
|
|
||||||
int set_roi(int);
|
int set_roi(int);
|
||||||
|
|
||||||
|
int write_adc_register(int);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2971,84 +2971,109 @@ int multiSlsDetector::getAngularConversion(int &direction, angleConversionCons
|
|||||||
|
|
||||||
dacs_t multiSlsDetector::setDAC(dacs_t val, dacIndex idac, int mV, int imod) {
|
dacs_t multiSlsDetector::setDAC(dacs_t val, dacIndex idac, int mV, int imod) {
|
||||||
dacs_t ret = -100;
|
dacs_t ret = -100;
|
||||||
|
|
||||||
|
// single
|
||||||
|
{
|
||||||
|
int id=-1, im=-1;
|
||||||
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
|
if(detectors[id]){
|
||||||
|
ret = detectors[id]->setDAC(val, idac, mV, im);
|
||||||
|
if(detectors[id]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// multi
|
||||||
if(!threadpool){
|
if(!threadpool){
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
return -1;
|
return -1;
|
||||||
}else{
|
}
|
||||||
int id=-1, im=-1;
|
|
||||||
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
|
||||||
posmin=id;
|
|
||||||
posmax=id+1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//return storage values
|
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
||||||
dacs_t* iret[posmax-posmin];
|
dacs_t* iret[posmax-posmin];
|
||||||
for(int idet=posmin; idet<posmax; ++idet){
|
|
||||||
if(detectors[idet]){
|
for(int idet=posmin; idet<posmax; ++idet){
|
||||||
iret[idet]= new dacs_t(-1);
|
if(detectors[idet]){
|
||||||
Task* task = new Task(new func4_t <dacs_t,slsDetector,dacs_t,dacIndex,int,int,dacs_t>(&slsDetector::setDAC,
|
iret[idet]= new dacs_t(-1);
|
||||||
detectors[idet],val, idac, mV, im, iret[idet]));
|
Task* task = new Task(new func4_t <dacs_t,slsDetector,dacs_t,dacIndex,int,int,dacs_t>(&slsDetector::setDAC,
|
||||||
threadpool->add_task(task);
|
detectors[idet],val, idac, mV, 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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
dacs_t multiSlsDetector::getADC(dacIndex idac, int imod) {
|
dacs_t multiSlsDetector::getADC(dacIndex idac, int imod) {
|
||||||
dacs_t ret = -100;
|
dacs_t ret = -100;
|
||||||
|
|
||||||
|
// single
|
||||||
|
{
|
||||||
|
int id=-1, im=-1;
|
||||||
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
|
if(detectors[id]){
|
||||||
|
ret = detectors[id]->getADC(idac, im);
|
||||||
|
if(detectors[id]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// multi
|
||||||
if(!threadpool){
|
if(!threadpool){
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
return -1;
|
return -1;
|
||||||
}else{
|
}
|
||||||
int id=-1, im=-1;
|
|
||||||
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
int posmin=0, posmax=thisMultiDetector->numberOfDetectors;
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
dacs_t* iret[posmax-posmin];
|
||||||
posmin=id;
|
|
||||||
posmax=id+1;
|
for(int idet=posmin; idet<posmax; ++idet){
|
||||||
}
|
if(detectors[idet]){
|
||||||
//return storage values
|
iret[idet]= new dacs_t(-1);
|
||||||
dacs_t* iret[posmax-posmin];
|
Task* task = new Task(new func2_t <dacs_t,slsDetector,dacIndex,int,dacs_t>(&slsDetector::getADC,
|
||||||
for(int idet=posmin; idet<posmax; ++idet){
|
detectors[idet],idac, imod, iret[idet]));
|
||||||
if(detectors[idet]){
|
threadpool->add_task(task);
|
||||||
iret[idet]= new dacs_t(-1);
|
|
||||||
Task* task = new Task(new func2_t <dacs_t,slsDetector,dacIndex,int,dacs_t>(&slsDetector::getADC,
|
|
||||||
detectors[idet],idac, im, 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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3059,7 +3084,7 @@ int multiSlsDetector::setChannel(int64_t reg, int ichan, int ichip, int imod) {
|
|||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
dmi=id;
|
dmi=id;
|
||||||
dma=dma+1;
|
dma=id+1;
|
||||||
}
|
}
|
||||||
for (int idet=dmi; idet<dma; idet++) {
|
for (int idet=dmi; idet<dma; idet++) {
|
||||||
if (detectors[idet]) {
|
if (detectors[idet]) {
|
||||||
@ -4042,51 +4067,55 @@ int multiSlsDetector::digitalTest(digitalTestMode mode, int imod) {
|
|||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::executeTrimming(trimMode mode, int par1, int par2, int imod) {
|
int multiSlsDetector::executeTrimming(trimMode mode, int par1, int par2, int imod) {
|
||||||
int id, im, ret=100;
|
int ret=100;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
// single
|
||||||
if (detectors[id]) {
|
{
|
||||||
ret = detectors[id]->executeTrimming(mode, par1, par2, im);
|
int id=-1, im=-1;
|
||||||
if(detectors[id]->getErrorMask())
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
if (detectors[id]) {
|
||||||
return ret;
|
ret = detectors[id]->executeTrimming(mode, par1, par2, im);
|
||||||
}
|
if(detectors[id]->getErrorMask())
|
||||||
} else if (imod<0) {
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
if(!threadpool){
|
}
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
|
||||||
return -1;
|
return -1;
|
||||||
}else{
|
|
||||||
//return storage values
|
|
||||||
int* iret[thisMultiDetector->numberOfDetectors];
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
|
||||||
if(detectors[idet]){
|
|
||||||
iret[idet]= new int(-1);
|
|
||||||
Task* task = new Task(new func4_t <int,slsDetector,trimMode,int,int,int,int>(&slsDetector::executeTrimming,
|
|
||||||
detectors[idet],mode,par1,par2,imod,iret[idet]));
|
|
||||||
threadpool->add_task(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
threadpool->startExecuting();
|
|
||||||
threadpool->wait_for_tasks_to_complete();
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
|
||||||
|
// multi
|
||||||
|
if(!threadpool){
|
||||||
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int* iret[thisMultiDetector->numberOfDetectors];
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
|
if(detectors[idet]){
|
||||||
|
iret[idet]= new int(-1);
|
||||||
|
Task* task = new Task(new func4_t <int,slsDetector,trimMode,int,int,int,int>(&slsDetector::executeTrimming,
|
||||||
|
detectors[idet],mode,par1,par2,imod,iret[idet]));
|
||||||
|
threadpool->add_task(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
threadpool->startExecuting();
|
||||||
|
threadpool->wait_for_tasks_to_complete();
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4142,121 +4171,124 @@ int multiSlsDetector::powerChip(int ival){
|
|||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
||||||
int id, im, ret=OK;
|
int ret=OK;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
// single
|
||||||
if (detectors[id]) {
|
{
|
||||||
ret = detectors[id]->loadSettingsFile(fname, im);
|
int id=-1, im=-1;
|
||||||
if(detectors[id]->getErrorMask())
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
if(detectors[id]){
|
||||||
return ret;
|
ret = detectors[id]->loadSettingsFile(fname, im);
|
||||||
}
|
if(detectors[id]->getErrorMask())
|
||||||
} else if (imod<0) {
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(!threadpool){
|
// multi
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
if(!threadpool){
|
||||||
return -1;
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
}else{
|
return -1;
|
||||||
//return storage values
|
}
|
||||||
int* iret[thisMultiDetector->numberOfDetectors];
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
|
||||||
if(detectors[idet]){
|
|
||||||
iret[idet]= new int(OK);
|
|
||||||
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadSettingsFile,
|
|
||||||
detectors[idet],fname,imod,iret[idet]));
|
|
||||||
threadpool->add_task(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
threadpool->startExecuting();
|
|
||||||
threadpool->wait_for_tasks_to_complete();
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
|
||||||
if(detectors[idet]){
|
|
||||||
if(iret[idet] != NULL){
|
|
||||||
if(*iret[idet] != OK)
|
|
||||||
ret = FAIL;
|
|
||||||
delete iret[idet];
|
|
||||||
}else ret = FAIL;
|
|
||||||
if(detectors[idet]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
int* iret[thisMultiDetector->numberOfDetectors];
|
||||||
}
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
return -1;
|
if(detectors[idet]){
|
||||||
|
iret[idet]= new int(OK);
|
||||||
|
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadSettingsFile,
|
||||||
|
detectors[idet],fname,imod,iret[idet]));
|
||||||
|
threadpool->add_task(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
threadpool->startExecuting();
|
||||||
|
threadpool->wait_for_tasks_to_complete();
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
|
if(detectors[idet]){
|
||||||
|
if(iret[idet] != NULL){
|
||||||
|
if(*iret[idet] != OK)
|
||||||
|
ret = FAIL;
|
||||||
|
delete iret[idet];
|
||||||
|
}else ret = FAIL;
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::saveSettingsFile(string fname, int imod) {
|
int multiSlsDetector::saveSettingsFile(string fname, int imod) {
|
||||||
int id, im, ret;
|
int id=-1, im=-1, ret;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
|
||||||
if (detectors[id]) {
|
|
||||||
ret = detectors[id]->saveSettingsFile(fname, im);
|
|
||||||
if(detectors[id]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
} else if (imod<0) {
|
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
|
||||||
ret=detectors[idet]->saveSettingsFile(fname, imod);
|
|
||||||
if(detectors[idet]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
|
if (detectors[id]) {
|
||||||
|
ret = detectors[id]->saveSettingsFile(fname, im);
|
||||||
|
if(detectors[id]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret=detectors[idet]->saveSettingsFile(fname, imod);
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::setAllTrimbits(int val, int imod){
|
int multiSlsDetector::setAllTrimbits(int val, int imod){
|
||||||
|
|
||||||
int ret=-100,id, im;
|
int ret=-100;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
// single
|
||||||
if (detectors[id]) {
|
{
|
||||||
ret=detectors[id]->setAllTrimbits(val,im);
|
int id=-1, im=-1;
|
||||||
if(detectors[id]->getErrorMask())
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
if(detectors[id]){
|
||||||
|
ret = detectors[id]->setAllTrimbits(val,im);
|
||||||
|
if(detectors[id]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (imod<0) {
|
|
||||||
|
|
||||||
if(!threadpool){
|
// multi
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
if(!threadpool){
|
||||||
return -1;
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
}else{
|
return -1;
|
||||||
//return storage values
|
}
|
||||||
int* iret[thisMultiDetector->numberOfDetectors];
|
int* iret[thisMultiDetector->numberOfDetectors];
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
if(detectors[idet]){
|
if(detectors[idet]){
|
||||||
iret[idet]= new int(-1);
|
iret[idet]= new int(-1);
|
||||||
Task* task = new Task(new func2_t <int,slsDetector,int,int,int>(&slsDetector::setAllTrimbits,
|
Task* task = new Task(new func2_t <int,slsDetector,int,int,int>(&slsDetector::setAllTrimbits,
|
||||||
detectors[idet],val,imod,iret[idet]));
|
detectors[idet],val,imod,iret[idet]));
|
||||||
threadpool->add_task(task);
|
threadpool->add_task(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
threadpool->startExecuting();
|
threadpool->startExecuting();
|
||||||
threadpool->wait_for_tasks_to_complete();
|
threadpool->wait_for_tasks_to_complete();
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
if(detectors[idet]){
|
if(detectors[idet]){
|
||||||
if(iret[idet] != NULL){
|
if(iret[idet] != NULL){
|
||||||
if (ret==-100)
|
if (ret==-100)
|
||||||
ret=*iret[idet];
|
ret=*iret[idet];
|
||||||
else if (ret!=*iret[idet])
|
else if (ret!=*iret[idet])
|
||||||
ret=-1;
|
ret=-1;
|
||||||
delete iret[idet];
|
delete iret[idet];
|
||||||
}else ret=-1;
|
}else ret=-1;
|
||||||
if(detectors[idet]->getErrorMask())
|
if(detectors[idet]->getErrorMask())
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@ -4267,73 +4299,75 @@ int multiSlsDetector::setAllTrimbits(int val, int imod){
|
|||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::loadCalibrationFile(string fname, int imod) {
|
int multiSlsDetector::loadCalibrationFile(string fname, int imod) {
|
||||||
int id, im, ret = OK;
|
int ret = OK;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
// single
|
||||||
if (detectors[id]) {
|
{
|
||||||
ret = detectors[id]->loadCalibrationFile(fname, im);
|
int id=-1, im=-1;
|
||||||
if(detectors[id]->getErrorMask())
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
if(detectors[id]){
|
||||||
return ret;
|
ret = detectors[id]->loadCalibrationFile(fname, im);
|
||||||
}
|
if(detectors[id]->getErrorMask())
|
||||||
} else if (imod<0) {
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
if(!threadpool){
|
}
|
||||||
cout << "Error in creating threadpool. Exiting" << endl;
|
|
||||||
return -1;
|
return -1;
|
||||||
}else{
|
|
||||||
//return storage values
|
|
||||||
int* iret[thisMultiDetector->numberOfDetectors];
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
|
||||||
if(detectors[idet]){
|
|
||||||
iret[idet]= new int(OK);
|
|
||||||
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadCalibrationFile,
|
|
||||||
detectors[idet],fname,imod,iret[idet]));
|
|
||||||
threadpool->add_task(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
threadpool->startExecuting();
|
|
||||||
threadpool->wait_for_tasks_to_complete();
|
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
|
||||||
if(detectors[idet]){
|
|
||||||
if(iret[idet] != NULL){
|
|
||||||
if(*iret[idet] != OK)
|
|
||||||
ret = FAIL;
|
|
||||||
delete iret[idet];
|
|
||||||
}else ret = FAIL;
|
|
||||||
if(detectors[idet]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
return -1;
|
|
||||||
|
// multi
|
||||||
|
if(!threadpool){
|
||||||
|
cout << "Error in creating threadpool. Exiting" << endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int* iret[thisMultiDetector->numberOfDetectors];
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
|
if(detectors[idet]){
|
||||||
|
iret[idet]= new int(OK);
|
||||||
|
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadCalibrationFile,
|
||||||
|
detectors[idet],fname,imod,iret[idet]));
|
||||||
|
threadpool->add_task(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
threadpool->startExecuting();
|
||||||
|
threadpool->wait_for_tasks_to_complete();
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
|
if(detectors[idet]){
|
||||||
|
if(iret[idet] != NULL){
|
||||||
|
if(*iret[idet] != OK)
|
||||||
|
ret = FAIL;
|
||||||
|
delete iret[idet];
|
||||||
|
}else ret = FAIL;
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::saveCalibrationFile(string fname, int imod) {
|
int multiSlsDetector::saveCalibrationFile(string fname, int imod) {
|
||||||
int id, im, ret;
|
int id=-1, im=-1, ret;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
|
||||||
if (detectors[id]) {
|
|
||||||
ret = detectors[id]->saveCalibrationFile(fname, im);
|
|
||||||
if(detectors[id]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<id));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
} else if (imod<0) {
|
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
|
||||||
ret=detectors[idet]->saveCalibrationFile(fname, imod);
|
|
||||||
if(detectors[idet]->getErrorMask())
|
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
|
if (detectors[id]) {
|
||||||
|
ret = detectors[id]->saveCalibrationFile(fname, im);
|
||||||
|
if(detectors[id]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<id));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret=detectors[idet]->saveCalibrationFile(fname, imod);
|
||||||
|
if(detectors[idet]->getErrorMask())
|
||||||
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -522,10 +522,10 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
int powerChip(int ival= -1);
|
int powerChip(int ival= -1);
|
||||||
|
|
||||||
/** loads the modules settings/trimbits reading from a file - file name extension is automatically generated! */
|
/** loads the modules settings/trimbits reading from a file - file name extension is automatically generated! */
|
||||||
int loadSettingsFile(string fname, int nmod=0);
|
int loadSettingsFile(string fname, int nmod=-1);
|
||||||
|
|
||||||
/** gets the modules settings/trimbits and writes them to file - file name extension is automatically generated! */
|
/** gets the modules settings/trimbits and writes them to file - file name extension is automatically generated! */
|
||||||
int saveSettingsFile(string fname, int nmod=0);
|
int saveSettingsFile(string fname, int nmod=-1);
|
||||||
|
|
||||||
|
|
||||||
/** sets all the trimbits to a particular value
|
/** sets all the trimbits to a particular value
|
||||||
@ -537,10 +537,10 @@ class multiSlsDetector : public slsDetectorUtils {
|
|||||||
|
|
||||||
|
|
||||||
/** loads the modules calibration data reading from a file - file name extension is automatically generated! */
|
/** loads the modules calibration data reading from a file - file name extension is automatically generated! */
|
||||||
int loadCalibrationFile(string fname, int nmod=0);
|
int loadCalibrationFile(string fname, int nmod=-1);
|
||||||
|
|
||||||
/** gets the modules calibration data and writes them to file - file name extension is automatically generated! */
|
/** gets the modules calibration data and writes them to file - file name extension is automatically generated! */
|
||||||
int saveCalibrationFile(string fname, int nmod=0);
|
int saveCalibrationFile(string fname, int nmod=-1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -555,7 +555,7 @@ class slsDetectorUtils : public slsDetectorActions, public postProcessing {
|
|||||||
\param imod module number
|
\param imod module number
|
||||||
\returns current ADC value
|
\returns current ADC value
|
||||||
*/
|
*/
|
||||||
virtual dacs_t getADC(dacIndex index, int imod=0)=0;
|
virtual dacs_t getADC(dacIndex index, int imod=-1)=0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
get the maximum size of the detector
|
get the maximum size of the detector
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
#ifndef COMMON_SERVER_FUNCTIONS_H
|
#ifndef COMMON_SERVER_FUNCTIONS_H
|
||||||
#define COMMON_SERVER_FUNCTIONS_H
|
#define COMMON_SERVER_FUNCTIONS_H
|
||||||
|
|
||||||
|
#ifndef GOTTHARDD //gotthard already had bus_w etc defined in its firmware_funcs.c (not yet made with common files)
|
||||||
#include "blackfin.h"
|
#include "blackfin.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* global variables */
|
/* global variables */
|
||||||
void serializeToSPI(u_int32_t addr, u_int32_t val, u_int16_t csmask, int numbitstosend, u_int16_t clkmask, u_int16_t digoutmask, int digofset) {
|
void serializeToSPI(u_int32_t addr, u_int32_t val, u_int16_t csmask, int numbitstosend, u_int16_t clkmask, u_int16_t digoutmask, int digofset) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user