gnss-js 1.55.0 → 1.57.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-U32IU7RO.js → chunk-BU6YC6VK.js} +30 -0
- package/dist/{chunk-ZPNMIUNZ.js → chunk-UHLUAU6H.js} +131 -9
- package/dist/index.cjs +169 -9
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +18 -2
- package/dist/positioning.cjs +30 -0
- package/dist/positioning.d.cts +20 -0
- package/dist/positioning.d.ts +20 -0
- package/dist/positioning.js +1 -1
- package/dist/sbf.cjs +139 -9
- package/dist/sbf.d.cts +112 -28
- package/dist/sbf.d.ts +112 -28
- package/dist/sbf.js +17 -1
- package/package.json +1 -1
package/dist/sbf.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { S as SbfAlmanac, a as SbfAlmanacResult, b as SbfGlonassAlmanac, c as SbfKeplerAlmanac, d as SbfNavResult, p as parseSbfAlmanac, e as parseSbfNav } from './nav-CN8rxL4h.js';
|
|
2
2
|
import { R as ReceiverPvt } from './receiver-pvt-CVFvi4kT.js';
|
|
3
|
-
import { K as KeplerEphemeris, C as CnavEphemeris,
|
|
3
|
+
import { K as KeplerEphemeris, C as CnavEphemeris, G as GlonassEphemeris, E as Ephemeris } from './nav-DImXUdbp.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Septentrio SBF framing shared by the measurement and navigation
|
|
@@ -213,6 +213,91 @@ interface SbfCnavResult {
|
|
|
213
213
|
*/
|
|
214
214
|
declare function parseSbfCnav(data: Uint8Array): SbfCnavResult;
|
|
215
215
|
|
|
216
|
+
/** Callback fed every CRC-valid SBAS message (any type), as MSB-first bits. */
|
|
217
|
+
type SbasMessageCb = (msg: Uint8Array, prn: number, week: number, tow: number) => void;
|
|
218
|
+
/** Callback fed every CRC-valid native-DFMC (L5) message, with its type. */
|
|
219
|
+
type DfmcMessageCb = (msg: Uint8Array, prn: number, week: number, tow: number, type: number) => void;
|
|
220
|
+
/**
|
|
221
|
+
* Process one GEORawL1 block at frame offset `b`: extract the 250-bit
|
|
222
|
+
* SBAS L1 message, CRC-24Q gate it, and decode a GEO ephemeris if it is
|
|
223
|
+
* message type 9. Returns the ephemeris, `{ badCrc: true }` on a failed
|
|
224
|
+
* CRC, or `{}` for any other (non–type-9) message.
|
|
225
|
+
*/
|
|
226
|
+
declare function feedGeoBlock(view: DataView, b: number, onSbasMessage?: SbasMessageCb): {
|
|
227
|
+
eph?: GlonassEphemeris;
|
|
228
|
+
badCrc?: boolean;
|
|
229
|
+
};
|
|
230
|
+
/** Result of routing one GEORawL5 (4021) block. */
|
|
231
|
+
interface GeoL5Result {
|
|
232
|
+
eph?: GlonassEphemeris;
|
|
233
|
+
badCrc?: boolean;
|
|
234
|
+
/** 'l1' = DO-229 content relayed on L5 (fed to `onSbasMessage`, decodable by
|
|
235
|
+
* the L1 SbasProcessor); 'l5' = a native DFMC message (header only). */
|
|
236
|
+
kind?: 'l1' | 'l5';
|
|
237
|
+
/** Native-DFMC message type (Table B-98), when `kind === 'l5'`. */
|
|
238
|
+
dfmcType?: number;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Process one GEORawL5 block at frame offset `b`. The L5 signal carries a mix:
|
|
242
|
+
* GEOs relaying DO-229 (L1-format) content — routed to `onSbasMessage` and
|
|
243
|
+
* decoded for a GEO ephemeris exactly like {@link feedGeoBlock} — and GEOs
|
|
244
|
+
* broadcasting native DFMC frames, which are CRC-gated and surfaced via
|
|
245
|
+
* `onDfmcMessage` with their Table B-98 type but not field-decoded (see
|
|
246
|
+
* {@link ../navbits/sbas-l5}). Classification is by preamble.
|
|
247
|
+
*/
|
|
248
|
+
declare function feedGeoL5Block(view: DataView, b: number, onSbasMessage?: SbasMessageCb, onDfmcMessage?: DfmcMessageCb): GeoL5Result;
|
|
249
|
+
interface SbfGeoNavResult {
|
|
250
|
+
/** SBAS GEO ephemerides in stream order, unchanged repeats suppressed. */
|
|
251
|
+
ephemerides: GlonassEphemeris[];
|
|
252
|
+
/** GEORawL1 messages whose CRC-24Q check failed (dropped). */
|
|
253
|
+
badCrc: number;
|
|
254
|
+
/** Total GEORawL1 blocks seen (with valid SBF framing). */
|
|
255
|
+
messages: number;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Decode every GEORawL1 block in an SBF byte stream into SBAS GEO
|
|
259
|
+
* ephemerides (message type 9), de-duping unchanged rebroadcasts by
|
|
260
|
+
* (PRN, time-of-clock). The one-pass {@link decodeSbfNavigation} routes
|
|
261
|
+
* the same blocks through {@link feedGeoBlock}; this standalone parser
|
|
262
|
+
* mirrors the per-constellation `parseSbf*` helpers.
|
|
263
|
+
*/
|
|
264
|
+
declare function parseSbfGeoNav(data: Uint8Array, opts?: {
|
|
265
|
+
onSbasMessage?: (msg: Uint8Array, prn: number, week: number, tow: number) => void;
|
|
266
|
+
}): SbfGeoNavResult;
|
|
267
|
+
/** Census of the SBAS L5 (DFMC) frames in a stream. Correction content is not
|
|
268
|
+
* field-decoded (see {@link ../navbits/sbas-l5}). */
|
|
269
|
+
interface DfmcCensus {
|
|
270
|
+
/** Native-DFMC frame count by Table B-98 message type. */
|
|
271
|
+
byType: Record<number, number>;
|
|
272
|
+
/** GEO PRNs (e.g. 'S21') broadcasting native DFMC. */
|
|
273
|
+
prns: string[];
|
|
274
|
+
/** Total CRC-valid native-DFMC frames. */
|
|
275
|
+
messages: number;
|
|
276
|
+
}
|
|
277
|
+
interface SbfGeoL5Result {
|
|
278
|
+
/** GEO ephemerides from DO-229 (L1-format) content relayed on L5 (MT9). */
|
|
279
|
+
ephemerides: GlonassEphemeris[];
|
|
280
|
+
/** CRC-valid L5-signal frames carrying DO-229 (L1-format) content. */
|
|
281
|
+
legacyMessages: number;
|
|
282
|
+
/** Native-DFMC frame census. */
|
|
283
|
+
dfmc: DfmcCensus;
|
|
284
|
+
/** GEORawL5 frames whose CRC-24Q check failed (dropped). */
|
|
285
|
+
badCrc: number;
|
|
286
|
+
/** Total GEORawL5 blocks seen (with valid SBF framing). */
|
|
287
|
+
messages: number;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Decode every GEORawL5 (4021) block in an SBF byte stream. DO-229 (L1-format)
|
|
291
|
+
* content relayed on L5 is fed to `onSbasMessage` (usable by the L1
|
|
292
|
+
* SbasProcessor) and decoded for GEO ephemerides; native DFMC frames are
|
|
293
|
+
* CRC-gated and counted by message type. The one-pass
|
|
294
|
+
* {@link ../sbf/navigation.decodeSbfNavigation} performs the same routing.
|
|
295
|
+
*/
|
|
296
|
+
declare function parseSbfGeoL5(data: Uint8Array, opts?: {
|
|
297
|
+
onSbasMessage?: SbasMessageCb;
|
|
298
|
+
onDfmcMessage?: DfmcMessageCb;
|
|
299
|
+
}): SbfGeoL5Result;
|
|
300
|
+
|
|
216
301
|
/**
|
|
217
302
|
* One-pass SBF navigation decoder.
|
|
218
303
|
*
|
|
@@ -251,6 +336,8 @@ interface SbfNavCounts {
|
|
|
251
336
|
bdsRaw: number;
|
|
252
337
|
/** Raw SBAS L1 GEO message blocks (GEORawL1). */
|
|
253
338
|
sbasRaw: number;
|
|
339
|
+
/** Raw SBAS L5 GEO message blocks (GEORawL5) — DO-229-on-L5 + native DFMC. */
|
|
340
|
+
sbasL5Raw: number;
|
|
254
341
|
/** Frames dropped by a CRC/parity check across all raw decoders. */
|
|
255
342
|
badFrames: number;
|
|
256
343
|
}
|
|
@@ -270,6 +357,9 @@ interface SbfNavigation {
|
|
|
270
357
|
ionoCorrections: Record<string, number[]>;
|
|
271
358
|
/** GPS-UTC ΔtLS from the last GPSUtc block, if any. */
|
|
272
359
|
leapSeconds: number | null;
|
|
360
|
+
/** SBAS L5 (DFMC) native-frame census — message-type counts + GEO PRNs. The
|
|
361
|
+
* correction content is not field-decoded (see navbits/sbas-l5). */
|
|
362
|
+
dfmc: DfmcCensus;
|
|
273
363
|
counts: SbfNavCounts;
|
|
274
364
|
}
|
|
275
365
|
/**
|
|
@@ -282,6 +372,9 @@ declare function decodeSbfNavigation(data: Uint8Array, opts?: {
|
|
|
282
372
|
/** Called for every CRC-valid SBAS L1 message (all types) — feed an
|
|
283
373
|
* {@link ../positioning/sbas.SbasProcessor} to build SBAS corrections. */
|
|
284
374
|
onSbasMessage?: (msg: Uint8Array, prn: number, week: number, tow: number) => void;
|
|
375
|
+
/** Called for every CRC-valid native-DFMC (L5) message, with its Table
|
|
376
|
+
* B-98 type — for inspection; the payload is not field-decoded. */
|
|
377
|
+
onDfmcMessage?: DfmcMessageCb;
|
|
285
378
|
}): SbfNavigation;
|
|
286
379
|
|
|
287
380
|
/**
|
|
@@ -383,34 +476,25 @@ interface SbfGloNavResult {
|
|
|
383
476
|
}
|
|
384
477
|
declare function parseSbfGloNav(data: Uint8Array): SbfGloNavResult;
|
|
385
478
|
|
|
479
|
+
/** DFMC L5 preamble: 24-bit unique word 0x5C693A, distributed 4 bits over six
|
|
480
|
+
* successive blocks (Annex 10 §3.5.10.2). */
|
|
481
|
+
declare const SBAS_L5_PREAMBLE_UW = 6056250;
|
|
386
482
|
/**
|
|
387
|
-
*
|
|
388
|
-
*
|
|
389
|
-
*
|
|
390
|
-
*
|
|
483
|
+
* Classify a CRC-valid GEO message by its preamble. The L5 signal carries a
|
|
484
|
+
* mix: some GEOs relay DO-229 (L1-format) content on L5 — decodable by the
|
|
485
|
+
* existing L1 {@link ../positioning/sbas.SbasProcessor} — while others carry
|
|
486
|
+
* native DFMC frames. The 8-bit L1 preamble is checked first (definitive);
|
|
487
|
+
* anything else is treated as DFMC.
|
|
391
488
|
*/
|
|
392
|
-
declare function
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
/** Total GEORawL1 blocks seen (with valid SBF framing). */
|
|
402
|
-
messages: number;
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Decode every GEORawL1 block in an SBF byte stream into SBAS GEO
|
|
406
|
-
* ephemerides (message type 9), de-duping unchanged rebroadcasts by
|
|
407
|
-
* (PRN, time-of-clock). The one-pass {@link decodeSbfNavigation} routes
|
|
408
|
-
* the same blocks through {@link feedGeoBlock}; this standalone parser
|
|
409
|
-
* mirrors the per-constellation `parseSbf*` helpers.
|
|
410
|
-
*/
|
|
411
|
-
declare function parseSbfGeoNav(data: Uint8Array, opts?: {
|
|
412
|
-
onSbasMessage?: (msg: Uint8Array, prn: number, week: number, tow: number) => void;
|
|
413
|
-
}): SbfGeoNavResult;
|
|
489
|
+
declare function isSbasL1Preamble(msg: Uint8Array): boolean;
|
|
490
|
+
/** L5 (DFMC) message type — 6 bits after the 4-bit preamble (Table B-98). */
|
|
491
|
+
declare function sbasL5MessageType(msg: Uint8Array): number;
|
|
492
|
+
/** Table B-98 — L5 (DFMC) broadcast message types. */
|
|
493
|
+
declare const SBAS_L5_MT_NAMES: Readonly<Record<number, string>>;
|
|
494
|
+
/** Human-readable name for an L5 (DFMC) message type. */
|
|
495
|
+
declare function sbasL5MessageName(type: number): string;
|
|
496
|
+
/** True for L5 types that carry actual corrections (vs test/null/spare). */
|
|
497
|
+
declare function isSbasL5Correction(type: number): boolean;
|
|
414
498
|
|
|
415
499
|
/** Constellations HAS corrects: GPS (GNSS ID 0), Galileo (GNSS ID 2). */
|
|
416
500
|
type HasSystem = 'G' | 'E';
|
|
@@ -647,4 +731,4 @@ interface SbfParseResult {
|
|
|
647
731
|
*/
|
|
648
732
|
declare function parseSbfMeas(data: Uint8Array): SbfParseResult;
|
|
649
733
|
|
|
650
|
-
export { CnavEphemeris, type HasMessage, ReceiverPvt, type SbfBdsNavResult, type SbfCnavEphemeris, type SbfCnavResult, type SbfGalEphemeris, type SbfGalNavResult, type SbfGeoNavResult, type SbfGloNavResult, type SbfGpsNavResult, type SbfHasMessage, type SbfHasResult, type SbfIonoUtcResult, type SbfMeasEpoch, type SbfMeasurement, type SbfNavCounts, type SbfNavigation, type SbfParseResult, type SbfPvt, type SbfPvtResult, type SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, crc16 as sbfCrc16, scanSbfFrames };
|
|
734
|
+
export { CnavEphemeris, type DfmcCensus, type DfmcMessageCb, type GeoL5Result, type HasMessage, ReceiverPvt, SBAS_L5_MT_NAMES, SBAS_L5_PREAMBLE_UW, type SbasMessageCb, type SbfBdsNavResult, type SbfCnavEphemeris, type SbfCnavResult, type SbfGalEphemeris, type SbfGalNavResult, type SbfGeoL5Result, type SbfGeoNavResult, type SbfGloNavResult, type SbfGpsNavResult, type SbfHasMessage, type SbfHasResult, type SbfIonoUtcResult, type SbfMeasEpoch, type SbfMeasurement, type SbfNavCounts, type SbfNavigation, type SbfParseResult, type SbfPvt, type SbfPvtResult, type SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, feedGeoL5Block, isSbasL1Preamble, isSbasL5Correction, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoL5, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, sbasL5MessageName, sbasL5MessageType, crc16 as sbfCrc16, scanSbfFrames };
|
package/dist/sbf.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
+
SBAS_L5_MT_NAMES,
|
|
3
|
+
SBAS_L5_PREAMBLE_UW,
|
|
2
4
|
crc16,
|
|
3
5
|
decodeSbfNavigation,
|
|
4
6
|
feedGeoBlock,
|
|
7
|
+
feedGeoL5Block,
|
|
8
|
+
isSbasL1Preamble,
|
|
9
|
+
isSbasL5Correction,
|
|
5
10
|
parseSbfAlmanac,
|
|
6
11
|
parseSbfBdsNav,
|
|
7
12
|
parseSbfCnav,
|
|
8
13
|
parseSbfGalNav,
|
|
14
|
+
parseSbfGeoL5,
|
|
9
15
|
parseSbfGeoNav,
|
|
10
16
|
parseSbfGloNav,
|
|
11
17
|
parseSbfGpsNav,
|
|
@@ -15,8 +21,10 @@ import {
|
|
|
15
21
|
parseSbfNav,
|
|
16
22
|
parseSbfPvt,
|
|
17
23
|
parseSbfReceiverSetup,
|
|
24
|
+
sbasL5MessageName,
|
|
25
|
+
sbasL5MessageType,
|
|
18
26
|
scanSbfFrames
|
|
19
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-UHLUAU6H.js";
|
|
20
28
|
import "./chunk-FA2UTLEQ.js";
|
|
21
29
|
import "./chunk-WQX354KD.js";
|
|
22
30
|
import "./chunk-37QNKGTC.js";
|
|
@@ -26,12 +34,18 @@ import "./chunk-V2D5KUKH.js";
|
|
|
26
34
|
import "./chunk-HVXYFUCB.js";
|
|
27
35
|
import "./chunk-LEEU5OIO.js";
|
|
28
36
|
export {
|
|
37
|
+
SBAS_L5_MT_NAMES,
|
|
38
|
+
SBAS_L5_PREAMBLE_UW,
|
|
29
39
|
decodeSbfNavigation,
|
|
30
40
|
feedGeoBlock,
|
|
41
|
+
feedGeoL5Block,
|
|
42
|
+
isSbasL1Preamble,
|
|
43
|
+
isSbasL5Correction,
|
|
31
44
|
parseSbfAlmanac,
|
|
32
45
|
parseSbfBdsNav,
|
|
33
46
|
parseSbfCnav,
|
|
34
47
|
parseSbfGalNav,
|
|
48
|
+
parseSbfGeoL5,
|
|
35
49
|
parseSbfGeoNav,
|
|
36
50
|
parseSbfGloNav,
|
|
37
51
|
parseSbfGpsNav,
|
|
@@ -41,6 +55,8 @@ export {
|
|
|
41
55
|
parseSbfNav,
|
|
42
56
|
parseSbfPvt,
|
|
43
57
|
parseSbfReceiverSetup,
|
|
58
|
+
sbasL5MessageName,
|
|
59
|
+
sbasL5MessageType,
|
|
44
60
|
crc16 as sbfCrc16,
|
|
45
61
|
scanSbfFrames
|
|
46
62
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gnss-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.0",
|
|
4
4
|
"description": "Comprehensive GNSS library for JavaScript — time scales, coordinates, RINEX parsing, RTCM3 decoding, orbit computation, and signal analysis",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|