Exemple #1
0
char *justify (char * target, char * source, int tmax) {
    int slen;
    slen = strlen(source);
    if (slen >= tmax)
        right(target, source, tmax);
    else {
        strinit(target, tmax - slen, '0');
        strcat(target, source);
    }
    return target;
}
Exemple #2
0
static void RtkServer__create(JNIEnv* env, jobject thiz)
{
   struct native_ctx_t *nctx;

   LOGV("RtkServer__create()");

   nctx = (struct native_ctx_t *)calloc(1, sizeof(struct native_ctx_t));

   if (nctx == NULL) {
      LOGV("calloc() error");
      return;
   }

   rtksvrinit(&nctx->rtksvr);
   strinit(&nctx->monistr);

   (*env)->SetLongField(env, thiz, m_object_field, (long)nctx);
}
Exemple #3
0
int loadrosopts(opt_t *opts);

int start_rtkrcv(int argc, char **argv)
{
    int i;

    for (i=1;i<argc;i++) {
        if (!strcmp(argv[i],"-m")&&i+1<argc) moniport=atoi(argv[++i]);
        else if (!strcmp(argv[i],"-r")&&i+1<argc) outstat=atoi(argv[++i]);
        else if (!strcmp(argv[i],"-t")&&i+1<argc) rcv_trace=atoi(argv[++i]);
        else fprintf(stderr,"Unknown option: %s\n",argv[i]);
    }
    if (rcv_trace>0) {
        traceopen(TRACEFILE);
        tracelevel(rcv_trace);
    }
    /* initialize rtk server and monitor port */
    rtksvrinit(&svr);
    strinit(&moni);

    /* load options from ROS */
    resetsysopts();
    loadrosopts(rcvopts);
    loadrosopts(sysopts);
    getsysopts(&prcopt,solopt,&filopt);

    /* read navigation data */
    if (!readnav(NAVIFILE,&svr.nav)) {
        fprintf(stderr,"no navigation data: %s\n",NAVIFILE);
    }
    if (outstat>0) {
        rtkopenstat(STATFILE,outstat);
    }
    /* open monitor port */
    if (moniport>0&&!openmoni(moniport)) {
        fprintf(stderr,"monitor port open error: %d\n",moniport);
        return 0;
    }
    /* start rtk server */
    if (!startsvr(&svr_vt)) return 0;
Exemple #4
0
int hasValidOpenTag() {
  int result;

  TString str;
  strinit(&str);

  int c;

  for( short i = 0; i < OPEN_TAG_LENGTH; ++i) {
    c = fgetc(source);
    result = strCharAppend( &str, c);
    if (result != EOK) return result;
  }

  //nacti oddelovac oteviraci znacky
  int separator = fgetc(source);

  // pokud je oddelovacem znak konce radku, je potreba tento znak vratit,
  // aby pocitani radku pro token opravdu odpovidalo
  if (separator == '\n') ungetc(separator, source);

  return (strcmp(str.string, OPEN_TAG ) == 0 ) && isspace(separator);

}
Exemple #5
0
/* get source table -------------------------------------------------------*/
static char *getsrctbl(const char *path)
{
	static int lock=0;
	AnsiString s;
	stream_t str;
	char *p=buff,msg[MAXSTRMSG];
	int ns,stat,len=strlen(ENDSRCTBL);
	unsigned int tick=tickget();
	
	if (lock) return NULL; else lock=1;
	
	strinit(&str);
	if (!stropen(&str,STR_NTRIPCLI,STR_MODE_R,path)) {
		lock=0; 
		MainForm->ShowMsg("stream open error");
		return NULL;
	}
	MainForm->ShowMsg("connecting...");
	
	while(p<buff+MAXSRCTBL-1) {
		ns=strread(&str,p,buff+MAXSRCTBL-p-1); *(p+ns)='\0';
		if (p-len-3>buff&&strstr(p-len-3,ENDSRCTBL)) break;
		p+=ns;
		Sleep(NTRIP_CYCLE);
		stat=strstat(&str,msg);
		MainForm->ShowMsg(msg);
		if (stat<0) break;
		if ((int)(tickget()-tick)>NTRIP_TIMEOUT) {
			MainForm->ShowMsg("response timeout");
			break;
		}
	}
	strclose(&str);
	lock=0;
	return buff;
}
Exemple #6
0
/* initialize rtk server -------------------------------------------------------
* initialize rtk server
* args   : rtksvr_t *svr    IO rtk server
* return : status (0:error,1:ok)
*-----------------------------------------------------------------------------*/
extern int rtksvrinit(rtksvr_t *svr)
{
    gtime_t time0;
    sol_t  sol0;
    eph_t  eph0;
    geph_t geph0;
    seph_t seph0;
    int i,j;
    
    INIT_ZERO(time0);
    INIT_ZERO(sol0);
    INIT_ZERO(eph0);
    INIT_ZERO(geph0);
    INIT_ZERO(seph0);



    tracet(3,"rtksvrinit:\n");
    
    svr->state=svr->cycle=svr->nmeacycle=svr->nmeareq=0;
    for (i=0;i<3;i++) svr->nmeapos[i]=0.0;
    svr->buffsize=0;
    for (i=0;i<3;i++) svr->format[i]=0;
    for (i=0;i<2;i++) svr->solopt[i]=solopt_default;
    svr->navsel=svr->nsbs=svr->nsol=0;
    rtkinit(&svr->rtk,&prcopt_default);
    for (i=0;i<3;i++) svr->nb[i]=0;
    for (i=0;i<2;i++) svr->nsb[i]=0;
    for (i=0;i<3;i++) svr->npb[i]=0;
    for (i=0;i<3;i++) svr->buff[i]=NULL;
    for (i=0;i<2;i++) svr->sbuf[i]=NULL;
    for (i=0;i<3;i++) svr->pbuf[i]=NULL;
    for (i=0;i<MAXSOLBUF;i++) svr->solbuf[i]=sol0;
    for (i=0;i<3;i++) for (j=0;j<10;j++) svr->nmsg[i][j]=0;
    for (i=0;i<3;i++) svr->ftime[i]=time0;
    for (i=0;i<3;i++) svr->files[i][0]='\0';
    svr->moni=NULL;
    svr->tick=0;
    svr->thread=0;
    svr->cputime=svr->prcout=0;
    
    if (!(svr->nav.eph =(eph_t  *)malloc(sizeof(eph_t )*MAXSAT *2))||
        !(svr->nav.geph=(geph_t *)malloc(sizeof(geph_t)*NSATGLO*2))||
        !(svr->nav.seph=(seph_t *)malloc(sizeof(seph_t)*NSATSBS*2))) {
        tracet(1,"rtksvrinit: malloc error\n");
        return 0;
    }
    for (i=0;i<MAXSAT *2;i++) svr->nav.eph [i]=eph0;
    for (i=0;i<NSATGLO*2;i++) svr->nav.geph[i]=geph0;
    for (i=0;i<NSATSBS*2;i++) svr->nav.seph[i]=seph0;
    svr->nav.n =MAXSAT *2;
    svr->nav.ng=NSATGLO*2;
    svr->nav.ns=NSATSBS*2;
    
    for (i=0;i<3;i++) for (j=0;j<MAXOBSBUF;j++) {
        if (!(svr->obs[i][j].data=(obsd_t *)malloc(sizeof(obsd_t)*MAXOBS))) {
            tracet(1,"rtksvrinit: malloc error\n");
            return 0;
        }
    }
    for (i=0;i<3;i++) {
        memset(svr->raw +i,0,sizeof(raw_t ));
        memset(svr->rtcm+i,0,sizeof(rtcm_t));
    }
    for (i=0;i<MAXSTRRTK;i++) strinit(svr->stream+i);
    
    initlock(&svr->lock);
    
    return 1;
}