diff --git a/slsDetectorSoftware/gotthardDetectorServer/AD9257.h b/slsDetectorSoftware/gotthardDetectorServer/AD9257.h new file mode 120000 index 000000000..87b70e097 --- /dev/null +++ b/slsDetectorSoftware/gotthardDetectorServer/AD9257.h @@ -0,0 +1 @@ +../slsDetectorServer/AD9257.h \ No newline at end of file diff --git a/slsDetectorSoftware/gotthardDetectorServer/Makefile b/slsDetectorSoftware/gotthardDetectorServer/Makefile index 28284e7c5..a5f1667a6 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/Makefile +++ b/slsDetectorSoftware/gotthardDetectorServer/Makefile @@ -16,7 +16,7 @@ INSTMODE= 0777 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) diff --git a/slsDetectorSoftware/gotthardDetectorServer/commonServerFunctions.h b/slsDetectorSoftware/gotthardDetectorServer/commonServerFunctions.h new file mode 120000 index 000000000..33bdd8d53 --- /dev/null +++ b/slsDetectorSoftware/gotthardDetectorServer/commonServerFunctions.h @@ -0,0 +1 @@ +../slsDetectorServer/commonServerFunctions.h \ No newline at end of file diff --git a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c index 8366f8eb4..5c69d2463 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/firmware_funcs.c @@ -4,6 +4,8 @@ #include "mcb_funcs.h" #include "registers_g.h" +#include "AD9257.h" // include "commonServerFunctions.h" + #ifdef SHAREDMEMORY #include "sharedmemory.h" #endif @@ -1814,7 +1816,9 @@ int allocateRAM() { } -int prepareADC(){ + + +int configureADC(){ printf("Preparing ADC\n"); u_int32_t valw,codata,csmask; int i,j,cdx,ddx; @@ -1834,26 +1838,26 @@ int prepareADC(){ // start point valw=0xff; - bus_w(ADC_WRITE_REG,(valw)); + bus_w(ADC_SPI_REG,(valw)); //chip sel bar down valw=((0xffffffff&(~csmask))); - bus_w(ADC_WRITE_REG,valw); + bus_w(ADC_SPI_REG,valw); for (i=0;i<24;i++) { //cldwn valw=valw&(~(0x1<>(23-i))&0x1)<>(23-i))&0x1)<>(23-i))&0x1)<>(23-i))&0x1)<>(23-i))&0x1)<>(23-i))&0x1)<>(23-i))&0x1)<=0) { + if(detectors[id]){ + ret = detectors[id]->setDAC(val, idac, mV, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; - if (decodeNMod(imod, id, im)>=0) { - posmin=id; - posmax=id+1; - } + } - //return storage values - dacs_t* iret[posmax-posmin]; - for(int idet=posmin; idet(&slsDetector::setDAC, - detectors[idet],val, idac, mV, im, iret[idet])); - threadpool->add_task(task); - } - } - threadpool->startExecuting(); - threadpool->wait_for_tasks_to_complete(); - for(int idet=posmin; idetgetErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; + dacs_t* iret[posmax-posmin]; + + for(int idet=posmin; idet(&slsDetector::setDAC, + detectors[idet],val, idac, mV, imod, iret[idet])); + threadpool->add_task(task); } } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=posmin; idetgetErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { + if(detectors[id]){ + ret = detectors[id]->getADC(idac, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; - if (decodeNMod(imod, id, im)>=0) { - posmin=id; - posmax=id+1; - } - //return storage values - dacs_t* iret[posmax-posmin]; - for(int idet=posmin; idet(&slsDetector::getADC, - detectors[idet],idac, im, iret[idet])); - threadpool->add_task(task); - } - } - threadpool->startExecuting(); - threadpool->wait_for_tasks_to_complete(); - for(int idet=posmin; idetgetErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; + dacs_t* iret[posmax-posmin]; + + for(int idet=posmin; idet(&slsDetector::getADC, + detectors[idet],idac, imod, iret[idet])); + threadpool->add_task(task); } } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=posmin; idetgetErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { dmi=id; - dma=dma+1; + dma=id+1; } for (int idet=dmi; idet=0) { - if (detectors[id]) { - ret = detectors[id]->executeTrimming(mode, par1, par2, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if (detectors[id]) { + ret = detectors[id]->executeTrimming(mode, par1, par2, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors]; - for(int idet=0; idetnumberOfDetectors; idet++){ - if(detectors[idet]){ - iret[idet]= new int(-1); - Task* task = new Task(new func4_t (&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; idetnumberOfDetectors; 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<numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + iret[idet]= new int(-1); + Task* task = new Task(new func4_t (&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; idetnumberOfDetectors; 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<=0) { - if (detectors[id]) { - ret = detectors[id]->loadSettingsFile(fname, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if(detectors[id]){ + ret = detectors[id]->loadSettingsFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors]; - for(int idet=0; idetnumberOfDetectors; idet++){ - if(detectors[idet]){ - iret[idet]= new int(OK); - Task* task = new Task(new func2_t (&slsDetector::loadSettingsFile, - detectors[idet],fname,imod,iret[idet])); - threadpool->add_task(task); - } - } - threadpool->startExecuting(); - threadpool->wait_for_tasks_to_complete(); - for(int idet=0; idetnumberOfDetectors; 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<numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + iret[idet]= new int(OK); + Task* task = new Task(new func2_t (&slsDetector::loadSettingsFile, + detectors[idet],fname,imod,iret[idet])); + threadpool->add_task(task); + } + } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=0; idetnumberOfDetectors; 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<=0) { - if (detectors[id]) { - ret = detectors[id]->saveSettingsFile(fname, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { - if (detectors[idet]) { - ret=detectors[idet]->saveSettingsFile(fname, imod); - if(detectors[idet]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if (detectors[id]) { + ret = detectors[id]->saveSettingsFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { + if (detectors[idet]) { + ret=detectors[idet]->saveSettingsFile(fname, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { - if (detectors[id]) { - ret=detectors[id]->setAllTrimbits(val,im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if(detectors[id]){ + ret = detectors[id]->setAllTrimbits(val,im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors]; - for(int idet=0; idetnumberOfDetectors; idet++){ - if(detectors[idet]){ - iret[idet]= new int(-1); - Task* task = new Task(new func2_t (&slsDetector::setAllTrimbits, - detectors[idet],val,imod,iret[idet])); - threadpool->add_task(task); - } - } - threadpool->startExecuting(); - threadpool->wait_for_tasks_to_complete(); - for(int idet=0; idetnumberOfDetectors; 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<numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + iret[idet]= new int(-1); + Task* task = new Task(new func2_t (&slsDetector::setAllTrimbits, + detectors[idet],val,imod,iret[idet])); + threadpool->add_task(task); + } + } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=0; idetnumberOfDetectors; 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<=0) { - if (detectors[id]) { - ret = detectors[id]->loadCalibrationFile(fname, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if(detectors[id]){ + ret = detectors[id]->loadCalibrationFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors]; - for(int idet=0; idetnumberOfDetectors; idet++){ - if(detectors[idet]){ - iret[idet]= new int(OK); - Task* task = new Task(new func2_t (&slsDetector::loadCalibrationFile, - detectors[idet],fname,imod,iret[idet])); - threadpool->add_task(task); - } - } - threadpool->startExecuting(); - threadpool->wait_for_tasks_to_complete(); - for(int idet=0; idetnumberOfDetectors; 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<numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + iret[idet]= new int(OK); + Task* task = new Task(new func2_t (&slsDetector::loadCalibrationFile, + detectors[idet],fname,imod,iret[idet])); + threadpool->add_task(task); + } + } + threadpool->startExecuting(); + threadpool->wait_for_tasks_to_complete(); + for(int idet=0; idetnumberOfDetectors; 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<=0) { - if (detectors[id]) { - ret = detectors[id]->saveCalibrationFile(fname, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { - if (detectors[idet]) { - ret=detectors[idet]->saveCalibrationFile(fname, imod); - if(detectors[idet]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if (detectors[id]) { + ret = detectors[id]->saveCalibrationFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { + if (detectors[idet]) { + ret=detectors[idet]->saveCalibrationFile(fname, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<