Mercurial > ublox > ublox8 > experimental
annotate gnss-galileo.h @ 64:8e85919405df
gnss-galileo: add a valid bit to each ephemeris
This is easier than trying to guess whether the ephemeris contains any
meaningful values.
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 22 Jan 2020 10:10:26 -0500 |
parents | c8c848632471 |
children | 123cac19d9bd |
rev | line source |
---|---|
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
1 /* |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
2 * Copyright (c) 2020 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
3 * |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
4 * Permission is hereby granted, free of charge, to any person obtaining a copy |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
5 * of this software and associated documentation files (the "Software"), to deal |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
6 * in the Software without restriction, including without limitation the rights |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
8 * copies of the Software, and to permit persons to whom the Software is |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
9 * furnished to do so, subject to the following conditions: |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
10 * |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
11 * The above copyright notice and this permission notice shall be included in |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
12 * all copies or substantial portions of the Software. |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
13 * |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
20 * SOFTWARE. |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
21 */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
22 |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
23 #ifndef __GNSS_GALILEO_H |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
24 #define __GNSS_GALILEO_H |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
25 |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
26 #include <jeffpc/types.h> |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
27 |
26
f185303d238e
gnss-galileo: calculate satellite location in ECEF from its ephemeris
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
23
diff
changeset
|
28 #include "gnss.h" |
f185303d238e
gnss-galileo: calculate satellite location in ECEF from its ephemeris
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
23
diff
changeset
|
29 |
54
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
30 /* The highest sv number that we should ever see */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
31 #define GALILEO_MAX_SV_ID 36 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
32 |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
33 struct galileo_inav_page { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
34 bool page_nominal; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
35 |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
36 union { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
37 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
38 uint32_t sar; /* 22 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
39 uint8_t type; /* 6 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
40 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
41 uint16_t iod; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
42 uint16_t t0e; /* 14 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
43 int32_t m0; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
44 uint32_t e; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
45 uint32_t sqrt_a; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
46 } w1; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
47 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
48 uint16_t iod; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
49 int32_t omega0; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
50 int32_t i0; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
51 int32_t omega; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
52 int16_t idot; /* 14 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
53 } w2; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
54 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
55 uint16_t iod; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
56 int32_t omegadot; /* 24 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
57 int16_t delta_n; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
58 int16_t cuc; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
59 int16_t cus; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
60 int16_t crc; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
61 int16_t crs; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
62 uint8_t sisa; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
63 } w3; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
64 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
65 uint16_t iod; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
66 uint8_t svid; /* 6 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
67 int16_t cic; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
68 int16_t cis; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
69 uint16_t t0c; /* 14 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
70 uint32_t af0; /* 31 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
71 uint32_t af1; /* 21 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
72 uint8_t af2; /* 6 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
73 } w4; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
74 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
75 uint16_t ai0; /* 11 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
76 uint16_t ai1; /* 11 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
77 uint16_t ai2; /* 14 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
78 bool reg1; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
79 bool reg2; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
80 bool reg3; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
81 bool reg4; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
82 bool reg5; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
83 uint16_t bgda; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
84 uint16_t bgdb; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
85 uint8_t e5bhs; /* 2 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
86 uint8_t e1bhs; /* 2 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
87 bool e5bdvs; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
88 bool e1bdvs; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
89 uint16_t wn; /* 12 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
90 uint32_t tow; /* 20 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
91 } w5; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
92 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
93 uint32_t a0; /* 32 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
94 uint32_t a1; /* 24 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
95 uint8_t delta_tls; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
96 uint8_t tot; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
97 uint8_t wn0t; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
98 uint8_t wnlsf; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
99 uint8_t dn; /* 3 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
100 uint8_t delta_tlsf; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
101 uint32_t tow; /* 20 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
102 } w6; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
103 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
104 uint8_t iod; /* 4 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
105 uint8_t wn; /* 2 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
106 uint16_t t0a; /* 10 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
107 uint8_t svid1; /* 6 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
108 int16_t sv1_delta_sqrt_a; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
109 uint16_t sv1_e; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
110 int16_t sv1_omega; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
111 int16_t sv1_delta; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
112 int16_t sv1_omega0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
113 int16_t sv1_omegadot; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
114 int16_t sv1_m0; /* 16 bits */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
115 } w7; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
116 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
117 uint8_t iod; /* 4 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
118 int16_t sv1_af0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
119 int16_t sv1_af1; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
120 uint8_t sv1_e5bhs; /* 2 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
121 uint8_t sv1_e1bhs; /* 2 bits */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
122 uint8_t svid2; /* 6 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
123 int16_t sv2_delta_sqrt_a; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
124 uint16_t sv2_e; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
125 int16_t sv2_omega; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
126 int16_t sv2_delta; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
127 int16_t sv2_omega0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
128 int16_t sv2_omegadot; /* 11 bits */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
129 } w8; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
130 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
131 uint8_t iod; /* 4 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
132 uint8_t wn; /* 2 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
133 uint16_t t0a; /* 10 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
134 int16_t sv2_m0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
135 int16_t sv2_af0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
136 int16_t sv2_af1; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
137 uint8_t sv2_e5bhs; /* 2 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
138 uint8_t sv2_e1bhs; /* 2 bits */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
139 uint8_t svid3; /* 6 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
140 int16_t sv3_delta_sqrt_a; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
141 uint16_t sv3_e; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
142 int16_t sv3_omega; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
143 int16_t sv3_delta; /* 11 bits */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
144 } w9; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
145 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
146 uint8_t iod; /* 4 bits */ |
21
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
147 int16_t sv3_omega0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
148 int16_t sv3_omegadot; /* 11 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
149 int16_t sv3_m0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
150 int16_t sv3_af0; /* 16 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
151 int16_t sv3_af1; /* 13 bits */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
152 uint8_t sv3_e5bhs; /* 2 */ |
f8055e9f809e
gnss-galileo: rename page 7-10 almanac members to include sv number
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
20
diff
changeset
|
153 uint8_t sv3_e1bhs; /* 2 */ |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
154 uint16_t a0g; /* 16 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
155 uint16_t a1g; /* 12 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
156 uint8_t t0g; /* 8 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
157 uint8_t wn; /* 6 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
158 } w10; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
159 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
160 uint16_t wn; /* 12 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
161 uint32_t tow; /* 20 bits */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
162 } w0; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
163 } nominal; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
164 struct { |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
165 /* TODO */ |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
166 } alert; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
167 }; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
168 }; |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
169 |
22
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
170 struct galileo_ephemeris { |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
171 unsigned int sv; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
172 uint16_t iod; |
64
8e85919405df
gnss-galileo: add a valid bit to each ephemeris
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
54
diff
changeset
|
173 bool valid:1; |
22
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
174 |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
175 /* All in radians, except as noted */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
176 double m0; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
177 double delta_n; /* rad/s */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
178 double e; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
179 double sqrt_a; /* sqrt(m) */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
180 double omega0; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
181 double i0; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
182 double omega; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
183 double omegadot; /* rad/s */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
184 double idot; /* rad/s */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
185 double cuc; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
186 double cus; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
187 double crc; /* m */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
188 double crs; /* m */ |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
189 double cic; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
190 double cis; |
23
7bf9e7cac1e8
gnss-galileo: keep ephemeris t0 as both raw and GST values
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
22
diff
changeset
|
191 struct { |
7bf9e7cac1e8
gnss-galileo: keep ephemeris t0 as both raw and GST values
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
22
diff
changeset
|
192 uint32_t raw; /* s */ |
7bf9e7cac1e8
gnss-galileo: keep ephemeris t0 as both raw and GST values
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
22
diff
changeset
|
193 uint32_t gst; |
7bf9e7cac1e8
gnss-galileo: keep ephemeris t0 as both raw and GST values
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
22
diff
changeset
|
194 } t0; |
22
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
195 }; |
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
196 |
54
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
197 struct galileo_state; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
198 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
199 struct galileo_state_time { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
200 uint32_t gst; /* calculated from wn & tow */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
201 uint16_t wn; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
202 uint32_t tow; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
203 bool valid:1; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
204 }; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
205 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
206 struct galileo_state_ops { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
207 /* |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
208 * We got an updated ephemeris from a satellite. If @prev is NULL, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
209 * this is the first update for this satellite. |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
210 */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
211 void (*eph_update)(struct galileo_state *state, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
212 const struct galileo_ephemeris *prev, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
213 const struct galileo_ephemeris *new); |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
214 void (*time)(struct galileo_state *state, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
215 const unsigned int tx_sv, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
216 const struct galileo_state_time *now, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
217 const struct galileo_state_time *prev_sv_time); |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
218 }; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
219 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
220 struct galileo_state { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
221 const struct galileo_state_ops *ops; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
222 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
223 /* global system time */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
224 struct galileo_state_time time; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
225 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
226 /* |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
227 * Note: SV numbers are currently 1..GALILEO_MAX_SV_ID. To make it |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
228 * simpler, we use them as-is to index into the various structures. |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
229 * This means, that we need to make all of them have +1 entries, and |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
230 * the first entry is wasted. |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
231 */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
232 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
233 /* each SV's data */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
234 struct { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
235 struct galileo_ephemeris eph; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
236 struct galileo_state_time last_time; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
237 bool valid_eph:1; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
238 } sv[GALILEO_MAX_SV_ID + 1]; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
239 |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
240 /* partially assembled data */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
241 struct { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
242 struct { |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
243 /* The ephemeris is split across 4 pages */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
244 struct galileo_ephemeris eph; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
245 uint32_t gst[4]; /* global time when recv'd */ |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
246 uint16_t iod[4]; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
247 } nav; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
248 } wip[GALILEO_MAX_SV_ID + 1]; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
249 }; |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
250 |
22
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
251 extern void galileo_print_eph(const struct galileo_ephemeris *eph); |
26
f185303d238e
gnss-galileo: calculate satellite location in ECEF from its ephemeris
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
23
diff
changeset
|
252 extern void galileo_eph_ecef(const struct galileo_ephemeris *eph, |
f185303d238e
gnss-galileo: calculate satellite location in ECEF from its ephemeris
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
23
diff
changeset
|
253 const uint32_t gst, struct ecef *ecef); |
22
9c1dc1cd91ba
gnss-galileo: ephemeris structure & printing function
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
21
diff
changeset
|
254 |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
255 extern bool galileo_parse_inav_page(struct galileo_inav_page *pg, |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
256 const uint32_t *words, |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
257 size_t nwords); |
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
258 |
54
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
259 extern void galileo_state_init(struct galileo_state *state, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
260 const struct galileo_state_ops *ops); |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
261 extern bool galileo_state_apply_page(struct galileo_state *state, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
262 const unsigned int sv, |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
263 const struct galileo_inav_page *pg); |
c8c848632471
gnss-galileo: state decoder
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
26
diff
changeset
|
264 |
20
866ce48cb006
gnss-galileo: parse I/NAV pages
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
265 #endif |