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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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