gnss-js 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-R33A2VA7.js → chunk-2IM5VXNI.js} +193 -12
- package/dist/{chunk-YPOVPXNK.js → chunk-CG7SF45F.js} +75 -0
- package/dist/{chunk-6CX6EXRK.js → chunk-FEGLXNWA.js} +97 -23
- package/dist/{chunk-4LVD4DYL.js → chunk-IQ5OIMQD.js} +2 -0
- package/dist/chunk-Y5IWUPJQ.js +206 -0
- package/dist/cnav-CRns0ECn.d.cts +96 -0
- package/dist/cnav-CRns0ECn.d.ts +96 -0
- package/dist/index.cjs +577 -56
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +13 -4
- package/dist/novatel.cjs +192 -11
- package/dist/novatel.d.cts +36 -13
- package/dist/novatel.d.ts +36 -13
- package/dist/novatel.js +2 -2
- package/dist/sbf.cjs +288 -2
- package/dist/sbf.d.cts +82 -1
- package/dist/sbf.d.ts +82 -1
- package/dist/sbf.js +7 -1
- package/dist/ubx.cjs +291 -24
- package/dist/ubx.d.cts +73 -2
- package/dist/ubx.d.ts +73 -2
- package/dist/ubx.js +7 -2
- package/package.json +1 -1
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GPS_PI,
|
|
3
|
+
getBitS,
|
|
4
|
+
getBitU
|
|
5
|
+
} from "./chunk-IQ5OIMQD.js";
|
|
6
|
+
|
|
7
|
+
// src/navbits/cnav.ts
|
|
8
|
+
var GPS_EPOCH_MS = Date.UTC(1980, 0, 6);
|
|
9
|
+
var SEC_PER_WEEK = 7 * 86400;
|
|
10
|
+
var HALF_WEEK = 302400;
|
|
11
|
+
var CNAV_PREAMBLE = 139;
|
|
12
|
+
var CNAV_A_REF = 26559710;
|
|
13
|
+
var CNAV_OMEGA_DOT_REF = -26e-10;
|
|
14
|
+
function crc24q(buff, bitLen) {
|
|
15
|
+
let crc = 0;
|
|
16
|
+
for (let i = 0; i < bitLen; i++) {
|
|
17
|
+
crc ^= (buff[i >> 3] >> 7 - (i & 7) & 1) << 23;
|
|
18
|
+
const msb = crc & 8388608;
|
|
19
|
+
crc = crc << 1 & 16777215;
|
|
20
|
+
if (msb) crc ^= 8801531;
|
|
21
|
+
}
|
|
22
|
+
return crc;
|
|
23
|
+
}
|
|
24
|
+
function cnavCrcOk(msg) {
|
|
25
|
+
if (msg.length < 38) return false;
|
|
26
|
+
return crc24q(msg, 276) === getBitU(msg, 276, 24);
|
|
27
|
+
}
|
|
28
|
+
function getBitU33(b, pos) {
|
|
29
|
+
return getBitU(b, pos, 1) * 2 ** 32 + getBitU(b, pos + 1, 32);
|
|
30
|
+
}
|
|
31
|
+
function getBitS33(b, pos) {
|
|
32
|
+
const u = getBitU33(b, pos);
|
|
33
|
+
return u < 2 ** 32 ? u : u - 2 ** 33;
|
|
34
|
+
}
|
|
35
|
+
function decodeType10(b, tow) {
|
|
36
|
+
return {
|
|
37
|
+
tow,
|
|
38
|
+
week: getBitU(b, 38, 13),
|
|
39
|
+
health: getBitU(b, 51, 3),
|
|
40
|
+
top: getBitU(b, 54, 11) * 300,
|
|
41
|
+
uraEd: getBitS(b, 65, 5),
|
|
42
|
+
toe: getBitU(b, 70, 11) * 300,
|
|
43
|
+
deltaA: getBitS(b, 81, 26) * 2 ** -9,
|
|
44
|
+
aDot: getBitS(b, 107, 25) * 2 ** -21,
|
|
45
|
+
deltaN0: getBitS(b, 132, 17) * 2 ** -44 * GPS_PI,
|
|
46
|
+
deltaN0Dot: getBitS(b, 149, 23) * 2 ** -57 * GPS_PI,
|
|
47
|
+
m0: getBitS33(b, 172) * 2 ** -32 * GPS_PI,
|
|
48
|
+
e: getBitU33(b, 205) * 2 ** -34,
|
|
49
|
+
omega: getBitS33(b, 238) * 2 ** -32 * GPS_PI,
|
|
50
|
+
integrityFlag: getBitU(b, 271, 1) === 1,
|
|
51
|
+
l2cPhasing: getBitU(b, 272, 1) === 1
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function decodeType11(b) {
|
|
55
|
+
return {
|
|
56
|
+
toe: getBitU(b, 38, 11) * 300,
|
|
57
|
+
omega0: getBitS33(b, 49) * 2 ** -32 * GPS_PI,
|
|
58
|
+
i0: getBitS33(b, 82) * 2 ** -32 * GPS_PI,
|
|
59
|
+
deltaOmegaDot: getBitS(b, 115, 17) * 2 ** -44 * GPS_PI,
|
|
60
|
+
i0Dot: getBitS(b, 132, 15) * 2 ** -44 * GPS_PI,
|
|
61
|
+
cis: getBitS(b, 147, 16) * 2 ** -30,
|
|
62
|
+
cic: getBitS(b, 163, 16) * 2 ** -30,
|
|
63
|
+
crs: getBitS(b, 179, 24) * 2 ** -8,
|
|
64
|
+
crc: getBitS(b, 203, 24) * 2 ** -8,
|
|
65
|
+
cus: getBitS(b, 227, 21) * 2 ** -30,
|
|
66
|
+
cuc: getBitS(b, 248, 21) * 2 ** -30
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
var isc = (b, pos) => {
|
|
70
|
+
const raw = getBitS(b, pos, 13);
|
|
71
|
+
return raw === -4096 ? null : raw * 2 ** -35;
|
|
72
|
+
};
|
|
73
|
+
function decodeClock(b, msgType) {
|
|
74
|
+
const clock = {
|
|
75
|
+
msgType,
|
|
76
|
+
top: getBitU(b, 38, 11) * 300,
|
|
77
|
+
uraNed0: getBitS(b, 49, 5),
|
|
78
|
+
uraNed1: getBitU(b, 54, 3),
|
|
79
|
+
uraNed2: getBitU(b, 57, 3),
|
|
80
|
+
toc: getBitU(b, 60, 11) * 300,
|
|
81
|
+
af0: getBitS(b, 71, 26) * 2 ** -35,
|
|
82
|
+
af1: getBitS(b, 97, 20) * 2 ** -48,
|
|
83
|
+
af2: getBitS(b, 117, 10) * 2 ** -60
|
|
84
|
+
};
|
|
85
|
+
if (msgType === 30) {
|
|
86
|
+
clock.tgd = isc(b, 127);
|
|
87
|
+
clock.iscL1ca = isc(b, 140);
|
|
88
|
+
clock.iscL2c = isc(b, 153);
|
|
89
|
+
clock.iscL5i5 = isc(b, 166);
|
|
90
|
+
clock.iscL5q5 = isc(b, 179);
|
|
91
|
+
clock.ionoAlpha = [
|
|
92
|
+
getBitS(b, 192, 8) * 2 ** -30,
|
|
93
|
+
getBitS(b, 200, 8) * 2 ** -27,
|
|
94
|
+
getBitS(b, 208, 8) * 2 ** -24,
|
|
95
|
+
getBitS(b, 216, 8) * 2 ** -24
|
|
96
|
+
];
|
|
97
|
+
clock.ionoBeta = [
|
|
98
|
+
getBitS(b, 224, 8) * 2 ** 11,
|
|
99
|
+
getBitS(b, 232, 8) * 2 ** 14,
|
|
100
|
+
getBitS(b, 240, 8) * 2 ** 16,
|
|
101
|
+
getBitS(b, 248, 8) * 2 ** 16
|
|
102
|
+
];
|
|
103
|
+
clock.wnOp = getBitU(b, 256, 8);
|
|
104
|
+
}
|
|
105
|
+
return clock;
|
|
106
|
+
}
|
|
107
|
+
function resolveWeek(week, towSec, sec) {
|
|
108
|
+
if (sec < towSec - HALF_WEEK) return week + 1;
|
|
109
|
+
if (sec > towSec + HALF_WEEK) return week - 1;
|
|
110
|
+
return week;
|
|
111
|
+
}
|
|
112
|
+
function gpsDate(week, sec) {
|
|
113
|
+
return new Date(GPS_EPOCH_MS + (week * SEC_PER_WEEK + sec) * 1e3);
|
|
114
|
+
}
|
|
115
|
+
var CnavAssembler = class {
|
|
116
|
+
sats = /* @__PURE__ */ new Map();
|
|
117
|
+
/**
|
|
118
|
+
* Push one 300-bit CNAV message (38+ bytes, bit 0 = first bit of
|
|
119
|
+
* the preamble). Returns the newly completed ephemeris, or null.
|
|
120
|
+
* Messages that are not MT10/MT11/MT30-37, or whose preamble/PRN
|
|
121
|
+
* are out of range, are ignored.
|
|
122
|
+
*/
|
|
123
|
+
push(msg) {
|
|
124
|
+
if (msg.length < 38 || getBitU(msg, 0, 8) !== CNAV_PREAMBLE) return null;
|
|
125
|
+
const prn = getBitU(msg, 8, 6);
|
|
126
|
+
if (prn < 1 || prn > 32) return null;
|
|
127
|
+
const type = getBitU(msg, 14, 6);
|
|
128
|
+
const tow = getBitU(msg, 20, 17) * 6;
|
|
129
|
+
let sat = this.sats.get(prn);
|
|
130
|
+
if (!sat) {
|
|
131
|
+
sat = {};
|
|
132
|
+
this.sats.set(prn, sat);
|
|
133
|
+
}
|
|
134
|
+
if (type === 10) sat.t10 = decodeType10(msg, tow);
|
|
135
|
+
else if (type === 11) sat.t11 = decodeType11(msg);
|
|
136
|
+
else if (type >= 30 && type <= 37) {
|
|
137
|
+
sat.clock = decodeClock(msg, type);
|
|
138
|
+
if (type === 30) sat.extras = sat.clock;
|
|
139
|
+
} else return null;
|
|
140
|
+
return this.tryEmit(prn, sat);
|
|
141
|
+
}
|
|
142
|
+
tryEmit(prn, sat) {
|
|
143
|
+
const { t10, t11, clock, extras } = sat;
|
|
144
|
+
if (!t10 || !t11 || !clock) return null;
|
|
145
|
+
if (t10.toe !== t11.toe || clock.toc !== t10.toe) return null;
|
|
146
|
+
const key = `${t10.week}:${t10.toe}:${clock.af0}:${clock.af1}`;
|
|
147
|
+
if (key === sat.lastKey) return null;
|
|
148
|
+
sat.lastKey = key;
|
|
149
|
+
const weekToe = resolveWeek(t10.week, t10.tow, t10.toe);
|
|
150
|
+
const a = CNAV_A_REF + t10.deltaA;
|
|
151
|
+
return {
|
|
152
|
+
system: "G",
|
|
153
|
+
prn: `G${String(prn).padStart(2, "0")}`,
|
|
154
|
+
week: t10.week,
|
|
155
|
+
health: t10.health,
|
|
156
|
+
uraEd: t10.uraEd,
|
|
157
|
+
uraNed0: clock.uraNed0,
|
|
158
|
+
uraNed1: clock.uraNed1,
|
|
159
|
+
uraNed2: clock.uraNed2,
|
|
160
|
+
top: t10.top,
|
|
161
|
+
toe: t10.toe,
|
|
162
|
+
toeDate: gpsDate(weekToe, t10.toe),
|
|
163
|
+
a,
|
|
164
|
+
deltaA: t10.deltaA,
|
|
165
|
+
aDot: t10.aDot,
|
|
166
|
+
deltaN0: t10.deltaN0,
|
|
167
|
+
deltaN0Dot: t10.deltaN0Dot,
|
|
168
|
+
m0: t10.m0,
|
|
169
|
+
e: t10.e,
|
|
170
|
+
omega: t10.omega,
|
|
171
|
+
omega0: t11.omega0,
|
|
172
|
+
i0: t11.i0,
|
|
173
|
+
omegaDot: CNAV_OMEGA_DOT_REF * GPS_PI + t11.deltaOmegaDot,
|
|
174
|
+
deltaOmegaDot: t11.deltaOmegaDot,
|
|
175
|
+
i0Dot: t11.i0Dot,
|
|
176
|
+
cis: t11.cis,
|
|
177
|
+
cic: t11.cic,
|
|
178
|
+
crs: t11.crs,
|
|
179
|
+
crc: t11.crc,
|
|
180
|
+
cus: t11.cus,
|
|
181
|
+
cuc: t11.cuc,
|
|
182
|
+
toc: clock.toc,
|
|
183
|
+
tocDate: gpsDate(weekToe, clock.toc),
|
|
184
|
+
af0: clock.af0,
|
|
185
|
+
af1: clock.af1,
|
|
186
|
+
af2: clock.af2,
|
|
187
|
+
clockMsgType: clock.msgType,
|
|
188
|
+
tgd: extras?.tgd ?? null,
|
|
189
|
+
iscL1ca: extras?.iscL1ca ?? null,
|
|
190
|
+
iscL2c: extras?.iscL2c ?? null,
|
|
191
|
+
iscL5i5: extras?.iscL5i5 ?? null,
|
|
192
|
+
iscL5q5: extras?.iscL5q5 ?? null,
|
|
193
|
+
...extras?.ionoAlpha && { ionoAlpha: extras.ionoAlpha },
|
|
194
|
+
...extras?.ionoBeta && { ionoBeta: extras.ionoBeta },
|
|
195
|
+
...extras?.wnOp !== void 0 && { wnOp: extras.wnOp },
|
|
196
|
+
integrityFlag: t10.integrityFlag,
|
|
197
|
+
l2cPhasing: t10.l2cPhasing,
|
|
198
|
+
tow: t10.tow
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export {
|
|
204
|
+
cnavCrcOk,
|
|
205
|
+
CnavAssembler
|
|
206
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A complete GPS CNAV ephemeris + clock data set assembled from one
|
|
3
|
+
* MT10, one MT11 and one MT3x message (IS-GPS-200 §30.3.3.1: the three
|
|
4
|
+
* message types together carry the CEI data set; toe/toc equality
|
|
5
|
+
* marks messages of the same set).
|
|
6
|
+
*
|
|
7
|
+
* Units are SI/radians: semicircle fields are scaled by GPS_PI, the
|
|
8
|
+
* MT10 ΔA reference (26 559 710 m) and the MT11 Ω̇ reference
|
|
9
|
+
* (−2.6×10⁻⁹ semicircles/s) are folded into `a` and `omegaDot`, with
|
|
10
|
+
* the raw deltas also kept. Epoch Dates are GPS-scale (repo
|
|
11
|
+
* convention: GPS seconds mapped onto the JS epoch without leap
|
|
12
|
+
* seconds), and `toe`/`toc` are seconds of `week`/`weekToc`.
|
|
13
|
+
*/
|
|
14
|
+
interface CnavEphemeris {
|
|
15
|
+
system: 'G';
|
|
16
|
+
/** RINEX PRN, e.g. "G07". */
|
|
17
|
+
prn: string;
|
|
18
|
+
/** Full GPS week from the MT10 WN field (13 bits, no rollover). */
|
|
19
|
+
week: number;
|
|
20
|
+
/** L1/L2/L5 signal-health bits from MT10 (bit 2 = L1, 0 = L5). */
|
|
21
|
+
health: number;
|
|
22
|
+
/** Elevation-dependent (ED) URA index, signed (MT10). */
|
|
23
|
+
uraEd: number;
|
|
24
|
+
/** Non-elevation-dependent URA indices: bias/drift/drift-rate (MT3x). */
|
|
25
|
+
uraNed0: number;
|
|
26
|
+
uraNed1: number;
|
|
27
|
+
uraNed2: number;
|
|
28
|
+
/** Data-predict time of week in s (MT10). */
|
|
29
|
+
top: number;
|
|
30
|
+
/** Time of ephemeris in seconds of the GPS week of `toeDate`. */
|
|
31
|
+
toe: number;
|
|
32
|
+
/** Time of ephemeris as a GPS-scale Date. */
|
|
33
|
+
toeDate: Date;
|
|
34
|
+
/** Semi-major axis at toe in m (reference + ΔA). */
|
|
35
|
+
a: number;
|
|
36
|
+
/** MT10 ΔA: semi-major axis difference from 26 559 710 m, in m. */
|
|
37
|
+
deltaA: number;
|
|
38
|
+
/** Rate of semi-major axis in m/s. */
|
|
39
|
+
aDot: number;
|
|
40
|
+
/** Mean motion difference from computed value in rad/s. */
|
|
41
|
+
deltaN0: number;
|
|
42
|
+
/** Rate of the mean motion difference in rad/s². */
|
|
43
|
+
deltaN0Dot: number;
|
|
44
|
+
/** Mean anomaly at reference time in rad. */
|
|
45
|
+
m0: number;
|
|
46
|
+
/** Eccentricity (dimensionless). */
|
|
47
|
+
e: number;
|
|
48
|
+
/** Argument of perigee in rad. */
|
|
49
|
+
omega: number;
|
|
50
|
+
/** Longitude of ascending node at the weekly epoch in rad. */
|
|
51
|
+
omega0: number;
|
|
52
|
+
/** Inclination at reference time in rad. */
|
|
53
|
+
i0: number;
|
|
54
|
+
/** Rate of right ascension in rad/s (reference Ω̇ + ΔΩ̇). */
|
|
55
|
+
omegaDot: number;
|
|
56
|
+
/** MT11 ΔΩ̇: delta from −2.6×10⁻⁹ semicircles/s, in rad/s. */
|
|
57
|
+
deltaOmegaDot: number;
|
|
58
|
+
/** Rate of inclination in rad/s. */
|
|
59
|
+
i0Dot: number;
|
|
60
|
+
/** Harmonic correction terms (rad / m). */
|
|
61
|
+
cis: number;
|
|
62
|
+
cic: number;
|
|
63
|
+
crs: number;
|
|
64
|
+
crc: number;
|
|
65
|
+
cus: number;
|
|
66
|
+
cuc: number;
|
|
67
|
+
/** Clock epoch in seconds of the GPS week of `tocDate`. */
|
|
68
|
+
toc: number;
|
|
69
|
+
/** Clock epoch as a GPS-scale Date. */
|
|
70
|
+
tocDate: Date;
|
|
71
|
+
/** SV clock bias (s), drift (s/s), drift rate (s/s²). */
|
|
72
|
+
af0: number;
|
|
73
|
+
af1: number;
|
|
74
|
+
af2: number;
|
|
75
|
+
/** Message type (30-37) that supplied the clock block. */
|
|
76
|
+
clockMsgType: number;
|
|
77
|
+
/** L1 C/A group delay in s (MT30), null when unavailable/not seen. */
|
|
78
|
+
tgd: number | null;
|
|
79
|
+
/** Inter-signal corrections in s (MT30), null when unavailable. */
|
|
80
|
+
iscL1ca: number | null;
|
|
81
|
+
iscL2c: number | null;
|
|
82
|
+
iscL5i5: number | null;
|
|
83
|
+
iscL5q5: number | null;
|
|
84
|
+
/** Klobuchar iono coefficients from MT30, when one was seen. */
|
|
85
|
+
ionoAlpha?: number[];
|
|
86
|
+
ionoBeta?: number[];
|
|
87
|
+
/** Data-predict week from MT30 (WN_OP, 8 bits, unresolved). */
|
|
88
|
+
wnOp?: number;
|
|
89
|
+
/** Integrity-status and L2C-phasing flags from MT10. */
|
|
90
|
+
integrityFlag: boolean;
|
|
91
|
+
l2cPhasing: boolean;
|
|
92
|
+
/** Transmit time of the MT10 message (s of week, start of next msg). */
|
|
93
|
+
tow: number;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type { CnavEphemeris as C };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A complete GPS CNAV ephemeris + clock data set assembled from one
|
|
3
|
+
* MT10, one MT11 and one MT3x message (IS-GPS-200 §30.3.3.1: the three
|
|
4
|
+
* message types together carry the CEI data set; toe/toc equality
|
|
5
|
+
* marks messages of the same set).
|
|
6
|
+
*
|
|
7
|
+
* Units are SI/radians: semicircle fields are scaled by GPS_PI, the
|
|
8
|
+
* MT10 ΔA reference (26 559 710 m) and the MT11 Ω̇ reference
|
|
9
|
+
* (−2.6×10⁻⁹ semicircles/s) are folded into `a` and `omegaDot`, with
|
|
10
|
+
* the raw deltas also kept. Epoch Dates are GPS-scale (repo
|
|
11
|
+
* convention: GPS seconds mapped onto the JS epoch without leap
|
|
12
|
+
* seconds), and `toe`/`toc` are seconds of `week`/`weekToc`.
|
|
13
|
+
*/
|
|
14
|
+
interface CnavEphemeris {
|
|
15
|
+
system: 'G';
|
|
16
|
+
/** RINEX PRN, e.g. "G07". */
|
|
17
|
+
prn: string;
|
|
18
|
+
/** Full GPS week from the MT10 WN field (13 bits, no rollover). */
|
|
19
|
+
week: number;
|
|
20
|
+
/** L1/L2/L5 signal-health bits from MT10 (bit 2 = L1, 0 = L5). */
|
|
21
|
+
health: number;
|
|
22
|
+
/** Elevation-dependent (ED) URA index, signed (MT10). */
|
|
23
|
+
uraEd: number;
|
|
24
|
+
/** Non-elevation-dependent URA indices: bias/drift/drift-rate (MT3x). */
|
|
25
|
+
uraNed0: number;
|
|
26
|
+
uraNed1: number;
|
|
27
|
+
uraNed2: number;
|
|
28
|
+
/** Data-predict time of week in s (MT10). */
|
|
29
|
+
top: number;
|
|
30
|
+
/** Time of ephemeris in seconds of the GPS week of `toeDate`. */
|
|
31
|
+
toe: number;
|
|
32
|
+
/** Time of ephemeris as a GPS-scale Date. */
|
|
33
|
+
toeDate: Date;
|
|
34
|
+
/** Semi-major axis at toe in m (reference + ΔA). */
|
|
35
|
+
a: number;
|
|
36
|
+
/** MT10 ΔA: semi-major axis difference from 26 559 710 m, in m. */
|
|
37
|
+
deltaA: number;
|
|
38
|
+
/** Rate of semi-major axis in m/s. */
|
|
39
|
+
aDot: number;
|
|
40
|
+
/** Mean motion difference from computed value in rad/s. */
|
|
41
|
+
deltaN0: number;
|
|
42
|
+
/** Rate of the mean motion difference in rad/s². */
|
|
43
|
+
deltaN0Dot: number;
|
|
44
|
+
/** Mean anomaly at reference time in rad. */
|
|
45
|
+
m0: number;
|
|
46
|
+
/** Eccentricity (dimensionless). */
|
|
47
|
+
e: number;
|
|
48
|
+
/** Argument of perigee in rad. */
|
|
49
|
+
omega: number;
|
|
50
|
+
/** Longitude of ascending node at the weekly epoch in rad. */
|
|
51
|
+
omega0: number;
|
|
52
|
+
/** Inclination at reference time in rad. */
|
|
53
|
+
i0: number;
|
|
54
|
+
/** Rate of right ascension in rad/s (reference Ω̇ + ΔΩ̇). */
|
|
55
|
+
omegaDot: number;
|
|
56
|
+
/** MT11 ΔΩ̇: delta from −2.6×10⁻⁹ semicircles/s, in rad/s. */
|
|
57
|
+
deltaOmegaDot: number;
|
|
58
|
+
/** Rate of inclination in rad/s. */
|
|
59
|
+
i0Dot: number;
|
|
60
|
+
/** Harmonic correction terms (rad / m). */
|
|
61
|
+
cis: number;
|
|
62
|
+
cic: number;
|
|
63
|
+
crs: number;
|
|
64
|
+
crc: number;
|
|
65
|
+
cus: number;
|
|
66
|
+
cuc: number;
|
|
67
|
+
/** Clock epoch in seconds of the GPS week of `tocDate`. */
|
|
68
|
+
toc: number;
|
|
69
|
+
/** Clock epoch as a GPS-scale Date. */
|
|
70
|
+
tocDate: Date;
|
|
71
|
+
/** SV clock bias (s), drift (s/s), drift rate (s/s²). */
|
|
72
|
+
af0: number;
|
|
73
|
+
af1: number;
|
|
74
|
+
af2: number;
|
|
75
|
+
/** Message type (30-37) that supplied the clock block. */
|
|
76
|
+
clockMsgType: number;
|
|
77
|
+
/** L1 C/A group delay in s (MT30), null when unavailable/not seen. */
|
|
78
|
+
tgd: number | null;
|
|
79
|
+
/** Inter-signal corrections in s (MT30), null when unavailable. */
|
|
80
|
+
iscL1ca: number | null;
|
|
81
|
+
iscL2c: number | null;
|
|
82
|
+
iscL5i5: number | null;
|
|
83
|
+
iscL5q5: number | null;
|
|
84
|
+
/** Klobuchar iono coefficients from MT30, when one was seen. */
|
|
85
|
+
ionoAlpha?: number[];
|
|
86
|
+
ionoBeta?: number[];
|
|
87
|
+
/** Data-predict week from MT30 (WN_OP, 8 bits, unresolved). */
|
|
88
|
+
wnOp?: number;
|
|
89
|
+
/** Integrity-status and L2C-phasing flags from MT10. */
|
|
90
|
+
integrityFlag: boolean;
|
|
91
|
+
l2cPhasing: boolean;
|
|
92
|
+
/** Transmit time of the MT10 message (s of week, start of next msg). */
|
|
93
|
+
tow: number;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type { CnavEphemeris as C };
|