Exemplo n.º 1
0
int main(int argc,char *argv[]) {
  int sock;
  int port=0;
  char *host;
  int flag,status;

  host=argv[argc-2];
  port=atoi(argv[argc-1]);

  sock=ConnexOpen(host,port);
  if (sock<0) {
    fprintf(stderr,"Could not connect to host.\n");
    exit(-1);
  }
  do {
    status=FitCnxRead(1,&sock,&prm,&fit,&flag,NULL);
    if (status==-1) break;
    if (flag !=-1) fprintf(stdout,"%d-%d-%d %d:%d:%d %d %d\n",
              prm.time.yr,prm.time.mo,prm.time.dy,
	      prm.time.hr,prm.time.mt,prm.time.sc,prm.bmnum,prm.scan);

             

  } while(1);
  fprintf(stderr,"Connection failed.\n");
  return 0;
}
Exemplo n.º 2
0
int main(int argc,char *argv[]) {
  int sock;
  int port=0;
  char *host=NULL;
  int size;
  unsigned char *buffer=NULL;
 
  
  if (argc<3) { 
    fprintf(stderr,"host and port must be specified.\n");
    exit(-1);
  }

  host=argv[1];
  port=atoi(argv[2]);
 
  sock=ConnexOpen(host,port); 
  if (sock<0) {
    fprintf(stderr,"Could not connect to host.\n");
    exit(-1);
  }
  do {
   size=ConnexReadIP(sock,&buffer);
   if (size==-1) break;
   fprintf(stderr,"Message size:%d\n",size);
     
  } while(1);
  fprintf(stderr,"Connection failed.\n");
  return 0;

}
Exemplo n.º 3
0
int main(int argc,char *argv[]) {
  int sock;
  int port=0;
  char *host=NULL;
  int size,status,cnt=0,i;
  unsigned char *buffer=NULL;

  fd_set read_set;
  
  
  if (argc<3) { 
    fprintf(stderr,"host and port must be specified.\n");
    exit(-1);
  }

  host=argv[1];
  port=atoi(argv[2]);
 
  sock=ConnexOpen(host,port); 
  if (sock<0) {
    fprintf(stderr,"Could not connect to host.\n");
    exit(-1);
  }
  do {

    FD_ZERO(&read_set);
    FD_SET(sock,&read_set);
    status=select(FD_SETSIZE,&read_set,0,0,NULL); 
   
    if (status==0) continue;
  if (FD_ISSET(sock,&read_set)) {
       /* start filling the input buffer */
       size=read(sock,ibuf+iptr,256);
       iptr+=size;
       fprintf(stderr,"Input buffer size=%d\n",iptr);
       fprintf(stderr,"Packet count=%d\n",cnt);
       cnt++;
    }

    if ((cnt>0) && ((cnt % 4)==0)) {
      /* decode the memory buffer */

      fprintf(stderr,"Decoding packets:\n");
      i=0;
      do {
        size=ConnexReadMem(ibuf+i,iptr-i,&buffer);
        if (size==0) break;
        fprintf(stderr,"Message:%s\n",buffer);
        i+=size+8;   
      } while (i<iptr);
      iptr=0;
    }
  } while(1);
  fprintf(stderr,"Connection failed.\n");
  return 0;

}
Exemplo n.º 4
0
int main(int argc,char *argv[]) {
    int arg;
    int sock;
    int remote_port=0;
    char *host;
    int flag,status,size;
    unsigned char help=0;
    unsigned char option=0;

    unsigned char *buffer=NULL;
    unsigned char stream=255;

    char **tmp;
    struct DataMap *ptr;
    struct DataMapScalar *s;
    struct DataMapArray *a;
    int c,n,x;

    int sval=255;
    unsigned char dflg=0;

    OptionAdd(&opt,"-help",'x',&help);
    OptionAdd(&opt,"-option",'x',&option);
    OptionAdd(&opt,"d",'x',&dflg);
    OptionAdd(&opt,"s",'i',&sval);

    arg=OptionProcess(1,argc,argv,&opt,NULL);

    if (help==1) {
        OptionPrintInfo(stdout,hlpstr);
        exit(0);
    }

    if (option==1) {
        OptionDump(stdout,&opt);
        exit(0);
    }

    if (argc-arg<2) {
        OptionPrintInfo(stderr,errstr);
        exit(-1);
    }

    host=argv[argc-2];
    remote_port=atoi(argv[argc-1]);
    stream=sval;

    sock=ConnexOpen(host,remote_port,NULL);
    if (sock<0) {
        fprintf(stderr,"Could not connect to host.\n");
        exit(-1);
    }
    status=(write(sock,&stream,sizeof(char)) !=1);
    if (status !=0) {
        fprintf(stderr,"Could not set stream to host.\n");
        exit(-1);
    }

    do {
        status=ConnexRead(1,&sock,&buffer,&size,&flag,NULL);
        if (status==-1) break;
        if (flag !=-1) {
            fprintf(stderr,"Message size:%d\n",size);
            if (size==0) continue;
            ptr=DataMapDecodeBuffer(buffer,size);
            if (ptr==NULL) fprintf(stderr,"Not a recognized message.\n");
            else {
                fprintf(stdout,"scalars:\n");
                for (c=0; c<ptr->snum; c++) {
                    s=ptr->scl[c];
                    switch (s->type) {
                    case DATACHAR:
                        fprintf(stdout,"\tchar");
                        break;
                    case DATASHORT:
                        fprintf(stdout,"\tshort");
                        break;
                    case DATAINT:
                        fprintf(stdout,"\tint");
                        break;
                    case DATAFLOAT:
                        fprintf(stdout,"\tfloat");
                        break;
                    case DATADOUBLE:
                        fprintf(stdout,"\tdouble");
                        break;
                    case DATASTRING:
                        fprintf(stdout,"\tstring");
                        break;
                    }
                    fprintf(stdout,"\t%c%s%c",'"',s->name,'"');
                    fprintf(stdout," = ");
                    switch (s->type) {
                    case DATACHAR:
                        fprintf(stdout,"%d",*(s->data.cptr));
                        break;
                    case DATASHORT:
                        fprintf(stdout,"%d",*(s->data.sptr));
                        break;
                    case DATAINT:
                        fprintf(stdout,"%d",*(s->data.iptr));
                        break;
                    case DATAFLOAT:
                        fprintf(stdout,"%g",*(s->data.fptr));
                        break;
                    case DATADOUBLE:
                        fprintf(stdout,"%g",*(s->data.dptr));
                        break;
                    case DATASTRING:
                        tmp=(char **) s->data.vptr;
                        fprintf(stdout,"%c%s%c",'"',*tmp,'"');
                        break;
                    }
                    fprintf(stdout,"\n");
                }
                fprintf(stdout,"arrays:\n");
                for (c=0; c<ptr->anum; c++) {
                    a=ptr->arr[c];
                    switch (a->type) {
                    case DATACHAR:
                        fprintf(stdout,"\tchar");
                        break;
                    case DATASHORT:
                        fprintf(stdout,"\tshort");
                        break;
                    case DATAINT:
                        fprintf(stdout,"\tint");
                        break;
                    case DATAFLOAT:
                        fprintf(stdout,"\tfloat");
                        break;
                    case DATADOUBLE:
                        fprintf(stdout,"\tdouble");
                        break;
                    case DATASTRING:
                        fprintf(stdout,"\tstring");
                        break;
                    }
                    fprintf(stdout,"\t%c%s%c",'"',a->name,'"');
                    fprintf(stdout," ");
                    for (x=0; x<a->dim; x++) fprintf(stdout,"[%d]",a->rng[x]);
                    if (dflg) {
                        fprintf(stdout,"=");
                        n=1;
                        for (x=0; x<a->dim; x++) n=a->rng[x]*n;
                        for (x=0; x<n; x++) {
                            if (x % a->rng[a->dim-1]==0) fprintf(stdout,"\n\t\t");
                            else if (x !=0) fprintf(stdout,",\t");
                            switch (a->type) {
                            case DATACHAR:
                                fprintf(stdout,"%d",a->data.cptr[x]);
                                break;
                            case DATASHORT:
                                fprintf(stdout,"%d",a->data.sptr[x]);
                                break;
                            case DATAINT:
                                fprintf(stdout,"%d",a->data.iptr[x]);
                                break;
                            case DATAFLOAT:
                                fprintf(stdout,"%g",a->data.fptr[x]);
                                break;
                            case DATADOUBLE:
                                fprintf(stdout,"%g",a->data.dptr[x]);
                                break;
                            case DATASTRING:
                                tmp=(char **) a->data.vptr;
                                fprintf(stdout,"%c%s%c",'"',tmp[x],'"');
                                break;

                            }
                        }
                        fprintf(stdout,"\n");
                    } else fprintf(stdout,"\n");
                }
                DataMapFree(ptr);
            }
        }
    } while(1);
    fprintf(stderr,"Connection failed.\n");
    return 0;

}
Exemplo n.º 5
0
int main(int argc,char *argv[]) {

  int arg;
  unsigned char help=0;
  unsigned char option=0;

  unsigned char vb=0;
 
  char *logstr=NULL;
  char *fnamestr=NULL;
  char *pathstr=NULL;
  char *pidstr=NULL;

  char *envstr;

  int sock;

  int remote_port=0;
  char dname[256];
  char logbuf[256];

  pid_t pid;
  FILE *fp;
  gzFile gzfp;
  char host[256];
  int flag,status;

  
  struct RadarParm *prm;
  struct FitData *fit;

  sigset_t set;
  struct sigaction act;

  struct timeval tv; 
  int reset=60;
  int cnt=0; 

  int sval=255;
  unsigned char stream;

  struct RadarNetwork *network=NULL;


  char path[256]={PATH};
  char pidfile[256]={PIDFILE};
  char fname[256]={FNAME};
  char tmpname[256];
  char *port_fname=NULL;
  unsigned char port_flag=0;
  double now=-1;
  double dstart=0;



  int yr,mo,dy,hr,mt;
  double sc;
 
  double minpwr=3.0;

  prm=RadarParmMake();
  fit=FitMake();
  cfit=CFitMake();

  pid=getpid();
 
  envstr=getenv("SD_RADAR");
  if (envstr==NULL) {
    fprintf(stderr,"Environment variable 'SD_RADAR' must be defined.\n");
    exit(-1);
  }

  fp=fopen(envstr,"r");

  if (fp==NULL) {
    fprintf(stderr,"Could not locate radar information file.\n");
    exit(-1);
  }

  network=RadarLoad(fp);
  fclose(fp); 
  if (network==NULL) {
    fprintf(stderr,"Failed to read radar information.\n");
    exit(-1);
  }

  OptionAdd(&opt,"-help",'x',&help);
  OptionAdd(&opt,"-option",'x',&option);

  OptionAdd(&opt,"vb",'x',&vb);

  OptionAdd(&opt,"s",'i',&sval);

  OptionAdd(&opt,"mp",'d',&minpwr);

  OptionAdd(&opt,"rpf",'x',&port_flag);
  
  OptionAdd(&opt,"L",'t',&logstr);
  OptionAdd(&opt,"f",'t',&fnamestr);
  OptionAdd(&opt,"p",'t',&pathstr);
  OptionAdd(&opt,"if",'t',&pidstr);




  arg=OptionProcess(1,argc,argv,&opt,NULL);

  if (help==1) {
    OptionPrintInfo(stdout,hlpstr);
    exit(0);
  }

  if (option==1) {
    OptionDump(stdout,&opt);
    exit(0);
  }


  if (argc-arg<2) {
    OptionPrintInfo(stderr,errstr);
    exit(-1);
  }

  if (logstr !=NULL) strcpy(logfname,logstr);
  if (pathstr !=NULL) strcpy(path,pathstr);
  if (pidstr !=NULL) strcpy(pidfile,pidstr);

 
  strcpy(host,argv[argc-2]);
  if (port_flag==0) remote_port=atoi(argv[argc-1]);
  else port_fname=argv[argc-1];

  stream=sval;
 
  strcpy(tmpname,fname);
  strcat(tmpname,"~");

  if (port_flag==0) sprintf(logbuf,"Host:%s %d",host,remote_port);
  else sprintf(logbuf,"Host:%s Port File:%s",host,port_fname);
  loginfo(logfname,logbuf);

  sprintf(logbuf,"File path:%s",path);
  loginfo(logfname,logbuf);
  sprintf(logbuf,"pid file:%s",pidfile);
  loginfo(logfname,logbuf);
  sprintf(logbuf,"pid:%d",(int) pid);
  loginfo(logfname,logbuf);
 
  fp=fopen(pidfile,"w");
  fprintf(fp,"%d\n",pid);
  fclose(fp);
  sigemptyset(&set);
  sigaddset(&set,SIGUSR1);

  act.sa_flags=0;
  act.sa_mask=set;
  act.sa_handler=trapsignal;
  sigaction(SIGUSR1,&act,NULL);

  now=0;

  do {
    resetflg=0;
  
    if (port_flag==1) {
      fp=fopen(port_fname,"r");
      if (fp !=NULL) {
        fscanf(fp,"%d",&remote_port);
        fclose(fp);
      } else remote_port=1024;
    }

    sprintf(logbuf,"Connecting to host:%s %d",host,remote_port);

    loginfo(logfname,logbuf);

    sock=ConnexOpen(host,remote_port,NULL); 
    if (sock<0) {
      loginfo(logfname,"Could not connect to host - retrying.");
      sleep(10);
      continue;
    }
    status=(write(sock,&stream,sizeof(char)) !=1);
    if (status !=0) {
      fprintf(stderr,"Could not set stream to host.\n");
      close(sock);
      sock=-1;
      continue;
    }

    resetflg=0;
    do {
     
       tv.tv_sec=reset; 

       status=FitCnxRead(1,&sock,prm,fit,&flag,&tv);

       if ((status==-1) || (flag==-1) || (resetflg !=0))  break;
       if (status==0) resetflg=1;
          
       if ((status==1) && (flag==1)) {
         fprintf(stderr,".");
         fflush(stderr);
         dotflag=1;
          

         FitToCFit(minpwr,cfit,prm,fit); 
	    
         now=cfit->time;

         if (dstart==0) {
           dstart=now-(int) now % (24*3600); /* start of day */
           TimeEpochToYMDHMS(dstart,&yr,&mo,&dy,&hr,&mt,&sc);
           sprintf(dname,"%s/%.4d%.2d%.2d.%s.cfit",
		       path,yr,mo,dy,RadarGetCode(network,cfit->stid,0));
	 }


         gzfp=gzopen(dname,"a");
         CFitWrite(gzfp,cfit);
         gzclose(gzfp);

         if ((now-dstart) >= 24*3600) { /* advance to the next day */
           dstart=now-(int) now % (24*3600); /* start of day */
           TimeEpochToYMDHMS(dstart,&yr,&mo,&dy,&hr,&mt,&sc);
           sprintf(dname,"%s/%.4d%.2d%.2d.%s.cfit",
		       path,yr,mo,dy,
                       RadarGetCode(network,cfit->stid,0));
	 }
	 
         cnt++;
	    
       } 
  

     
    } while (1);
 
    if (resetflg==0) loginfo(logfname,"Connection failed.");
    if (resetflg==1) loginfo(logfname,"Connection timed out.");
    if (resetflg==2) loginfo(logfname,"Connection reset by signal.");
    ConnexClose(sock);
  } while(1);

  return 0;
}