diff --git a/slsDetectorSoftware/jctbDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jctbDetectorServer/firmware_funcs.c index 2fd223172..528515fa6 100755 --- a/slsDetectorSoftware/jctbDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/jctbDetectorServer/firmware_funcs.c @@ -2514,7 +2514,7 @@ int prepareADC(){ writeADC(0x04,0xf);//all chans writeADC(0x04,0x3f);//all chans - writeADC(0x16,0x4);//output clock phase + // writeADC(0x16,0x4);//output clock phase // writeADC(0x18,0x4);// vref 1V // writeADC(0x14,0x0); writeADC(0x14,0x40);//lvds reduced range -- offset binary diff --git a/slsDetectorSoftware/jctbDetectorServer/jungfrauDetectorServerTest b/slsDetectorSoftware/jctbDetectorServer/jungfrauDetectorServerTest index 18fe7d5cb..d9e295c0d 100755 Binary files a/slsDetectorSoftware/jctbDetectorServer/jungfrauDetectorServerTest and b/slsDetectorSoftware/jctbDetectorServer/jungfrauDetectorServerTest differ diff --git a/slsDetectorSoftware/jctbDetectorServer/server_funcs.c b/slsDetectorSoftware/jctbDetectorServer/server_funcs.c index 0ce72143c..675dc2b4b 100755 --- a/slsDetectorSoftware/jctbDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/jctbDetectorServer/server_funcs.c @@ -226,6 +226,9 @@ int function_table() { flist[F_PROGRAM_FPGA]=&program_fpga; flist[F_POWER_CHIP]=&power_chip; flist[F_RESET_FPGA]=&reset_fpga; + flist[F_ACTIVATE]=&activate; + flist[F_PREPARE_ACQUISITION]=&prepare_acquisition; + flist[F_CLEANUP_ACQUISITION]=&cleanup_acquisition; return OK; } @@ -238,7 +241,7 @@ int M_nofunc(int file_des){ sendDataOnly(file_des,&ret,sizeof(ret)); sendDataOnly(file_des,mess,sizeof(mess)); - return GOODBYE; + return FAIL; } @@ -3212,6 +3215,7 @@ int set_ctb_pattern(int file_des){ n = receiveDataOnly(file_des,&word,sizeof(word)); ret=OK; + printf("pattern addr is %d %x\n",addr, word); switch (addr) { case -1: retval64=writePatternIOControl(word); @@ -3236,6 +3240,7 @@ int set_ctb_pattern(int file_des){ break; case 1: //pattern loop + // printf("loop\n"); n = receiveDataOnly(file_des,&level,sizeof(level)); n = receiveDataOnly(file_des,&start,sizeof(start)); n = receiveDataOnly(file_des,&stop,sizeof(stop)); @@ -3243,7 +3248,7 @@ int set_ctb_pattern(int file_des){ - printf("level %d start %x stop %x nl %d\n",level, start, stop, nl); + // printf("level %d start %x stop %x nl %d\n",level, start, stop, nl); /** Sets the pattern or loop limits in the CTB @param level -1 complete pattern, 0,1,2, loop level @param start start address if >=0 @@ -3266,6 +3271,7 @@ int set_ctb_pattern(int file_des){ case 2: //wait address + printf("wait\n"); n = receiveDataOnly(file_des,&level,sizeof(level)); n = receiveDataOnly(file_des,&addr,sizeof(addr)); @@ -3293,6 +3299,7 @@ int set_ctb_pattern(int file_des){ case 3: //wait time + printf("wait time\n"); n = receiveDataOnly(file_des,&level,sizeof(level)); n = receiveDataOnly(file_des,&t,sizeof(t)); @@ -3618,3 +3625,79 @@ int program_fpga(int file_des) { } +int activate(int file_des) { + + int retval=-1; + int ret=OK; + int arg=-1; + int n; + + sprintf(mess,"Can't activate detector\n"); + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK && differentClients==1) + ret=FORCE_UPDATE; + retval=arg; + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } else + n += sendDataOnly(file_des,&retval,sizeof(retval)); + + return ret; +} + +int prepare_acquisition(int file_des) { + + int retval=-1; + int ret=OK; + int arg=-1; + int n; + + sprintf(mess,"Can't activate detector\n"); + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK && differentClients==1) + ret=FORCE_UPDATE; + + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + return ret; +} + +int cleanup_acquisition(int file_des) { + + int retval=-1; + int ret=OK; + int arg=-1; + int n; + + sprintf(mess,"Can't activate detector\n"); + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK && differentClients==1) + ret=FORCE_UPDATE; + + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + return ret; +} diff --git a/slsDetectorSoftware/jctbDetectorServer/server_funcs.h b/slsDetectorSoftware/jctbDetectorServer/server_funcs.h index eac4fedfa..dfa0cd4fd 100755 --- a/slsDetectorSoftware/jctbDetectorServer/server_funcs.h +++ b/slsDetectorSoftware/jctbDetectorServer/server_funcs.h @@ -99,4 +99,7 @@ int power_chip(int); int reset_fpga(int); int program_fpga(int); +int activate(int); +int prepare_acquisition(int); +int cleanup_acquisition(int); #endif diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 09e8eb514..a28f023d4 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -1331,7 +1331,7 @@ int slsDetector::activate(int const enable){ controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); if (ret==FAIL) { controlSocket->ReceiveDataOnly(mess,sizeof(mess)); - std::cout<< "Detector returned error: " << mess << std::endl; + std::cout<< "Detector returned activate error: " << mess << std::endl; setErrorMask((getErrorMask())|(DETECTOR_ACTIVATE)); } else { controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); @@ -1724,6 +1724,7 @@ int slsDetector::getTotalNumberOfChannels() { } thisDetector->nChans=thisDetector->nChan[X]; thisDetector->dataBytes=thisDetector->nChans*thisDetector->nChips*thisDetector->nMods*2*thisDetector->timerValue[SAMPLES_JCTB]; + cout << "Total number of channels is "<< thisDetector->nChans*thisDetector->nChips*thisDetector->nMods << " data bytes is " << thisDetector->dataBytes << endl; } else { #ifdef VERBOSE cout << "det type is "<< thisDetector->myDetectorType << endl; @@ -7756,7 +7757,7 @@ int slsDetector::startReceiver(){ } //let detector prepare anyway even if receiver didnt work (for those not using the receiver) - if((thisDetector->myDetectorType != JUNGFRAU)) { + if((thisDetector->myDetectorType != JUNGFRAU) ) { int ret1 = detectorSendToReceiver(true); if (ret != FAIL) ret = ret1;