gnss-js 0.1.2 → 1.0.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.
Files changed (87) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +171 -5
  3. package/dist/analysis.cjs +1381 -0
  4. package/dist/analysis.d.cts +211 -0
  5. package/dist/analysis.d.ts +211 -0
  6. package/dist/analysis.js +14 -0
  7. package/dist/antex.cjs +239 -0
  8. package/dist/antex.d.cts +77 -0
  9. package/dist/antex.d.ts +77 -0
  10. package/dist/antex.js +8 -0
  11. package/dist/chunk-354IRDOG.js +239 -0
  12. package/dist/chunk-37QNKGTC.js +65 -0
  13. package/dist/chunk-5CMSYIYM.js +214 -0
  14. package/dist/chunk-5S5MONFK.js +0 -0
  15. package/dist/chunk-6FAL6P4G.js +12 -0
  16. package/dist/chunk-7NOFXKET.js +433 -0
  17. package/dist/chunk-CB6EOOLA.js +753 -0
  18. package/dist/chunk-HKN3PUGN.js +800 -0
  19. package/dist/chunk-IS4UUDBV.js +577 -0
  20. package/dist/chunk-K7WZQFBV.js +236 -0
  21. package/dist/chunk-LEEU5OIO.js +75 -0
  22. package/dist/chunk-PRSZIWKM.js +1482 -0
  23. package/dist/chunk-SDRRAJT5.js +433 -0
  24. package/dist/chunk-WR7LCB52.js +143 -0
  25. package/dist/chunk-Y3R57B5P.js +473 -0
  26. package/dist/chunk-YDMYO3YK.js +220 -0
  27. package/dist/constants.cjs +394 -0
  28. package/dist/constants.d.cts +14 -0
  29. package/dist/constants.d.ts +14 -0
  30. package/dist/constants.js +103 -0
  31. package/dist/coordinates.cjs +334 -0
  32. package/dist/coordinates.d.cts +81 -0
  33. package/dist/coordinates.d.ts +81 -0
  34. package/dist/coordinates.js +39 -0
  35. package/dist/ecef-CF0uAysr.d.cts +40 -0
  36. package/dist/ecef-CF0uAysr.d.ts +40 -0
  37. package/dist/ephemeris-BUWzfmBy.d.cts +114 -0
  38. package/dist/ephemeris-BUWzfmBy.d.ts +114 -0
  39. package/dist/gnss-BT6ulR17.d.cts +56 -0
  40. package/dist/gnss-C-tgoYNa.d.ts +56 -0
  41. package/dist/index.cjs +5774 -78
  42. package/dist/index.d.cts +17 -96
  43. package/dist/index.d.ts +17 -96
  44. package/dist/index.js +352 -415
  45. package/dist/nav-BAI1a9vK.d.cts +108 -0
  46. package/dist/nav-BAI1a9vK.d.ts +108 -0
  47. package/dist/nmea.cjs +247 -0
  48. package/dist/nmea.d.cts +37 -0
  49. package/dist/nmea.d.ts +37 -0
  50. package/dist/nmea.js +12 -0
  51. package/dist/ntrip.cjs +169 -0
  52. package/dist/ntrip.d.cts +98 -0
  53. package/dist/ntrip.d.ts +98 -0
  54. package/dist/ntrip.js +10 -0
  55. package/dist/orbit.cjs +504 -0
  56. package/dist/orbit.d.cts +117 -0
  57. package/dist/orbit.d.ts +117 -0
  58. package/dist/orbit.js +29 -0
  59. package/dist/parser-JPjjFgeP.d.cts +73 -0
  60. package/dist/parser-JPjjFgeP.d.ts +73 -0
  61. package/dist/rinex.cjs +1375 -0
  62. package/dist/rinex.d.cts +116 -0
  63. package/dist/rinex.d.ts +116 -0
  64. package/dist/rinex.js +37 -0
  65. package/dist/rtcm3.cjs +1519 -0
  66. package/dist/rtcm3.d.cts +143 -0
  67. package/dist/rtcm3.d.ts +143 -0
  68. package/dist/rtcm3.js +31 -0
  69. package/dist/signals.cjs +858 -0
  70. package/dist/signals.d.cts +93 -0
  71. package/dist/signals.d.ts +93 -0
  72. package/dist/signals.js +70 -0
  73. package/dist/time-DnI1VpE8.d.cts +33 -0
  74. package/dist/time-DnI1VpE8.d.ts +33 -0
  75. package/dist/time.cjs +585 -0
  76. package/dist/time.d.cts +307 -0
  77. package/dist/time.d.ts +307 -0
  78. package/dist/time.js +154 -0
  79. package/package.json +112 -14
  80. package/.prettierrc +0 -5
  81. package/jest.config.ts +0 -9
  82. package/test/functions.test.ts +0 -63
  83. package/test/gnss-scales.test.ts +0 -95
  84. package/test/julian.test.ts +0 -145
  85. package/test/rinex.test.ts +0 -11
  86. package/test/test.ts +0 -10
  87. package/test/utc.test.ts +0 -25
