Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions src/ephemeris.c
Original file line number Diff line number Diff line change
Expand Up @@ -807,10 +807,16 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
/* transmission time by satellite clock */
time[i]=timeadd(obs[i].time,-pr/CLIGHT);

/* satellite clock bias by broadcast ephemeris */
if (!ephclk(time[i],teph,obs[i].sat,nav,&dt)) {
trace(3,"no broadcast clock %s sat=%2d\n",time2str(time[i],tstr,3),obs[i].sat);
/* satellite clock offset from precise products or broadcast ephemeris */
if (ephopt==EPHOPT_PREC&&nav->nc>0) {
if(!pephclk(time[i],obs[i].sat,nav,&dt,NULL)) {
trace(3,"no precise clock %s sat=%2d\n",time2str(time[i],tstr,3),obs[i].sat);
continue;
}
}
else if (!ephclk(time[i],teph,obs[i].sat,nav,&dt)) {
trace(3,"no broadcast clock %s sat=%2d\n",time2str(time[i],tstr,3),obs[i].sat);
continue;
}
time[i]=timeadd(time[i],-dt);

Expand All @@ -821,10 +827,13 @@ extern void satposs(gtime_t teph, const obsd_t *obs, int n, const nav_t *nav,
continue;
}
/* if no precise clock available, use broadcast clock instead */
/* NOTE: broadcast clock from ephclk() does NOT include relativistic
* correction for GPS, GAL and BDS! */
if (dts[i*2]==0.0) {
if (!ephclk(time[i],teph,obs[i].sat,nav,dts+i*2)) continue;
dts[1+i*2]=0.0;
*var=SQR(STD_BRDCCLK);
trace(3,"no precise clock, use broadcast %s sat=%2d\n",time2str(time[i],tstr,3),obs[i].sat);
}
trace(4,"satposs: %d,time=%.9f dt=%.9f pr=%.3f rs=%13.3f %13.3f %13.3f dts=%12.3f var=%7.3f\n",
obs[i].sat,time[i].sec,dt,pr,rs[i*6],rs[1+i*6],rs[2+i*6],dts[i*2]*1E9,
Expand Down
2 changes: 1 addition & 1 deletion src/postpos.c
Original file line number Diff line number Diff line change
Expand Up @@ -773,7 +773,7 @@ static int readobsnav(gtime_t ts, gtime_t te, double ti, const char **infile,
trace(1,"\n");
return 0;
}
if (nav->n<=0&&nav->ng<=0&&nav->ns<=0) {
if (nav->n<=0&&nav->ng<=0&&nav->ns<=0&&prcopt->sateph!=EPHOPT_PREC) {
checkbrk("error : no nav data");
trace(1,"\n");
return 0;
Expand Down
2 changes: 1 addition & 1 deletion src/preceph.c
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ static int pephpos(gtime_t time, int sat, const nav_t *nav, double *rs,
return 1;
}
/* satellite clock by precise clock ------------------------------------------*/
static int pephclk(gtime_t time, int sat, const nav_t *nav, double *dts,
extern int pephclk(gtime_t time, int sat, const nav_t *nav, double *dts,
double *varc)
{
double t[2],c[2],std;
Expand Down
2 changes: 2 additions & 0 deletions src/rtklib.h
Original file line number Diff line number Diff line change
Expand Up @@ -1628,6 +1628,8 @@ EXPORT int open_rnxctr (rnxctr_t *rnx, FILE *fp);
EXPORT int input_rnxctr(rnxctr_t *rnx, FILE *fp);

/* ephemeris and clock functions ---------------------------------------------*/
EXPORT int pephclk(gtime_t time, int sat, const nav_t *nav, double *dts,
double *varc);
EXPORT double eph2clk (gtime_t time, const eph_t *eph);
EXPORT double geph2clk(gtime_t time, const geph_t *geph);
EXPORT double seph2clk(gtime_t time, const seph_t *seph);
Expand Down