mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-23 07:27:05 +00:00
add more work on rtklib functions
This commit is contained in:
parent
5d9ba16293
commit
9da436ec87
@ -66,7 +66,6 @@
|
|||||||
|
|
||||||
|
|
||||||
const int FILEPATHSEP = '/';
|
const int FILEPATHSEP = '/';
|
||||||
|
|
||||||
const double RE_WGS84 = 6378137.0; //!< earth semimajor axis (WGS84) (m)
|
const double RE_WGS84 = 6378137.0; //!< earth semimajor axis (WGS84) (m)
|
||||||
const double FE_WGS84 = (1.0 / 298.257223563); //!< earth flattening (WGS84)
|
const double FE_WGS84 = (1.0 / 298.257223563); //!< earth flattening (WGS84)
|
||||||
|
|
||||||
|
@ -1703,6 +1703,13 @@ void deg2dms(double deg, double *dms, int ndec)
|
|||||||
dms[0]*=sign;
|
dms[0]*=sign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deg2dms(double deg, double *dms)
|
||||||
|
{
|
||||||
|
double sign=deg<0.0?-1.0:1.0,a=fabs(deg);
|
||||||
|
dms[0]=floor(a); a=(a-dms[0])*60.0;
|
||||||
|
dms[1]=floor(a); a=(a-dms[1])*60.0;
|
||||||
|
dms[2]=a; dms[0]*=sign;
|
||||||
|
}
|
||||||
|
|
||||||
/* convert deg-min-sec to degree -----------------------------------------------
|
/* convert deg-min-sec to degree -----------------------------------------------
|
||||||
* convert degree-minute-second to degree
|
* convert degree-minute-second to degree
|
||||||
|
@ -174,6 +174,7 @@ int adjgpsweek(int week);
|
|||||||
unsigned int tickget(void);
|
unsigned int tickget(void);
|
||||||
void sleepms(int ms);
|
void sleepms(int ms);
|
||||||
void deg2dms(double deg, double *dms, int ndec);
|
void deg2dms(double deg, double *dms, int ndec);
|
||||||
|
void deg2dms(double deg, double *dms);
|
||||||
double dms2deg(const double *dms);
|
double dms2deg(const double *dms);
|
||||||
void ecef2pos(const double *r, double *pos);
|
void ecef2pos(const double *r, double *pos);
|
||||||
void pos2ecef(const double *pos, double *r);
|
void pos2ecef(const double *pos, double *r);
|
||||||
@ -182,8 +183,6 @@ void ecef2enu(const double *pos, const double *r, double *e);
|
|||||||
void enu2ecef(const double *pos, const double *e, double *r);
|
void enu2ecef(const double *pos, const double *e, double *r);
|
||||||
void covenu(const double *pos, const double *P, double *Q);
|
void covenu(const double *pos, const double *P, double *Q);
|
||||||
void covecef(const double *pos, const double *Q, double *P);
|
void covecef(const double *pos, const double *Q, double *P);
|
||||||
|
|
||||||
|
|
||||||
void ast_args(double t, double *f);
|
void ast_args(double t, double *f);
|
||||||
void nut_iau1980(double t, const double *f, double *dpsi, double *deps);
|
void nut_iau1980(double t, const double *f, double *dpsi, double *deps);
|
||||||
void eci2ecef(gtime_t tutc, const double *erpv, double *U, double *gmst);
|
void eci2ecef(gtime_t tutc, const double *erpv, double *U, double *gmst);
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -55,6 +55,9 @@
|
|||||||
|
|
||||||
#include "rtklib.h"
|
#include "rtklib.h"
|
||||||
|
|
||||||
|
#define COMMENTH "%" /* comment line indicator for solution */
|
||||||
|
#define MSG_DISCONN "$_DISCONNECT\r\n" /* disconnect message */
|
||||||
|
|
||||||
const char *opt2sep(const solopt_t *opt);
|
const char *opt2sep(const solopt_t *opt);
|
||||||
int tonum(char *buff, const char *sep, double *v);
|
int tonum(char *buff, const char *sep, double *v);
|
||||||
double sqvar(double covar);
|
double sqvar(double covar);
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
}
|
}
|
||||||
else strcpy(port,path);
|
else strcpy(port,path);
|
||||||
|
|
||||||
for (i=0;i<11;i++) if (br[i]==brate) break;
|
for (i=0;i<11;i++) if (br[i] == brate) break;
|
||||||
if (i>=12)
|
if (i>=12)
|
||||||
{
|
{
|
||||||
sprintf(msg,"bitrate error (%d)",brate);
|
sprintf(msg,"bitrate error (%d)",brate);
|
||||||
@ -120,7 +120,7 @@
|
|||||||
|
|
||||||
sprintf(dev,"/dev/%s",port);
|
sprintf(dev,"/dev/%s",port);
|
||||||
|
|
||||||
if ((mode&STR_MODE_R)&&(mode&STR_MODE_W)) rw=O_RDWR;
|
if ((mode&STR_MODE_R) && (mode&STR_MODE_W)) rw=O_RDWR;
|
||||||
else if (mode&STR_MODE_R) rw=O_RDONLY;
|
else if (mode&STR_MODE_R) rw=O_RDONLY;
|
||||||
else if (mode&STR_MODE_W) rw=O_WRONLY;
|
else if (mode&STR_MODE_W) rw=O_WRONLY;
|
||||||
|
|
||||||
@ -139,10 +139,10 @@
|
|||||||
ios.c_cc[VTIME]=0;
|
ios.c_cc[VTIME]=0;
|
||||||
cfsetospeed(&ios,bs[i]);
|
cfsetospeed(&ios,bs[i]);
|
||||||
cfsetispeed(&ios,bs[i]);
|
cfsetispeed(&ios,bs[i]);
|
||||||
ios.c_cflag|=bsize==7?CS7:CS8;
|
ios.c_cflag |= bsize == 7?CS7:CS8;
|
||||||
ios.c_cflag|=parity=='O'?(PARENB|PARODD):(parity=='E'?PARENB:0);
|
ios.c_cflag |= parity == 'O'?(PARENB|PARODD):(parity == 'E'?PARENB:0);
|
||||||
ios.c_cflag|=stopb==2?CSTOPB:0;
|
ios.c_cflag |= stopb == 2?CSTOPB:0;
|
||||||
ios.c_cflag|=!strcmp(fctr,"rts")?CRTSCTS:0;
|
ios.c_cflag |= !strcmp(fctr,"rts")?CRTSCTS:0;
|
||||||
tcsetattr(serial->dev,TCSANOW,&ios);
|
tcsetattr(serial->dev,TCSANOW,&ios);
|
||||||
tcflush(serial->dev,TCIOFLUSH);
|
tcflush(serial->dev,TCIOFLUSH);
|
||||||
return serial;
|
return serial;
|
||||||
@ -213,7 +213,7 @@
|
|||||||
reppath(file->path,file->openpath,time,"","");
|
reppath(file->path,file->openpath,time,"","");
|
||||||
|
|
||||||
/* create directory */
|
/* create directory */
|
||||||
if ((file->mode&STR_MODE_W)&&!(file->mode&STR_MODE_R))
|
if ((file->mode&STR_MODE_W) && !(file->mode&STR_MODE_R))
|
||||||
{
|
{
|
||||||
createdir(file->openpath);
|
createdir(file->openpath);
|
||||||
}
|
}
|
||||||
@ -242,8 +242,8 @@
|
|||||||
|
|
||||||
if (file->mode&STR_MODE_R)
|
if (file->mode&STR_MODE_R)
|
||||||
{
|
{
|
||||||
if (fread(&tagh,TIMETAGH_LEN,1,file->fp_tag)==1&&
|
if (fread(&tagh,TIMETAGH_LEN,1,file->fp_tag) == 1 &&
|
||||||
fread(&file->time,sizeof(file->time),1,file->fp_tag)==1)
|
fread(&file->time,sizeof(file->time),1,file->fp_tag) == 1)
|
||||||
{
|
{
|
||||||
memcpy(&file->tick_f,tagh+TIMETAGH_LEN-4,sizeof(file->tick_f));
|
memcpy(&file->tick_f,tagh+TIMETAGH_LEN-4,sizeof(file->tick_f));
|
||||||
}
|
}
|
||||||
@ -304,12 +304,12 @@
|
|||||||
if (!(mode&(STR_MODE_R|STR_MODE_W))) return NULL;
|
if (!(mode&(STR_MODE_R|STR_MODE_W))) return NULL;
|
||||||
|
|
||||||
/* file options */
|
/* file options */
|
||||||
for (p=(char *)path;(p=strstr(p,"::"));p+=2)
|
for (p=(char *)path;(p=strstr(p,"::"));p += 2)
|
||||||
{ /* file options */
|
{ /* file options */
|
||||||
if (*(p+2)=='T') timetag=1;
|
if (*(p+2) == 'T') timetag=1;
|
||||||
else if (*(p+2)=='+') sscanf(p+2,"+%lf",&start);
|
else if (*(p+2) == '+') sscanf(p+2,"+%lf",&start);
|
||||||
else if (*(p+2)=='x') sscanf(p+2,"x%lf",&speed);
|
else if (*(p+2) == 'x') sscanf(p+2,"x%lf",&speed);
|
||||||
else if (*(p+2)=='S') sscanf(p+2,"S=%lf",&swapintv);
|
else if (*(p+2) == 'S') sscanf(p+2,"S=%lf",&swapintv);
|
||||||
}
|
}
|
||||||
if (start<=0.0) start=0.0;
|
if (start<=0.0) start=0.0;
|
||||||
if (swapintv<=0.0) swapintv=0.0;
|
if (swapintv<=0.0) swapintv=0.0;
|
||||||
@ -361,7 +361,7 @@
|
|||||||
tracet(3,"swapfile: fp=%d time=%s\n",file->fp,time_str(time,0));
|
tracet(3,"swapfile: fp=%d time=%s\n",file->fp,time_str(time,0));
|
||||||
|
|
||||||
/* return if old swap file open */
|
/* return if old swap file open */
|
||||||
if (file->fp_tmp||file->fp_tag_tmp) return;
|
if (file->fp_tmp || file->fp_tag_tmp) return;
|
||||||
|
|
||||||
/* check path of new swap file */
|
/* check path of new swap file */
|
||||||
reppath(file->path,openpath,time,"","");
|
reppath(file->path,openpath,time,"","");
|
||||||
@ -409,7 +409,7 @@
|
|||||||
|
|
||||||
if (!file) return 0;
|
if (!file) return 0;
|
||||||
|
|
||||||
if (file->fp==stdin)
|
if (file->fp == stdin)
|
||||||
{
|
{
|
||||||
/* input from stdin */
|
/* input from stdin */
|
||||||
FD_ZERO(&rs); FD_SET(0,&rs);
|
FD_ZERO(&rs); FD_SET(0,&rs);
|
||||||
@ -429,14 +429,14 @@
|
|||||||
}
|
}
|
||||||
for (;;)
|
for (;;)
|
||||||
{ /* seek file position */
|
{ /* seek file position */
|
||||||
if (fread(&tick,sizeof(tick),1,file->fp_tag)<1||
|
if (fread(&tick,sizeof(tick),1,file->fp_tag)<1 ||
|
||||||
fread(&fpos,sizeof(fpos),1,file->fp_tag)<1)
|
fread(&fpos,sizeof(fpos),1,file->fp_tag)<1)
|
||||||
{
|
{
|
||||||
fseek(file->fp,0,SEEK_END);
|
fseek(file->fp,0,SEEK_END);
|
||||||
sprintf(msg,"end");
|
sprintf(msg,"end");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (file->repmode||file->speed>0.0)
|
if (file->repmode || file->speed>0.0)
|
||||||
{
|
{
|
||||||
if ((int)(tick-t)<1) continue;
|
if ((int)(tick-t)<1) continue;
|
||||||
}
|
}
|
||||||
@ -452,7 +452,7 @@
|
|||||||
}
|
}
|
||||||
nmax=(int)(fpos-file->fpos);
|
nmax=(int)(fpos-file->fpos);
|
||||||
|
|
||||||
if (file->repmode||file->speed>0.0)
|
if (file->repmode || file->speed>0.0)
|
||||||
{
|
{
|
||||||
fseek(file->fp_tag,-(long)(sizeof(tick)+sizeof(fpos)),SEEK_CUR);
|
fseek(file->fp_tag,-(long)(sizeof(tick)+sizeof(fpos)),SEEK_CUR);
|
||||||
}
|
}
|
||||||
@ -462,7 +462,7 @@
|
|||||||
if (nmax>0)
|
if (nmax>0)
|
||||||
{
|
{
|
||||||
nr=fread(buff,1,nmax,file->fp);
|
nr=fread(buff,1,nmax,file->fp);
|
||||||
file->fpos+=nr;
|
file->fpos += nr;
|
||||||
if (nr<=0) sprintf(msg,"end");
|
if (nr<=0) sprintf(msg,"end");
|
||||||
}
|
}
|
||||||
tracet(5,"readfile: fp=%d nr=%d fpos=%d\n",file->fp,nr,file->fpos);
|
tracet(5,"readfile: fp=%d nr=%d fpos=%d\n",file->fp,nr,file->fpos);
|
||||||
@ -486,12 +486,12 @@
|
|||||||
wtime=utc2gpst(timeget()); /* write time in gpst */
|
wtime=utc2gpst(timeget()); /* write time in gpst */
|
||||||
|
|
||||||
/* swap writing file */
|
/* swap writing file */
|
||||||
if (file->swapintv>0.0&&file->wtime.time!=0)
|
if (file->swapintv>0.0 && file->wtime.time!=0)
|
||||||
{
|
{
|
||||||
intv=file->swapintv*3600.0;
|
intv=file->swapintv*3600.0;
|
||||||
tow1=time2gpst(file->wtime,&week1);
|
tow1=time2gpst(file->wtime,&week1);
|
||||||
tow2=time2gpst(wtime,&week2);
|
tow2=time2gpst(wtime,&week2);
|
||||||
tow2+=604800.0*(week2-week1);
|
tow2 += 604800.0*(week2-week1);
|
||||||
|
|
||||||
/* open new swap file */
|
/* open new swap file */
|
||||||
if (floor((tow1+fswapmargin)/intv)<floor((tow2+fswapmargin)/intv))
|
if (floor((tow1+fswapmargin)/intv)<floor((tow2+fswapmargin)/intv))
|
||||||
@ -519,7 +519,7 @@
|
|||||||
}
|
}
|
||||||
if (file->fp_tag)
|
if (file->fp_tag)
|
||||||
{
|
{
|
||||||
tick-=file->tick;
|
tick -= file->tick;
|
||||||
fwrite(&tick,1,sizeof(tick),file->fp_tag);
|
fwrite(&tick,1,sizeof(tick),file->fp_tag);
|
||||||
fwrite(&fpos,1,sizeof(fpos),file->fp_tag);
|
fwrite(&fpos,1,sizeof(fpos),file->fp_tag);
|
||||||
fflush(file->fp_tag);
|
fflush(file->fp_tag);
|
||||||
@ -540,7 +540,7 @@
|
|||||||
/* sync files by time-tag ----------------------------------------------------*/
|
/* sync files by time-tag ----------------------------------------------------*/
|
||||||
void syncfile(file_t *file1, file_t *file2)
|
void syncfile(file_t *file1, file_t *file2)
|
||||||
{
|
{
|
||||||
if (!file1->fp_tag||!file2->fp_tag) return;
|
if (!file1->fp_tag || !file2->fp_tag) return;
|
||||||
file1->repmode=0;
|
file1->repmode=0;
|
||||||
file2->repmode=1;
|
file2->repmode=1;
|
||||||
file2->offset=(int)(file1->tick_f-file2->tick_f);
|
file2->offset=(int)(file1->tick_f-file2->tick_f);
|
||||||
@ -575,7 +575,7 @@
|
|||||||
}
|
}
|
||||||
if ((p=strrchr(buff,'@')))
|
if ((p=strrchr(buff,'@')))
|
||||||
{
|
{
|
||||||
*p++='\0';
|
*p++ = '\0';
|
||||||
if ((q=strchr(buff,':')))
|
if ((q=strchr(buff,':')))
|
||||||
{
|
{
|
||||||
*q='\0'; if (passwd) strcpy(passwd,q+1);
|
*q='\0'; if (passwd) strcpy(passwd,q+1);
|
||||||
@ -604,21 +604,21 @@
|
|||||||
|
|
||||||
tracet(3,"setsock: sock=%d\n",sock);
|
tracet(3,"setsock: sock=%d\n",sock);
|
||||||
|
|
||||||
if (setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(const char *)&tv,sizeof(tv))==-1||
|
if (setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,(const char *)&tv,sizeof(tv)) == -1 ||
|
||||||
setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(const char *)&tv,sizeof(tv))==-1)
|
setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(const char *)&tv,sizeof(tv)) == -1)
|
||||||
{
|
{
|
||||||
sprintf(msg,"sockopt error: notimeo");
|
sprintf(msg,"sockopt error: notimeo");
|
||||||
tracet(1,"setsock: setsockopt error 1 sock=%d err=%d\n",sock,errsock());
|
tracet(1,"setsock: setsockopt error 1 sock=%d err=%d\n",sock,errsock());
|
||||||
closesocket(sock);
|
closesocket(sock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (setsockopt(sock,SOL_SOCKET,SO_RCVBUF,(const char *)&bs,sizeof(bs))==-1||
|
if (setsockopt(sock,SOL_SOCKET,SO_RCVBUF,(const char *)&bs,sizeof(bs)) == -1 ||
|
||||||
setsockopt(sock,SOL_SOCKET,SO_SNDBUF,(const char *)&bs,sizeof(bs))==-1)
|
setsockopt(sock,SOL_SOCKET,SO_SNDBUF,(const char *)&bs,sizeof(bs)) == -1)
|
||||||
{
|
{
|
||||||
tracet(1,"setsock: setsockopt error 2 sock=%d err=%d bs=%d\n",sock,errsock(),bs);
|
tracet(1,"setsock: setsockopt error 2 sock=%d err=%d bs=%d\n",sock,errsock(),bs);
|
||||||
sprintf(msg,"sockopt error: bufsiz");
|
sprintf(msg,"sockopt error: bufsiz");
|
||||||
}
|
}
|
||||||
if (setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,(const char *)&mode,sizeof(mode))==-1)
|
if (setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,(const char *)&mode,sizeof(mode)) == -1)
|
||||||
{
|
{
|
||||||
tracet(1,"setsock: setsockopt error 3 sock=%d err=%d\n",sock,errsock());
|
tracet(1,"setsock: setsockopt error 3 sock=%d err=%d\n",sock,errsock());
|
||||||
sprintf(msg,"sockopt error: nodelay");
|
sprintf(msg,"sockopt error: nodelay");
|
||||||
@ -647,12 +647,12 @@
|
|||||||
|
|
||||||
flag=fcntl(sock,F_GETFL,0);
|
flag=fcntl(sock,F_GETFL,0);
|
||||||
fcntl(sock,F_SETFL,flag|O_NONBLOCK);
|
fcntl(sock,F_SETFL,flag|O_NONBLOCK);
|
||||||
if (connect(sock,addr,len)==-1)
|
if (connect(sock,addr,len) == -1)
|
||||||
{
|
{
|
||||||
err=errsock();
|
err=errsock();
|
||||||
if (err!=EISCONN&&err!=EINPROGRESS&&err!=EALREADY) return -1;
|
if (err!=EISCONN && err!=EINPROGRESS && err!=EALREADY) return -1;
|
||||||
FD_ZERO(&rs); FD_SET(sock,&rs); ws=rs;
|
FD_ZERO(&rs); FD_SET(sock,&rs); ws=rs;
|
||||||
if (select(sock+1,&rs,&ws,NULL,&tv)==0) return 0;
|
if (select(sock+1,&rs,&ws,NULL,&tv) == 0) return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -691,7 +691,7 @@
|
|||||||
tracet(3,"gentcp: type=%d\n",type);
|
tracet(3,"gentcp: type=%d\n",type);
|
||||||
|
|
||||||
/* generate socket */
|
/* generate socket */
|
||||||
if ((tcp->sock=socket(AF_INET,SOCK_STREAM,0))==(socket_t)-1)
|
if ((tcp->sock=socket(AF_INET,SOCK_STREAM,0)) == (socket_t)-1)
|
||||||
{
|
{
|
||||||
sprintf(msg,"socket error (%d)",errsock());
|
sprintf(msg,"socket error (%d)",errsock());
|
||||||
tracet(1,"gentcp: socket error err=%d\n",errsock());
|
tracet(1,"gentcp: socket error err=%d\n",errsock());
|
||||||
@ -707,7 +707,7 @@
|
|||||||
tcp->addr.sin_family=AF_INET;
|
tcp->addr.sin_family=AF_INET;
|
||||||
tcp->addr.sin_port=htons(tcp->port);
|
tcp->addr.sin_port=htons(tcp->port);
|
||||||
|
|
||||||
if (type==0)
|
if (type == 0)
|
||||||
{ /* server socket */
|
{ /* server socket */
|
||||||
|
|
||||||
#ifdef SVR_REUSEADDR
|
#ifdef SVR_REUSEADDR
|
||||||
@ -715,7 +715,7 @@
|
|||||||
setsockopt(tcp->sock,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,
|
setsockopt(tcp->sock,SOL_SOCKET,SO_REUSEADDR,(const char *)&opt,
|
||||||
sizeof(opt));
|
sizeof(opt));
|
||||||
#endif
|
#endif
|
||||||
if (bind(tcp->sock,(struct sockaddr *)&tcp->addr,sizeof(tcp->addr))==-1)
|
if (bind(tcp->sock,(struct sockaddr *)&tcp->addr,sizeof(tcp->addr)) == -1)
|
||||||
{
|
{
|
||||||
sprintf(msg,"bind error (%d) : %d",errsock(),tcp->port);
|
sprintf(msg,"bind error (%d) : %d",errsock(),tcp->port);
|
||||||
tracet(1,"gentcp: bind error port=%d err=%d\n",tcp->port,errsock());
|
tracet(1,"gentcp: bind error port=%d err=%d\n",tcp->port,errsock());
|
||||||
@ -807,7 +807,7 @@
|
|||||||
|
|
||||||
tracet(3,"updatetcpsvr: state=%d\n",tcpsvr->svr.state);
|
tracet(3,"updatetcpsvr: state=%d\n",tcpsvr->svr.state);
|
||||||
|
|
||||||
if (tcpsvr->svr.state==0) return;
|
if (tcpsvr->svr.state == 0) return;
|
||||||
|
|
||||||
for (i=0;i<MAXCLI;i++)
|
for (i=0;i<MAXCLI;i++)
|
||||||
{
|
{
|
||||||
@ -826,14 +826,14 @@
|
|||||||
strcpy(saddr,tcpsvr->cli[i].saddr);
|
strcpy(saddr,tcpsvr->cli[i].saddr);
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
if (n==0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
tcpsvr->svr.state=1;
|
tcpsvr->svr.state=1;
|
||||||
sprintf(msg,"waiting...");
|
sprintf(msg,"waiting...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tcpsvr->svr.state=2;
|
tcpsvr->svr.state=2;
|
||||||
if (n==1) sprintf(msg,"%s",saddr); else sprintf(msg,"%d clients",n);
|
if (n == 1) sprintf(msg,"%s",saddr); else sprintf(msg,"%d clients",n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -848,10 +848,10 @@
|
|||||||
|
|
||||||
tracet(3,"accsock: sock=%d\n",tcpsvr->svr.sock);
|
tracet(3,"accsock: sock=%d\n",tcpsvr->svr.sock);
|
||||||
|
|
||||||
for (i=0;i<MAXCLI;i++) if (tcpsvr->cli[i].state==0) break;
|
for (i=0;i<MAXCLI;i++) if (tcpsvr->cli[i].state == 0) break;
|
||||||
if (i>=MAXCLI) return 0; /* too many client */
|
if (i>=MAXCLI) return 0; /* too many client */
|
||||||
|
|
||||||
if ((sock=accept_nb(tcpsvr->svr.sock,(struct sockaddr *)&addr,&len))==(socket_t)-1)
|
if ((sock=accept_nb(tcpsvr->svr.sock,(struct sockaddr *)&addr,&len)) == (socket_t)-1)
|
||||||
{
|
{
|
||||||
err=errsock();
|
err=errsock();
|
||||||
sprintf(msg,"accept error (%d)",err);
|
sprintf(msg,"accept error (%d)",err);
|
||||||
@ -859,7 +859,7 @@
|
|||||||
closesocket(tcpsvr->svr.sock); tcpsvr->svr.state=0;
|
closesocket(tcpsvr->svr.sock); tcpsvr->svr.state=0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (sock==0) return 0;
|
if (sock == 0) return 0;
|
||||||
|
|
||||||
tcpsvr->cli[i].sock=sock;
|
tcpsvr->cli[i].sock=sock;
|
||||||
if (!setsock(tcpsvr->cli[i].sock,msg)) return 0;
|
if (!setsock(tcpsvr->cli[i].sock,msg)) return 0;
|
||||||
@ -880,7 +880,7 @@
|
|||||||
if (tcpsvr->svr.state<=0) return 0;
|
if (tcpsvr->svr.state<=0) return 0;
|
||||||
while (accsock(tcpsvr,msg)) ;
|
while (accsock(tcpsvr,msg)) ;
|
||||||
updatetcpsvr(tcpsvr,msg);
|
updatetcpsvr(tcpsvr,msg);
|
||||||
return tcpsvr->svr.state==2;
|
return tcpsvr->svr.state == 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -891,9 +891,9 @@
|
|||||||
|
|
||||||
tracet(4,"readtcpsvr: state=%d n=%d\n",tcpsvr->svr.state,n);
|
tracet(4,"readtcpsvr: state=%d n=%d\n",tcpsvr->svr.state,n);
|
||||||
|
|
||||||
if (!waittcpsvr(tcpsvr,msg)||tcpsvr->cli[0].state!=2) return 0;
|
if (!waittcpsvr(tcpsvr,msg) || tcpsvr->cli[0].state!=2) return 0;
|
||||||
|
|
||||||
if ((nr=recv_nb(tcpsvr->cli[0].sock,buff,n))==-1) {
|
if ((nr=recv_nb(tcpsvr->cli[0].sock,buff,n)) == -1) {
|
||||||
err=errsock();
|
err=errsock();
|
||||||
tracet(1,"readtcpsvr: recv error sock=%d err=%d\n",tcpsvr->cli[0].sock,err);
|
tracet(1,"readtcpsvr: recv error sock=%d err=%d\n",tcpsvr->cli[0].sock,err);
|
||||||
sprintf(msg,"recv error (%d)",err);
|
sprintf(msg,"recv error (%d)",err);
|
||||||
@ -951,14 +951,14 @@
|
|||||||
tracet(3,"consock: sock=%d\n",tcpcli->svr.sock);
|
tracet(3,"consock: sock=%d\n",tcpcli->svr.sock);
|
||||||
|
|
||||||
/* wait re-connect */
|
/* wait re-connect */
|
||||||
if (tcpcli->svr.tcon<0||(tcpcli->svr.tcon>0&&
|
if (tcpcli->svr.tcon<0 || (tcpcli->svr.tcon>0 &&
|
||||||
(int)(tickget()-tcpcli->svr.tdis)<tcpcli->svr.tcon))
|
(int)(tickget()-tcpcli->svr.tdis)<tcpcli->svr.tcon))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* non-block connect */
|
/* non-block connect */
|
||||||
if ((stat=connect_nb(tcpcli->svr.sock,(struct sockaddr *)&tcpcli->svr.addr,
|
if ((stat=connect_nb(tcpcli->svr.sock,(struct sockaddr *)&tcpcli->svr.addr,
|
||||||
sizeof(tcpcli->svr.addr)))==-1)
|
sizeof(tcpcli->svr.addr))) == -1)
|
||||||
{
|
{
|
||||||
err=errsock();
|
err=errsock();
|
||||||
sprintf(msg,"connect error (%d)",err);
|
sprintf(msg,"connect error (%d)",err);
|
||||||
@ -1021,17 +1021,17 @@
|
|||||||
|
|
||||||
if (tcpcli->svr.state<0) return 0;
|
if (tcpcli->svr.state<0) return 0;
|
||||||
|
|
||||||
if (tcpcli->svr.state==0)
|
if (tcpcli->svr.state == 0)
|
||||||
{ /* close */
|
{ /* close */
|
||||||
if (!gentcp(&tcpcli->svr,1,msg)) return 0;
|
if (!gentcp(&tcpcli->svr,1,msg)) return 0;
|
||||||
}
|
}
|
||||||
if (tcpcli->svr.state==1)
|
if (tcpcli->svr.state == 1)
|
||||||
{ /* wait */
|
{ /* wait */
|
||||||
if (!consock(tcpcli,msg)) return 0;
|
if (!consock(tcpcli,msg)) return 0;
|
||||||
}
|
}
|
||||||
if (tcpcli->svr.state==2)
|
if (tcpcli->svr.state == 2)
|
||||||
{ /* connect */
|
{ /* connect */
|
||||||
if (tcpcli->toinact>0&&
|
if (tcpcli->toinact>0 &&
|
||||||
(int)(tickget()-tcpcli->svr.tact)>tcpcli->toinact)
|
(int)(tickget()-tcpcli->svr.tact)>tcpcli->toinact)
|
||||||
{
|
{
|
||||||
sprintf(msg,"timeout");
|
sprintf(msg,"timeout");
|
||||||
@ -1053,7 +1053,7 @@
|
|||||||
|
|
||||||
if (!waittcpcli(tcpcli,msg)) return 0;
|
if (!waittcpcli(tcpcli,msg)) return 0;
|
||||||
|
|
||||||
if ((nr=recv_nb(tcpcli->svr.sock,buff,n))==-1)
|
if ((nr=recv_nb(tcpcli->svr.sock,buff,n)) == -1)
|
||||||
{
|
{
|
||||||
err=errsock();
|
err=errsock();
|
||||||
tracet(1,"readtcpcli: recv error sock=%d err=%d\n",tcpcli->svr.sock,err);
|
tracet(1,"readtcpcli: recv error sock=%d err=%d\n",tcpcli->svr.sock,err);
|
||||||
@ -1076,7 +1076,7 @@
|
|||||||
|
|
||||||
if (!waittcpcli(tcpcli,msg)) return 0;
|
if (!waittcpcli(tcpcli,msg)) return 0;
|
||||||
|
|
||||||
if ((ns=send_nb(tcpcli->svr.sock,buff,n))==-1)
|
if ((ns=send_nb(tcpcli->svr.sock,buff,n)) == -1)
|
||||||
{
|
{
|
||||||
err=errsock();
|
err=errsock();
|
||||||
tracet(1,"writetcp: send error sock=%d err=%d\n",tcpcli->svr.sock,err);
|
tracet(1,"writetcp: send error sock=%d err=%d\n",tcpcli->svr.sock,err);
|
||||||
@ -1110,7 +1110,7 @@
|
|||||||
{
|
{
|
||||||
for (k=b=0;k<6;k++,i++)
|
for (k=b=0;k<6;k++,i++)
|
||||||
{
|
{
|
||||||
b<<=1; if (i/8<n) b|=(byte[i/8]>>(7-i%8))&0x1;
|
b<<=1; if (i/8<n) b |= (byte[i/8]>>(7-i%8))&0x1;
|
||||||
}
|
}
|
||||||
str[j++]=table[b];
|
str[j++]=table[b];
|
||||||
}
|
}
|
||||||
@ -1128,10 +1128,10 @@
|
|||||||
|
|
||||||
tracet(3,"reqntrip_s: state=%d\n",ntrip->state);
|
tracet(3,"reqntrip_s: state=%d\n",ntrip->state);
|
||||||
|
|
||||||
p+=sprintf(p,"SOURCE %s %s\r\n",ntrip->passwd,ntrip->mntpnt);
|
p += sprintf(p,"SOURCE %s %s\r\n",ntrip->passwd,ntrip->mntpnt);
|
||||||
p+=sprintf(p,"Source-Agent: NTRIP %s\r\n",NTRIP_AGENT);
|
p += sprintf(p,"Source-Agent: NTRIP %s\r\n",NTRIP_AGENT);
|
||||||
p+=sprintf(p,"STR: %s\r\n",ntrip->str);
|
p += sprintf(p,"STR: %s\r\n",ntrip->str);
|
||||||
p+=sprintf(p,"\r\n");
|
p += sprintf(p,"\r\n");
|
||||||
|
|
||||||
if (writetcpcli(ntrip->tcp,(unsigned char *)buff,p-buff,msg)!=p-buff) return 0;
|
if (writetcpcli(ntrip->tcp,(unsigned char *)buff,p-buff,msg)!=p-buff) return 0;
|
||||||
|
|
||||||
@ -1149,22 +1149,22 @@
|
|||||||
|
|
||||||
tracet(3,"reqntrip_c: state=%d\n",ntrip->state);
|
tracet(3,"reqntrip_c: state=%d\n",ntrip->state);
|
||||||
|
|
||||||
p+=sprintf(p,"GET %s/%s HTTP/1.0\r\n",ntrip->url,ntrip->mntpnt);
|
p += sprintf(p,"GET %s/%s HTTP/1.0\r\n",ntrip->url,ntrip->mntpnt);
|
||||||
p+=sprintf(p,"User-Agent: NTRIP %s\r\n",NTRIP_AGENT);
|
p += sprintf(p,"User-Agent: NTRIP %s\r\n",NTRIP_AGENT);
|
||||||
|
|
||||||
if (!*ntrip->user)
|
if (!*ntrip->user)
|
||||||
{
|
{
|
||||||
p+=sprintf(p,"Accept: */*\r\n");
|
p += sprintf(p,"Accept: */*\r\n");
|
||||||
p+=sprintf(p,"Connection: close\r\n");
|
p += sprintf(p,"Connection: close\r\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(user,"%s:%s",ntrip->user,ntrip->passwd);
|
sprintf(user,"%s:%s",ntrip->user,ntrip->passwd);
|
||||||
p+=sprintf(p,"Authorization: Basic ");
|
p += sprintf(p,"Authorization: Basic ");
|
||||||
p+=encbase64(p,(unsigned char *)user,strlen(user));
|
p += encbase64(p,(unsigned char *)user,strlen(user));
|
||||||
p+=sprintf(p,"\r\n");
|
p += sprintf(p,"\r\n");
|
||||||
}
|
}
|
||||||
p+=sprintf(p,"\r\n");
|
p += sprintf(p,"\r\n");
|
||||||
|
|
||||||
if (writetcpcli(ntrip->tcp,(unsigned char *)buff,p-buff,msg)!=p-buff) return 0;
|
if (writetcpcli(ntrip->tcp,(unsigned char *)buff,p-buff,msg)!=p-buff) return 0;
|
||||||
|
|
||||||
@ -1188,9 +1188,9 @@
|
|||||||
if ((p=strstr((char *)ntrip->buff,NTRIP_RSP_OK_SVR)))
|
if ((p=strstr((char *)ntrip->buff,NTRIP_RSP_OK_SVR)))
|
||||||
{ /* ok */
|
{ /* ok */
|
||||||
q=(char *)ntrip->buff;
|
q=(char *)ntrip->buff;
|
||||||
p+=strlen(NTRIP_RSP_OK_SVR);
|
p += strlen(NTRIP_RSP_OK_SVR);
|
||||||
ntrip->nb-=p-q;
|
ntrip->nb -= p-q;
|
||||||
for (i=0;i<ntrip->nb;i++) *q++=*p++;
|
for (i=0;i<ntrip->nb;i++) *q++ = *p++;
|
||||||
ntrip->state=2;
|
ntrip->state=2;
|
||||||
sprintf(msg,"%s/%s",ntrip->tcp->svr.saddr,ntrip->mntpnt);
|
sprintf(msg,"%s/%s",ntrip->tcp->svr.saddr,ntrip->mntpnt);
|
||||||
tracet(2,"rspntrip_s: response ok nb=%d\n",ntrip->nb);
|
tracet(2,"rspntrip_s: response ok nb=%d\n",ntrip->nb);
|
||||||
@ -1233,9 +1233,9 @@
|
|||||||
if ((p=strstr((char *)ntrip->buff,NTRIP_RSP_OK_CLI)))
|
if ((p=strstr((char *)ntrip->buff,NTRIP_RSP_OK_CLI)))
|
||||||
{ /* ok */
|
{ /* ok */
|
||||||
q=(char *)ntrip->buff;
|
q=(char *)ntrip->buff;
|
||||||
p+=strlen(NTRIP_RSP_OK_CLI);
|
p += strlen(NTRIP_RSP_OK_CLI);
|
||||||
ntrip->nb-=p-q;
|
ntrip->nb -= p-q;
|
||||||
for (i=0;i<ntrip->nb;i++) *q++=*p++;
|
for (i=0;i<ntrip->nb;i++) *q++ = *p++;
|
||||||
ntrip->state=2;
|
ntrip->state=2;
|
||||||
sprintf(msg,"%s/%s",ntrip->tcp->svr.saddr,ntrip->mntpnt);
|
sprintf(msg,"%s/%s",ntrip->tcp->svr.saddr,ntrip->mntpnt);
|
||||||
tracet(2,"rspntrip_c: response ok nb=%d\n",ntrip->nb);
|
tracet(2,"rspntrip_c: response ok nb=%d\n",ntrip->nb);
|
||||||
@ -1293,25 +1293,25 @@
|
|||||||
|
|
||||||
if (ntrip->tcp->svr.state<2) ntrip->state=0; /* tcp disconnected */
|
if (ntrip->tcp->svr.state<2) ntrip->state=0; /* tcp disconnected */
|
||||||
|
|
||||||
if (ntrip->state==0)
|
if (ntrip->state == 0)
|
||||||
{ /* send request */
|
{ /* send request */
|
||||||
if (!(ntrip->type==0?reqntrip_s(ntrip,msg):reqntrip_c(ntrip,msg)))
|
if (!(ntrip->type == 0?reqntrip_s(ntrip,msg):reqntrip_c(ntrip,msg)))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
tracet(2,"waitntrip: state=%d nb=%d\n",ntrip->state,ntrip->nb);
|
tracet(2,"waitntrip: state=%d nb=%d\n",ntrip->state,ntrip->nb);
|
||||||
}
|
}
|
||||||
if (ntrip->state==1) { /* read response */
|
if (ntrip->state == 1) { /* read response */
|
||||||
p=(char *)ntrip->buff+ntrip->nb;
|
p=(char *)ntrip->buff+ntrip->nb;
|
||||||
if ((n=readtcpcli(ntrip->tcp,(unsigned char *)p,NTRIP_MAXRSP-ntrip->nb-1,msg))==0)
|
if ((n=readtcpcli(ntrip->tcp,(unsigned char *)p,NTRIP_MAXRSP-ntrip->nb-1,msg)) == 0)
|
||||||
{
|
{
|
||||||
tracet(5,"waitntrip: readtcp n=%d\n",n);
|
tracet(5,"waitntrip: readtcp n=%d\n",n);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ntrip->nb+=n; ntrip->buff[ntrip->nb]='\0';
|
ntrip->nb += n; ntrip->buff[ntrip->nb]='\0';
|
||||||
|
|
||||||
/* wait response */
|
/* wait response */
|
||||||
return ntrip->type==0?rspntrip_s(ntrip,msg):rspntrip_c(ntrip,msg);
|
return ntrip->type == 0?rspntrip_s(ntrip,msg):rspntrip_c(ntrip,msg);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -1404,7 +1404,7 @@
|
|||||||
/* get state ntrip -----------------------------------------------------------*/
|
/* get state ntrip -----------------------------------------------------------*/
|
||||||
int statentrip(ntrip_t *ntrip)
|
int statentrip(ntrip_t *ntrip)
|
||||||
{
|
{
|
||||||
return !ntrip?0:(ntrip->state==0?ntrip->tcp->svr.state:ntrip->state);
|
return !ntrip?0:(ntrip->state == 0?ntrip->tcp->svr.state:ntrip->state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1441,7 +1441,7 @@
|
|||||||
|
|
||||||
if ((p=strrchr(buff,'@')))
|
if ((p=strrchr(buff,'@')))
|
||||||
{
|
{
|
||||||
*p++='\0';
|
*p++ = '\0';
|
||||||
if ((q=strchr(buff,':')))
|
if ((q=strchr(buff,':')))
|
||||||
{
|
{
|
||||||
*q='\0'; if (passwd) strcpy(passwd,q+1);
|
*q='\0'; if (passwd) strcpy(passwd,q+1);
|
||||||
@ -1469,7 +1469,7 @@
|
|||||||
tow=time2gpst(time,&week);
|
tow=time2gpst(time,&week);
|
||||||
|
|
||||||
/* next retry time */
|
/* next retry time */
|
||||||
if (stat==0&&topts[3]>0)
|
if (stat == 0 && topts[3]>0)
|
||||||
{
|
{
|
||||||
tow=(floor((tow-topts[2])/topts[3])+1.0)*topts[3]+topts[2];
|
tow=(floor((tow-topts[2])/topts[3])+1.0)*topts[3]+topts[2];
|
||||||
return gpst2time(week,tow);
|
return gpst2time(week,tow);
|
||||||
@ -1512,9 +1512,9 @@
|
|||||||
|
|
||||||
/* if local file exist, skip download */
|
/* if local file exist, skip download */
|
||||||
strcpy(tmpfile,local);
|
strcpy(tmpfile,local);
|
||||||
if ((p=strrchr(tmpfile,'.'))&&
|
if ((p=strrchr(tmpfile,'.')) &&
|
||||||
(!strcmp(p,".z")||!strcmp(p,".gz")||!strcmp(p,".zip")||
|
(!strcmp(p,".z") || !strcmp(p,".gz") || !strcmp(p,".zip") ||
|
||||||
!strcmp(p,".Z")||!strcmp(p,".GZ")||!strcmp(p,".ZIP")))
|
!strcmp(p,".Z") || !strcmp(p,".GZ") || !strcmp(p,".ZIP")))
|
||||||
{
|
{
|
||||||
*p='\0';
|
*p='\0';
|
||||||
}
|
}
|
||||||
@ -1534,7 +1534,7 @@
|
|||||||
proxyopt="--proxy=on ";
|
proxyopt="--proxy=on ";
|
||||||
}
|
}
|
||||||
/* download command (ref [2]) */
|
/* download command (ref [2]) */
|
||||||
if (ftp->proto==0)
|
if (ftp->proto == 0)
|
||||||
{ /* ftp */
|
{ /* ftp */
|
||||||
sprintf(opt,"--ftp-user=%s --ftp-password=%s --glob=off --passive-ftp %s-t 1 -T %d -O \"%s\"",
|
sprintf(opt,"--ftp-user=%s --ftp-password=%s --glob=off --passive-ftp %s-t 1 -T %d -O \"%s\"",
|
||||||
ftp->user,ftp->passwd,proxyopt,FTP_TIMEOUT,local);
|
ftp->user,ftp->passwd,proxyopt,FTP_TIMEOUT,local);
|
||||||
@ -1559,9 +1559,9 @@
|
|||||||
remove(errfile);
|
remove(errfile);
|
||||||
|
|
||||||
/* uncompress downloaded file */
|
/* uncompress downloaded file */
|
||||||
if ((p=strrchr(local,'.'))&&
|
if ((p=strrchr(local,'.')) &&
|
||||||
(!strcmp(p,".z")||!strcmp(p,".gz")||!strcmp(p,".zip")||
|
(!strcmp(p,".z") || !strcmp(p,".gz") || !strcmp(p,".zip") ||
|
||||||
!strcmp(p,".Z")||!strcmp(p,".GZ")||!strcmp(p,".ZIP")))
|
!strcmp(p,".Z") || !strcmp(p,".GZ") || !strcmp(p,".ZIP")))
|
||||||
{
|
{
|
||||||
if (rtk_uncompress(local,tmpfile))
|
if (rtk_uncompress(local,tmpfile))
|
||||||
{
|
{
|
||||||
@ -1649,7 +1649,7 @@
|
|||||||
}
|
}
|
||||||
if (ftp->state<=1) return 0; /* ftp/http on going? */
|
if (ftp->state<=1) return 0; /* ftp/http on going? */
|
||||||
|
|
||||||
if (ftp->state==3)
|
if (ftp->state == 3)
|
||||||
{ /* ftp error */
|
{ /* ftp error */
|
||||||
sprintf(msg,"%s error (%d)",ftp->proto?"http":"ftp",ftp->error);
|
sprintf(msg,"%s error (%d)",ftp->proto?"http":"ftp",ftp->error);
|
||||||
|
|
||||||
@ -1661,8 +1661,8 @@
|
|||||||
/* return local file path if ftp completed */
|
/* return local file path if ftp completed */
|
||||||
p=buff;
|
p=buff;
|
||||||
q=(unsigned char *)ftp->local;
|
q=(unsigned char *)ftp->local;
|
||||||
while (*q&&(int)(p-buff)<n) *p++=*q++;
|
while (*q && (int)(p-buff)<n) *p++ = *q++;
|
||||||
p+=sprintf((char *)p,"\r\n");
|
p += sprintf((char *)p,"\r\n");
|
||||||
|
|
||||||
/* set next download time */
|
/* set next download time */
|
||||||
ftp->tnext=nextdltime(ftp->topts,1);
|
ftp->tnext=nextdltime(ftp->topts,1);
|
||||||
@ -1677,7 +1677,7 @@
|
|||||||
/* get state ftp -------------------------------------------------------------*/
|
/* get state ftp -------------------------------------------------------------*/
|
||||||
int stateftp(ftp_t *ftp)
|
int stateftp(ftp_t *ftp)
|
||||||
{
|
{
|
||||||
return !ftp?0:(ftp->state==0?2:(ftp->state<=2?3:-1));
|
return !ftp?0:(ftp->state == 0?2:(ftp->state<=2?3:-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1823,10 +1823,10 @@
|
|||||||
void strsync(stream_t *stream1, stream_t *stream2)
|
void strsync(stream_t *stream1, stream_t *stream2)
|
||||||
{
|
{
|
||||||
file_t *file1,*file2;
|
file_t *file1,*file2;
|
||||||
if (stream1->type!=STR_FILE||stream2->type!=STR_FILE) return;
|
if (stream1->type!=STR_FILE || stream2->type!=STR_FILE) return;
|
||||||
file1=(file_t*)stream1->port;
|
file1=(file_t*)stream1->port;
|
||||||
file2=(file_t*)stream2->port;
|
file2=(file_t*)stream2->port;
|
||||||
if (file1&&file2) syncfile(file1,file2);
|
if (file1 && file2) syncfile(file1,file2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lock/unlock stream ----------------------------------------------------------
|
/* lock/unlock stream ----------------------------------------------------------
|
||||||
@ -1854,7 +1854,7 @@
|
|||||||
|
|
||||||
tracet(4,"strread: n=%d\n",n);
|
tracet(4,"strread: n=%d\n",n);
|
||||||
|
|
||||||
if (!(stream->mode&STR_MODE_R)||!stream->port) return 0;
|
if (!(stream->mode&STR_MODE_R) || !stream->port) return 0;
|
||||||
|
|
||||||
strlock(stream);
|
strlock(stream);
|
||||||
|
|
||||||
@ -1871,7 +1871,7 @@
|
|||||||
strunlock(stream);
|
strunlock(stream);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
stream->inb+=nr;
|
stream->inb += nr;
|
||||||
tick=tickget(); if (nr>0) stream->tact=tick;
|
tick=tickget(); if (nr>0) stream->tact=tick;
|
||||||
|
|
||||||
if ((int)(tick-stream->tick)>=tirate)
|
if ((int)(tick-stream->tick)>=tirate)
|
||||||
@ -1900,7 +1900,7 @@
|
|||||||
|
|
||||||
tracet(3,"strwrite: n=%d\n",n);
|
tracet(3,"strwrite: n=%d\n",n);
|
||||||
|
|
||||||
if (!(stream->mode&STR_MODE_W)||!stream->port) return 0;
|
if (!(stream->mode&STR_MODE_W) || !stream->port) return 0;
|
||||||
|
|
||||||
strlock(stream);
|
strlock(stream);
|
||||||
|
|
||||||
@ -1918,7 +1918,7 @@
|
|||||||
strunlock(stream);
|
strunlock(stream);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
stream->outb+=ns;
|
stream->outb += ns;
|
||||||
tick=tickget(); if (ns>0) stream->tact=tick;
|
tick=tickget(); if (ns>0) stream->tact=tick;
|
||||||
|
|
||||||
if ((int)(tick-stream->tick)>tirate)
|
if ((int)(tick-stream->tick)>tirate)
|
||||||
@ -1967,7 +1967,7 @@
|
|||||||
strunlock(stream);
|
strunlock(stream);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (state==2&&(int)(tickget()-stream->tact)<=TINTACT) state=3;
|
if (state == 2 && (int)(tickget()-stream->tact)<=TINTACT) state=3;
|
||||||
strunlock(stream);
|
strunlock(stream);
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
@ -2013,7 +2013,7 @@
|
|||||||
tracet(3,"strsetopt: opt=%d %d %d %d %d %d %d %d\n",opt[0],opt[1],opt[2],
|
tracet(3,"strsetopt: opt=%d %d %d %d %d %d %d %d\n",opt[0],opt[1],opt[2],
|
||||||
opt[3],opt[4],opt[5],opt[6],opt[7]);
|
opt[3],opt[4],opt[5],opt[6],opt[7]);
|
||||||
|
|
||||||
toinact =0<opt[0]&&opt[0]<1000?1000:opt[0]; /* >=1s */
|
toinact =0<opt[0] && opt[0]<1000?1000:opt[0]; /* >=1s */
|
||||||
ticonnect =opt[1]<1000?1000:opt[1]; /* >=1s */
|
ticonnect =opt[1]<1000?1000:opt[1]; /* >=1s */
|
||||||
tirate =opt[2]<100 ?100 :opt[2]; /* >=0.1s */
|
tirate =opt[2]<100 ?100 :opt[2]; /* >=0.1s */
|
||||||
buffsize =opt[3]<4096?4096:opt[3]; /* >=4096byte */
|
buffsize =opt[3]<4096?4096:opt[3]; /* >=4096byte */
|
||||||
@ -2034,11 +2034,11 @@
|
|||||||
|
|
||||||
tracet(3,"strsettimeout: toinact=%d tirecon=%d\n",toinact,tirecon);
|
tracet(3,"strsettimeout: toinact=%d tirecon=%d\n",toinact,tirecon);
|
||||||
|
|
||||||
if (stream->type==STR_TCPCLI)
|
if (stream->type == STR_TCPCLI)
|
||||||
{
|
{
|
||||||
tcpcli=(tcpcli_t *)stream->port;
|
tcpcli=(tcpcli_t *)stream->port;
|
||||||
}
|
}
|
||||||
else if (stream->type==STR_NTRIPCLI||stream->type==STR_NTRIPSVR)
|
else if (stream->type == STR_NTRIPCLI || stream->type == STR_NTRIPSVR)
|
||||||
{
|
{
|
||||||
tcpcli=((ntrip_t *)stream->port)->tcp;
|
tcpcli=((ntrip_t *)stream->port)->tcp;
|
||||||
}
|
}
|
||||||
@ -2081,7 +2081,7 @@
|
|||||||
gtime_t strgettime(stream_t *stream)
|
gtime_t strgettime(stream_t *stream)
|
||||||
{
|
{
|
||||||
file_t *file;
|
file_t *file;
|
||||||
if (stream->type==STR_FILE&&(stream->mode&STR_MODE_R)&&
|
if (stream->type == STR_FILE && (stream->mode&STR_MODE_R) &&
|
||||||
(file=(file_t *)stream->port))
|
(file=(file_t *)stream->port))
|
||||||
{
|
{
|
||||||
return timeadd(file->time,file->start); /* replay start time */
|
return timeadd(file->time,file->start); /* replay start time */
|
||||||
@ -2123,13 +2123,13 @@
|
|||||||
trace(4,"gen_hex: msg=%s\n",msg);
|
trace(4,"gen_hex: msg=%s\n",msg);
|
||||||
|
|
||||||
strncpy(mbuff,msg,1023);
|
strncpy(mbuff,msg,1023);
|
||||||
for (p=strtok(mbuff," ");p&&narg<256;p=strtok(NULL," "))
|
for (p=strtok(mbuff," ");p && narg<256;p=strtok(NULL," "))
|
||||||
{
|
{
|
||||||
args[narg++]=p;
|
args[narg++]=p;
|
||||||
}
|
}
|
||||||
for (i=0;i<narg;i++)
|
for (i=0;i<narg;i++)
|
||||||
{
|
{
|
||||||
if (sscanf(args[i],"%x",&byte)) *q++=(unsigned char)byte;
|
if (sscanf(args[i],"%x",&byte)) *q++ = (unsigned char)byte;
|
||||||
}
|
}
|
||||||
return (int)(q-buff);
|
return (int)(q-buff);
|
||||||
}
|
}
|
||||||
@ -2152,14 +2152,14 @@
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
for (q=p;;q++) if (*q=='\r'||*q=='\n'||*q=='\0') break;
|
for (q=p;;q++) if (*q == '\r' || *q == '\n' || *q == '\0') break;
|
||||||
n=(int)(q-p); strncpy(msg,p,n); msg[n]='\0';
|
n=(int)(q-p); strncpy(msg,p,n); msg[n]='\0';
|
||||||
|
|
||||||
if (!*msg||*msg=='#')
|
if (!*msg || *msg == '#')
|
||||||
{ /* null or comment */
|
{ /* null or comment */
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
else if (*msg=='!')
|
else if (*msg == '!')
|
||||||
{ /* binary escape */
|
{ /* binary escape */
|
||||||
if (!strncmp(msg+1,"WAIT",4))
|
if (!strncmp(msg+1,"WAIT",4))
|
||||||
{ /* wait */
|
{ /* wait */
|
||||||
@ -2194,6 +2194,6 @@
|
|||||||
strwrite(str,(unsigned char *)msg,n);
|
strwrite(str,(unsigned char *)msg,n);
|
||||||
strwrite(str,(unsigned char *)cmdend,2);
|
strwrite(str,(unsigned char *)cmdend,2);
|
||||||
}
|
}
|
||||||
if (*q=='\0') break; else p=q+1;
|
if (*q == '\0') break; else p=q+1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user