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/index.cjs CHANGED
@@ -84,6 +84,8 @@ __export(src_exports, {
84
84
  RTCM3_MESSAGE_NAMES: () => RTCM3_MESSAGE_NAMES,
85
85
  Rtcm3Decoder: () => Rtcm3Decoder,
86
86
  RtkFloatEngine: () => RtkFloatEngine,
87
+ SBAS_L5_MT_NAMES: () => SBAS_L5_MT_NAMES,
88
+ SBAS_L5_PREAMBLE_UW: () => SBAS_L5_PREAMBLE_UW,
87
89
  SECONDS_IN_DAY: () => SECONDS_IN_DAY,
88
90
  SECONDS_IN_HOUR: () => SECONDS_IN_HOUR,
89
91
  SECONDS_IN_MINUTE: () => SECONDS_IN_MINUTE,
@@ -157,6 +159,7 @@ __export(src_exports, {
157
159
  euclidean3D: () => euclidean3D,
158
160
  extractWidelaneArcs: () => extractWidelaneArcs,
159
161
  feedGeoBlock: () => feedGeoBlock,
162
+ feedGeoL5Block: () => feedGeoL5Block,
160
163
  fetchSourcetable: () => fetchSourcetable,
161
164
  findSatBias: () => findSatBias,
162
165
  fixPppPosition: () => fixPppPosition,
@@ -233,6 +236,8 @@ __export(src_exports, {
233
236
  hdrLine: () => hdrLine,
234
237
  horizonDistance: () => horizonDistance,
235
238
  ionoFree: () => ionoFree,
239
+ isSbasL1Preamble: () => isSbasL1Preamble,
240
+ isSbasL5Correction: () => isSbasL5Correction,
236
241
  keplerPosition: () => keplerPosition,
237
242
  klobucharDelay: () => klobucharDelay,
238
243
  lambdaReduction: () => lambdaReduction,
@@ -263,6 +268,7 @@ __export(src_exports, {
263
268
  parseSbfBdsNav: () => parseSbfBdsNav,
264
269
  parseSbfCnav: () => parseSbfCnav,
265
270
  parseSbfGalNav: () => parseSbfGalNav,
271
+ parseSbfGeoL5: () => parseSbfGeoL5,
266
272
  parseSbfGeoNav: () => parseSbfGeoNav,
267
273
  parseSbfGloNav: () => parseSbfGloNav,
268
274
  parseSbfGpsNav: () => parseSbfGpsNav,
@@ -297,6 +303,10 @@ __export(src_exports, {
297
303
  rhumbLine: () => rhumbLine,
298
304
  rtcm3Constellation: () => rtcm3Constellation,
299
305
  satClockCorrection: () => satClockCorrection,
306
+ sbasIonoDeg: () => sbasIonoDeg,
307
+ sbasL5MessageName: () => sbasL5MessageName,
308
+ sbasL5MessageType: () => sbasL5MessageType,
309
+ sbasLongTermDeg: () => sbasLongTermDeg,
300
310
  sbasProtectionLevels: () => sbasProtectionLevels,
301
311
  sbfCrc16: () => crc16,
302
312
  scanSbfFrames: () => scanSbfFrames,
@@ -7833,13 +7843,42 @@ function parseSbfGloNav(data) {
7833
7843
  return { ephemerides, badCrc, messages };
7834
7844
  }
7835
7845
 
7846
+ // src/navbits/sbas-l5.ts
7847
+ var SBAS_L5_PREAMBLE_UW = 6056250;
7848
+ function isSbasL1Preamble(msg) {
7849
+ return msg[0] === 83 || msg[0] === 154 || msg[0] === 198;
7850
+ }
7851
+ function sbasL5MessageType(msg) {
7852
+ return getBitU(msg, 4, 6);
7853
+ }
7854
+ var SBAS_L5_MT_NAMES = {
7855
+ 0: "Do Not Use (test)",
7856
+ 31: "SBAS satellite mask",
7857
+ 32: "Satellite clock-ephemeris corrections + covariance",
7858
+ 34: "Integrity (DFREI/DFRECI)",
7859
+ 35: "Integrity (DFREI/DFRECI)",
7860
+ 36: "Integrity (DFREI/DFRECI)",
7861
+ 37: "Degradation parameters + DFREI scale table",
7862
+ 39: "SBAS satellite clock/ephemeris/covariance-1",
7863
+ 40: "SBAS satellite clock/ephemeris/covariance-2",
7864
+ 42: "SNT-to-UTC offset",
7865
+ 47: "SBAS satellite almanacs",
7866
+ 62: "Reserved",
7867
+ 63: "Null message"
7868
+ };
7869
+ function sbasL5MessageName(type) {
7870
+ return SBAS_L5_MT_NAMES[type] ?? (type >= 1 && type <= 61 ? "Spare" : `Type ${type}`);
7871
+ }
7872
+ function isSbasL5Correction(type) {
7873
+ return type === 31 || type === 32 || type >= 34 && type <= 37 || type === 39 || type === 40 || type === 42 || type === 47;
7874
+ }
7875
+
7836
7876
  // src/sbf/rawnav-sbas.ts
7837
- function feedGeoBlock(view, b, onSbasMessage) {
7877
+ function readGeoMessage(view, b) {
7838
7878
  const tow = view.getUint32(b + 8, true);
7839
7879
  const wnc = view.getUint16(b + 12, true);
7840
- const svid = view.getUint8(b + 14);
7841
- const prnStr = svidToPrn(svid);
7842
- if (!prnStr || prnStr[0] !== "S") return {};
7880
+ const prnStr = svidToPrn(view.getUint8(b + 14));
7881
+ if (!prnStr || prnStr[0] !== "S") return null;
7843
7882
  const msg = new Uint8Array(32);
7844
7883
  for (let k = 0; k < 8; k++) {
7845
7884
  const w = view.getUint32(b + 20 + 4 * k, true);
@@ -7848,12 +7887,29 @@ function feedGeoBlock(view, b, onSbasMessage) {
7848
7887
  msg[4 * k + 2] = w >>> 8 & 255;
7849
7888
  msg[4 * k + 3] = w & 255;
7850
7889
  }
7851
- if (!sbasCrcOk(msg)) return { badCrc: true };
7852
- const prn = Number(prnStr.slice(1)) + 100;
7853
- onSbasMessage?.(msg, prn, wnc, tow / 1e3);
7854
- const eph = decodeSbasGeoNav(msg, prn, wnc, tow / 1e3);
7890
+ return { msg, prn: Number(prnStr.slice(1)) + 100, wnc, towSec: tow / 1e3 };
7891
+ }
7892
+ function feedGeoBlock(view, b, onSbasMessage) {
7893
+ const g = readGeoMessage(view, b);
7894
+ if (!g) return {};
7895
+ if (!sbasCrcOk(g.msg)) return { badCrc: true };
7896
+ onSbasMessage?.(g.msg, g.prn, g.wnc, g.towSec);
7897
+ const eph = decodeSbasGeoNav(g.msg, g.prn, g.wnc, g.towSec);
7855
7898
  return eph ? { eph } : {};
7856
7899
  }
7900
+ function feedGeoL5Block(view, b, onSbasMessage, onDfmcMessage) {
7901
+ const g = readGeoMessage(view, b);
7902
+ if (!g) return {};
7903
+ if (!sbasCrcOk(g.msg)) return { badCrc: true };
7904
+ if (isSbasL1Preamble(g.msg)) {
7905
+ onSbasMessage?.(g.msg, g.prn, g.wnc, g.towSec);
7906
+ const eph = decodeSbasGeoNav(g.msg, g.prn, g.wnc, g.towSec);
7907
+ return eph ? { kind: "l1", eph } : { kind: "l1" };
7908
+ }
7909
+ const dfmcType = sbasL5MessageType(g.msg);
7910
+ onDfmcMessage?.(g.msg, g.prn, g.wnc, g.towSec, dfmcType);
7911
+ return { kind: "l5", dfmcType };
7912
+ }
7857
7913
  function parseSbfGeoNav(data, opts = {}) {
7858
7914
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
7859
7915
  const ephemerides = [];
@@ -7876,6 +7932,47 @@ function parseSbfGeoNav(data, opts = {}) {
7876
7932
  });
7877
7933
  return { ephemerides, badCrc, messages };
7878
7934
  }
7935
+ function parseSbfGeoL5(data, opts = {}) {
7936
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
7937
+ const ephemerides = [];
7938
+ const seen = /* @__PURE__ */ new Set();
7939
+ const byType = {};
7940
+ const dfmcPrns = /* @__PURE__ */ new Set();
7941
+ let legacyMessages = 0;
7942
+ let dfmcMessages = 0;
7943
+ let badCrc = 0;
7944
+ let messages = 0;
7945
+ scanSbfFrames(data, view, (id, b, len) => {
7946
+ if (id !== 4021 || len < 52) return;
7947
+ messages++;
7948
+ const r = feedGeoL5Block(view, b, opts.onSbasMessage, opts.onDfmcMessage);
7949
+ if (r.badCrc) {
7950
+ badCrc++;
7951
+ } else if (r.kind === "l1") {
7952
+ legacyMessages++;
7953
+ if (r.eph) {
7954
+ const key = `${r.eph.prn}|${r.eph.tocDate.getTime()}`;
7955
+ if (!seen.has(key)) {
7956
+ seen.add(key);
7957
+ ephemerides.push(r.eph);
7958
+ }
7959
+ }
7960
+ } else if (r.kind === "l5" && r.dfmcType !== void 0) {
7961
+ dfmcMessages++;
7962
+ byType[r.dfmcType] = (byType[r.dfmcType] ?? 0) + 1;
7963
+ const prn = view.getUint8(b + 14);
7964
+ const s = svidToPrn(prn);
7965
+ if (s) dfmcPrns.add(s);
7966
+ }
7967
+ });
7968
+ return {
7969
+ ephemerides,
7970
+ legacyMessages,
7971
+ dfmc: { byType, prns: [...dfmcPrns].sort(), messages: dfmcMessages },
7972
+ badCrc,
7973
+ messages
7974
+ };
7975
+ }
7879
7976
 
7880
7977
  // src/sbf/navigation.ts
7881
7978
  var F4_DNU4 = -2e10;
@@ -7898,8 +7995,11 @@ function decodeSbfNavigation(data, opts = {}) {
7898
7995
  gloRaw: 0,
7899
7996
  bdsRaw: 0,
7900
7997
  sbasRaw: 0,
7998
+ sbasL5Raw: 0,
7901
7999
  badFrames: 0
7902
8000
  };
8001
+ const dfmcByType = {};
8002
+ const dfmcPrns = /* @__PURE__ */ new Set();
7903
8003
  const cnavAsm = newCnavAssemblers();
7904
8004
  const galAsm = newGalAssemblers();
7905
8005
  const gloAsm = new GloStringAssembler();
@@ -8009,6 +8109,25 @@ function decodeSbfNavigation(data, opts = {}) {
8009
8109
  else if (r.badCrc) counts.badFrames++;
8010
8110
  return;
8011
8111
  }
8112
+ case 4021: {
8113
+ if (len < 52) return;
8114
+ counts.sbasL5Raw++;
8115
+ const r = feedGeoL5Block(
8116
+ view,
8117
+ b,
8118
+ opts.onSbasMessage,
8119
+ opts.onDfmcMessage
8120
+ );
8121
+ if (r.badCrc) counts.badFrames++;
8122
+ else if (r.kind === "l1") {
8123
+ if (r.eph) addEph(r.eph);
8124
+ } else if (r.kind === "l5" && r.dfmcType !== void 0) {
8125
+ dfmcByType[r.dfmcType] = (dfmcByType[r.dfmcType] ?? 0) + 1;
8126
+ const s = svidToPrn(view.getUint8(b + 14));
8127
+ if (s) dfmcPrns.add(s);
8128
+ }
8129
+ return;
8130
+ }
8012
8131
  /* ---- iono / UTC ---- */
8013
8132
  case 5893:
8014
8133
  // GPSIon
@@ -8033,7 +8152,12 @@ function decodeSbfNavigation(data, opts = {}) {
8033
8152
  return;
8034
8153
  }
8035
8154
  });
8036
- return { ephemerides, cnav, ionoCorrections, leapSeconds, counts };
8155
+ const dfmc = {
8156
+ byType: dfmcByType,
8157
+ prns: [...dfmcPrns].sort(),
8158
+ messages: Object.values(dfmcByType).reduce((a, v) => a + v, 0)
8159
+ };
8160
+ return { ephemerides, cnav, ionoCorrections, leapSeconds, dfmc, counts };
8037
8161
  }
8038
8162
 
8039
8163
  // src/navbits/rs255.ts
@@ -13356,6 +13480,17 @@ var DEGF = [
13356
13480
  58e-4
13357
13481
  ];
13358
13482
  var degfcorr = (ai) => ai > 0 && ai <= 15 ? DEGF[ai] : 58e-4;
13483
+ function sbasLongTermDeg(d, vel, ageSec) {
13484
+ if (vel) {
13485
+ if (ageSec > 0 && ageSec < d.iltcV1) return 0;
13486
+ return d.cltcLsb + d.cltcV1 * Math.max(0, -ageSec, ageSec - d.iltcV1);
13487
+ }
13488
+ return d.cltcV0 * Math.floor(Math.abs(ageSec) / d.iltcV0);
13489
+ }
13490
+ function sbasIonoDeg(d, ageSec) {
13491
+ const dt = Math.abs(ageSec);
13492
+ return d.cionoStep * Math.floor(dt / d.iiono) + d.cionoRamp * dt;
13493
+ }
13359
13494
  var x1 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85];
13360
13495
  var x2 = [-55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
13361
13496
  var x3 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75];
@@ -13409,6 +13544,7 @@ var SbasProcessor = class {
13409
13544
  satIdx = /* @__PURE__ */ new Map();
13410
13545
  iodp = -1;
13411
13546
  tlat = 0;
13547
+ degr = null;
13412
13548
  ion = [];
13413
13549
  /** GEO PRN(s) whose messages have been ingested. */
13414
13550
  geoPrns = /* @__PURE__ */ new Set();
@@ -13435,6 +13571,8 @@ var SbasProcessor = class {
13435
13571
  return this.decodeIntegrity(msg) ? type : -1;
13436
13572
  case 7:
13437
13573
  return this.decodeDegradation(msg) ? type : -1;
13574
+ case 10:
13575
+ return this.decodeMt10(msg) ? type : -1;
13438
13576
  case 18:
13439
13577
  return this.decodeIgpMask(msg) ? type : -1;
13440
13578
  case 24:
@@ -13503,6 +13641,30 @@ var SbasProcessor = class {
13503
13641
  }
13504
13642
  return true;
13505
13643
  }
13644
+ /** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
13645
+ * preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
13646
+ * Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
13647
+ decodeMt10(msg) {
13648
+ const u = (p, n) => getBitU(msg, p, n);
13649
+ this.degr = {
13650
+ brrc: u(14, 10) * 2e-3,
13651
+ cltcLsb: u(24, 10) * 2e-3,
13652
+ cltcV1: u(34, 10) * 5e-5,
13653
+ iltcV1: u(44, 9),
13654
+ cltcV0: u(53, 10) * 2e-3,
13655
+ iltcV0: u(63, 9) || 1,
13656
+ cgeoLsb: u(72, 10) * 5e-4,
13657
+ cgeoV: u(82, 10) * 5e-5,
13658
+ igeo: u(92, 9),
13659
+ cer: u(101, 6) * 0.5,
13660
+ cionoStep: u(107, 10) * 1e-3,
13661
+ iiono: u(117, 9) || 1,
13662
+ cionoRamp: u(126, 10) * 5e-6,
13663
+ rssUdre: u(136, 1) === 1,
13664
+ rssIono: u(137, 1) === 1
13665
+ };
13666
+ return true;
13667
+ }
13506
13668
  decodeMixed(msg, week, tow) {
13507
13669
  if (this.iodp !== getBitU(msg, 110, 2)) return false;
13508
13670
  const blk = getBitU(msg, 112, 2);
@@ -13549,7 +13711,8 @@ var SbasProcessor = class {
13549
13711
  dvel: [0, 0, 0],
13550
13712
  daf0: getBitS(msg, p + 41, 10) * P2_31,
13551
13713
  daf1: 0,
13552
- t0s: gpsSeconds(week, tow)
13714
+ t0s: gpsSeconds(week, tow),
13715
+ vel: false
13553
13716
  };
13554
13717
  return true;
13555
13718
  }
@@ -13573,7 +13736,8 @@ var SbasProcessor = class {
13573
13736
  ],
13574
13737
  daf0: getBitS(msg, p + 47, 11) * P2_31,
13575
13738
  daf1: getBitS(msg, p + 82, 8) * P2_39,
13576
- t0s: gpsSeconds(week, tow + t)
13739
+ t0s: gpsSeconds(week, tow + t),
13740
+ vel: true
13577
13741
  };
13578
13742
  return true;
13579
13743
  }
@@ -13694,9 +13858,16 @@ var SbasProcessor = class {
13694
13858
  const tf = now - s.fcorr.t0s + this.tlat;
13695
13859
  if (Math.abs(tf) > MAXSBSAGEF || s.fcorr.udre >= 15) return null;
13696
13860
  const prc = s.fcorr.prc;
13697
- const varM2 = varfcorr(s.fcorr.udre) + degfcorr(s.fcorr.ai) * tf * tf / 2;
13861
+ const sigUdre = Math.sqrt(varfcorr(s.fcorr.udre));
13862
+ const efc = degfcorr(s.fcorr.ai) * tf * tf / 2;
13863
+ const eltc = this.degr && s.lcorr && s.lcorr.t0s !== 0 ? sbasLongTermDeg(this.degr, s.lcorr.vel, now - s.lcorr.t0s) : 0;
13864
+ const varM2 = this.degr?.rssUdre ? sigUdre * sigUdre + efc * efc + eltc * eltc : (sigUdre + efc + eltc) ** 2;
13698
13865
  return { dPos: drs, dClkS: dclk + prc / C_LIGHT, prcM: prc, varM2, iode };
13699
13866
  }
13867
+ /** The last-decoded MT10 degradation factors, or null if none seen. */
13868
+ get degradation() {
13869
+ return this.degr;
13870
+ }
13700
13871
  /**
13701
13872
  * Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
13702
13873
  * position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
@@ -13745,14 +13916,18 @@ var SbasProcessor = class {
13745
13916
  } else return null;
13746
13917
  const now = gpsSeconds(week, tow);
13747
13918
  let delay = 0;
13748
- let varM2 = 0;
13919
+ let varVert = 0;
13749
13920
  for (let i = 0; i < 4; i++) {
13750
13921
  const g = pts[i];
13751
13922
  if (!g) continue;
13752
13923
  delay += w[i] * g.delay;
13753
- varM2 += w[i] * varicorr(g.give) * 9e-8 * Math.abs(now - g.t0s);
13924
+ const sigGive = Math.sqrt(varicorr(g.give));
13925
+ const d = this.degr;
13926
+ const eiono = d ? sbasIonoDeg(d, now - g.t0s) : 0;
13927
+ const sig2 = d?.rssIono ? sigGive * sigGive + eiono * eiono : (sigGive + eiono) ** 2;
13928
+ varVert += w[i] * sig2;
13754
13929
  }
13755
- return { delayM: delay * fp, varM2: varM2 * fp * fp };
13930
+ return { delayM: delay * fp, varM2: varVert * fp * fp };
13756
13931
  }
13757
13932
  /** Find the four IGPs bracketing a pierce point (RTKLIB `searchigp`). */
13758
13933
  searchIgp(latP, lonP) {
@@ -15167,10 +15342,10 @@ function sagnac2(pos, travelTimeS) {
15167
15342
  function sbasAirTropoVar(elRad) {
15168
15343
  const elDeg = elRad * 180 / Math.PI;
15169
15344
  const sigMp = 0.13 + 0.53 * Math.exp(-elDeg / 10);
15170
- const sigNoise = 0.15 + 0.43 * Math.exp(-elDeg / 6.9);
15345
+ const NOISE_DIVG_AADA = 0.36;
15171
15346
  const m = 1.001 / Math.sqrt(2001e-6 + Math.sin(elRad) * Math.sin(elRad));
15172
15347
  const sigTropo = 0.12 * m;
15173
- return sigMp * sigMp + sigNoise * sigNoise + sigTropo * sigTropo;
15348
+ return sigMp * sigMp + NOISE_DIVG_AADA * NOISE_DIVG_AADA + sigTropo * sigTropo;
15174
15349
  }
15175
15350
  function invertMatrix(A) {
15176
15351
  const n = A.length;
@@ -17781,6 +17956,8 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
17781
17956
  RTCM3_MESSAGE_NAMES,
17782
17957
  Rtcm3Decoder,
17783
17958
  RtkFloatEngine,
17959
+ SBAS_L5_MT_NAMES,
17960
+ SBAS_L5_PREAMBLE_UW,
17784
17961
  SECONDS_IN_DAY,
17785
17962
  SECONDS_IN_HOUR,
17786
17963
  SECONDS_IN_MINUTE,
@@ -17854,6 +18031,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
17854
18031
  euclidean3D,
17855
18032
  extractWidelaneArcs,
17856
18033
  feedGeoBlock,
18034
+ feedGeoL5Block,
17857
18035
  fetchSourcetable,
17858
18036
  findSatBias,
17859
18037
  fixPppPosition,
@@ -17930,6 +18108,8 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
17930
18108
  hdrLine,
17931
18109
  horizonDistance,
17932
18110
  ionoFree,
18111
+ isSbasL1Preamble,
18112
+ isSbasL5Correction,
17933
18113
  keplerPosition,
17934
18114
  klobucharDelay,
17935
18115
  lambdaReduction,
@@ -17960,6 +18140,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
17960
18140
  parseSbfBdsNav,
17961
18141
  parseSbfCnav,
17962
18142
  parseSbfGalNav,
18143
+ parseSbfGeoL5,
17963
18144
  parseSbfGeoNav,
17964
18145
  parseSbfGloNav,
17965
18146
  parseSbfGpsNav,
@@ -17994,6 +18175,10 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
17994
18175
  rhumbLine,
17995
18176
  rtcm3Constellation,
17996
18177
  satClockCorrection,
18178
+ sbasIonoDeg,
18179
+ sbasL5MessageName,
18180
+ sbasL5MessageType,
18181
+ sbasLongTermDeg,
17997
18182
  sbasProtectionLevels,
17998
18183
  sbfCrc16,
17999
18184
  scanSbfFrames,
package/dist/index.d.cts CHANGED
@@ -12,13 +12,13 @@ export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBia
12
12
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-Ohl6NAfw.cjs';
13
13
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.cjs';
14
14
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxPvtResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxPvt, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.cjs';
15
- export { HasMessage, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, sbfCrc16, scanSbfFrames } from './sbf.cjs';
15
+ export { DfmcCensus, DfmcMessageCb, GeoL5Result, HasMessage, SBAS_L5_MT_NAMES, SBAS_L5_PREAMBLE_UW, SbasMessageCb, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoL5Result, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, feedGeoL5Block, isSbasL1Preamble, isSbasL5Correction, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoL5, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, sbasL5MessageName, sbasL5MessageType, sbfCrc16, scanSbfFrames } from './sbf.cjs';
16
16
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, NovatelPvtResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelPvt, parseNovatelRange } from './novatel.cjs';
17
17
  export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.cjs';
18
18
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
19
19
  export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.cjs';
20
20
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
21
- export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
21
+ export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
22
22
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
23
23
  export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.cjs';
24
24
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
package/dist/index.d.ts CHANGED
@@ -12,13 +12,13 @@ export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBia
12
12
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-Ohl6NAfw.js';
13
13
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.js';
14
14
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxPvtResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxPvt, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.js';
15
- export { HasMessage, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, sbfCrc16, scanSbfFrames } from './sbf.js';
15
+ export { DfmcCensus, DfmcMessageCb, GeoL5Result, HasMessage, SBAS_L5_MT_NAMES, SBAS_L5_PREAMBLE_UW, SbasMessageCb, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGeoL5Result, SbfGeoNavResult, SbfGloNavResult, SbfGpsNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfNavCounts, SbfNavigation, SbfParseResult, SbfPvt, SbfPvtResult, SbfReceiverSetup, decodeSbfNavigation, feedGeoBlock, feedGeoL5Block, isSbasL1Preamble, isSbasL5Correction, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGeoL5, parseSbfGeoNav, parseSbfGloNav, parseSbfGpsNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, parseSbfPvt, parseSbfReceiverSetup, sbasL5MessageName, sbasL5MessageType, sbfCrc16, scanSbfFrames } from './sbf.js';
16
16
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, NovatelPvtResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelPvt, parseNovatelRange } from './novatel.js';
17
17
  export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.js';
18
18
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
19
19
  export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.js';
20
20
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
21
- export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
21
+ export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
22
22
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
23
23
  export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.js';
24
24
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
package/dist/index.js CHANGED
@@ -53,13 +53,19 @@ import {
53
53
  ubxFrames
54
54
  } from "./chunk-MRC6LIPM.js";
55
55
  import {
56
+ SBAS_L5_MT_NAMES,
57
+ SBAS_L5_PREAMBLE_UW,
56
58
  crc16,
57
59
  decodeSbfNavigation,
58
60
  feedGeoBlock,
61
+ feedGeoL5Block,
62
+ isSbasL1Preamble,
63
+ isSbasL5Correction,
59
64
  parseSbfAlmanac,
60
65
  parseSbfBdsNav,
61
66
  parseSbfCnav,
62
67
  parseSbfGalNav,
68
+ parseSbfGeoL5,
63
69
  parseSbfGeoNav,
64
70
  parseSbfGloNav,
65
71
  parseSbfGpsNav,
@@ -69,8 +75,10 @@ import {
69
75
  parseSbfNav,
70
76
  parseSbfPvt,
71
77
  parseSbfReceiverSetup,
78
+ sbasL5MessageName,
79
+ sbasL5MessageType,
72
80
  scanSbfFrames
73
- } from "./chunk-ZPNMIUNZ.js";
81
+ } from "./chunk-UHLUAU6H.js";
74
82
  import "./chunk-FA2UTLEQ.js";
75
83
  import {
76
84
  OEM4_HLEN,
@@ -160,6 +168,8 @@ import {
160
168
  postProcessRtk,
161
169
  resolvePppAmbiguities,
162
170
  satClockCorrection,
171
+ sbasIonoDeg,
172
+ sbasLongTermDeg,
163
173
  sbasProtectionLevels,
164
174
  solidEarthTide,
165
175
  solveDgnss,
@@ -168,7 +178,7 @@ import {
168
178
  sunEcef,
169
179
  toRtkEpoch,
170
180
  wlWavelength
171
- } from "./chunk-BU6YC6VK.js";
181
+ } from "./chunk-SWVIBUHS.js";
172
182
  import "./chunk-WQX354KD.js";
173
183
  import {
174
184
  almanacEpochMs,
@@ -424,6 +434,8 @@ export {
424
434
  RTCM3_MESSAGE_NAMES,
425
435
  Rtcm3Decoder,
426
436
  RtkFloatEngine,
437
+ SBAS_L5_MT_NAMES,
438
+ SBAS_L5_PREAMBLE_UW,
427
439
  SECONDS_IN_DAY,
428
440
  SECONDS_IN_HOUR,
429
441
  SECONDS_IN_MINUTE,
@@ -497,6 +509,7 @@ export {
497
509
  euclidean3D,
498
510
  extractWidelaneArcs,
499
511
  feedGeoBlock,
512
+ feedGeoL5Block,
500
513
  fetchSourcetable,
501
514
  findSatBias,
502
515
  fixPppPosition,
@@ -573,6 +586,8 @@ export {
573
586
  hdrLine,
574
587
  horizonDistance,
575
588
  ionoFree,
589
+ isSbasL1Preamble,
590
+ isSbasL5Correction,
576
591
  keplerPosition,
577
592
  klobucharDelay,
578
593
  lambdaReduction,
@@ -603,6 +618,7 @@ export {
603
618
  parseSbfBdsNav,
604
619
  parseSbfCnav,
605
620
  parseSbfGalNav,
621
+ parseSbfGeoL5,
606
622
  parseSbfGeoNav,
607
623
  parseSbfGloNav,
608
624
  parseSbfGpsNav,
@@ -637,6 +653,10 @@ export {
637
653
  rhumbLine,
638
654
  rtcm3Constellation,
639
655
  satClockCorrection,
656
+ sbasIonoDeg,
657
+ sbasL5MessageName,
658
+ sbasL5MessageType,
659
+ sbasLongTermDeg,
640
660
  sbasProtectionLevels,
641
661
  crc16 as sbfCrc16,
642
662
  scanSbfFrames,