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; }
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); }
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;
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); }
/* 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; }
/* 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; }