# 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.