Skip to content
This repository was archived by the owner on Apr 13, 2021. It is now read-only.

Commit 40a0fc9

Browse files
committed
Pass receiver time delta into calc_navigation_measurement()
1 parent ea1054d commit 40a0fc9

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed

include/libswiftnav/track.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,9 @@ typedef struct {
146146
double carrier_freq; /**< Carrier frequency in Hz. */
147147
u32 time_of_week_ms; /**< Number of milliseconds since the start of the
148148
GPS week corresponding to the last code rollover. */
149-
double receiver_time; /**< Receiver clock time at which this measurement
150-
is valid in seconds. */
149+
double rec_time_delta; /**< Difference between receiver clock time at which
150+
this measurement is valid and reference time
151+
(seconds). */
151152
double snr; /**< Signal to noise ratio. */
152153
u16 lock_counter; /**< This number is changed each time the tracking
153154
channel is re-locked or a cycle slip is
@@ -234,7 +235,7 @@ float cn0_est(cn0_est_state_t *s, float I, float Q);
234235

235236
s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
236237
navigation_measurement_t *nav_meas[],
237-
double nav_time, const ephemeris_t* e[]);
238+
const ephemeris_t* e[]);
238239

239240
int nav_meas_cmp(const void *a, const void *b);
240241
u8 tdcp_doppler(u8 n_new, navigation_measurement_t *m_new,

python/swiftnav/track.pxd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ cdef extern from "libswiftnav/track.h":
163163
double carrier_phase
164164
double carrier_freq
165165
u32 time_of_week_ms
166-
double receiver_time
166+
double rec_time_delta
167167
double snr
168168
u16 lock_counter
169169

@@ -183,7 +183,7 @@ cdef extern from "libswiftnav/track.h":
183183

184184
void calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
185185
navigation_measurement_t *nav_meas[],
186-
double nav_time, const ephemeris_t* e[])
186+
const ephemeris_t* e[])
187187
int nav_meas_cmp(const void *a, const void *b)
188188
u8 tdcp_doppler(u8 n_new, navigation_measurement_t *m_new,
189189
u8 n_old, navigation_measurement_t *m_old,

python/swiftnav/track.pyx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ cdef mk_nav_meas_array(py_nav_meas, u8 n_c_nav_meas, navigation_measurement_t *c
492492
memcpy(&c_nav_meas[i], &sd_, sizeof(navigation_measurement_t))
493493

494494
# TODO (Buro): Remove mallocs, etc. here. Do all this in-place
495-
def _calc_navigation_measurement(chan_meas, nav_meas, nav_time, ephemerides):
495+
def _calc_navigation_measurement(chan_meas, nav_meas, ephemerides):
496496
"""
497497
"""
498498
n_channels = len(chan_meas)
@@ -504,7 +504,7 @@ def _calc_navigation_measurement(chan_meas, nav_meas, nav_time, ephemerides):
504504
chan_meas_[n] = &((<ChannelMeasurement ?>chan_meas[n])._thisptr)
505505
nav_meas_[n] = &((<NavigationMeasurement ?>nav_meas[n])._thisptr)
506506
ephs[n] = &((<Ephemeris ?>ephemerides[n])._thisptr)
507-
calc_navigation_measurement(n_channels, chan_meas_, nav_meas_, nav_time, ephs)
507+
calc_navigation_measurement(n_channels, chan_meas_, nav_meas_, ephs)
508508
free(chan_meas_)
509509
free(nav_meas_)
510510
free(ephs)

src/track.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@ float cn0_est(cn0_est_state_t *s, float I, float Q)
766766
*/
767767
s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
768768
navigation_measurement_t *nav_meas[],
769-
double nav_time, const ephemeris_t* e[])
769+
const ephemeris_t* e[])
770770
{
771771
double TOTs[n_channels];
772772
double min_TOF = -DBL_MAX;
@@ -775,7 +775,7 @@ s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[
775775
for (u8 i=0; i<n_channels; i++) {
776776
TOTs[i] = 1e-3 * meas[i]->time_of_week_ms;
777777
TOTs[i] += meas[i]->code_phase_chips / 1.023e6;
778-
TOTs[i] += (nav_time - meas[i]->receiver_time) * meas[i]->code_phase_rate / 1.023e6;
778+
TOTs[i] -= meas[i]->rec_time_delta * meas[i]->code_phase_rate / 1.023e6;
779779

780780
/** \todo Maybe keep track of week number in tracking channel
781781
state or derive it from system time. */
@@ -787,7 +787,7 @@ s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[
787787
nav_meas[i]->sid = meas[i]->sid;
788788

789789
nav_meas[i]->carrier_phase = meas[i]->carrier_phase;
790-
nav_meas[i]->carrier_phase += (nav_time - meas[i]->receiver_time) * meas[i]->carrier_freq;
790+
nav_meas[i]->carrier_phase -= meas[i]->rec_time_delta * meas[i]->carrier_freq;
791791

792792
nav_meas[i]->lock_counter = meas[i]->lock_counter;
793793

0 commit comments

Comments
 (0)