Files
galileo/docs/inav_icd_mapping.md

91 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Galileo I/NAV ICD source mapping
The sole normative source for this decoder is **European Union, Galileo Open
Service Signal-in-Space Interface Control Document, Issue 2.2, November 2025**.
The implementation does not infer layouts from SignalSim. SignalSim is an RF
stimulus and an independent post-decode truth source only.
Bit positions below are zero-based, MSB-first positions in the reconstructed
128-bit nominal I/NAV word. ICD table positions are one-based on-air order.
Signed values use two's complement. A scale written `2^-n*pi` converts an ICD
semi-circle value to radians.
## Channel coding and page construction
| Implementation | ICD reference | Implemented definition |
| --- | --- | --- |
| E1-B symbol rate | §3.4.2 and Table 3 | 250 symbols/s; one symbol spans one 4 ms primary-code epoch |
| Page-part layout | §4.3.2 and Table 37 | 10 uncoded sync symbols followed by 240 interleaved FEC symbols; one second total |
| Synchronization | §4.3.2.1 | `0101100000`; repeated boundaries 250 symbols apart are required |
| Nominal page | §4.3.2.3 and Table 38 | Sequential even/odd one-second page parts form one 2-second vertical E1-B page |
| Tail | §4.3.2.2 and Table 38 | Six zero tail bits terminate each 120-bit page part |
| Convolutional FEC | §4.1.4.1, Figure 13, Table 26 | Rate 1/2, K=7, G1=171 octal, G2=133 octal, second encoder output inverted |
| Interleaver | §4.1.4.2 and Table 27 | 30 columns × 8 rows; write by column and read by row; decoder applies the reverse permutation |
| Independent coded vector | Annex D.2 | Exact ICD I/NAV encoded and interleaved page-part vector is used by unit tests |
| CRC | §5.1.9.4, Equations 25–26 | 24-bit CRC, generator `0x1864CFB`, zero initial remainder, MSB-first protected bits |
| CRC coverage | §4.3.2.3 and Table 38 | Even/odd, page type, both data parts, OSNMA, SAR and spare; sync, SSP and tails excluded |
`InavPageDecoder` reconstructs the 128-bit data word from even bits 2–113 and
odd bits 2–17. CRC is evaluated over even bits 0–113 and odd bits 0–81, against
odd bits 82–105, exactly matching the E1-B vertical-page allocation in Table 38.
## Critical word layouts and scales
| Word | Field | Word bit range | Width | Signed | Scale | Unit | ICD allocation | ICD definition |
| ---: | --- | ---: | ---: | :---: | ---: | --- | --- | --- |
| 1 | Type | 0–5 | 6 | No | 1 | — | Table 42 | §4.3.5 |
| 1 | IODnav | 6–15 | 10 | No | 1 | — | Table 42 | §5.1.8.1 |
| 1 | t0e | 16–29 | 14 | No | 60 | s | Table 42 | Table 67 |
| 1 | M0 | 30–61 | 32 | Yes | 2^-31*pi | rad | Table 42 | Table 67 |
| 1 | e | 62–93 | 32 | No | 2^-33 | — | Table 42 | Table 67 |
| 1 | sqrt(A) | 94–125 | 32 | No | 2^-19 | m^1/2 | Table 42 | Table 67 |
| 2 | IODnav | 6–15 | 10 | No | 1 | — | Table 43 | §5.1.8.1 |
| 2 | Omega0 | 16–47 | 32 | Yes | 2^-31*pi | rad | Table 43 | Table 67 |
| 2 | i0 | 48–79 | 32 | Yes | 2^-31*pi | rad | Table 43 | Table 67 |
| 2 | omega | 80–111 | 32 | Yes | 2^-31*pi | rad | Table 43 | Table 67 |
| 2 | i-dot | 112–125 | 14 | Yes | 2^-43*pi | rad/s | Table 43 | Table 67 |
| 3 | IODnav | 6–15 | 10 | No | 1 | — | Table 44 | §5.1.8.1 |
| 3 | Omega-dot | 16–39 | 24 | Yes | 2^-43*pi | rad/s | Table 44 | Table 67 |
| 3 | Delta-n | 40–55 | 16 | Yes | 2^-43*pi | rad/s | Table 44 | Table 67 |
| 3 | Cuc | 56–71 | 16 | Yes | 2^-29 | rad | Table 44 | Table 67 |
| 3 | Cus | 72–87 | 16 | Yes | 2^-29 | rad | Table 44 | Table 67 |
| 3 | Crc | 88–103 | 16 | Yes | 2^-5 | m | Table 44 | Table 67 |
| 3 | Crs | 104–119 | 16 | Yes | 2^-5 | m | Table 44 | Table 67 |
| 3 | SISA(E1,E5b) | 120–127 | 8 | No | index | — | Table 44 | §5.1.11.1 |
| 4 | IODnav | 6–15 | 10 | No | 1 | — | Table 45 | §5.1.8.1 |
| 4 | SVID | 16–21 | 6 | No | 1 | — | Table 45 | §5.1.8.2 |
| 4 | Cic | 22–37 | 16 | Yes | 2^-29 | rad | Table 45 | Table 67 |
| 4 | Cis | 38–53 | 16 | Yes | 2^-29 | rad | Table 45 | Table 67 |
| 4 | t0c | 54–67 | 14 | No | 60 | s | Table 45 | Table 70 |
| 4 | af0 | 68–98 | 31 | Yes | 2^-34 | s | Table 45 | Table 70 |
| 4 | af1 | 99–119 | 21 | Yes | 2^-46 | s/s | Table 45 | Table 70 |
| 4 | af2 | 120–125 | 6 | Yes | 2^-59 | s/s^2 | Table 45 | Table 70 |
| 5 | ai0 | 6–16 | 11 | No | 2^-2 | sfu | Table 46 | Table 74 |
| 5 | ai1 | 17–27 | 11 | Yes | 2^-8 | sfu/degree | Table 46 | Table 74 |
| 5 | ai2 | 28–41 | 14 | Yes | 2^-15 | sfu/degree^2 | Table 46 | Table 74 |
| 5 | Disturbance flags 1–5 | 42–46 | 5 | No | Boolean | — | Table 46 | Table 74 |
| 5 | BGD(E1,E5a) | 47–56 | 10 | Yes | 2^-32 | s | Table 46 | Table 72 |
| 5 | BGD(E1,E5b) | 57–66 | 10 | Yes | 2^-32 | s | Table 46 | Table 72 |
| 5 | E5b/E1B health | 67–70 | 2+2 | No | status | — | Table 46 | Table 84 |
| 5 | E5b/E1B DVS | 71–72 | 1+1 | No | status | — | Table 46 | §5.1.10 |
| 5 | GST week | 73–84 | 12 | No | 1 | week | Table 46 | Table 69 |
| 5 | GST TOW | 85–104 | 20 | No | 1 | s | Table 46 | Table 69 |
| 6 | A0 | 6–37 | 32 | Yes | 2^-30 | s | Table 47 | Table 75 |
| 6 | A1 | 38–61 | 24 | Yes | 2^-50 | s/s | Table 47 | Table 75 |
| 6 | Delta-tLS | 62–69 | 8 | Yes | 1 | s | Table 47 | Table 75 |
| 6 | t0t | 70–77 | 8 | No | 3600 | s | Table 47 | Table 75 |
| 6 | WN0t | 78–85 | 8 | No | 1 | week modulo 256 | Table 47 | Table 75 |
| 6 | WNLSF | 86–93 | 8 | No | 1 | week modulo 256 | Table 47 | Table 75 |
| 6 | DN | 94–96 | 3 | No | 1 | day | Table 47 | Table 75 |
| 6 | Delta-tLSF | 97–104 | 8 | Yes | 1 | s | Table 47 | Table 75 |
| 6 | TOW | 105–124 | 20 | No | 1 | s | Table 47 | Table 69 |
## Implemented support boundary
Word types 1–6 are parsed into typed dataclasses. They provide the complete
four-word ephemeris, satellite clock polynomial, BGD, E1B health/DVS, GST,
ionosphere coefficients and GST–UTC parameters required by the pre-PVT gate.
Almanac words and OSNMA authentication are intentionally outside this milestone.
Unsupported word types remain preserved as CRC-valid raw page evidence and do
not update the active navigation database.