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

Commit dbfd38e

Browse files
committed
Generalisation of ephemeris for SBAS support.
1 parent 2563d30 commit dbfd38e

File tree

4 files changed

+232
-95
lines changed

4 files changed

+232
-95
lines changed

include/libswiftnav/constants.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
#define R2D (180.0 / M_PI) /**< Conversion factor from radians to degrees. */
2626
#define D2R (M_PI / 180.0) /**< Conversion factor from degrees to radians. */
2727

28+
#define DAY_SECS (24*60*60) /** < Seconds in a day */
29+
2830
/** \defgroup gps_constants GPS
2931
* Constants related to the Global Positioning System.
3032
* See ICD-GPS-200C.

include/libswiftnav/ephemeris.h

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,40 @@ typedef struct {
2323
double crs, crc, cuc, cus, cic, cis;
2424
double dn, m0, ecc, sqrta, omega0, omegadot, w, inc, inc_dot;
2525
double af0, af1, af2;
26-
gps_time_t toe, toc;
26+
gps_time_t toc;
27+
u8 iode;
28+
} ephemeris_kepler_t;
29+
30+
typedef struct {
31+
double pos[3];
32+
double rate[3];
33+
double acc[3];
34+
u8 iod;
35+
u16 toa;
36+
u8 ura;
37+
double a_gf0;
38+
double a_gf1;
39+
} ephemeris_xyz_t;
40+
41+
typedef struct {
42+
gnss_signal_t sid;
43+
gps_time_t toe;
2744
u8 valid;
2845
u8 healthy;
29-
gnss_signal_t sid;
30-
u8 iode;
46+
union {
47+
ephemeris_kepler_t kepler;
48+
ephemeris_xyz_t xyz;
49+
};
3150
} ephemeris_t;
3251

33-
s8 calc_sat_state(const ephemeris_t *ephemeris, gps_time_t t,
52+
s8 calc_sat_state(const ephemeris_t *e, gps_time_t t,
3453
double pos[3], double vel[3],
3554
double *clock_err, double *clock_rate_err);
3655

37-
u8 ephemeris_good(ephemeris_t *eph, gps_time_t t);
56+
u8 ephemeris_good(const ephemeris_t *eph, gps_time_t t);
3857

3958
void decode_ephemeris(u32 frame_words[3][8], ephemeris_t *e);
40-
bool ephemeris_equal(ephemeris_t *a, ephemeris_t *b);
59+
bool ephemeris_equal(const ephemeris_t *a, const ephemeris_t *b);
4160

4261
#endif /* LIBSWIFTNAV_EPHEMERIS_H */
4362

0 commit comments

Comments
 (0)