Skip to content

Commit

Permalink
rtcm3: implement lock time slip checking
Browse files Browse the repository at this point in the history
Support determining the reported lock time from the lock time
indicators. Calculate the time since the last observation (per
signal). Use these to also check for a possible loss of lock. A slip
might now be reported on an outage.

Special case for receivers (Septentrio) that send a lock time
indicator of zero on a half cycle ambiguity. Consider these as an
outage deferring the decision to flag a slip until the signal
returns. For a short period of half cycle ambiguity that recovers, a
slip report might now be avoided.

The functions for converting the lock time indicator to a time also
support returning the time increment to the next indicator value. This
was not found to be needed.

Fix the observation flushing after a sync, which had been guarded by
the max obs overflow check so that once the max obs limit was reached
it was stuck.
  • Loading branch information
ourairquality committed Oct 1, 2024
1 parent be490f0 commit 1528658
Show file tree
Hide file tree
Showing 3 changed files with 238 additions and 64 deletions.
4 changes: 3 additions & 1 deletion src/rtcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,12 @@ extern int init_rtcm(rtcm_t *rtcm)
rtcm->msg[0]=rtcm->msgtype[0]=rtcm->opt[0]='\0';
for (i=0;i<6;i++) rtcm->msmtype[i][0]='\0';
rtcm->obsflag=rtcm->ephsat=0;
rtcm->stime = time0;
for (i=0;i<MAXSAT;i++)
for (int code=0;code<MAXCODE;code++) {
rtcm->cp[i][code]=0.0;
rtcm->lock[i][code]=rtcm->loss[i][code]=0;
rtcm->lti[i][code]=rtcm->loss[i][code]=0;
rtcm->tobs[i][code] = time0;
rtcm->lltime[i][code]=time0;
}
rtcm->nbyte=rtcm->nbit=rtcm->len=0;
Expand Down
Loading

0 comments on commit 1528658

Please sign in to comment.