gnss-js 2.10.0 → 2.11.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/README.md +1 -1
- package/dist/binex.d.cts +1 -1
- package/dist/binex.d.ts +1 -1
- package/dist/{chunk-WQX354KD.js → chunk-H3AKFD25.js} +1 -1
- package/dist/{chunk-YUW33VXK.js → chunk-HUXQABJI.js} +2 -0
- package/dist/{chunk-GH7MYXON.js → chunk-IQHQHUOB.js} +3 -3
- package/dist/{chunk-56HM5B6T.js → chunk-MDO77CCC.js} +132 -9
- package/dist/chunk-NL2ORX75.js +319 -0
- package/dist/{chunk-N6GQUHM4.js → chunk-PBENVPFL.js} +1 -1
- package/dist/{chunk-74IVYOQV.js → chunk-RFPR4LKM.js} +110 -4
- package/dist/{chunk-3KSDL3CO.js → chunk-SSWFX3P3.js} +1 -1
- package/dist/{chunk-SEYH4BEN.js → chunk-SZP4TLYR.js} +2 -2
- package/dist/{chunk-K3GLUWZI.js → chunk-UMINQTMK.js} +1 -1
- package/dist/index.cjs +626 -110
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +12 -9
- package/dist/{nav-DImXUdbp.d.ts → nav-COp0Vmlw.d.cts} +83 -2
- package/dist/{nav-DImXUdbp.d.cts → nav-COp0Vmlw.d.ts} +83 -2
- package/dist/{nav-BYmYoh9A.d.cts → nav-CvZXmumD.d.cts} +1 -1
- package/dist/{nav-CN8rxL4h.d.ts → nav-D2DFlVpa.d.ts} +1 -1
- package/dist/novatel.d.cts +1 -1
- package/dist/novatel.d.ts +1 -1
- package/dist/novatel.js +3 -3
- package/dist/orbit.d.cts +2 -2
- package/dist/orbit.d.ts +2 -2
- package/dist/positioning.d.cts +2 -2
- package/dist/positioning.d.ts +2 -2
- package/dist/positioning.js +3 -3
- package/dist/rinex.cjs +140 -11
- package/dist/rinex.d.cts +9 -6
- package/dist/rinex.d.ts +9 -6
- package/dist/rinex.js +3 -2
- package/dist/rtcm3.cjs +1 -1
- package/dist/rtcm3.js +1 -1
- package/dist/sbf.cjs +420 -24
- package/dist/sbf.d.cts +46 -5
- package/dist/sbf.d.ts +46 -5
- package/dist/sbf.js +7 -4
- package/dist/trimble.d.cts +1 -1
- package/dist/trimble.d.ts +1 -1
- package/dist/ubx.d.cts +1 -1
- package/dist/ubx.d.ts +1 -1
- package/dist/ubx.js +4 -4
- package/package.json +1 -1
|
@@ -7,22 +7,31 @@ import {
|
|
|
7
7
|
galFnavPageCrcOk,
|
|
8
8
|
galInavPageCrcOk,
|
|
9
9
|
testGloString
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SSWFX3P3.js";
|
|
11
11
|
import {
|
|
12
12
|
decodeSbasGeoNav,
|
|
13
13
|
sbasCrcOk
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-H3AKFD25.js";
|
|
15
15
|
import {
|
|
16
16
|
getGpsLeap
|
|
17
17
|
} from "./chunk-HVXYFUCB.js";
|
|
18
18
|
import {
|
|
19
19
|
geodeticToEcef
|
|
20
20
|
} from "./chunk-37QNKGTC.js";
|
|
21
|
+
import {
|
|
22
|
+
BdsCnav1Assembler,
|
|
23
|
+
BdsCnav2Assembler,
|
|
24
|
+
BdsCnav3Assembler,
|
|
25
|
+
bdsCnav1Sf2CrcOk,
|
|
26
|
+
bdsCnav1Sf3CrcOk,
|
|
27
|
+
bdsCnav2CrcOk,
|
|
28
|
+
bdsCnav3CrcOk
|
|
29
|
+
} from "./chunk-NL2ORX75.js";
|
|
21
30
|
import {
|
|
22
31
|
CnavAssembler,
|
|
23
32
|
cnavCrcOk,
|
|
24
33
|
crc24q
|
|
25
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-HUXQABJI.js";
|
|
26
35
|
import {
|
|
27
36
|
GPS_PI,
|
|
28
37
|
GpsLnavAssembler,
|
|
@@ -924,6 +933,80 @@ function parseSbfGloNav(data) {
|
|
|
924
933
|
return { ephemerides, badCrc, messages };
|
|
925
934
|
}
|
|
926
935
|
|
|
936
|
+
// src/sbf/rawnav-bds-cnav.ts
|
|
937
|
+
var GPS_BDT_OFFSET = 14;
|
|
938
|
+
var B1C_FRAME_S = 18;
|
|
939
|
+
var TOW_DNU2 = 4294967295;
|
|
940
|
+
function newBdsCnavAssemblers() {
|
|
941
|
+
return {
|
|
942
|
+
b1c: new BdsCnav1Assembler(),
|
|
943
|
+
b2a: new BdsCnav2Assembler(),
|
|
944
|
+
b2b: new BdsCnav3Assembler()
|
|
945
|
+
};
|
|
946
|
+
}
|
|
947
|
+
function navBits(view, wordsAt, start, nBits) {
|
|
948
|
+
const out = new Uint8Array(Math.ceil(nBits / 8));
|
|
949
|
+
for (let i = 0; i < nBits; i++) {
|
|
950
|
+
const p = start + i;
|
|
951
|
+
const w = view.getUint32(wordsAt + 4 * (p >>> 5), true);
|
|
952
|
+
if (w >>> 31 - (p & 31) & 1) out[i >> 3] |= 128 >> (i & 7);
|
|
953
|
+
}
|
|
954
|
+
return out;
|
|
955
|
+
}
|
|
956
|
+
var MIN_LEN = { 4218: 248, 4219: 92, 4242: 144 };
|
|
957
|
+
function feedBdsCnavBlock(view, b, id, len, asm) {
|
|
958
|
+
if (len < (MIN_LEN[id] ?? Infinity)) return {};
|
|
959
|
+
const prnStr = svidToPrn(view.getUint8(b + 14));
|
|
960
|
+
if (!prnStr || prnStr[0] !== "C") return {};
|
|
961
|
+
const prn = Number(prnStr.slice(1));
|
|
962
|
+
const words = b + 20;
|
|
963
|
+
if (id === 4218) {
|
|
964
|
+
const towMs = view.getUint32(b + 8, true);
|
|
965
|
+
if (towMs === TOW_DNU2) return {};
|
|
966
|
+
const sf2 = navBits(view, words, 72, 600);
|
|
967
|
+
const sf3 = navBits(view, words, 1272, 264);
|
|
968
|
+
const sf2Ok = bdsCnav1Sf2CrcOk(sf2);
|
|
969
|
+
const bdt = (towMs / 1e3 - GPS_BDT_OFFSET + 604800) % 604800;
|
|
970
|
+
const tTm = (Math.floor(bdt) - B1C_FRAME_S + 604800) % 604800;
|
|
971
|
+
const eph = asm.b1c.push(
|
|
972
|
+
prn,
|
|
973
|
+
sf2Ok ? sf2 : null,
|
|
974
|
+
bdsCnav1Sf3CrcOk(sf3) ? sf3 : null,
|
|
975
|
+
tTm
|
|
976
|
+
);
|
|
977
|
+
if (!sf2Ok) return { badCrc: true };
|
|
978
|
+
return eph ? { eph } : {};
|
|
979
|
+
}
|
|
980
|
+
if (id === 4219) {
|
|
981
|
+
const msg = navBits(view, words, 0, 288);
|
|
982
|
+
if (!bdsCnav2CrcOk(msg)) return { badCrc: true };
|
|
983
|
+
const eph = asm.b2a.push(msg);
|
|
984
|
+
return eph ? { eph } : {};
|
|
985
|
+
}
|
|
986
|
+
if (id === 4242) {
|
|
987
|
+
const msg = navBits(view, words, 12, 486);
|
|
988
|
+
if (!bdsCnav3CrcOk(msg)) return { badCrc: true };
|
|
989
|
+
const eph = asm.b2b.push(prn, msg);
|
|
990
|
+
return eph ? { eph } : {};
|
|
991
|
+
}
|
|
992
|
+
return {};
|
|
993
|
+
}
|
|
994
|
+
function parseSbfBdsCnav(data) {
|
|
995
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
996
|
+
const asm = newBdsCnavAssemblers();
|
|
997
|
+
const ephemerides = [];
|
|
998
|
+
let badCrc = 0;
|
|
999
|
+
let messages = 0;
|
|
1000
|
+
scanSbfFrames(data, view, (id, b, len) => {
|
|
1001
|
+
if (id !== 4218 && id !== 4219 && id !== 4242) return;
|
|
1002
|
+
messages++;
|
|
1003
|
+
const r = feedBdsCnavBlock(view, b, id, len, asm);
|
|
1004
|
+
if (r.eph) ephemerides.push(r.eph);
|
|
1005
|
+
else if (r.badCrc) badCrc++;
|
|
1006
|
+
});
|
|
1007
|
+
return { ephemerides, badCrc, messages };
|
|
1008
|
+
}
|
|
1009
|
+
|
|
927
1010
|
// src/navbits/sbas-l5.ts
|
|
928
1011
|
var SBAS_L5_PREAMBLE_UW = 6056250;
|
|
929
1012
|
function isSbasL1Preamble(msg) {
|
|
@@ -1066,6 +1149,7 @@ function decodeSbfNavigation(data, opts = {}) {
|
|
|
1066
1149
|
const ephemerides = [];
|
|
1067
1150
|
const seen = /* @__PURE__ */ new Set();
|
|
1068
1151
|
const cnav = [];
|
|
1152
|
+
const bdsCnav = [];
|
|
1069
1153
|
const ionoCorrections = {};
|
|
1070
1154
|
let leapSeconds = null;
|
|
1071
1155
|
const counts = {
|
|
@@ -1075,6 +1159,7 @@ function decodeSbfNavigation(data, opts = {}) {
|
|
|
1075
1159
|
galRaw: 0,
|
|
1076
1160
|
gloRaw: 0,
|
|
1077
1161
|
bdsRaw: 0,
|
|
1162
|
+
bdsCnavRaw: 0,
|
|
1078
1163
|
sbasRaw: 0,
|
|
1079
1164
|
sbasL5Raw: 0,
|
|
1080
1165
|
navicRaw: 0,
|
|
@@ -1086,6 +1171,7 @@ function decodeSbfNavigation(data, opts = {}) {
|
|
|
1086
1171
|
const galAsm = newGalAssemblers();
|
|
1087
1172
|
const gloAsm = new GloStringAssembler();
|
|
1088
1173
|
const bdsAsm = new BdsAssembler();
|
|
1174
|
+
const bdsCnavAsm = newBdsCnavAssemblers();
|
|
1089
1175
|
const lnavAsm = new GpsLnavAssembler();
|
|
1090
1176
|
const navicAsm = new NavicAssembler();
|
|
1091
1177
|
const addEph = (e) => {
|
|
@@ -1192,6 +1278,17 @@ function decodeSbfNavigation(data, opts = {}) {
|
|
|
1192
1278
|
else if (r.badCrc) counts.badFrames++;
|
|
1193
1279
|
return;
|
|
1194
1280
|
}
|
|
1281
|
+
case 4218:
|
|
1282
|
+
// BDSRawB1C
|
|
1283
|
+
case 4219:
|
|
1284
|
+
// BDSRawB2a
|
|
1285
|
+
case 4242: {
|
|
1286
|
+
counts.bdsCnavRaw++;
|
|
1287
|
+
const r = feedBdsCnavBlock(view, b, id, len, bdsCnavAsm);
|
|
1288
|
+
if (r.eph) bdsCnav.push(r.eph);
|
|
1289
|
+
else if (r.badCrc) counts.badFrames++;
|
|
1290
|
+
return;
|
|
1291
|
+
}
|
|
1195
1292
|
case 4020: {
|
|
1196
1293
|
if (len < 52) return;
|
|
1197
1294
|
counts.sbasRaw++;
|
|
@@ -1248,7 +1345,15 @@ function decodeSbfNavigation(data, opts = {}) {
|
|
|
1248
1345
|
prns: [...dfmcPrns].sort(),
|
|
1249
1346
|
messages: Object.values(dfmcByType).reduce((a, v) => a + v, 0)
|
|
1250
1347
|
};
|
|
1251
|
-
return {
|
|
1348
|
+
return {
|
|
1349
|
+
ephemerides,
|
|
1350
|
+
cnav,
|
|
1351
|
+
bdsCnav,
|
|
1352
|
+
ionoCorrections,
|
|
1353
|
+
leapSeconds,
|
|
1354
|
+
dfmc,
|
|
1355
|
+
counts
|
|
1356
|
+
};
|
|
1252
1357
|
}
|
|
1253
1358
|
|
|
1254
1359
|
// src/navbits/rs255.ts
|
|
@@ -2458,6 +2563,7 @@ export {
|
|
|
2458
2563
|
parseSbfGalNav,
|
|
2459
2564
|
parseSbfBdsNav,
|
|
2460
2565
|
parseSbfGloNav,
|
|
2566
|
+
parseSbfBdsCnav,
|
|
2461
2567
|
SBAS_L5_PREAMBLE_UW,
|
|
2462
2568
|
isSbasL1Preamble,
|
|
2463
2569
|
sbasL5MessageType,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
decodeSbasGeoNav
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H3AKFD25.js";
|
|
4
4
|
import {
|
|
5
5
|
getUtcDate
|
|
6
6
|
} from "./chunk-HVXYFUCB.js";
|
|
7
7
|
import {
|
|
8
8
|
CnavAssembler,
|
|
9
9
|
cnavCrcOk
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HUXQABJI.js";
|
|
11
11
|
import {
|
|
12
12
|
decodeGpsLnavFrame
|
|
13
13
|
} from "./chunk-V2D5KUKH.js";
|