gnss-js 1.56.0 → 1.58.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/sbf.d.cts 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-BYmYoh9A.cjs';
2
2
  import { R as ReceiverPvt } from './receiver-pvt-CVFvi4kT.cjs';
3
- import { K as KeplerEphemeris, C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris } from './nav-DImXUdbp.cjs';
3
+ import { K as KeplerEphemeris, C as CnavEphemeris, G as GlonassEphemeris, E as Ephemeris } from './nav-DImXUdbp.cjs';
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
- * Process one GEORawL1 block at frame offset `b`: extract the 250-bit
388
- * SBAS L1 message, CRC-24Q gate it, and decode a GEO ephemeris if it is
389
- * message type 9. Returns the ephemeris, `{ badCrc: true }` on a failed
390
- * CRC, or `{}` for any other (non–type-9) message.
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 feedGeoBlock(view: DataView, b: number, onSbasMessage?: (msg: Uint8Array, prn: number, week: number, tow: number) => void): {
393
- eph?: GlonassEphemeris;
394
- badCrc?: boolean;
395
- };
396
- interface SbfGeoNavResult {
397
- /** SBAS GEO ephemerides in stream order, unchanged repeats suppressed. */
398
- ephemerides: GlonassEphemeris[];
399
- /** GEORawL1 messages whose CRC-24Q check failed (dropped). */
400
- badCrc: number;
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.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, E as Ephemeris, G as GlonassEphemeris } from './nav-DImXUdbp.js';
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
- * Process one GEORawL1 block at frame offset `b`: extract the 250-bit
388
- * SBAS L1 message, CRC-24Q gate it, and decode a GEO ephemeris if it is
389
- * message type 9. Returns the ephemeris, `{ badCrc: true }` on a failed
390
- * CRC, or `{}` for any other (non–type-9) message.
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 feedGeoBlock(view: DataView, b: number, onSbasMessage?: (msg: Uint8Array, prn: number, week: number, tow: number) => void): {
393
- eph?: GlonassEphemeris;
394
- badCrc?: boolean;
395
- };
396
- interface SbfGeoNavResult {
397
- /** SBAS GEO ephemerides in stream order, unchanged repeats suppressed. */
398
- ephemerides: GlonassEphemeris[];
399
- /** GEORawL1 messages whose CRC-24Q check failed (dropped). */
400
- badCrc: number;
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-ZPNMIUNZ.js";
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.56.0",
3
+ "version": "1.58.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,