/** * @author Ian Johnson * @version 1.0 */ #include #include #include #include struct sockaddr_in eiger_socket_addr; int eiger_max_message_length = 1024; char eiger_message[1024]; int eiger_message_length = 0; int eiger_ret_val=0; const 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"}; unsigned int EigerGetNumberOfExposures(){return 1;}; float EigerGetExposureTime(){return 1;}; float EigerGetExposurePeriod(){return 1;}; int EigerGetDynamicRange(){return 1;}; int EigerGetPhotonEnergy(){return 1;}; /* for later */ unsigned int EigerGetNumberOfExposureSeries(){return 1;}; unsigned int EigerSetNumberOfExposureSeries(unsigned int i){return 1;}; int EigerInit(){ static int passed = 0; if(!passed){ struct hostent *dst_host; if((dst_host = gethostbyname("localhost")) == NULL){ //or look into getaddrinfo(3) fprintf(stderr,"ERROR, no such host\n"); return 0; }else{ //struct sockaddr_in eiger_socket_addr; int port = 43210; bzero((char *) &eiger_socket_addr, sizeof(eiger_socket_addr)); eiger_socket_addr.sin_family = AF_INET; bcopy((char *)dst_host->h_addr,(char *)&eiger_socket_addr.sin_addr.s_addr,dst_host->h_length); eiger_socket_addr.sin_port = htons(port); passed = 1; } } return passed; } 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