@@ -760,9 +760,13 @@ float cn0_est(cn0_est_state_t *s, float I, float Q)
760760 return s -> log_bw - 10.f * log10f (s -> nsr );
761761}
762762
763- void calc_navigation_measurement (u8 n_channels , const channel_measurement_t * meas [],
764- navigation_measurement_t * nav_meas [],
765- double nav_time , const ephemeris_t * e [])
763+ /**
764+ * \return 0 on success,
765+ * -1 if ephemeris is invalid
766+ */
767+ s8 calc_navigation_measurement (u8 n_channels , const channel_measurement_t * meas [],
768+ navigation_measurement_t * nav_meas [],
769+ double nav_time , const ephemeris_t * e [])
766770{
767771 double TOTs [n_channels ];
768772 double min_TOF = - DBL_MAX ;
@@ -788,9 +792,11 @@ void calc_navigation_measurement(u8 n_channels, const channel_measurement_t *mea
788792 nav_meas [i ]-> lock_counter = meas [i ]-> lock_counter ;
789793
790794 /* calc sat clock error */
791- calc_sat_state (e [i ], & nav_meas [i ]-> tot ,
792- nav_meas [i ]-> sat_pos , nav_meas [i ]-> sat_vel ,
793- & clock_err [i ], & clock_rate_err [i ]);
795+ if (calc_sat_state (e [i ], & nav_meas [i ]-> tot ,
796+ nav_meas [i ]-> sat_pos , nav_meas [i ]-> sat_vel ,
797+ & clock_err [i ], & clock_rate_err [i ]) != 0 ) {
798+ return -1 ;
799+ }
794800
795801 /* remove clock error to put all tots within the same time window */
796802 if ((TOTs [i ] + clock_err [i ]) > min_TOF )
@@ -807,6 +813,8 @@ void calc_navigation_measurement(u8 n_channels, const channel_measurement_t *mea
807813 nav_meas [i ]-> tot .tow -= clock_err [i ];
808814 normalize_gps_time (& nav_meas [i ]-> tot );
809815 }
816+
817+ return 0 ;
810818}
811819
812820/** Compare navigation message by PRN.
0 commit comments