@@ -271,6 +271,8 @@ static int decode_head1001(rtcm_t *rtcm, int *sync)
271271 char * msg ,tstr [40 ];
272272 int i = 24 ,staid ,nsat ,type ;
273273
274+ if (rtcm -> obsflag ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
275+
274276 type = getbitu (rtcm -> buff ,i ,12 ); i += 12 ;
275277
276278 if (i + 52 <=rtcm -> len * 8 ) {
@@ -313,7 +315,7 @@ static int decode_type1002(rtcm_t *rtcm)
313315
314316 if ((nsat = decode_head1001 (rtcm ,& sync ))< 0 ) return -1 ;
315317
316- for (j = 0 ;j < nsat && rtcm -> obs . n < MAXOBS && i + 74 <=rtcm -> len * 8 ;j ++ ) {
318+ for (j = 0 ;j < nsat && i + 74 <=rtcm -> len * 8 ;j ++ ) {
317319 prn = getbitu (rtcm -> buff ,i , 6 ); i += 6 ;
318320 code = getbitu (rtcm -> buff ,i , 1 ); i += 1 ;
319321 pr1 = getbitu (rtcm -> buff ,i ,24 ); i += 24 ;
@@ -332,9 +334,7 @@ static int decode_type1002(rtcm_t *rtcm)
332334 continue ;
333335 }
334336 tt = timediff (rtcm -> obs .data [0 ].time ,rtcm -> time );
335- if (rtcm -> obsflag || fabs (tt )> 1E-9 ) {
336- rtcm -> obs .n = rtcm -> obsflag = 0 ;
337- }
337+ if (fabs (tt )> 1E-9 ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
338338 if ((index = obsindex (& rtcm -> obs ,rtcm -> time ,sat ))< 0 ) continue ;
339339 pr1 = pr1 * 0.02 + amb * PRUNIT_GPS ;
340340 rtcm -> obs .data [index ].P [0 ]= pr1 ;
@@ -367,7 +367,7 @@ static int decode_type1004(rtcm_t *rtcm)
367367
368368 if ((nsat = decode_head1001 (rtcm ,& sync ))< 0 ) return -1 ;
369369
370- for (j = 0 ;j < nsat && rtcm -> obs . n < MAXOBS && i + 125 <=rtcm -> len * 8 ;j ++ ) {
370+ for (j = 0 ;j < nsat && i + 125 <=rtcm -> len * 8 ;j ++ ) {
371371 prn = getbitu (rtcm -> buff ,i , 6 ); i += 6 ;
372372 code1 = getbitu (rtcm -> buff ,i , 1 ); i += 1 ;
373373 pr1 = getbitu (rtcm -> buff ,i ,24 ); i += 24 ;
@@ -391,9 +391,7 @@ static int decode_type1004(rtcm_t *rtcm)
391391 continue ;
392392 }
393393 tt = timediff (rtcm -> obs .data [0 ].time ,rtcm -> time );
394- if (rtcm -> obsflag || fabs (tt )> 1E-9 ) {
395- rtcm -> obs .n = rtcm -> obsflag = 0 ;
396- }
394+ if (fabs (tt )> 1E-9 ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
397395 if ((index = obsindex (& rtcm -> obs ,rtcm -> time ,sat ))< 0 ) continue ;
398396 pr1 = pr1 * 0.02 + amb * PRUNIT_GPS ;
399397 rtcm -> obs .data [index ].P [0 ]= pr1 ;
@@ -579,6 +577,8 @@ static int decode_head1009(rtcm_t *rtcm, int *sync)
579577 char * msg ,tstr [40 ];
580578 int i = 24 ,staid ,nsat ,type ;
581579
580+ if (rtcm -> obsflag ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
581+
582582 type = getbitu (rtcm -> buff ,i ,12 ); i += 12 ;
583583
584584 if (i + 49 <=rtcm -> len * 8 ) {
@@ -621,7 +621,7 @@ static int decode_type1010(rtcm_t *rtcm)
621621
622622 if ((nsat = decode_head1009 (rtcm ,& sync ))< 0 ) return -1 ;
623623
624- for (j = 0 ;j < nsat && rtcm -> obs . n < MAXOBS && i + 79 <=rtcm -> len * 8 ;j ++ ) {
624+ for (j = 0 ;j < nsat && i + 79 <=rtcm -> len * 8 ;j ++ ) {
625625 prn = getbitu (rtcm -> buff ,i , 6 ); i += 6 ;
626626 code = getbitu (rtcm -> buff ,i , 1 ); i += 1 ;
627627 fcn = getbitu (rtcm -> buff ,i , 5 ); i += 5 ; /* fcn+7 */
@@ -638,9 +638,7 @@ static int decode_type1010(rtcm_t *rtcm)
638638 rtcm -> nav .glo_fcn [prn - 1 ]= fcn - 7 + 8 ; /* fcn+8 */
639639 }
640640 tt = timediff (rtcm -> obs .data [0 ].time ,rtcm -> time );
641- if (rtcm -> obsflag || fabs (tt )> 1E-9 ) {
642- rtcm -> obs .n = rtcm -> obsflag = 0 ;
643- }
641+ if (fabs (tt )> 1E-9 ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
644642 if ((index = obsindex (& rtcm -> obs ,rtcm -> time ,sat ))< 0 ) continue ;
645643 pr1 = pr1 * 0.02 + amb * PRUNIT_GLO ;
646644 rtcm -> obs .data [index ].P [0 ]= pr1 ;
@@ -673,7 +671,7 @@ static int decode_type1012(rtcm_t *rtcm)
673671
674672 if ((nsat = decode_head1009 (rtcm ,& sync ))< 0 ) return -1 ;
675673
676- for (j = 0 ;j < nsat && rtcm -> obs . n < MAXOBS && i + 130 <=rtcm -> len * 8 ;j ++ ) {
674+ for (j = 0 ;j < nsat && i + 130 <=rtcm -> len * 8 ;j ++ ) {
677675 prn = getbitu (rtcm -> buff ,i , 6 ); i += 6 ;
678676 code1 = getbitu (rtcm -> buff ,i , 1 ); i += 1 ;
679677 fcn = getbitu (rtcm -> buff ,i , 5 ); i += 5 ; /* fcn+7 */
@@ -695,9 +693,7 @@ static int decode_type1012(rtcm_t *rtcm)
695693 rtcm -> nav .glo_fcn [prn - 1 ]= fcn - 7 + 8 ; /* fcn+8 */
696694 }
697695 tt = timediff (rtcm -> obs .data [0 ].time ,rtcm -> time );
698- if (rtcm -> obsflag || fabs (tt )> 1E-9 ) {
699- rtcm -> obs .n = rtcm -> obsflag = 0 ;
700- }
696+ if (fabs (tt )> 1E-9 ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
701697 if ((index = obsindex (& rtcm -> obs ,rtcm -> time ,sat ))< 0 ) continue ;
702698 pr1 = pr1 * 0.02 + amb * PRUNIT_GLO ;
703699 rtcm -> obs .data [index ].P [0 ]= pr1 ;
@@ -1433,7 +1429,7 @@ static int decode_type1042(rtcm_t *rtcm)
14331429 eph .ttr = rtcm -> time ;
14341430 eph .A = sqrtA * sqrtA ;
14351431 if (!strstr (rtcm -> opt ,"-EPHALL" )) {
1436- if (timediff (eph .toe ,rtcm -> nav .eph [sat - 1 ].toe )== 0.0 &&
1432+ if (fabs ( timediff (eph .toe ,rtcm -> nav .eph [sat - 1 ].toe )) < 1.0 &&
14371433 eph .iode == rtcm -> nav .eph [sat - 1 ].iode &&
14381434 eph .iodc == rtcm -> nav .eph [sat - 1 ].iodc ) return 0 ; /* unchanged */
14391435 }
@@ -2117,6 +2113,8 @@ static int decode_msm_head(rtcm_t *rtcm, int sys, int *sync, int *iod,
21172113 char * msg ,tstr [40 ];
21182114 int i = 24 ,j ,dow ,mask ,staid ,type ,ncell = 0 ;
21192115
2116+ if (rtcm -> obsflag ) rtcm -> obs .n = rtcm -> obsflag = 0 ;
2117+
21202118 type = getbitu (rtcm -> buff ,i ,12 ); i += 12 ;
21212119
21222120 * h = h0 ;
0 commit comments