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

Commit 5cb52a0

Browse files
committed
Merge pull request #347 from jacobmcnamee/tc
Pass receiver time delta into calc_navigation_measurement()
2 parents 342cff6 + 2613c63 commit 5cb52a0

File tree

4 files changed

+14
-12
lines changed

4 files changed

+14
-12
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: 5 additions & 4 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

@@ -181,9 +181,10 @@ cdef extern from "libswiftnav/track.h":
181181
gnss_signal_t sid
182182
u16 lock_counter
183183

184-
void calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
185-
navigation_measurement_t *nav_meas[],
186-
double nav_time, const ephemeris_t* e[])
184+
s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
185+
navigation_measurement_t *nav_meas[],
186+
const ephemeris_t* e[])
187+
187188
int nav_meas_cmp(const void *a, const void *b)
188189
u8 tdcp_doppler(u8 n_new, navigation_measurement_t *m_new,
189190
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
@@ -765,7 +765,7 @@ float cn0_est(cn0_est_state_t *s, float I, float Q)
765765
*/
766766
s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[],
767767
navigation_measurement_t *nav_meas[],
768-
double nav_time, const ephemeris_t* e[])
768+
const ephemeris_t* e[])
769769
{
770770
double TOTs[n_channels];
771771
double min_TOF = -DBL_MAX;
@@ -774,7 +774,7 @@ s8 calc_navigation_measurement(u8 n_channels, const channel_measurement_t *meas[
774774
for (u8 i=0; i<n_channels; i++) {
775775
TOTs[i] = 1e-3 * meas[i]->time_of_week_ms;
776776
TOTs[i] += meas[i]->code_phase_chips / 1.023e6;
777-
TOTs[i] += (nav_time - meas[i]->receiver_time) * meas[i]->code_phase_rate / 1.023e6;
777+
TOTs[i] -= meas[i]->rec_time_delta * meas[i]->code_phase_rate / 1.023e6;
778778

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

788788
nav_meas[i]->carrier_phase = meas[i]->carrier_phase;
789-
nav_meas[i]->carrier_phase += (nav_time - meas[i]->receiver_time) * meas[i]->carrier_freq;
789+
nav_meas[i]->carrier_phase -= meas[i]->rec_time_delta * meas[i]->carrier_freq;
790790

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

0 commit comments

Comments
 (0)