示例#1
0
/* 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);
}
示例#2
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;
}