gnss-js 1.29.0 → 1.31.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.d.cts CHANGED
@@ -4,10 +4,10 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
4
4
  export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.cjs';
5
5
  export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, rad2deg, rhumbLine, vincenty } from './coordinates.cjs';
6
6
  export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.cjs';
7
- export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
7
+ export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
8
8
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.cjs';
9
9
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.cjs';
10
- export { I as IonexGrid, S as Sp3File, a as Sp3Sample, p as parseIonex, b as parseSp3, s as sp3Position } from './sp3-BAq8l39b.cjs';
10
+ export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.cjs';
11
11
  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';
12
12
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.cjs';
13
13
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.cjs';
@@ -17,7 +17,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
17
17
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
18
18
  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';
19
19
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
20
- export { AntennaOffset, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch } from './positioning.cjs';
20
+ export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
21
21
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
22
22
  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';
23
23
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
package/dist/index.d.ts CHANGED
@@ -4,10 +4,10 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
4
4
  export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.js';
5
5
  export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, rad2deg, rhumbLine, vincenty } from './coordinates.js';
6
6
  export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.js';
7
- export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
7
+ export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
8
8
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.js';
9
9
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.js';
10
- export { I as IonexGrid, S as Sp3File, a as Sp3Sample, p as parseIonex, b as parseSp3, s as sp3Position } from './sp3-BAq8l39b.js';
10
+ export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.js';
11
11
  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';
12
12
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.js';
13
13
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.js';
@@ -17,7 +17,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
17
17
  export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
18
18
  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';
19
19
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
20
- export { AntennaOffset, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch } from './positioning.js';
20
+ export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
21
21
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
22
22
  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';
