From d235182b10303bf5301dba650aeabcf615c1ba26 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Wed, 12 Jun 2013 13:21:24 +0000 Subject: [PATCH] gotthard and moench communication files are links to the common git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@596 951219d9-93cf-4727-9268-0efd64621fa3 --- .../communication_funcs.c | 477 ------------------ .../communication_funcs.h | 40 -- 2 files changed, 517 deletions(-) delete mode 100755 slsDetectorSoftware/moenchDetectorServer/communication_funcs.c delete mode 100755 slsDetectorSoftware/moenchDetectorServer/communication_funcs.h diff --git a/slsDetectorSoftware/moenchDetectorServer/communication_funcs.c b/slsDetectorSoftware/moenchDetectorServer/communication_funcs.c deleted file mode 100755 index 54ad1c8a2..000000000 --- a/slsDetectorSoftware/moenchDetectorServer/communication_funcs.c +++ /dev/null @@ -1,477 +0,0 @@ - - -#include "communication_funcs.h" -//#include -#include /* for TCP_NODELAY */ -#include -#include -#include -#include - - - - -//int socketDescriptor, file_des; -const int send_rec_max_size=SEND_REC_MAX_SIZE; -extern int errno; - - -char dummyClientIP[INET_ADDRSTRLEN]; - -//struct sockaddr_in address; -//#define VERBOSE - - -int bindSocket(unsigned short int port_number) { - int i; - - struct sockaddr_in addressS; - int socketDescriptor; - //int file_des; - - //file_des= -1; - socketDescriptor = socket(AF_INET, SOCK_STREAM,0); //tcp - - //socketDescriptor = socket(PF_INET, SOCK_STREAM, 0); - - - - if (socketDescriptor < 0) { - printf("Can not create socket\n"); - } else { - - i = 1; - setsockopt(socketDescriptor, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)); - // setsockopt(socketDescriptor, IPPROTO_TCP, TCP_NODELAY, (char *) &i, sizeof(i)); - // TCP_CORK - - // Set some fields in the serverAddress structure. - addressS.sin_family = AF_INET; - addressS.sin_addr.s_addr = htonl(INADDR_ANY); - addressS.sin_port = htons(port_number); - - // memset(&address.sin_addr, 0, sizeof(address.sin_addr)); - - - if(bind(socketDescriptor,(struct sockaddr *) &addressS,sizeof(addressS))<0){ - - printf("Can not create socket\n"); - - socketDescriptor=-1; - } else { - listen(socketDescriptor, 5); - } - } - - - - - - - //int getrlimit(int resource, struct rlimit *rlim); - - - - return socketDescriptor; - -} - - - - - -int getServerError(int socketDescriptor) -{ - if (socketDescriptor<0) return 1; - else return 0; -}; - - -int acceptConnection(int socketDescriptor) { - struct sockaddr_in addressC; - int file_des=-1; - - //socklen_t address_length; - size_t address_length=sizeof(struct sockaddr_in); - - // if(file_des>0) return file_des; - - //#ifndef C_ONLY - // if(is_a_server){ //server; the server will wait for the clients connection - //#endif - - - if (socketDescriptor>0) { - //if ((file_des = accept(socketDescriptor,(struct sockaddr *) &address, &address_length)) < 0) { - if ((file_des = accept(socketDescriptor,(struct sockaddr *) &addressC, &address_length)) < 0) { - - - printf("Error: with server accept, connection refused %d\n", errno); - - - switch(errno) { - case EWOULDBLOCK: - printf("ewouldblock eagain\n"); - break; - case EBADF: - printf("ebadf\n"); - break; - case ECONNABORTED: - printf("econnaborted\n"); - break; - case EFAULT: - printf("efault\n"); - break; - case EINTR: - printf("eintr\n"); - break; - case EINVAL: - printf("einval\n"); - break; - case EMFILE: - printf("emfile\n"); - break; - case ENFILE: - printf("enfile\n"); - break; - case ENOTSOCK: - printf("enotsock\n"); - break; - case EOPNOTSUPP: - printf("eOPNOTSUPP\n"); - break; - case ENOBUFS: - printf("ENOBUFS\n"); - break; - case ENOMEM: - printf("ENOMEM\n"); - break; - case ENOSR: - printf("ENOSR\n"); - break; - case EPROTO: - printf("EPROTO\n"); - break; - default: - printf("unknown error\n"); - } - - - socketDescriptor=-1; - } - inet_ntop(AF_INET, &(addressC.sin_addr), dummyClientIP, INET_ADDRSTRLEN); - - - - - // struct sockaddr_in - //{ - //short int sin_family; /* Famyly of the address*/ - //unsigned short int sin_port; /* Port */ - //struct in_addr sin_addr; /* Network address */ - //unsigned char sin_zero[8]; /* Same size of struct sockaddr */ - //}; - } - - - return file_des; -} - - - - - - - -void closeConnection(int file_des) { - //fflush(stdout); - //printf("Closing file_des %d\n", file_des); - //sleep(1); -#ifdef VERY_VERBOSE -#endif - if(file_des>=0) - close(file_des); - file_des=-1; -} - -void exitServer(int socketDescriptor) { - if (socketDescriptor>=0) - close(socketDescriptor); -#ifdef VERY_VERBOSE - printf("Closing server\n"); -#endif - socketDescriptor=-1; -} - - - - - int sendDataOnly(int file_des, void* buf,int length) { - - - return write(file_des, buf, length); -} - - - int receiveDataOnly(int file_des, void* buf,int length) { - - int total_received=0; - int nreceiving; - int nreceived; - if (file_des<0) return -1; -#ifdef VERY_VERBOSE - printf("want to receive %d Bytes\n", length); -#endif - - while(length>0){ - nreceiving = (length>send_rec_max_size) ? send_rec_max_size:length; - -#ifdef VERY_VERBOSE - printf("want to receive %d Bytes\n", nreceiving); -#endif - nreceived = read(file_des,(char*)buf+total_received,nreceiving); -#ifdef VERY_VERBOSE - printf("read %d \n", nreceived); -#endif - if(!nreceived) break; - // if(nreceived<0) break; - length-=nreceived; - total_received+=nreceived; - // cout<<"nrec: "<0) - strcpy(thisClientIP,dummyClientIP); - if (strcmp(lastClientIP,thisClientIP)) - differentClients=1; - else - differentClients=0; - - return total_received; -} - - - - - - - - - - - - - - - -int sendChannel(int file_des, sls_detector_channel *myChan) { - return sendDataOnly(file_des,myChan, sizeof(sls_detector_channel)); -} - -int sendChip(int file_des, sls_detector_chip *myChip) { - int ts=0; - int nChans=myChip->nchan; - ts+=sendDataOnly(file_des,myChip,sizeof(sls_detector_chip)); - ts+=sendDataOnly(file_des,myChip->chanregs,nChans*sizeof(int)); - return ts; -} - -int sendModule(int file_des, sls_detector_module *myMod) { - int ts=0; - int idac; - int nChips=myMod->nchip; - int nChans=myMod->nchan; - int nAdcs=myMod->nadc; - int nDacs=myMod->ndac; - ts+= sendDataOnly(file_des,myMod,sizeof(sls_detector_module)); -#ifdef VERBOSE - printf("module %d of size %d sent\n",myMod->module, ts); -#endif - ts+= sendDataOnly(file_des,myMod->dacs,sizeof(dacs_t)*nDacs); -#ifdef VERBOSE - printf("dacs %d of size %d sent\n",myMod->module, ts); - for (idac=0; idac< nDacs; idac++) - printf("dac %d is %d\n",idac,myMod->dacs[idac]); -#endif - ts+= sendDataOnly(file_des,myMod->adcs,sizeof(dacs_t)*nAdcs); -#ifdef VERBOSE - printf("adcs %d of size %d sent\n",myMod->module, ts); -#endif - ts+=sendDataOnly(file_des,myMod->chipregs,sizeof(int)*nChips); -#ifdef VERBOSE - printf("chips %d of size %d sent\n",myMod->module, ts); -#endif - ts+=sendDataOnly(file_des,myMod->chanregs,sizeof(int)*nChans); -#ifdef VERBOSE - printf("chans %d of size %d sent - %d\n",myMod->module, ts, myMod->nchan); -#endif -#ifdef VERBOSE - printf("module %d of size %d sent register %x\n",myMod->module, ts, myMod->reg); -#endif - return ts; -} - -int receiveChannel(int file_des, sls_detector_channel *myChan) { - return receiveDataOnly(file_des,myChan,sizeof(sls_detector_channel)); -} - -int receiveChip(int file_des, sls_detector_chip* myChip) { - - int *ptr=myChip->chanregs; - int ts=0; - int nChans, nchanold=myChip->nchan, chdiff; - - ts+= receiveDataOnly(file_des,myChip,sizeof(sls_detector_chip)); - - - myChip->chanregs=ptr; - nChans=myChip->nchan; - chdiff=nChans-nchanold; - if (nchanold!=nChans) { - printf("wrong number of channels received!\n"); - } - - -#ifdef VERBOSE - printf("chip structure received\n"); - printf("now receiving %d channels\n", nChans); -#endif - - if (chdiff<=0) - ts+=receiveDataOnly(file_des,myChip->chanregs, sizeof(int)*nChans); - else { - ptr=malloc(chdiff*sizeof(int)); - myChip->nchan=nchanold; - ts+=receiveDataOnly(file_des,myChip->chanregs, sizeof(int)*nchanold); - ts+=receiveDataOnly(file_des,ptr, sizeof(int)*chdiff); - free(ptr); - return FAIL; - } - -#ifdef VERBOSE - printf("chip's channels received\n"); -#endif - return ts; -} - -int receiveModule(int file_des, sls_detector_module* myMod) { - - - dacs_t *dacptr=myMod->dacs; - dacs_t *adcptr=myMod->adcs; - int *chipptr=myMod->chipregs, *chanptr=myMod->chanregs; - int ts=0; - int nChips, nchipold=myMod->nchip, nchipdiff; - int nChans, nchanold=myMod->nchan, nchandiff; - int nDacs, ndold=myMod->ndac, ndacdiff; - int nAdcs, naold=myMod->nadc, nadcdiff; - - - ts+= receiveDataOnly(file_des,myMod,sizeof(sls_detector_module)); - - myMod->dacs=dacptr; - myMod->adcs=adcptr; - myMod->chipregs=chipptr; - myMod->chanregs=chanptr; - - nChips=myMod->nchip; - nchipdiff=nChips-nchipold; - if (nchipold!=nChips) { - printf("received wrong number of chips\n"); - } -#ifdef VERBOSE - else - printf("received %d chips\n",nChips); -#endif - - nChans=myMod->nchan; - nchandiff=nChans-nchanold; - if (nchanold!=nChans) { - printf("received wrong number of channels\n"); - } -#ifdef VERBOSE - else - printf("received %d chans\n",nChans); -#endif - - - nDacs=myMod->ndac; - ndacdiff=nDacs-ndold; - if (ndold!=nDacs) { - printf("received wrong number of dacs\n"); - } -#ifdef VERBOSE - else - printf("received %d dacs\n",nDacs); -#endif - - nAdcs=myMod->nadc; - nadcdiff=nAdcs-naold; - if (naold!=nAdcs) { - printf("received wrong number of adcs\n"); - } -#ifdef VERBOSE - else - printf("received %d adcs\n",nAdcs); -#endif - if (ndacdiff<=0) { - ts+=receiveDataOnly(file_des,myMod->dacs, sizeof(dacs_t)*nDacs); -#ifdef VERBOSE - printf("dacs received\n"); -#endif - } else { - dacptr=malloc(ndacdiff*sizeof(dacs_t)); - myMod->ndac=ndold; - ts+=receiveDataOnly(file_des,myMod->dacs, sizeof(dacs_t)*ndold); - ts+=receiveDataOnly(file_des,dacptr, sizeof(dacs_t)*ndacdiff); - free(dacptr); - return FAIL; - } - if (nadcdiff<=0) { - ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*nAdcs); -#ifdef VERBOSE - printf("adcs received\n"); -#endif - } else { - adcptr=malloc(nadcdiff*sizeof(dacs_t)); - myMod->nadc=naold; - ts+=receiveDataOnly(file_des,myMod->adcs, sizeof(dacs_t)*naold); - ts+=receiveDataOnly(file_des,adcptr, sizeof(dacs_t)*nadcdiff); - free(adcptr); - return FAIL; - } - if (nchipdiff<=0) { - ts+=receiveDataOnly(file_des,myMod->chipregs, sizeof(int)*nChips); -#ifdef VERBOSE - printf("chips received\n"); -#endif - } else { - chipptr=malloc(nchipdiff*sizeof(int)); - myMod->nchip=nchipold; - ts+=receiveDataOnly(file_des,myMod->chipregs, sizeof(int)*nchipold); - ts+=receiveDataOnly(file_des,chipptr, sizeof(int)*nchipdiff); - free(chipptr); - return FAIL; - } - if (nchandiff<=0) { - ts+=receiveDataOnly(file_des,myMod->chanregs, sizeof(int)*nChans); -#ifdef VERBOSE - printf("chans received\n"); -#endif - } else { - chanptr=malloc(nchandiff*sizeof(int)); - myMod->nchan=nchanold; - ts+=receiveDataOnly(file_des,myMod->chanregs, sizeof(int)*nchanold); - ts+=receiveDataOnly(file_des,chanptr, sizeof(int)*nchandiff); - free(chanptr); - return FAIL; - } -#ifdef VERBOSE - printf("received module %d of size %d register %x\n",myMod->module,ts,myMod->reg); -#endif - return ts; -} diff --git a/slsDetectorSoftware/moenchDetectorServer/communication_funcs.h b/slsDetectorSoftware/moenchDetectorServer/communication_funcs.h deleted file mode 100755 index f74b65664..000000000 --- a/slsDetectorSoftware/moenchDetectorServer/communication_funcs.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef COMMUNICATION_FUNCS_H -#define COMMUNICATION_FUNCS_H - -#include "sls_detector_defs.h" - - -#define SEND_REC_MAX_SIZE 4096 -#define DEFAULT_PORTNO 1952 -#include -#include - - -#include -#include -#include -#include - -#include "sls_detector_defs.h" - -char lastClientIP[INET_ADDRSTRLEN]; -char thisClientIP[INET_ADDRSTRLEN]; -int lockStatus; -int differentClients; - -int bindSocket(unsigned short int port_number); -int acceptConnection(int socketDescriptor); -void closeConnection(int file_Des); -void exitServer(int socketDescriptor); -int sendDataOnly(int file_des, void* buf,int length); -int receiveDataOnly(int file_des, void* buf,int length); - -int getServerError(int socketDescriptor); -int sendChannel(int file_des, sls_detector_channel *myChan); -int sendChip(int file_des, sls_detector_chip *myChip); -int sendModule(int file_des, sls_detector_module *myMod); -int receiveChannel(int file_des, sls_detector_channel *myChan); -int receiveChip(int file_des, sls_detector_chip* myChip); -int receiveModule(int file_des, sls_detector_module* myMod); - -#endif