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

Commit 2563d30

Browse files
committed
Merge pull request #224 from gsmcmullin/use_signal_t
Define gnss_signal_t structure and use in place of 8-bit prns.
2 parents 6535fa1 + 2cf900e commit 2563d30

32 files changed

+557
-475
lines changed

include/libswiftnav/amb_kf.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ void set_nkf(nkf_t *kf, double amb_drift_var, double phase_var, double code_var,
7070
u8 num_sdiffs, sdiff_t *sdiffs_with_ref_first, double *dd_measurements, double ref_ecef[3]);
7171
void set_nkf_matrices(nkf_t *kf, double phase_var, double code_var,
7272
u8 num_sdiffs, sdiff_t *sdiffs_with_ref_first, double ref_ecef[3]);
73-
s32 find_index_of_element_in_u8s(const u32 num_elements, const u8 x, const u8 *list);
74-
void rebase_nkf(nkf_t *kf, u8 num_sats, u8 *old_prns, u8 *new_prns);
73+
s32 find_index_of_signal(const u32 num_elements, const gnss_signal_t x, const gnss_signal_t *list);
74+
void rebase_nkf(nkf_t *kf, u8 num_sats, const gnss_signal_t *old_sids, const gnss_signal_t *new_sids);
7575

7676
void nkf_state_projection(nkf_t *kf,
7777
u8 num_old_non_ref_sats,
@@ -84,11 +84,10 @@ void nkf_state_inclusion(nkf_t *kf,
8484
double *estimates,
8585
double int_init_var);
8686

87-
void rebase_nkf(nkf_t *kf, u8 num_sats, u8 *old_prns, u8 *new_prns);
88-
void rebase_covariance_udu(double *state_cov_U, double *state_cov_D, u8 num_sats, u8 *old_prns, u8 *new_prns);
87+
void rebase_covariance_udu(double *state_cov_U, double *state_cov_D, u8 num_sats, const gnss_signal_t *old_sids, const gnss_signal_t *new_sids);
8988

90-
void rebase_mean_N(double *mean, const u8 num_sats, const u8 *old_prns, const u8 *new_prns);
91-
void rebase_covariance_sigma(double *state_cov, const u8 num_sats, const u8 *old_prns, const u8 *new_prns);
89+
void rebase_mean_N(double *mean, const u8 num_sats, const gnss_signal_t *old_sids, const gnss_signal_t *new_sids);
90+
void rebase_covariance_sigma(double *state_cov, const u8 num_sats, const gnss_signal_t *old_sids, const gnss_signal_t *new_sids);
9291

9392
double get_sos_innov(const nkf_t *kf, const double *decor_obs);
9493
double compute_innovation_terms(u32 state_dim, const double *h,

include/libswiftnav/ambiguity_test.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ s8 determine_sats_addition(ambiguity_test_t *amb_test,
119119
z_t *Z_inv);
120120
// TODO(dsk) delete
121121
void add_sats_old(ambiguity_test_t *amb_test,
122-
u8 ref_prn,
123-
u32 num_added_dds, u8 *added_prns,
122+
gnss_signal_t ref_sid,
123+
u32 num_added_dds, gnss_signal_t *added_sids,
124124
z_t *lower_bounds, z_t *upper_bounds,
125125
z_t *Z_inv);
126126
void init_residual_matrices(residual_mtxs_t *res_mtxs, u8 num_dds, double *DE_mtx, double *obs_cov);

include/libswiftnav/baseline.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222

2323
typedef struct {
2424
double amb;
25-
u8 prn;
25+
gnss_signal_t sid;
2626
} ambiguity_t;
2727

2828
typedef struct {
2929
double ambs[MAX_CHANNELS-1];
30-
u8 prns[MAX_CHANNELS];
30+
gnss_signal_t sids[MAX_CHANNELS];
3131
u8 n;
3232
} ambiguities_t;
3333

@@ -51,7 +51,7 @@ s8 least_squares_solve_b_external_ambs(u8 num_dds, const double *ambs,
5151
const double ref_ecef[3], double b[3],
5252
bool disable_raim, double raim_threshold);
5353

54-
void diff_ambs(u8 ref_prn, u8 num_ambs, const ambiguity_t *amb_set,
54+
void diff_ambs(gnss_signal_t ref_sid, u8 num_ambs, const ambiguity_t *amb_set,
5555
double *dd_ambs);
5656
s8 baseline_(u8 num_sdiffs, const sdiff_t *sdiffs, const double ref_ecef[3],
5757
u8 num_ambs, const ambiguity_t *single_ambs,

include/libswiftnav/dgnss_management.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void dgnss_init(u8 num_sats, sdiff_t *sdiffs, double reciever_ecef[3]);
5050
void dgnss_update(u8 num_sats, sdiff_t *sdiffs, double reciever_ecef[3],
5151
bool disable_raim, double raim_threshold);
5252
void dgnss_rebase_ref(u8 num_sats, sdiff_t *sdiffs, double reciever_ecef[3],
53-
u8 old_prns[MAX_CHANNELS], sdiff_t *corrected_sdiffs);
53+
gnss_signal_t old_sids[MAX_CHANNELS], sdiff_t *corrected_sdiffs);
5454
nkf_t * get_dgnss_nkf(void);
5555
sats_management_t * get_sats_management(void);
5656
ambiguity_test_t* get_ambiguity_test(void);
@@ -86,8 +86,8 @@ double dgnss_iar_pool_ll(u8 num_ambs, double *ambs);
8686
double dgnss_iar_pool_prob(u8 num_ambs, double *ambs);
8787
u8 get_amb_kf_mean(double *ambs);
8888
u8 get_amb_kf_cov(double *cov);
89-
u8 get_amb_kf_prns(u8 *prns);
90-
u8 get_amb_test_prns(u8 *prns);
89+
u8 get_amb_kf_sids(gnss_signal_t *sids);
90+
u8 get_amb_test_sids(gnss_signal_t *sids);
9191
u8 dgnss_iar_MLE_ambs(s32 *ambs);
9292

9393
#endif /* LIBSWIFTNAV_DGNSS_MANAGEMENT_H */

include/libswiftnav/ephemeris.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#ifndef LIBSWIFTNAV_EPHEMERIS_H
1515
#define LIBSWIFTNAV_EPHEMERIS_H
1616

17+
#include "signal.h"
1718
#include "gpstime.h"
1819
#include "common.h"
1920

@@ -25,7 +26,7 @@ typedef struct {
2526
gps_time_t toe, toc;
2627
u8 valid;
2728
u8 healthy;
28-
u8 prn;
29+
gnss_signal_t sid;
2930
u8 iode;
3031
} ephemeris_t;
3132

include/libswiftnav/observation.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,20 @@ typedef struct {
2727
double sat_vel[3];
2828
double snr;
2929
u16 lock_counter;
30-
u8 prn;
30+
gnss_signal_t sid;
3131
} sdiff_t;
3232

3333
int cmp_sdiff(const void *a_, const void *b_);
3434
int cmp_amb(const void *a_, const void *b_);
3535
int cmp_amb_sdiff(const void *a_, const void *b_);
36-
int cmp_sdiff_prn(const void *a_, const void *b_);
37-
int cmp_amb_prn(const void *a_, const void *b_);
36+
int cmp_sdiff_sid(const void *a_, const void *b_);
37+
int cmp_amb_sid(const void *a_, const void *b_);
3838

3939
u8 single_diff(u8 n_a, navigation_measurement_t *m_a,
4040
u8 n_b, navigation_measurement_t *m_b,
4141
sdiff_t *sds);
4242

43-
int sdiff_search_prn(const void *a, const void *b);
43+
int cmp_sid_sdiff(const void *a, const void *b);
4444

4545
u8 make_propagated_sdiffs_wip(u8 n_local, navigation_measurement_t *m_local,
4646
u8 n_remote, navigation_measurement_t *m_remote,
@@ -51,19 +51,19 @@ u8 make_propagated_sdiffs(u8 n_local, navigation_measurement_t *m_local,
5151
ephemeris_t *es, gps_time_t t,
5252
sdiff_t *sds);
5353

54-
s8 make_dd_measurements_and_sdiffs(u8 ref_prn, const u8 *non_ref_prns, u8 num_dds,
54+
s8 make_dd_measurements_and_sdiffs(gnss_signal_t ref_sid, const gnss_signal_t *non_ref_sids, u8 num_dds,
5555
u8 num_sdiffs, const sdiff_t *sdiffs_in,
5656
double *dd_meas, sdiff_t *sdiffs_out);
5757

5858
u8 check_lock_counters(u8 n_sds, const sdiff_t *sds, u16 *lock_counters,
59-
u8 *sats_to_drop);
59+
gnss_signal_t *sats_to_drop);
6060

61-
s8 copy_sdiffs_put_ref_first(const u8 ref_prn, const u8 num_sdiffs,
61+
s8 copy_sdiffs_put_ref_first(const gnss_signal_t ref_sid, const u8 num_sdiffs,
6262
const sdiff_t *sdiffs,
6363
sdiff_t *sdiffs_with_ref_first);
6464

6565
u8 filter_sdiffs(u8 num_sdiffs, sdiff_t *sdiffs, u8 num_sats_to_drop,
66-
u8 *sats_to_drop);
66+
gnss_signal_t *sats_to_drop);
6767

6868
void debug_sdiff(sdiff_t sd);
6969
void debug_sdiffs(u8 n, sdiff_t *sds);

include/libswiftnav/sats_management.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
*/
2828
typedef struct {
2929
u8 num_sats;
30-
u8 prns[MAX_CHANNELS];
30+
gnss_signal_t sids[MAX_CHANNELS];
3131
} sats_management_t;
3232

33-
u8 choose_reference_sat(const u8 num_sats, const sdiff_t *sats);
33+
gnss_signal_t choose_reference_sat(const u8 num_sats, const sdiff_t *sats);
3434

3535
void init_sats_management(sats_management_t *sats_management,
3636
const u8 num_sats, const sdiff_t *sdiffs, sdiff_t *sdiffs_with_ref_first);
@@ -40,7 +40,7 @@ s8 rebase_sats_management(sats_management_t *sats_management,
4040
const u8 num_sats, const sdiff_t *sdiffs, sdiff_t *sdiffs_with_ref_first);
4141
void update_sats_sats_management(sats_management_t *sats_management, u8 num_non_ref_sdiffs, sdiff_t *non_ref_sdiffs);
4242

43-
void set_reference_sat_of_prns(u8 ref_prn, u8 num_sats, u8 *prns);
43+
void set_reference_sat_of_sids(gnss_signal_t ref_sid, u8 num_sats, gnss_signal_t *sids);
4444
s8 match_sdiffs_to_sats_man(sats_management_t *sats, u8 num_sdiffs, sdiff_t *sdiffs, sdiff_t *sdiffs_with_ref_first);
4545

4646
#endif /* LIBSWIFTNAV_SATS_MANAGEMENT_H */

include/libswiftnav/set.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#define LIBSWIFTNAV_SET_H
1515

1616
#include "common.h"
17+
#include "signal.h"
1718

1819
/** \addtogroup set
1920
* \{ */
@@ -32,11 +33,10 @@ typedef int (*cmp_fn) (const void* a, const void* b);
3233

3334
/** \} */
3435

35-
int cmp_u8_u8(const void * a, const void * b);
3636
int cmp_s32_s32(const void * a, const void * b);
3737

3838
bool is_set(u8 n, size_t sz, const void *set, cmp_fn cmp);
39-
bool is_prn_set(u8 len, const u8 *prns);
39+
bool is_sid_set(u8 len, const gnss_signal_t *sids);
4040

4141
s32 intersection_map(u32 na, size_t sa, const void *as,
4242
u32 nb, size_t sb, const void *bs,

include/libswiftnav/signal.h

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2015 Swift Navigation Inc.
3+
* Contact: Vlad Ungureanu <vvu@vdev.ro>
4+
*
5+
* This source is subject to the license found in the file 'LICENSE' which must
6+
* be be distributed together with this source. All other rights reserved.
7+
*
8+
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
9+
* EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
10+
* WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
11+
*/
12+
13+
#ifndef LIBSWIFTNAV_SIGNAL_H
14+
#define LIBSWIFTNAV_SIGNAL_H
15+
16+
#include "common.h"
17+
18+
#define GPS_L1_SATS 32
19+
#define WAAS_SATS 3
20+
#define EGNOS_SATS 3
21+
#define GAGAN_SATS 2
22+
#define MSAS_SATS 2
23+
#define SDCM_SATS 2
24+
#define SBAS_SATS (WAAS_SATS + EGNOS_SATS + GAGAN_SATS + MSAS_SATS + SDCM_SATS)
25+
#define ALL_SATS (GPS_L1_SATS + SBAS_SATS)
26+
27+
#define CONSTELLATION_GPS 0
28+
#define CONSTELLATION_SBAS 1
29+
30+
#define BAND_L1 0
31+
32+
typedef struct __attribute__((packed)) {
33+
u16 sat;
34+
u8 band;
35+
u8 constellation;
36+
} gnss_signal_t;
37+
38+
static inline int sid_compare(const gnss_signal_t a, const gnss_signal_t b)
39+
{
40+
s32 x;
41+
if ((x = a.constellation - b.constellation))
42+
return x;
43+
if ((x = a.band - b.band))
44+
return x;
45+
return a.sat - b.sat;
46+
}
47+
48+
static inline int cmp_sid_sid(const void *a, const void *b)
49+
{
50+
return sid_compare(*(gnss_signal_t *)a, *(gnss_signal_t*)b);
51+
}
52+
53+
static inline bool sid_is_equal(const gnss_signal_t a, const gnss_signal_t b)
54+
{
55+
return sid_compare(a, b) == 0;
56+
}
57+
58+
#endif /* LIBSWIFTNAV_SIGNAL_H */
59+

include/libswiftnav/track.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include "common.h"
1717
#include "ephemeris.h"
18+
#include "signal.h"
1819

1920
/** \addtogroup track
2021
* \{ */
@@ -138,7 +139,7 @@ typedef struct {
138139
* \see calc_navigation_measurement()
139140
*/
140141
typedef struct {
141-
u8 prn; /**< Satellite PRN. */
142+
gnss_signal_t sid; /**< Satellite signal. */
142143
double code_phase_chips; /**< The code-phase in chips at `receiver_time`. */
143144
double code_phase_rate; /**< Code phase rate in chips/s. */
144145
double carrier_phase; /**< Carrier phase in cycles. */
@@ -167,7 +168,7 @@ typedef struct {
167168
double snr;
168169
double lock_time;
169170
gps_time_t tot;
170-
u8 prn;
171+
gnss_signal_t sid;
171172
u16 lock_counter;
172173
} navigation_measurement_t;
173174

0 commit comments

Comments
 (0)