23
23
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
package/dist/index.js CHANGED
@@ -155,14 +155,17 @@ import {
155
155
  lambdaSearch,
156
156
  moonEcef,
157
157
  niellMapping,
158
+ nlWavelength,
159
+ resolvePppAmbiguities,
158
160
  satClockCorrection,
159
161
  solidEarthTide,
160
162
  solveDgnss,
161
163
  solvePpp,
162
164
  solveSpp,
163
165
  sunEcef,
164
- toRtkEpoch
165
- } from "./chunk-5WHKMKIB.js";
166
+ toRtkEpoch,
167
+ wlWavelength
168
+ } from "./chunk-EVFD4UNZ.js";
166
169
  import {
167
170
  almanacEpochMs,
168
171
  almanacSatPosition,
@@ -201,12 +204,15 @@ import {
201
204
  import {
202
205
  EMPTY_WARNINGS,
203
206
  WarningAccumulator,
207
+ biasMetres,
204
208
  createGzipLineSink,
209
+ findSatBias,
205
210
  fmtD,
206
211
  fmtF,
207
212
  hdrLine,
208
213
  padL,
209
214
  padR,
215
+ parseBiasSinex,
210
216
  parseIonex,
211
217
  parseNavFile,
212
218
  stationHeaderLines,
@@ -217,7 +223,7 @@ import {
217
223
  writeRinexNav,
218
224
  writeRinexNav4,
219
225
  writeRinexObsBlob
220
- } from "./chunk-6GTS5MVI.js";
226
+ } from "./chunk-5RNDQQ6J.js";
221
227
  import "./chunk-726LQBGM.js";
222
228
  import "./chunk-IQ5OIMQD.js";
223
229
  import {
@@ -230,9 +236,11 @@ import {
230
236
  systemName
231
237
  } from "./chunk-3U5AX7PY.js";
232
238
  import {
239
+ clkBias,
240
+ parseClk,
233
241
  parseSp3,
234
242
  sp3Position
235
- } from "./chunk-4KMWWCUR.js";
243
+ } from "./chunk-GPEP67TG.js";
236
244
  import {
237
245
  BitReader,
238
246
  RTCM3_MESSAGE_NAMES,
@@ -426,6 +434,7 @@ export {
426
434
  analyzeQuality,
427
435
  applyHelmert,
428
436
  applyIonoDcb,
437
+ biasMetres,
429
438
  binexCrc16,
430
439
  binexCrc32,
431
440
  binexCsum8,
@@ -434,6 +443,7 @@ export {
434
443
  buildObsIndices,
435
444
  buildPppAntenna,
436
445
  clampUnit,
446
+ clkBias,
437
447
  computeAllPositions,
438
448
  computeDop,
439
449
  computeIonoRate,
@@ -464,6 +474,7 @@ export {
464
474
  ephInfoToEphemeris,
465
475
  euclidean3D,
466
476
  fetchSourcetable,
477
+ findSatBias,
467
478
  fmtD,
468
479
  fmtF,
469
480
  formatUTCTime,
@@ -546,12 +557,15 @@ export {
546
557
  msmEpochToDate,
547
558
  navTimesFromEph,
548
559
  niellMapping,
560
+ nlWavelength,
549
561
  nmeaCoordToDecimal,
550
562
  oem4Frames,
551
563
  padL,
552
564
  padR,
553
565
  parseAntex,
566
+ parseBiasSinex,
554
567
  parseBinex,
568
+ parseClk,
555
569
  parseCrxDataLine,
556
570
  parseIonex,
557
571
  parseNavFile,
@@ -587,6 +601,7 @@ export {
587
601
  readString,
588
602
  reportDecodeError,
589
603
  resetGloFreqCache,
604
+ resolvePppAmbiguities,
590
605
  rhumbLine,
591
606
  rtcm3Constellation,
592
607
  satClockCorrection,
@@ -612,6 +627,7 @@ export {
612
627
  updateStreamStats,
613
628
  verifyChecksum,
614
629
  vincenty,
630
+ wlWavelength,
615
631
  writeCrx,
616
632
  writeModernObsBlob,
617
633
  writeRinex2ObsBlob,
@@ -33,13 +33,16 @@ __export(positioning_exports, {
33
33
  lambdaSearch: () => lambdaSearch,
34
34
  moonEcef: () => moonEcef,
35
35
  niellMapping: () => niellMapping,
36
+ nlWavelength: () => nlWavelength,
37
+ resolvePppAmbiguities: () => resolvePppAmbiguities,
36
38
  satClockCorrection: () => satClockCorrection,
37
39
  solidEarthTide: () => solidEarthTide,
38
40
  solveDgnss: () => solveDgnss,
39
41
  solvePpp: () => solvePpp,
40
42
  solveSpp: () => solveSpp,
41
43
  sunEcef: () => sunEcef,
42
- toRtkEpoch: () => toRtkEpoch
44
+ toRtkEpoch: () => toRtkEpoch,
45
+ wlWavelength: () => wlWavelength
43
46
  });
44
47
  module.exports = __toCommonJS(positioning_exports);
45
48
 
@@ -1597,6 +1600,28 @@ function sp3Position(sp3, prn, tMs, order = 9) {
1597
1600
  return { x, y, z, clk };
1598
1601
  }
1599
1602
 
1603
+ // src/rinex/clk.ts
1604
+ var GPS_EPOCH_MS2 = Date.UTC(1980, 0, 6);
1605
+ function clkBias(clk, prn, tMs) {
1606
+ const e = clk.sats[prn];
1607
+ if (!e || e.t.length === 0) return null;
1608
+ const { t, c } = e;
1609
+ let lo = 0;
1610
+ let hi = t.length - 1;
1611
+ if (tMs < t[0] || tMs > t[hi]) return null;
1612
+ while (lo < hi) {
1613
+ const mid = lo + hi + 1 >> 1;
1614
+ if (t[mid] <= tMs) lo = mid;
1615
+ else hi = mid - 1;
1616
+ }
1617
+ if (t[lo] === tMs || lo === t.length - 1) return c[lo];
1618
+ const t0 = t[lo];
1619
+ const t1 = t[lo + 1];
1620
+ if (t1 - t0 > clk.intervalSec * 1e3 * 4) return null;
1621
+ const f = (tMs - t0) / (t1 - t0);
1622
+ return c[lo] + f * (c[lo + 1] - c[lo]);
1623
+ }
1624
+
1600
1625
  // src/positioning/ppp-tropo.ts
1601
1626
  var HYD_AVG_A = [
1602
1627
  0.0012769934,
@@ -2080,7 +2105,7 @@ function sagnacRotate(x, y, z, travelS) {
2080
2105
  const s = Math.sin(theta);
2081
2106
  return [x * c + y * s, -x * s + y * c, z];
2082
2107
  }
2083
- function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
2108
+ function satStateAtEmission(sp3, prn, recvTimeMs, rcv, clk) {
2084
2109
  let travelS = 0.075;
2085
2110
  let sx = 0;
2086
2111
  let sy = 0;
@@ -2099,7 +2124,7 @@ function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
2099
2124
  const vz = (pPlus.z - pMinus.z) / 1;
2100
2125
  velDotPos = p.x * vx + p.y * vy + p.z * vz;
2101
2126
  }
2102
- clkS = p.clk;
2127
+ clkS = (clk && clkBias(clk, prn, tEmit)) ?? p.clk;
2103
2128
  const [rx, ry, rz] = sagnacRotate(p.x, p.y, p.z, travelS);
2104
2129
  sx = rx;
2105
2130
  sy = ry;
@@ -2213,7 +2238,7 @@ function solvePpp(epochs, sp3, opts) {
2213
2238
  for (const o of epoch.obs) {
2214
2239
  if (o.c1 === 0 || o.c2 === 0 || o.l1 === 0 || o.l2 === 0) continue;
2215
2240
  const slip = detectSlip(o, ei);
2216
- const sat = satStateAtEmission(sp3, o.prn, epoch.timeMs, rcv);
2241
+ const sat = satStateAtEmission(sp3, o.prn, epoch.timeMs, rcv, opts.clk);
2217
2242
  if (!sat) continue;
2218
2243
  const [elRad, azRad] = getAer(
2219
2244
  sat.state.x,
@@ -2408,6 +2433,96 @@ function solvePpp(epochs, sp3, opts) {
2408
2433
  };
2409
2434
  }
2410
2435
 
2436
+ // src/positioning/ppp-ar.ts
2437
+ function wlWavelength(f1, f2) {
2438
+ return C_LIGHT / (f1 - f2);
2439
+ }
2440
+ function nlWavelength(f1, f2) {
2441
+ return C_LIGHT / (f1 + f2);
2442
+ }
2443
+ function resolvePppAmbiguities(sats, Qaif, opts = {}) {
2444
+ const wlThreshold = opts.wlThreshold ?? 0.25;
2445
+ const ratioThreshold = opts.ratioThreshold ?? 3;
2446
+ const kept = [];
2447
+ const nWl = [];
2448
+ const rejectedWl = [];
2449
+ for (let i = 0; i < sats.length; i++) {
2450
+ const s = sats[i];
2451
+ const wlFloat = s.mwCyc - (s.wlBiasCyc ?? 0);
2452
+ const r = Math.round(wlFloat);
2453
+ if (Math.abs(wlFloat - r) <= wlThreshold) {
2454
+ kept.push(i);
2455
+ nWl.push(r);
2456
+ } else {
2457
+ rejectedWl.push(s.prn);
2458
+ }
2459
+ }
2460
+ if (kept.length < 2) {
2461
+ return {
2462
+ fixed: false,
2463
+ ratio: 0,
2464
+ refPrn: null,
2465
+ sats: [],
2466
+ rejectedWl
2467
+ };
2468
+ }
2469
+ const n1Float = [];
2470
+ const lamNl = [];
2471
+ for (let k = 0; k < kept.length; k++) {
2472
+ const s = sats[kept[k]];
2473
+ const lNl = nlWavelength(s.f1, s.f2);
2474
+ lamNl.push(lNl);
2475
+ const n1 = s.aIF / lNl - s.f2 / (s.f1 - s.f2) * nWl[k] - (s.nlBiasCyc ?? 0);
2476
+ n1Float.push(n1);
2477
+ }
2478
+ let ref = 0;
2479
+ for (let k = 1; k < kept.length; k++) {
2480
+ const e = sats[kept[k]].elevDeg ?? -1;
2481
+ if (e > (sats[kept[ref]].elevDeg ?? -1)) ref = k;
2482
+ }
2483
+ const m = kept.length - 1;
2484
+ const sd = new Float64Array(m);
2485
+ const Qsd = new Float64Array(m * m);
2486
+ const others = [];
2487
+ for (let k = 0; k < kept.length; k++) if (k !== ref) others.push(k);
2488
+ const n = sats.length;
2489
+ const qN1 = (ka, kb) => Qaif[kept[ka] * n + kept[kb]] / (lamNl[ka] * lamNl[kb]);
2490
+ for (let a = 0; a < m; a++) {
2491
+ const ka = others[a];
2492
+ sd[a] = n1Float[ka] - n1Float[ref];
2493
+ for (let b = 0; b < m; b++) {
2494
+ const kb = others[b];
2495
+ Qsd[a * m + b] = qN1(ka, kb) - qN1(ka, ref) - qN1(ref, kb) + qN1(ref, ref);
2496
+ }
2497
+ }
2498
+ const res = lambdaSearch(sd, Qsd, m, 2);
2499
+ const ratio = res ? Math.min(res.ratio, 999.9) : 0;
2500
+ const fixed = !!res && ratio >= ratioThreshold;
2501
+ const refN1 = Math.round(n1Float[ref]);
2502
+ const sdFix = res?.candidates[0];
2503
+ const outSats = [];
2504
+ for (let k = 0; k < kept.length; k++) {
2505
+ const s = sats[kept[k]];
2506
+ let n1;
2507
+ if (k === ref) {
2508
+ n1 = refN1;
2509
+ } else {
2510
+ const a = others.indexOf(k);
2511
+ n1 = fixed && sdFix ? refN1 + Math.round(sdFix[a]) : Math.round(n1Float[k]);
2512
+ }
2513
+ const lNl = lamNl[k];
2514
+ const aIF = lNl * n1 + lNl * (s.f2 / (s.f1 - s.f2)) * nWl[k];
2515
+ outSats.push({ prn: s.prn, nWl: nWl[k], n1, aIF });
2516
+ }
2517
+ return {
2518
+ fixed,
2519
+ ratio,
2520
+ refPrn: sats[kept[ref]].prn,
2521
+ sats: outSats,
2522
+ rejectedWl
2523
+ };
2524
+ }
2525
+
2411
2526
  // src/positioning/index.ts
2412
2527
  var GM_GPS2 = 3986005e8;
2413
2528
  var F_REL = -4442807633e-19;
@@ -2650,11 +2765,14 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
2650
2765
  lambdaSearch,
2651
2766
  moonEcef,
2652
2767
  niellMapping,
2768
+ nlWavelength,
2769
+ resolvePppAmbiguities,
2653
2770
  satClockCorrection,
2654
2771
  solidEarthTide,
2655
2772
  solveDgnss,
2656
2773
  solvePpp,
2657
2774
  solveSpp,
2658
2775
  sunEcef,
2659
- toRtkEpoch
2776
+ toRtkEpoch,
2777
+ wlWavelength
2660
2778
  });
@@ -1,6 +1,6 @@
1
1
  import { E as Ephemeris } from './nav-DImXUdbp.cjs';
2
2
  import { DopValues } from './orbit.cjs';
3
- import { I as IonexGrid, S as Sp3File } from './sp3-BAq8l39b.cjs';
3
+ import { I as IonexGrid, C as ClkFile, S as Sp3File } from './clk-DGVBGRzA.cjs';
4
4
  import { AntexFile } from './antex.cjs';
5
5
  import './ephemeris-Ohl6NAfw.cjs';
6
6
  import './ecef-CF0uAysr.cjs';
@@ -631,6 +631,11 @@ interface PppOptions {
631
631
  ztdProcessNoise?: number;
632
632
  /** Model + estimate the troposphere. Default true. */
633
633
  troposphere?: boolean;
634
+ /** High-rate precise satellite clocks (RINEX CLOCK, typically 30 s). When
635
+ * given, satellite clock offsets come from this by linear interpolation
636
+ * instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
637
+ * Satellites/epochs absent from the CLK fall back to the SP3 clock. */
638
+ clk?: ClkFile;
634
639
  }
635
640
  interface PppEpochResult {
636
641
  timeMs: number;
@@ -709,6 +714,85 @@ declare function moonEcef(timeMs: number): [number, number, number];
709
714
  */
710
715
  declare function solidEarthTide(rcv: [number, number, number], sun: [number, number, number], moon: [number, number, number]): [number, number, number];
711
716
 
717
+ /**
718
+ * PPP-AR — integer ambiguity resolution for Precise Point Positioning.
719
+ *
720
+ * Float PPP estimates one *ionosphere-free* ambiguity per satellite arc, a
721
+ * real number in metres. Fixing those to integers is what takes PPP from the
722
+ * decimetre to the centimetre level. The classic two-step decomposition is
723
+ * used here:
724
+ *
725
+ * 1. **Wide-lane** N_WL = N1 − N2 from the Melbourne–Wübbena combination.
726
+ * The WL wavelength is ~86 cm (GPS), so the arc-averaged MW rounds to an
727
+ * integer reliably once the satellite WL fractional-cycle bias is removed.
728
+ * 2. **Narrow-lane** N1, recovered from the float IF ambiguity with N_WL
729
+ * fixed, then resolved with LAMBDA on *between-satellite single
730
+ * differences* (which cancel the receiver phase bias) after removing the
731
+ * satellite NL fractional-cycle bias.
732
+ *
733
+ * The satellite WL/NL fractional-cycle biases come from a phase-bias product
734
+ * (Bias-SINEX OSB from an AR-capable analysis centre such as CNES or CODE).
735
+ * Without them, a single receiver cannot separate the satellite bias from the
736
+ * integer, so those biases are required inputs — pass 0 only for a network
737
+ * datum where they have already been removed.
738
+ *
739
+ * The relation between the IF ambiguity (metres) and the integers is
740
+ * A_IF = λ_NL·N1 + λ_NL·(f2/(f1−f2))·N_WL, λ_NL = c/(f1+f2).
741
+ */
742
+ /** Wide-lane wavelength c/(f1−f2) (m). */
743
+ declare function wlWavelength(f1: number, f2: number): number;
744
+ /** Narrow-lane wavelength c/(f1+f2) (m). */
745
+ declare function nlWavelength(f1: number, f2: number): number;
746
+ /** One satellite's float ambiguity inputs for AR. */
747
+ interface ArSat {
748
+ prn: string;
749
+ /** Float ionosphere-free ambiguity (m) from the PPP EKF. */
750
+ aIF: number;
751
+ /** Arc-averaged Melbourne–Wübbena wide-lane estimate (cycles). */
752
+ mwCyc: number;
753
+ f1: number;
754
+ f2: number;
755
+ /** Satellite wide-lane fractional-cycle bias (cycles). Default 0. */
756
+ wlBiasCyc?: number;
757
+ /** Satellite narrow-lane fractional-cycle bias (cycles). Default 0. */
758
+ nlBiasCyc?: number;
759
+ /** Elevation (deg), used only to pick the reference satellite. */
760
+ elevDeg?: number;
761
+ }
762
+ interface ArOptions {
763
+ /** Max |MW − round| to accept a wide-lane (cycles). Default 0.25. */
764
+ wlThreshold?: number;
765
+ /** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
766
+ ratioThreshold?: number;
767
+ }
768
+ interface ArFixedSat {
769
+ prn: string;
770
+ nWl: number;
771
+ n1: number;
772
+ /** Fixed IF ambiguity (m). */
773
+ aIF: number;
774
+ }
775
+ interface ArResult {
776
+ /** Whether the narrow-lane fix passed the ratio test. */
777
+ fixed: boolean;
778
+ /** LAMBDA ratio statistic (second-best / best). */
779
+ ratio: number;
780
+ /** Reference PRN whose absolute N1 stays float (SD datum). */
781
+ refPrn: string | null;
782
+ /** Fixed satellites (includes the reference with its float-rounded N1). */
783
+ sats: ArFixedSat[];
784
+ /** PRNs whose wide-lane did not round confidently (excluded). */
785
+ rejectedWl: string[];
786
+ }
787
+ /**
788
+ * Resolve PPP integer ambiguities from the float IF ambiguities and their
789
+ * covariance. `Qaif` is the n×n float covariance (m²) in the same order as
790
+ * `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
791
+ * test result. A `fixed: false` result means the data did not support a
792
+ * confident fix (keep the float solution).
793
+ */
794
+ declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
795
+
712
796
  /**
713
797
  * Single-point positioning (SPP) from pseudoranges and broadcast
714
798
  * ephemerides.
@@ -798,4 +882,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
798
882
  */
799
883
  declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
800
884
 
801
- export { type AntennaOffset, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch };
885
+ export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
@@ -1,6 +1,6 @@
1
1
  import { E as Ephemeris } from './nav-DImXUdbp.js';
2
2
  import { DopValues } from './orbit.js';
3
- import { I as IonexGrid, S as Sp3File } from './sp3-BAq8l39b.js';
3
+ import { I as IonexGrid, C as ClkFile, S as Sp3File } from './clk-DGVBGRzA.js';
4
4
  import { AntexFile } from './antex.js';
5
5
  import './ephemeris-Ohl6NAfw.js';
6
6
  import './ecef-CF0uAysr.js';
@@ -631,6 +631,11 @@ interface PppOptions {
631
631
  ztdProcessNoise?: number;
632
632
  /** Model + estimate the troposphere. Default true. */
633
633
  troposphere?: boolean;
634
+ /** High-rate precise satellite clocks (RINEX CLOCK, typically 30 s). When
635
+ * given, satellite clock offsets come from this by linear interpolation
636
+ * instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
637
+ * Satellites/epochs absent from the CLK fall back to the SP3 clock. */
638
+ clk?: ClkFile;
634
639
  }
635
640
  interface PppEpochResult {
636
641
  timeMs: number;
@@ -709,6 +714,85 @@ declare function moonEcef(timeMs: number): [number, number, number];
709
714
  */
710
715
  declare function solidEarthTide(rcv: [number, number, number], sun: [number, number, number], moon: [number, number, number]): [number, number, number];
711
716
 
717
+ /**
718
+ * PPP-AR — integer ambiguity resolution for Precise Point Positioning.
719
+ *
720
+ * Float PPP estimates one *ionosphere-free* ambiguity per satellite arc, a
721
+ * real number in metres. Fixing those to integers is what takes PPP from the
722
+ * decimetre to the centimetre level. The classic two-step decomposition is
723
+ * used here:
724
+ *
725
+ * 1. **Wide-lane** N_WL = N1 − N2 from the Melbourne–Wübbena combination.
726
+ * The WL wavelength is ~86 cm (GPS), so the arc-averaged MW rounds to an
727
+ * integer reliably once the satellite WL fractional-cycle bias is removed.
728
+ * 2. **Narrow-lane** N1, recovered from the float IF ambiguity with N_WL
729
+ * fixed, then resolved with LAMBDA on *between-satellite single
730
+ * differences* (which cancel the receiver phase bias) after removing the
731
+ * satellite NL fractional-cycle bias.
732
+ *
733
+ * The satellite WL/NL fractional-cycle biases come from a phase-bias product
734
+ * (Bias-SINEX OSB from an AR-capable analysis centre such as CNES or CODE).
735
+ * Without them, a single receiver cannot separate the satellite bias from the
736
+ * integer, so those biases are required inputs — pass 0 only for a network
737
+ * datum where they have already been removed.
738
+ *
739
+ * The relation between the IF ambiguity (metres) and the integers is
740
+ * A_IF = λ_NL·N1 + λ_NL·(f2/(f1−f2))·N_WL, λ_NL = c/(f1+f2).
741
+ */
742
+ /** Wide-lane wavelength c/(f1−f2) (m). */
743
+ declare function wlWavelength(f1: number, f2: number): number;
744
+ /** Narrow-lane wavelength c/(f1+f2) (m). */
745
+ declare function nlWavelength(f1: number, f2: number): number;
746
+ /** One satellite's float ambiguity inputs for AR. */
747
+ interface ArSat {
748
+ prn: string;
749
+ /** Float ionosphere-free ambiguity (m) from the PPP EKF. */
750
+ aIF: number;
751
+ /** Arc-averaged Melbourne–Wübbena wide-lane estimate (cycles). */
752
+ mwCyc: number;
753
+ f1: number;
754
+ f2: number;
755
+ /** Satellite wide-lane fractional-cycle bias (cycles). Default 0. */
756
+ wlBiasCyc?: number;
757
+ /** Satellite narrow-lane fractional-cycle bias (cycles). Default 0. */
758
+ nlBiasCyc?: number;
759
+ /** Elevation (deg), used only to pick the reference satellite. */
760
+ elevDeg?: number;
761
+ }
762
+ interface ArOptions {
763
+ /** Max |MW − round| to accept a wide-lane (cycles). Default 0.25. */
764
+ wlThreshold?: number;
765
+ /** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
766
+ ratioThreshold?: number;
767
+ }
768
+ interface ArFixedSat {
769
+ prn: string;
770
+ nWl: number;
771
+ n1: number;
772
+ /** Fixed IF ambiguity (m). */
773
+ aIF: number;
774
+ }
775
+ interface ArResult {
776
+ /** Whether the narrow-lane fix passed the ratio test. */
777
+ fixed: boolean;
778
+ /** LAMBDA ratio statistic (second-best / best). */
779
+ ratio: number;
780
+ /** Reference PRN whose absolute N1 stays float (SD datum). */
781
+ refPrn: string | null;
782
+ /** Fixed satellites (includes the reference with its float-rounded N1). */
783
+ sats: ArFixedSat[];
784
+ /** PRNs whose wide-lane did not round confidently (excluded). */
785
+ rejectedWl: string[];
786
+ }
787
+ /**
788
+ * Resolve PPP integer ambiguities from the float IF ambiguities and their
789
+ * covariance. `Qaif` is the n×n float covariance (m²) in the same order as
790
+ * `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
791
+ * test result. A `fixed: false` result means the data did not support a
792
+ * confident fix (keep the float solution).
793
+ */
794
+ declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
795
+
712
796
  /**
713
797
  * Single-point positioning (SPP) from pseudoranges and broadcast
714
798
  * ephemerides.
@@ -798,4 +882,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
798
882
  */
799
883
  declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
800
884
 
801
- export { type AntennaOffset, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch };
885
+ export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
@@ -12,18 +12,21 @@ import {
12
12
  lambdaSearch,
13
13
  moonEcef,
14
14
  niellMapping,
15
+ nlWavelength,
16
+ resolvePppAmbiguities,
15
17
  satClockCorrection,
16
18
  solidEarthTide,
17
19
  solveDgnss,
18
20
  solvePpp,
19
21
  solveSpp,
20
22
  sunEcef,
21
- toRtkEpoch
22
- } from "./chunk-5WHKMKIB.js";
23
+ toRtkEpoch,
24
+ wlWavelength
25
+ } from "./chunk-EVFD4UNZ.js";
23
26
  import "./chunk-MHGNKSSH.js";
24
27
  import "./chunk-37QNKGTC.js";
25
28
  import "./chunk-6FAL6P4G.js";
26
- import "./chunk-4KMWWCUR.js";
29
+ import "./chunk-GPEP67TG.js";
27
30
  import "./chunk-HVXYFUCB.js";
28
31
  import "./chunk-LEEU5OIO.js";
29
32
  import "./chunk-FIEWO4J4.js";
@@ -41,11 +44,14 @@ export {
41
44
  lambdaSearch,
42
45
  moonEcef,
43
46
  niellMapping,
47
+ nlWavelength,
48
+ resolvePppAmbiguities,
44
49
  satClockCorrection,
45
50
  solidEarthTide,
46
51
  solveDgnss,
47
52
  solvePpp,
48
53
  solveSpp,
49
54
  sunEcef,
50
- toRtkEpoch
55
+ toRtkEpoch,
56
+ wlWavelength
51
57
  };