/** * @author Ian Johnson * @version 1.0 */ #include #include #include #include #include "slsDetectorServer_defs.h" //include port number int eiger_nexposures = 1; float eiger_exposuretime = 0; float eiger_exposureperiod = 0; int eiger_ncycles = 1; int eiger_ngates = 0; int eiger_getphotonenergy = 0; int eiger_dynamicrange = 0; int eiger_readoutspeed = 0; int eiger_readoutmode = 0; int eiger_highvoltage = 0; int eiger_iodelay = 0; int eiger_triggermode = 0; int eiger_extgating = 0; int eiger_extgatingpolarity = 0; const unsigned int ndacs = 16; const char* dac_names[16] = {"SvP","Vtr","Vrf","Vrs","SvN","Vtgstv","Vcmp_ll","Vcmp_lr","cal","Vcmp_rl","rxb_rb","rxb_lb","Vcmp_rr","Vcp","Vcn","Vis"}; int saved_trimbits[256*256*4]; int EigerGetNumberOfExposures(){return eiger_nexposures;} float EigerGetExposureTime(){return eiger_exposuretime;} float EigerGetExposurePeriod(){return eiger_exposureperiod;} int EigerGetNumberOfCycles(){return eiger_ncycles;} /*int EigerGetNumberOfGates(){return eiger_ngates;}*/ unsigned int EigerGetDynamicRange(){return eiger_dynamicrange;} int EigerGetPhotonEnergy(){return eiger_getphotonenergy;} int EigerGetReadoutSpeed(){return eiger_readoutspeed;} int EigerGetReadoutMode(){return eiger_readoutmode;} int EigerGetHighVoltage(){return eiger_highvoltage;} int EigerGetIODelay(){return eiger_iodelay;} int EigerGetTriggerMode(){return eiger_triggermode;} int EigerGetExternalGating(){return eiger_extgating;} int EigerGetExternalGatingPolarity(){return eiger_extgatingpolarity;} int EigerInit(){ saved_trimbits[0] = -1; } int EigerSendCMD(){ if(!EigerInit()||eiger_message_length<=0) return 0; int sockfd = socket(AF_INET,SOCK_STREAM,0); if(sockfd<0){ fprintf(stderr,"ERROR opening socket\n"); return 0; } if(connect(sockfd,(struct sockaddr *) &eiger_socket_addr,sizeof(eiger_socket_addr))<0){ fprintf(stderr,"ERROR connecting\n"); return 0; } int n = write(sockfd,eiger_message,eiger_message_length); int ret_length = read(sockfd,eiger_message,eiger_max_message_length); close(sockfd); if(n<0||ret_length<0) return 0; //fprintf(stdout,"%s\n",eiger_message); if(eiger_ret_val>0){ int i=0; eiger_message[1]='\0'; if(atoi(eiger_message)!=0) return 0; for(i=2;i0&&i