@@ -0,0 +1,93 @@
1
+ /**
2
+ * GNSS signal definitions for PSD spectrum rendering.
3
+ * Frequencies in MHz, chip rates relative to f0 = 1.023 MHz.
4
+ */
5
+ declare const FREQ_GPS_L1 = 1575.42;
6
+ declare const FREQ_GPS_L2 = 1227.6;
7
+ declare const FREQ_GPS_L5 = 1176.45;
8
+ declare const FREQ_GLO_L1 = 1602;
9
+ declare const FREQ_GLO_L2 = 1246;
10
+ declare const DELTA_GLO_L1 = 0.5625;
11
+ declare const DELTA_GLO_L2 = 0.4375;
12
+ declare const FREQ_GLO_L1OC = 1600.995;
13
+ declare const FREQ_GLO_L2OC = 1248.06;
14
+ declare const FREQ_GLO_L3OC = 1202.025;
15
+ declare const FREQ_GAL_E1 = 1575.42;
16
+ declare const FREQ_GAL_E5 = 1191.795;
17
+ declare const FREQ_GAL_E5a = 1176.45;
18
+ declare const FREQ_GAL_E5b = 1207.14;
19
+ declare const FREQ_GAL_E6 = 1278.75;
20
+ declare const FREQ_BDS_B1I = 1561.098;
21
+ declare const FREQ_BDS_B2I = 1207.14;
22
+ declare const FREQ_BDS_B3I = 1268.52;
23
+ declare const FREQ_BDS_B1A = 1575.42;
24
+ declare const FREQ_BDS_B1C = 1575.42;
25
+ declare const FREQ_BDS_B3A = 1268.52;
26
+ declare const FREQ_QZS_L1 = 1575.42;
27
+ declare const FREQ_QZS_L2 = 1227.6;
28
+ declare const FREQ_QZS_L5 = 1176.45;
29
+ declare const FREQ_QZS_L6 = 1278.75;
30
+ declare const FREQ_NAVIC_L5 = 1176.45;
31
+ type Modulation = 'BPSK' | 'BOCs' | 'BOCc' | 'AltBOC' | 'composite';
32
+ interface SignalDef {
33
+ /** Parent constellation key */
34
+ constellation: string;
35
+ /** Display label (e.g. "L1 C/A") */
36
+ label: string;
37
+ /** Center frequency in MHz */
38
+ centerMHz: number;
39
+ /** Modulation type */
40
+ modulation: Modulation;
41
+ /** Modulation parameters: [n] for BPSK, [m, n] for BOC/AltBOC */
42
+ params: number[];
43
+ /** Half-span in f0 chips for the frequency sweep */
44
+ halfSpanChips: number;
45
+ /** Fill color */
46
+ color: string;
47
+ /** Draw direction: 'up' for I/data components, 'down' for Q/pilot components */
48
+ direction: 'up' | 'down';
49
+ /** Optional: composite PSD function coefficients for weighted sums */
50
+ composite?: {
51
+ weights: number[];
52
+ modulations: Modulation[];
53
+ paramSets: number[][];
54
+ };
55
+ }
56
+ interface ConstellationRow {
57
+ key: string;
58
+ label: string;
59
+ color: string;
60
+ signals: SignalDef[];
61
+ }
62
+ declare const CONSTELLATIONS: ConstellationRow[];
63
+ interface BandPreset {
64
+ label: string;
65
+ minMHz: number;
66
+ maxMHz: number;
67
+ }
68
+ declare const BAND_PRESETS: BandPreset[];
69
+
70
+ /**
71
+ * GNSS signal Power Spectral Density (PSD) functions.
72
+ *
73
+ * Ported from Python (gnss-utils/utils/signals/psd.py).
74
+ * All frequency inputs are in Hz; output is linear power spectral density.
75
+ */
76
+ /** BPSK PSD: φ(f) = (1 / f₀n) · sinc²(f / f₀n) */
77
+ declare function phiBPSK(f: number, f0: number, n: number): number;
78
+ /** BOC sine-phased PSD */
79
+ declare function phiBOCs(f: number, f0: number, m: number, n: number): number;
80
+ /** BOC cosine-phased PSD */
81
+ declare function phiBOCc(f: number, f0: number, m: number, n: number): number;
82
+ /** AltBOC (constant envelope) PSD */
83
+ declare function phiAltBOC(f: number, f0: number, m: number, n: number): number;
84
+ /**
85
+ * Compute PSD in dB over a frequency range.
86
+ * Returns Float64Array of 10·log₁₀(φ(f)) values, clamped to a floor.
87
+ */
88
+ declare function computePsdDb(centerMHz: number, halfSpanChips: number, numPoints: number, psdFn: (f: number) => number, f0?: number, floorDb?: number): {
89
+ freqsMHz: Float64Array;
90
+ psdDb: Float64Array;
91
+ };
92
+
93
+ export { BAND_PRESETS, type BandPreset, CONSTELLATIONS, type ConstellationRow, DELTA_GLO_L1, DELTA_GLO_L2, FREQ_BDS_B1A, FREQ_BDS_B1C, FREQ_BDS_B1I, FREQ_BDS_B2I, FREQ_BDS_B3A, FREQ_BDS_B3I, FREQ_GAL_E1, FREQ_GAL_E5, FREQ_GAL_E5a, FREQ_GAL_E5b, FREQ_GAL_E6, FREQ_GLO_L1, FREQ_GLO_L1OC, FREQ_GLO_L2, FREQ_GLO_L2OC, FREQ_GLO_L3OC, FREQ_GPS_L1, FREQ_GPS_L2, FREQ_GPS_L5, FREQ_NAVIC_L5, FREQ_QZS_L1, FREQ_QZS_L2, FREQ_QZS_L5, FREQ_QZS_L6, type Modulation, type SignalDef, computePsdDb, phiAltBOC, phiBOCc, phiBOCs, phiBPSK };
@@ -0,0 +1,93 @@
1
+ /**
2
+ * GNSS signal definitions for PSD spectrum rendering.
3
+ * Frequencies in MHz, chip rates relative to f0 = 1.023 MHz.
4
+ */
5
+ declare const FREQ_GPS_L1 = 1575.42;
6
+ declare const FREQ_GPS_L2 = 1227.6;
7
+ declare const FREQ_GPS_L5 = 1176.45;
8
+ declare const FREQ_GLO_L1 = 1602;
9
+ declare const FREQ_GLO_L2 = 1246;
10
+ declare const DELTA_GLO_L1 = 0.5625;
11
+ declare const DELTA_GLO_L2 = 0.4375;
12
+ declare const FREQ_GLO_L1OC = 1600.995;
13
+ declare const FREQ_GLO_L2OC = 1248.06;
14
+ declare const FREQ_GLO_L3OC = 1202.025;
15
+ declare const FREQ_GAL_E1 = 1575.42;
16
+ declare const FREQ_GAL_E5 = 1191.795;
17
+ declare const FREQ_GAL_E5a = 1176.45;
18
+ declare const FREQ_GAL_E5b = 1207.14;
19
+ declare const FREQ_GAL_E6 = 1278.75;
20
+ declare const FREQ_BDS_B1I = 1561.098;
21
+ declare const FREQ_BDS_B2I = 1207.14;
22
+ declare const FREQ_BDS_B3I = 1268.52;
23
+ declare const FREQ_BDS_B1A = 1575.42;
24
+ declare const FREQ_BDS_B1C = 1575.42;
25
+ declare const FREQ_BDS_B3A = 1268.52;
26
+ declare const FREQ_QZS_L1 = 1575.42;
27
+ declare const FREQ_QZS_L2 = 1227.6;
28
+ declare const FREQ_QZS_L5 = 1176.45;
29
+ declare const FREQ_QZS_L6 = 1278.75;
30
+ declare const FREQ_NAVIC_L5 = 1176.45;
31
+ type Modulation = 'BPSK' | 'BOCs' | 'BOCc' | 'AltBOC' | 'composite';
32
+ interface SignalDef {
33
+ /** Parent constellation key */
34
+ constellation: string;
35
+ /** Display label (e.g. "L1 C/A") */
36
+ label: string;
37
+ /** Center frequency in MHz */
38
+ centerMHz: number;
39
+ /** Modulation type */
40
+ modulation: Modulation;
41
+ /** Modulation parameters: [n] for BPSK, [m, n] for BOC/AltBOC */
42
+ params: number[];
43
+ /** Half-span in f0 chips for the frequency sweep */
44
+ halfSpanChips: number;
45
+ /** Fill color */
46
+ color: string;
47
+ /** Draw direction: 'up' for I/data components, 'down' for Q/pilot components */
48
+ direction: 'up' | 'down';
49
+ /** Optional: composite PSD function coefficients for weighted sums */
50
+ composite?: {
51
+ weights: number[];
52
+ modulations: Modulation[];
53
+ paramSets: number[][];
54
+ };
55
+ }
56
+ interface ConstellationRow {
57
+ key: string;
58
+ label: string;
59
+ color: string;
60
+ signals: SignalDef[];
61
+ }
62
+ declare const CONSTELLATIONS: ConstellationRow[];
63
+ interface BandPreset {
64
+ label: string;
65
+ minMHz: number;
66
+ maxMHz: number;
67
+ }
68
+ declare const BAND_PRESETS: BandPreset[];
69
+
70
+ /**
71
+ * GNSS signal Power Spectral Density (PSD) functions.
72
+ *
73
+ * Ported from Python (gnss-utils/utils/signals/psd.py).
74
+ * All frequency inputs are in Hz; output is linear power spectral density.
75
+ */
76
+ /** BPSK PSD: φ(f) = (1 / f₀n) · sinc²(f / f₀n) */
77
+ declare function phiBPSK(f: number, f0: number, n: number): number;
78
+ /** BOC sine-phased PSD */
79
+ declare function phiBOCs(f: number, f0: number, m: number, n: number): number;
80
+ /** BOC cosine-phased PSD */
81
+ declare function phiBOCc(f: number, f0: number, m: number, n: number): number;
82
+ /** AltBOC (constant envelope) PSD */
83
+ declare function phiAltBOC(f: number, f0: number, m: number, n: number): number;
84
+ /**
85
+ * Compute PSD in dB over a frequency range.
86
+ * Returns Float64Array of 10·log₁₀(φ(f)) values, clamped to a floor.
87
+ */
88
+ declare function computePsdDb(centerMHz: number, halfSpanChips: number, numPoints: number, psdFn: (f: number) => number, f0?: number, floorDb?: number): {
89
+ freqsMHz: Float64Array;
90
+ psdDb: Float64Array;
91
+ };
92
+
93
+ export { BAND_PRESETS, type BandPreset, CONSTELLATIONS, type ConstellationRow, DELTA_GLO_L1, DELTA_GLO_L2, FREQ_BDS_B1A, FREQ_BDS_B1C, FREQ_BDS_B1I, FREQ_BDS_B2I, FREQ_BDS_B3A, FREQ_BDS_B3I, FREQ_GAL_E1, FREQ_GAL_E5, FREQ_GAL_E5a, FREQ_GAL_E5b, FREQ_GAL_E6, FREQ_GLO_L1, FREQ_GLO_L1OC, FREQ_GLO_L2, FREQ_GLO_L2OC, FREQ_GLO_L3OC, FREQ_GPS_L1, FREQ_GPS_L2, FREQ_GPS_L5, FREQ_NAVIC_L5, FREQ_QZS_L1, FREQ_QZS_L2, FREQ_QZS_L5, FREQ_QZS_L6, type Modulation, type SignalDef, computePsdDb, phiAltBOC, phiBOCc, phiBOCs, phiBPSK };
@@ -0,0 +1,70 @@
1
+ import {
2
+ BAND_PRESETS,
3
+ CONSTELLATIONS,
4
+ DELTA_GLO_L1,
5
+ DELTA_GLO_L2,
6
+ FREQ_BDS_B1A,
7
+ FREQ_BDS_B1C,
8
+ FREQ_BDS_B1I,
9
+ FREQ_BDS_B2I,
10
+ FREQ_BDS_B3A,
11
+ FREQ_BDS_B3I,
12
+ FREQ_GAL_E1,
13
+ FREQ_GAL_E5,
14
+ FREQ_GAL_E5a,
15
+ FREQ_GAL_E5b,
16
+ FREQ_GAL_E6,
17
+ FREQ_GLO_L1,
18
+ FREQ_GLO_L1OC,
19
+ FREQ_GLO_L2,
20
+ FREQ_GLO_L2OC,
21
+ FREQ_GLO_L3OC,
22
+ FREQ_GPS_L1,
23
+ FREQ_GPS_L2,
24
+ FREQ_GPS_L5,
25
+ FREQ_NAVIC_L5,
26
+ FREQ_QZS_L1,
27
+ FREQ_QZS_L2,
28
+ FREQ_QZS_L5,
29
+ FREQ_QZS_L6,
30
+ computePsdDb,
31
+ phiAltBOC,
32
+ phiBOCc,
33
+ phiBOCs,
34
+ phiBPSK
35
+ } from "./chunk-HKN3PUGN.js";
36
+ export {
37
+ BAND_PRESETS,
38
+ CONSTELLATIONS,
39
+ DELTA_GLO_L1,
40
+ DELTA_GLO_L2,
41
+ FREQ_BDS_B1A,
42
+ FREQ_BDS_B1C,
43
+ FREQ_BDS_B1I,
44
+ FREQ_BDS_B2I,
45
+ FREQ_BDS_B3A,
46
+ FREQ_BDS_B3I,
47
+ FREQ_GAL_E1,
48
+ FREQ_GAL_E5,
49
+ FREQ_GAL_E5a,
50
+ FREQ_GAL_E5b,
51
+ FREQ_GAL_E6,
52
+ FREQ_GLO_L1,
53
+ FREQ_GLO_L1OC,
54
+ FREQ_GLO_L2,
55
+ FREQ_GLO_L2OC,
56
+ FREQ_GLO_L3OC,
57
+ FREQ_GPS_L1,
58
+ FREQ_GPS_L2,
59
+ FREQ_GPS_L5,
60
+ FREQ_NAVIC_L5,
61
+ FREQ_QZS_L1,
62
+ FREQ_QZS_L2,
63
+ FREQ_QZS_L5,
64
+ FREQ_QZS_L6,
65
+ computePsdDb,
66
+ phiAltBOC,
67
+ phiBOCc,
68
+ phiBOCs,
69
+ phiBPSK
70
+ };
@@ -0,0 +1,33 @@
1
+ type TimeDifference = {
2
+ seconds: number;
3
+ minutes: number;
4
+ hours: number;
5
+ days: number;
6
+ };
7
+ type HourCode = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x';
8
+
9
+ declare const SECONDS_IN_WEEK: number;
10
+ declare const SECONDS_IN_DAY: number;
11
+ declare const SECONDS_IN_HOUR: number;
12
+ declare const SECONDS_IN_MINUTE: number;
13
+ declare const MILLISECONDS_IN_WEEK: number;
14
+ declare const MILLISECONDS_IN_DAY: number;
15
+ declare const MILLISECONDS_IN_HOUR: number;
16
+ declare const MILLISECONDS_IN_MINUTE: number;
17
+ declare const MILLISECONDS_IN_SECOND: number;
18
+ declare const MILLISECONDS_TT_TAI: number;
19
+ declare const MILLISECONDS_GPS_TAI: number;
20
+ declare const START_GPS_TIME: Date;
21
+ declare const START_GAL_TIME: Date;
22
+ declare const START_BDS_TIME: Date;
23
+ declare const START_UNIX_TIME: Date;
24
+ declare const START_NTP_TIME: Date;
25
+ declare const START_GLO_LEAP: Date;
26
+ declare const START_TAI_TIME: Date;
27
+ declare const RINEX_CODES: HourCode[];
28
+ declare const START_JULIAN_TAI = 2436204.5;
29
+ declare const DAYS_MJD_JULIAN = 2400000.5;
30
+ declare const DAYS_MJD2000_MJD = 51544.5;
31
+ declare const START_MJD_UNIX_SECONDS = 40587;
32
+
33
+ export { DAYS_MJD2000_MJD as D, type HourCode as H, MILLISECONDS_GPS_TAI as M, RINEX_CODES as R, SECONDS_IN_DAY as S, type TimeDifference as T, DAYS_MJD_JULIAN as a, MILLISECONDS_IN_DAY as b, MILLISECONDS_IN_HOUR as c, MILLISECONDS_IN_MINUTE as d, MILLISECONDS_IN_SECOND as e, MILLISECONDS_IN_WEEK as f, MILLISECONDS_TT_TAI as g, SECONDS_IN_HOUR as h, SECONDS_IN_MINUTE as i, SECONDS_IN_WEEK as j, START_BDS_TIME as k, START_GAL_TIME as l, START_GLO_LEAP as m, START_GPS_TIME as n, START_JULIAN_TAI as o, START_MJD_UNIX_SECONDS as p, START_NTP_TIME as q, START_TAI_TIME as r, START_UNIX_TIME as s };
@@ -0,0 +1,33 @@
1
+ type TimeDifference = {
2
+ seconds: number;
3
+ minutes: number;
4
+ hours: number;
5
+ days: number;
6
+ };
7
+ type HourCode = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x';
8
+
9
+ declare const SECONDS_IN_WEEK: number;
10
+ declare const SECONDS_IN_DAY: number;
11
+ declare const SECONDS_IN_HOUR: number;
12
+ declare const SECONDS_IN_MINUTE: number;
13
+ declare const MILLISECONDS_IN_WEEK: number;
14
+ declare const MILLISECONDS_IN_DAY: number;
15
+ declare const MILLISECONDS_IN_HOUR: number;
16
+ declare const MILLISECONDS_IN_MINUTE: number;
17
+ declare const MILLISECONDS_IN_SECOND: number;
18
+ declare const MILLISECONDS_TT_TAI: number;
19
+ declare const MILLISECONDS_GPS_TAI: number;
20
+ declare const START_GPS_TIME: Date;
21
+ declare const START_GAL_TIME: Date;
22
+ declare const START_BDS_TIME: Date;
23
+ declare const START_UNIX_TIME: Date;
24
+ declare const START_NTP_TIME: Date;
25
+ declare const START_GLO_LEAP: Date;
26
+ declare const START_TAI_TIME: Date;
27
+ declare const RINEX_CODES: HourCode[];
28
+ declare const START_JULIAN_TAI = 2436204.5;
29
+ declare const DAYS_MJD_JULIAN = 2400000.5;
30
+ declare const DAYS_MJD2000_MJD = 51544.5;
31
+ declare const START_MJD_UNIX_SECONDS = 40587;
32
+
33
+ export { DAYS_MJD2000_MJD as D, type HourCode as H, MILLISECONDS_GPS_TAI as M, RINEX_CODES as R, SECONDS_IN_DAY as S, type TimeDifference as T, DAYS_MJD_JULIAN as a, MILLISECONDS_IN_DAY as b, MILLISECONDS_IN_HOUR as c, MILLISECONDS_IN_MINUTE as d, MILLISECONDS_IN_SECOND as e, MILLISECONDS_IN_WEEK as f, MILLISECONDS_TT_TAI as g, SECONDS_IN_HOUR as h, SECONDS_IN_MINUTE as i, SECONDS_IN_WEEK as j, START_BDS_TIME as k, START_GAL_TIME as l, START_GLO_LEAP as m, START_GPS_TIME as n, START_JULIAN_TAI as o, START_MJD_UNIX_SECONDS as p, START_NTP_TIME as q, START_TAI_TIME as r, START_UNIX_TIME as s };