From fa6ab0b32465a01a157ee739217478edfc3e81a1 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Tue, 16 Sep 2014 16:31:51 +0200 Subject: [PATCH 01/12] usleep added for 32 bit mode and debug statements for eiger server --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 22 +++++++++++++++--- .../bin/eigerDetectorServer | Bin 233173 -> 233173 bytes .../slsDetectorFunctionList.c | 2 ++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 9558007a6..e412fec91 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -506,19 +506,35 @@ int Beb_RequestNImages(unsigned int beb_number, unsigned int left_right, int ten unsigned int npackets = ten_gig ? Beb_bit_mode*4 : Beb_bit_mode*16; int in_two_requests = (!ten_gig&&Beb_bit_mode==32); if(in_two_requests) npackets/=2; - + // printf("npackets:%d\n",npackets); //usleep needed after acquisition start, else you miss the single images - usleep(0); + usleep(1000); //printf("beb no:%d left_right:%d ten_gig:%d dst_number:%d #images:%d header_size:%d test_just_send_out_packets_no_wait:%d\n",beb_number,left_right,ten_gig,dst_number,nimages, header_size,test_just_send_out_packets_no_wait); //printf("here: "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 delta 17964 zcmcJ0e_U0?*7sg>ICxOdje>%J92BphD4>`}1;NDJCMqfx7Ur=uDKW9MONE!im6Qq- z+u%^4VPe`1i$XhCnp9d?R9JMQE*6&Fu<%A@g@vByJA3aVs6F?6{(1R)#y#uDtXZ>W ztu<=~{B(QYPq+6i-ek^|n0M~hqSanjndz;@gQl6tUZZ$?>q$?lF@45SYR$4fD$z2v z(|ZFgtI72lK$NQ%_nkq-HO+lT5ml%j@;KUGW0Ql38q_r3F|6sdTHre^Z-1^A^ULjH z%E=!kN%4}*Vx&)XoR{gjISvo2hO>VfpqSW2MUq+#I12DNz>NkR2lyo5Is;Ay`~l!< z15N>a7;uFFrvculNO@ARfye-2I~W`WybSPWz}W_z1$aGRy8-6_UIjSSfC~UG2ApKT zMSy1mjxpd8zzKk@23!t!w9-eCWCKxI)7bxJUrMQo2w&kr*=ljbWGYr0@b7-r5;>Wg zYLX-W;=w*UuV#%-qyV*Q^a%f8g?$@nlO%%Rb|EL$+N`K;qnA*os*L$7<*0RI76hJ9 zq_<}3vosed?92xSXQdhyoe1e!(Ie=PS`zJ|qctTlkD6I?n`*u84__(QWXe(4$yGZ4 z=Q6N*|+kPT+_-o!wPQi~F! zDOo*~xSG<{sH9N*o02plEZY$(1t-{LlWk>yZGHHxoLsZexoNYm^B37QB}s$KmsJW- zFHRqWxhhJXhVb8S@Fg$Rd&W0#(vBIt2W

3j7rHxtY7EPK~L^sM&iX9J>W<$xo!r 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 + #include "slsDetectorFunctionList.h" #include "gitInfoEiger.h" /*#include "EigerHighLevelFunctions.c" @@ -609,6 +610,7 @@ int setDynamicRange(int dr){ for(i=0;i<32;i++) dst_requested[i] = 0; //clear dst requested if(Beb_SetUpTransferParameters(dr)) eiger_dynamicrange = dr; + else printf("ERROR:Could not set bit mode in the back end\n"); } } //make sure back end and front end have the same bit mode From d8c720174958a25022bff5bbd5142a52b18d11a1 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Fri, 26 Sep 2014 11:18:59 +0200 Subject: [PATCH 02/12] module udpport2 --- .../commonFiles/sls_detector_defs.h | 3 +- slsDetectorSoftware/eigerDetectorServer/Beb.c | 12 +- slsDetectorSoftware/eigerDetectorServer/Beb.h | 1 + .../eigerDetectorServer/FebControl.c | 88 ++++++++++-- .../eigerDetectorServer/FebControl.h | 1 + .../eigerDetectorServer/Makefile | 2 +- .../bin/eigerDetectorServer | Bin 233173 -> 237404 bytes .../slsDetectorFunctionList.c | 34 ++--- .../gotthardDetectorServer/server_funcs.c | 4 +- .../moenchDetectorServer/server_funcs.c | 4 +- .../multiSlsDetector/multiSlsDetector.cpp | 127 +++++++++++------- .../slsDetector/slsDetector.cpp | 29 +++- slsDetectorSoftware/slsDetector/slsDetector.h | 6 + .../slsDetector/slsDetectorCommand.cpp | 13 ++ .../slsDetectorFunctionList.h | 2 +- .../slsDetectorServer_funcs.c | 23 ++-- .../receiverInterface.cpp | 4 +- .../slsReceiverInterface/receiverInterface.h | 2 +- 18 files changed, 253 insertions(+), 102 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_defs.h b/slsDetectorSoftware/commonFiles/sls_detector_defs.h index d4075c0d4..31dbc6365 100755 --- a/slsDetectorSoftware/commonFiles/sls_detector_defs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_defs.h @@ -177,7 +177,8 @@ enum networkParameter { RECEIVER_HOSTNAME, /**< receiver IP/hostname */ RECEIVER_UDP_IP, /**< receiever UDP IP */ RECEIVER_UDP_PORT, /**< receiever UDP Port */ - RECEIVER_UDP_MAC /**< receiever UDP MAC */ + RECEIVER_UDP_MAC, /**< receiever UDP MAC */ + RECEIVER_UDP_PORT2 /**< receiever UDP Port of second half module for eiger */ }; /** diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index e412fec91..ec8856772 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -52,6 +52,7 @@ void BebInfo_BebInfo(struct BebInfo* bebInfo, unsigned int beb_num){ bebInfo->src_port_1GbE=bebInfo->src_port_10GbE=0; } + int BebInfo_SetSerialAddress(struct BebInfo* bebInfo, unsigned int a){ //address pre shifted if(a>0xff) return 0; @@ -329,7 +330,7 @@ int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header Beb_SwapDataFun(1,12,&(Beb_send_data[2])); if(!Beb_WriteTo(i)) return 0; - + printf("dst_port:%d\n",dst_port); return 1; } @@ -368,12 +369,18 @@ int Beb_SetHeaderData1(char* src_mac, char* src_ip, unsigned int src_port, char* */ if(!Beb_SetMAC(src_mac,&(udp_header.src_mac[0]))) return 0; + printf("Setting Source MAC to %s\n",src_mac); if(!Beb_SetIP(src_ip,&(udp_header.src_ip[0]))) return 0; + printf("Setting Source IP to %s\n",src_ip); if(!Beb_SetPortNumber(src_port,&(udp_header.src_port[0]))) return 0; + printf("Setting Source port to %d\n",src_port); if(!Beb_SetMAC(dst_mac,&(udp_header.dst_mac[0]))) return 0; + printf("Setting Destination MAC to %s\n",dst_mac); if(!Beb_SetIP(dst_ip,&(udp_header.dst_ip[0]))) return 0; + printf("Setting Destination IP to %s\n",dst_ip); if(!Beb_SetPortNumber(dst_port,&(udp_header.dst_port[0]))) return 0; + printf("Setting Destination port to %d\n",dst_port); Beb_AdjustIPChecksum(&udp_header); @@ -392,8 +399,7 @@ int Beb_SetHeaderData1(char* src_mac, char* src_ip, unsigned int src_port, char* int Beb_SetMAC(char* mac, uint8_t* dst_ptr){ - -char macVal[50];strcpy(macVal,mac); + char macVal[50];strcpy(macVal,mac); int i = 0; char *pch = strtok (macVal,":"); diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.h b/slsDetectorSoftware/eigerDetectorServer/Beb.h index 52d250be6..86c36b0e5 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.h +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.h @@ -28,6 +28,7 @@ struct BebInfo{ void BebInfo_BebInfo(struct BebInfo* bebInfo, unsigned int beb_num); + void BebInfo_BebDstInfo(struct BebInfo* bebInfo, unsigned int beb_num); int BebInfo_SetSerialAddress(struct BebInfo* bebInfo, unsigned int add); int BebInfo_SetHeaderInfo(struct BebInfo* bebInfo, int ten_gig, char* src_mac, char* src_ip, unsigned int src_port);//src_port fixed 42000+beb_number or 52000 + beb_number); unsigned int BebInfo_GetBebNumber(struct BebInfo* bebInfo); diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 0f3c79ee3..69d7cfc0d 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -72,6 +72,29 @@ void Module_Module(struct Module* mod,unsigned int number, unsigned int address_ for(i=0;ibottom_dac[i] = mod->bottom_address_valid ? -1:0; } + +void Module_ModuleBottom(struct Module* mod,unsigned int number, unsigned int address_bottom){ + unsigned int i; + mod->module_number = number; + mod->top_address_valid = 0; + mod->top_left_address = 0; + mod->top_right_address = 0; + mod-> bottom_address_valid = 1; + mod-> bottom_left_address = 0x100 | (0xff & address_bottom); + mod-> bottom_right_address = (0x200 | (0xff & address_bottom)); + + mod->high_voltage = -1; + + for(i=0;i<4;i++) mod->idelay_top[i]=mod->idelay_bottom[i]=0; + + mod->top_dac = malloc(Module_ndacs * sizeof(int)); + mod->bottom_dac = malloc(Module_ndacs * sizeof(int)); + for(i=0;itop_dac[i] = mod->top_address_valid ? -1:0; + for(i=0;ibottom_dac[i] = mod->bottom_address_valid ? -1:0; +} + + + void Module_Module1(struct Module* mod,unsigned int number, unsigned int address_top, unsigned int address_bottom){ unsigned int i; mod->module_number = number; @@ -159,9 +182,9 @@ void Feb_Control_ClearModules(){ int Feb_Control_Init(){ unsigned int i; Feb_Control_ClearModules(); - Feb_Control_AddModule(0,0xff);//global send + /*Feb_Control_AddModule(0,0xff);//global send - Feb_Control_PrintModuleList(); + Feb_Control_PrintModuleList();*/ Feb_Control_ReadSetUpFileToAddModules("/home/root/executables/setup.txt"); @@ -216,10 +239,29 @@ int Feb_Control_ReadSetUpFileToAddModules(char* file_name){ exit(0); } printf ("str:%s len:%d i0:%d i1:%d\n", str, strlen(str),i0,i1); - if(!Feb_Control_AddModule(i0,i1)){ + + /**Added by dhanya*/ + if(i1 == 0){ + Feb_Control_AddModule1(0,0xff,0,1);//global send + Feb_Control_PrintModuleList(); + if(!Feb_Control_AddModule1(i0,i1,0,1)){ + printf("Error adding module, parameter was assigned twice in setup file: %s.\n",file_name); + exit(0); + } + }else{ + Feb_Control_AddModule1(0,0,0xff,1);//global send + Feb_Control_PrintModuleList(); + if(!Feb_Control_AddModule1(i0,0,i1,1)){ + printf("Error adding module, parameter was assigned twice in setup file: %s.\n",file_name); + exit(0); + } + } + + + /* if(!Feb_Control_AddModule1(i0,i1)){ printf("Error adding module, parameter was assigned twice in setup file: %s.\n",file_name); exit(0); - } + }*/ } } fclose(fp); @@ -315,7 +357,10 @@ int Feb_Control_AddModule1(unsigned int module_number, unsigned int top_address, struct Module mod,* m; m= &mod; - if(half_module) Module_Module(m,module_number,top_address); + /* if((half_module)&& (top_address != 1)) Module_Module(m,module_number,top_address); + else if(half_module) Module_ModuleBottom(m,module_number,top_address);*/ + if ((half_module)&& (!bottom_address)) Module_Module(m,module_number,top_address); + else if (half_module) Module_ModuleBottom(m,module_number,bottom_address); else Module_Module1(m,module_number,top_address,bottom_address); @@ -657,6 +702,7 @@ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* strncpy(temp, p1+3, (p2-p1)); temp[p2-p1] = '\0'; unsigned int number = atoi(temp); //unsigned int number = atoi((local_s.substr(p1+3,p2-3)).c_str()); + if(!Feb_Control_GetModuleIndex(number,module_index)){ printf("Error in dac_name \"%s\", module number %d not in list.\n",dac_str,number); return 0; @@ -664,6 +710,7 @@ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* strcpy(local_s,p2+2);//local_s = local_s.substr(p2+2); } + *top = 1; *bottom = 1; /* @@ -682,12 +729,12 @@ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* strcpy(local_s,p1+8); *top=0; } - *dac_ch = 0; if(!Feb_Control_GetDACNumber(local_s,dac_ch)){ printf("Error in dac_name: %s (%s)\n",dac_str,local_s); return 0; } + return 1; } @@ -748,9 +795,9 @@ int Feb_Control_SetDAC(char* dac_str, int value, int is_a_voltage_mv){ } if(bottom&&Module_BottomAddressIsValid(&modules[module_index])){ - if(!Feb_Control_SendDACValue(Module_GetBottomRightAddress(&modules[module_index]),dac_ch,&v)) return 0; - if(module_index!=0) Module_SetBottomDACValue(&modules[module_index],dac_ch,v); - else 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 Ic`tka4~N~cg8%>k delta 47475 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 - setDAC((enum detDacIndex)i,-1,(detectorModules)->module,0,retval); - (detectorModules)->dacs[i] = retval[0]; - } + for(i=0;i<(detectorModules)->ndac;i++) + setDAC((enum detDacIndex)i,default_dac_values[i],(detectorModules)->module,0,retval); + /* initialize dynamic range etc. */ @@ -127,6 +130,7 @@ int initDetector(){ setTiming(AUTO_TIMING); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating + return 1; } @@ -288,10 +292,10 @@ void setDAC(enum detDacIndex ind, int val, int imod, int mV, int retval[]){ if(val >= 0) Feb_Control_SetDAC(iname,val,mV); int k; - Feb_Control_GetDAC(iname, &k,0); - retval[0] = k; - Feb_Control_GetDAC(iname,&k,1); - retval[1] = k; + Feb_Control_GetDAC(iname, &k,0); + retval[0] = k; + Feb_Control_GetDAC(iname,&k,1); + retval[1] = k; (detectorModules)->dacs[ind] = retval[0]; @@ -669,7 +673,7 @@ int executeTrimming(enum trimMode mode, int par1, int par2, int imod){ } -int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int ival){ +int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int udpport2, int ival){ char src_mac[50], src_ip[50],dst_mac[50], dst_ip[50]; int src_port = 0xE185; int dst_port = udpport; @@ -688,7 +692,6 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in (unsigned int)((macad>>8)&0xFF), (unsigned int)((macad>>0)&0xFF)); - printf("Seting up Table Entry Left:\n"); printf("src_port:%d\n",src_port); printf("dst_port:%d\n",dst_port); printf("src_ip:%s\n",src_ip); @@ -696,27 +699,28 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in printf("src_mac:%s\n",src_mac); printf("dst_mac:%s\n\n",dst_mac); + int beb_num = 34; int header_number = 0; -int i=0; - //EigerSetupTableEntryLeft(ipad, macad, detectormacadd, detipad, udpport); + int i=0; /* for(i=0;i<32;i++){/** modified for Aldo*/ if(Beb_SetBebSrcHeaderInfos(beb_num,send_to_ten_gig,src_mac,src_ip,src_port) && Beb_SetUpUDPHeader(beb_num,send_to_ten_gig,header_number+i,dst_mac,dst_ip, dst_port)) printf("set up left ok\n"); else return -1; /*}*/ - //EigerSetupTableEntryRight(ipad, macad, detectormacadd, detipad, udpport); + header_number = 32; - dst_port = udpport +1; + dst_port = udpport2; + /*for(i=0;i<32;i++){*//** modified for Aldo*/ if(Beb_SetBebSrcHeaderInfos(beb_num,send_to_ten_gig,src_mac,src_ip,src_port) && Beb_SetUpUDPHeader(beb_num,send_to_ten_gig,header_number+i,dst_mac,dst_ip, dst_port)) printf("set up right ok\n"); else return -1; /*}*/ - //SetDestinationParameters(EigerGetNumberOfExposures()*EigerGetNumberOfCycles()); + on_dst = 0; for(i=0;i<32;i++) dst_requested[i] = 0; //clear dst requested diff --git a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c index 897c6bcad..0fa60e7e7 100755 --- a/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/gotthardDetectorServer/server_funcs.c @@ -2547,7 +2547,7 @@ int update_client(int file_des) { int configure_mac(int file_des) { int ret=OK; - char arg[5][50]; + char arg[6][50]; int n; int imod=0;//should be in future sent from client as -1, arg[2] @@ -2572,7 +2572,7 @@ int configure_mac(int file_des) { sscanf(arg[2], "%x", &udpport); sscanf(arg[3], "%llx", &idetectormacadd); sscanf(arg[4], "%x", &detipad); - + //arg[5] is udpport2 for eiger #ifdef VERBOSE int i; printf("\ndigital_test_bit in server %d\t",digitalTestBit); diff --git a/slsDetectorSoftware/moenchDetectorServer/server_funcs.c b/slsDetectorSoftware/moenchDetectorServer/server_funcs.c index d047802ef..b0d8d56ab 100755 --- a/slsDetectorSoftware/moenchDetectorServer/server_funcs.c +++ b/slsDetectorSoftware/moenchDetectorServer/server_funcs.c @@ -2629,7 +2629,7 @@ int update_client(int file_des) { int configure_mac(int file_des) { int ret=OK; - char arg[5][50]; + char arg[6][50]; int n; int imod=0;//should be in future sent from client as -1, arg[2] @@ -2654,7 +2654,7 @@ int configure_mac(int file_des) { sscanf(arg[2], "%x", &udpport); sscanf(arg[3], "%llx", &idetectormacadd); sscanf(arg[4], "%x", &detipad); - +//arg[5] is for eiger #ifdef VERBOSE int i; printf("\ndigital_test_bit in server %d\t",digitalTestBit); diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index ab6d85ba8..55cb1102a 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -351,56 +351,71 @@ int multiSlsDetector::addSlsDetector(int id, int pos) { void multiSlsDetector::updateOffsets(){ - int offsetX=0,offsetY=0,numX,numY; - int maxChanX = thisMultiDetector->maxNumberOfChannelsPerDetector[X]; - int maxChanY = thisMultiDetector->maxNumberOfChannelsPerDetector[Y]; - cout << "Updating multi detector offsets" << endl; - thisMultiDetector->numberOfChannel[X] = 0; - thisMultiDetector->maxNumberOfChannel[X] = 0; - thisMultiDetector->numberOfChannel[Y] = 0; - thisMultiDetector->maxNumberOfChannel[Y] = 0; - for (int i=0; inumberOfDetectors; i++) { - if (detectors[i]) { - thisMultiDetector->offsetX[i] = offsetX; - thisMultiDetector->offsetY[i] = offsetY; + cout << endl << "Updating multi detector offsets" << endl; - cout << "Detector at position: " << i << " x offset:" << offsetX << " y offset:" << offsetY << endl; + int offsetX=0, offsetY=0, numX=0, numY=0, maxX=0, maxY=0; + int maxChanX = thisMultiDetector->maxNumberOfChannelsPerDetector[X]; + int maxChanY = thisMultiDetector->maxNumberOfChannelsPerDetector[Y]; + thisMultiDetector->numberOfChannel[X] = 0; + thisMultiDetector->maxNumberOfChannel[X] = 0; + thisMultiDetector->numberOfChannel[Y] = 0; + thisMultiDetector->maxNumberOfChannel[Y] = 0; - numX = detectors[i]->getMaxNumberOfChannels(X); - numY = detectors[i]->getMaxNumberOfChannels(Y); + //0th position + if (detectors[0]){ + offsetX = thisMultiDetector->offsetX[0] = 0; + offsetY = thisMultiDetector->offsetY[0] = 0; + numX = thisMultiDetector->numberOfChannel[X] = detectors[0]->getTotalNumberOfChannels(X); + numY = thisMultiDetector->numberOfChannel[Y] = detectors[0]->getTotalNumberOfChannels(Y); + maxX = thisMultiDetector->maxNumberOfChannel[X] = detectors[0]->getMaxNumberOfChannels(X); + maxY = thisMultiDetector->maxNumberOfChannel[Y] = detectors[0]->getMaxNumberOfChannels(Y); - offsetX += numX; - if ((maxChanX == -1) || ((maxChanX > 0) && (offsetX < maxChanX))){ - thisMultiDetector->numberOfChannel[X] += detectors[i]->getTotalNumberOfChannels(X); - thisMultiDetector->maxNumberOfChannel[X] += numX; - //the first time y should be added but offset not increased - if (thisMultiDetector->numberOfChannel[Y] == 0){ - if ((maxChanY == -1) || ((maxChanY > 0) && (numY < maxChanY))){ - thisMultiDetector->numberOfChannel[Y] += detectors[i]->getTotalNumberOfChannels(Y); - thisMultiDetector->maxNumberOfChannel[Y] += numY; - }else{ - cout<<"Detector at position " << i << "exceeds maximum channels allowed for complete detector set in y dimension also!" << endl; - thisMultiDetector->numberOfChannel[Y] += detectors[i]->getTotalNumberOfChannels(Y); - thisMultiDetector->maxNumberOfChannel[Y] += numY; - } - } - }else{ - offsetX = 0; - thisMultiDetector->numberOfChannel[X] = 0; - thisMultiDetector->maxNumberOfChannel[X] = 0; - offsetY += numY; - if ((maxChanY == -1) || ((maxChanY > 0) && (offsetY < maxChanY))){ - thisMultiDetector->numberOfChannel[Y] += detectors[i]->getTotalNumberOfChannels(Y); - thisMultiDetector->maxNumberOfChannel[Y] += numY; - }else{ - cout<<"Detector at position " << i << "exceeds maximum channels allowed for complete detector set in y dimension also!" << endl; - thisMultiDetector->numberOfChannel[Y] += detectors[i]->getTotalNumberOfChannels(Y); - thisMultiDetector->maxNumberOfChannel[Y] += numY; - } - } - } - } + cout << "Detector at position 0: x offset:" << offsetX << " y offset:" << offsetY << endl; + } + + for (int i=1; inumberOfDetectors; i++) { + if (detectors[i]) { + //incrementing in x direction + if ((maxChanX == -1) || ((maxChanX > 0) && ((offsetX + numX) < maxChanX))){ + offsetX += detectors[i]->getMaxNumberOfChannels(X); + maxX += detectors[i]->getMaxNumberOfChannels(X); + numX += detectors[i]->getTotalNumberOfChannels(X); + } + //incrementing in y direction + else{ + offsetX = 0; + numX = 0; + maxX = 0; + thisMultiDetector->maxNumberOfChannel[X] = 0; + offsetY += detectors[i]->getMaxNumberOfChannels(Y); + if ((maxChanY == -1) || ((maxChanY > 0) && (offsetY <= maxChanY))){ + numY += detectors[i]->getTotalNumberOfChannels(Y); + maxY += detectors[i]->getMaxNumberOfChannels(Y); + }else{ + cout<<"Detector at position " << i << "exceeds maximum channels allowed for complete detector set in y dimension also!" << endl; + numY += detectors[i]->getTotalNumberOfChannels(Y); + maxY += detectors[i]->getMaxNumberOfChannels(Y); + } + } + + thisMultiDetector->offsetX[i] = offsetX; + thisMultiDetector->offsetY[i] = offsetY; + cout << "Detector at position: " << i << " x offset:" << thisMultiDetector->offsetX[i] << " y offset:" << thisMultiDetector->offsetY[i] << endl; + if(numX > thisMultiDetector->numberOfChannel[X]) + thisMultiDetector->numberOfChannel[X] = numX; + if(numY > thisMultiDetector->numberOfChannel[Y]) + thisMultiDetector->numberOfChannel[Y] = numY; + if(maxX > thisMultiDetector->maxNumberOfChannel[X]) + thisMultiDetector->maxNumberOfChannel[X] = maxX; + if(maxY > thisMultiDetector->maxNumberOfChannel[Y]) + thisMultiDetector->maxNumberOfChannel[Y] = maxY; + } + } + + + cout << "Number of Channels in X direction:" << thisMultiDetector->numberOfChannel[X] << endl; + cout << "Number of Channels in Y direction:" << thisMultiDetector->numberOfChannel[Y] << endl << endl; } string multiSlsDetector::setHostname(const char* name, int pos){ @@ -1182,6 +1197,16 @@ int multiSlsDetector::startAcquisition(){ int i=0; int ret=OK, ret1=OK; + + if (detectors[0]) { + ret=detectors[0]->startAcquisition(); + if(detectors[0]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (i!=thisMultiDetector->masterPosition) if (detectors[i]) { @@ -1201,7 +1226,7 @@ int multiSlsDetector::startAcquisition(){ if (ret!=OK) ret1=FAIL; } - } + }*/ return ret1; }; @@ -1213,6 +1238,8 @@ int multiSlsDetector::stopAcquisition(){ int i=0; int ret=OK, ret1=OK; + + i=thisMultiDetector->masterPosition; if (thisMultiDetector->masterPosition>=0) { @@ -3474,11 +3501,13 @@ int multiSlsDetector::getMaxMods() { int multiSlsDetector::getTotalNumberOfChannels(){thisMultiDetector->numberOfChannels=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->numberOfChannels+=detectors[id]->getTotalNumberOfChannels(); return thisMultiDetector->numberOfChannels;}; - int multiSlsDetector::getTotalNumberOfChannels(dimension d){thisMultiDetector->numberOfChannel[d]=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->numberOfChannel[d]+=detectors[id]->getTotalNumberOfChannels(d); return thisMultiDetector->numberOfChannel[d];}; + //int multiSlsDetector::getTotalNumberOfChannels(dimension d){thisMultiDetector->numberOfChannel[d]=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->numberOfChannel[d]+=detectors[id]->getTotalNumberOfChannels(d); return thisMultiDetector->numberOfChannel[d];}; + int multiSlsDetector::getTotalNumberOfChannels(dimension d){updateOffsets();return thisMultiDetector->numberOfChannel[d];}; int multiSlsDetector::getMaxNumberOfChannels(){thisMultiDetector->maxNumberOfChannels=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->maxNumberOfChannels+=detectors[id]->getMaxNumberOfChannels();return thisMultiDetector->maxNumberOfChannels;}; - int multiSlsDetector::getMaxNumberOfChannels(dimension d){thisMultiDetector->maxNumberOfChannel[d]=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->maxNumberOfChannel[d]+=detectors[id]->getMaxNumberOfChannels(d);return thisMultiDetector->maxNumberOfChannel[d];}; + // int multiSlsDetector::getMaxNumberOfChannels(dimension d){thisMultiDetector->maxNumberOfChannel[d]=0; for (int id=0; id< thisMultiDetector->numberOfDetectors; id++) thisMultiDetector->maxNumberOfChannel[d]+=detectors[id]->getMaxNumberOfChannels(d);return thisMultiDetector->maxNumberOfChannel[d];}; + int multiSlsDetector::getMaxNumberOfChannels(dimension d){updateOffsets();return thisMultiDetector->maxNumberOfChannel[d];}; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 893135563..dbcb1a3f5 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -488,6 +488,8 @@ int slsDetector::initializeDetectorSize(detectorType type) { thisDetector->receiverTCPPort=DEFAULT_PORTNO+2; /** set receiver udp port */ thisDetector->receiverUDPPort=DEFAULT_UDP_PORTNO; + /** set receiver udp port for Eiger */ + thisDetector->receiverUDPPort2=DEFAULT_UDP_PORTNO+1; /** set receiver ip address/hostname */ strcpy(thisDetector->receiver_hostname,"none"); /** set receiver udp ip address */ @@ -4838,6 +4840,15 @@ char* slsDetector::setNetworkParameter(networkParameter index, string value) { sscanf(value.c_str(),"%d",&i); setReceiverUDPPort(i); return getReceiverUDPPort(); + case RECEIVER_UDP_PORT2: + sscanf(value.c_str(),"%d",&i); + if(thisDetector->myDetectorType == EIGER) + setReceiverUDPPort2(i); + else + setReceiverUDPPort(i); + if(thisDetector->myDetectorType == EIGER) + return getReceiverUDPPort2(); + return getReceiverUDPPort(); default: return ("unknown network parameter"); } @@ -4867,6 +4878,9 @@ char* slsDetector::getNetworkParameter(networkParameter index) { case RECEIVER_UDP_PORT: return getReceiverUDPPort(); break; + case RECEIVER_UDP_PORT2: + return getReceiverUDPPort2(); + break; default: return ("unknown network parameter"); } @@ -5012,14 +5026,17 @@ int slsDetector::setReceiverUDPPort(int udpport){ return thisDetector->receiverUDPPort; } - +int slsDetector::setReceiverUDPPort2(int udpport){ + thisDetector->receiverUDPPort2 = udpport; + return thisDetector->receiverUDPPort2; +} int slsDetector::setUDPConnection(){ int ret = FAIL; int fnum = F_SETUP_RECEIVER_UDP; - char args[2][MAX_STR_LENGTH]; + char args[3][MAX_STR_LENGTH]; char retval[MAX_STR_LENGTH]=""; @@ -5043,9 +5060,11 @@ int slsDetector::setUDPConnection(){ //copy arguments to args[][] strcpy(args[0],thisDetector->receiverUDPIP); sprintf(args[1],"%d",thisDetector->receiverUDPPort); + sprintf(args[2],"%d",thisDetector->receiverUDPPort2); #ifdef VERBOSE std::cout << "Receiver udp ip address: " << thisDetector->receiverUDPIP << std::endl; std::cout << "Receiver udp port: " << thisDetector->receiverUDPPort << std::endl; + std::cout << "Receiver udp port2: " << thisDetector->receiverUDPPort2 << std::endl; #endif //set up receiver for UDP Connection and get receivermac address @@ -5084,7 +5103,7 @@ int slsDetector::configureMAC(){ int ret=FAIL; int fnum=F_CONFIGURE_MAC,fnum2=F_RECEIVER_SHORT_FRAME; char mess[100]; - char arg[5][50]; + char arg[6][50]; char cword[50]="", *pcword; string sword; int retval=-1; @@ -5112,6 +5131,7 @@ int slsDetector::configureMAC(){ sprintf(arg[2],"%x",thisDetector->receiverUDPPort); strcpy(arg[3],thisDetector->detectorMAC); strcpy(arg[4],thisDetector->detectorIP); + sprintf(arg[5],"%x",thisDetector->receiverUDPPort2); #ifdef VERBOSE std::cout<< "Configuring MAC"<< std::endl; @@ -5174,6 +5194,9 @@ int slsDetector::configureMAC(){ #ifdef VERBOSE std::cout<<"detector ip:"<onlineFlag==ONLINE_FLAG) { diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 6ffb42c04..736334dd9 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -240,6 +240,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion { int receiverTCPPort; /** is the port used to communicate between detector and the receiver*/ int receiverUDPPort; + /** is the port used to communicate between second half module of Eiger detector and the receiver*/ + int receiverUDPPort2; /** ip address of the receiver for the detector to send packets to**/ char receiverUDPIP[MAX_STR_LENGTH]; /** mac address of receiver for the detector to send packets to **/ @@ -1603,6 +1605,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion { char* getReceiverUDPMAC() {return thisDetector->receiverUDPMAC;}; /** returns the receiver UDP IP address \sa sharedSlsDetector */ char* getReceiverUDPPort() {char *c= new char[MAX_STR_LENGTH];sprintf(c,"%d",thisDetector->receiverUDPPort); return c;}; + /** returns the receiver UDP2 for Eiger IP address \sa sharedSlsDetector */ + char* getReceiverUDPPort2() {char *c= new char[MAX_STR_LENGTH];sprintf(c,"%d",thisDetector->receiverUDPPort2); return c;}; /** validates the format of detector MAC address and sets it \sa sharedSlsDetector */ char* setDetectorMAC(string detectorMAC); @@ -1616,6 +1620,8 @@ class slsDetector : public slsDetectorUtils, public energyConversion { char* setReceiverUDPMAC(string udpmac); /** sets the receiver udp port \sa sharedSlsDetector */ int setReceiverUDPPort(int udpport); + /** sets the receiver udp port2 for Eiger \sa sharedSlsDetector */ + int setReceiverUDPPort2(int udpport); /** Sets the read receiver frequency if Receiver read upon gui request, readRxrFrequency=0, diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index cee4a387c..247797606 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -344,6 +344,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter; i++; + descrToFuncMap[i].m_pFuncName="rx_udpport2"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter; + i++; + descrToFuncMap[i].m_pFuncName="detectormac"; // descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdNetworkParameter; i++; @@ -2464,6 +2468,12 @@ string slsDetectorCommand::cmdNetworkParameter(int narg, char *args[], int actio if (!(sscanf(args[1],"%d",&i))) return ("cannot parse argument") + string(args[1]); } + } else if (cmd=="rx_udpport2") { + t=RECEIVER_UDP_PORT2; + if (action==PUT_ACTION){ + if (!(sscanf(args[1],"%d",&i))) + return ("cannot parse argument") + string(args[1]); + } } else return ("unknown network parameter")+cmd; if (action==PUT_ACTION) @@ -2485,6 +2495,7 @@ string slsDetectorCommand::helpNetworkParameter(int narg, char *args[], int acti os << "rx_udpip ip \n sets receiver udp ip to ip"<< std::endl; os << "rx_udpmac mac \n sets receiver udp mac to mac"<< std::endl; os << "rx_udpport port \n sets receiver udp port to port"<< std::endl; + os << "rx_udpport2 port \n sets receiver udp port to port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl; } if (action==GET_ACTION || action==HELP_ACTION) { os << "detectormac \n gets detector mac "<< std::endl; @@ -2492,6 +2503,8 @@ string slsDetectorCommand::helpNetworkParameter(int narg, char *args[], int acti os << "rx_hostname \n gets receiver ip "<< std::endl; os << "rx_udpmac \n gets receiver udp mac "<< std::endl; os << "rx_udpport \n gets receiver udp port "<< std::endl; + os << "rx_udpport2 \n gets receiver udp port. For Eiger, it is the second half module and for other detectors, same as rx_udpport"<< std::endl; + } return os.str(); diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h index e21e69ded..cbe43b571 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h @@ -95,7 +95,7 @@ int executeTrimming(enum trimMode mode, int par1, int par2, int imod); #ifndef MYTHEND -int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int ival); +int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int udpport2, int ival); #endif #ifdef GOTTHARDD diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index f87a7d389..3f15764c5 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -2963,11 +2963,11 @@ int execute_trimming(int file_des) { -int configure_mac(int file_des) { +int configure_mac(int file_des) {printf("in hereeeeee\n"); int retval=-100; int ret=OK,ret1=OK; - char arg[5][50]; + char arg[6][50]; int n; #ifndef MYTHEND @@ -2976,9 +2976,10 @@ int configure_mac(int file_des) { long long int imacadd; long long int idetectormacadd; int udpport; + int udpport2; int detipad; #endif - +printf("111\n"); sprintf(mess,"Can't configure MAC\n"); n = receiveData(file_des,arg,sizeof(arg),OTHER); @@ -2986,7 +2987,7 @@ int configure_mac(int file_des) { sprintf(mess,"Error reading from socket\n"); ret=FAIL; } - +printf("222\n"); #ifdef MYTHEND ret = FAIL; strcpy(mess,"Not applicable/implemented for this detector\n"); @@ -2996,7 +2997,7 @@ int configure_mac(int file_des) { sscanf(arg[2], "%x", &udpport); sscanf(arg[3], "%llx", &idetectormacadd); sscanf(arg[4], "%x", &detipad); - + sscanf(arg[5], "%x", &udpport2); #ifdef SLS_DETECTOR_FUNCTION_LIST @@ -3006,7 +3007,8 @@ int configure_mac(int file_des) { printf("mess:%s\n",mess); } #endif -#ifdef VERBOSE +printf("333\n"); + //#ifdef VERBOSE int i; /*printf("\ndigital_test_bit in server %d\t",digitalTestBit);for gotthard*/ printf("\nipadd %x\t",ipad); @@ -3019,9 +3021,10 @@ int configure_mac(int file_des) { for (i=0;i<6;i++) printf("detector mac adress %d is 0x%x \n",6-i,(unsigned int)(((idetectormacadd>>(8*i))&0xFF))); printf("detipad %x\n",detipad); + printf("udp port2:0x%x\n",udpport2); printf("\n"); printf("Configuring MAC of module %d at port %x\n", imod, udpport); -#endif + //#endif #ifdef SLS_DETECTOR_FUNCTION_LIST if (ret==OK) { @@ -3029,13 +3032,13 @@ int configure_mac(int file_des) { stopStateMachine(); } - retval=configureMAC(ipad,imacadd,idetectormacadd,detipad,udpport,0); /*digitalTestBit);*/ + retval=configureMAC(ipad,imacadd,idetectormacadd,detipad,udpport,udpport2,0); /*digitalTestBit);*/ if(retval==-1) ret=FAIL; } #endif -#ifdef VERBOSE + //#ifdef VERBOSE printf("Configured MAC with retval %d\n", retval); -#endif + //#endif if (ret==FAIL) { printf("configuring MAC of mod %d failed\n", imod); } diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp index 3a1eaa384..b244cdadc 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.cpp @@ -40,8 +40,8 @@ int receiverInterface::sendString(int fnum, char retval[], char arg[]){ -int receiverInterface::sendUDPDetails(int fnum, char retval[], char arg[2][MAX_STR_LENGTH]){ - char args[2][MAX_STR_LENGTH]; +int receiverInterface::sendUDPDetails(int fnum, char retval[], char arg[3][MAX_STR_LENGTH]){ + char args[3][MAX_STR_LENGTH]; int ret = slsDetectorDefs::FAIL; char mess[100] = ""; diff --git a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h index 2dd2221d2..27fbea6a1 100644 --- a/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h +++ b/slsDetectorSoftware/slsReceiverInterface/receiverInterface.h @@ -56,7 +56,7 @@ public: * @param arg value to send * \returns success of operation */ - int sendUDPDetails(int fnum, char retval[], char arg[2][MAX_STR_LENGTH]); + int sendUDPDetails(int fnum, char retval[], char arg[3][MAX_STR_LENGTH]); /** From fec9a30e6a9cce9a17476cbd0b5b50d951ea5192 Mon Sep 17 00:00:00 2001 From: Anna Bergamaschi Date: Wed, 1 Oct 2014 10:38:47 +0200 Subject: [PATCH 03/12] Added jungfrau detector server (not functional, though) --- .../jungfrauDetectorServer/.target-makefrag | 1 + .../jungfrauDetectorServer/Makefile | 48 + .../jungfrauDetectorServer/Makefile.virtual | 30 + .../communication_funcs.c | 1 + .../communication_funcs.h | 1 + .../jungfrauDetectorServer/firmware_funcs.c | 2614 ++++++++++++++ .../jungfrauDetectorServer/firmware_funcs.h | 179 + .../jungfrauDetectorServer/gitInfo.txt | 9 + .../jungfrauDetectorServer/gitInfoMoench.h | 11 + .../jungfrauDetectorServer/gitInfoMoenchTmp.h | 11 + .../jungfrauDetectorServer | Bin 0 -> 132672 bytes .../jungfrauDetectorServer.gdb | Bin 0 -> 568322 bytes .../jungfrauDetectorServer/mcb_funcs.c | 2649 ++++++++++++++ .../jungfrauDetectorServer/mcb_funcs.h | 174 + .../moenchDetectorServer | Bin .../moenchVirtualServer | Bin 0 -> 107120 bytes .../jungfrauDetectorServer/registers_m.h | 464 +++ .../jungfrauDetectorServer/server.c | 137 + .../jungfrauDetectorServer/server_defs.h | 63 + .../jungfrauDetectorServer/server_funcs.c | 3108 +++++++++++++++++ .../jungfrauDetectorServer/server_funcs.h | 97 + .../jungfrauDetectorServer/sharedmemory.c | 39 + .../jungfrauDetectorServer/sharedmemory.h | 48 + .../sls_detector_defs.h | 1 + .../sls_detector_funcs.h | 1 + .../sls_receiver_defs.h | 1 + .../sls_receiver_funcs.h | 1 + .../jungfrauDetectorServer/stop_server.c | 46 + .../jungfrauDetectorServer/trimming_funcs.c | 749 ++++ .../jungfrauDetectorServer/trimming_funcs.h | 20 + 30 files changed, 10503 insertions(+) create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/.target-makefrag create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/Makefile create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/Makefile.virtual create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.c create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h create mode 100644 slsDetectorSoftware/jungfrauDetectorServer/gitInfo.txt create mode 100644 slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoench.h create mode 100644 slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoenchTmp.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer.gdb create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.h rename slsDetectorSoftware/{moenchDetectorServer => jungfrauDetectorServer}/moenchDetectorServer (100%) create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/moenchVirtualServer create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/registers_m.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/server.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/server_defs.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.h create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/sls_detector_defs.h create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/sls_detector_funcs.h create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_defs.h create mode 120000 slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_funcs.h create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/stop_server.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c create mode 100755 slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.h diff --git a/slsDetectorSoftware/jungfrauDetectorServer/.target-makefrag b/slsDetectorSoftware/jungfrauDetectorServer/.target-makefrag new file mode 100755 index 000000000..ce093ecac --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/.target-makefrag @@ -0,0 +1 @@ +AXIS_BUILDTYPE ?= cris-axis-linux-gnu diff --git a/slsDetectorSoftware/jungfrauDetectorServer/Makefile b/slsDetectorSoftware/jungfrauDetectorServer/Makefile new file mode 100755 index 000000000..af9c684c4 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/Makefile @@ -0,0 +1,48 @@ +# $Id: Makefile,v 1.1.1.1 2006/02/04 03:35:01 freza Exp $ +# first compile +# make cris-axis-linux-gnu + + +CROSS = bfin-uclinux- +CC = $(CROSS)gcc + +CFLAGS += -Wall -DMOENCHD -DMCB_FUNCS -DDACS_INT -DDEBUG #-DVERBOSE #-DVERYVERBOSE #-DVIRTUAL #-DDACS_INT_CSERVER + + +PROGS= jungfrauDetectorServer +INSTDIR= /tftpboot +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 +OBJS = $(SRCS:%.c=%.o) + + + +all: clean $(PROGS) + +boot: $(OBJS) + +$(PROGS): $(OBJS) + echo $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@) + + +install: $(PROGS) + $(INSTALL) -d $(INSTDIR) + $(INSTALL) -m $(INSTMODE) $(PROGS) $(INSTDIR) + + +romfs: + $(ROMFSINST) /bin/$(PROGS) + +clean: + rm -rf $(PROGS) *.o *.gdb + + + + + + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/Makefile.virtual b/slsDetectorSoftware/jungfrauDetectorServer/Makefile.virtual new file mode 100755 index 000000000..38dd2537c --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/Makefile.virtual @@ -0,0 +1,30 @@ + +DESTDIR ?= ./ + +CC = gcc +CFLAGS += -Wall -DMOENCHD -DMCB_FUNCS -DDACS_INT -DDEBUG -DVIRTUAL + + +PROGS= $(DESTDIR)/moenchVirtualServer + + +SRCS = server.c server_funcs.c communication_funcs.c firmware_funcs.c mcb_funcs.c trimming_funcs.c sharedmemory.c +OBJS = $(SRCS:%.c=%.o) + +moenchVirtualServer = $(PROGS) + +all: clean $(PROGS) + + +$(PROGS): $(OBJS) + $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS_$@) $(LDFLAGS_$@) + + +clean: + rm -rf $(PROGS) *.o *.gdb + + + + + + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.c new file mode 120000 index 000000000..87a4f95d1 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.c @@ -0,0 +1 @@ +../commonFiles/communication_funcs.c \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.h new file mode 120000 index 000000000..f220903b2 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/communication_funcs.h @@ -0,0 +1 @@ +../commonFiles/communication_funcs.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c new file mode 100755 index 000000000..1168559be --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c @@ -0,0 +1,2614 @@ + +#include "server_defs.h" +#include "firmware_funcs.h" +#include "mcb_funcs.h" +#include "registers_m.h" + +#ifdef SHAREDMEMORY +#include "sharedmemory.h" +#endif + +#include +#include +#include + +#include + +//for memory mapping +u_int64_t CSP0BASE; + +FILE *debugfp, *datafp; + +int fr; +int wait_time; +int *fifocntrl; + +//int *statusreg; commented out by dhanya +const int nModY=1; +int nModBoard; +int nModX=NMAXMOD; +int dynamicRange=16;//32; +int dataBytes=NMAXMOD*NCHIP*NCHAN*2; +int storeInRAM=0; +int ROI_flag=0; +int adcConfigured=-1; +u_int32_t *ram_values=NULL; +volatile char *now_ptr=NULL; +volatile u_int16_t *values; +int ram_size=0; + +int64_t totalTime=1; +u_int32_t progressMask=0; + +int phase_shift=0;//DEFAULT_PHASE_SHIFT; +int ipPacketSize=DEFAULT_IP_PACKETSIZE; +int udpPacketSize=DEFAULT_UDP_PACKETSIZE; + + +int ififostart, ififostop, ififostep, ififo; + +int masterMode=NO_MASTER, syncMode=NO_SYNCHRONIZATION, timingMode=AUTO_TIMING; + +enum externalSignalFlag signals[4]={EXT_SIG_OFF, EXT_SIG_OFF, EXT_SIG_OFF, EXT_SIG_OFF}; + +int withGotthard = 0; + +#ifdef MCB_FUNCS +extern const int nChans; +extern const int nChips; +//extern const int nDacs; +//extern const int nAdcs; +#endif +#ifndef MCB_FUNCS + +const int nChans=NCHAN; +const int nChips=NCHIP; +const int nDacs=NDAC; +const int nAdcs=NADC; +#endif + + + + +/** + ENEt conf structs +*/ +typedef struct mac_header_struct{ + u_int8_t mac_dest_mac2; + u_int8_t mac_dest_mac1; + u_int8_t mac_dummy1; + u_int8_t mac_dummy2; + u_int8_t mac_dest_mac6; + u_int8_t mac_dest_mac5; + u_int8_t mac_dest_mac4; + u_int8_t mac_dest_mac3; + u_int8_t mac_src_mac4; + u_int8_t mac_src_mac3; + u_int8_t mac_src_mac2; + u_int8_t mac_src_mac1; + u_int16_t mac_ether_type; + u_int8_t mac_src_mac6; + u_int8_t mac_src_mac5; +} mac_header; + +typedef struct ip_header_struct { + u_int16_t ip_len; + u_int8_t ip_tos; + u_int8_t ip_ihl:4 ,ip_ver:4; + u_int16_t ip_offset:13,ip_flag:3; + u_int16_t ip_ident; + u_int16_t ip_chksum; + u_int8_t ip_protocol; + u_int8_t ip_ttl; + u_int32_t ip_sourceip; + u_int32_t ip_destip; +} ip_header; + +typedef struct udp_header_struct{ + u_int16_t udp_destport; + u_int16_t udp_srcport; + u_int16_t udp_chksum; + u_int16_t udp_len; +} udp_header; + +typedef struct mac_conf_struct{ + mac_header mac; + ip_header ip; + udp_header udp; + u_int32_t npack; + u_int32_t lpack; + u_int32_t npad; + u_int32_t cdone; +} mac_conf; + +typedef struct tse_conf_struct{ + u_int32_t rev; //0x0 + u_int32_t scratch; + u_int32_t command_config; + u_int32_t mac_0; //0x3 + u_int32_t mac_1; + u_int32_t frm_length; + u_int32_t pause_quant; + u_int32_t rx_section_empty; //0x7 + u_int32_t rx_section_full; + u_int32_t tx_section_empty; + u_int32_t tx_section_full; + u_int32_t rx_almost_empty; //0xB + u_int32_t rx_almost_full; + u_int32_t tx_almost_empty; + u_int32_t tx_almost_full; + u_int32_t mdio_addr0; //0xF + u_int32_t mdio_addr1; +}tse_conf; + + + +int mapCSP0(void) { + printf("Mapping memory\n"); +#ifndef VIRTUAL + int fd; + fd = open("/dev/mem", O_RDWR | O_SYNC, 0); + if (fd == -1) { + printf("\nCan't find /dev/mem!\n"); + return FAIL; + } + printf("/dev/mem opened\n"); + + CSP0BASE = (u_int32_t)mmap(0, MEM_SIZE, PROT_READ|PROT_WRITE, MAP_FILE|MAP_SHARED, fd, CSP0); + if (CSP0BASE == (u_int32_t)MAP_FAILED) { + printf("\nCan't map memmory area!!\n"); + return FAIL; + } + printf("CSP0 mapped\n"); + +#endif +#ifdef VIRTUAL + CSP0BASE = malloc(MEM_SIZE); + printf("memory allocated\n"); +#endif +#ifdef SHAREDMEMORY + if ( (res=inism(SMSV))<0) { + printf("error attaching shared memory! %i",res); + return FAIL; + } +#endif + printf("CSPObase is 0x%x \n",CSP0BASE); + printf("CSPOBASE=from %08x to %x\n",CSP0BASE,CSP0BASE+MEM_SIZE); + + u_int32_t address; + address = FIFO_DATA_REG_OFF; + values=(u_int16_t*)(CSP0BASE+address*2); + printf("statusreg=%08x\n",bus_r(STATUS_REG)); + printf("\n\n"); + return OK; +} + +u_int16_t bus_r16(u_int32_t offset){ + volatile u_int16_t *ptr1; + ptr1=(u_int16_t*)(CSP0BASE+offset*2); + return *ptr1; +} + +u_int16_t bus_w16(u_int32_t offset, u_int16_t data) { + volatile u_int16_t *ptr1; + ptr1=(u_int16_t*)(CSP0BASE+offset*2); + *ptr1=data; + return OK; +} + +/** ramType is DARK_IMAGE_REG or GAIN_IMAGE_REG */ +u_int16_t ram_w16(u_int32_t ramType, int adc, int adcCh, int Ch, u_int16_t data) { + unsigned int adr = (ramType | adc << 8 | adcCh << 5 | Ch ); + // printf("Writing to addr:%x\n",adr); + return bus_w16(adr,data); +} + +/** ramType is DARK_IMAGE_REG or GAIN_IMAGE_REG */ +u_int16_t ram_r16(u_int32_t ramType, int adc, int adcCh, int Ch){ + unsigned int adr = (ramType | adc << 8 | adcCh << 5 | Ch ); + // printf("Reading from addr:%x\n",adr); + return bus_r16(adr); +} + +u_int32_t bus_w(u_int32_t offset, u_int32_t data) { + volatile u_int32_t *ptr1; + + ptr1=(u_int32_t*)(CSP0BASE+offset*2); + *ptr1=data; + + return OK; +} + + +u_int32_t bus_r(u_int32_t offset) { + volatile u_int32_t *ptr1; + + ptr1=(u_int32_t*)(CSP0BASE+offset*2); + return *ptr1; +} + + +int setPhaseShiftOnce(){ + u_int32_t addr, reg; + int i; + addr=MULTI_PURPOSE_REG; + reg=bus_r(addr); +#ifdef VERBOSE + printf("Multipurpose reg:%x\n",reg); +#endif + + //Checking if it is power on(negative number) + // if(((reg&0xFFFF0000)>>16)>0){ + //bus_w(addr,0x0); //clear the reg + + if(reg==0){ + printf("\nImplementing phase shift of %d\n",phase_shift); + for (i=1;i0) { + bus_w(PLL_CNTRL_REG, 1);//reset PLL + bus_w(PLL_CNTRL_REG, 0); + phase_shift=0; + for (i=0;i1) nc=d;// nc=161/d; + else return -1; + + if (nc>255) + return -1; + + int addr, addr1, addr0; + u_int32_t pat,pat1,pat0; + + addr= PLL_PARAM_REG; + addr0= PLL_PARAM_OUT_REG; + addr1=PLL_CNTRL_REG; + pat1=0x10; + + + //write high count c0 +/* pat=(1<<12)|(7<<9)|nc; */ +/* bus_w(addr, pat); */ +/* bus_w(addr1, pat1); */ +/* bus_w(addr1, 0); */ +/* usleep (1000); */ +/* pat=bus_r(addr0); */ +/* bus_w(addr1, 0x4); */ +/* bus_w(addr1, 0); */ +/* pat=bus_r(addr0); */ +/* printf("M nominal count read %x (%d)\n",pat,(pat&0x1ff)); */ + + + + //write low count c0 + pat=(nc-1)|(4<<12)|(1<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + usleep (1000); + printf("C0 low count status %x\n",pat0); + + //write high count c0 + pat=(nc)|(4<<12)|(0<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C0 high count status %x\n",pat0); + usleep (1000); + + //write low count c1 + pat=(nc-1)|(5<<12)|(1<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C1 high count status %x\n",pat0); + usleep (1000); + + //write high count c1 + pat=(nc)|(5<<12)|(0<<9); + bus_w(addr, pat); + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("C1 low count status %x\n",pat0); + usleep (1000); + + //reconfigure pll + pat1=0x8; + bus_w(addr1, pat1); + bus_w(addr1, 0); + pat0=bus_r(PLL_PARAM_OUT_REG); + printf("configure status %d\n",pat0); + sleep (1); + printf("finish status %x\n",pat0); + + + bus_w(PLL_CNTRL_REG, 1); //reset PLL + bus_w(PLL_CNTRL_REG, 0); + + return 0; +} + + + + +u_int32_t getClockDivider() { + + + + int ic=0; + + //reset pll_reconfig to initial values + bus_w(PLL_CNTRL_REG,(1<=0 && d<=255) + bus_w(OVERSAMPLING_REG, d); + + return bus_r(OVERSAMPLING_REG); +} + + +u_int32_t setWaitStates(int d1) { + return 0; +} + +u_int32_t getWaitStates() { + return 0; +} + + +u_int32_t setTotClockDivider(int d) { + return 0; +} + +u_int32_t getTotClockDivider() { + return 0; +} + + +u_int32_t setTotDutyCycle(int d) { + return 0; +} + +u_int32_t getTotDutyCycle() { + return 0; +} + + +u_int32_t setExtSignal(int d, enum externalSignalFlag mode) { + + //int modes[]={EXT_SIG_OFF, EXT_GATE_IN_ACTIVEHIGH, EXT_GATE_IN_ACTIVELOW,EXT_TRIG_IN_RISING,EXT_TRIG_IN_FALLING,EXT_RO_TRIG_IN_RISING, EXT_RO_TRIG_IN_FALLING,EXT_GATE_OUT_ACTIVEHIGH, EXT_GATE_OUT_ACTIVELOW, EXT_TRIG_OUT_RISING, EXT_TRIG_OUT_FALLING, EXT_RO_TRIG_OUT_RISING, EXT_RO_TRIG_OUT_FALLING}; + // int off=d*SIGNAL_OFFSET; + + u_int32_t c; + c=bus_r(EXT_SIGNAL_REG); + + if (d>=0 && d<4) { + signals[d]=mode; +#ifdef VERBOSE + printf("settings signal variable number %d to value %04x\n", d, signals[d]); +#endif + + // if output signal, set it! + + switch (mode) { + case GATE_IN_ACTIVE_HIGH: + case GATE_IN_ACTIVE_LOW: + if (timingMode==GATE_FIX_NUMBER || timingMode==GATE_WITH_START_TRIGGER) + setFPGASignal(d,mode); + else + setFPGASignal(d,SIGNAL_OFF); + break; + case TRIGGER_IN_RISING_EDGE: + case TRIGGER_IN_FALLING_EDGE: + if (timingMode==TRIGGER_EXPOSURE || timingMode==GATE_WITH_START_TRIGGER) + setFPGASignal(d,mode); + else + setFPGASignal(d,SIGNAL_OFF); + break; + case RO_TRIGGER_IN_RISING_EDGE: + case RO_TRIGGER_IN_FALLING_EDGE: + if (timingMode==TRIGGER_READOUT) + setFPGASignal(d,mode); + else + setFPGASignal(d,SIGNAL_OFF); + break; + case MASTER_SLAVE_SYNCHRONIZATION: + setSynchronization(syncMode); + break; + default: + setFPGASignal(d,mode); + break; + } + + setTiming(GET_EXTERNAL_COMMUNICATION_MODE); + } + + +// if (mode<=RO_TRIGGER_OUT_FALLING_EDGE && mode>=0) +// bus_w(EXT_SIGNAL_REG,((modes[mode])<=0) { +#ifdef VERBOSE + printf("writing signal register number %d mode %04x\n",d, modes[mode]); +#endif + bus_w(EXT_SIGNAL_REG,((modes[mode])<>off); + + if (mode=0 && d<4) { +#ifdef VERBOSE + printf("gettings signal variable number %d value %04x\n", d, signals[d]); +#endif + return signals[d]; + } else + return -1; + + +} + + +int getFPGASignal(int d) { + + int modes[]={SIGNAL_OFF, GATE_IN_ACTIVE_HIGH, GATE_IN_ACTIVE_LOW,TRIGGER_IN_RISING_EDGE, TRIGGER_IN_FALLING_EDGE,RO_TRIGGER_IN_RISING_EDGE, RO_TRIGGER_IN_FALLING_EDGE, GATE_OUT_ACTIVE_HIGH, GATE_OUT_ACTIVE_LOW, TRIGGER_OUT_RISING_EDGE, TRIGGER_OUT_FALLING_EDGE, RO_TRIGGER_OUT_RISING_EDGE,RO_TRIGGER_OUT_FALLING_EDGE}; + + int off=d*SIGNAL_OFFSET; + int mode=((bus_r(EXT_SIGNAL_REG)&(SIGNAL_MASK<>off); + + if (mode<=RO_TRIGGER_OUT_FALLING_EDGE) { + if (modes[mode]!=SIGNAL_OFF && signals[d]!=MASTER_SLAVE_SYNCHRONIZATION) + signals[d]=modes[mode]; +#ifdef VERYVERBOSE + printf("gettings signal register number %d value %04x\n", d, modes[mode]); +#endif + return modes[mode]; + } else + return -1; + +} + + + + + +/* +enum externalCommunicationMode{ + GET_EXTERNAL_COMMUNICATION_MODE, + AUTO, + TRIGGER_EXPOSURE_SERIES, + TRIGGER_EXPOSURE_BURST, + TRIGGER_READOUT, + TRIGGER_COINCIDENCE_WITH_INTERNAL_ENABLE, + GATE_FIX_NUMBER, + GATE_FIX_DURATION, + GATE_WITH_START_TRIGGER, + GATE_COINCIDENCE_WITH_INTERNAL_ENABLE +}; +*/ + + +int setTiming(int ti) { + + + int ret=GET_EXTERNAL_COMMUNICATION_MODE; + + int g=-1, t=-1, rot=-1; + + int i; + + switch (ti) { + case AUTO_TIMING: + timingMode=ti; + // disable all gates/triggers in except if used for master/slave synchronization + for (i=0; i<4; i++) { + if (getFPGASignal(i)>0 && getFPGASignal(i)=0 && t>=0 && rot<0) { + ret=GATE_WITH_START_TRIGGER; + } else if (g<0 && t>=0 && rot<0) { + ret=TRIGGER_EXPOSURE; + } else if (g>=0 && t<0 && rot<0) { + ret=GATE_FIX_NUMBER; + } else if (g<0 && t<0 && rot>0) { + ret=TRIGGER_READOUT; + } else if (g<0 && t<0 && rot<0) { + ret=AUTO_TIMING; + } + + // timingMode=ret; + + return ret; + +} + + + +int setConfigurationRegister(int d) { +#ifdef VERBOSE + printf("Setting configuration register to %x",d); +#endif + if (d>=0) { + bus_w(CONFIG_REG,d); + } +#ifdef VERBOSE + printf("configuration register is %x", bus_r(CONFIG_REG)); +#endif + return bus_r(CONFIG_REG); +} + +int setToT(int d) { + //int ret=0; + int reg; +#ifdef VERBOSE + printf("Setting ToT to %d\n",d); +#endif + reg=bus_r(CONFIG_REG); +#ifdef VERBOSE + printf("Before: ToT is %x\n", reg); +#endif + if (d>0) { + bus_w(CONFIG_REG,reg|TOT_ENABLE_BIT); + } else if (d==0) { + bus_w(CONFIG_REG,reg&(~TOT_ENABLE_BIT)); + } + reg=bus_r(CONFIG_REG); +#ifdef VERBOSE + printf("ToT is %x\n", reg); +#endif + if (reg&TOT_ENABLE_BIT) + return 1; + else + return 0; +} + +int setContinousReadOut(int d) { + //int ret=0; + int reg; +#ifdef VERBOSE + printf("Setting Continous readout to %d\n",d); +#endif + reg=bus_r(CONFIG_REG); +#ifdef VERBOSE + printf("Before: Continous readout is %x\n", reg); +#endif + if (d>0) { + bus_w(CONFIG_REG,reg|CONT_RO_ENABLE_BIT); + } else if (d==0) { + bus_w(CONFIG_REG,reg&(~CONT_RO_ENABLE_BIT)); + } + reg=bus_r(CONFIG_REG); +#ifdef VERBOSE + printf("Continous readout is %x\n", reg); +#endif + if (reg&CONT_RO_ENABLE_BIT) + return 1; + else + return 0; +} + + +int startReceiver(int start) { + u_int32_t addr=CONFIG_REG; +#ifdef VERBOSE + if(start) + printf("Setting up detector to send to Receiver\n"); + else + printf("Setting up detector to send to CPU\n"); +#endif + int reg=bus_r(addr); + //for start recever, write 0 and for stop, write 1 + if (!start) + bus_w(CONFIG_REG,reg|CPU_OR_RECEIVER_BIT); + else + bus_w(CONFIG_REG,reg&(~CPU_OR_RECEIVER_BIT)); + + reg=bus_r(addr); +//#ifdef VERBOSE + printf("Config Reg %x\n", reg); +//#endif + int d =reg&CPU_OR_RECEIVER_BIT; + if(d!=0) d=1; + if(d!=start) + return OK; + else + return FAIL; +} + + +u_int64_t getDetectorNumber() { + char output[255],mac[255]=""; + u_int64_t res=0; + FILE* sysFile = popen("ifconfig eth0 | grep HWaddr | cut -d \" \" -f 11", "r"); + fgets(output, sizeof(output), sysFile); + pclose(sysFile); + //getting rid of ":" + char * pch; + pch = strtok (output,":"); + while (pch != NULL){ + strcat(mac,pch); + pch = strtok (NULL, ":"); + } + sscanf(mac,"%llx",&res); + return res; +} + +u_int32_t getFirmwareVersion() { + return bus_r(FPGA_VERSION_REG); +} + +u_int32_t getFirmwareSVNVersion(){ + return bus_r(FPGA_SVN_REG); +} + + +// for fpga test +u_int32_t testFpga(void) { + printf("Testing FPGA:\n"); + volatile u_int32_t val,addr,val2; + int result=OK,i; + //fixed pattern + val=bus_r(FIX_PATT_REG); + if (val==FIXED_PATT_VAL) { + printf("fixed pattern ok!! %08x\n",val); + } else { + printf("fixed pattern wrong!! %08x\n",val); + result=FAIL; + } + + //dummy register + addr = DUMMY_REG; + for(i=0;i<1000000;i++) + { + val=0x5A5A5A5A-i; + bus_w(addr, val); + val=bus_r(addr); + if (val!=0x5A5A5A5A-i) { + printf("ATTEMPT:%d:\tFPGA dummy register wrong!! %x instead of %x \n",i,val,0x5A5A5A5A-i); + result=FAIL; + } + val=(i+(i<<10)+(i<<20)); + bus_w(addr, val); + val2=bus_r(addr); + if (val2!=val) { + printf("ATTEMPT:%d:\tFPGA dummy register wrong!! read %x instead of %x.\n",i,val2,val); + result=FAIL; + } + val=0x0F0F0F0F; + bus_w(addr, val); + val=bus_r(addr); + if (val!=0x0F0F0F0F) { + printf("ATTEMPT:%d:\tFPGA dummy register wrong!! %x instead of 0x0F0F0F0F \n",i,val); + result=FAIL; + } + val=0xF0F0F0F0; + bus_w(addr, val); + val=bus_r(addr); + if (val!=0xF0F0F0F0) { + printf("ATTEMPT:%d:\tFPGA dummy register wrong!! %x instead of 0xF0F0F0F0 \n\n",i,val); + result=FAIL; + } + } + if(result==OK) + { + printf("----------------------------------------------------------------------------------------------"); + printf("\nATTEMPT 1000000: FPGA DUMMY REGISTER OK!!!\n"); + printf("----------------------------------------------------------------------------------------------"); + } + printf("\n"); + return result; +} + + +// for fpga test +u_int32_t testRAM(void) { + int result=OK; + int i=0; + allocateRAM(); + // while(i<100000) { + memcpy(ram_values, values, dataBytes); + printf ("Testing RAM:\t%d: copied fifo %x to memory %x size %d\n",i++, (unsigned int)(values), (unsigned int)(ram_values), dataBytes); + // } + return result; +} + +int getNModBoard() { + return nModX; +} + +int setNMod(int n) { + return nModX; +} + + +// fifo test +int testFifos(void) { + printf("Fifo test not implemented!\n"); + bus_w16(CONTROL_REG, START_FIFOTEST_BIT); + bus_w16(CONTROL_REG, 0x0); + return OK; +} + + + +// program dacq settings + +int64_t set64BitReg(int64_t value, int aLSB, int aMSB){ + int64_t v64; + u_int32_t vLSB,vMSB; + if (value!=-1) { + vLSB=value&(0xffffffff); + bus_w(aLSB,vLSB); + v64=value>> 32; + vMSB=v64&(0xffffffff); + bus_w(aMSB,vMSB); + } + return get64BitReg(aLSB, aMSB); + +} + +int64_t get64BitReg(int aLSB, int aMSB){ + int64_t v64; + u_int32_t vLSB,vMSB; + vLSB=bus_r(aLSB); + vMSB=bus_r(aMSB); + v64=vMSB; + v64=(v64<<32) | vLSB; + + printf("reg64(%x,%x) %x %x %llx\n", aLSB, aMSB, vLSB, vMSB, v64); + + return v64; +} + +int64_t setFrames(int64_t value){ + return set64BitReg(value, SET_FRAMES_LSB_REG, SET_FRAMES_MSB_REG); +} + +int64_t getFrames(){ + printf("gf"); + return get64BitReg(GET_FRAMES_LSB_REG, GET_FRAMES_MSB_REG); +} + +int64_t setExposureTime(int64_t value){ + /* time is in ns */ + if (value!=-1) + value*=(1E-9*CLK_FREQ); + return set64BitReg(value,SET_EXPTIME_LSB_REG, SET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t getExposureTime(){ + return get64BitReg(GET_EXPTIME_LSB_REG, GET_EXPTIME_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t setGates(int64_t value){ + return set64BitReg(value, SET_GATES_LSB_REG, SET_GATES_MSB_REG); +} + +int64_t getGates(){ + return get64BitReg(GET_GATES_LSB_REG, GET_GATES_MSB_REG); +} + +int64_t setPeriod(int64_t value){ + /* time is in ns */ + if (value!=-1) { + value*=(1E-9*CLK_FREQ); + } + + + + return set64BitReg(value,SET_PERIOD_LSB_REG, SET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t getPeriod(){ + return get64BitReg(GET_PERIOD_LSB_REG, GET_PERIOD_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t setDelay(int64_t value){ + /* time is in ns */ + if (value!=-1) { + value*=(1E-9*CLK_FREQ); + } + return set64BitReg(value,SET_DELAY_LSB_REG, SET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t getDelay(){ + return get64BitReg(GET_DELAY_LSB_REG, GET_DELAY_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t setTrains(int64_t value){ + return set64BitReg(value, SET_CYCLES_LSB_REG, SET_CYCLES_MSB_REG); +} + +int64_t getTrains(){ + return get64BitReg(GET_CYCLES_LSB_REG, GET_CYCLES_MSB_REG); +} + + +int64_t setProbes(int64_t value){ + return 0; +} + + +int64_t setProgress() { + + //????? eventually call after setting the registers + +return 0; + +} + + +int64_t getProgress() { + + + //should be done in firmware!!!! + + return 0; + +} + +int64_t getActualTime(){ + return get64BitReg(GET_ACTUAL_TIME_LSB_REG, GET_ACTUAL_TIME_MSB_REG)/(1E-9*CLK_FREQ); +} + +int64_t getMeasurementTime(){ + int64_t v=get64BitReg(GET_MEASUREMENT_TIME_LSB_REG, GET_MEASUREMENT_TIME_MSB_REG); + int64_t mask=0x8000000000000000; + if (v & mask ) { +#ifdef VERBOSE + printf("no measurement time left\n"); +#endif + return -1E+9; + } else + return v/(1E-9*CLK_FREQ); +} + + + + +int loadImage(int index, short int ImageVals[]){ + u_int32_t address; + switch (index) { + case DARK_IMAGE : + address = DARK_IMAGE_REG; + break; + case GAIN_IMAGE : + address = GAIN_IMAGE_REG; + break; + } + volatile u_int16_t *ptr; + ptr=(u_int16_t*)(CSP0BASE+address*2); +#ifdef VERBOSE + int i; + for(i=0;i<6;i++) + printf("%d:%d\t",i,ImageVals[i]); +#endif + memcpy(ptr,ImageVals ,dataBytes); +#ifdef VERBOSE + printf("\nLoaded x%08x address with image of index %d\n",(unsigned int)(ptr),index); +#endif + return OK; +} + + + +int64_t getProbes(){ + return 0; +} + + +int setDACRegister(int idac, int val, int imod) { + u_int32_t addr, reg, mask; + int off; +#ifdef VERBOSE + if(val==-1) + printf("Getting dac register%d module %d\n",idac,imod); + else + printf("Setting dac register %d module %d to %d\n",idac,imod,val); +#endif + + switch(idac){ + case 0: + case 1: + case 2: + addr=MOD_DACS1_REG; + break; + case 3: + case 4: + case 5: + addr=MOD_DACS2_REG; + break; + case 6: + case 7: + addr=MOD_DACS3_REG; + break; + default: + printf("weird idac value %d\n",idac); + return -1; + break; + } + //saving only the msb + val=val>>2; + + off=(idac%3)*10; + mask=~((0x3ff)<=0 && val>off)&0x3ff; + //since we saved only the msb + val=val<<2; + + //val=(bus_r(addr)>>off)&0x3ff; + + +#ifdef VERBOSE + printf("Dac %d module %d register is %d\n\n",idac,imod,val); +#endif + return val; +} + + +int getTemperature(int tempSensor, int imod){ + int val; + imod=0;//ignoring more than 1 mod for now + int i,j,repeats=6; + u_int32_t tempVal=0; +#ifdef VERBOSE + char cTempSensor[2][100]={"ADCs/ASICs","VRs/FPGAs"}; + printf("Getting Temperature of module:%d for the %s for tempsensor:%d\n",imod,cTempSensor[tempSensor],tempSensor); +#endif + bus_w(TEMP_IN_REG,(T1_CLK_BIT)|(T1_CS_BIT)|(T2_CLK_BIT)|(T2_CS_BIT));//standby + bus_w(TEMP_IN_REG,((T1_CLK_BIT)&~(T1_CS_BIT))|(T2_CLK_BIT));//high clk low cs + + for(i=0;i<20;i++) { + //repeats is number of register writes for delay + for(j=0;j>1);//fpga + } + } + + bus_w(TEMP_IN_REG,(T1_CLK_BIT)|(T1_CS_BIT)|(T2_CLK_BIT)|(T2_CS_BIT));//standby + val=((int)tempVal)/4.0; + +#ifdef VERBOSE + printf("Temperature of module:%d for the %s is %.2fC\n",imod,cTempSensor[tempSensor],val); +#endif + return val; +} + + + +int initHighVoltage(int val, int imod){ +#ifdef VERBOSE + printf("Setting/Getting High Voltage of module:%d with val:%d\n",imod,val); +#endif + volatile u_int32_t addr=HV_REG; + int writeVal,writeVal2; + switch(val){ + case -1: break; + case 0: writeVal=0x0; writeVal2=0x0; break; + case 90: writeVal=0x0; writeVal2=0x1; break; + case 110:writeVal=0x2; writeVal2=0x3; break; + case 120:writeVal=0x4; writeVal2=0x5; break; + case 150:writeVal=0x6; writeVal2=0x7; break; + case 180:writeVal=0x8; writeVal2=0x9; break; + case 200:writeVal=0xA; writeVal2=0xB; break; + default :printf("Invalid voltage\n");return -2;break; + } + //to set value + if(val!=-1){ + //set value to converted value + bus_w(addr,writeVal); + bus_w(addr,writeVal2); +#ifdef VERBOSE + printf("Value sent is %d and then %d\n",writeVal,writeVal2); +#endif + } + //read value and return the converted value + val=bus_r(addr); +#ifdef VERBOSE + printf("Value read from reg is %d\n",val); +#endif + switch(val){ + case 0x0:val=0;break; + case 0x1:val=90;break; + case 0x3:val=110;break; + case 0x5:val=120;break; + case 0x7:val=150;break; + case 0x9:val=180;break; + case 0xB:val=200;break; + default:printf("Weird value read:%d\n",val);return -3;break; + } +#ifdef VERBOSE + printf("High voltage of module:%d is %d\n",imod,val); +#endif + return val; +} + + + +int initConfGain(int isettings,int val,int imod){ + int retval; + u_int32_t addr=GAIN_REG; + + if(val!=-1){ +#ifdef VERBOSE + printf("Setting Gain of module:%d with val:%d\n",imod,val); +#endif + bus_w(addr,((val<>SETTINGS_OFFSET); +#ifdef VERBOSE + printf("Settings read from reg is %d\n",retval); +#endif + if((isettings!=-1)&&(retval!=isettings)){ + printf("\n\nSettings r\n\n"); + return -1; + } + + return retval; +} + + + +int setADC(int adc){ + int reg,nchips,mask,nchans; + + if(adc==-1) ROI_flag=0; + else ROI_flag=1; + + setDAQRegister();//token timing + cleanFifo();//adc sync + + //with gotthard module + if(withGotthard){ + //set packet size + ipPacketSize= DEFAULT_IP_PACKETSIZE; + udpPacketSize=DEFAULT_UDP_PACKETSIZE; + //set channel mask + nchips = GOTTHARDNCHIP; + nchans = GOTTHARDNCHAN; + mask = ACTIVE_ADC_MASK; + } + + //with moench module all adc + else{/* if(adc==-1){*/ + //set packet size + ipPacketSize= DEFAULT_IP_PACKETSIZE; + udpPacketSize=DEFAULT_UDP_PACKETSIZE; + //set channel mask + nchips = NCHIP; + nchans = NCHANS; + mask = ACTIVE_ADC_MASK; + }/* + //with moench module 1 adc -- NOT IMPLEMENTED + else{ + ipPacketSize= ADC1_IP_PACKETSIZE; + udpPacketSize=ADC1_UDP_PACKETSIZE; + //set channel mask + nchips = NCHIPS_PER_ADC; + nchans = GOTTHARDNCHAN; + mask = 1<mac.mac_dest_mac1 =((macad>>(8*5))&0xFF);// 0x00; //pc7060 + mac_conf_regs->mac.mac_dest_mac2 =((macad>>(8*4))&0xFF);// 0x19; //pc7060 + mac_conf_regs->mac.mac_dest_mac3 =((macad>>(8*3))&0xFF);// 0x99; //pc7060 + mac_conf_regs->mac.mac_dest_mac4 =((macad>>(8*2))&0xFF);// 0x24; //pc7060 + mac_conf_regs->mac.mac_dest_mac5 =((macad>>(8*1))&0xFF);// 0xEB; //pc7060 + mac_conf_regs->mac.mac_dest_mac6 =((macad>>(8*0))&0xFF);// 0xEE; //pc7060 + + /* + mac_conf_regs->mac.mac_src_mac1 = 0x00; + mac_conf_regs->mac.mac_src_mac2 = 0xAA; + mac_conf_regs->mac.mac_src_mac3 = 0xBB; + mac_conf_regs->mac.mac_src_mac4 = 0xCC; + mac_conf_regs->mac.mac_src_mac5 = 0xDD; + mac_conf_regs->mac.mac_src_mac6 = 0xEE; + */ + mac_conf_regs->mac.mac_src_mac1 =((detectormacad>>(8*5))&0xFF); + mac_conf_regs->mac.mac_src_mac2 =((detectormacad>>(8*4))&0xFF); + mac_conf_regs->mac.mac_src_mac3 =((detectormacad>>(8*3))&0xFF); + mac_conf_regs->mac.mac_src_mac4 =((detectormacad>>(8*2))&0xFF); + mac_conf_regs->mac.mac_src_mac5 =((detectormacad>>(8*1))&0xFF); + mac_conf_regs->mac.mac_src_mac6 =((detectormacad>>(8*0))&0xFF); + mac_conf_regs->mac.mac_ether_type = 0x0800; //ipv4 + + + + mac_conf_regs->ip.ip_ver = 0x4; + mac_conf_regs->ip.ip_ihl = 0x5; + mac_conf_regs->ip.ip_tos = 0x0; + mac_conf_regs->ip.ip_len = ipPacketSize;//0x0522; // was 0x0526; + mac_conf_regs->ip.ip_ident = 0x0000; + mac_conf_regs->ip.ip_flag = 0x2; + mac_conf_regs->ip.ip_offset = 0x00; + mac_conf_regs->ip.ip_ttl = 0x70; + mac_conf_regs->ip.ip_protocol = 0x11; + mac_conf_regs->ip.ip_chksum = 0x0000 ; //6E42 now is automatically computed + mac_conf_regs->ip.ip_sourceip = detipad; //0x8181CA2E;129.129.202.46 + mac_conf_regs->ip.ip_destip = ipad; //CA57 + + //#ifdef VERBOSE + printf("mac_dest:%llx %x:%x:%x:%x:%x:%x\n", + macad, + mac_conf_regs->mac.mac_dest_mac1, + mac_conf_regs->mac.mac_dest_mac2, + mac_conf_regs->mac.mac_dest_mac3, + mac_conf_regs->mac.mac_dest_mac4, + mac_conf_regs->mac.mac_dest_mac5, + mac_conf_regs->mac.mac_dest_mac6); + printf("mac_src:%llx %x:%x:%x:%x:%x:%x\n", + detectormacad, + mac_conf_regs->mac.mac_src_mac1, + mac_conf_regs->mac.mac_src_mac2, + mac_conf_regs->mac.mac_src_mac3, + mac_conf_regs->mac.mac_src_mac4, + mac_conf_regs->mac.mac_src_mac5, + mac_conf_regs->mac.mac_src_mac6); + printf("ip_ttl:%x\n",mac_conf_regs->ip.ip_ttl); + printf("det_ip: %x %x\n",detipad, mac_conf_regs->ip.ip_sourceip); + printf("dest_ip: %x %x\n",ipad, mac_conf_regs->ip.ip_destip); + + //#endif + + //checksum + count=sizeof(mac_conf_regs->ip); + addr=&(mac_conf_regs->ip); + while( count > 1 ) { + sum += *addr++; + count -= 2; + } + if( count > 0 ) sum += *addr; // Add left-over byte, if any + while (sum>>16) sum = (sum & 0xffff) + (sum >> 16);// Fold 32-bit sum to 16 bits + checksum = (~sum)&0xffff; + mac_conf_regs->ip.ip_chksum = checksum; + //#ifdef VERBOSE + printf("IP header checksum is 0x%x s\n",(unsigned int)(checksum)); + //#endif + + mac_conf_regs->udp.udp_srcport = 0xE185; + mac_conf_regs->udp.udp_destport = udpport;//0xC351; + mac_conf_regs->udp.udp_len = udpPacketSize;//0x050E; //was 0x0512; + mac_conf_regs->udp.udp_chksum = 0x0000; + +#ifdef VERBOSE + printf("Configuring TSE\n"); +#endif + tse_conf_regs->rev = 0xA00; + tse_conf_regs->scratch = 0xCCCCCCCC; + tse_conf_regs->command_config = 0xB; + tse_conf_regs->mac_0 = 0x17231C00; + tse_conf_regs->mac_1 = 0xCB4A; + tse_conf_regs->frm_length = 0x5DC; //max frame length (1500 bytes) (was 0x41C) + tse_conf_regs->pause_quant = 0x0; + tse_conf_regs->rx_section_empty = 0x7F0; + tse_conf_regs->rx_section_full = 0x10; + tse_conf_regs->tx_section_empty = 0x3F8; //was 0x7F0; + tse_conf_regs->tx_section_full = 0x16; + tse_conf_regs->rx_almost_empty = 0x8; + tse_conf_regs->rx_almost_full = 0x8; + tse_conf_regs->tx_almost_empty = 0x8; + tse_conf_regs->tx_almost_full = 0x3; + tse_conf_regs->mdio_addr0 = 0x12; + tse_conf_regs->mdio_addr1 = 0x0; + + mac_conf_regs->cdone = 0xFFFFFFFF; + + + if(ival) + bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|WRITE_BACK_BIT|DIGITAL_TEST_BIT)); //0x2840,write shadow regs.. + else + bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|WRITE_BACK_BIT)); //0x2840,write shadow regs.. + + val=bus_r(addrr); +#ifdef VERBOSE + printf("Value read from Multi-purpose Reg:%x\n",val); +#endif + // if(val!=0x2840) return -1; + + usleep(100000); + + if(ival) + bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT|DIGITAL_TEST_BIT)); //0x2820,write shadow regs.. + else + bus_w(addrr,(INT_RSTN_BIT|ENET_RESETN_BIT|SW1_BIT)); //0x2820,write shadow regs.. + + val=bus_r(addrr); +#ifdef VERBOSE + printf("Value read from Multi-purpose Reg:%x\n",val); +#endif + // if(val!=0x2820) return -1; + + + + + return adcConfigured; +} + + +int getAdcConfigured(){ + return adcConfigured; +} + +u_int32_t runBusy(void) { + u_int32_t s = bus_r(STATUS_REG) & 1; +#ifdef VERBOSE + printf("status %04x\n",s); +#endif + return s; +} + +u_int32_t dataPresent(void) { + return bus_r(LOOK_AT_ME_REG); +} + +u_int32_t runState(void) { + int s=bus_r(STATUS_REG); +#ifdef SHAREDMEMORY + if (s&RUN_BUSY_BIT) + write_status_sm("Running"); + else + write_status_sm("Stopped"); +#endif +#ifdef VERBOSE + printf("status %04x\n",s); +#endif + +/* if (s==0x62001) + exit(-1);*/ + return s; +} + + +// State Machine + +int startStateMachine(){ +int i; +//#ifdef VERBOSE + printf("*******Starting State Machine*******\n"); +//#endif + cleanFifo(); + // fifoReset(); + now_ptr=(char*)ram_values; +#ifdef SHAREDMEMORY + write_stop_sm(0); + write_status_sm("Started"); +#endif + + + for(i=0;i<100;i++){ + //start state machine + bus_w16(CONTROL_REG, START_ACQ_BIT | START_EXPOSURE_BIT); + bus_w16(CONTROL_REG, 0x0); + //verify + if(bus_r(STATUS_REG) & RUN_BUSY_BIT) + break; + else + usleep(5000); + } + if(i!=0) + printf("tried to start state machine %d times\n",i); + if(i==100){ + printf("\n***********COULD NOT START STATE MACHINE***************\n"); + return FAIL; + } + + printf("statusreg=%08x\n",bus_r(STATUS_REG)); + return OK; +} + + + + +int stopStateMachine(){ + int i; +//#ifdef VERBOSE + printf("*******Stopping State Machine*******\n"); +//#endif +#ifdef SHAREDMEMORY + write_stop_sm(1); + write_status_sm("Stopped"); +#endif + for(i=0;i<100;i++){ + //stop state machine + bus_w16(CONTROL_REG, STOP_ACQ_BIT); + bus_w16(CONTROL_REG, 0x0); + usleep(5000); + //verify + if(!(bus_r(STATUS_REG)&RUNMACHINE_BUSY_BIT)) + break; + } + if(i!=0) + printf("tried to stop state machine %d times\n",i); + if(i==100){ + printf("\n***********COULD NOT STOP STATE MACHINE***************\n"); + return FAIL; + } + +/* + usleep(5000); + // if (!runBusy()) + if(!(bus_r(STATUS_REG)&RUNMACHINE_BUSY_BIT)) + return OK; + else + return FAIL; + */ + printf("statusreg=%08x\n",bus_r(STATUS_REG)); + return OK; +} + + +int startReadOut(){ + u_int32_t status; +#ifdef VERBOSE + printf("Starting State Machine Readout\n"); +#endif + status=bus_r(STATUS_REG)&RUN_BUSY_BIT; +#ifdef DEBUG + printf("State machine status is %08x\n",bus_r(STATUS_REG)); +#endif + bus_w16(CONTROL_REG, START_ACQ_BIT |START_READOUT_BIT); // start readout + bus_w16(CONTROL_REG, 0x0); + return OK; +} + + +// fifo routines + +u_int32_t fifoReset(void) { + return -1; +} + + +u_int32_t setNBits(u_int32_t n) { + return -1; +} + +u_int32_t getNBits(){ + return -1; +} + + +u_int32_t fifoReadCounter(int fifonum){ + return -1; +} + +u_int32_t fifoReadStatus() +{ + // reads from the global status register + + return bus_r(STATUS_REG)&(SOME_FIFO_FULL_BIT | ALL_FIFO_EMPTY_BIT); +} + +u_int32_t fifo_full(void) +{ + // checks fifo empty flag returns 1 if fifo is empty + // otherwise 0 + return bus_r(STATUS_REG)&SOME_FIFO_FULL_BIT; +} + + +u_int32_t* fifo_read_event() +{ + + int i=0; + +#ifdef VIRTUAL + return NULL; +#endif + +#ifdef VERBOSE + printf("before looping\n"); +#endif + volatile u_int32_t t = bus_r(LOOK_AT_ME_REG); + +#ifdef VERBOSE + printf("lookatmereg=x%x\n",t); +#endif +/* + while ((t&0x1)==0) + { + t = bus_r(LOOK_AT_ME_REG); + if (!runBusy()){ + return NULL; + } + } +*/ + + while((t&0x1)==0) { +#ifdef VERYVERBOSE + printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); +#endif +#ifdef VERYVERBOSE + printf("look at me reg:%08x\n",bus_r(LOOK_AT_ME_REG)); +#endif + if (runBusy()==0) { + t = bus_r(LOOK_AT_ME_REG); +#ifdef VERYVERBOSE + printf("status should be idle!..look at me reg:%08x\n",bus_r(LOOK_AT_ME_REG)); +#endif + if ((t&0x1)==0) { +#ifdef VERBOSE + printf("no frame found - exiting\n"); + printf("%08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); +#endif +#ifdef VERYVERBOSE + printf("returning null\n"); +#endif + printf("lookatmereg=x%x\n",t); + return NULL; + } else { +#ifdef VERBOSE + printf("no frame found %x status %x\n", bus_r(LOOK_AT_ME_REG),runState()); +#endif + break; + } + } + t = bus_r(LOOK_AT_ME_REG); +#ifdef VERYVERBOSE + printf("before starting while loop again: look at me reg:%08x\n\n",bus_r(LOOK_AT_ME_REG)); +#endif + if (i%1000==0) + printf("%08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); + i++; + } +#ifdef VERYVERBOSE + printf(" out of while loop!\n"); +#endif +#ifdef VERYVERBOSE + printf("before readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); +#endif + + dma_memcpy(now_ptr,values ,dataBytes); + + +#ifdef VERYVERBOSE + int a; + for (a=0;a<8; a=a+2) + printf("\n%d %d: x%04x x%04x ",a+1,a,*(now_ptr+a+1),*(now_ptr+a) ); + for (a=2554;a<2560; a=a+2) + printf("\n%d %d: x%04x x%04x ",a+1,a,*(now_ptr+a+1),*(now_ptr+a) ); + printf("********\n"); + //memcpy(now_ptr, values, dataBytes); +#endif +#ifdef VERYVERBOSE + printf("Copying to ptr %08x %d\n",(unsigned int)(now_ptr), dataBytes); + printf("after readout %08x %08x\n", runState(), bus_r(LOOK_AT_ME_REG)); +#endif + + if (storeInRAM>0) { + now_ptr+=dataBytes; + } + printf("lookatmereg=x%x\n",t); + return ram_values; +} + + + +u_int32_t* decode_data(int *datain) +{ + u_int32_t *dataout; + // const char one=1; + const int bytesize=8; + char *ptr=(char*)datain; + //int nbits=dynamicRange; + int ipos=0, ichan=0;; + //int nch, boff=0; + int ibyte;//, ibit; + char iptr; + +#ifdef VERBOSE + printf("Decoding data for DR %d\n",dynamicRange); +#endif + dataout=malloc(nChans*nChips*nModX*4); + ichan=0; + switch (dynamicRange) { + case 1: + for (ibyte=0; ibyte>(ipos))&0x1; + ichan++; + } + } + break; + case 4: + for (ibyte=0; ibyte>(ipos*4))&0xf; + ichan++; + } + } + break; + case 8: + for (ichan=0; ichan0) + storeInRAM=1; + else + storeInRAM=0; + return allocateRAM(); +} + + +int allocateRAM() { + size_t size; + u_int32_t nt, nf; + nt=setTrains(-1); + nf=setFrames(-1); + if (nt==0) nt=1; + if (nf==0) nf=1; + // ret=clearRAM(); + if (storeInRAM) { + size=dataBytes*nf*nt; + if (size>(23-i))&0x1)<> 8); + // printf("%i: %i %i\n",a, frame[a],v); + avg[a] += ((double)frame[a])/(double)frames; + //if(frame[a] == 8191) + // printf("ch %i: %u\n",a,frame[a]); + } + // printf("********\n"); + numberFrames++; + } + + //no more data or no data + else { + if(getFrames()>-2) { + dataret=FAIL; + printf("no data and run stopped: %d frames left\n",(int)(getFrames()+2)); + + } else { + dataret=FINISHED; + printf("acquisition successfully finished\n"); + + } + printf("dataret %d\n",dataret); + } + } + + + + double nf = (double)numberFrames; + for(i =0; i < 1280; i++){ + adc = i / 256; + adcCh = (i - adc * 256) / 32; + Ch = i - adc * 256 - adcCh * 32; + adc--; + double v2 = avg[i]; + avg[i] = avg[i]/ ((double)numberFrames/(double)frames); + unsigned short v = (unsigned short)avg[i]; + printf("setting avg for channel %i(%i,%i,%i): %i (double= %f (%f))\t", i,adc,adcCh,Ch, v,avg[i],v2); + v=i*100; + ram_w16(DARK_IMAGE_REG,adc,adcCh,Ch,v-4096); + if(ram_r16(DARK_IMAGE_REG,adc,adcCh,Ch) != v-4096){ + printf("value is wrong (%i,%i,%i): %i \n",adc,adcCh,Ch, ram_r16(DARK_IMAGE_REG,adc,adcCh,Ch)); + } + } + + /*for(adc = 1; adc < 5; adc++){ + for(adcCh = 0; adcCh < 8; adcCh++){ + for(Ch=0 ; Ch < 32; Ch++){ + int channel = (adc+1) * 32 * 8 + adcCh * 32 + Ch; + double v2 = avg[channel]; + avg[channel] = avg[channel]/ ((double)numberFrames/(double)frames); + unsigned short v = (unsigned short)avg[channel]; + printf("setting avg for channel %i: %i (double= %f (%f))\t", channel, v,avg[channel],v2); + ram_w16(DARK_IMAGE_REG,adc,adcCh,Ch,v-4096); + if(ram_r16(DARK_IMAGE_REG,adc,adcCh,Ch) != v-4096){ + printf("value is wrong (%i,%i,%i): %i \n",adc,adcCh,Ch, ram_r16(DARK_IMAGE_REG,adc,adcCh,Ch)); + } + } + } + }*/ + + + + printf("frames: %i\n",numberFrames); + printf("corrected avg by: %f\n",(double)numberFrames/(double)frames); + + printf("restoring previous condition\n"); + setFrames(framesBefore); + setPeriod(periodBefore); + + printf("---------------------------\n"); + return 0; +} + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h new file mode 100755 index 000000000..48918e428 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h @@ -0,0 +1,179 @@ +#ifndef FIRMWARE_FUNCS_H +#define FIRMWARE_FUNCS_H + + +#include "sls_detector_defs.h" + + +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include + + +int mapCSP0(void); + +u_int16_t bus_r16(u_int32_t offset); +u_int16_t bus_w16(u_int32_t offset, u_int16_t data);//aldos function +u_int32_t bus_w(u_int32_t offset, u_int32_t data); +u_int32_t bus_r(u_int32_t offset); + +int setPhaseShiftOnce(); +int phaseStep(int st); +int cleanFifo(); +int setDAQRegister(); + +u_int32_t putout(char *s, int modnum); +u_int32_t readin(int modnum); +u_int32_t setClockDivider(int d); +u_int32_t getClockDivider(); +u_int32_t setSetLength(int d); +u_int32_t getSetLength(); +u_int32_t setWaitStates(int d); +u_int32_t getWaitStates(); +u_int32_t setTotClockDivider(int d); +u_int32_t getTotClockDivider(); +u_int32_t setTotDutyCycle(int d); +u_int32_t getTotDutyCycle(); +u_int32_t setOversampling(int d); + +u_int32_t setExtSignal(int d, enum externalSignalFlag mode); +int getExtSignal(int d); + +u_int32_t setFPGASignal(int d, enum externalSignalFlag mode); +int getFPGASignal(int d); + +int setTiming(int t); + + +int setConfigurationRegister(int d); +int setToT(int d); +int setContinousReadOut(int d); +int startReceiver(int d); + +int setDACRegister(int idac, int val, int imod); + +int getTemperature(int tempSensor,int imod); +int initHighVoltage(int val,int imod); +int initConfGain(int isettings,int val,int imod); + +int setADC(int adc); +int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int ival, int udpport); +int getAdcConfigured(); + + +u_int64_t getDetectorNumber(); +u_int32_t getFirmwareVersion(); +int testFifos(void); +u_int32_t testFpga(void); +u_int32_t testRAM(void); +int testBus(void); +int setDigitalTestBit(int ival); + +int64_t set64BitReg(int64_t value, int aLSB, int aMSB); +int64_t get64BitReg(int aLSB, int aMSB); + +int64_t setFrames(int64_t value); +int64_t getFrames(); + +int64_t setExposureTime(int64_t value); +int64_t getExposureTime(); + +int64_t setGates(int64_t value); +int64_t getGates(); + +int64_t setDelay(int64_t value); +int64_t getDelay(); + +int64_t setPeriod(int64_t value); +int64_t getPeriod(); + +int64_t setTrains(int64_t value); +int64_t getTrains(); + +int64_t setProbes(int64_t value); +int64_t getProbes(); + +int64_t getProgress(); +int64_t setProgress(); + +int64_t getActualTime(); +int64_t getMeasurementTime(); + + +u_int32_t runBusy(void); +u_int32_t runState(void); +u_int32_t dataPresent(void); + + +int startStateMachine(); +int stopStateMachine(); +int startReadOut(); +u_int32_t fifoReset(void); +u_int32_t fifoReadCounter(int fifonum); +u_int32_t fifoReadStatus(); + + +u_int32_t fifo_full(void); + + + +u_int32_t* fifo_read_event(); +u_int32_t* decode_data(int* datain); +//u_int32_t move_data(u_int64_t* datain, u_int64_t* dataout); +int setDynamicRange(int dr); +int getDynamicRange(); +int getNModBoard(); +int setNMod(int n); +int setStoreInRAM(int b); +int allocateRAM(); +int clearRAM(); + + +int setMaster(int f); +int setSynchronization(int s); + +int loadImage(int index, short int ImageVals[]); +int readCounterBlock(int startACQ, short int CounterVals[]); +int resetCounterBlock(int startACQ); + +int calibratePedestal(int frames); + + + +/* + +u_int32_t setNBits(u_int32_t); +u_int32_t getNBits(); +*/ + +/* +//move to mcb_funcs? + +int readOutChan(int *val); +u_int32_t getModuleNumber(int modnum); +int testShiftIn(int imod); +int testShiftOut(int imod); +int testShiftStSel(int imod); +int testDataInOut(int num, int imod); +int testExtPulse(int imod); +int testExtPulseMux(int imod, int ow); +int testDataInOutMux(int imod, int ow, int num); +int testOutMux(int imod); +int testFpgaMux(int imod); +int calibration_sensor(int num, int *values, int *dacs) ; +int calibration_chip(int num, int *values, int *dacs); +*/ + + +#endif diff --git a/slsDetectorSoftware/jungfrauDetectorServer/gitInfo.txt b/slsDetectorSoftware/jungfrauDetectorServer/gitInfo.txt new file mode 100644 index 000000000..921890a70 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/gitInfo.txt @@ -0,0 +1,9 @@ +Path: slsDetectorsPackage/slsDetectorSoftware/moenchDetectorServer +URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/moenchDetectorServer +Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git +Repsitory UUID: 046a469b1e6582c4c55bd6eaeb4818b618d0a9a9 +Revision: 55 +Branch: separate_receiver +Last Changed Author: Maliakal_Dhanya +Last Changed Rev: 14 +Last Changed Date: 2014-06-03 12:26:45 +0200 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoench.h b/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoench.h new file mode 100644 index 000000000..270653967 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoench.h @@ -0,0 +1,11 @@ +//#define SVNPATH "" +#define SVNURL "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/moenchDetectorServer" +//#define SVNREPPATH "" +#define SVNREPUUID "046a469b1e6582c4c55bd6eaeb4818b618d0a9a9" +//#define SVNREV 0x14 +//#define SVNKIND "" +//#define SVNSCHED "" +#define SVNAUTH "Maliakal_Dhanya" +#define SVNREV 0x14 +#define SVNDATE 0x20140603 +// diff --git a/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoenchTmp.h b/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoenchTmp.h new file mode 100644 index 000000000..58e48f497 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/gitInfoMoenchTmp.h @@ -0,0 +1,11 @@ +//#define SVNPATH "" +#define SVNURL "" +//#define SVNREPPATH "" +#define SVNREPUUID "" +//#define SVNREV "" +//#define SVNKIND "" +//#define SVNSCHED "" +#define SVNAUTH "" +#define SVNREV "" +#define SVNDATE "" +// diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer new file mode 100755 index 0000000000000000000000000000000000000000..3e613e2463a7e32661fa92dbc0d1ead3f4a181db GIT binary patch literal 132672 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

PCy{!&)@aa%Ns~t}5L1mB+#{tlC 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

f-}b9C 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�$jV$9+ANPA9V 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�Iy@g#!uhC)L)tqp6MQpC^4Xb%Nx5yz3 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 literal 0 HcmV?d00001 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c new file mode 100755 index 000000000..88cd7a138 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/mcb_funcs.c @@ -0,0 +1,2649 @@ +#ifdef MCB_FUNCS + +#include +#include +#include +#include +#include +#include "registers_m.h" + +#ifndef PICASSOD +#include "server_defs.h" +#else +#include "picasso_defs.h" +#endif +#include "firmware_funcs.h" +#include "mcb_funcs.h" + + +/* global variables */ +#undef DEBUG +#undef DEBUGOUT + +extern int nModX; +//extern int dataBytes; +extern int dynamicRange; +const int nChans=NCHAN; +const int nChips=NCHIP; +const int nDacs=NDAC; +const int nAdcs=NADC; +enum detectorSettings thisSettings; + +int sChan, sChip, sMod, sDac, sAdc; +const int allSelected=-2; +const int noneSelected=-1; + + +sls_detector_module *detectorModules=NULL; +int *detectorChips=NULL; +int *detectorChans=NULL; +int *detectorDacs=NULL; +int *detectorAdcs=NULL; +//int numberOfProbes; + +ROI rois[MAX_ROIS]; +int nROI=0; + + +int initDetector() { + + int imod; + // sls_detector_module *myModule; + int n=getNModBoard(); + nModX=n; + +#ifdef VERBOSE + printf("Board is for %d modules\n",n); +#endif + detectorModules=malloc(n*sizeof(sls_detector_module)); + detectorChips=malloc(n*NCHIP*sizeof(int)); + detectorChans=malloc(n*NCHIP*NCHAN*sizeof(int)); + detectorDacs=malloc(n*NDAC*sizeof(int)); + detectorAdcs=malloc(n*NADC*sizeof(int)); +#ifdef VERBOSE + printf("modules from 0x%x to 0x%x\n",(unsigned int)(detectorModules), (unsigned int)(detectorModules+n)); + printf("chips from 0x%x to 0x%x\n",(unsigned int)(detectorChips), (unsigned int)(detectorChips+n*NCHIP)); + printf("chans from 0x%x to 0x%x\n",(unsigned int)(detectorChans), (unsigned int)(detectorChans+n*NCHIP*NCHAN)); + printf("dacs from 0x%x to 0x%x\n",(unsigned int)(detectorDacs), (unsigned int)(detectorDacs+n*NDAC)); + printf("adcs from 0x%x to 0x%x\n",(unsigned int)(detectorAdcs), (unsigned int)(detectorAdcs+n*NADC)); +#endif + for (imod=0; imoddacs=detectorDacs+imod*NDAC; + (detectorModules+imod)->adcs=detectorAdcs+imod*NADC; + (detectorModules+imod)->chipregs=detectorChips+imod*NCHIP; + (detectorModules+imod)->chanregs=detectorChans+imod*NCHIP*NCHAN; + (detectorModules+imod)->ndac=NDAC; + (detectorModules+imod)->nadc=NADC; + (detectorModules+imod)->nchip=NCHIP; + (detectorModules+imod)->nchan=NCHIP*NCHAN; + (detectorModules+imod)->module=imod; + (detectorModules+imod)->gain=0; + (detectorModules+imod)->offset=0; + (detectorModules+imod)->reg=0; + /* initialize registers, dacs, retrieve sn, adc values etc */ + } + thisSettings=UNINITIALIZED; + sChan=noneSelected; + sChip=noneSelected; + sMod=noneSelected; + sDac=noneSelected; + sAdc=noneSelected; + + /* + setCSregister(ALLMOD); //commented out by dhanya + setSSregister(ALLMOD); + counterClear(ALLMOD); + clearSSregister(ALLMOD); + putout("0000000000000000",ALLMOD); + */ + + /* initialize dynamic range etc. */ + /* dynamicRange=getDynamicRange(); //always 16 not required commented out + nModX=setNMod(-1);*/ + + //dataBytes=nModX*NCHIP*NCHAN*4; + // dynamicRange=32; + // initChip(0, 0,ALLMOD); + //nModX=n; + // + allocateRAM(); + + + return OK; +} + + + + +int copyChannel(sls_detector_channel *destChan, sls_detector_channel *srcChan) { + destChan->chan=srcChan->chan; + destChan->chip=srcChan->chip; + destChan->module=srcChan->module; + destChan->reg=srcChan->reg; + return OK; +} + + +int copyChip(sls_detector_chip *destChip, sls_detector_chip *srcChip) { + + int ichan; + int ret=OK; + if ((srcChip->nchan)>(destChip->nchan)) { + printf("Number of channels of source is larger than number of channels of destination\n"); + return FAIL; + } + + destChip->nchan=srcChip->nchan; + destChip->reg=srcChip->reg; + destChip->chip=srcChip->chip; + destChip->module=srcChip->module; + for (ichan=0; ichan<(srcChip->nchan); ichan++) { + *((destChip->chanregs)+ichan)=*((srcChip->chanregs)+ichan); + } + return ret; +} + + +int copyModule(sls_detector_module *destMod, sls_detector_module *srcMod) { + + int ichip, idac, ichan, iadc; + + int ret=OK; + +#ifdef VERBOSE + printf("Copying module %x to module %x\n",(unsigned int)(srcMod),(unsigned int)(destMod)); +#endif + + if (srcMod->module>=0) { +#ifdef VERBOSE + printf("Copying module number %d to module number %d\n",srcMod->module,destMod->module); +#endif + destMod->module=srcMod->module; + } + if (srcMod->serialnumber>=0){ +/* #ifdef VERBOSE */ +/* printf("Copying module serial number %x to module serial number %x\n",srcMod->serialnumber,destMod->serialnumber); */ +/* #endif */ + destMod->serialnumber=srcMod->serialnumber; + } + if ((srcMod->nchip)>(destMod->nchip)) { + printf("Number of chip of source is larger than number of chips of destination\n"); + return FAIL; + } + if ((srcMod->nchan)>(destMod->nchan)) { + printf("Number of channels of source is larger than number of channels of destination\n"); + return FAIL; + } + if ((srcMod->ndac)>(destMod->ndac)) { + printf("Number of dacs of source is larger than number of dacs of destination\n"); + return FAIL; + } + if ((srcMod->nadc)>(destMod->nadc)) { + printf("Number of dacs of source is larger than number of dacs of destination\n"); + return FAIL; + } + +#ifdef VERBOSE + printf("DACs: src %d, dest %d\n",srcMod->ndac,destMod->ndac); + printf("ADCs: src %d, dest %d\n",srcMod->nadc,destMod->nadc); + printf("Chips: src %d, dest %d\n",srcMod->nchip,destMod->nchip); + printf("Chans: src %d, dest %d\n",srcMod->nchan,destMod->nchan); + +#endif + + + + destMod->ndac=srcMod->ndac; + destMod->nadc=srcMod->nadc; + destMod->nchip=srcMod->nchip; + destMod->nchan=srcMod->nchan; + if (srcMod->reg>=0) + destMod->reg=srcMod->reg; +#ifdef VERBOSE + printf("Copying register %x (%x)\n",destMod->reg,srcMod->reg ); +#endif + if (srcMod->gain>=0) + destMod->gain=srcMod->gain; + if (srcMod->offset>=0) + destMod->offset=srcMod->offset; + + // printf("copying gain and offset %f %f to %f %f\n",srcMod->gain,srcMod->offset,destMod->gain,destMod->offset); + + for (ichip=0; ichip<(srcMod->nchip); ichip++) { + if (*((srcMod->chipregs)+ichip)>=0) + *((destMod->chipregs)+ichip)=*((srcMod->chipregs)+ichip); + } + for (ichan=0; ichan<(srcMod->nchan); ichan++) { + if (*((srcMod->chanregs)+ichan)>=0) + *((destMod->chanregs)+ichan)=*((srcMod->chanregs)+ichan); + } + for (idac=0; idac<(srcMod->ndac); idac++) { + if (*((srcMod->dacs)+idac)>=0) + *((destMod->dacs)+idac)=*((srcMod->dacs)+idac); + } + for (iadc=0; iadc<(srcMod->nadc); iadc++) { + if (*((srcMod->adcs)+iadc)>=0) + *((destMod->adcs)+iadc)=*((srcMod->adcs)+iadc); + } + return ret; +} + + + +/* Register commands */ + + +int clearDACSregister(int imod) { + + putout("1111111111111111",imod);//reset + putout("1111111111111110",imod);//cs down + + /* commented out by dhanya + putout("0000000001000000",imod); + putout("0000000101000000",imod); + putout("0000000101000000",imod); + putout("0000000001000000",imod); + */ +#ifdef DEBUG + fprintf(stdout, "Clearing DAC shiftregister\n"); +#endif + // sDac=0; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return OK; +} + +int nextDAC(int imod) { + + putout("1111111111111011",imod);//cs up + putout("1111111111111001",imod);//clk down + putout("1111111111111111",imod);//reset + + /*commented out by dhanya + putout("0000000001000000",imod); + putout("0000000001001000",imod); + putout("0000000001000000",imod); + */ +#ifdef DEBUG + fprintf(stdout, "Next DAC\n"); +#endif + // sDac++; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return OK; +} + + +int clearCSregister(int imod) { + + putout("0000000001000000",imod); + putout("0000100001000000",imod); + putout("0000100001000000",imod); + putout("0000000001000000",imod); +#ifdef DEBUG + fprintf(stdout, "Clearing CS shiftregister\n"); +#endif + /* + sChan=noneSelected; + sMod=noneSelected; + sDac=noneSelected; + sAdc=noneSelected; + */ + sChip=noneSelected; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + //putout("0000000000000000",imod); + return 0; +} + +int setCSregister(int imod){ + + putout("0000000001000000",imod); + putout("0001000001000000",imod); + putout("0001000001000000",imod); + putout("0000000001000000",imod); +#ifdef DEBUG + fprintf(stdout, "Setting CS shiftregister\n"); +#endif + putout("0000000000000000",imod); + sChip=allSelected; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int nextChip(int imod){ + + putout("0000000001000000",imod); + putout("0010000001000000",imod); + putout("0000000001000000",imod); +#ifdef DEBUG + fprintf(stdout, "Next Chip\n"); +#endif + sChip++; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int firstChip(int imod){ + + putout("0100000001000000",imod); + putout("0110000001000000",imod); + putout("0100000001000000",imod); +#ifdef DEBUG + fprintf(stdout, "First Chip\n"); +#endif + sChip=0; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int clearSSregister(int imod){ + int i; + putout("0000011000000000",imod); + for (i=0; i<10; i++) + putout("0000111000000000",imod); + putout("0000011000000000",imod); +#ifdef DEBUG + fprintf(stdout,"Clearing SS shiftregister\n"); +#endif + putout("0000000000000000",imod); + sChan=noneSelected; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int setSSregister(int imod){ + int i; + putout("0000011000000000",imod); + for (i=0; i<10; i++) + putout("0001011000000000",imod); + putout("0000011000000000",imod); +#ifdef DEBUG + fprintf(stdout,"Setting SS shiftregister\n"); +#endif + putout("0000000000000000",imod); + sChan=allSelected; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int nextStrip(int imod){ + putout("0000011000000000",imod); + putout("0010011000000000",imod); + putout("0000011000000000",imod); +#ifdef DEBUG + fprintf(stdout,"|-"); +#endif + sChan++; + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + return 0; +} + +int selChannel(const int strip,int imod) { + int istrip; + clearSSregister(imod); + nextStrip(imod); + for (istrip=0; istrip=0 && imod=0) + initDAC(ind,val, imod); + + if (imod>=0 && imodgain,(detectorModules+imod)->offset); +#endif + if ((detectorModules+imod)->gain>0) + myg=(detectorModules+imod)->gain; + else { + if (thisSettings>=0 && thisSettings<3) + myg=g[thisSettings]; + // else + //myg=-1; + } + + if ((detectorModules+imod)->offset>0) + myo=(detectorModules+imod)->offset; + else { + if (thisSettings>=0 && thisSettings<3) + myo=o[thisSettings]; + // else + //myo=-1; + } + + if (myg>0 && myo>0) { + //ethr=(myo-detectorDacs[VTHRESH+imod*NDAC])*1000/myg; + + ethr=(myo-setDACRegister(VDAC0,-1,imod))*1000/myg;//edited by dhanya + // else + // ethr=-1; + + } +#ifdef VERBOSE + //printf("module=%d gain=%f, offset=%f, dacu=%f\n",imod, myg, myo, detectorDacs[VTHRESH+imod*NDAC]); + printf("module=%d gain=%f, offset=%f, dacu=%d\n",imod, myg, myo,(int)(setDACRegister(VDAC0,-1,imod)));//edited by dhanya + printf("Threshold energy of module %d is %d eV\n", imod, ethr); +#endif + + if (imod==0) + ret=ethr; + else { + if (ethr>(ret+100) || ethr<(ret-100)) + return FAIL; + } + } + } + return ret; +} + +int setThresholdEnergy(int ethr) { + double g[3]=DEFAULTGAIN; + double o[3]=DEFAULTOFFSET; + double myg=-1, myo=-1; + int dacu; + int imod; + int ret=ethr; + + setSettings(GET_SETTINGS,-1);//-1 added by dhanya + if (thisSettings>=0 || thisSettings<3){ + myg=g[thisSettings]; + myo=o[thisSettings]; + } + for (imod=0; imodgain>0) + myg=(detectorModules+imod)->gain; + else + if (thisSettings>=0 && thisSettings<3) + myg=g[thisSettings]; + else + myg=-1; + if ((detectorModules+imod)->offset>0) + myo=(detectorModules+imod)->offset; + else + if (thisSettings>=0 && thisSettings<3) + myo=o[thisSettings]; + else + myo=-1; + } else { + if (thisSettings>=0 && thisSettings<3) + myo=o[thisSettings]; + else + myo=-1; + if (thisSettings>=0 && thisSettings<3) + myg=g[thisSettings]; + else + myg=-1; + } + if (myg>0 && myo>0) { + dacu=myo-myg*((double)ethr)/1000.; +#ifdef VERBOSE + printf("module %d (%x): gain %f, off %f, energy %d eV, dac %d\n",imod,(unsigned int)((detectorModules+imod)),(detectorModules+imod)->gain,(detectorModules+imod)->offset, ethr,dacu); +#endif + } else { + dacu=ethr; +#ifdef VERBOSE + printf("could not set threshold energy for module %d, settings %d (offset is %f; gain is %f)\n",imod,thisSettings,myo,myg); +#endif + } + initDACbyIndexDACU(VDAC0, dacu, imod); ///needs to be fixed dhanya + } + return ret; +} + + + +int getDACbyIndexDACU(int ind, int imod) { + /* + if (detectorDacs) { + if (imodndac) + return (detectorDacs[ind+imod*NDAC]); + } + return FAIL; + */ + return setDACRegister(ind, -1, imod); +} + + +int initDAC(int dac_addr, int value, int imod) { +// int i; +#ifdef VERBOSE + printf("Programming dac %d with value %d\n", dac_addr, value); +#endif + clearDACSregister(imod); + program_one_dac(dac_addr,value,imod); + nextDAC(imod); + clearDACSregister(imod); + + return 0; +} + +int getTemperatureByModule(int tempSensor, int imod) +{ + int im; + //for the particular module + if (imod>=0 && imod=0 && imod=0 && imod=0) { +#ifdef VERBOSE + fprintf(stdout, "voltage %d\n", *(v+iaddr)); +#endif + program_one_dac(iaddr, *(v+iaddr),imod); + } + nextDAC(imod); + } + + + clearDACSregister(imod); + + return 0; + +} + + + + +int setSettings(int i, int imod) { +#ifdef VERBOSE + if(i==-1) + printf("\nReading settings of detector...\n"); + else + printf("\ninside set settings wit settings=%d...\n",i); +#endif + int confgain[] = CONF_GAIN; + int isett=-2,retval; + + //reading settings + if(i==GET_SETTINGS){ + retval=initConfGainByModule(i,i,imod); + if(retval==i) + isett=UNDEFINED; + } + //writing settings + else{ + retval=initConfGainByModule(i,confgain[i],imod); + if(retval!=i) + isett=UNDEFINED; + } + //if error while read/writing + if(isett==UNDEFINED) + printf("Error:Weird Value read back from the Gain/Settings Reg\n"); + else{ + //validating the settings read back + if((retval>=HIGHGAIN)&&(retval<=VERYHIGHGAIN)) + isett=retval; + else{ + isett=UNDEFINED; + printf("Error:Wrong Settings Read out:%d\n",retval); + } + } + thisSettings=isett; +#ifdef VERBOSE + printf("detector settings are %d\n",thisSettings); +#endif + return thisSettings; +} + + + + +/* Initialization*/ + +int initChannelbyNumber(sls_detector_channel myChan) { + int reg=myChan.reg; + int ft=reg & TRIM_DR; + int cae=(reg>>(NTRIMBITS))&1; + int ae=(reg>>(NTRIMBITS+1))&1; + int coe=(reg>>(NTRIMBITS+2))&1; + int ocoe=(reg>>(NTRIMBITS+3))&1; + int counts=(reg>>(NTRIMBITS+4)); +#ifdef VERBOSE + printf("Initializing channel %d chip %d module %d reg %x\n",myChan.chan,myChan.chip,myChan.module, reg); + printf("trim %d, cae %d, ae %d, coe %d, ocoe %d, counts %d\n",ft, cae, ae, coe, ocoe, counts); +#endif + + if (myChan.chip<0) + setCSregister(myChan.module); + else + selChip(myChan.chip,myChan.module); + + if (myChan.chan<0) + setSSregister(myChan.module); + else + selChannel(myChan.chan,myChan.module); + + initChannel(ft,cae,ae, coe, ocoe, counts,myChan.module); + + setDynamicRange(dynamicRange); + + setCSregister(ALLMOD); + clearSSregister(ALLMOD); + putout("0000000000000000",ALLMOD); + + return myChan.reg; + +} + +int getChannelbyNumber(sls_detector_channel* myChan) { + int imod, ichip, ichan; + imod=myChan->module; + ichip=myChan->chip; + ichan=myChan->chan; + + if (detectorChans) { + if (imod=0) { + if (ichip<(detectorModules+imod)->nchip && ichan<(detectorModules+imod)->nchan/(detectorModules+imod)->nchip) + myChan->reg=detectorChans[imod*NCHAN*NCHIP+ichip*NCHAN+ichan]; + return OK; + } + } + return FAIL; + +} + +int getTrimbit(int imod, int ichip, int ichan) { + if (detectorChans) { + if (imod=0) + if (ichip<(detectorModules+imod)->nchip && ichan<(detectorModules+imod)->nchan/(detectorModules+imod)->nchip) + return (detectorChans[imod*NCHAN*NCHIP+ichip*NCHAN+ichan] & TRIM_DR); + } + + return -1; +} + +int initChannel(int ft,int cae, int ae, int coe, int ocoe, int counts, int imod){ + + int ibit, bit, i, im, ichip, ichan; + int chanmi, chanma, chipmi, chipma, modmi, modma; + + + + sMod=imod; + // printf("initializing module %d\n",sMod); + if (imod==ALLMOD) { + sMod=allSelected; + + // printf("initializing all modules\n"); + } + + if (sChan==allSelected) { + // printf("initializing all channels ft=%d coe=%d\n",ft,coe); + chanmi=0; + chanma=NCHAN; + } else if (sChan==noneSelected || sChan>NCHAN || sChan<0) { + // printf("initializing no channels ft=%d coe=%d\n",ft,coe); + chanmi=0; + chanma=-1; + } else { + // printf("initializing channel %d ft=%d coe=%d\n",sChan, ft,coe); + chanmi=sChan; + chanma=sChan+1; + } + + if (sChip==allSelected) { + // printf("initializing all chips\n"); + chipmi=0; + chipma=NCHIP; + } else if (sChip==noneSelected || sChip>NCHIP || sChip<0) { + // printf("initializing no chips\n"); + chipmi=0; + chipma=-1; + } else { + // printf("initializing chip %d\n",sChip); + chipmi=sChip; + chipma=sChip+1; + } + + + if (sMod==allSelected) { + modmi=0; + modma=nModX;//getNModBoard(); + } else if (sMod==noneSelected || sMod>nModX || sMod<0) {//(sMod==noneSelected || sMod>getNModBoard() || sMod<0) { + modmi=0; + modma=-1; + return 1; + } else { + modmi=sMod; + modma=sMod+1; + } + + if (detectorChans) { + for (im=modmi; im63 || ft<0) { + fprintf(stdout,"Fine Threshold is %d while should be between 0 and 63!",ft); + return 1; + } + /*cal_enable*/ + if (cae) { + putout("0100000000000000",imod); + putout("0110000000000000",imod); + } else { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + } + /*n_an_enable*/ + if (ae) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } else { + putout("0100000000000000",imod); + putout("0110000000000000",imod); + putout("0100000000000000",imod); + } + /*trb5*/ + ibit=5; + bit=ft & (1<>1; + int nchan, ichan; + int ft, cae, ae, coe, ocoe, counts, chanreg; + + + + nchan=myChip.nchan; + if (ichip<0) + setCSregister(imod); + else + selChip(ichip,imod); + + clearSSregister(imod); + for (ichan=0; ichan>(NTRIMBITS+1))&1; + ae=(chanreg>>(NTRIMBITS+2))&1; + coe=((chanreg)>>(NTRIMBITS+3))&1; + ocoe=((chanreg)>>(NTRIMBITS+4))&1; + counts=((chanreg)>>(NTRIMBITS+5)); + nextStrip(imod); + initChannel(ft,cae,ae, coe, ocoe, counts,imod); + } + initChip(obe,ow,imod); + return myChip.reg; + +} + +int getChipbyNumber(sls_detector_chip* myChip){ + int imod, ichip; + imod=myChip->module; + ichip=myChip->chip; + + if (detectorChips) { + if (imodnchip) { + myChip->reg=detectorChips[ichip+imod*NCHIP]; + myChip->nchan=NCHAN; + myChip->chanregs=detectorChans+imod*NCHAN*NCHIP+ichip*NCHIP; + return OK; + } + } + return FAIL; + +} + + + +int initChip(int obe, int ow,int imod){ + int i; + int im, ichip; + int chipmi, chipma, modmi, modma; + /* switch (ow) { + case 0:; + case 1: + setDynamicRange(32); + break; + case 2: + setDynamicRange(16); + break; + case 3: + setDynamicRange(8); + break; + case 4: + setDynamicRange(4); + break; + case 5: + setDynamicRange(1); + break; + default: + setDynamicRange(32); + break; + } + */ + +#ifdef DEBUGOUT + printf("Initializing chip\n"); +#endif + putout("0000000000000000",imod); +#ifdef DEBUGOUT + printf("Output mode= %d\n", ow); +#endif + + /* clearing shift in register */ + for (i=0; i<10; i++) + putout("0000100000000000",imod); + putout("0000000000000000",imod); + + if (ow>0) { + putout("0100000000000000",imod); + putout("0110000000000000",imod); + putout("0100000000000000",imod); + for (i=0; i<(OUTMUX_OFFSET-1); i++) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + if (ow>1) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + if (ow>2) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + if (ow>3) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + if (ow>4) { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + } +#ifdef DEBUGOUT + printf("Output buffer enable= %d\n", obe); +#endif + if (obe) { + putout("0100000000000000",imod); + putout("0110000000000000",imod); + putout("0100000000000000",imod); + } else { + putout("0000000000000000",imod); + putout("0010000000000000",imod); + putout("0000000000000000",imod); + } + /*}*/ + putout("0000000000000000",imod); + + + + + + sMod=imod; + if (imod==ALLMOD) + sMod=allSelected; + + + if (sChip==allSelected) { + chipmi=0; + chipma=NCHIP; + } else if (sChip==noneSelected || sChip>NCHIP || sChip<0) { + chipmi=0; + chipma=-1; + } else { + chipmi=sChip; + chipma=sChip+1; + } + + + if (sMod==allSelected) { + modmi=0; + modma=nModX;//getNModBoard(); + } else if (sMod==noneSelected || sMod>nModX || sMod<0) {//(sMod==noneSelected || sMod>getNModBoard() || sMod<0) { + modmi=0; + modma=-1; + } else { + modmi=sMod; + modma=sMod+1; + } + + if (detectorChips) { + for (im=modmi; imNCHIP || sChip<0) { + chipmi=0; + chipma=-1; + } else { + chipmi=sChip; + chipma=sChip+1; + } + + + if (sMod==allSelected) { + modmi=0; + modma=nModX;//getNModBoard(); + } else if (sMod==noneSelected || sMod>nModX || sMod<0) {//(sMod==noneSelected || sMod>getNModBoard() || sMod<0) { + modmi=0; + modma=-1; + } else { + modmi=sMod; + modma=sMod+1; + } + + if (detectorChips) { + for (im=modmi; imnModX || sMod<0) {//(sMod==noneSelected || sMod>getNModBoard() || sMod<0) { + modmi=0; + modma=-1; + } else { + modmi=sMod; + modma=sMod+1; + } + + if (detectorModules) { + for (im=modmi; imreg)=cm; +#ifdef VERBOSE + printf("imod=%d reg=%d (%x)\n",im,(detectorModules+im)->reg,(unsigned int)((detectorModules+im))); +#endif + } + } + return 0; +} + +int initModulebyNumber(sls_detector_module myMod) { + + printf("\ninside initmoduleynumber..\n"); + + int nchip,nchan;//int ichip, nchip, ichan, nchan; + int im, modmi,modma; + // int ft, cae, ae, coe, ocoe, counts, chanreg; + int imod; + // int obe; + // int ow; + int v[NDAC]; + + + nchip=myMod.nchip; + nchan=(myMod.nchan)/nchip; + + imod=myMod.module; + sMod=imod; + + if (sMod==ALLMOD) + sMod=allSelected; + + if (sMod==allSelected) { + modmi=0; + modma=nModX;//getNModBoard(); + } else if (sMod==noneSelected || sMod>nModX || sMod<0) {// (sMod==noneSelected || sMod>getNModBoard() || sMod<0) { + modmi=0; + modma=-1; + } else { + modmi=sMod; + modma=sMod+1; + } + + + /* + for (idac=0; idacmodule; +#ifdef VERBOSE + printf("Getting module %d\n",imod); +#endif + if (detectorModules) { + copyModule(myMod,detectorModules+imod); + ; + } else + return FAIL; + + return OK; +} + +/* To chips */ +int clearCounter(int imod){ + int i; +#ifdef DEBUG + printf("Clearing counter with contclear\n"); +#endif + putout("0000000000000000",imod); + for (i=0; i<10; i++) + putout("0000000000010000",imod); + putout("0000000000000000",imod); + + return 0; +} + +int clearOutReg(int imod){ + int i; +#ifdef DEBUG + printf("Clearing output register\n"); +#endif + putout("0000010000000000",imod); + for (i=0; i<10; i++) + putout("0000110000000000",imod); + putout("0000010000000000",imod); + return 0; +} +int setOutReg(int imod){ + int i; +#ifdef DEBUG + printf("Setting output register\n"); +#endif + putout("0000010000000000",imod); + for (i=0; i<10; i++) + putout("0001010000000000",imod); + putout("0000010000000000",imod); + return 0; +} + + +int extPulse(int ncal, int imod) { + int ical; +#ifdef DEBUG + printf("Giving a clock pulse to the counter\n"); +#endif + for (ical=0; ical0 && i%2==0) { + printf("Shift in: module %d chip %i bit %d read %d instead of %d \n",k,j,i,val & 1<< j, i%2); + result++; + } + if (i%2>0 && (val & 1<0 && (dum & (1<0) { + printf("Shift out: module %d chip %i bit %d read %d instead of %d \n",k,j,i,val & 1<< j, (dum &1<0 && i%2==0) { + printf("Shift stsel: module %d chip %i bit %d read %d instead of %d \n",k,j,i,val & 1<< j, i%2); + result++; + } + if (i%2>0 && (val & 1<> 1; + + + putout("0000000000000000",ALLMOD); + putout("0010000000000000",ALLMOD); //change mux setting + putout("0000000000000000",ALLMOD); + } + + printf("Test FpgaMux module %d : %d errors\n", imod,result); + if (result) + return 1; + else + return 0; +} + + + + + + + + + +int calibration_sensor(int num, int *v, int *dacs) { + int ich, ichip, imod; + int val[10]; + + + printf("calibrating sensor..."); + for (imod=0; imod=0){ + + //clear rois + for(i=0;i=0) && (adc<=4)); + else { + printf("warning:adc value greater than 5. deleting roi\n"); + adc=-1; + } + } + } + + + //set rois for just 1 adc - take only 1st roi + if(adc!=-1){ + rois[0].xmin=adc*(GOTTHARDNCHAN*NCHIPS_PER_ADC); + rois[0].xmax=(adc+1)*(GOTTHARDNCHAN*NCHIPS_PER_ADC)-1; + rois[0].ymin=-1; + rois[0].ymax=-1; + nROI = 1; + }else + nROI = 0; + + if((arg[0].xmin!=rois[0].xmin)||(arg[0].xmax!=rois[0].xmax)||(arg[0].ymin!=rois[0].ymin)||(arg[0].ymax!=rois[0].ymax)) + *ret=FAIL; + if(n!=nROI) + *ret=FAIL; + + //set adc of interest + setADC(adc); + } + +//#ifdef VERBOSE + printf("Rois:\n"); + for( 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 Nk5l4rl$-I|{{$6L%BKJT literal 0 HcmV?d00001 diff --git a/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h b/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h new file mode 100755 index 000000000..d0f5f762a --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h @@ -0,0 +1,464 @@ +#ifndef REGISTERS_G_H +#define REGISTERS_G_H + + +#include "sls_detector_defs.h" + + +/* Definitions for FPGA*/ +#define CSP0 0x20200000 +#define MEM_SIZE 0x100000 + + + +/* values defined for FPGA */ +#define MCSNUM 0x0 +#define FIXED_PATT_VAL 0xacdc1980 + + +#define FPGA_INIT_PAT 0x60008 +#define FPGA_INIT_ADDR 0xb0000000 + + + + +/* constant FPGAVersionReg_c : integer:= 0; */ +/* constant FixedPatternReg_c : integer:= 1; */ +/* constant StatusReg_c : integer:= 2; */ +/* constant LookAtMeReg_c : integer:= 3; */ +/* constant SystemStatusReg_c : integer:= 4; */ + +/* constant PLL_ParamOutReg_c : integer:=5; -- RO register to check control signals going to the chip */ + + +/* --time registers use only even numbers! */ +/* constant TimeFromStartReg_c : integer:= 16; */ +/* --constant TimeFromStartReg_c : integer:= 17; MSB */ +/* constant GetDelayReg_c : integer:= 18; */ +/* --constant GetDelayReg_c : integer:= 19; MSB */ +/* constant GetCyclesReg_c : integer:= 20; */ +/* --constant GetTrainsReg_c : integer:= 21; MSB */ +/* constant GetFramesReg_c : integer:= 22; */ +/* --constant GetFramesReg_c : integer:= 23; MSB */ +/* constant GetPeriodReg_c : integer:= 24; */ +/* --constant GetPeriodReg_c : integer:= 25; MSB */ +/* constant GetExpTimeReg_c : integer:= 26; */ +/* --constant GetExpTimeReg_c : integer:= 27; MSB */ +/* constant GetGatesReg_c : integer:= 28; */ +/* --constant GetGatesReg_c : integer:= 29; MSB */ + + + + + +/* -----rw: */ + +/* constant DACReg_c : integer:= 64; */ +/* constant ADCWriteReg_c : integer:= 65; */ +/* constant ADCsyncReg_c : integer:= 66; */ +/* constant HVReg_c : integer:= 67; */ +/* constant DummyReg_c : integer:= 68; */ + +/* constant rx_udpip_AReg_c : integer:= 69; */ +/* constant udpports_AReg_c : integer:= 70; */ +/* constant rx_udpmacL_AReg_c : integer:= 71; */ +/* constant rx_udpmacH_AReg_c : integer:= 72; */ +/* constant detectormacL_AReg_c : integer:= 73; */ +/* constant detectormacH_AReg_c : integer:= 74; */ +/* constant detectorip_AReg_c : integer:= 75; */ +/* constant ipchksum_AReg_c : integer:= 76; */ + +/* constant ConfigReg_c : integer:= 77; */ +/* constant ExtSignalReg_c : integer:= 78; */ +/* constant ControlReg_c : integer:= 79; */ + + + +/* constant PLL_ParamReg_c : integer:= 80; */ +/* constant PLL_CntrlReg_c : integer:=81; */ + + + + +/* --time registers use only even numbers! */ +/* -- DELAY_AFTER_TRIGGER, */ +/* constant SetDelayReg_c : integer:= 96; */ +/* --constant SetDelayReg_c : integer:= 97; MSB */ +/* -- CYCLES_NUMBER, */ +/* constant SetCyclesReg_c : integer:= 98; */ +/* --constant SetCyclesReg_c : integer:= 99;MSB */ +/* -- FRAME_NUMBER, */ +/* constant SetFramesReg_c : integer:= 100; */ +/* --constant SetFramesReg_c : integer:= 101; MSB */ +/* -- FRAME_PERIOD, */ +/* constant SetPeriodReg_c : integer:= 102; */ +/* --constant SetPeriodReg_c : integer:= 103; MSB */ +/* -- ACQUISITION_TIME, */ +/* constant SetExpTimeReg_c : integer:= 104; */ +/* --constant SetExpTimeReg_c : integer:= 105; MSB */ +/* -- GATES_NUMBER, */ +/* constant SetGatesReg_c : integer:= 106; */ +/* --constant SetGatesReg_c : integer:= 107; MSB */ + + +/* registers defined in FPGA */ +#define PCB_REV_REG 0x2c<<11 +#define GAIN_REG 0x10<<11 +//#define FLOW_CONTROL_REG 0x11<<11 +//#define FLOW_STATUS_REG 0x12<<11 +//#define FRAME_REG 0x13<<11 +#define MULTI_PURPOSE_REG 0x14<<11 +#define DAQ_REG 0x15<<11 +//#define TIME_FROM_START_REG 0x16<<11 +#define DAC_REG 64<<11//0x17<<11// control the dacs +//ADC +#define ADC_WRITE_REG 65<<11//0x18<<11 +#define ADC_SYNC_REG 66<<11//0x19<<11 +//#define MUTIME_REG 0x1a<<11 +//temperature +#define TEMP_IN_REG 0x1b<<11 +#define TEMP_OUT_REG 0x1c<<11 +//configure MAC +#define TSE_CONF_REG 0x1d<<11 +#define ENET_CONF_REG 0x1e<<11 +//#define WRTSE_SHAD_REG 0x1f<<11 +//HV +#define HV_REG 67<<11//0x20<<11 + + +#define DUMMY_REG 68<<11//0x21<<11 +#define FPGA_VERSION_REG 0<<11 //0x22<<11 +#define FIX_PATT_REG 1<<11 //0x23<<11 +#define CONTROL_REG 79<<11//0x24<<11 +#define STATUS_REG 2<<11 //0x25<<11 +#define CONFIG_REG 77<<11//0x26<<11 +#define EXT_SIGNAL_REG 78<<11// 0x27<<11 +#define FPGA_SVN_REG 0x29<<11 + + +#define CHIP_OF_INTRST_REG 0x2A<<11 + +//FIFO +#define LOOK_AT_ME_REG 3<<11 //0x28<<11 +#define SYSTEM_STATUS_REG 4<<11 + +#define FIFO_DATA_REG_OFF 0x50<<11 /////// + + +//to read back dac registers +#define MOD_DACS1_REG 0x65<<11 +#define MOD_DACS2_REG 0x66<<11 +#define MOD_DACS3_REG 0x67<<11 + +//user entered + + + + + +#define GET_ACTUAL_TIME_LSB_REG 16<<11 +#define GET_ACTUAL_TIME_MSB_REG 17<<11 + + +#define SET_DELAY_LSB_REG 96<<11 //0x68<<11 +#define SET_DELAY_MSB_REG 97<<11 //0x69<<11 +#define GET_DELAY_LSB_REG 18<<11//0x6a<<11 +#define GET_DELAY_MSB_REG 19<<11//0x6b<<11 + +#define SET_CYCLES_LSB_REG 98<<11//0x6c<<11 +#define SET_CYCLES_MSB_REG 99<<11//0x6d<<11 +#define GET_CYCLES_LSB_REG 20<<11//0x6e<<11 +#define GET_CYCLES_MSB_REG 21<<11//0x6f<<11 + +#define SET_FRAMES_LSB_REG 100<<11//0x70<<11 +#define SET_FRAMES_MSB_REG 101<<11//0x71<<11 +#define GET_FRAMES_LSB_REG 22<<11//0x72<<11 +#define GET_FRAMES_MSB_REG 23<<11//0x73<<11 + +#define SET_PERIOD_LSB_REG 102<<11//0x74<<11 +#define SET_PERIOD_MSB_REG 103<<11//0x75<<11 +#define GET_PERIOD_LSB_REG 24<<11//0x76<<11 +#define GET_PERIOD_MSB_REG 25<<11//0x77<<11 + +#define SET_EXPTIME_LSB_REG 104<<11//0x78<<11 +#define SET_EXPTIME_MSB_REG 105<<11//0x79<<11 +#define GET_EXPTIME_LSB_REG 26<<11//0x7a<<11 +#define GET_EXPTIME_MSB_REG 27<<11//0x7b<<11 + +#define SET_GATES_LSB_REG 106<<11//0x7c<<11 +#define SET_GATES_MSB_REG 107<<11//0x7d<<11 +#define GET_GATES_LSB_REG 28<<11//0x7e<<11 +#define GET_GATES_MSB_REG 29<<11//0x7f<<11 + + + + + +#define PLL_PARAM_REG 80<<11//0x37<<11 +#define PLL_PARAM_OUT_REG 5<<11 //0x38<<11 +#define PLL_CNTRL_REG 81<<11//0x34<<11 + + + + +#define RX_UDP_AREG 69<<11 //rx_udpip_AReg_c : integer:= 69; */ +#define UDPPORTS_AREG 70<<11// udpports_AReg_c : integer:= 70; */ +#define RX_UDPMACL_AREG 71<<11//rx_udpmacL_AReg_c : integer:= 71; */ +#define RX_UDPMACH_AREG 72<<11//rx_udpmacH_AReg_c : integer:= 72; */ +#define DETECTORMACL_AREG 73<<11//detectormacL_AReg_c : integer:= 73; */ +#define DETECTORMACH_AREG 74<<11//detectormacH_AReg_c : integer:= 74; */ +#define DETECTORIP_AREG 75<<11//detectorip_AReg_c : integer:= 75; */ +#define IPCHKSUM_AREG 76<<11//ipchksum_AReg_c : integer:= 76; */ + + + + + + + + + + + + + + +#define ROI_REG 0x35<<11 +#define OVERSAMPLING_REG 0x36<<11 +#define MOENCH_CNTR_REG 0x31<<11 +#define MOENCH_CNTR_OUT_REG 0x33<<11 +#define MOENCH_CNTR_CONF_REG 0x32<<11 + + + +//image +#define DARK_IMAGE_REG 0x81<<11 +#define GAIN_IMAGE_REG 0x82<<11 + +//counter block memory +#define COUNTER_MEMORY_REG 0x85<<11 + + +#define GET_MEASUREMENT_TIME_LSB_REG 0x023000 +#define GET_MEASUREMENT_TIME_MSB_REG 0x024000 + +//#define GET_ACTUAL_TIME_LSB_REG 0x025000 +//#define GET_ACTUAL_TIME_MSB_REG 0x026000 + + +//not used +//#define MCB_DOUT_REG_OFF 0x200000 +//#define FIFO_CNTRL_REG_OFF 0x300000 +//#define FIFO_COUNTR_REG_OFF 0x400000 +//not used so far +//#define SPEED_REG 0x006000 +//#define SET_NBITS_REG 0x008000 +//not used +//#define GET_SHIFT_IN_REG 0x022000 + + + +#define SHIFTMOD 2 +#define SHIFTFIFO 9 + +/** for PCB_REV_REG */ +#define DETECTOR_TYPE_MASK 0xF0000 +#define DETECTOR_TYPE_OFFSET 16 +#define BOARD_REVISION_MASK 0xFFFF +#define MOENCH_MODULE 2 + + + + +/* for control register */ +#define START_ACQ_BIT 0x00000001 +#define STOP_ACQ_BIT 0x00000002 +#define START_FIFOTEST_BIT 0x00000004 // ????? +#define STOP_FIFOTEST_BIT 0x00000008 // ?????? +#define START_READOUT_BIT 0x00000010 +#define STOP_READOUT_BIT 0x00000020 +#define START_EXPOSURE_BIT 0x00000040 +#define STOP_EXPOSURE_BIT 0x00000080 +#define START_TRAIN_BIT 0x00000100 +#define STOP_TRAIN_BIT 0x00000200 +#define SYNC_RESET 0x00000400 + +/* for status register */ +#define RUN_BUSY_BIT 0x00000001 +#define READOUT_BUSY_BIT 0x00000002 +#define FIFOTEST_BUSY_BIT 0x00000004 //???? +#define WAITING_FOR_TRIGGER_BIT 0x00000008 +#define DELAYBEFORE_BIT 0x00000010 +#define DELAYAFTER_BIT 0x00000020 +#define EXPOSING_BIT 0x00000040 +#define COUNT_ENABLE_BIT 0x00000080 +#define READSTATE_0_BIT 0x00000100 +#define READSTATE_1_BIT 0x00000200 +#define READSTATE_2_BIT 0x00000400 + +#define RUNSTATE_0_BIT 0x00001000 +#define RUNSTATE_1_BIT 0x00002000 +#define RUNSTATE_2_BIT 0x00004000 +#define SOME_FIFO_FULL_BIT 0x00008000 // error! +#define ALL_FIFO_EMPTY_BIT 0x00010000 // data ready +#define RUNMACHINE_BUSY_BIT 0x00020000 +#define READMACHINE_BUSY_BIT 0x00040000 + + + +/* for fifo status register */ +#define FIFO_ENABLED_BIT 0x80000000 +#define FIFO_DISABLED_BIT 0x01000000 +#define FIFO_ERROR_BIT 0x08000000 +#define FIFO_EMPTY_BIT 0x04000000 +#define FIFO_DATA_READY_BIT 0x02000000 +#define FIFO_COUNTER_MASK 0x000001ff +#define FIFO_NM_MASK 0x00e00000 +#define FIFO_NM_OFF 21 +#define FIFO_NC_MASK 0x001ffe00 +#define FIFO_NC_OFF 9 + +/* for config register *///not really used yet +#define TOT_ENABLE_BIT 0x00000002 +#define TIMED_GATE_BIT 0x00000004 +#define CONT_RO_ENABLE_BIT 0x00080000 +#define CPU_OR_RECEIVER_BIT 0x00001000 + + + +/* for speed register */ +#define CLK_DIVIDER_MASK 0x000000ff +#define CLK_DIVIDER_OFFSET 0 +#define SET_LENGTH_MASK 0x00000f00 +#define SET_LENGTH_OFFSET 8 +#define WAIT_STATES_MASK 0x0000f000 +#define WAIT_STATES_OFFSET 12 +#define TOTCLK_DIVIDER_MASK 0xff000000 +#define TOTCLK_DIVIDER_OFFSET 24 +#define TOTCLK_DUTYCYCLE_MASK 0x00ff0000 +#define TOTCLK_DUTYCYCLE_OFFSET 16 + +/* for external signal register */ +#define SIGNAL_OFFSET 4 +#define SIGNAL_MASK 0xF +#define EXT_SIG_OFF 0x0 +#define EXT_GATE_IN_ACTIVEHIGH 0x1 +#define EXT_GATE_IN_ACTIVELOW 0x2 +#define EXT_TRIG_IN_RISING 0x3 +#define EXT_TRIG_IN_FALLING 0x4 +#define EXT_RO_TRIG_IN_RISING 0x5 +#define EXT_RO_TRIG_IN_FALLING 0x6 +#define EXT_GATE_OUT_ACTIVEHIGH 0x7 +#define EXT_GATE_OUT_ACTIVELOW 0x8 +#define EXT_TRIG_OUT_RISING 0x9 +#define EXT_TRIG_OUT_FALLING 0xA +#define EXT_RO_TRIG_OUT_RISING 0xB +#define EXT_RO_TRIG_OUT_FALLING 0xC + + + +/* for temperature register */ +#define T1_CLK_BIT 0x00000001 +#define T1_CS_BIT 0x00000002 +#define T2_CLK_BIT 0x00000004 +#define T2_CS_BIT 0x00000008 + + + +/* fifo control register */ +#define FIFO_RESET_BIT 0x00000001 +#define FIFO_DISABLE_TOGGLE_BIT 0x00000002 + + +//chip shiftin register meaning +#define OUTMUX_OFF 20 +#define OUTMUX_MASK 0x1f +#define PROBES_OFF 4 +#define PROBES_MASK 0x7f +#define OUTBUF_OFF 0 +#define OUTBUF_MASK 1 + + +/* multi purpose register */ +#define PHASE_STEP_BIT 0x00000001 +#define PHASE_STEP_OFFSET 0 +// #define xxx_BIT 0x00000002 +#define RESET_COUNTER_BIT 0x00000004 +#define RESET_COUNTER_OFFSET 2 +//#define xxx_BIT 0x00000008 +//#define xxx_BIT 0x00000010 +#define SW1_BIT 0x00000020 +#define SW1_OFFSET 5 +#define WRITE_BACK_BIT 0x00000040 +#define WRITE_BACK_OFFSET 6 +#define RESET_BIT 0x00000080 +#define RESET_OFFSET 7 +#define ENET_RESETN_BIT 0x00000800 +#define ENET_RESETN_OFFSET 11 +#define INT_RSTN_BIT 0x00002000 +#define INT_RSTN_OFFSET 13 +#define DIGITAL_TEST_BIT 0x00004000 +#define DIGITAL_TEST_OFFSET 14 +//#define CHANGE_AT_POWER_ON_BIT 0x00008000 +//#define CHANGE_AT_POWER_ON_OFFSET 15 + + +/* settings/conf gain register */ +#define GAIN_MASK 0x0000000f +#define GAIN_OFFSET 0 +#define SETTINGS_MASK 0x000000f0 +#define SETTINGS_OFFSET 4 + + +/* CHIP_OF_INTRST_REG */ +#define CHANNEL_MASK 0xffff0000 +#define CHANNEL_OFFSET 16 +#define ACTIVE_ADC_MASK 0x0000001f + + + +/**ADC SYNC CLEAN FIFO*/ +#define ADCSYNC_CLEAN_FIFO_BITS 0x300000 +#define CLEAN_FIFO_MASK 0x0fffff + + + + + + +#define PLL_CNTR_ADDR_OFF 16 //PLL_CNTR_REG bits 21 downto 16 represent the counter address + +#define PLL_CNTR_RECONFIG_RESET_BIT 0 +#define PLL_CNTR_READ_BIT 1 +#define PLL_CNTR_WRITE_BIT 2 + +#define PLL_MODE_REG 0x0 +#define PLL_STATUS_REG 0x1 +#define PLL_START_REG 0x2 +#define PLL_N_COUNTER_REG 0x3 +#define PLL_M_COUNTER_REG 0x4 +#define PLL_C_COUNTER_REG 0x5 //which ccounter stands in param 22:18; 7:0 lowcount 15:8 highcount; 16 bypassenable; 17 oddivision +#define PLL_PHASE_SHIFT_REG 0x6 +#define PLL_K_COUNTER_REG 0x7 +#define PLL_BANDWIDTH_REG 0x8 +#define PLL_CHARGEPUMP_REG 0x9 +#define PLL_VCO_DIV_REG 0x1c +#define PLL_MIF_REG 0x1f + +#define PPL_M_CNT_PARAM_DEFAULT 0x4040 +#define PPL_N_CNT_PARAM_DEFAULT 0x20D0C +#define PPL_C0_CNT_PARAM_DEFAULT 0x20D0C +#define PPL_C1_CNT_PARAM_DEFAULT 0xA0A0 +#define PPL_C2_CNT_PARAM_DEFAULT 0x20D0C +#define PPL_C2_CNT_PARAM_DEFAULT 0x0808 +#define PPL_BW_PARAM_DEFAULT 0x2EE0 +#define PPL_VCO_PARAM_DEFAULT 0x1 + + + + + + + +#endif + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server.c b/slsDetectorSoftware/jungfrauDetectorServer/server.c new file mode 100755 index 000000000..1804b9330 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/server.c @@ -0,0 +1,137 @@ +/* A simple server in the internet domain using TCP + The port number is passed as an argument */ + +#include "sls_detector_defs.h" + +#include "communication_funcs.h" +#include "server_funcs.h" +#include + + +extern int sockfd; +extern int phase_shift; + + + +void error(char *msg) +{ + perror(msg); +} + +int main(int argc, char *argv[]) +{ + int portno, b; + char cmd[500]; + int retval=OK; + int sd, fd; + int iarg; + int checkType = 1; + + + for(iarg=1; iarg 2) && (!strcasecmp(argv[2],"stopserver"))){ + portno = DEFAULT_PORTNO+1; + if ( sscanf(argv[1],"%d",&portno) ==0) { + printf("could not open stop server: unknown port\n"); + return 1; + } + b=0; + printf("\n\nStop Server\nOpening stop server on port %d\n",portno); + checkType=0; + + } + + //control server + else { + portno = DEFAULT_PORTNO; + if(checkType) + sprintf(cmd,"%s %d stopserver &",argv[0],DEFAULT_PORTNO+1); + else + sprintf(cmd,"%s %d stopserver -test with_gotthard &",argv[0],DEFAULT_PORTNO+1); + printf("\n\nControl Server\nOpening control server on port %d\n",portno ); + + //printf("\n\ncmd:%s\n",cmd); + system(cmd); + b=1; + checkType=1; + + } + + + + + + init_detector(b, checkType); + + + sd=bindSocket(portno); + sockfd=sd; + if (getServerError(sd)) { + printf("server error!\n"); + return -1; + } + + /* assign function table */ + function_table(); +#ifdef VERBOSE + printf("function table assigned \n"); +#endif + + + /* waits for connection */ + while(retval!=GOODBYE) { +#ifdef VERBOSE + printf("\n"); +#endif +#ifdef VERY_VERBOSE + printf("Waiting for client call\n"); +#endif + fd=acceptConnection(sockfd); +#ifdef VERY_VERBOSE + printf("Conenction accepted\n"); +#endif + retval=decode_function(fd); +#ifdef VERY_VERBOSE + printf("function executed\n"); +#endif + closeConnection(fd); +#ifdef VERY_VERBOSE + printf("connection closed\n"); +#endif + } + + exitServer(sockfd); + printf("Goodbye!\n"); + + return 0; +} + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_defs.h b/slsDetectorSoftware/jungfrauDetectorServer/server_defs.h new file mode 100755 index 000000000..850533266 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_defs.h @@ -0,0 +1,63 @@ +#ifndef SERVER_DEFS_H +#define SERVER_DEFS_H + +#include "sls_detector_defs.h" + +#include + + +// Hardware definitions + +#define NCHAN (160*160) +#define NCHIP 1 +#define NMAXMODX 1 +#define NMAXMODY 1 +#define NMAXMOD (NMAXMODX*NMAXMODY) +#define NDAC 8 +#define NADC 1 + +/**when moench readout tested with gotthard module*/ +#define GOTTHARDNCHAN 128 +#define GOTTHARDNCHIP 10 + + + + +#define NCHANS (NCHAN*NCHIP*NMAXMOD) +#define NDACS (NDAC*NMAXMOD) + +#define NTRIMBITS 6 +#define NCOUNTBITS 24 + +#define NCHIPS_PER_ADC 2 + +//#define TRIM_DR ((2**NTRIMBITS)-1) +//#define COUNT_DR ((2**NCOUNTBITS)-1) +#define TRIM_DR (((int)pow(2,NTRIMBITS))-1) +#define COUNT_DR (((int)pow(2,NCOUNTBITS))-1) + + +#define ALLMOD 0xffff +#define ALLFIFO 0xffff + +#define GOTTHARD_ADCSYNC_VAL 0x32214 +#define ADCSYNC_VAL 0x02111 +#define TOKEN_RESTART_DELAY 0x88000000 +#define TOKEN_RESTART_DELAY_ROI 0x1b000000 +#define TOKEN_TIMING_REV1 0x1f16 +#define TOKEN_TIMING_REV2 0x1f0f + +#define DEFAULT_PHASE_SHIFT 0 // 120 +#define DEFAULT_IP_PACKETSIZE 0x0522 +#define DEFAULT_UDP_PACKETSIZE 0x050E +#define ADC1_IP_PACKETSIZE 256*2+14+20 +#define ADC1_UDP_PACKETSIZE 256*2+4+8+2 + +#ifdef VIRTUAL +#define DEBUGOUT +#endif + +#define CLK_FREQ 65.6E+6 + + +#endif diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c new file mode 100755 index 000000000..0a73341d0 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.c @@ -0,0 +1,3108 @@ +#include "sls_detector_defs.h" +#include "server_funcs.h" +#ifndef PICASSOD +#include "server_defs.h" +#else +#include "picasso_defs.h" +#endif +#include "firmware_funcs.h" +#include "mcb_funcs.h" +#include "trimming_funcs.h" +#include "registers_m.h" +#include "gitInfoMoench.h" + +#define FIFO_DATA_REG_OFF 0x50<<11 +//#define CONTROL_REG 0x24<<11 +// Global variables + + +int (*flist[256])(int); + + +//defined in the detector specific file +#ifdef MYTHEND +const enum detectorType myDetectorType=MYTHEN; +#elif GOTTHARDD +const enum detectorType myDetectorType=GOTTHARD; +#elif EIGERD +const enum detectorType myDetectorType=EIGER; +#elif PICASSOD +const enum detectorType myDetectorType=PICASSO; +#elif MOENCHD +const enum detectorType myDetectorType=MOENCH; +#else +const enum detectorType myDetectorType=GENERIC; +#endif + + +extern int nModX; +extern int nModY; +extern int dataBytes; +extern int dynamicRange; +extern int storeInRAM; + +extern int lockStatus; +extern char lastClientIP[INET_ADDRSTRLEN]; +extern char thisClientIP[INET_ADDRSTRLEN]; +extern int differentClients; + +/* global variables for optimized readout */ +extern unsigned int *ram_values; +char *dataretval=NULL; +int nframes, iframes, dataret; +char mess[1000]; + +int digitalTestBit = 0; + +extern int withGotthard; + + +int init_detector(int b, int checkType) { + + int i; + if (mapCSP0()==FAIL) { printf("Could not map memory\n"); + exit(1); + } + + // + + printf("v: 0x%x\n",bus_r(FPGA_VERSION_REG)); + printf("fp: 0x%x\n",bus_r(FIX_PATT_REG)); + + if (checkType) { + printf("Bus test..."); + for (i=0; i<1000000; i++) { + bus_w(SET_DELAY_LSB_REG, i*100); + bus_r(FPGA_VERSION_REG); + if (i*100!=bus_r(SET_DELAY_LSB_REG)) + printf("ERROR: wrote 0x%x, read 0x%x\n",i*100,bus_r(SET_DELAY_LSB_REG)); + } + printf("Finished\n"); + } + return 0; + + bus_w16(CONTROL_REG, SYNC_RESET); + bus_w16(CONTROL_REG, 0x0); + + + //confirm if it is really moench + if(((bus_r(PCB_REV_REG) & DETECTOR_TYPE_MASK)>>DETECTOR_TYPE_OFFSET) != MOENCH_MODULE ){ + if(checkType){ + printf("This is a Gotthard detector. Exiting Moench Server.\n\n"); + exit(-1); + } + //no check required as specified in command line arguments + else if(b){ + printf("***This is a GOTTHARD detector with %d chips per module***\n",GOTTHARDNCHIP); + printf("***Assuming this to be a MOENCH detector***\n"); + } + withGotthard = 1; + } else if(b){ + printf("***This is a MOENCH detector with %d chips per module***\n",NCHIP); + } + + if (b) { +#ifdef MCB_FUNCS + printf("\nBoard Revision:0x%x\n",(bus_r(PCB_REV_REG)&BOARD_REVISION_MASK)); + initDetector(); + printf("Initializing Detector\n"); + bus_w16(CONTROL_REG, SYNC_RESET); // reset registers +#endif + + + testFpga(); + testRAM(); + printf("ADC_SYNC_REG:%x\n",bus_r(ADC_SYNC_REG)); + //moench specific + + // setPhaseShiftOnce(); //firmware.h + + + prepareADC(); // server_funcs + setADC(-1); //already does setdaqreg and clean fifo + setSettings(GET_SETTINGS,-1); + + //Initialization + setFrames(1); + setTrains(1); + setExposureTime(1e3); + setPeriod(1E6); + setDelay(0); + setGates(0); + + setTiming(GET_EXTERNAL_COMMUNICATION_MODE); + setMaster(GET_MASTER); + setSynchronization(GET_SYNCHRONIZATION_MODE); + startReceiver(0); //firmware + } + strcpy(mess,"dummy message"); + strcpy(lastClientIP,"none"); + strcpy(thisClientIP,"none1"); + lockStatus=0; + return OK; +} + + +int decode_function(int file_des) { + int fnum,n; + int retval=FAIL; +#ifdef VERBOSE + printf( "receive data\n"); +#endif + n = receiveDataOnly(file_des,&fnum,sizeof(fnum)); + if (n <= 0) { +#ifdef VERBOSE + printf("ERROR reading from socket %d, %d %d\n", n, fnum, file_des); +#endif + return FAIL; + } +#ifdef VERBOSE + else + printf("size of data received %d\n",n); +#endif + +#ifdef VERBOSE + printf( "calling function fnum = %d %x\n",fnum,(unsigned int)(flist[fnum])); +#endif + if (fnum<0 || fnum>255) + fnum=255; + retval=(*flist[fnum])(file_des); + if (retval==FAIL) + printf( "Error executing the function = %d \n",fnum); + return retval; +} + + +int function_table() { + int i; + for (i=0;i<256;i++){ + flist[i]=&M_nofunc; + } + flist[F_EXIT_SERVER]=&exit_server; + flist[F_EXEC_COMMAND]=&exec_command; + flist[F_GET_DETECTOR_TYPE]=&get_detector_type; + flist[F_SET_NUMBER_OF_MODULES]=&set_number_of_modules; + flist[F_GET_MAX_NUMBER_OF_MODULES]=&get_max_number_of_modules; + flist[F_SET_EXTERNAL_SIGNAL_FLAG]=&set_external_signal_flag; + flist[F_SET_EXTERNAL_COMMUNICATION_MODE]=&set_external_communication_mode; + flist[F_GET_ID]=&get_id; + flist[F_DIGITAL_TEST]=&digital_test; + flist[F_WRITE_REGISTER]=&write_register; + flist[F_READ_REGISTER]=&read_register; + flist[F_SET_DAC]=&set_dac; + flist[F_GET_ADC]=&get_adc; + flist[F_SET_CHANNEL]=&set_channel; + flist[F_SET_CHIP]=&set_chip; + flist[F_SET_MODULE]=&set_module; + flist[F_GET_CHANNEL]=&get_channel; + flist[F_GET_CHIP]=&get_chip; + flist[F_GET_MODULE]=&get_module; + flist[F_GET_THRESHOLD_ENERGY]=&get_threshold_energy; + flist[F_SET_THRESHOLD_ENERGY]=&set_threshold_energy; + flist[F_SET_SETTINGS]=&set_settings; + flist[F_START_ACQUISITION]=&start_acquisition; + flist[F_STOP_ACQUISITION]=&stop_acquisition; + flist[F_START_READOUT]=&start_readout; + flist[F_GET_RUN_STATUS]=&get_run_status; + flist[F_READ_FRAME]=&read_frame; + flist[F_READ_ALL]=&read_all; + flist[F_START_AND_READ_ALL]=&start_and_read_all; + flist[F_SET_TIMER]=&set_timer; + flist[F_GET_TIME_LEFT]=&get_time_left; + flist[F_SET_DYNAMIC_RANGE]=&set_dynamic_range; + flist[F_SET_ROI]=&set_roi; + flist[F_SET_SPEED]=&set_speed; + flist[F_SET_READOUT_FLAGS]=&set_readout_flags; + flist[F_EXECUTE_TRIMMING]=&execute_trimming; + flist[F_LOCK_SERVER]=&lock_server; + flist[F_SET_PORT]=&set_port; + flist[F_GET_LAST_CLIENT_IP]=&get_last_client_ip; + flist[F_UPDATE_CLIENT]=&update_client; + flist[F_CONFIGURE_MAC]=&configure_mac; + flist[F_LOAD_IMAGE]=&load_image; + flist[F_SET_MASTER]=&set_master; + flist[F_SET_SYNCHRONIZATION_MODE]=&set_synchronization; + flist[F_READ_COUNTER_BLOCK]=&read_counter_block; + flist[F_RESET_COUNTER_BLOCK]=&reset_counter_block; + flist[F_START_RECEIVER]=&start_receiver; + flist[F_STOP_RECEIVER]=&stop_receiver; + flist[F_CALIBRATE_PEDESTAL]=&calibrate_pedestal; + return OK; +} + + +int M_nofunc(int file_des){ + + int ret=FAIL; + sprintf(mess,"Unrecognized Function\n"); + printf(mess); + + sendDataOnly(file_des,&ret,sizeof(ret)); + sendDataOnly(file_des,mess,sizeof(mess)); + return GOODBYE; +} + + +int exit_server(int file_des) { + int retval=FAIL; + sendDataOnly(file_des,&retval,sizeof(retval)); + printf("closing server."); + sprintf(mess,"closing server"); + sendDataOnly(file_des,mess,sizeof(mess)); + return GOODBYE; +} + +int exec_command(int file_des) { + char cmd[MAX_STR_LENGTH]; + char answer[MAX_STR_LENGTH]; + int retval=OK; + int sysret=0; + int n=0; + + /* receive arguments */ + n = receiveDataOnly(file_des,cmd,MAX_STR_LENGTH); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + retval=FAIL; + } + + /* execute action if the arguments correctly arrived*/ + if (retval==OK) { +#ifdef VERBOSE + printf("executing command %s\n", cmd); +#endif + if (lockStatus==0 || differentClients==0) + sysret=system(cmd); + + //should be replaced by popen + if (sysret==0) { + sprintf(answer,"Succeeded\n"); + if (lockStatus==1 && differentClients==1) + sprintf(answer,"Detector locked by %s\n", lastClientIP); + } else { + sprintf(answer,"Failed\n"); + retval=FAIL; + } + } else { + sprintf(answer,"Could not receive the command\n"); + } + + /* send answer */ + n = sendDataOnly(file_des,&retval,sizeof(retval)); + n = sendDataOnly(file_des,answer,MAX_STR_LENGTH); + if (n < 0) { + sprintf(mess,"Error writing to socket"); + retval=FAIL; + } + + + /*return ok/fail*/ + return retval; + +} + + + +int get_detector_type(int file_des) { + int n=0; + enum detectorType ret; + int retval=OK; + + sprintf(mess,"Can't return detector type\n"); + + + /* receive arguments */ + /* execute action */ + ret=myDetectorType; + +#ifdef VERBOSE + printf("Returning detector type %d\n",ret); +#endif + + /* send answer */ + /* send OK/failed */ + if (differentClients==1) + retval=FORCE_UPDATE; + + n += sendDataOnly(file_des,&retval,sizeof(retval)); + if (retval!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&ret,sizeof(ret)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + /*return ok/fail*/ + return retval; + + +} + + +int set_number_of_modules(int file_des) { + int n; + int arg[2], ret=0; + int retval=OK; + int dim, nm; + + sprintf(mess,"Can't set number of modules\n"); + + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket %d", n); + retval=GOODBYE; + } + if (retval==OK) { + dim=arg[0]; + nm=arg[1]; + + /* execute action */ +#ifdef VERBOSE + printf("Setting the number of modules in dimension %d to %d\n",dim,nm ); +#endif + + //if (nm!=GET_FLAG) { + if (dim!=X && nm!=GET_FLAG) { + retval=FAIL; + sprintf(mess,"Can't change module number in dimension %d\n",dim); + } else { + if (lockStatus==1 && differentClients==1 && nm!=GET_FLAG) { + sprintf(mess,"Detector locked by %s\n", lastClientIP); + retval=FAIL; + } else { + ret=setNMod(nm); + if (nModX==nm || nm==GET_FLAG) { + retval=OK; + if (differentClients==1) + retval=FORCE_UPDATE; + } else + retval=FAIL; + } + } + } + /*} else { + if (dim==Y) { + ret=nModY; + } else if (dim==X) { + ret=setNMod(-1); + } + } + */ + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&retval,sizeof(retval)); + if (retval!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&ret,sizeof(ret)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + /*return ok/fail*/ + return retval; + +} + + +int get_max_number_of_modules(int file_des) { + int n; + int ret; + int retval=OK; + enum dimension arg; + + sprintf(mess,"Can't get max number of modules\n"); + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + retval=FAIL; + } + /* execute action */ +#ifdef VERBOSE + printf("Getting the max number of modules in dimension %d \n",arg); +#endif + + + switch (arg) { + case X: + ret=getNModBoard(); + break; + case Y: + ret=NMAXMODY; + break; + default: + ret=FAIL; + retval=FAIL; + break; + } +#ifdef VERBOSE + printf("Max number of module in dimension %d is %d\n",arg,ret ); +#endif + + + + if (differentClients==1 && retval==OK) { + retval=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&retval,sizeof(retval)); + if (retval!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&ret,sizeof(ret)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + + + /*return ok/fail*/ + return retval; +} + + +//index 0 is in gate +//index 1 is in trigger +//index 2 is out gate +//index 3 is out trigger + +int set_external_signal_flag(int file_des) { + int n; + int arg[2]; + int ret=OK; + int signalindex; + enum externalSignalFlag flag, retval; + + sprintf(mess,"Can't set external signal flag\n"); + + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + retval=SIGNAL_OFF; + if (ret==OK) { + signalindex=arg[0]; + flag=arg[1]; + /* execute action */ + switch (flag) { + case GET_EXTERNAL_SIGNAL_FLAG: + retval=getExtSignal(signalindex); + break; + + default: + if (differentClients==0 || lockStatus==0) { + retval=setExtSignal(signalindex,flag); + } else { + if (lockStatus!=0) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n", lastClientIP); + } + } + + } + +#ifdef VERBOSE + printf("Setting external signal %d to flag %d\n",signalindex,flag ); + printf("Set to flag %d\n",retval); +#endif + + } else { + ret=FAIL; + } + + if (ret==OK && differentClients!=0) + ret=FORCE_UPDATE; + + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + + /*return ok/fail*/ + return ret; + +} + + +int set_external_communication_mode(int file_des) { + int n; + enum externalCommunicationMode arg, ret=GET_EXTERNAL_COMMUNICATION_MODE; + int retval=OK; + + sprintf(mess,"Can't set external communication mode\n"); + + + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + retval=FAIL; + } + /* + enum externalCommunicationMode{ + GET_EXTERNAL_COMMUNICATION_MODE, + AUTO, + TRIGGER_EXPOSURE_SERIES, + TRIGGER_EXPOSURE_BURST, + TRIGGER_READOUT, + TRIGGER_COINCIDENCE_WITH_INTERNAL_ENABLE, + GATE_FIX_NUMBER, + GATE_FIX_DURATION, + GATE_WITH_START_TRIGGER, + GATE_COINCIDENCE_WITH_INTERNAL_ENABLE + }; + */ + if (retval==OK) { + /* execute action */ + + ret=setTiming(arg); + + /* switch(arg) { */ + /* default: */ + /* sprintf(mess,"The meaning of single signals should be set\n"); */ + /* retval=FAIL; */ + /* } */ + + +#ifdef VERBOSE + printf("Setting external communication mode to %d\n", arg); +#endif + } else + ret=FAIL; + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&retval,sizeof(retval)); + if (retval!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&ret,sizeof(ret)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return retval; +} + + + +int get_id(int file_des) { + // sends back 64 bits! + int64_t retval=-1; + int ret=OK; + int n=0; + enum idMode arg; + + sprintf(mess,"Can't return id\n"); + + /* receive arguments */ + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + +#ifdef VERBOSE + printf("Getting id %d\n", arg); +#endif + + switch (arg) { + case DETECTOR_SERIAL_NUMBER: + retval=getDetectorNumber(); + break; + case DETECTOR_FIRMWARE_VERSION: + retval=getFirmwareSVNVersion(); + retval=(retval <<32) | getFirmwareVersion(); + break; + case DETECTOR_SOFTWARE_VERSION: + retval= SVNREV; + retval= (retval <<32) | SVNDATE; + break; +/* case DETECTOR_FIRMWARE_SVN_VERSION: + retval=getFirmwareSVNVersion(); + break;*/ + default: + printf("Required unknown id %d \n", arg); + ret=FAIL; + retval=FAIL; + break; + } + +#ifdef VERBOSE + printf("Id is %llx\n", retval); +#endif + + if (differentClients==1) + ret=FORCE_UPDATE; + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return ret; + +} + +int digital_test(int file_des) { + + int retval; + int ret=OK; + int imod=-1; + int n=0; + int ibit=0; + int ow; + int ival; + enum digitalTestMode arg; + + sprintf(mess,"Can't send digital test\n"); + + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + +#ifdef VERBOSE + printf("Digital test mode %d\n",arg ); +#endif + + switch (arg) { + case CHIP_TEST: + n = receiveDataOnly(file_des,&imod,sizeof(imod)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + retval=FAIL; + } +#ifdef VERBOSE + printf("of module %d\n", imod); +#endif + retval=0; +#ifdef MCB_FUNCS + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + break; + } + if (imod >= nModX) { + ret=FAIL; + sprintf(mess,"Module %d disabled\n",imod); + break; + } + if (testShiftIn(imod)) retval|=(1<<(ibit)); + ibit++; + if (testShiftOut(imod)) retval|=(1<<(ibit)); + ibit++; + if (testShiftStSel(imod)) retval|=(1<<(ibit)); + ibit++; + //if ( testDataInOut(0x123456, imod)) retval|=(1<<(ibit++)); + //if ( testExtPulse(imod)) retval|=(1<<(ibit++)); + // for (ow=0; ow<6; ow++) + // ow=1; + //#ifndef PICASSOD + for (ow=0; ow<5; ow++) { + //#endif + if (testDataInOutMux(imod, ow, 0x789abc)) retval|=(1<=getNModBoard()) + ret=FAIL; + if (imod<0) + imod=ALLMOD; + +#ifdef MCB_FUNCS + switch (ind) { + case V_DAC0 : + idac=VDAC0; + break; + case V_DAC1: + idac=VDAC1; + break; + case V_DAC2: + idac=VDAC2; + break; + case V_DAC3: + idac=VDAC3; + break; + case V_DAC4: + idac=VDAC4; + break; + case V_DAC5: + idac=VDAC5; + break; + case V_DAC6: + idac=VDAC6; + break; + case V_DAC7: + idac=VDAC7; + break; + case HV_POT: + idac=HIGH_VOLTAGE; + break; + + default: + printf("Unknown DAC index %d for Moench\n",ind); + sprintf(mess,"Unknown DAC index %d for Moench\n",ind); + ret=FAIL; + break; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else{ + if(idac==HIGH_VOLTAGE) + retval=initHighVoltageByModule(val,imod); + else + retval=initDACbyIndexDACU(idac,val,imod); + } + } + if(ret==OK){ + ret=FAIL; + if(idac==HIGH_VOLTAGE){ + if(retval==-2) + strcpy(mess,"Invalid Voltage.Valid values are 0,90,110,120,150,180,200"); + else if(retval==-3) + strcpy(mess,"Weird value read back or it has not been set yet\n"); + else + ret=OK; + }//since v r saving only msb + else if ((retval-val)<=3 || val==-1) + ret=OK; + } +#endif + +#ifdef VERBOSE + printf("DAC set to %d V\n", retval); +#endif + + if(ret==FAIL) + printf("Setting dac %d of module %d: wrote %d but read %d\n", ind, imod, val, retval); + else{ + if (differentClients) + ret=FORCE_UPDATE; + } + + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + + /*return ok/fail*/ + return ret; + +} + + + +int get_adc(int file_des) { + //default: mod 0 + int retval; + int ret=OK; + int arg[2]; + enum dacIndex ind; + int imod; + int n; + int idac=0; + + sprintf(mess,"Can't read ADC\n"); + + + n = receiveDataOnly(file_des,arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + ind=arg[0]; + imod=arg[1]; + +#ifdef VERBOSE + printf("Getting ADC %d of module %d\n", ind, imod); +#endif + + if (imod>=getNModBoard() || imod<0) + ret=FAIL; + +#ifdef MCB_FUNCS + switch (ind) { + case TEMPERATURE_FPGA: + idac=TEMP_FPGA; + break; + case TEMPERATURE_ADC: + idac=TEMP_ADC; + break; + default: + printf("Unknown DAC index %d\n",ind); + sprintf(mess,"Unknown DAC index %d\n",ind); + ret=FAIL; + break; + } + + if (ret==OK) + retval=getTemperatureByModule(idac,imod); +#endif + +#ifdef VERBOSE + printf("ADC is %d V\n", retval); +#endif + if (ret==FAIL) { + printf("Getting adc %d of module %d failed\n", ind, imod); + } + + if (differentClients) + ret=FORCE_UPDATE; + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return ret; + +} + +int set_channel(int file_des) { + int ret=OK; + sls_detector_channel myChan; + int retval; + int n; + + + sprintf(mess,"Can't set channel\n"); + +#ifdef VERBOSE + printf("Setting channel\n"); +#endif + ret=receiveChannel(file_des, &myChan); + if (ret>=0) + ret=OK; + else + ret=FAIL; +#ifdef VERBOSE + printf("channel number is %d, chip number is %d, module number is %d, register is %lld\n", myChan.chan,myChan.chip, myChan.module, myChan.reg); +#endif + + if (ret==OK) { + if (myChan.module>=getNModBoard()) + ret=FAIL; + if (myChan.chip>=NCHIP) + ret=FAIL; + if (myChan.chan>=NCHAN) + ret=FAIL; + if (myChan.module<0) + myChan.module=ALLMOD; + } + + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { +#ifdef MCB_FUNCS + retval=initChannelbyNumber(myChan); +#endif + } + } + /* Maybe this is done inside the initialization funcs */ + //copyChannel(detectorChans[myChan.module][myChan.chip]+(myChan.chan), &myChan); + + + + if (differentClients==1 && ret==OK) + ret=FORCE_UPDATE; + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + + /*return ok/fail*/ + return ret; + +} + + + + +int get_channel(int file_des) { + + int ret=OK; + sls_detector_channel retval; + + int arg[3]; + int ichan, ichip, imod; + int n; + + sprintf(mess,"Can't get channel\n"); + + + + n = receiveDataOnly(file_des,arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + ichan=arg[0]; + ichip=arg[1]; + imod=arg[2]; + + if (ret==OK) { + ret=FAIL; + if (imod>=0 && imod=0 && ichip=0 && ichan=0) + ret=OK; + else + ret=FAIL; +#ifdef VERBOSE + printf("chip number is %d, module number is %d, register is %d, nchan %d\n",myChip.chip, myChip.module, myChip.reg, myChip.nchan); +#endif + + if (ret==OK) { + if (myChip.module>=getNModBoard()) + ret=FAIL; + if (myChip.module<0) + myChip.module=ALLMOD; + if (myChip.chip>=NCHIP) + ret=FAIL; + } + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { +#ifdef MCB_FUNCS + retval=initChipbyNumber(myChip); +#endif + } + /* Maybe this is done inside the initialization funcs */ + //copyChip(detectorChips[myChip.module]+(myChip.chip), &myChip); + + if (differentClients && ret==OK) + ret=FORCE_UPDATE; + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + + return ret; +} + +int get_chip(int file_des) { + + + int ret=OK; + sls_detector_chip retval; + int arg[2]; + int ichip, imod; + int n; + + + + n = receiveDataOnly(file_des,arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + ichip=arg[0]; + imod=arg[1]; + if (ret==OK) { + ret=FAIL; + if (imod>=0 && imod=0 && ichip=0) + ret=OK; + else + ret=FAIL; + + +#ifdef VERBOSE + printf("module number is %d,register is %d, nchan %d, nchip %d, ndac %d, nadc %d, gain %f, offset %f\n",myModule.module, myModule.reg, myModule.nchan, myModule.nchip, myModule.ndac, myModule.nadc, myModule.gain,myModule.offset); +#endif + + if (ret==OK) { + if (myModule.module>=getNModBoard()) { + ret=FAIL; + printf("Module number is too large %d\n",myModule.module); + } + if (myModule.module<0) + myModule.module=ALLMOD; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { +#ifdef MCB_FUNCS + retval=initModulebyNumber(myModule); +#endif + } + } + + if (differentClients==1 && ret==OK) + ret=FORCE_UPDATE; + + /* Maybe this is done inside the initialization funcs */ + //copyChip(detectorChips[myChip.module]+(myChip.chip), &myChip); + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + free(myChip); + free(myChan); + free(myDac); + free(myAdc); + + // setDynamicRange(dr); always 16 commented out + + + return ret; +} + + + + +int get_module(int file_des) { + + + int ret=OK; + + + int arg; + int imod; + int n; + + + + sls_detector_module myModule; + int *myChip=malloc(NCHIP*sizeof(int)); + int *myChan=malloc(NCHIP*NCHAN*sizeof(int)); + int *myDac=malloc(NDAC*sizeof(int));/**dhanya*/ + int *myAdc=malloc(NADC*sizeof(int));/**dhanya*/ + + + if (myDac) + myModule.dacs=myDac; + else { + sprintf(mess,"could not allocate dacs\n"); + ret=FAIL; + } + if (myAdc) + myModule.adcs=myAdc; + else { + sprintf(mess,"could not allocate adcs\n"); + ret=FAIL; + } + if (myChip) + myModule.chipregs=myChip; + else { + sprintf(mess,"could not allocate chips\n"); + ret=FAIL; + } + if (myChan) + myModule.chanregs=myChan; + else { + sprintf(mess,"could not allocate chans\n"); + ret=FAIL; + } + + myModule.ndac=NDAC; + myModule.nchip=NCHIP; + myModule.nchan=NCHAN*NCHIP; + myModule.nadc=NADC; + + + + + + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + imod=arg; + + if (ret==OK) { + ret=FAIL; + if (imod>=0 && imod-2) { + dataret=FAIL; + sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+2)); + printf("%s\n",mess); + } else { + dataret=FINISHED; + sprintf(mess,"acquisition successfully finished\n"); + printf("%s\n",mess); + } +#ifdef VERYVERBOSE + printf("%d %d %x %s\n",(int)(sizeof(mess)),(int)(strlen(mess)),(unsigned int)( mess),mess); +#endif + sendDataOnly(file_des,&dataret,sizeof(dataret)); + sendDataOnly(file_des,mess,sizeof(mess)); +#ifdef VERYVERBOSE + printf("message sent %s\n",mess); +#endif + printf("dataret %d\n",dataret); + return dataret; + } + } else { + nframes=0; + while(fifo_read_event()) { + nframes++; + } + dataretval=(char*)ram_values; + dataret=OK; +#ifdef VERBOSE + printf("sending data of %d frames\n",nframes); +#endif + for (iframes=0; iframes-2) { + dataret=FAIL; + sprintf(mess,"no data and run stopped: %d frames left\n",(int)(getFrames()+2)); + printf("%s\n",mess); + } else { + dataret=FINISHED; + sprintf(mess,"acquisition successfully finished\n"); + printf("%s\n",mess); + if (differentClients) + dataret=FORCE_UPDATE; + } +#ifdef VERBOSE + printf("Frames left %d\n",(int)(getFrames())); +#endif + sendDataOnly(file_des,&dataret,sizeof(dataret)); + sendDataOnly(file_des,mess,sizeof(mess)); + printf("dataret %d\n",dataret); + return dataret; + } + printf("dataret %d\n",dataret); + return dataret; +} + + + + + + + + +int read_all(int file_des) { + +while(read_frame(file_des)==OK) { + +#ifdef VERBOSE + printf("frame read\n"); +#endif + ; + } +#ifdef VERBOSE + printf("Frames finished\n"); +#endif + return OK; + + +} + +int start_and_read_all(int file_des) { + //int dataret=OK; +#ifdef VERBOSE + printf("Starting and reading all frames\n"); +#endif + + if (differentClients==1 && lockStatus==1) { + dataret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + sendDataOnly(file_des,&dataret,sizeof(dataret)); + sendDataOnly(file_des,mess,sizeof(mess)); + return dataret; + + } + + startStateMachine(); + + /* ret=startStateMachine(); + if (ret!=OK) { + sprintf(mess,"could not start state machine\n"); + sendDataOnly(file_des,&ret,sizeof(ret)); + sendDataOnly(file_des,mess,sizeof(mess)); + + #ifdef VERBOSE + printf("could not start state machine\n"); +#endif +} else {*/ + read_all(file_des); +#ifdef VERBOSE + printf("Frames finished\n"); +#endif + //} + + + return OK; + + +} + +int set_timer(int file_des) { + enum timerIndex ind; + int64_t tns; + int n; + int64_t retval; + int ret=OK; + + + sprintf(mess,"can't set timer\n"); + + n = receiveDataOnly(file_des,&ind,sizeof(ind)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + n = receiveDataOnly(file_des,&tns,sizeof(tns)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret!=OK) { + printf(mess); + } + +#ifdef VERBOSE + printf("setting timer %d to %lld ns\n",ind,tns); +#endif + if (ret==OK) { + + if (differentClients==1 && lockStatus==1 && tns!=-1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + switch(ind) { + case FRAME_NUMBER: + retval=setFrames(tns); + break; + case ACQUISITION_TIME: + retval=setExposureTime(tns); + break; + case FRAME_PERIOD: + retval=setPeriod(tns); + break; + case DELAY_AFTER_TRIGGER: + retval=setDelay(tns); + break; + case GATES_NUMBER: + retval=setGates(tns); + break; + case PROBES_NUMBER: + sprintf(mess,"can't set timer for moench\n"); + ret=FAIL; + break; + case CYCLES_NUMBER: + retval=setTrains(tns); + break; + default: + ret=FAIL; + sprintf(mess,"timer index unknown %d\n",ind); + break; + } + } + } + if (ret!=OK) { + printf(mess); + if (differentClients) + ret=FORCE_UPDATE; + } + + if (ret!=OK) { + printf(mess); + printf("set timer failed\n"); + } else if (ind==FRAME_NUMBER) { + ret=allocateRAM(); + if (ret!=OK) + sprintf(mess, "could not allocate RAM for %lld frames\n", tns); + } + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n = sendDataOnly(file_des,mess,sizeof(mess)); + } else { +#ifdef VERBOSE + printf("returning ok %d\n",(int)(sizeof(retval))); +#endif + + n = sendDataOnly(file_des,&retval,sizeof(retval)); + } + + return ret; + +} + + + + + + + + +int get_time_left(int file_des) { + + enum timerIndex ind; + int n; + int64_t retval; + int ret=OK; + + sprintf(mess,"can't get timer\n"); + n = receiveDataOnly(file_des,&ind,sizeof(ind)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + + //#ifdef VERBOSE + + printf("getting time left on timer %d \n",ind); + //#endif + + if (ret==OK) { + switch(ind) { + case FRAME_NUMBER: + printf("getting frames \n"); + retval=getFrames(); + break; + case ACQUISITION_TIME: + retval=getExposureTime(); + break; + case FRAME_PERIOD: + retval=getPeriod(); + break; + case DELAY_AFTER_TRIGGER: + retval=getDelay(); + break; + case GATES_NUMBER: + retval=getGates(); + break; + case PROBES_NUMBER: + retval=getProbes(); + break; + case CYCLES_NUMBER: + retval=getTrains(); + break; + case PROGRESS: + retval=getProgress(); + break; + case ACTUAL_TIME: + retval=getActualTime(); + break; + case MEASUREMENT_TIME: + retval=getMeasurementTime(); + break; + default: + ret=FAIL; + sprintf(mess,"timer index unknown %d\n",ind); + break; + } + } + + + if (ret!=OK) { + printf("get time left failed\n"); + } else if (differentClients) + ret=FORCE_UPDATE; + + //#ifdef VERBOSE + + printf("time left on timer %d is %lld\n",ind, retval); + //#endif + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=OK) { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } else { + n = sendDataOnly(file_des,&retval,sizeof(retval)); + } +#ifdef VERBOSE + + printf("data sent\n"); +#endif + + return ret; + + +} + +int set_dynamic_range(int file_des) { + + + + int dr; + int n; + int retval; + int ret=OK; + + + sprintf(mess,"can't set dynamic range\n"); + + + n = receiveDataOnly(file_des,&dr,sizeof(dr)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + + if (differentClients==1 && lockStatus==1 && dr>=0) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + retval=setDynamicRange(dr); + } + + //if (dr>=0 && retval!=dr) ret=FAIL; + if (ret!=OK) { + sprintf(mess,"set dynamic range failed\n"); + } else { + ret=allocateRAM(); + if (ret!=OK) + sprintf(mess,"Could not allocate RAM for the dynamic range selected\n"); + else if (differentClients) + ret=FORCE_UPDATE; + } + + 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 set_roi(int file_des) { + + int i; + int ret=OK; + int nroi=-1; + int n=0; + int retvalsize=0; + ROI arg[MAX_ROIS]; + ROI* retval=0; + + strcpy(mess,"Could not set/get roi\n"); + + + n = receiveDataOnly(file_des,&nroi,sizeof(nroi)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if(nroi!=-1){ + n = receiveDataOnly(file_des,arg,nroi*sizeof(ROI)); + if (n != (nroi*sizeof(ROI))) { + sprintf(mess,"Received wrong number of bytes for ROI\n"); + ret=FAIL; + } +//#ifdef VERBOSE + /* + printf("Setting ROI to:"); + for( i=0;i=0) { + if (differentClients==1 && lockStatus==1 && val>=0) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + switch (arg) { + case CLOCK_DIVIDER: + retval=setClockDivider(val); + break; + + case PHASE_SHIFT: + retval=phaseStep(val); + break; + + case OVERSAMPLING: + retval=setOversampling(val); + break; + + default: + ret=FAIL; + sprintf(mess,"Unknown speed parameter %d",arg); + } + } + } + + + switch (arg) { + case CLOCK_DIVIDER: + retval=getClockDivider(); + break; + + case PHASE_SHIFT: + retval=phaseStep(-1); + break; + + case OVERSAMPLING: + retval=setOversampling(-1); + break; + + default: + ret=FAIL; + sprintf(mess,"Unknown speed parameter %d",arg); + } + } + + + + 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 set_readout_flags(int file_des) { + + enum readOutFlags arg; + int n; + int ret=FAIL; + + + receiveDataOnly(file_des,&arg,sizeof(arg)); + + sprintf(mess,"can't set readout flags for moench\n"); + + sendDataOnly(file_des,&ret,sizeof(ret)); + sendDataOnly(file_des,mess,sizeof(mess)); + + return ret; +} + + + + + +int execute_trimming(int file_des) { + + int arg[3]; + int ret=FAIL; + enum trimMode mode; + + sprintf(mess,"can't set execute trimming for moench\n"); + + receiveDataOnly(file_des,&mode,sizeof(mode)); + receiveDataOnly(file_des,arg,sizeof(arg)); + + + sendDataOnly(file_des,&ret,sizeof(ret)); + sendDataOnly(file_des,mess,sizeof(mess)); + + return ret; +} + + +int lock_server(int file_des) { + + + int n; + int ret=OK; + + int lock; + n = receiveDataOnly(file_des,&lock,sizeof(lock)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + printf("Error reading from socket (lock)\n"); + ret=FAIL; + } + if (lock>=0) { + if (lockStatus==0 || strcmp(lastClientIP,thisClientIP)==0 || strcmp(lastClientIP,"none")==0) + lockStatus=lock; + else { + ret=FAIL; + sprintf(mess,"Server already locked by %s\n", lastClientIP); + } + } + if (differentClients && ret==OK) + ret=FORCE_UPDATE; + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n = sendDataOnly(file_des,mess,sizeof(mess)); + } else + n = sendDataOnly(file_des,&lockStatus,sizeof(lockStatus)); + + return ret; + +} + +int set_port(int file_des) { + int n; + int ret=OK; + int sd=-1; + + enum portType p_type; /** data? control? stop? Unused! */ + int p_number; /** new port number */ + + n = receiveDataOnly(file_des,&p_type,sizeof(p_type)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + printf("Error reading from socket (ptype)\n"); + ret=FAIL; + } + + n = receiveDataOnly(file_des,&p_number,sizeof(p_number)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + printf("Error reading from socket (pnum)\n"); + ret=FAIL; + } + if (differentClients==1 && lockStatus==1 ) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + if (p_number<1024) { + sprintf(mess,"Too low port number %d\n", p_number); + printf("\n"); + ret=FAIL; + } + + printf("set port %d to %d\n",p_type, p_number); + + sd=bindSocket(p_number); + } + if (sd>=0) { + ret=OK; + if (differentClients ) + ret=FORCE_UPDATE; + } else { + ret=FAIL; + sprintf(mess,"Could not bind port %d\n", p_number); + printf("Could not bind port %d\n", p_number); + if (sd==-10) { + sprintf(mess,"Port %d already set\n", p_number); + printf("Port %d already set\n", p_number); + + } + } + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) { + n = sendDataOnly(file_des,mess,sizeof(mess)); + } else { + n = sendDataOnly(file_des,&p_number,sizeof(p_number)); + closeConnection(file_des); + exitServer(sockfd); + sockfd=sd; + + } + + return ret; + +} + +int get_last_client_ip(int file_des) { + int ret=OK; + int n; + if (differentClients ) + ret=FORCE_UPDATE; + n = sendDataOnly(file_des,&ret,sizeof(ret)); + n = sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); + + return ret; + +} + + +int send_update(int file_des) { + + int ret=OK; + enum detectorSettings t; + int n;//int thr, n; + //int it; + int64_t retval, tns=-1; + n = sendDataOnly(file_des,lastClientIP,sizeof(lastClientIP)); + n = sendDataOnly(file_des,&nModX,sizeof(nModX)); + n = sendDataOnly(file_des,&nModY,sizeof(nModY)); + n = sendDataOnly(file_des,&dynamicRange,sizeof(dynamicRange)); + n = sendDataOnly(file_des,&dataBytes,sizeof(dataBytes)); + t=setSettings(GET_SETTINGS,-1); + n = sendDataOnly(file_des,&t,sizeof(t)); +/* thr=getThresholdEnergy(); + n = sendDataOnly(file_des,&thr,sizeof(thr));*/ + retval=setFrames(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + retval=setExposureTime(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + retval=setPeriod(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + retval=setDelay(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + retval=setGates(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); +/* retval=setProbes(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t));*/ + retval=setTrains(tns); + n = sendDataOnly(file_des,&retval,sizeof(int64_t)); + + if (lockStatus==0) { + strcpy(lastClientIP,thisClientIP); + } + + return ret; + + +} +int update_client(int file_des) { + + int ret=OK; + + sendDataOnly(file_des,&ret,sizeof(ret)); + return send_update(file_des); + + + +} + + +int configure_mac(int file_des) { + + int ret=OK; + char arg[5][50]; + int n; + + int imod=0;//should be in future sent from client as -1, arg[2] + int ipad; + long long int imacadd; + long long int idetectormacadd; + int udpport; + int detipad; + int retval=-100; + + sprintf(mess,"Can't configure MAC\n"); + + + n = receiveDataOnly(file_des,arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + sscanf(arg[0], "%x", &ipad); + sscanf(arg[1], "%llx", &imacadd); + sscanf(arg[2], "%x", &udpport); + sscanf(arg[3], "%llx", &idetectormacadd); + sscanf(arg[4], "%x", &detipad); + +#ifdef VERBOSE + int i; + printf("\ndigital_test_bit in server %d\t",digitalTestBit); + printf("\nipadd %x\t",ipad); + printf("destination ip is %d.%d.%d.%d = 0x%x \n",(ipad>>24)&0xff,(ipad>>16)&0xff,(ipad>>8)&0xff,(ipad)&0xff,ipad); + printf("macad:%llx\n",imacadd); + for (i=0;i<6;i++) + printf("mac adress %d is 0x%x \n",6-i,(unsigned int)(((imacadd>>(8*i))&0xFF))); + printf("udp port:0x%x\n",udpport); + printf("detector macad:%llx\n",idetectormacadd); + for (i=0;i<6;i++) + printf("detector mac adress %d is 0x%x \n",6-i,(unsigned int)(((idetectormacadd>>(8*i))&0xFF))); + printf("detipad %x\n",detipad); + printf("\n"); +#endif + + + + if (imod>=getNModBoard()) + ret=FAIL; + if (imod<0) + imod=ALLMOD; + + //#ifdef VERBOSE + printf("Configuring MAC of module %d at port %x\n", imod, udpport); + //#endif +#ifdef MCB_FUNCS + if (ret==OK){ + if(runBusy()){ + ret=stopStateMachine(); + if(ret==FAIL) + strcpy(mess,"could not stop detector acquisition to configure mac"); + } + + if(ret==OK) + configureMAC(ipad,imacadd,idetectormacadd,detipad,digitalTestBit,udpport); + retval=getAdcConfigured(); + } +#endif + if (ret==FAIL) + printf("configuring MAC of mod %d failed\n", imod); + else + printf("Configuremac successful of mod %d and adc %d\n",imod,retval); + + if (differentClients) + ret=FORCE_UPDATE; + + /* send answer */ + /* send OK/failed */ + 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 ok/fail*/ + return ret; + +} + + + +int load_image(int file_des) { + int retval; + int ret=OK; + int n; + enum imageType index; + short int ImageVals[NCHAN*NCHIP]; + + sprintf(mess,"Loading image failed\n"); + + n = receiveDataOnly(file_des,&index,sizeof(index)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + n = receiveDataOnly(file_des,ImageVals,dataBytes); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + switch (index) { + case DARK_IMAGE : +#ifdef VERBOSE + printf("Loading Dark image\n"); +#endif + break; + case GAIN_IMAGE : +#ifdef VERBOSE + printf("Loading Gain image\n"); +#endif + break; + default: + printf("Unknown index %d\n",index); + sprintf(mess,"Unknown index %d\n",index); + ret=FAIL; + break; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else{ + retval=loadImage(index,ImageVals); + if (retval==-1) + ret = FAIL; + } + } + + if(ret==OK){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,&retval,sizeof(retval)); + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return ret; +} + + + +int set_master(int file_des) { + + enum masterFlags retval=GET_MASTER; + enum masterFlags arg; + int n; + int ret=OK; + // int regret=OK; + + + sprintf(mess,"can't set master flags\n"); + + + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + +#ifdef VERBOSE + printf("setting master flags to %d\n",arg); +#endif + + if (differentClients==1 && lockStatus==1 && arg!=GET_READOUT_FLAGS) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + retval=setMaster(arg); + + } + if (retval==GET_MASTER) { + ret=FAIL; + } + 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 set_synchronization(int file_des) { + + enum synchronizationMode retval=GET_MASTER; + enum synchronizationMode arg; + int n; + int ret=OK; + //int regret=OK; + + + sprintf(mess,"can't set synchronization mode\n"); + + + n = receiveDataOnly(file_des,&arg,sizeof(arg)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } +#ifdef VERBOSE + printf("setting master flags to %d\n",arg); +#endif + + if (differentClients==1 && lockStatus==1 && arg!=GET_READOUT_FLAGS) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else { + //ret=setStoreInRAM(0); + // initChipWithProbes(0,0,0, ALLMOD); + retval=setSynchronization(arg); + } + if (retval==GET_SYNCHRONIZATION_MODE) { + ret=FAIL; + } + 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 read_counter_block(int file_des) { + + int ret=OK; + int n; + int startACQ; + //char *retval=NULL; + short int CounterVals[NCHAN*NCHIP]; + + sprintf(mess,"Read counter block failed\n"); + + n = receiveDataOnly(file_des,&startACQ,sizeof(startACQ)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else{ + ret=readCounterBlock(startACQ,CounterVals); +#ifdef VERBOSE + int i; + for(i=0;i<6;i++) + printf("%d:%d\t",i,CounterVals[i]); +#endif + } + } + + if(ret!=FAIL){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret!=FAIL) { + /* send return argument */ + n += sendDataOnly(file_des,CounterVals,dataBytes);//1280*2 + } else { + n += sendDataOnly(file_des,mess,sizeof(mess)); + } + + /*return ok/fail*/ + return ret; +} + + + + + +int reset_counter_block(int file_des) { + + int ret=OK; + int n; + int startACQ; + + sprintf(mess,"Reset counter block failed\n"); + + n = receiveDataOnly(file_des,&startACQ,sizeof(startACQ)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else + ret=resetCounterBlock(startACQ); + } + + if(ret==OK){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) + n += sendDataOnly(file_des,mess,sizeof(mess)); + + /*return ok/fail*/ + return ret; +} + + + + + + +int start_receiver(int file_des) { + int ret=OK; + int n=0; + strcpy(mess,"Could not start receiver\n"); + + /* execute action if the arguments correctly arrived*/ +#ifdef MCB_FUNCS + if (lockStatus==1 && differentClients==1){//necessary??? + sprintf(mess,"Detector locked by %s\n", lastClientIP); + ret=FAIL; + } + else + ret = startReceiver(1); + +#endif + + + if(ret==OK && differentClients){ + printf("Force update\n"); + ret=FORCE_UPDATE; + } + + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if(ret==FAIL) + n = sendDataOnly(file_des,mess,sizeof(mess)); + /*return ok/fail*/ + return ret; +} + + + + + + +int stop_receiver(int file_des) { + int ret=OK; + int n=0; + + strcpy(mess,"Could not stop receiver\n"); + + /* execute action if the arguments correctly arrived*/ +#ifdef MCB_FUNCS + if (lockStatus==1 && differentClients==1){//necessary??? + sprintf(mess,"Detector locked by %s\n", lastClientIP); + ret=FAIL; + } + else + ret=startReceiver(0); + +#endif + + + if(ret==OK && differentClients){ + printf("Force update\n"); + ret=FORCE_UPDATE; + } + + /* send answer */ + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if(ret==FAIL) + n = sendDataOnly(file_des,mess,sizeof(mess)); + /*return ok/fail*/ + return ret; +} + + + + + +int calibrate_pedestal(int file_des){ + + int ret=OK; + int retval=-1; + int n; + int frames; + + sprintf(mess,"Could not calibrate pedestal\n"); + + n = receiveDataOnly(file_des,&frames,sizeof(frames)); + if (n < 0) { + sprintf(mess,"Error reading from socket\n"); + ret=FAIL; + } + + if (ret==OK) { + if (differentClients==1 && lockStatus==1) { + ret=FAIL; + sprintf(mess,"Detector locked by %s\n",lastClientIP); + } else + ret=calibratePedestal(frames); + } + + if(ret==OK){ + if (differentClients) + ret=FORCE_UPDATE; + } + + /* send answer */ + /* send OK/failed */ + 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 ok/fail*/ + return ret; +} + + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h new file mode 100755 index 000000000..5e371278a --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h @@ -0,0 +1,97 @@ +#ifndef SERVER_FUNCS_H +#define SERVER_FUNCS_H + + +#include "sls_detector_defs.h" + + +#include +/* +#include +#include +#include +*/ +#include "communication_funcs.h" + + + + +#define GOODBYE -200 + +int sockfd; + +int function_table(); + +int decode_function(int); +int init_detector(int,int); + +int M_nofunc(int); +int exit_server(int); + + + + +// General purpose functions +int get_detector_type(int); +int set_number_of_modules(int); +int get_max_number_of_modules(int); + + +int exec_command(int); +int set_external_signal_flag(int); +int set_external_communication_mode(int); +int get_id(int); +int digital_test(int); +int write_register(int); +int read_register(int); +int set_dac(int); +int get_adc(int); +int set_channel(int); +int set_chip(int); +int set_module(int); +int get_channel(int); +int get_chip(int); +int get_module(int); + +int get_threshold_energy(int); +int set_threshold_energy(int); +int set_settings(int); +int start_acquisition(int); +int stop_acquisition(int); +int start_readout(int); +int get_run_status(int); +int read_frame(int); +int read_all(int); +int start_and_read_all(int); +int set_timer(int); +int get_time_left(int); +int set_dynamic_range(int); +int set_roi(int); +int get_roi(int); +int set_speed(int); +void prepareADC(void); +int set_readout_flags(int); +int execute_trimming(int); +int lock_server(int); +int set_port(int); +int get_last_client_ip(int); +int set_master(int); +int set_synchronization(int); + +int update_client(int); +int send_update(int); +int configure_mac(int); + +int load_image(int); +int read_counter_block(int); +int reset_counter_block(int); + +int start_receiver(int); +int stop_receiver(int); + + +int calibrate_pedestal(int); + +int set_roi(int); + +#endif diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.c b/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.c new file mode 100755 index 000000000..4504cfe05 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.c @@ -0,0 +1,39 @@ +#include "sharedmemory.h" + +struct statusdata *stdata; + +int inism(int clsv) { + +static int scansmid; + + if (clsv==SMSV) { + if ( (scansmid=shmget(SMKEY,1024,IPC_CREAT | 0666 ))==-1 ) { + return -1; + } + if ( (stdata=shmat(scansmid,NULL,0))==(void*)-1) { + return -2; + } + } + + if (clsv==SMCL) { + if ( (scansmid=shmget(SMKEY,0,0) )==-1 ) { + return -3; + } + if ( (stdata=shmat(scansmid,NULL,0))==(void*)-1) { + return -4; + } + } + return 1; +} + +void write_status_sm(char *status) { + strcpy(stdata->status,status); +} + +void write_stop_sm(int v) { + stdata->stop=v; +} + +void write_runnumber_sm(int v) { + stdata->runnumber=v; +} diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.h b/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.h new file mode 100755 index 000000000..bdbddf719 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sharedmemory.h @@ -0,0 +1,48 @@ +#ifndef SM +#define SM + +#include "sls_detector_defs.h" + +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include + + +#include + +#include +#include + +/* key for shared memory */ +#define SMKEY 10001 + +#define SMSV 1 +#define SMCL 2 + + +struct statusdata { + int runnumber; + int stop; + char status[20]; +} ; + + +/* for shared memory */ + +int inism(int clsv); +void write_status_sm(char *status); +void write_stop_sm(int v); +void write_runnumber_sm(int v); + +#endif diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_defs.h b/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_defs.h new file mode 120000 index 000000000..c5062e03f --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_defs.h @@ -0,0 +1 @@ +../commonFiles/sls_detector_defs.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_funcs.h new file mode 120000 index 000000000..844b67129 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sls_detector_funcs.h @@ -0,0 +1 @@ +../commonFiles/sls_detector_funcs.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_defs.h b/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_defs.h new file mode 120000 index 000000000..a07bf98e7 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_defs.h @@ -0,0 +1 @@ +../../slsReceiverSoftware/includes/sls_receiver_defs.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_funcs.h new file mode 120000 index 000000000..67df52bf4 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/sls_receiver_funcs.h @@ -0,0 +1 @@ +../../slsReceiverSoftware/includes/sls_receiver_funcs.h \ No newline at end of file diff --git a/slsDetectorSoftware/jungfrauDetectorServer/stop_server.c b/slsDetectorSoftware/jungfrauDetectorServer/stop_server.c new file mode 100755 index 000000000..e3c8ff7e1 --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/stop_server.c @@ -0,0 +1,46 @@ +/* A simple server in the internet domain using TCP + The port number is passed as an argument */ + + +#include "sls_detector_defs.h" + + +#include "communication_funcs.h" +#include "firmware_funcs.h" + + +int sockfd; + +int main(int argc, char *argv[]) +{ + int portno; + int retval=0; + + portno = DEFAULT_PORTNO; + + + bindSocket(portno); + if (getServerError()) + return -1; + + + + /* waits for connection */ + while(retval!=GOODBYE) { +#ifdef VERBOSE + printf("\n"); +#endif +#ifdef VERY_VERBOSE + printf("Stop server: waiting for client call\n"); +#endif + acceptConnection(); + retval=stopStateMachine(); + closeConnection(); + } + + exitServer(); + printf("Goodbye!\n"); + + return 0; +} + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c new file mode 100755 index 000000000..9a28b9b4a --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.c @@ -0,0 +1,749 @@ +#ifndef PICASSOD +#include "server_defs.h" +#else +#include "picasso_defs.h" +#endif +#include "trimming_funcs.h" +#include "mcb_funcs.h" +#include "firmware_funcs.h" +#include + + + +extern int nModX; +//extern int *values; + +extern const int nChans; +extern const int nChips; +extern const int nDacs; +extern const int nAdcs; + + +int trim_fixed_settings(int countlim, int par2, int im) +{ + + int retval=OK; +#ifdef VERBOSE + printf("Trimming with fixed settings\n"); +#endif +#ifdef VIRTUAL + return OK; +#endif + + if (par2<=0) + retval=trim_with_level(countlim, im); + else + retval=trim_with_median(countlim,im); + + + return retval; +} + + +int trim_with_noise(int countlim, int nsigma, int im) +{ + + + int retval=OK, retval1=OK, retval2=OK; +#ifdef VERBOSE + printf("Trimming using noise\n"); +#endif +#ifdef VIRTUAL + return OK; +#endif + + /* threshold scan */ + +#ifdef VERBOSE + printf("chosing vthresh and vtrim....."); +#endif + retval1=choose_vthresh_and_vtrim(countlim,nsigma, im); + +#ifdef VERBOSE + printf("trimming with noise.....\n"); +#endif + retval2=trim_with_level(countlim, im); + +#ifdef DEBUGOUT + printf("done\n"); +#endif + if (retval1==OK && retval2==OK) + retval=OK; + else + retval=FAIL; + + return retval; + +} + +int trim_with_beam(int countlim, int nsigma, int im) //rpc +{ + + + int retval=OK, retval1=OK, retval2=OK; + + printf("Trimming using beam\n"); + //return OK; +#ifdef VIRTUAL + printf("Trimming using beam\n"); + return OK; +#endif + /* threshold scan */ +#ifdef DEBUGOUT + printf("chosing vthresh and vtrim....."); +#endif + + retval1=choose_vthresh_and_vtrim(countlim,nsigma,im); + retval2=trim_with_median(TRIM_DR, im); + +#ifdef DEBUGOUT + printf("done\n"); +#endif + + if (retval1==OK && retval2==OK) + retval=OK; + else + retval=FAIL; + + return retval; + +} + + +int trim_improve(int maxit, int par2, int im) //rpc +{ + + int retval=OK, retval1=OK, retval2=OK; + + +#ifdef VERBOSE + printf("Improve the trimming\n"); +#endif +#ifdef VIRTUAL + return OK; +#endif + + + if (par2!=0 && im==ALLMOD) + retval1=choose_vthresh(); + + retval2=trim_with_median(2*maxit+1, im); +#ifdef DEBUGOUT + printf("done\n"); +#endif + if (retval1==OK && retval2==OK) + retval=OK; + else + retval=FAIL; + + return retval; + +} + +int calcthr_from_vcal(int vcal) { + int thrmin; + //thrmin=140+3*vcal/5; + thrmin=180+3*vcal/5; + return thrmin; +} + +int calccal_from_vthr(int vthr) { + int vcal; + vcal=5*(vthr-140)/3; + return vcal; +} + +int choose_vthresh_and_vtrim(int countlim, int nsigma, int im) { + int retval=OK; +#ifdef MCB_FUNCS + int modma, modmi, nm; + int thr, thrstep=5, nthr=31; + + int *fifodata; + + double vthreshmean, vthreshSTDev; + int *thrmi, *thrma; + double c; + double b=BVTRIM; + double a=AVTRIM; + int *trim; + int ich, imod, ichan; + int nvalid=0; + u_int32_t *scan; + int ithr; + sls_detector_channel myChan; + + + + setFrames(1); + // setNMod(getNModBoard()); + + if (im==ALLMOD){ + modmi=0; + modma=nModX; + } else { + modmi=im; + modma=im+1; + } + nm=modma-modmi; + + trim=malloc(sizeof(int)*nChans*nChips*nModX); + thrmi=malloc(sizeof(int)*nModX); + thrma=malloc(sizeof(int)*nModX); + + + for (ich=0; ichcountlim && trim[ich]==-1) { +//commented out by dhanya trim[ich]=getDACbyIndexDACU(VTHRESH,imod); +#ifdef VERBOSE + // printf("yes: %d %d %d\n",ich,ithr,scan[ich]); +#endif + } +#ifdef VERBOSE + /* else { + printf("no: %d %d %d\n",ich,ithr,scan[ich]); + }*/ +#endif + } + } + free(scan); + } + + for (imod=modmi; imodthrmi[imod] && trim[ich]0) { + vthreshmean=vthreshmean/nvalid; + //commented out by dhanya vthreshSTDev=sqrt((vthreshSTDev/nvalid)-vthreshmean*vthreshmean); + } else { + vthreshmean=thrmi[imod]; + vthreshSTDev=nthr*thrstep; + printf("No valid channel for module %d\n",imod); + retval=FAIL; + } + +#ifdef DEBUGOUT + printf("module= %d nvalid = %d mean=%f RMS=%f\n",imod, nvalid, vthreshmean,vthreshSTDev); +#endif + // *vthresh=round(vthreshmean-nsigma*vthreshSTDev); + thr=(int)(vthreshmean-nsigma*vthreshSTDev); + if (thr<0 || thr>(DAC_DR-1)) { + thr=thrmi[imod]/2; + printf("Can't find correct threshold for module %d\n",imod); + retval=FAIL; + } +//commented out by dhanya initDACbyIndexDACU(VTHRESH,thr,imod); +#ifdef VERBOSE + printf("vthresh=%d \n",thr); +#endif + c=CVTRIM-2.*nsigma*vthreshSTDev/63.; + //commented out by dhanya thr=(int)((-b-sqrt(b*b-4*a*c))/(2*a)); + if (thr<500 || thr>(DAC_DR-1)) { + thr=750; + printf("Can't find correct trimbit size for module %d\n",imod); + retval=FAIL; + } + + //commented out by dhanya initDACbyIndexDACU(VTRIM,thr,imod); + +#ifdef VERBOSE + printf("vtrim=%d \n",thr); +#endif + + } + free(trim); + free(thrmi); + free(thrma); + +#endif + return retval; +} + + + + + +int trim_with_level(int countlim, int im) { + int ich, itrim, ichan, ichip, imod; + u_int32_t *scan; + int *inttrim; + int modma, modmi, nm; + int retval=OK; + int *fifodata; + sls_detector_channel myChan; + printf("trimming module number %d", im); + + +#ifdef MCB_FUNCS + setFrames(1); + // setNMod(getNModBoard()); + + if (im==ALLMOD){ + modmi=0; + modma=nModX; + } else { + modmi=im; + modma=im+1; + } + nm=modma-modmi; + + inttrim=malloc(sizeof(int)*nChips*nChans*nModX); + printf("countlim=%d\n",countlim); + for (ich=0; ichcountlim){ + inttrim[ich]=itrim; + if (scan[ich]>2*countlim && itrim>0) { + //if (scan[ich]>2*countlim || itrim==0) { + inttrim[ich]=itrim-1; + } +#ifdef VERBOSE + printf("Channel %d trimbit %d counted %d (%08x) countlim %d\n",ich,itrim,scan[ich],fifodata[ich],countlim); +#endif + } + } +#ifdef VERBOSE + /* else + printf("Channel %d trimbit %d counted %d countlim %d\n",ich,itrim,scan[ich],countlim);*/ +#endif + } + } + free(scan); + } + + for (imod=modmi; imod0) + direction[ichan]=1; + else + direction[ichan]=-1; + } + //commented out by dhanya vthresh=getDACbyIndexDACU(VTHRESH,imod); + if ( direction[ichan]!=-3) { + if (abs(diff)>abs(olddiff[ichan])) { + vthresh=vthresh-direction[ichan]; + if (vthresh>(DAC_DR-1)) { + vthresh=(DAC_DR-1); + printf("can't equalize threshold for module %d\n", ichan); + retval=FAIL; + } + if (vthresh<0) { + vthresh=0; + printf("can't equalize threshold for module %d\n", ichan); + retval=FAIL; + } + direction[ichan]=-3; + } else { + vthresh=vthresh+direction[ichan]; + olddiff[ichan]=diff; + change_flag=1; + } +//commented out by dhanya initDACbyIndex(VTHRESH,vthresh, ichan); + } + } + iteration++; + free(scan); + free(scan1); + } +#endif + return retval; +} + + + + + +int trim_with_median(int stop, int im) { + + + int retval=OK; + +#ifdef MCB_FUNCS + int ichan, imod, ichip, ich; + u_int32_t *scan, *scan1; + int *olddiff, *direction; + int med, diff; + int change_flag=1; + int iteration=0; + int me[nModX], me1[nModX]; + int modma, modmi, nm; + int trim; + int *fifodata; + + setFrames(1); + // setNMod(getNModBoard()); + + if (im==ALLMOD){ + modmi=0; + modma=nModX; + } else { + modmi=im; + modma=im+1; + } + nm=modma-modmi; + + olddiff=malloc(4*nModX*nChips*nChans); + direction=malloc(4*nModX*nChips*nChans); + for (imod=modmi; imod0) { + direction[ichan]=1; + } else { + direction[ichan]=-1; + } + } + if ( direction[ichan]!=-3) { + if (abs(diff)>abs(olddiff[ichan])) { + trim=getTrimbit(imod,ichip,ich)+direction[ichan]; + printf("%d old diff %d < new diff %d %d - trimbit %d\n",ichan, olddiff[ichan], diff, direction[ichan], trim); + direction[ichan]=-3; + } else { + trim=getTrimbit(imod,ichip,ich)-direction[ichan]; + olddiff[ichan]=diff; + change_flag=1; + } + if (trim>TRIM_DR) { + trim=63; + printf("can't trim channel %d chip %d module %d to trim %d\n",ich, ichip, imod, trim); + retval=FAIL; + } + if (trim<0) { + printf("can't trim channel %d chip %d module %d to trim %d\n",ich, ichip, imod, trim); + trim=0; + retval=FAIL; + } + initChannel(trim,0,0,1,0,0,imod); + } + } + } + } + iteration++; + free(scan); + free(scan1); + } + free(olddiff); + free(direction); +#endif + return retval; +} diff --git a/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.h new file mode 100755 index 000000000..42ecea24a --- /dev/null +++ b/slsDetectorSoftware/jungfrauDetectorServer/trimming_funcs.h @@ -0,0 +1,20 @@ +#ifndef TRIMMING_FUNCS_H +#define TRIMMING_FUNCS_H + +#include "sls_detector_defs.h" + +int trim_fixed_settings(int countlim, int par2, int imod); +int trim_with_noise(int countlim, int nsigma, int imod); +int trim_with_beam(int countlim, int nsigma, int imod); +int trim_improve(int maxit, int par2, int imod); +int calcthr_from_vcal(int vcal); +int calccal_from_vthr(int vthr); +int choose_vthresh_and_vtrim(int countlim, int nsigma, int imod); + +int choose_vthresh(); +int trim_with_level(int countlim, int imod); +int trim_with_median(int stop, int imod); +int calcthr_from_vcal(int vcal); +int calccal_from_vthr(int vthr); + +#endif From 2d66e1f731efaeeb14c36b2950372d9e9487c6f7 Mon Sep 17 00:00:00 2001 From: Anna Bergamaschi Date: Fri, 3 Oct 2014 10:43:12 +0200 Subject: [PATCH 04/12] Added pattern generator - must still implement client-server commands --- .../patternGenerator/generate.sh | 20 ++ .../patternGenerator/generator.c | 160 ++++++++++++++ slsDetectorSoftware/patternGenerator/test.p | 197 ++++++++++++++++++ 3 files changed, 377 insertions(+) create mode 100755 slsDetectorSoftware/patternGenerator/generate.sh create mode 100755 slsDetectorSoftware/patternGenerator/generator.c create mode 100644 slsDetectorSoftware/patternGenerator/test.p diff --git a/slsDetectorSoftware/patternGenerator/generate.sh b/slsDetectorSoftware/patternGenerator/generate.sh new file mode 100755 index 000000000..ca44e565c --- /dev/null +++ b/slsDetectorSoftware/patternGenerator/generate.sh @@ -0,0 +1,20 @@ +if [ "$#" -eq 0 ]; then + echo "Wrong number of arguments: usage should be $0 patname" + exit 1 +fi +infile=$1 +outfile=$infile"at" +if [ "$#" -ge 2 ]; then + outfile=$2 +fi +exe=$infile"exe" +if [ "$#" -ge 3 ]; then + exe=$3 +fi + +if [ -f "$infile" ] +then +gcc -DINFILE="\"$infile\"" -DOUTFILE="\"$outfile\"" -o $exe generator.c ; ./$exe ; rm $exe +else + echo "$infile not found." +fi diff --git a/slsDetectorSoftware/patternGenerator/generator.c b/slsDetectorSoftware/patternGenerator/generator.c new file mode 100755 index 000000000..198fe45cd --- /dev/null +++ b/slsDetectorSoftware/patternGenerator/generator.c @@ -0,0 +1,160 @@ +/**************************************************************************** +usage to generate a patter test.pat from test.p + +gcc -DINFILE="\"test.p\"" -DOUTFILE="\"test.pat\"" -o test.exe generator.c ; ./test.exe ; rm test.exe + + +*************************************************************************/ + +#include /* exit() */ +#include /* exit() */ +#include /* memset(), memcpy() */ +#include /* uname() */ +#include +#include /* fork(), write(), close() */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include + +#define MAXLOOPS 3 +#define MAXTIMERS 3 +#define MAXWORDS 1024 + + + +uint64_t pat=0; +uint64_t iopat=0; +uint64_t clkpat=0; + +int iaddr=0; +int waitaddr[3]={-1,-1,-1}; +int startloopaddr[3]={-1,-1,-1}; +int stoploopaddr[3]={-1,-1,-1}; +int start=0, stop=0; +uint64_t waittime[3]={0,0,0}; +int nloop[3]={0,0,0}; + +char infile[10000], outfile[10000]; + +FILE *fd; + +int i,ii,iii,j,jj,jjj,pixx,pixy,memx,memy,muxout,memclk,colclk,rowclk,muxclk,memcol,memrow,loopcounter; +//int W[33]; +//u_int32_t W; + +void setstart() { + start=iaddr; +} + +void setstop() { + stop=iaddr; +} + +void setinput(int bit) { + uint64_t mask=1; + mask=mask<>bit; +} + +void setstartloop(int iloop) { + if (iloop>=0 && iloop=0 && iloop=0 && iloop=0 && iloop=0 && iloop=MAXWORDS) printf("ERROR: too many word in the pattern (%d instead of %d)!",iaddr, MAXWORDS); +} + +main(void) { + int iloop=0; + fd=fopen(OUTFILE,"w"); + +#include INFILE + + fprintf(fd,"patctrl %016llx\n",iopat); + fprintf(fd,"patclkctrl %016llx\n",clkpat); + fprintf(fd,"patlimits %04x %04x\n",start, stop); + + for (iloop=0; iloop Date: Mon, 6 Oct 2014 11:01:51 +0200 Subject: [PATCH 05/12] module acquisition works, edit getrunstatus, added a small code for master incomplete, adjusted server to look for element in position 1 instead of zero --- .../eigerDetectorServer/FebControl.c | 38 ++++++++++++------ .../eigerDetectorServer/Makefile | 2 +- .../bin/eigerDetectorServer | Bin 237404 -> 237463 bytes .../slsDetectorFunctionList.c | 28 ++++++++++--- .../multiSlsDetector/multiSlsDetector.cpp | 26 ++++-------- .../slsDetectorServer_funcs.c | 11 +++-- 6 files changed, 60 insertions(+), 45 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 69d7cfc0d..dd978d3ba 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -694,7 +694,7 @@ int Feb_Control_SendHighVoltage(unsigned int dst_num,float* value){ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* top, int* bottom, unsigned int* dac_ch){ char* local_s = dac_str; char temp[50]; - *module_index = 0; + *module_index = 1; char* p1 = strstr(local_s,"mod");//size_t p1 = local_s.find("mod"); char* p2 = strstr(local_s,"::");//size_t p2 =local_s.find("::"); @@ -729,6 +729,15 @@ int Feb_Control_DecodeDACString(char* dac_str, unsigned int* module_index, int* strcpy(local_s,p1+8); *top=0; } +/* + if(Module_BottomAddressIsValid(&modules[*module_index])) + *top=0; + else + *bottom=0; +printf("*****************top %d bottom %d\n",*top,*bottom); +*/ + + *dac_ch = 0; if(!Feb_Control_GetDACNumber(local_s,dac_ch)){ printf("Error in dac_name: %s (%s)\n",dac_str,local_s); @@ -955,8 +964,8 @@ int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int *trimbits){ } //end row loop - if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[0]),0,0,1024,trimbits_to_load_r)|| - !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[0]),0,0,1024,trimbits_to_load_l)|| + if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[1]),0,0,1024,trimbits_to_load_r)|| + !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[1]),0,0,1024,trimbits_to_load_l)|| //if(!Feb_Interface_WriteMemory(Module_GetTopLeftAddress(&modules[0]),0,0,1023,trimbits_to_load_r)|| // !Feb_Interface_WriteMemory(Module_GetTopRightAddress(&modules[0]),0,0,1023,trimbits_to_load_l)|| !Feb_Control_StartDAQOnlyNWaitForFinish(5000)){ @@ -982,11 +991,14 @@ unsigned int* Feb_Control_GetTrimbits(){ unsigned int Feb_Control_AddressToAll(){ if(moduleSize==0) return 0; - if(Module_BottomAddressIsValid(&modules[1])){//printf("************* bottom\n"); - return Module_GetBottomLeftAddress(&modules[1])|Module_GetBottomRightAddress(&modules[1]);} - //printf("************* top\n"); - return Module_GetTopLeftAddress(&modules[1])|Module_GetTopRightAddress(&modules[1]); + if(Module_BottomAddressIsValid(&modules[0])){ + //printf("************* bottom\n"); + return Module_GetBottomLeftAddress(&modules[0])|Module_GetBottomRightAddress(&modules[0]); + } + // printf("************* top\n"); + return Module_GetTopLeftAddress(&modules[0])|Module_GetTopRightAddress(&modules[0]); + } int Feb_Control_SetCommandRegister(unsigned int cmd){ @@ -1035,18 +1047,18 @@ int Feb_Control_AcquisitionInProgress(){ //printf("right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r)); //printf("left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l)); - if(Module_BottomAddressIsValid(&modules[0])){ + if(Module_BottomAddressIsValid(&modules[1])){ //printf("************* bottom1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**idle\n");return 0;} }else{ //printf("************* top1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**idle\n");return 0;} } - if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) return 1; + if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) {printf("******running\n");return 1;} /* if(!(GetDAQStatusRegister(modules[i]->Module_GetTopLeftAddress(),status_reg_r)&&GetDAQStatusRegister(modules[i]->Module_GetTopRightAddress(),status_reg_l))){ @@ -1057,7 +1069,7 @@ int Feb_Control_AcquisitionInProgress(){ } */ - return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; + printf("**idle\n");return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; } int Feb_Control_Reset(){ @@ -1370,7 +1382,7 @@ int Feb_Control_WriteNRead(char* message, int length, int max_length){ } */ -int Feb_Control_StartAcquisition(){ +int Feb_Control_StartAcquisition(){printf("****** starting acquisition********* \n"); static unsigned int reg_nums[20]; static unsigned int reg_vals[20]; diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index f11f09eb1..7920925cb 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,6 +1,6 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT #-DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 54d45775dc1da4b3126d988c96924d661d39a2bf..2c2221578d7b7b7250d11e542627c95ad2e7e3d4 100755 GIT binary patch delta 39939 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 26b9a3046..2f6758ff3 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -53,7 +53,8 @@ int dst_requested[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 int default_dac_values[16] = {0,2000,2000,1250,700,1278,500,500,2000,500,500,550,550,100,1000,775}; - +enum masterFlags masterMode=NO_MASTER; +enum masterFlags trialMasterMode=NO_MASTER; int initDetector(){ int imod,i,n; @@ -128,9 +129,12 @@ int initDetector(){ setHighVolage(150,0); setIODelay(675,0); setTiming(AUTO_TIMING); + setMaster(GET_MASTER); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating + if(getDetectorNumber() == 0xbeb031) + trialMasterMode = IS_MASTER; return 1; } @@ -453,8 +457,13 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ int startStateMachine(){ printf("Going to start acquisition\n"); - if(Feb_Control_StartAcquisition()){ + + if(trialMasterMode == IS_MASTER) + Feb_Control_StartAcquisition(); + + +printf("requesting images\n"); //RequestImages(); int ret_val = 0; dst_requested[0] = 1; @@ -471,15 +480,19 @@ int startStateMachine(){ return FAIL; else return OK; - } + return FAIL; } int stopStateMachine(){ printf("Going to stop acquisition\n"); - if(Feb_Control_StopAcquisition()) - return OK; + + if(trialMasterMode == IS_MASTER){ + if(Feb_Control_StopAcquisition()) + return OK; + }else return OK; + return FAIL; } @@ -885,7 +898,10 @@ void setExternalGating(int enable[]){ enum masterFlags setMaster(enum masterFlags arg){ - return NO_MASTER; + if(arg != GET_MASTER) + masterMode = arg; + + return arg; } diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 55cb1102a..3d99d8e6a 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1198,15 +1198,6 @@ int multiSlsDetector::startAcquisition(){ int i=0; int ret=OK, ret1=OK; - if (detectors[0]) { - ret=detectors[0]->startAcquisition(); - if(detectors[0]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (i!=thisMultiDetector->masterPosition) if (detectors[i]) { @@ -1226,7 +1217,7 @@ int multiSlsDetector::startAcquisition(){ if (ret!=OK) ret1=FAIL; } - }*/ + } return ret1; }; @@ -1474,7 +1465,7 @@ int* multiSlsDetector::startAndReadAll(){ if (detectors[id]) { detectors[id]->disconnectControl(); } - } + } } @@ -1515,6 +1506,7 @@ int multiSlsDetector::startAndReadAllNoWait(){ ret1=FAIL; } } + return ret1; } @@ -1536,20 +1528,16 @@ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { return s; } - if (detectors[0]){ - s=detectors[0]->getRunStatus(); - if(detectors[0]->getErrorMask()) - setErrorMask(getErrorMask()|(1<<0)); - } - for (int i=1; inumberOfDetectors; i++) { s1=detectors[i]->getRunStatus(); if(detectors[i]->getErrorMask()) setErrorMask(getErrorMask()|(1< Date: Tue, 14 Oct 2014 15:38:45 +0200 Subject: [PATCH 06/12] full module server works now, slave and master yet to be done --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 4 +- .../eigerDetectorServer/FebControl.c | 92 ++++++++++-------- .../eigerDetectorServer/FebControl.h | 2 +- .../bin/eigerDetectorServer | Bin 237463 -> 237506 bytes .../slsDetectorFunctionList.c | 63 ++++++------ .../slsDetectorServer_funcs.c | 4 +- 6 files changed, 86 insertions(+), 79 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index ec8856772..4d77ac62d 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -330,7 +330,7 @@ int Beb_SetUpUDPHeader(unsigned int beb_number, int ten_gig, unsigned int header Beb_SwapDataFun(1,12,&(Beb_send_data[2])); if(!Beb_WriteTo(i)) return 0; - printf("dst_port:%d\n",dst_port); + printf("beb dst_port:%d\n",dst_port); return 1; } @@ -514,7 +514,7 @@ int Beb_RequestNImages(unsigned int beb_number, unsigned int left_right, int ten if(in_two_requests) npackets/=2; // printf("npackets:%d\n",npackets); //usleep needed after acquisition start, else you miss the single images - usleep(1000); + usleep(10000);//less than this and it starts sending half stuff sometimes //printf("beb no:%d left_right:%d ten_gig:%d dst_number:%d #images:%d header_size:%d test_just_send_out_packets_no_wait:%d\n",beb_number,left_right,ten_gig,dst_number,nimages, header_size,test_just_send_out_packets_no_wait); //printf("here: "<4095){ - printf("Waring: SetDac bad value, %d. The range is 0 to 4095.\n",v); + printf("Warning: SetDac bad value, %d. The range is 0 to 4095.\n",v); return 0; } @@ -949,28 +942,41 @@ int Feb_Control_SetTrimbits(unsigned int module_num, unsigned int *trimbits){ int i; for(i=0;i<8;i++){ // column loop i //printf("i:%d\t\t",i); - trimbits_to_load_l[offset+chip_sc] |= ( 0x7 & trimbits[row_set*16480+super_column_start_position_l+i])<<((7-i)*4);//low - trimbits_to_load_l[offset+chip_sc+32] |= ((0x38 & trimbits[row_set*16480+super_column_start_position_l+i])>>3)<<((7-i)*4);//upper - trimbits_to_load_r[offset+chip_sc] |= ( 0x7 & trimbits[row_set*16480+super_column_start_position_r+i])<<((7-i)*4);//low - trimbits_to_load_r[offset+chip_sc+32] |= ((0x38 & trimbits[row_set*16480+super_column_start_position_r+i])>>3)<<((7-i)*4);//upper -/* - trimbits_to_load_l[offset+chip_sc] |= ( 0x7 & trimbits[263679 - (row_set*16480+super_column_start_position_l+i)])<<((7-i)*4);//low - trimbits_to_load_l[offset+chip_sc+32] |= ((0x38 & trimbits[263679 - (row_set*16480+super_column_start_position_l+i)])>>3)<<((7-i)*4);//upper - trimbits_to_load_r[offset+chip_sc] |= ( 0x7 & trimbits[263679 - (row_set*16480+super_column_start_position_r+i)])<<((7-i)*4);//low - trimbits_to_load_r[offset+chip_sc+32] |= ((0x38 & trimbits[263679 - (row_set*16480+super_column_start_position_r+i)])>>3)<<((7-i)*4);//upper -*/ + + if(Module_TopAddressIsValid(&modules[0])){ + trimbits_to_load_l[offset+chip_sc] |= ( 0x7 & trimbits[row_set*16480+super_column_start_position_l+i])<<((7-i)*4);//low + trimbits_to_load_l[offset+chip_sc+32] |= ((0x38 & trimbits[row_set*16480+super_column_start_position_l+i])>>3)<<((7-i)*4);//upper + trimbits_to_load_r[offset+chip_sc] |= ( 0x7 & trimbits[row_set*16480+super_column_start_position_r+i])<<((7-i)*4);//low + trimbits_to_load_r[offset+chip_sc+32] |= ((0x38 & trimbits[row_set*16480+super_column_start_position_r+i])>>3)<<((7-i)*4);//upper + }else{ + trimbits_to_load_l[offset+chip_sc] |= ( 0x7 & trimbits[263679 - (row_set*16480+super_column_start_position_l+i)])<<((7-i)*4);//low + trimbits_to_load_l[offset+chip_sc+32] |= ((0x38 & trimbits[263679 - (row_set*16480+super_column_start_position_l+i)])>>3)<<((7-i)*4);//upper + trimbits_to_load_r[offset+chip_sc] |= ( 0x7 & trimbits[263679 - (row_set*16480+super_column_start_position_r+i)])<<((7-i)*4);//low + trimbits_to_load_r[offset+chip_sc+32] |= ((0x38 & trimbits[263679 - (row_set*16480+super_column_start_position_r+i)])>>3)<<((7-i)*4);//upper + + } } // end column loop i } //end supercolumn loop sc } //end row loop - - if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[1]),0,0,1024,trimbits_to_load_r)|| - !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[1]),0,0,1024,trimbits_to_load_l)|| - //if(!Feb_Interface_WriteMemory(Module_GetTopLeftAddress(&modules[0]),0,0,1023,trimbits_to_load_r)|| - // !Feb_Interface_WriteMemory(Module_GetTopRightAddress(&modules[0]),0,0,1023,trimbits_to_load_l)|| - !Feb_Control_StartDAQOnlyNWaitForFinish(5000)){ - printf(" some errror!\n"); - return 0; + if(Module_TopAddressIsValid(&modules[0])){ + if(!Feb_Interface_WriteMemoryInLoops(Module_GetTopLeftAddress(&modules[1]),0,0,1024,trimbits_to_load_r)|| + !Feb_Interface_WriteMemoryInLoops(Module_GetTopRightAddress(&modules[1]),0,0,1024,trimbits_to_load_l)|| + //if(!Feb_Interface_WriteMemory(Module_GetTopLeftAddress(&modules[0]),0,0,1023,trimbits_to_load_r)|| + // !Feb_Interface_WriteMemory(Module_GetTopRightAddress(&modules[0]),0,0,1023,trimbits_to_load_l)|| + !Feb_Control_StartDAQOnlyNWaitForFinish(5000)){ + printf(" some errror!\n"); + return 0; + } + }else{ + if(!Feb_Interface_WriteMemoryInLoops(Module_GetBottomLeftAddress(&modules[1]),0,0,1024,trimbits_to_load_r)|| + !Feb_Interface_WriteMemoryInLoops(Module_GetBottomRightAddress(&modules[1]),0,0,1024,trimbits_to_load_l)|| + //if(!Feb_Interface_WriteMemory(Module_GetTopLeftAddress(&modules[0]),0,0,1023,trimbits_to_load_r)|| + // !Feb_Interface_WriteMemory(Module_GetTopRightAddress(&modules[0]),0,0,1023,trimbits_to_load_l)|| + !Feb_Control_StartDAQOnlyNWaitForFinish(5000)){ + printf(" some errror!\n"); + return 0; + } } } //end row_set loop (groups of 16 rows) @@ -996,7 +1002,7 @@ unsigned int Feb_Control_AddressToAll(){ //printf("************* bottom\n"); return Module_GetBottomLeftAddress(&modules[0])|Module_GetBottomRightAddress(&modules[0]); } - // printf("************* top\n"); + //printf("************* top\n"); return Module_GetTopLeftAddress(&modules[0])|Module_GetTopRightAddress(&modules[0]); } @@ -1051,14 +1057,14 @@ int Feb_Control_AcquisitionInProgress(){ //printf("************* bottom1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r))) - {printf("**idle\n");return 0;} + return 0; }else{ //printf("************* top1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r))) - {printf("**idle\n");return 0;} + return 0; } - if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) {printf("******running\n");return 1;} + if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) return 1; /* if(!(GetDAQStatusRegister(modules[i]->Module_GetTopLeftAddress(),status_reg_r)&&GetDAQStatusRegister(modules[i]->Module_GetTopRightAddress(),status_reg_l))){ @@ -1069,7 +1075,7 @@ int Feb_Control_AcquisitionInProgress(){ } */ - printf("**idle\n");return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; + /*printf("**idle\n");*/return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; } int Feb_Control_Reset(){ diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.h b/slsDetectorSoftware/eigerDetectorServer/FebControl.h index 7132847c6..a945e9626 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.h +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.h @@ -65,7 +65,7 @@ int Module_GetBottomDACValue(struct Module* mod,unsigned int i); - +int Feb_Control_IsBottomModule(); void Feb_Control_ClearModules(); diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 2c2221578d7b7b7250d11e542627c95ad2e7e3d4..ac7f244c618968cacc83d9e273bec0c03d35dc26 100755 GIT binary patch delta 29141 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 XqNPh0Ett3{Z&|@y`;3i-p+5fyhc5AS delta 28937 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

LT0Jt{y5&SR9giSAH&d7FQJO9<;#`}3!VIb* zCI=l5G|p?-jdv2y;)f3Sg`wj6vKS9(I)gB5emsOi84@0+Djy+wlu`-fIO0-1U^!c1 z%fNpvV5wl(^F^w%yb%h>C=4rC$&*mX72RP-+{uZ6vm`@A|Dg!L(gI;{qP?l;pD*z^ zD)KF9i<@vUpe!jcSW&`Z82tx&{KAWHN^;`>o}~MQk5H9v@Q4m|I>YeEs`5-}n}Xq( zqD`1Gmq&%8fE9&O&Eb{@KG@(M|ShXN-heyZ3Y zL&18De~}U~TU9<4{G^E^a#WH~hX$9xl`2V#0|S|tBVJdPuffo@>O>q+$r2l2=>rj; zz)8gv?v(<+fm7xHb}4)VaEc4YiEmeIZ_**qVAeZyMbKTF0D}G!PQ{3uT^&G=?B!@` zQ>g0#)i6X%fpprgi^a3}p+A0IS86x>BjF9I5{4-uVn9VGsJmhzyj}ym^ntDpl?=}X zY?lh0f&wjoyFO`ET=580~SirUn(4F#0<&;`3CZ!UD>fBH4f<{-zbhfQ#Wfso}yQ1g)d%$~r*0xrBcKs7{909=%Yj1Z_O z<^)v<6%6Ev%@&oAOjsaW7hs;EDwab~P)>>2rYZr#s}D*1qpC8^429Dq{1|p!=noTX z7B>GGJ|yU+lbScGgcm@*YlP;v@L#QzU_>$u&2=hy805qy@VshB6#eZ`I1CD32Ezk@ z<%rE9tOQ=d(E+Mb2?0h`S0Fk@RR+Vys8lGrH|Q(G8y8oHiAWr!V2~?2phS5BPDkX3 zqGzjQhz+oGy68WtO72O(d6NEFIGu1R>2%R0DglW?DM!T^dPzg2<1 zsU#C7CN@cM8aV9-7{6%DaZDK=TnhiDk_YoapRUu#_^L`|9HwlSghLROy~u)19WL7Wt@ z!}az~@1xqenqqWJyOul4Nid|0_uY;A$O?HLA+^RhYA42}dAvr2wBP z;qIz(x)=)iNO%zbD?^|SuKpQF&DFrm#1@+kr1k?nez8l`B77SKf*Q#nUnTZD!1WSd zt%~%3A7F2EfEUNYgsv%w<@iG=SWHoMi^c8+9{pSK*g_l?PU=#)4tNhY{5cPmlpb(Y zEjJXBz<$b;ixw>IJ)pm(Kc40kh^GO3&Er@( diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 2f6758ff3..73284be26 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -129,7 +129,7 @@ int initDetector(){ setHighVolage(150,0); setIODelay(675,0); setTiming(AUTO_TIMING); - setMaster(GET_MASTER); + //setMaster(GET_MASTER); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating @@ -456,39 +456,38 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ int startStateMachine(){ - printf("Going to start acquisition\n"); - - if(trialMasterMode == IS_MASTER) + if(trialMasterMode == IS_MASTER){ + printf("Going to start acquisition\n"); Feb_Control_StartAcquisition(); + } -printf("requesting images\n"); - //RequestImages(); - int ret_val = 0; - dst_requested[0] = 1; - while(dst_requested[on_dst]){ - //waits on data - if((ret_val = (!Beb_RequestNImages(0,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| - !Beb_RequestNImages(0,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) - break; - dst_requested[on_dst++]=0; - on_dst%=ndsts_in_use; - } + printf("requesting images\n"); + //RequestImages(); + int ret_val = 0; + dst_requested[0] = 1; + while(dst_requested[on_dst]){ + //waits on data + if((ret_val = (!Beb_RequestNImages(0,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| + !Beb_RequestNImages(0,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) + break; + dst_requested[on_dst++]=0; + on_dst%=ndsts_in_use; + } - if(ret_val) - return FAIL; - else - return OK; + if(ret_val) + return FAIL; + else + return OK; return FAIL; } int stopStateMachine(){ - printf("Going to stop acquisition\n"); - if(trialMasterMode == IS_MASTER){ + printf("Going to stop acquisition\n"); if(Feb_Control_StopAcquisition()) return OK; }else return OK; @@ -522,10 +521,10 @@ int startReadOut(){ enum runStatus getRunStatus(){ int i = Feb_Control_AcquisitionInProgress(); if(i== 0){ - printf("IDLE\n"); + /*printf("IDLE\n");*/ return IDLE; }else{ - printf("RUNNING\n"); + /*printf("RUNNING\n");*/ return RUNNING; } } @@ -689,7 +688,6 @@ int executeTrimming(enum trimMode mode, int par1, int par2, int imod){ int configureMAC(int ipad, long long int macad, long long int detectormacadd, int detipad, int udpport, int udpport2, int ival){ char src_mac[50], src_ip[50],dst_mac[50], dst_ip[50]; int src_port = 0xE185; - int dst_port = udpport; sprintf(src_ip,"%d.%d.%d.%d",(detipad>>24)&0xff,(detipad>>16)&0xff,(detipad>>8)&0xff,(detipad)&0xff); sprintf(dst_ip,"%d.%d.%d.%d",(ipad>>24)&0xff,(ipad>>16)&0xff,(ipad>>8)&0xff,(ipad)&0xff); sprintf(src_mac,"%02x:%02x:%02x:%02x:%02x:%02x",(unsigned int)((detectormacadd>>40)&0xFF), @@ -706,15 +704,17 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in (unsigned int)((macad>>0)&0xFF)); printf("src_port:%d\n",src_port); - printf("dst_port:%d\n",dst_port); printf("src_ip:%s\n",src_ip); printf("dst_ip:%s\n",dst_ip); printf("src_mac:%s\n",src_mac); - printf("dst_mac:%s\n\n",dst_mac); + printf("dst_mac:%s\n",dst_mac); int beb_num = 34; int header_number = 0; + int dst_port = udpport; + + printf("dst_port:%d\n\n",dst_port); int i=0; /* for(i=0;i<32;i++){/** modified for Aldo*/ @@ -726,11 +726,12 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in header_number = 32; dst_port = udpport2; + printf("dst_port:%d\n\n",dst_port); /*for(i=0;i<32;i++){*//** modified for Aldo*/ if(Beb_SetBebSrcHeaderInfos(beb_num,send_to_ten_gig,src_mac,src_ip,src_port) && Beb_SetUpUDPHeader(beb_num,send_to_ten_gig,header_number+i,dst_mac,dst_ip, dst_port)) - printf("set up right ok\n"); + printf("set up right ok\n\n"); else return -1; /*}*/ @@ -898,10 +899,10 @@ void setExternalGating(int enable[]){ enum masterFlags setMaster(enum masterFlags arg){ - if(arg != GET_MASTER) - masterMode = arg; + //if(arg != GET_MASTER) + // masterMode = arg; - return arg; + return NO_MASTER; } diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 0ef92c6bc..2dc6e1b98 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -54,8 +54,8 @@ int init_detector(int b) { #endif }else{ Feb_Interface_FebInterface(); - Feb_Control_FebControl(); - printf("FEb control constructor done\n"); + //Feb_Control_FebControl(); + // printf("FEb control constructor done\n"); /* Beb_Beb(-1); printf("BEB constructor done\n");*/ } From 308b3aa9b1bd7fcd0bb7a8ffaddaedd0e572c058 Mon Sep 17 00:00:00 2001 From: Anna Bergamaschi Date: Tue, 14 Oct 2014 17:03:13 +0200 Subject: [PATCH 07/12] Client and jungfrau server funcs added for pattern generator --- .../commonFiles/sls_detector_funcs.h | 4 +- .../jungfrauDetectorServer/firmware_funcs.c | 118 +++++++++ .../jungfrauDetectorServer/firmware_funcs.h | 8 + .../jungfrauDetectorServer | Bin 132672 -> 134700 bytes .../jungfrauDetectorServer.gdb | Bin 568322 -> 571615 bytes .../jungfrauDetectorServer/registers_m.h | 51 +++- .../jungfrauDetectorServer/server_funcs.c | 136 ++++++++++ .../jungfrauDetectorServer/server_funcs.h | 1 + .../multiSlsDetector/multiSlsDetector.cpp | 123 ++++++++++ .../multiSlsDetector/multiSlsDetector.h | 53 ++++ .../patternGenerator/generator.c | 8 +- .../slsDetector/slsDetector.cpp | 232 ++++++++++++++++++ slsDetectorSoftware/slsDetector/slsDetector.h | 42 ++++ .../slsDetector/slsDetectorBase.h | 4 + .../slsDetector/slsDetectorCommand.cpp | 172 ++++++++++++- .../slsDetector/slsDetectorCommand.h | 2 + .../slsDetector/slsDetectorUtils.h | 67 ++++- 17 files changed, 1009 insertions(+), 12 deletions(-) diff --git a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h index 87bb241aa..8bb1a84d1 100644 --- a/slsDetectorSoftware/commonFiles/sls_detector_funcs.h +++ b/slsDetectorSoftware/commonFiles/sls_detector_funcs.h @@ -90,7 +90,9 @@ enum { F_CALIBRATE_PEDESTAL, /**< starts acquistion, calibrates pedestal and write back to fpga */ F_ENABLE_TEN_GIGA, /**< enable 10Gbe */ - F_SET_ALL_TRIMBITS /** < set all trimbits to this value */ + F_SET_ALL_TRIMBITS, /** < set all trimbits to this value */ + + F_SET_CTB_PATTERN /** < loads a pattern in the CTB */ /* Always append functions hereafter!!! */ diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c index 1168559be..a225b86e8 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c @@ -2612,3 +2612,121 @@ int calibratePedestal(int frames){ return 0; } + +uint64_t writePatternWord(int addr, uint64_t word) { + + int cntrl=0; + if (addr>=MAX_PATTERN_LENGTH) + return -1; + + if (word>=0) { + set64BitReg(word,PATTERN_IN_REG_LSB,PATTERN_IN_REG_MSB); + cntrl= (addr&APATTERN_MASK) << PATTERN_CTRL_ADDR_OFFSET; + bus_w(PATTERN_CNTRL_REG, cntrl); + bus_w(PATTERN_CNTRL_REG, cntrl | (1<< PATTERN_CTRL_WRITE_BIT) ); + bus_w(PATTERN_CNTRL_REG, cntrl); + } + return word; +} +uint64_t writePatternIOControl(uint64_t word) { + if (word>=0)set64BitReg(word,PATTERN_IOCTRL_REG_LSB,PATTERN_IOCTRL_REG_MSB); + return get64BitReg(PATTERN_IOCTRL_REG_LSB,PATTERN_IOCTRL_REG_MSB); + +} +uint64_t writePatternClkControl(uint64_t word) { + if (word>=0)set64BitReg(word,PATTERN_IOCLKCTRL_REG_LSB,PATTERN_IOCLKCTRL_REG_MSB); + return get64BitReg(PATTERN_IOCLKCTRL_REG_LSB,PATTERN_IOCLKCTRL_REG_MSB); + +} + +int setPatternLoop(int level, int *start, int *stop, int *n) { + int ret=OK; + int lval=0; + + + switch (level) { + case 0: + if (*n>=0) bus_w(*n,PATTERN_N_LOOP0_REG); + *n=bus_r(PATTERN_N_LOOP0_REG); + lval=bus_r(PATTERN_LOOP0_AREG); + if (*start==-1) *start=(lval>> ASTART_OFFSET) & APATTERN_MASK; + if (*stop==-1) *start=(lval>> ASTOP_OFFSET) & APATTERN_MASK; + lval= ((*start & APATTERN_MASK) << ASTART_OFFSET) | ((*stop & APATTERN_MASK) << ASTOP_OFFSET); + bus_w(lval, PATTERN_LOOP0_AREG); + break; + case 1: + if (*n>=0) bus_w(*n,PATTERN_N_LOOP1_REG); + *n=bus_r(PATTERN_N_LOOP1_REG); + lval=bus_r(PATTERN_LOOP1_AREG); + if (*start==-1) *start=(lval>> ASTART_OFFSET) & APATTERN_MASK; + if (*stop==-1) *start=(lval>> ASTOP_OFFSET) & APATTERN_MASK; + lval= ((*start & APATTERN_MASK) << ASTART_OFFSET) | ((*stop & APATTERN_MASK) << ASTOP_OFFSET); + bus_w(lval, PATTERN_LOOP1_AREG); + + break; + case 2: + if (*n>=0) bus_w(*n,PATTERN_N_LOOP2_REG); + *n=bus_r(PATTERN_N_LOOP2_REG); + lval=bus_r(PATTERN_LOOP2_AREG); + if (*start==-1) *start=(lval>> ASTART_OFFSET) & APATTERN_MASK; + if (*stop==-1) *start=(lval>> ASTOP_OFFSET) & APATTERN_MASK; + lval= ((*start & APATTERN_MASK) << ASTART_OFFSET) | ((*stop & APATTERN_MASK) << ASTOP_OFFSET); + bus_w(lval, PATTERN_LOOP2_AREG); + + break; + case -1: + + lval=bus_r(PATTERN_LIMITS_AREG); + if (*start==-1) start=(lval>> ASTART_OFFSET) & APATTERN_MASK; + if (*stop==-1) start=(lval>> ASTOP_OFFSET) & APATTERN_MASK; + lval= ((*start & APATTERN_MASK) << ASTART_OFFSET) | ((*stop & APATTERN_MASK) << ASTOP_OFFSET); + bus_w(lval, PATTERN_LIMITS_AREG); + break; + default: + ret=FAIL; + + + + + } + + return ret; +} + + +int setPatternWaitAddress(int level, int addr) { + int ret=-1; + switch (level) { + case 0: + if (addr>=0) bus_w(addr,PATTERN_WAIT0_AREG); + return bus_r(PATTERN_WAIT0_AREG); + case 1: + if (addr>=0) bus_w(addr,PATTERN_WAIT1_AREG); + return bus_r(PATTERN_WAIT1_AREG); + case 2: + if (addr>=0) bus_w(addr,PATTERN_WAIT2_AREG); + return bus_r(PATTERN_WAIT2_AREG); + }; + + return ret; +} + + +uint64_t setPatternWaitTime(int level, uint64_t t) { + uint64_t ret=-1; + switch (level) { + case 0: + if (t>=0) set64BitReg(t,PATTERN_WAIT0_TIME_REG_LSB,PATTERN_WAIT0_TIME_REG_MSB); + return get64BitReg(PATTERN_WAIT0_TIME_REG_LSB,PATTERN_WAIT0_TIME_REG_MSB); + case 1: + if (t>=0) set64BitReg(t,PATTERN_WAIT1_TIME_REG_LSB,PATTERN_WAIT1_TIME_REG_MSB); + return get64BitReg(PATTERN_WAIT1_TIME_REG_LSB,PATTERN_WAIT1_TIME_REG_MSB); + case 2: + if (t>=0) set64BitReg(t,PATTERN_WAIT2_TIME_REG_LSB,PATTERN_WAIT2_TIME_REG_MSB); + return get64BitReg(PATTERN_WAIT2_TIME_REG_LSB,PATTERN_WAIT2_TIME_REG_MSB); + } + return ret; +} + + + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h index 48918e428..29babf8fa 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.h @@ -149,6 +149,14 @@ int resetCounterBlock(int startACQ); int calibratePedestal(int frames); +uint64_t writePatternWord(int addr, uint64_t word); +uint64_t writePatternIOControl(uint64_t word); +uint64_t writePatternClkControl(uint64_t word); +int setPatternLoop(int level, int *start, int *stop, int *n); +int setPatternWaitAddress(int level, int addr); +uint64_t setPatternWaitTime(int level, uint64_t t); + + /* diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer index 3e613e2463a7e32661fa92dbc0d1ead3f4a181db..21293ade1f995e82271471563f122b3ee19fdf75 100755 GIT binary patch delta 61079 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 delta 59039 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

    ^c9*Gb+woSm7mRz7zu)dIGW_EE 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 SnR>&}nKR21TVIIvPyfH5y~Mr% delta 162800 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�o$q)SIG$zHW2)V9 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ç&W`q|_kr}g=>Jg${(>O+t;ZXE z0`H7Xzn{Z8igi@IfCRpQmR~JbcwLd5Pvz`7HhPt;j#pl zC}Ty~23|z4kk94aR)m}3U)1!SHM8Rl+*WvQ|t6?uVl` zApXGx^#A&nRFSVE!qgZy!SUH|2fY6vnWB!=&01j{ciFFTf&`DjNpCnfZH#&enX(LZ zgLRgy$}%))4E-?Ibvdp)?v=Z-90Fk3tDE zbO)@{anS?kz&ba$!1Rj~2;$vj8LR_jFL!irxEzkw`}KxDQvzlME5qyIwuIRy-G0g5dwL97h8^wz{zDdW-I?f8Xfh!INjZl1?z-Ct;IhB z-d~!sh=#z?zy1VDVEfh!A9yX?wUIQ?k%2p?U*6Dmx%5Vr@QHWmYWBbf;b@CS`iJ49 z0RjIAKE$_Su}jcf0VkbIc;g1Ra!=E;T0cAO+arg1w~jA3e?&pya8^U_zJ2=0 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ + ret=setPatternLoop(level, &start, &stop, &nl); + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) + n += sendDataOnly(file_des,mess,sizeof(mess)); + else { + n += sendDataOnly(file_des,&start,sizeof(start)); + n += sendDataOnly(file_des,&stop,sizeof(stop)); + n += sendDataOnly(file_des,&nl,sizeof(nl)); + } + break; + + + + case 2: //wait address + n = receiveDataOnly(file_des,&level,sizeof(level)); + n = receiveDataOnly(file_des,&addr,sizeof(addr)); + + + + /** Sets the wait address in the CTB + @param level 0,1,2, wait level + @param addr wait address, -1 gets + @returns actual value + */ + retval=setPatternWaitAddress(level,addr); + ret=OK; + if (ret==FAIL) + n += sendDataOnly(file_des,mess,sizeof(mess)); + else { + n += sendDataOnly(file_des,&retval,sizeof(retval)); + + } + + + break; + + + case 3: //wait time + n = receiveDataOnly(file_des,&level,sizeof(level)); + n = receiveDataOnly(file_des,&t,sizeof(t)); + + + /** Sets the wait time in the CTB + @param level 0,1,2, wait level + @param t wait time, -1 gets + @returns actual value + */ + + ret=OK; + + retval64=setPatternWaitTime(level,t); + + n = sendDataOnly(file_des,&ret,sizeof(ret)); + if (ret==FAIL) + n += sendDataOnly(file_des,mess,sizeof(mess)); + else + n += sendDataOnly(file_des,&retval64,sizeof(retval64)); + + break; + + + default: + ret=FAIL; + sprintf(mess,"%s - wrong mode %d\n",mess, mode); + n = sendDataOnly(file_des,&ret,sizeof(ret)); + n += sendDataOnly(file_des,mess,sizeof(mess)); + + + + } + + + /*return ok/fail*/ + return ret; +} + + diff --git a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h index 5e371278a..29e5a3032 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/server_funcs.h @@ -93,5 +93,6 @@ int stop_receiver(int); int calibrate_pedestal(int); int set_roi(int); +int set_ctb_pattern(int); #endif diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 55cb1102a..b8c0584ad 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -4843,3 +4843,126 @@ int multiSlsDetector::enableTenGigabitEthernet(int i){ } return ret; } + + + + + /** opens pattern file and sends pattern to CTB + @param fname pattern file to open + @returns OK/FAIL + */ +int setCTBPattern(string fname) { + + + + + +} + + + /** Writes a pattern word to the CTB + @param addr address of the word, -1 is I/O control register, -2 is clk control register + @param word 64bit word to be written, -1 gets + @returns actual value + */ +uint64_t setCTBWord(int addr,uint64_t word) { + uint64_t ret=-100,ret1; + for (int idet=0; idetnumberOfDetectors; idet++) + if (detectors[idet]){ + ret1=detectors[idet]->setCTBWord(addr, word); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ +int setCTBPatLoops(int level,int &start, int &stop, int &n) { + + + int ret=-100,ret1; + for (int idet=0; idetnumberOfDetectors; idet++) + if (detectors[idet]){ + ret1=detectors[idet]->setCTBPatLoops(level, start, stop, n); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) + if (detectors[idet]){ + ret1=detectors[idet]->setCTBPatWaitAddr(level, addr); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) + if (detectors[idet]){ + ret1=detectors[idet]->setCTBPatWaitTime(level,t); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ + int setCTBPatLoops(int level,int &start, int &stop, int &n); + + + /** Sets the wait address in the CTB + @param level 0,1,2, wait level + @param addr wait address, -1 gets + @returns actual value + */ + int setCTBPatWaitAddr(int level, int addr=-1); + + /** Sets the wait time in the CTB + @param level 0,1,2, wait level + @param t wait time, -1 gets + @returns actual value + */ + int setCTBPatWaitTime(int level, uint64_t t=-1); + + + + + + + + + + + + + + protected: diff --git a/slsDetectorSoftware/patternGenerator/generator.c b/slsDetectorSoftware/patternGenerator/generator.c index 198fe45cd..6c66cda92 100755 --- a/slsDetectorSoftware/patternGenerator/generator.c +++ b/slsDetectorSoftware/patternGenerator/generator.c @@ -145,15 +145,15 @@ main(void) { fprintf(fd,"patlimits %04x %04x\n",start, stop); for (iloop=0; ilooptenGigaEnable=retval; return retval; } + + + + /******** CTB funcs */ + + /** opens pattern file and sends pattern to CTB + @param fname pattern file to open + @returns OK/FAIL + */ +int setCTBPattern(string fname) { + + + int fnum=F_SEND_RECEIVER_DETHOSTNAME; + int ret = FAIL; + char retval[MAX_STR_LENGTH]=""; + + + if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){ +#ifdef VERBOSE + std::cout << "Sending detector hostname to Receiver " << thisDetector->hostname << std::endl; +#endif + if (connectData() == OK) + ret=thisReceiver->sendString(fnum,retval,thisDetector->hostname); + if((ret==FAIL) || (strcmp(retval,thisDetector->hostname))) + setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTNAME_NOT_SET)); + } + + return ret; + + +} + + + /** Writes a pattern word to the CTB + @param addr address of the word, -1 is I/O control register, -2 is clk control register + @param word 64bit word to be written, -1 gets + @returns actual value + */ +uint64_t setCTBWord(int addr,uint64_t word) { + + uint64_t ret; + + int ret=FAIL; + uint64_t retval=-1; + int fnum=F_SET_CTB_PATTERN; + int mode=0; //sets word + + char mess[100]; + +#ifdef VERBOSE + std::cout<<"Setting CTB word" <onlineFlag==ONLINE_FLAG) { + if (connectControl() == OK){ + controlSocket->SendDataOnly(&fnum,sizeof(fnum)); + controlSocket->SendDataOnly(&mode,sizeof(mode)); + controlSocket->SendDataOnly(&addr,sizeof(addr)); + controlSocket->SendDataOnly(&word,sizeof(word)); + controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); + if (ret!=FAIL) + controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); + else { + controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned error: " << mess << std::endl; + } + controlSocket->Disconnect(); + if (ret==FORCE_UPDATE) + updateDetector(); + } + } + + return retval; + + +} + + /** 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 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ +int setCTBPatLoops(int level,int &start, int &stop, int &n) { + + + int retval[3], args[4]; + + args[0]=level; + args[1]=start; + args[2]=stop; + args[3]=n; + + + int ret=FAIL; + uint64_t retval=-1; + int fnum=F_SET_CTB_PATTERN; + int mode=1; //sets loop + + char mess[100]; + +#ifdef VERBOSE + std::cout<<"Setting CTB word" <onlineFlag==ONLINE_FLAG) { + if (connectControl() == OK){ + controlSocket->SendDataOnly(&fnum,sizeof(fnum)); + controlSocket->SendDataOnly(&mode,sizeof(mode)); + controlSocket->SendDataOnly(&args,sizeof(args)); + controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); + if (ret!=FAIL) { + controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); + start=retval[0]; + stop=retval[1]; + n=retval[2]; + } else { + controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned error: " << mess << std::endl; + } + controlSocket->Disconnect(); + if (ret==FORCE_UPDATE) + updateDetector(); + } + } + + return ret; + + +} + + + /** Sets the wait address in the CTB + @param level 0,1,2, wait level + @param addr wait address, -1 gets + @returns actual value + */ +int setCTBPatWaitAddr(int level, int addr=-1) { + + + + + int retval=-1; + + + int ret=FAIL; + uint64_t retval=-1; + int fnum=F_SET_CTB_PATTERN; + int mode=3; //sets loop + + char mess[100]; + +#ifdef VERBOSE + std::cout<<"Setting CTB word" <onlineFlag==ONLINE_FLAG) { + if (connectControl() == OK){ + controlSocket->SendDataOnly(&fnum,sizeof(fnum)); + controlSocket->SendDataOnly(&mode,sizeof(mode)); + controlSocket->SendDataOnly(&level,sizeof(level)); + controlSocket->SendDataOnly(&addr,sizeof(addr)); + controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); + if (ret!=FAIL) { + controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); + } else { + controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned error: " << mess << std::endl; + } + controlSocket->Disconnect(); + if (ret==FORCE_UPDATE) + updateDetector(); + } + } + + return retval; + + + +} + + /** Sets the wait time in the CTB + @param level 0,1,2, wait level + @param t wait time, -1 gets + @returns actual value + */ +int setCTBPatWaitTime(int level, uint64_t t=-1) { + + + + + + uint64_t retval=-1; + + + int ret=FAIL; + uint64_t retval=-1; + int fnum=F_SET_CTB_PATTERN; + int mode=4; //sets loop + + char mess[100]; + +#ifdef VERBOSE + std::cout<<"Setting CTB word" <onlineFlag==ONLINE_FLAG) { + if (connectControl() == OK){ + controlSocket->SendDataOnly(&fnum,sizeof(fnum)); + controlSocket->SendDataOnly(&mode,sizeof(mode)); + controlSocket->SendDataOnly(&level,sizeof(level)); + controlSocket->SendDataOnly(&t,sizeof(t)); + controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); + if (ret!=FAIL) { + controlSocket->ReceiveDataOnly(&retval,sizeof(retval)); + } else { + controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + std::cout<< "Detector returned error: " << mess << std::endl; + } + controlSocket->Disconnect(); + if (ret==FORCE_UPDATE) + updateDetector(); + } + } + + return retval; + + +} + + diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 736334dd9..92332f733 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1650,6 +1650,48 @@ class slsDetector : public slsDetectorUtils, public energyConversion { */ int enableTenGigabitEthernet(int i = -1); + + /******** CTB funcs */ + + /** opens pattern file and sends pattern to CTB + @param fname pattern file to open + @returns OK/FAIL + */ + int setCTBPattern(string fname); + + + /** Writes a pattern word to the CTB + @param addr address of the word, -1 is I/O control register, -2 is clk control register + @param word 64bit word to be written, -1 gets + @returns actual value + */ + int setCTBWord(int addr,uint64_t word=-1); + + /** 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 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ + int setCTBPatLoops(int level,int &start, int &stop, int &n); + + + /** Sets the wait address in the CTB + @param level 0,1,2, wait level + @param addr wait address, -1 gets + @returns actual value + */ + int setCTBPatWaitAddr(int level, int addr=-1); + + /** Sets the wait time in the CTB + @param level 0,1,2, wait level + @param t wait time, -1 gets + @returns actual value + */ + int setCTBPatWaitTime(int level, uint64_t t=-1); + + protected: diff --git a/slsDetectorSoftware/slsDetector/slsDetectorBase.h b/slsDetectorSoftware/slsDetector/slsDetectorBase.h index d543b0281..554adeefe 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorBase.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorBase.h @@ -519,6 +519,8 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef case GOTTHARD: return string("Gotthard"); \ case AGIPD: return string("Agipd"); \ case MOENCH: return string("Moench"); \ + case JUNGFRAU: return string("Jungfrau"); \ + case JUNGFRAUCTB: return string("JungfrauCTB"); \ default: return string("Unknown"); \ }}; @@ -533,6 +535,8 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef if (type=="Gotthard") return GOTTHARD; \ if (type=="Agipd") return AGIPD; \ if (type=="Moench") return MOENCH; \ + if (type=="Jungfrau") return JUNGFRAU; \ + if (type=="JungfrauCTB") return JUNGFRAUCTB; \ return GENERIC;}; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 247797606..569095056 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -869,6 +869,97 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) { i++; + /* pattern generator */ + + + descrToFuncMap[i].m_pFuncName="pattern"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patword"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patioctrl"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patclkctrl"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patlimits"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + descrToFuncMap[i].m_pFuncName="patloop0"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patnloop0"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwait0"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwaittime0"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patloop1"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patnloop1"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwait1"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwaittime1"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patloop2"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patnloop2"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwait2"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + descrToFuncMap[i].m_pFuncName="patwaittime2"; // + descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdPattern; + i++; + + + + + + numberOfCommands=i; // #ifdef VERBOSE @@ -4153,10 +4244,11 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) { string slsDetectorCommand::helpReceiver(int narg, char *args[], int action) { ostringstream os; - if (action==PUT_ACTION || action==HELP_ACTION) + if (action==PUT_ACTION || action==HELP_ACTION) { os << "receiver [status] \t starts/stops the receiver to listen to detector packets. - can be start or stop" << std::endl; os << "r_readfreq \t sets the gui read frequency of the receiver, 0 if gui requests frame, >0 if receiver sends every nth frame to gui" << std::endl; os << "tengiga \t sets system to be configure for 10Gbe if set to 1, else 1Gbe if set to 0" << std::endl; + } if (action==GET_ACTION || action==HELP_ACTION){ os << "receiver \t returns the status of receiver - can be running or idle" << std::endl; os << "framescaught \t returns the number of frames caught by receiver(average for multi)" << std::endl; @@ -4173,4 +4265,82 @@ string slsDetectorCommand::helpReceiver(int narg, char *args[], int action) { +} + +string slsDetectorCommand::helpPattern(int narg, char *args[], int action) { + + ostringstream os; + if (action==PUT_ACTION || action==HELP_ACTION) { + os << "pattern fname \t loads pattern file" << std::endl; + os << "patword addr word \t writes pattern word - only very advanced users!" << std::endl; + os << "patioctrl reg\t configures inputs/outputs of the chiptest board - only advanced users!" << std::endl; + os << "patclkctrl reg\t configures output clk enable of the chiptest board- only advanced users! " << std::endl; + os << "patlimits addr1 addr2\t defines pattern limits between addr1 and addr2" << std::endl; + os << "patloop0 addr1 adrr2 \t configures the limits of the 0 loop " << std::endl; + os << "patloop1 addr1 adrr2 \t configures the limits of the 1 loop " << std::endl; + os << "patloop2 addr1 adrr2 \t configures the limits of the 2 loop " << std::endl; + os << "patnloop0 n \t sets number of cycles of the 0 loop " << std::endl; + os << "patnloop1 n \t sets number of cycles of the 1 loop " << std::endl; + os << "patnloop2 n \t sets number of cycles of the 2 loop " << std::endl; + os << "patwait0 addr \t configures pattern wait 0 address " << std::endl; + os << "patwait1 addr \t configures pattern wait 1 address " << std::endl; + os << "patwait2 addr \t configures pattern wait 2 address " << std::endl; + os << "patwaittime0 nclk \t sets wait 0 waiting time in clock number " << std::endl; + os << "patwaittime1 nclk \t sets wait 1 waiting time in clock number " << std::endl; + os << "patwaittime2 nclk \t sets wait 2 waiting time in clock number " << std::endl; + } + if (action==GET_ACTION || action==HELP_ACTION){ + os << "pattern \t cannot get" << std::endl; + os << "patword \t cannot get" << std::endl; + os << "patioctrl \t returns inputs/outputs of the chiptest board - only advanced users!" << std::endl; + os << "patclkctrl\t returns output clk enable of the chiptest board- only advanced users! " << std::endl; + os << "patlimits \t returns pattern limits between addr1 and addr2" << std::endl; + os << "patloop0 \t returns the limits of the 0 loop " << std::endl; + os << "patloop1 \t returns the limits of the 1 loop " << std::endl; + os << "patloop2 \t returns the limits of the 2 loop " << std::endl; + os << "patnloop0 \t returns the number of cycles of the 0 loop " << std::endl; + os << "patnloop1 \t returns the number of cycles of the 1 loop " << std::endl; + os << "patnloop2 \t returns the number of cycles of the 2 loop " << std::endl; + os << "patwait0 \t returns the pattern wait 0 address " << std::endl; + os << "patwait1 \t returns the pattern wait 1 address " << std::endl; + os << "patwait2 \t returns the pattern wait 2 address " << std::endl; + os << "patwaittime0 \t returns the wait 0 waiting time in clock number " << std::endl; + os << "patwaittime1 \t returns the wait 1 waiting time in clock number " << std::endl; + os << "patwaittime2 \t returns the wait 2 waiting time in clock number " << std::endl; + + } + return os.str(); + +} + + +string slsDetectorCommand::cmdPattern(int narg, char *args[], int action) { + + /******** + + Must implement set ctb functions in slsDetector and multiSlsDetector + + **********/ + ostringstream os; + if (cmd=="pattern") + else if (cmd=="patword") ; + else if (cmd=="patioctrl") ; + else if (cmd=="patclkctrl") ; + else if (cmd=="patlimits") ; + else if (cmd=="patloop0") ; + else if (cmd=="patloop1") ; + else if (cmd=="patloop2") ; + else if (cmd=="patnloop0") ; + else if (cmd=="patnloop1") ; + else if (cmd=="patnloop2") ; + else if (cmd=="patwait0") ; + else if (cmd=="patwait1") ; + else if (cmd=="patwait2") ; + else if (cmd=="patwaittime0") ; + else if (cmd=="patwaittime1") ; + else if (cmd=="patwaittime2") ; + else return helpPattern(narg, args, action); + + return os.str(); + } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.h b/slsDetectorSoftware/slsDetector/slsDetectorCommand.h index f6a791eab..22888c462 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.h @@ -84,6 +84,7 @@ class slsDetectorCommand : public virtual slsDetectorDefs { static string helpEnablefwrite(int narg, char *args[], int action); static string helpOverwrite(int narg, char *args[], int action); static string helpReceiver(int narg, char *args[], int action); + static string helpPattern(int narg, char *args[], int action); @@ -155,6 +156,7 @@ class slsDetectorCommand : public virtual slsDetectorDefs { string cmdEnablefwrite(int narg, char *args[], int action); string cmdOverwrite(int narg, char *args[], int action); string cmdReceiver(int narg, char *args[], int action); + string cmdPattern(int narg, char *args[], int action); int numberOfCommands; diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h index c2d50008f..46bf60726 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.h @@ -702,12 +702,77 @@ virtual int enableReceiverCompression(int i = -1)=0; /returns if 10Gbe is enabled */ virtual int enableTenGigabitEthernet(int i = -1)=0; + + + + /******** CTB funcs */ + + /** opens pattern file and sends pattern to CTB + @param fname pattern file to open + @returns OK/FAIL + */ + virtual int setCTBPattern(string fname)=0; + + + /** Writes a pattern word to the CTB + @param addr address of the word, -1 is I/O control register, -2 is clk control register + @param word 64bit word to be written, -1 gets + @returns actual value + */ + virtual uint64_t setCTBWord(int addr,uint64_t word=-1)=0; + + /** 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 + @param stop stop address if >=0 + @param n number of loops (if level >=0) + @returns OK/FAIL + */ + virtual int setCTBPatLoops(int level,int &start, int &stop, int &n)=0; + + + /** Sets the wait address in the CTB + @param level 0,1,2, wait level + @param addr wait address, -1 gets + @returns actual value + */ + virtual int setCTBPatWaitAddr(int level, int addr=-1)=0; + + /** Sets the wait time in the CTB + @param level 0,1,2, wait level + @param t wait time, -1 gets + @returns actual value + */ + virtual int setCTBPatWaitTime(int level, uint64_t t=-1)=0; + + + + + + + + + + + + + + + + + + + + + + + protected: - static const int64_t thisSoftwareVersion=0x20120124; + static const int64_t thisSoftwareVersion=0x20141013; From 327c2106df0fdfbd489a246eb47a8766a8e1f8a7 Mon Sep 17 00:00:00 2001 From: Anna Bergamaschi Date: Tue, 14 Oct 2014 17:43:25 +0200 Subject: [PATCH 08/12] Some fixes for the CTB --- .../jungfrauDetectorServer/firmware_funcs.c | 2 +- .../jungfrauDetectorServer | Bin 134700 -> 134700 bytes .../jungfrauDetectorServer.gdb | Bin 571615 -> 571615 bytes .../jungfrauDetectorServer/registers_m.h | 36 +++++++++--------- .../multiSlsDetector/multiSlsDetector.cpp | 10 ++--- .../multiSlsDetector/multiSlsDetector.h | 2 +- .../slsDetector/slsDetector.cpp | 36 +++++++++--------- slsDetectorSoftware/slsDetector/slsDetector.h | 2 +- .../slsDetector/slsDetectorCommand.cpp | 2 +- 9 files changed, 44 insertions(+), 46 deletions(-) diff --git a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c index a225b86e8..be5511b74 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c +++ b/slsDetectorSoftware/jungfrauDetectorServer/firmware_funcs.c @@ -2619,7 +2619,7 @@ uint64_t writePatternWord(int addr, uint64_t word) { if (addr>=MAX_PATTERN_LENGTH) return -1; - if (word>=0) { + if (word=!-1){ set64BitReg(word,PATTERN_IN_REG_LSB,PATTERN_IN_REG_MSB); cntrl= (addr&APATTERN_MASK) << PATTERN_CTRL_ADDR_OFFSET; bus_w(PATTERN_CNTRL_REG, cntrl); diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer index 21293ade1f995e82271471563f122b3ee19fdf75..ee798a145ef99938421b9fbfe134da1bf0007d73 100755 GIT binary patch delta 20083 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 W;XU|JlaqNxnSA{~dwWxEss96XVpOOA delta 19986 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 V1K!f)WL{AwpF7mr)|6T3{{YHQ1uXyo diff --git a/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer.gdb b/slsDetectorSoftware/jungfrauDetectorServer/jungfrauDetectorServer.gdb index 7d18435d80e5852dfc4628a6253c6a95aacd5681..25a3cc706c611c88cb115f1126245b2f750e3223 100755 GIT binary patch delta 82069 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

    m>Jmv*NTmh=1DqW=JdeuoP*SQ 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 L(K%B?gR}oXLAPH< diff --git a/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h b/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h index eb8b64c69..cd7682a88 100755 --- a/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h +++ b/slsDetectorSoftware/jungfrauDetectorServer/registers_m.h @@ -254,38 +254,38 @@ -#define ROI_REG 0x35<<11 -#define OVERSAMPLING_REG 0x36<<11 -#define MOENCH_CNTR_REG 0x31<<11 -#define MOENCH_CNTR_OUT_REG 0x33<<11 -#define MOENCH_CNTR_CONF_REG 0x32<<11 +#define ROI_REG 0 // 0x35<<11 +#define OVERSAMPLING_REG 0 // 0x36<<11 +#define MOENCH_CNTR_REG 0 // 0x31<<11 +#define MOENCH_CNTR_OUT_REG 0 // 0x33<<11 +#define MOENCH_CNTR_CONF_REG 0 // 0x32<<11 //image -#define DARK_IMAGE_REG 0x81<<11 -#define GAIN_IMAGE_REG 0x82<<11 +#define DARK_IMAGE_REG 0 // 0x81<<11 +#define GAIN_IMAGE_REG 0 // 0x82<<11 //counter block memory -#define COUNTER_MEMORY_REG 0x85<<11 +#define COUNTER_MEMORY_REG 0 // 0x85<<11 -#define GET_MEASUREMENT_TIME_LSB_REG 0x023000 -#define GET_MEASUREMENT_TIME_MSB_REG 0x024000 +#define GET_MEASUREMENT_TIME_LSB_REG 0 // 0x023000 +#define GET_MEASUREMENT_TIME_MSB_REG 0 // 0x024000 -//#define GET_ACTUAL_TIME_LSB_REG 0x025000 -//#define GET_ACTUAL_TIME_MSB_REG 0x026000 +//#define GET_ACTUAL_TIME_LSB_REG 0 // 0x025000 +//#define GET_ACTUAL_TIME_MSB_REG 0 // 0x026000 //not used -//#define MCB_DOUT_REG_OFF 0x200000 -//#define FIFO_CNTRL_REG_OFF 0x300000 -//#define FIFO_COUNTR_REG_OFF 0x400000 +//#define MCB_DOUT_REG_OFF 0 // 0x200000 +//#define FIFO_CNTRL_REG_OFF 0 // 0x300000 +//#define FIFO_COUNTR_REG_OFF 0 // 0x400000 //not used so far -//#define SPEED_REG 0x006000 -//#define SET_NBITS_REG 0x008000 +//#define SPEED_REG 0 // 0x006000 +//#define SET_NBITS_REG 0 // 0x008000 //not used -//#define GET_SHIFT_IN_REG 0x022000 +//#define GET_SHIFT_IN_REG 0 // 0x022000 diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 3c7358a9d..41f80ea50 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -4839,7 +4839,7 @@ int multiSlsDetector::enableTenGigabitEthernet(int i){ @param fname pattern file to open @returns OK/FAIL */ -int setCTBPattern(string fname) { +int multiSlsDetector::setCTBPattern(string fname) { @@ -4853,7 +4853,7 @@ int setCTBPattern(string fname) { @param word 64bit word to be written, -1 gets @returns actual value */ -uint64_t setCTBWord(int addr,uint64_t word) { +uint64_t multiSlsDetector::setCTBWord(int addr,uint64_t word) { uint64_t ret=-100,ret1; for (int idet=0; idetnumberOfDetectors; idet++) if (detectors[idet]){ @@ -4878,7 +4878,7 @@ uint64_t setCTBWord(int addr,uint64_t word) { @param n number of loops (if level >=0) @returns OK/FAIL */ -int setCTBPatLoops(int level,int &start, int &stop, int &n) { +int multiSlsDetector::setCTBPatLoops(int level,int &start, int &stop, int &n) { int ret=-100,ret1; @@ -4903,7 +4903,7 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) { @param addr wait address, -1 gets @returns actual value */ -int setCTBPatWaitAddr(int level, int addr) { +int multiSlsDetector::setCTBPatWaitAddr(int level, int addr) { @@ -4929,7 +4929,7 @@ int setCTBPatWaitAddr(int level, int addr) { @param t wait time, -1 gets @returns actual value */ -int setCTBPatWaitTime(int level, uint64_t t=-1) { +int multiSlsDetector::setCTBPatWaitTime(int level, uint64_t t) { diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index 9057d1b81..0c0aced7a 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -1254,7 +1254,7 @@ class multiSlsDetector : public slsDetectorUtils { @param word 64bit word to be written, -1 gets @returns actual value */ - int setCTBWord(int addr,uint64_t word=-1); + uint64_t setCTBWord(int addr,uint64_t word=-1); /** Sets the pattern or loop limits in the CTB @param level -1 complete pattern, 0,1,2, loop level diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 547f04f7d..41d1e0d94 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -6801,23 +6801,23 @@ int slsDetector::enableTenGigabitEthernet(int i){ @param fname pattern file to open @returns OK/FAIL */ -int setCTBPattern(string fname) { +int slsDetector::setCTBPattern(string fname) { - int fnum=F_SEND_RECEIVER_DETHOSTNAME; + int fnum=F_SET_CTB_PATTERN; int ret = FAIL; char retval[MAX_STR_LENGTH]=""; - if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){ -#ifdef VERBOSE - std::cout << "Sending detector hostname to Receiver " << thisDetector->hostname << std::endl; -#endif - if (connectData() == OK) - ret=thisReceiver->sendString(fnum,retval,thisDetector->hostname); - if((ret==FAIL) || (strcmp(retval,thisDetector->hostname))) - setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTNAME_NOT_SET)); - } +// if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){ +// #ifdef VERBOSE +// std::cout << "Sending detector hostname to Receiver " << thisDetector->hostname << std::endl; +// #endif +// if (connectData() == OK) +// ret=thisReceiver->sendString(fnum,retval,thisDetector->hostname); +// if((ret==FAIL) || (strcmp(retval,thisDetector->hostname))) +// setErrorMask((getErrorMask())|(RECEIVER_DET_HOSTNAME_NOT_SET)); +// } return ret; @@ -6830,9 +6830,9 @@ int setCTBPattern(string fname) { @param word 64bit word to be written, -1 gets @returns actual value */ -uint64_t setCTBWord(int addr,uint64_t word) { +uint64_t slsDetector::setCTBWord(int addr,uint64_t word) { - uint64_t ret; + //uint64_t ret; int ret=FAIL; uint64_t retval=-1; @@ -6876,7 +6876,7 @@ uint64_t setCTBWord(int addr,uint64_t word) { @param n number of loops (if level >=0) @returns OK/FAIL */ -int setCTBPatLoops(int level,int &start, int &stop, int &n) { +int slsDetector::setCTBPatLoops(int level,int &start, int &stop, int &n) { int retval[3], args[4]; @@ -6888,7 +6888,6 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) { int ret=FAIL; - uint64_t retval=-1; int fnum=F_SET_CTB_PATTERN; int mode=1; //sets loop @@ -6930,7 +6929,7 @@ int setCTBPatLoops(int level,int &start, int &stop, int &n) { @param addr wait address, -1 gets @returns actual value */ -int setCTBPatWaitAddr(int level, int addr=-1) { +int slsDetector::setCTBPatWaitAddr(int level, int addr) { @@ -6939,7 +6938,6 @@ int setCTBPatWaitAddr(int level, int addr=-1) { int ret=FAIL; - uint64_t retval=-1; int fnum=F_SET_CTB_PATTERN; int mode=3; //sets loop @@ -6979,7 +6977,7 @@ int setCTBPatWaitAddr(int level, int addr=-1) { @param t wait time, -1 gets @returns actual value */ -int setCTBPatWaitTime(int level, uint64_t t=-1) { +int slsDetector::setCTBPatWaitTime(int level, uint64_t t) { @@ -6989,7 +6987,7 @@ int setCTBPatWaitTime(int level, uint64_t t=-1) { int ret=FAIL; - uint64_t retval=-1; + // uint64_t retval=-1; int fnum=F_SET_CTB_PATTERN; int mode=4; //sets loop diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 92332f733..593834a60 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -1665,7 +1665,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion { @param word 64bit word to be written, -1 gets @returns actual value */ - int setCTBWord(int addr,uint64_t word=-1); + uint64_t setCTBWord(int addr,uint64_t word=-1); /** Sets the pattern or loop limits in the CTB @param level -1 complete pattern, 0,1,2, loop level diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 569095056..33faa40c9 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -4322,7 +4322,7 @@ string slsDetectorCommand::cmdPattern(int narg, char *args[], int action) { **********/ ostringstream os; - if (cmd=="pattern") + if (cmd=="pattern") ; else if (cmd=="patword") ; else if (cmd=="patioctrl") ; else if (cmd=="patclkctrl") ; From 5a5372350fb40d653b30dc4746a9ffe340e116c8 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Thu, 16 Oct 2014 13:49:56 +0200 Subject: [PATCH 09/12] stop server incl in makefile, master chosen based on top or bottom module at the moment --- .../eigerDetectorServer/FebControl.c | 22 ++++++++++++------ .../eigerDetectorServer/Makefile | 4 ++-- .../bin/eigerDetectorServer | Bin 237506 -> 237506 bytes .../slsDetectorFunctionList.c | 6 ++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 928aad2a8..68f90df72 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -1049,22 +1049,30 @@ int Feb_Control_WaitForFinishedFlag(int sleep_time_us){ int Feb_Control_AcquisitionInProgress(){ unsigned int status_reg_r=0,status_reg_l=0; + /*printf("master right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[0]),&status_reg_r)); + printf("master left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[0]),&status_reg_l)); - //printf("right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r)); - //printf("left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l)); + printf("top right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r)); + printf("top left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l)); + + if(Module_BottomAddressIsValid(&modules[1])){ + printf("bot right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r)); + printf("bot left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetBottomLeftAddress(&modules[1]),&status_reg_l)); + } +*/ if(Module_BottomAddressIsValid(&modules[1])){ //printf("************* bottom1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**bottom address wrong\n");return 0;} }else{ //printf("************* top1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r))) - return 0; + {printf("**top address wrong\n");return 0;} } - - if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) return 1; + printf("runningggg 0x%x\n",status_reg_r); + if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) {printf("**runningggg\n");return 1;} /* if(!(GetDAQStatusRegister(modules[i]->Module_GetTopLeftAddress(),status_reg_r)&&GetDAQStatusRegister(modules[i]->Module_GetTopRightAddress(),status_reg_l))){ @@ -1075,7 +1083,7 @@ int Feb_Control_AcquisitionInProgress(){ } */ - /*printf("**idle\n");*/return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; + printf("**idle\n");return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; } int Feb_Control_Reset(){ diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index 7920925cb..046fd22eb 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,6 +1,6 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT #-DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer @@ -36,4 +36,4 @@ beb_debug:$(SRC_CLNT3) clean: rm -rf $(DESTDIR)/$(PROGS) *.o - \ No newline at end of file + diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index ac7f244c618968cacc83d9e273bec0c03d35dc26..b39fdb2c55bd19f3d7532f39709a4c42ce177592 100755 GIT binary patch delta 25484 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 Date: Thu, 16 Oct 2014 14:14:00 +0200 Subject: [PATCH 10/12] the version given to esrf --- slsDetectorSoftware/eigerDetectorServer/gitInfo.txt | 8 ++++---- slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h | 8 ++++---- slsDetectorSoftware/gitInfo.txt | 8 ++++---- slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt | 8 ++++---- .../gotthardDetectorServer/gitInfoGotthard.h | 8 ++++---- slsDetectorSoftware/moenchDetectorServer/gitInfo.txt | 8 ++++---- slsDetectorSoftware/moenchDetectorServer/gitInfoMoench.h | 8 ++++---- slsDetectorSoftware/mythenDetectorServer/gitInfo.txt | 8 ++++---- slsDetectorSoftware/mythenDetectorServer/gitInfoMythen.h | 8 ++++---- slsDetectorSoftware/slsDetector/gitInfoLib.h | 8 ++++---- 10 files changed, 40 insertions(+), 40 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt index d75caad9c..83d4ba555 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/eigerDetectorServer URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/eigerDetectorServer Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git -Repsitory UUID: c31619c88e5690230fcd389dc18f9139295c442c -Revision: 91 +Repsitory UUID: ce7cd6255b7b3abf1c046e9703ae8288ec55135a +Revision: 97 Branch: master Last Changed Author: Maliakal_Dhanya -Last Changed Rev: 280 -Last Changed Date: 2014-09-09 15:43:18 +0200 +Last Changed Rev: 282 +Last Changed Date: 2014-10-16 13:49:56 +0200 diff --git a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h index e3e6ee9f0..7b83ced07 100644 --- a/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h +++ b/slsDetectorSoftware/eigerDetectorServer/gitInfoEiger.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/eigerDetectorServer" //#define SVNREPPATH "" -#define SVNREPUUID "c31619c88e5690230fcd389dc18f9139295c442c" -//#define SVNREV 0x280 +#define SVNREPUUID "ce7cd6255b7b3abf1c046e9703ae8288ec55135a" +//#define SVNREV 0x282 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Maliakal_Dhanya" -#define SVNREV 0x280 -#define SVNDATE 0x20140909 +#define SVNREV 0x282 +#define SVNDATE 0x20141016 // diff --git a/slsDetectorSoftware/gitInfo.txt b/slsDetectorSoftware/gitInfo.txt index 40e3bf8fa..3098c814c 100644 --- a/slsDetectorSoftware/gitInfo.txt +++ b/slsDetectorSoftware/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git -Repsitory UUID: c31619c88e5690230fcd389dc18f9139295c442c -Revision: 852 +Repsitory UUID: ce7cd6255b7b3abf1c046e9703ae8288ec55135a +Revision: 865 Branch: master Last Changed Author: Maliakal_Dhanya -Last Changed Rev: 852 -Last Changed Date: 2014-09-09 15:43:18 +0200 +Last Changed Rev: 865 +Last Changed Date: 2014-10-16 13:49:56 +0200 diff --git a/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt b/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt index 047932789..4b8c1aa5c 100644 --- a/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/gotthardDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/gotthardDetectorServer URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/gotthardDetectorServer Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git -Repsitory UUID: c31619c88e5690230fcd389dc18f9139295c442c -Revision: 173 +Repsitory UUID: ce7cd6255b7b3abf1c046e9703ae8288ec55135a +Revision: 175 Branch: master Last Changed Author: Maliakal_Dhanya -Last Changed Rev: 280 -Last Changed Date: 2014-09-09 15:43:18 +0200 +Last Changed Rev: 282 +Last Changed Date: 2014-10-16 13:49:56 +0200 diff --git a/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h b/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h index 8875fcb86..13990b080 100644 --- a/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h +++ b/slsDetectorSoftware/gotthardDetectorServer/gitInfoGotthard.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/gotthardDetectorServer" //#define SVNREPPATH "" -#define SVNREPUUID "c31619c88e5690230fcd389dc18f9139295c442c" -//#define SVNREV 0x280 +#define SVNREPUUID "ce7cd6255b7b3abf1c046e9703ae8288ec55135a" +//#define SVNREV 0x282 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Maliakal_Dhanya" -#define SVNREV 0x280 -#define SVNDATE 0x20140909 +#define SVNREV 0x282 +#define SVNDATE 0x20141016 // diff --git a/slsDetectorSoftware/moenchDetectorServer/gitInfo.txt b/slsDetectorSoftware/moenchDetectorServer/gitInfo.txt index 2b8b24fce..256e019d7 100644 --- a/slsDetectorSoftware/moenchDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/moenchDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/moenchDetectorServer URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/moenchDetectorServer Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git -Repsitory UUID: c31619c88e5690230fcd389dc18f9139295c442c -Revision: 58 +Repsitory UUID: ce7cd6255b7b3abf1c046e9703ae8288ec55135a +Revision: 62 Branch: master Last Changed Author: Maliakal_Dhanya -Last Changed Rev: 280 -Last Changed Date: 2014-09-09 15:43:18 +0200 +Last Changed Rev: 282 +Last Changed Date: 2014-10-16 13:49:56 +0200 diff --git a/slsDetectorSoftware/moenchDetectorServer/gitInfoMoench.h b/slsDetectorSoftware/moenchDetectorServer/gitInfoMoench.h index a7ca6266d..2940f7e04 100644 --- a/slsDetectorSoftware/moenchDetectorServer/gitInfoMoench.h +++ b/slsDetectorSoftware/moenchDetectorServer/gitInfoMoench.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/moenchDetectorServer" //#define SVNREPPATH "" -#define SVNREPUUID "c31619c88e5690230fcd389dc18f9139295c442c" -//#define SVNREV 0x280 +#define SVNREPUUID "ce7cd6255b7b3abf1c046e9703ae8288ec55135a" +//#define SVNREV 0x282 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Maliakal_Dhanya" -#define SVNREV 0x280 -#define SVNDATE 0x20140909 +#define SVNREV 0x282 +#define SVNDATE 0x20141016 // diff --git a/slsDetectorSoftware/mythenDetectorServer/gitInfo.txt b/slsDetectorSoftware/mythenDetectorServer/gitInfo.txt index 6f4d00d95..54d7cdf89 100644 --- a/slsDetectorSoftware/mythenDetectorServer/gitInfo.txt +++ b/slsDetectorSoftware/mythenDetectorServer/gitInfo.txt @@ -1,9 +1,9 @@ Path: slsDetectorsPackage/slsDetectorSoftware/mythenDetectorServer URL: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/mythenDetectorServer Repository Root: origin git@gitorious.psi.ch:sls_det_software/sls_detector_software.git -Repsitory UUID: c31619c88e5690230fcd389dc18f9139295c442c -Revision: 90 +Repsitory UUID: ce7cd6255b7b3abf1c046e9703ae8288ec55135a +Revision: 91 Branch: master Last Changed Author: Maliakal_Dhanya -Last Changed Rev: 280 -Last Changed Date: 2014-09-09 15:43:18 +0200 +Last Changed Rev: 282 +Last Changed Date: 2014-10-16 13:49:56 +0200 diff --git a/slsDetectorSoftware/mythenDetectorServer/gitInfoMythen.h b/slsDetectorSoftware/mythenDetectorServer/gitInfoMythen.h index cf8494ed2..2ac5f41bf 100644 --- a/slsDetectorSoftware/mythenDetectorServer/gitInfoMythen.h +++ b/slsDetectorSoftware/mythenDetectorServer/gitInfoMythen.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURL "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git/mythenDetectorServer" //#define SVNREPPATH "" -#define SVNREPUUID "c31619c88e5690230fcd389dc18f9139295c442c" -//#define SVNREV 0x280 +#define SVNREPUUID "ce7cd6255b7b3abf1c046e9703ae8288ec55135a" +//#define SVNREV 0x282 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTH "Maliakal_Dhanya" -#define SVNREV 0x280 -#define SVNDATE 0x20140909 +#define SVNREV 0x282 +#define SVNDATE 0x20141016 // diff --git a/slsDetectorSoftware/slsDetector/gitInfoLib.h b/slsDetectorSoftware/slsDetector/gitInfoLib.h index c41f27f96..efe126d8a 100644 --- a/slsDetectorSoftware/slsDetector/gitInfoLib.h +++ b/slsDetectorSoftware/slsDetector/gitInfoLib.h @@ -1,11 +1,11 @@ //#define SVNPATH "" #define SVNURLLIB "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git" //#define SVNREPPATH "" -#define SVNREPUUIDLIB "c31619c88e5690230fcd389dc18f9139295c442c" -//#define SVNREV 0x852 +#define SVNREPUUIDLIB "ce7cd6255b7b3abf1c046e9703ae8288ec55135a" +//#define SVNREV 0x865 //#define SVNKIND "" //#define SVNSCHED "" #define SVNAUTHLIB "Maliakal_Dhanya" -#define SVNREVLIB 0x852 -#define SVNDATELIB 0x20140909 +#define SVNREVLIB 0x865 +#define SVNDATELIB 0x20141016 // From b24f3741556045472036c6c4354b396a9e149d16 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Mon, 20 Oct 2014 17:33:22 +0200 Subject: [PATCH 11/12] setting number of frames had a bug in eiger server, refactored code a bit --- .../eigerDetectorServer/FebControl.c | 30 ++++++------------ .../eigerDetectorServer/Makefile | 2 +- .../bin/eigerDetectorServer | Bin 237506 -> 237506 bytes .../slsDetectorFunctionList.c | 30 ++++++------------ .../slsDetectorServer_funcs.c | 4 +-- 5 files changed, 22 insertions(+), 44 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/FebControl.c b/slsDetectorSoftware/eigerDetectorServer/FebControl.c index 68f90df72..475e1598d 100644 --- a/slsDetectorSoftware/eigerDetectorServer/FebControl.c +++ b/slsDetectorSoftware/eigerDetectorServer/FebControl.c @@ -1048,31 +1048,20 @@ int Feb_Control_WaitForFinishedFlag(int sleep_time_us){ int Feb_Control_AcquisitionInProgress(){ unsigned int status_reg_r=0,status_reg_l=0; - - /*printf("master right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[0]),&status_reg_r)); - printf("master left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[0]),&status_reg_l)); - - - printf("top right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r)); - printf("top left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l)); - if(Module_BottomAddressIsValid(&modules[1])){ - printf("bot right:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r)); - printf("bot left:%d\n",Feb_Control_GetDAQStatusRegister(Module_GetBottomLeftAddress(&modules[1]),&status_reg_l)); - } -*/ - if(Module_BottomAddressIsValid(&modules[1])){ - //printf("************* bottom1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomRightAddress(&modules[1]),&status_reg_r))) - {printf("**bottom address wrong\n");return 0;} + {printf("ERROR: Trouble reading Status register. bottom right address\n");return 0;} + if(!(Feb_Control_GetDAQStatusRegister(Module_GetBottomLeftAddress(&modules[1]),&status_reg_l))) + {printf("ERROR: Trouble reading Status register. bottom left address\n");return 0;} + }else{ - //printf("************* top1\n"); if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopRightAddress(&modules[1]),&status_reg_r))) - {printf("**top address wrong\n");return 0;} + {printf("ERROR: Trouble reading Status register. top right address\n");return 0;} + if(!(Feb_Control_GetDAQStatusRegister(Module_GetTopLeftAddress(&modules[1]),&status_reg_l))) + {printf("ERROR: Trouble reading Status register. top left address\n");return 0;} } - printf("runningggg 0x%x\n",status_reg_r); - if(status_reg_r&DAQ_STATUS_DAQ_RUNNING) {printf("**runningggg\n");return 1;} + if((status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING) {/*printf("**runningggg\n");*/return 1;} /* if(!(GetDAQStatusRegister(modules[i]->Module_GetTopLeftAddress(),status_reg_r)&&GetDAQStatusRegister(modules[i]->Module_GetTopRightAddress(),status_reg_l))){ @@ -1083,7 +1072,8 @@ int Feb_Control_AcquisitionInProgress(){ } */ - printf("**idle\n");return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; + /*printf("**idle\n");*/ + return 0; //i.e. not running (status_reg_r|status_reg_l)&DAQ_STATUS_DAQ_RUNNING; } int Feb_Control_Reset(){ diff --git a/slsDetectorSoftware/eigerDetectorServer/Makefile b/slsDetectorSoftware/eigerDetectorServer/Makefile index 046fd22eb..26b190032 100755 --- a/slsDetectorSoftware/eigerDetectorServer/Makefile +++ b/slsDetectorSoftware/eigerDetectorServer/Makefile @@ -1,6 +1,6 @@ CC = powerpc-4xx-softfloat-gcc CCX = powerpc-4xx-softfloat-g++ -CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT -DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE +CFLAGS += -Wall -DDACS_INT -DEIGERD -DSLS_DETECTOR_FUNCTION_LIST -DDACS_INT #-DSTOP_SERVER #-DVERBOSE #-DVIRTUAL -DPCCOMPILE LDLIBS += -lm -lstdc++ PROGS = eigerDetectorServer diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index b39fdb2c55bd19f3d7532f39709a4c42ce177592..bd9ae619f3e5a7c6be9a4172f71c5c0007efb3c7 100755 GIT binary patch delta 26393 zcmbun4O~^l_BXy~4jcgiw}`w82SikS1K&bLK||fXhKhxWiiL`Wii%fElw(;@`GO8Q zSg6#s!o^YHm>_Fl7IX3d(l z)~uPm;r;i#-+#}$@F{aZwL$}`w`^GAo~6>x`gPESj55&+RR=Yf@67b{Ef&+hKfO?K zFr)oeLN6R=H$5N6?O>jl55V)R(0dHM(0H)cJDSk16y~D#r(gLVj8lUE_GT#^`_iwH z*!qs6^1t@YbEm#}?M=DsdMQf0qS6>ewz->LnQV2j=xym=g8kzUqCqtpzIHiS<8yyUT33FsN924L zT35pgdkm#@jqC(&7k!yqPuvC`OzQcgiNCju1hT}?c3nKJVM>pFR)r+)QexticBO@3 zN`Md;Yq^-hvibz%qlY{oUK9ur_l{8%mppeA}8eLxtek{ z`s>oX^x#|wS0G#$8k2r8PouxhjZ+i?xeb!H3~~e3bOoP_&UX=b1^u~M^A$F%uP<4{ zlKTb+o_2^E=@eIuZmzQReY=v=tPH=0uoHc|dL1@QaB_?TMRxQ;pKcnN z8!P+0#8Uc=pck81QNJj9v6&t1_cZy0CB^*B=NlKOq&ih<8qL)2BUxiiUplCsSz`Or z!6#U9tbbs!Fu@kX^-M8J@66#ARTDbbbau@!pw237%P7m2NEiyfW8 z>VPei*qXN3@h(j5?;n^Wv7T+QlbTs#f4`vnY9!jXEqZDb%LcP5u_0}-4!jd69twpR6*!2>d*A}}zlUWA(2PR7F`nK4o%ULq8jv3z2 z7W-^2vkvqNdbV0J7qvxis$vyjPL|k`w%DR-RtIKYE75z}qDuxcb&y}sZpS2+w?*$s zV~KeOS!)U^XYAEB&TGXqSKaHWbf+Q9}AzP46r0rsHxwDXyqPUC@4l==h z;#g}Fk7R*~L-M~Z{ttcik-F%3hc}?_jp)lWPO<-*|BSu}#Y?)1zm{|9a%+4mIio@E zR>)2#28oGD?C!ozSP%x8$Vx}}Mbxg)4Vtg?m|*{0IJPOz4GW}OM4mC0e@G!{NpAEIj+VXv)?r0%Q|Lb!3f6?b+^8A?yh}TSl49cDtrL zbA#263L^(3b-{I}-W$e#8`a5MQQ}JN_P8oRwQ)L2zBh_~5zBJ#4W%2s0CguU9;uw(%Y(t(bw7{GH^S$0x)EQWPS!^l-*1x*+|fSwt|az@Xl--<|> zPyczEl}^@!wL*JKI*QL%D_|E=$g8k&)yMm#I@PQcRQv7fW ze0m|08kIA_*xpc}g_h`V7mPGKy|p z#Hyx5(MzSQeo7eG!rZ1t8DsG$QvLai{ho`-S9w(_pV!mN5-#ZXNGO zKXPgb*)b{6QI{2?XgfV99Yvdn6Pc$6;#oC@vH3c)rre9nR+$+^kH4d9ete6ec{i3l z-J4#HW7g>p(&Mo$s;^zn7Tg~|!kP8{AfL++1K+rcz=pIo}@ZvpQTL>7R^4NZbY*Mnp%uuFTBih9_-r6t(_u5 zKiLVV5%m=osLO{0k8^aNyvVX=4kNcQy6#9CVxHgGyESbwy^QKDZ6+DXYWB&fTf(Nz ziXqRmYH-DtVEqlI&JG>(oy%P=9HP;Wr=zccURI^w$elzis{twQ>QKYwzbpRpUh2DI zmNWZ@zTZU(Qm2X^z9?Dlj*bPM539&nj!Z0l z3X#s2BuEBYQ`jq}FP@2gnc{4h*&_Ucf25J`M~6g}w9O6T_?7mT3kMZa%mjeDlC z`~|*bRcmo!nVlTsqK@upqphxNy`Gh!EYjK09q>U5l(BN*;wzS!M`qJ{4QvZA zdO6b4M_ZzYR_

    S!3w_E^I?q7(pcCH^vprzRyYs`Wum!77iDgqNqdlSfZ63S>mEF zuboKNZjQNh1Rk}`V8x5Ziq&dScY>vDaj(D?Ld?1ZWFQ<5z-3f1nHqiTNtT|`l`UD^ zJt$|3>`9MUXHRdv$SM{`(S3s)p4VFU!?Re?lCk6@JHI59?ssL)OTq#-{&iP}cIsU{ zkllUg@<2i2?BdWd*)?Ky*@3%oFH0QCi{-A&n(f~iYszx3yQmhitQEn`p530-r?JAN z3)mkkR4)zlnJqj#)>5B~*2igm5won!*t)V4du|y>D*(+Ok-bB9F;G*oN6P0IJUhCM z!}B|`Js$h|9xz^}Nb?iyZ}wsF%je4_kRG_ejxG=NKF}FN*+$Y!31{`o?;}fDTuyf~ zj-}^B)0ew2%PPO1iarnnx2x!eI|8mkFKcn{%#P-apTAh252ukThDZ%yq{ThOb1PgI ziGz_Auel57@F19N@sn+FZ(N4iqMRlRrn;S0vdw>kb)>CArJbU(2FYF$H6_bcKF4dy zqx{PBQ+%z|g%-y;w z42j#a%0F<2VV8Yd47==m26yC+TC= zmT}mm=~cVWYht^RDdg%QuS~hX8Xp@$>rb$l)&As@t=4{Q{hUEp2BMuEJv}}~9^SiOSyiod`%homio!4Q|vRIjXL7K%`tdtCb+$dV& zr3*f|#+O_ag1?>{#lqM6VQp&}+OssHCrf-OwEv&R1W$S886$09adD({QIA=_7FK%s zGPAxk*fHK$#J*1?ZWZH&p(Y+<8}j?pD;lfH_jey+%nG2oe3ai?tz*etrdhk=)F|5; zO?P-9cMV{tti9+JE9!}!-y#DX)tM` zICX=G9czv_8bNgb;KB-@+$`MZsqT;?1pE+!t>=)0p2&E{i4;OZyDDeI*RbCYF-9`o z?c?)ohHQKV-ASP5#)Fd2R~pd|fwK`VR#fCRi#{qT?sA zY~G#aZ}O+lbz#Mux(nlM3WF=xZJJ7dIHYT|db2O)#^Kv2lr4oL91CYu(JIVsA|^l< z$4UAjuVYPRp@8_0f(GLFS7H63D8c&QvuAhr572EeGmGqgGbF_?RIve zPdi7x^-af|p!g4Aq0v81{Bw;f+gcx#D?c=|3?_=!il>{SLcOozG7o@_wJBx_F~1`NBJc@CCXI*EO@m8ZI3;KR<-8<+giiH+Wqzx(POdLfGrt5|{ zd&_2-I}*s!tUm z;{{*g4KMUU?J8jZ=R46gYgk;#V%kuN^>-F?-RXxS*I}FIma|uP`nF2*@Ry0Z92uNG zb&Hknis&5Y2;~r`!5UZs-0-Qrta;Zcdewy`?vA2Q4c86!n3ulWUUiw(><%Lzvc}yH zdS6Y_=#%oKMd$+sZU z#u;a4IA+ne)4BS|h!j_;(I>9_CvoPhaO)@LvXGY|XyR#+`~9vq4F6ME{zNRxd1;ix znIFe?=%q2yg9brqBvoai=qc9nli10`I8)0yd64syCrkXhi2CHI0WACP9#kLqEOzei zUHpFPaaU(357#03_lQLyWlt1cF@)vqSw??KLZ!VRP#j17^$MT;@?-fwrNxDjl(r{Y zYgdTUDK=f{FO^IOP3m1VQzVT%V$|hi-bK?#(rj-fC%p~LeRQq6B&wD~LZR$7M0Cw% zN%MOvnykBMj%iB#3|9F{=;S}m23Fg(M+9q(@>6Ep09h+@{ZBX{gdJL5<*X$-ecex1 z7WwLgLHi|l*}4Rhx^50h6H?Z6n~=L^%(PsMt`R3H;>8bEZbgJ2jj8+T5Zm+WY`P|p zRhNa1`RN4YXFBEQU6B&cLt;84X0(-<_sL&KY+{*ZbI5cdF#j4-9PHGha9%edFxGMn z`wx=Us@=;t&Ro4l;&HrTD1t&Gz=N!Q3jwV%L^j(Vs4il~OvgqF{YvLI}I3(w{c=#?fKEuzF?70n7tO3Pip?(j5bIdt2=I zW8R)k8z<@~q;tYs@_fq)DP8y>tNWh_+L*yyj&=<{3t#Vn^yMpZ?#L4T#e+OLjm9}s zuZ>JQI*K+H=<8u76vKL$_KBX}(_YjU#I$wd0F>`0q%+HY$H(J(0DKjNx@$PE2qS(` z3sxCHay>~p7`6!u=83$VqQvwUZGgA2>UYF)*nr=YnEGx+=mLGyC0_M{U9aD^^ol5i zXa(e62b13&MWasL(3C-XwHA|pJwu}z=i<`E3H0X9dY9?fv7%&r$SSM0Pwg-ltORc_ zl=!M)&!>O%DGtIrOhOyIt8EC{P`q}6sIbI17)4V&#LEP<`JTpIK^xv4`*mTZ$3khu zJFMzhkU6rOrVM!bVBN7{ggnkdK8T>IA4~jT4%WWX5By_cNXH^~y+osPU56wnp3*91 zjwnZVbTcA3edEFU4;GLvf=#|NxLyu}wK@TtbAV-iD0XlgJ`4?-c@n(7km=SU3**$3 z*|*s752NVp)2!jcO%d0trTyJBI(r+|PUM82x`{$ap95ujXI6M3nAtvhI`sM_C+V!y z=-EvSTt8`5#-RuV*~*VU_PO3{4Q;Jd+DVpNy@~psJXlwKKcTZXvbawlrwb+>Jo;$_ zp&d`Mx_^u@|7_9d3{?6j#s~cz@9ZX3KP@sex%V`>_-Mq>X&Oxp*OXN|joJJej*{9D zHhD*EOP~;jNEe9#=)Swl-X!TZX!Lvh*10H z#j=T~-lWe@*;+G=+&-96Vl((U|J=APL5YMEQ=SKMu1CaO>+-a#EqG(! zlA7mEzA%il_@r~h${vHx%@DLDn!WbbJpi2a*mE0mHK zYRb)1?quh6K?Eu|y?3fvCK9*li3LkSq^5i}h1Hx1rC0mtLG3;DKr0lgy)&Uf z4OjA>?V6jnFgRCu;hH2YsmkKvxQ+<)s9(eXj6Sh6Zx>kB1PcYkM$=&@hXTEwy_{U3 zE6^~-P+-d0R;XA*0k1#zus9G3Y!m4G8>9b>{>L__0;G2<1uh8-#HRnE83t~dsJn`+ zDP3Cd#zdt!C+gALttP5y9h-I5O-{`tXYXN`z5H3_*+9`^^{Lt{FhN4zhGN%-#AUlSi`cud@1OcS|`usK~5g5 zVLfVp4f>@?qET;7>ISr@fN{n=h{c_In>P8frgP&xChpM3uK?8k1yJ9F##oyytmI$M zdrWvyV0AF@-_PfdzpaBxQ=(J!__?|OOH(pZQ?es1X>|NJ*^UBHsch9QKZhiF57PPmPkaTDe=R-4p$deY7RZne*iL(%s0+xboht7FqeezY?X9k!B>8y@z|1Ii>C3j4r#M^Ey=R4vyk{Jci`^pno)fmcYlS{znC1q?-}fA={cZA? zk<*RUbL3UAqH0RuEU}nq%IJm0J*k_x8{-_a!udS*sv+uE)C+w_v#gts4E|MA=0{|6 zoJRY6BFJ^vDsZYR?4f_!06KkhHlXU)lx>MHP1LOb+Ght#y!E#czh*l9sP`JN|AeuP zJ!i|8UB6~&w0F3$E(#fo>=Elq?{`?!t?^TT-2->bYrA*pHN60BDT;Xnyre6VzfL12 zODc#s?LEcej#yHf~k{|K{T4ioT#5n)aIRpf(ix4UXAs2rK-<|8JSCB+WAE0NpCeZ}qL( z^+Y$I>ZYoT-3}XS zcIyV$i#q%%@ioz#y?LF9`1OsL;qW`0gNkYZ7QLB*;RQ^vUyT)(aP}3^hex`QN9au} zFLWV(G<>hE%!N?mebbQ+GBs-1!7E+KRBGwQJVJlPG%F6RXD9ZHV-E|wuUKoRt@7Cn^iIw}YWM<``GL&xY5DIpFk$6Qtid3c0Hcw+-3C6Fo?1#H}+@-dv}XDrv3cUE)>`AK(3nlTiMA2jWZr(0B!q)NhupsRQ|x&_D8c zRY$mz?<#H?MPhjA5Ymo!@F9PA|4}NlT8KtF4dDTuNPq7?PRKSmm(ML*YA5m(@osi3 z9BAw~&(`2emZ34xN!j7DEz6IDqETOXi~}R@BOH_w{B3`7)4SP`eIdeY3$F?w@7~{h zQ+G1z`3a1se@h7?hv*qYxvggiLy+fQOrCi8uCK?Sky-h652ps6Pa2uyb`n1mNTR9d zl3r`LrUCAw;gInNPr{x{deLF{^o`hEfk%!4S?i);ckz+hDnDoon z!$)k4L>7ids40r{CA%dPD;xCJvN{d4j8W`%ePqfDZC3|nOBd0xfqVDB-CK|N(u6u3 zS);lr8R^7%IQC6Pckr9RKxBj506V6-&geYyW@g6)xWT|w#P|=o^am& zMBmC$^E13UjP#qbLMSbBfGmFQXilBXLySd5Nm(azxcJO*U8d|>Jok`YOIM1GhSqn z=50JAnnXwAn?ce%&oHyw2~F{u)k?HH0Z~#wGm>XVldd(;Z zk5xRb7l|+{;(3YdJA(2dN3W>y)!Hg-uiY^A4M!j*cBT))LD z2a>gP-XI<~h(rg?bN@3Pfz7WE;(3Dzj!paU^MlYkiPT8rUXdVrAwD|t6Dnz+FS4(w zSxhnMF;x@n{}bqtg)FtcRl8mu2=ikp(3kiL_S>zOP^lkDLmyt!r5l|5Z(kQjDB$&U z_zU>==cV({1{3%EV%>k!Nr^_Tos`Vwt(aQ^y;bLn9ExK7c61K&U(;WAAl+s;`H$@X zi_ZHv`J){Is4oOek_z-*m!MaIo@*>7d?wTGj;P#t)q3K~kNS`>-Y<^$!qv0yL84v3 zOT=xQfP(qA_YmLC$r|}-mK3GNrFSa8fG2U!I8>~^pX5n#WLTeZ4i&_TV30Jo*xxxU znx~Pg`&s&_c%D9-xY-)xu!Ih#rOxR3LH=zHt<%Vl?y^(44w=+ebQ@c(pno4mYFvA3 zth~lBQK1qs8j8k5{+|0UUgMOs!SAP4T zxAoyQiDVRCJe(wYxKwGR{$&U)=6Uh3(m#ijPG*;8G%n%|!^wa?6P<#;KWTV`D`Kr) zZde^3Rp@PAye5Ifv-DqG_=XXrzuC1~Bj0c1$48Lvu5k137xG5&n2yKcJS2fc1(_?H z;=kK#h&MNB;&S+A50_x=5~kB z0IMY;sM^6)K8}JOqL^3Thxl^Wfdo1>n9q($4#)~kh1j(PrlaAzGE%!DNZv)G&!yG^%`Rc?pYJ; ze{{_AZ_7MaAY&Bw0%01DuZKwRkYSszJMv@|;kkJ`d@N!tS#Nf~q>-=o^YXFe-fjvW z=OGerOt4?mQ<_|vWd`x+0sLr=G%&z58IN9kqDI18vo&%7NADU5HG3dOUHH&eq>!SR6vb(jFXSPkM>DrBCB8`-`J$&7daR|rIO-8yxwWG9k~mRz z3S5>GcUJ!r2Yhi{O(uR1o;@vTCra9(t!VYs0@`$m+tmuUL-OGTb&JMlTH#l5YcjU? zXD9InaX)jBr%oXwMzw!?O)vaiB3^8YMg(LSPu4s!9W~Dw8IbDd z{4wdCaG28=4i#HNUn6>Ic8W+a&I@P^wqbgz`){sh86I*! z8A?yR$W!kpp`o6Qn8@>DwAS4;U4LyyPAxKcPF?0j_mhw4XKQ%c17w8X$*WFXZWkd3 zs2ce!oL4+Rmb>fw%$O>#c-}h|LDvGt)lIf&O1qYIPi(z~CIhOxG@h7>fPEts+r*PY zY*ne)#fZ2&5o_!5AUQ={G4G$uvNflX*~IKss*#Ux+0ti|!NkYQapcuoBOgu26cDCP z>&d)6_vOQP5!H5M4(Ud`y)MZ)4$#Q))4a!A(#uPcO(AI7!P7;P!xJoMn#+qtQ=Fv2 zvU0p9uMthDvI*JZgX`SwAvER6CMfa25nJLz#E;~^ze6~LNR^meeHqrxZuQ1gzJFGj zPZVEbMTGg_j_=QqCdJD(-&W9s0M{ zMI7GVrAw6;Kl3owN^kU2bqobf1mc!*;{Fh_5T51Pf1 z;S7C`13Sq~E%#6z95V&lBe%9^k$ydshFfq#cBMnA*g;LO|Ew=MZS#AFOh_g?HH+kn zGUCV@+xaZ=6)|@x(})d=-C{CkM29MUK~qfn`rus9-a3bo8ta78p;k^eX6>zG`mCmR zKq+JEY%D(a4JQHa$X2QX{8<)rqc^WuLK4CQP~B6F9FA>s%2?v~yFWFOtJx&f`|x!m zli-6Fa_B6N&n8jchfX>+d*I*8v$Ki6s96qo;Ty8aDWd6%f(i8e>!l>p#+M?+(busB zT1mpZGM(zaet>H$$>50B#X+ElM)r#jY>cyuo%RjJP}Dq)ynck2t|Vi_t&-J(Ch;Od z_h&KZhVQAR+%1xB zRRx=iovWUy~NV;>W93_hYaM^Ystf2NR6)=YqipGB9F@_^XV%ycxgWA zNAh@0KKaP|<+(8FKtq#`<$RA7d*zq=@Do;;pkpJCTL*X#a@0C9txt?&!1_*|>=Ca+ zVR_{v;p@m8a!c!zqLDqTc-=bUKLm+%&n!tc>MpWE;6@6Z9x5d*>=kJ5$zvWTei1&^ zc=j^*UEjTnAMyM5>&C89ewWamzwtOp?(71@bPP-C(+S@2_t88ij|{ere}Z_CmduKo zdvP1jdW-~YUr*e4`6lAQH?1eLI;R7%u$6>Nz%#Z#i507KkS+d65=_MsvFo-i?P;>W z)VTl}1~_Nxg>Fa!<9PE%@;2Z497&{|%J@wbSmx*PCyLj*am!{BY75#xYKTv#Gi_P< zZNc_C?bN7q(Crs^$Yz{|^x#J~lOXTyM9fr7x-XK?_7(inX7Wa7@fR-xMdvt-GQM~r z+otfcLUP|0as4~5sQOTasEyn5f#tE)bymOs)U zteef3k;f@54CKYz5Eq-5+7h>ux7yLCaa6IByy}%Ky(3a1PfxOy?;`KI(OXAtS+5dr zSK3rz%PS}U>O|{mZK+jcu{-@T%U1mfdA}3=pqy{GfQ@C}Dg4X@@&oO2l2?62g3RZ$ zRC2*$tNV)FPx1%&+V2cF)b{Fs$$@<=@q?=PvmFrt_5lA|vB2T;N?D^ly>`IsC*$a?8dN%vpmt*o{u+*x@Bo!8-Nz;zQsU2v(m zLU8rKH4s-Ku8FvycrNUan~f_ESGCPrPim^A|2&xIA-S29{98 zGHqT?4(Ke4S1fvH-ZIOQ`Ih<1<}RAIe5j>ch9w%mJb2e8l43TVZL6BdHLv{9Q>WfH zb*Lp}*^(6xWzDlJn>RN@$e5NhH)q9ifD0Bb&zZNZujQd7IXO!fS(YtakeOqdn~||> z-ty(5*Z-gVS@Y&Q*}ic-!;}r5~8PY%xYT)N-%wQ%XDgg@J%Aj`{)`~DCoEO6q|+koGn+3L!%+uusZr5Km3)^4{!QT;-vEwFeN z?Z6*SbzZh)k{@gu2D4P)>Wp)YTHLGc_UGbpKX11e*5TfW(Fb53)Z1>~=7M`7?v1#o zU_=eL7ufB)N^vi-+joPURM_pMiMSuP+h2qnf=>6IP!tL!4**X!yZy}&+|%s#gYh^@ zpwR3H1XGy*SQ+k3cKiFjiehrZ{S59QcKZi~xX0M-#|!udKN=Bz!wr%mafu%l7nFN8 zRZ(0^@hpBsRRu*i*YjFGIy8FgCBRTt{}J?sn8u^H*Bea=^icL-phZ01pZ1^1(;(}R z#0mNayS=0t_jG3)!GLz6oFIv<+I(S*9KeEB{6I(21BOZCRsJ-JzIvS3`_nPeuUDWw z#2^v+lXAQLjmlPS7z?Sg+bfRq)BrjYuPF}&(5U<0EeA`MlZ|3B--GFts#a}TXoGm= zXsb4>-ChNe%FR}7MKE_fx~a3p2GUbzo)}1%Znsc>FZ?$!-*Q|H_|IUyd8CE*r56f$ ziiN&CqVcFo8mn*}$5o9Br~ZvKxN33L;i|{gfU5~tvr4YJ;PS+!;_|gk49CZy`MdT& zi%hABxP`zu6c=wX5X>go?TK5N4j8|5e7mPx@M2;L?#8!|cHm1fsun8=GM(T11BuTk zr4a5~3WVcFC+PT;L%=HGM)hsCzw;Ug_>DM)lY{w7g8 z<7|Z-F2_T&faH%(5V6G};4N6lZG!`eyN>Tx=)k`>P*K{&-Hq@0xdZ=^P$1-Pe6I$9 z$3J9K$;SnMMbNj!2dekL0w?Yk&_B}A!DleB8)#a7bOi_Xbl|`A1qMpA{OI_>{{kNU zLxC@?xK-hD{OAO6`y2vl6M;DDK;o|Bhc0cw3+p+;Ns#II_|F{pb4?<&1VaAk_=F%A zrH5!x$-mFwRwR+)rW1_X^`It5eu##+txL@+9`T#61NSeM?7B9R3c){ zds{0lLgJvsD-#8V$Hvj0yS|bGUGre=dLauRl);vJVBsXC0}w^HO8A%|G^XpTNM5hj zVu2Y3Li1ojNM8ma6NIlKgT30wcMPH9%w;fj88Y<{8t<`py-GwptMhnxJUzg_9!lGr zjYeDJP}-fCU&BYE`%-zAcv>Z&ZQsTV#J*IOyq?O{5kTxq)1SW>L4P*ygUEdw_-6^! zKXD(r+E)%mR73e*Q2q@Z3|WOv`Bz%8tWx0hTVL1cC*N&vu@+)E>*O$e72>IqyFT0ysAeT{VAdlLUFjh^H`%!CF;BmZM2{lxqwe55v!f0{GU4r0Cvr#LBxEnNhEgLyAKJB1pauKx)bxi z^lrp;rXNZ$s)!!wb-&u8L9B$98+r2XXS2>&3H-fKR82ndVKMLs;ik$x47CO*GUzy0OcF;Im$~O8Y z4msEJtYSKppWI6WZ8JITKy>OMBB8(bP67tZLho~IAL1PN;=*||9yt1 z{tvxF&u8(}qjVHT&P$Hc{unr~IZB6O+}!gW@$Eu9PZD>~=e>h=&{ql=2ThId(6!s> z=M#DMG*hVgLZL!X$`(yCMR;7Oz;lJ7+;bE!@JwN@SqlCSF26L*)Ya9ZP(O>!GsX10 zOMkH72gMq)saUoJiw=9~FnA=4fA0poV606w^`$i6ICqm3i@FiR2OjAB3>juERE9 z4|i+D_NA(v5L4nH`#~ks@XdkfC70KVTQR?h&ZZVsW4={GSi7Y#oEU)YyxnTddm3Qr z7wxb}58nX#DoMW+y<7r*gM{BuNpL35dz$>KcFOT)W+sALZ0(M&_0I~-^*=#?`P?x!jhBo3 z>6p&lGE9^47r{Ig_fdj-X(;QNtdh(~NL?@SsGNT;;$`#U zn(Kx8_m=Iis-!RxgHD$4`zo0%e9!@(RY`nresjL5@2H0@pvyMsyilaYWrI#??KMDE z#+E^Dn#7N7tB==xDw&wfGZ$b~SYiqmnEFnAWg@&V&d}G3smjSqkbhM2m#QQS#&(3g z*Xt_j0dI0olK78Q<QN zxqC2edn62Zcnm>D3M70;Rqn$ynB;KOlPdXJDX)D5K0fXY&^N-z9^u6QbuISU46Ts6|jz%H{`EWuXg3eMrLdRWjcK@h%d^ zG0~JWJa-W?SZo8YUIeGiui^EJ5L_P|hj=;bzGGFTpO`Hf1ilZbWT%i@YRK`$lJQg` z;4BGSRiyziEt2qNRpGTfbFt~Z@M7mEe1Ad?fKX9D&y&gG0r>0Gap*?V~L5)AL#G+r<8#-Wpe z_gjGKH;V^kL(XkfK)Cmx1m|-&jo+tmnnQr)Z1^Gej-3ZA&Eof!s+0`m1>p0Es)K$d zhJN_R>g2sRUMbp_V}K65{So^^vv@t)BfOg+XQHHEiC7bcI4a?%#bFEYu@ripspA^% zqx|9Aq*3CrAdJ2Q`WgwtYraK}a0F!lRmpfy&`Ui7EUNNsH7{Fg>g!Y72)Z1DFJQJx zQdM5R6xD|szJLVmJ@=c&pEF@TFCyb|_OdGT^2mDQL}BBLnCrjlG? z#|BAv3Kh#9z^M}c333_%OTB|`smdV>_;U<=a66TFq9DkDKQ_hjxEuukdZ+l{)hglO zc1&Y1S4lz*8umzbEE!w#fX|cg$11rmmlx;24A4CN&!nVgrus>Jas&TFwhr!0*Oj9!(a5unW${u2u8u74UD{ z8D77_G}-5uf#8$z(*^!LGL>t8L;OtA&>my(g+_o6W$xc(>5?v+=iqoN4SF>j;|R@E zNtY6*9Yfb6iN^41h#NIfbhBRaeS)QQ17PX4p%+jxBmtJ=3;j`5u2ey;Rnps4<@*i1 z$4b=AS@4jmxt7Mav*NblV;L9bfkm8MxNd}Vzg;~rYo|nJ8i#()L? z*KTnlFUW=S?8tCRw;-nlro%YWr!C*ABm=2G*Obr^HZ-e-65+#DW$00S&xG>iR3ns; zJ`ui5B`XWSF1rbTOeMoHh;MAnYW2S!LF3#>E$`ILButgf( zM;y~n^Ku_UX8T6Wm7~2;C9ze2Wh8fXQ%O)I;0lAUD>jJ}a(FfPBF@69#8bAXAhXoK t_zt>9RkE~%yR9~L^{SL4s01EQ<8iA^_mM(guo?r~US=y>Z3>F~{{T2FHl_do delta 26461 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 0){ - printf(" Setting number of frames: %d\n",(unsigned int)val); - if(Feb_Control_SetNExposures((unsigned int)val)*eiger_ncycles){ + printf(" Setting number of frames: %d * %d\n",(unsigned int)val,eiger_ncycles); + if(Feb_Control_SetNExposures((unsigned int)val*eiger_ncycles)){ eiger_nexposures = val; //SetDestinationParameters(EigerGetNumberOfExposures()*EigerGetNumberOfCycles()); on_dst = 0; @@ -587,7 +575,7 @@ int64_t setTimer(enum timerIndex ind, int64_t val){ return EigerGetNumberOfExposures();*/ case CYCLES_NUMBER: if(val >= 0){ - printf(" Setting number of triggers: %d\n",(unsigned int)val); + printf(" Setting number of triggers: %d * %d\n",(unsigned int)val,eiger_nexposures); if(Feb_Control_SetNExposures((unsigned int)val*eiger_nexposures)){ eiger_ncycles = val; //SetDestinationParameters(EigerGetNumberOfExposures()*EigerGetNumberOfCycles()); diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 2dc6e1b98..1e8e31ed8 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -2275,9 +2275,9 @@ int get_run_status(int file_des) { enum runStatus s; sprintf(mess,"getting run status\n"); -//#ifdef VERBOSE +#ifdef VERBOSE printf("Getting status\n"); -//#endif +#endif #ifdef SLS_DETECTOR_FUNCTION_LIST s= getRunStatus();printf("status:%d\n"); #endif From 194b41bfc57d719d10666acdcfaf1022ac327f17 Mon Sep 17 00:00:00 2001 From: Maliakal Dhanya Date: Mon, 17 Nov 2014 14:46:28 +0100 Subject: [PATCH 12/12] changes to get index in eiger server --- slsDetectorSoftware/eigerDetectorServer/Beb.c | 19 +- .../eigerDetectorServer/FebControl.c | 261 ++++++++++++++---- .../eigerDetectorServer/FebControl.h | 5 +- .../bin/eigerDetectorServer | Bin 237506 -> 237572 bytes .../slsDetectorFunctionList.c | 58 +++- .../multiSlsDetector/multiSlsDetector.cpp | 2 +- .../slsDetectorServer_funcs.c | 2 +- 7 files changed, 269 insertions(+), 78 deletions(-) diff --git a/slsDetectorSoftware/eigerDetectorServer/Beb.c b/slsDetectorSoftware/eigerDetectorServer/Beb.c index 4d77ac62d..a428774a1 100644 --- a/slsDetectorSoftware/eigerDetectorServer/Beb.c +++ b/slsDetectorSoftware/eigerDetectorServer/Beb.c @@ -42,6 +42,7 @@ short Beb_bit_mode; + void BebInfo_BebInfo(struct BebInfo* bebInfo, unsigned int beb_num){ bebInfo->beb_number=beb_num; bebInfo->serial_address=0; @@ -136,13 +137,14 @@ void Beb_Beb(int arg1){ Beb_SetByteOrder(); +/* ll_beb_new_memory = &ll_beb_new_memory_local; Local_LocalLinkInterface(ll_beb_new_memory); if(!Local_InitNewMemory(ll_beb_new_memory,XPAR_PLB_LL_NEW_MEMORY, arg1)) printf("New Memory FAIL\n"); else printf("New Memory OK\n"); - +*/ } @@ -156,6 +158,7 @@ void Beb_ClearBebInfos(){ int Beb_InitBebInfos(){//file name at some point Beb_ClearBebInfos(); + struct BebInfo b0; BebInfo_BebInfo(&b0,0); if(BebInfo_SetSerialAddress(&b0,0xff)) { //all bebs for reset and possibly get request data? @@ -173,6 +176,7 @@ int Beb_InitBebInfos(){//file name at some point beb_infos.push_back(b); */ + return Beb_CheckSourceStuffBebInfo(); } @@ -182,7 +186,7 @@ int Beb_SetBebSrcHeaderInfos(unsigned int beb_number, int ten_gig, char* src_mac //so that the values can be reset externally for now.... unsigned int i = Beb_GetBebInfoIndex(beb_number); - if(!i){ printf("returning 000\n");return 0;} //i must be greater than 0, zero is the global send + /******* if(!i) return 0;****************************/ //i must be greater than 0, zero is the global send BebInfo_SetHeaderInfo(&beb_infos[i],ten_gig,src_mac,src_ip,src_port); printf("Printing Beb info number (%d) :\n",i); @@ -254,12 +258,13 @@ int Beb_CheckSourceStuffBebInfo(){ } unsigned int Beb_GetBebInfoIndex(unsigned int beb_numb){ - if(!beb_numb) return 0; +/******************** if(!beb_numb) return 0;******************************/ unsigned int i; for(i=1;i0) - sprintf(str,"mod%d::%s",module_num,str); + sprintf(str,"%s",str); /*sprintf(str,"mod%d::%s",module_num,str);*/ if(!Feb_Control_SetDAC(str,f0,1)) printf("error in string: %s",str); } } fclose(fp); - +printf("Done reading set up file\n"); return 1; } int Feb_Control_CheckSetup(){ + printf("Checking Set up\n"); unsigned int i,j; int ok = 1; - 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 delta 46722 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 diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 00e75de9e..e4ac0b885 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -105,6 +105,7 @@ int initDetector(){ Feb_Interface_FebInterface(); Feb_Control_FebControl(); + Feb_Control_Init(); printf("FEb control constructor done\n"); Beb_Beb(-1); printf("BEB constructor done\n"); @@ -126,16 +127,32 @@ int initDetector(){ setThresholdEnergy(8000,0); setReadOutFlags(PARALLEL); setSpeed(0,1);//clk_devider,half speed - setHighVolage(150,0); + setHighVolage(150,0); setIODelay(675,0); setTiming(AUTO_TIMING); //setMaster(GET_MASTER); int enable[2] = {0,1}; setExternalGating(enable);//disable external gating - if(!Feb_Control_IsBottomModule()) - trialMasterMode = IS_MASTER; + Feb_Control_SetTestModeVariable(0); + + Feb_Control_CheckSetup(); + //if(!Feb_Control_IsBottomModule()){ + //if(getDetectorNumber()==0xbeb031){ + printf("************** master ********************\n"); + trialMasterMode = IS_MASTER; + Feb_Control_Set_Master(); + //} + //else printf("************** slave ********************\n"); + + + + if(Feb_Control_IsBottomModule()) + printf("BOTTOM ***************\n"); + else + printf("TOP ***************\n"); return 1; + } @@ -325,7 +342,7 @@ int getADC(enum detDacIndex ind, int imod){ int setIODelay(int val, int imod){ if(val!=-1){ printf(" Setting IO Delay: %d\n",val); - if(Feb_Control_SetIDelays(0,val)) + if(Feb_Control_SetIDelays(Feb_Control_GetModuleNumber(),val)) eiger_iodelay = val; } return eiger_iodelay; @@ -382,7 +399,7 @@ int setModule(sls_detector_module myMod){ } - Feb_Control_SetTrimbits(0,tt); + Feb_Control_SetTrimbits(Feb_Control_GetModuleNumber(),tt); return 0; @@ -456,18 +473,23 @@ enum detectorSettings setSettings(enum detectorSettings sett, int imod){ int startStateMachine(){ - +int ret; if(trialMasterMode == IS_MASTER){ printf("Going to start acquisition\n"); Feb_Control_StartAcquisition(); } - - printf("requesting images\n"); - int ret = startReadOut(); - - while(getRunStatus() == IDLE); - printf("Acquiring..\n"); + //if(trialMasterMode == IS_MASTER){ + printf("requesting images\n"); + ret = startReadOut(); + //} + if(trialMasterMode == IS_MASTER){ + /*for(i=0;i<3;i++) + usleep(1000000);*/ + while(getRunStatus() == IDLE); + printf("Acquiring..\n"); + } + printf("Returning\n"); return ret; } @@ -490,8 +512,10 @@ int startReadOut(){ dst_requested[0] = 1; while(dst_requested[on_dst]){ //waits on data - if((ret_val = (!Beb_RequestNImages(0,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| - !Beb_RequestNImages(0,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) + int beb_num = 24;//Feb_Control_GetModuleNumber(); + + if((ret_val = (!Beb_RequestNImages(beb_num,1,send_to_ten_gig,on_dst,nimages_per_request,0)|| + !Beb_RequestNImages(beb_num,2,send_to_ten_gig,0x20|on_dst,nimages_per_request,0)))) break; dst_requested[on_dst++]=0; on_dst%=ndsts_in_use; @@ -505,6 +529,7 @@ int startReadOut(){ enum runStatus getRunStatus(){ + if(trialMasterMode == IS_MASTER){ int i = Feb_Control_AcquisitionInProgress(); if(i== 0){ //printf("IDLE\n"); @@ -513,6 +538,9 @@ enum runStatus getRunStatus(){ //printf("RUNNING\n"); return RUNNING; } + } + + return IDLE; } @@ -698,7 +726,7 @@ int configureMAC(int ipad, long long int macad, long long int detectormacadd, in printf("dst_mac:%s\n",dst_mac); - int beb_num = 34; + int beb_num = 24;//Feb_Control_GetModuleNumber(); int header_number = 0; int dst_port = udpport; diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 41f80ea50..19ce49714 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1528,7 +1528,7 @@ slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() { return s; } - for (int i=1; inumberOfDetectors; i++) { + for (int i=0; inumberOfDetectors; i++) { s1=detectors[i]->getRunStatus(); if(detectors[i]->getErrorMask()) setErrorMask(getErrorMask()|(1<