/* get stream status ----------------------------------------------------------- * get current stream status * args : rtksvr_t *svr I rtk server * int *sstat O status of streams * char *msg O status messages * return : none *-----------------------------------------------------------------------------*/ extern void rtksvrsstat(rtksvr_t *svr, int *sstat, char *msg) { int i; char s[MAXSTRMSG],*p=msg; INIT_ZERO(s); tracet(4,"rtksvrsstat:\n"); rtksvrlock(svr); for (i=0;i<MAXSTRRTK;i++) { sstat[i]=strstat(svr->stream+i,s); if (*s) p+=sprintf(p,"(%d) %s ",i+1,s); } rtksvrunlock(svr); }
/* 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; }