-
Notifications
You must be signed in to change notification settings - Fork 97
/
Copy pathSbpJson.ts
6396 lines (5743 loc) · 238 KB
/
SbpJson.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// To parse this data:
//
// import { Convert, AcqSvProfile, AlmanacCommonContent, BoundsHeader, CarrierPhase, CodeBiasesContent, CodePhaseBiasesSatSig, Doppler, ECDSASignature, EphemerisCommonContent, EstimatedHorizontalErrorEllipse, GNSSInputType, GnssCapb, GnssSignal, GpsTime, GpsTimeSEC, GridElement, GridElementNoStd, GriddedCorrectionHeader, IMUInputType, IntegritySSRHeader, Latency, MeasurementState, MsgAcknowledge, MsgAcqResult, MsgAcqSvProfile, MsgAgeCorrections, MsgAlmanacGPS, MsgAlmanacGlo, MsgAngularRate, MsgBasePosECEF, MsgBasePosLLH, MsgBaselineECEF, MsgBaselineHeading, MsgBaselineNED, MsgBootloaderHandshakeResp, MsgBootloaderJumpToApp, MsgCellModemStatus, MsgCertificateChain, MsgCommandOutput, MsgCommandReq, MsgCommandResp, MsgCsacTelemetry, MsgCsacTelemetryLabels, MsgDeviceMonitor, MsgDgnssStatus, MsgDops, MsgEcdsaCertificate, MsgEcdsaSignature, MsgEphemerisBds, MsgEphemerisGPS, MsgEphemerisGal, MsgEphemerisGlo, MsgEphemerisQzss, MsgEphemerisSbas, MsgEXTEvent, MsgFileioConfigReq, MsgFileioConfigResp, MsgFileioReadDirReq, MsgFileioReadDirResp, MsgFileioReadReq, MsgFileioReadResp, MsgFileioRemove, MsgFileioWriteReq, MsgFileioWriteResp, MsgFlashDone, MsgFlashErase, MsgFlashProgram, MsgFlashReadReq, MsgFlashReadResp, MsgFrontEndGain, MsgFwd, MsgGPSTime, MsgGPSTimeGnss, MsgGloBiases, MsgGnssCapb, MsgGnssTimeOffset, MsgGroupDelay, MsgGroupMeta, MsgHeartbeat, MsgIarState, MsgImuAux, MsgImuRaw, MsgInsStatus, MsgInsUpdates, MsgIono, MsgLinuxCPUState, MsgLinuxMemState, MsgLinuxProcessFdCount, MsgLinuxProcessFdSummary, MsgLinuxProcessSocketCounts, MsgLinuxProcessSocketQueues, MsgLinuxSocketUsage, MsgLinuxSysState, MsgLog, MsgM25FlashWriteStatus, MsgMagRaw, MsgMaskSatellite, MsgMeasurementState, MsgNapDeviceDnaResp, MsgNdbEvent, MsgNetworkBandwidthUsage, MsgNetworkStateResp, MsgObs, MsgOdometry, MsgOrientEuler, MsgOrientQuat, MsgOsr, MsgPosECEF, MsgPosECEFCov, MsgPosECEFCovGnss, MsgPosECEFGnss, MsgPosLLH, MsgPosLLHAcc, MsgPosLLHCov, MsgPosLLHCovGnss, MsgPosLLHGnss, MsgPoseRelative, MsgPpsTime, MsgProtectionLevel, MsgReferenceFrameParam, MsgReset, MsgResetFilters, MsgSbasRaw, MsgSensorAidEvent, MsgSettingsReadByIndexReq, MsgSettingsReadByIndexResp, MsgSettingsReadReq, MsgSettingsReadResp, MsgSettingsRegister, MsgSettingsRegisterResp, MsgSettingsWrite, MsgSettingsWriteResp, MsgSolnMeta, MsgSpecan, MsgSsrCodeBiases, MsgSsrCodePhaseBiasesBounds, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, MsgSsrPhaseBiases, MsgSsrSatelliteApc, MsgSsrStecCorrection, MsgSsrTileDefinition, MsgStartup, MsgStatusJournal, MsgStatusReport, MsgStmFlashLockSector, MsgStmFlashUnlockSector, MsgStmUniqueIDResp, MsgSvAzEl, MsgTelSv, MsgThreadState, MsgTrackingIq, MsgTrackingState, MsgUARTState, MsgUserData, MsgUTCLeapSecond, MsgUTCTime, MsgUTCTimeGnss, MsgVelBody, MsgVelCog, MsgVelECEF, MsgVelECEFCov, MsgVelECEFCovGnss, MsgVelECEFGnss, MsgVelNED, MsgVelNEDCov, MsgVelNEDCovGnss, MsgVelNEDGnss, MsgWheeltick, NetworkUsage, ObservationHeader, OdoInputType, OrbitClockBound, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TelemetrySV, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel, UTCTime } from "./file";
//
// const acqSvProfile = Convert.toAcqSvProfile(json);
// const almanacCommonContent = Convert.toAlmanacCommonContent(json);
// const boundsHeader = Convert.toBoundsHeader(json);
// const carrierPhase = Convert.toCarrierPhase(json);
// const codeBiasesContent = Convert.toCodeBiasesContent(json);
// const codePhaseBiasesSatSig = Convert.toCodePhaseBiasesSatSig(json);
// const doppler = Convert.toDoppler(json);
// const eCDSASignature = Convert.toECDSASignature(json);
// const ephemerisCommonContent = Convert.toEphemerisCommonContent(json);
// const estimatedHorizontalErrorEllipse = Convert.toEstimatedHorizontalErrorEllipse(json);
// const gNSSInputType = Convert.toGNSSInputType(json);
// const gnssCapb = Convert.toGnssCapb(json);
// const gnssSignal = Convert.toGnssSignal(json);
// const gpsTime = Convert.toGpsTime(json);
// const gpsTimeSEC = Convert.toGpsTimeSEC(json);
// const gridElement = Convert.toGridElement(json);
// const gridElementNoStd = Convert.toGridElementNoStd(json);
// const griddedCorrectionHeader = Convert.toGriddedCorrectionHeader(json);
// const iMUInputType = Convert.toIMUInputType(json);
// const integritySSRHeader = Convert.toIntegritySSRHeader(json);
// const latency = Convert.toLatency(json);
// const measurementState = Convert.toMeasurementState(json);
// const msgAcknowledge = Convert.toMsgAcknowledge(json);
// const msgAcqResult = Convert.toMsgAcqResult(json);
// const msgAcqSvProfile = Convert.toMsgAcqSvProfile(json);
// const msgAgeCorrections = Convert.toMsgAgeCorrections(json);
// const msgAlmanac = Convert.toMsgAlmanac(json);
// const msgAlmanacGPS = Convert.toMsgAlmanacGPS(json);
// const msgAlmanacGlo = Convert.toMsgAlmanacGlo(json);
// const msgAngularRate = Convert.toMsgAngularRate(json);
// const msgBasePosECEF = Convert.toMsgBasePosECEF(json);
// const msgBasePosLLH = Convert.toMsgBasePosLLH(json);
// const msgBaselineECEF = Convert.toMsgBaselineECEF(json);
// const msgBaselineHeading = Convert.toMsgBaselineHeading(json);
// const msgBaselineNED = Convert.toMsgBaselineNED(json);
// const msgBootloaderHandshakeReq = Convert.toMsgBootloaderHandshakeReq(json);
// const msgBootloaderHandshakeResp = Convert.toMsgBootloaderHandshakeResp(json);
// const msgBootloaderJumpToApp = Convert.toMsgBootloaderJumpToApp(json);
// const msgCellModemStatus = Convert.toMsgCellModemStatus(json);
// const msgCertificateChain = Convert.toMsgCertificateChain(json);
// const msgCommandOutput = Convert.toMsgCommandOutput(json);
// const msgCommandReq = Convert.toMsgCommandReq(json);
// const msgCommandResp = Convert.toMsgCommandResp(json);
// const msgCsacTelemetry = Convert.toMsgCsacTelemetry(json);
// const msgCsacTelemetryLabels = Convert.toMsgCsacTelemetryLabels(json);
// const msgCwResults = Convert.toMsgCwResults(json);
// const msgCwStart = Convert.toMsgCwStart(json);
// const msgDeviceMonitor = Convert.toMsgDeviceMonitor(json);
// const msgDgnssStatus = Convert.toMsgDgnssStatus(json);
// const msgDops = Convert.toMsgDops(json);
// const msgEcdsaCertificate = Convert.toMsgEcdsaCertificate(json);
// const msgEcdsaSignature = Convert.toMsgEcdsaSignature(json);
// const msgEphemerisBds = Convert.toMsgEphemerisBds(json);
// const msgEphemerisGPS = Convert.toMsgEphemerisGPS(json);
// const msgEphemerisGal = Convert.toMsgEphemerisGal(json);
// const msgEphemerisGlo = Convert.toMsgEphemerisGlo(json);
// const msgEphemerisQzss = Convert.toMsgEphemerisQzss(json);
// const msgEphemerisSbas = Convert.toMsgEphemerisSbas(json);
// const msgEXTEvent = Convert.toMsgEXTEvent(json);
// const msgFileioConfigReq = Convert.toMsgFileioConfigReq(json);
// const msgFileioConfigResp = Convert.toMsgFileioConfigResp(json);
// const msgFileioReadDirReq = Convert.toMsgFileioReadDirReq(json);
// const msgFileioReadDirResp = Convert.toMsgFileioReadDirResp(json);
// const msgFileioReadReq = Convert.toMsgFileioReadReq(json);
// const msgFileioReadResp = Convert.toMsgFileioReadResp(json);
// const msgFileioRemove = Convert.toMsgFileioRemove(json);
// const msgFileioWriteReq = Convert.toMsgFileioWriteReq(json);
// const msgFileioWriteResp = Convert.toMsgFileioWriteResp(json);
// const msgFlashDone = Convert.toMsgFlashDone(json);
// const msgFlashErase = Convert.toMsgFlashErase(json);
// const msgFlashProgram = Convert.toMsgFlashProgram(json);
// const msgFlashReadReq = Convert.toMsgFlashReadReq(json);
// const msgFlashReadResp = Convert.toMsgFlashReadResp(json);
// const msgFrontEndGain = Convert.toMsgFrontEndGain(json);
// const msgFwd = Convert.toMsgFwd(json);
// const msgGPSTime = Convert.toMsgGPSTime(json);
// const msgGPSTimeGnss = Convert.toMsgGPSTimeGnss(json);
// const msgGloBiases = Convert.toMsgGloBiases(json);
// const msgGnssCapb = Convert.toMsgGnssCapb(json);
// const msgGnssTimeOffset = Convert.toMsgGnssTimeOffset(json);
// const msgGroupDelay = Convert.toMsgGroupDelay(json);
// const msgGroupMeta = Convert.toMsgGroupMeta(json);
// const msgHeartbeat = Convert.toMsgHeartbeat(json);
// const msgIarState = Convert.toMsgIarState(json);
// const msgImuAux = Convert.toMsgImuAux(json);
// const msgImuRaw = Convert.toMsgImuRaw(json);
// const msgInsStatus = Convert.toMsgInsStatus(json);
// const msgInsUpdates = Convert.toMsgInsUpdates(json);
// const msgIono = Convert.toMsgIono(json);
// const msgLinuxCPUState = Convert.toMsgLinuxCPUState(json);
// const msgLinuxMemState = Convert.toMsgLinuxMemState(json);
// const msgLinuxProcessFdCount = Convert.toMsgLinuxProcessFdCount(json);
// const msgLinuxProcessFdSummary = Convert.toMsgLinuxProcessFdSummary(json);
// const msgLinuxProcessSocketCounts = Convert.toMsgLinuxProcessSocketCounts(json);
// const msgLinuxProcessSocketQueues = Convert.toMsgLinuxProcessSocketQueues(json);
// const msgLinuxSocketUsage = Convert.toMsgLinuxSocketUsage(json);
// const msgLinuxSysState = Convert.toMsgLinuxSysState(json);
// const msgLog = Convert.toMsgLog(json);
// const msgM25FlashWriteStatus = Convert.toMsgM25FlashWriteStatus(json);
// const msgMagRaw = Convert.toMsgMagRaw(json);
// const msgMaskSatellite = Convert.toMsgMaskSatellite(json);
// const msgMeasurementState = Convert.toMsgMeasurementState(json);
// const msgNapDeviceDnaReq = Convert.toMsgNapDeviceDnaReq(json);
// const msgNapDeviceDnaResp = Convert.toMsgNapDeviceDnaResp(json);
// const msgNdbEvent = Convert.toMsgNdbEvent(json);
// const msgNetworkBandwidthUsage = Convert.toMsgNetworkBandwidthUsage(json);
// const msgNetworkStateReq = Convert.toMsgNetworkStateReq(json);
// const msgNetworkStateResp = Convert.toMsgNetworkStateResp(json);
// const msgObs = Convert.toMsgObs(json);
// const msgOdometry = Convert.toMsgOdometry(json);
// const msgOrientEuler = Convert.toMsgOrientEuler(json);
// const msgOrientQuat = Convert.toMsgOrientQuat(json);
// const msgOsr = Convert.toMsgOsr(json);
// const msgPosECEF = Convert.toMsgPosECEF(json);
// const msgPosECEFCov = Convert.toMsgPosECEFCov(json);
// const msgPosECEFCovGnss = Convert.toMsgPosECEFCovGnss(json);
// const msgPosECEFGnss = Convert.toMsgPosECEFGnss(json);
// const msgPosLLH = Convert.toMsgPosLLH(json);
// const msgPosLLHAcc = Convert.toMsgPosLLHAcc(json);
// const msgPosLLHCov = Convert.toMsgPosLLHCov(json);
// const msgPosLLHCovGnss = Convert.toMsgPosLLHCovGnss(json);
// const msgPosLLHGnss = Convert.toMsgPosLLHGnss(json);
// const msgPoseRelative = Convert.toMsgPoseRelative(json);
// const msgPpsTime = Convert.toMsgPpsTime(json);
// const msgProtectionLevel = Convert.toMsgProtectionLevel(json);
// const msgReferenceFrameParam = Convert.toMsgReferenceFrameParam(json);
// const msgReset = Convert.toMsgReset(json);
// const msgResetFilters = Convert.toMsgResetFilters(json);
// const msgSbasRaw = Convert.toMsgSbasRaw(json);
// const msgSensorAidEvent = Convert.toMsgSensorAidEvent(json);
// const msgSetTime = Convert.toMsgSetTime(json);
// const msgSettingsReadByIndexDone = Convert.toMsgSettingsReadByIndexDone(json);
// const msgSettingsReadByIndexReq = Convert.toMsgSettingsReadByIndexReq(json);
// const msgSettingsReadByIndexResp = Convert.toMsgSettingsReadByIndexResp(json);
// const msgSettingsReadReq = Convert.toMsgSettingsReadReq(json);
// const msgSettingsReadResp = Convert.toMsgSettingsReadResp(json);
// const msgSettingsRegister = Convert.toMsgSettingsRegister(json);
// const msgSettingsRegisterResp = Convert.toMsgSettingsRegisterResp(json);
// const msgSettingsSave = Convert.toMsgSettingsSave(json);
// const msgSettingsWrite = Convert.toMsgSettingsWrite(json);
// const msgSettingsWriteResp = Convert.toMsgSettingsWriteResp(json);
// const msgSolnMeta = Convert.toMsgSolnMeta(json);
// const msgSpecan = Convert.toMsgSpecan(json);
// const msgSsrCodeBiases = Convert.toMsgSsrCodeBiases(json);
// const msgSsrCodePhaseBiasesBounds = Convert.toMsgSsrCodePhaseBiasesBounds(json);
// const msgSsrFlagHighLevel = Convert.toMsgSsrFlagHighLevel(json);
// const msgSsrFlagIonoGridPointSatLos = Convert.toMsgSsrFlagIonoGridPointSatLos(json);
// const msgSsrFlagIonoGridPoints = Convert.toMsgSsrFlagIonoGridPoints(json);
// const msgSsrFlagIonoTileSatLos = Convert.toMsgSsrFlagIonoTileSatLos(json);
// const msgSsrFlagSatellites = Convert.toMsgSsrFlagSatellites(json);
// const msgSsrFlagTropoGridPoints = Convert.toMsgSsrFlagTropoGridPoints(json);
// const msgSsrGriddedCorrection = Convert.toMsgSsrGriddedCorrection(json);
// const msgSsrGriddedCorrectionBounds = Convert.toMsgSsrGriddedCorrectionBounds(json);
// const msgSsrOrbitClock = Convert.toMsgSsrOrbitClock(json);
// const msgSsrOrbitClockBounds = Convert.toMsgSsrOrbitClockBounds(json);
// const msgSsrOrbitClockBoundsDegradation = Convert.toMsgSsrOrbitClockBoundsDegradation(json);
// const msgSsrPhaseBiases = Convert.toMsgSsrPhaseBiases(json);
// const msgSsrSatelliteApc = Convert.toMsgSsrSatelliteApc(json);
// const msgSsrStecCorrection = Convert.toMsgSsrStecCorrection(json);
// const msgSsrTileDefinition = Convert.toMsgSsrTileDefinition(json);
// const msgStartup = Convert.toMsgStartup(json);
// const msgStatusJournal = Convert.toMsgStatusJournal(json);
// const msgStatusReport = Convert.toMsgStatusReport(json);
// const msgStmFlashLockSector = Convert.toMsgStmFlashLockSector(json);
// const msgStmFlashUnlockSector = Convert.toMsgStmFlashUnlockSector(json);
// const msgStmUniqueIDReq = Convert.toMsgStmUniqueIDReq(json);
// const msgStmUniqueIDResp = Convert.toMsgStmUniqueIDResp(json);
// const msgSvAzEl = Convert.toMsgSvAzEl(json);
// const msgTelSv = Convert.toMsgTelSv(json);
// const msgThreadState = Convert.toMsgThreadState(json);
// const msgTrackingIq = Convert.toMsgTrackingIq(json);
// const msgTrackingState = Convert.toMsgTrackingState(json);
// const msgUARTState = Convert.toMsgUARTState(json);
// const msgUserData = Convert.toMsgUserData(json);
// const msgUTCLeapSecond = Convert.toMsgUTCLeapSecond(json);
// const msgUTCTime = Convert.toMsgUTCTime(json);
// const msgUTCTimeGnss = Convert.toMsgUTCTimeGnss(json);
// const msgVelBody = Convert.toMsgVelBody(json);
// const msgVelCog = Convert.toMsgVelCog(json);
// const msgVelECEF = Convert.toMsgVelECEF(json);
// const msgVelECEFCov = Convert.toMsgVelECEFCov(json);
// const msgVelECEFCovGnss = Convert.toMsgVelECEFCovGnss(json);
// const msgVelECEFGnss = Convert.toMsgVelECEFGnss(json);
// const msgVelNED = Convert.toMsgVelNED(json);
// const msgVelNEDCov = Convert.toMsgVelNEDCov(json);
// const msgVelNEDCovGnss = Convert.toMsgVelNEDCovGnss(json);
// const msgVelNEDGnss = Convert.toMsgVelNEDGnss(json);
// const msgWheeltick = Convert.toMsgWheeltick(json);
// const networkUsage = Convert.toNetworkUsage(json);
// const observationHeader = Convert.toObservationHeader(json);
// const odoInputType = Convert.toOdoInputType(json);
// const orbitClockBound = Convert.toOrbitClockBound(json);
// const orbitClockBoundDegradation = Convert.toOrbitClockBoundDegradation(json);
// const packedObsContent = Convert.toPackedObsContent(json);
// const packedOsrContent = Convert.toPackedOsrContent(json);
// const period = Convert.toPeriod(json);
// const phaseBiasesContent = Convert.toPhaseBiasesContent(json);
// const sTECHeader = Convert.toSTECHeader(json);
// const sTECResidual = Convert.toSTECResidual(json);
// const sTECResidualNoStd = Convert.toSTECResidualNoStd(json);
// const sTECSatElement = Convert.toSTECSatElement(json);
// const sTECSatElementIntegrity = Convert.toSTECSatElementIntegrity(json);
// const satelliteAPC = Convert.toSatelliteAPC(json);
// const solutionInputType = Convert.toSolutionInputType(json);
// const statusJournalItem = Convert.toStatusJournalItem(json);
// const subSystemReport = Convert.toSubSystemReport(json);
// const svAzEl = Convert.toSvAzEl(json);
// const svID = Convert.toSvID(json);
// const telemetrySV = Convert.toTelemetrySV(json);
// const trackingChannelCorrelation = Convert.toTrackingChannelCorrelation(json);
// const trackingChannelState = Convert.toTrackingChannelState(json);
// const troposphericDelayCorrection = Convert.toTroposphericDelayCorrection(json);
// const troposphericDelayCorrectionNoStd = Convert.toTroposphericDelayCorrectionNoStd(json);
// const uARTChannel = Convert.toUARTChannel(json);
// const uTCTime = Convert.toUTCTime(json);
//
// These functions will throw an error if the JSON doesn't
// match the expected interface, even if the JSON is valid.
/**
* Metadata around the GNSS sensors involved in the fuzed solution. Accessible through
* sol_in[N].flags in a MSG_SOLN_META.
*/
export interface GNSSInputType {
flags: number;
}
/**
* Contains one tropo delay (mean and stddev), plus STEC residuals (mean and stddev) for
* each satellite at the grid point.
*/
export interface GridElement {
index: number;
stec_residuals: STECResidual[];
tropo_delay_correction: TroposphericDelayCorrection;
}
/**
* STEC residual (mean and standard deviation) for the given satellite at the grid point.
*/
export interface STECResidual {
residual: number;
stddev: number;
sv_id: SvID;
}
/**
* A (Constellation ID, satellite ID) tuple that uniquely identifies a space vehicle.
*/
export interface SvID {
constellation: number;
satId: number;
}
/**
* Troposphere vertical delays (mean and standard deviation) at the grid point.
*/
export interface TroposphericDelayCorrection {
hydro: number;
stddev: number;
wet: number;
}
/**
* Contains one tropo delay, plus STEC residuals for each satellite at the grid point.
*/
export interface GridElementNoStd {
index: number;
stec_residuals: STECResidualNoStd[];
tropo_delay_correction: TroposphericDelayCorrectionNoStd;
}
/**
* STEC residual for the given satellite at the grid point.
*/
export interface STECResidualNoStd {
residual: number;
sv_id: SvID;
}
/**
* Troposphere vertical delays at the grid point.
*/
export interface TroposphericDelayCorrectionNoStd {
hydro: number;
wet: number;
}
/**
* Metadata around the IMU sensors involved in the fuzed solution. Accessible through
* sol_in[N].flags in a MSG_SOLN_META.
*/
export interface IMUInputType {
flags: number;
}
export interface MsgAcknowledge {
area_id: number;
correction_mask_on_demand: number;
correction_mask_stream: number;
request_id: number;
response_code: number;
solution_id: number;
}
/**
* This message describes the results from an attempted GPS signal acquisition search for a
* satellite PRN over a code phase/carrier frequency range. It contains the parameters of
* the point in the acquisition search space with the best carrier-to-noise (CN/0) ratio.
*/
export interface MsgAcqResult {
cf: number;
cn0: number;
cp: number;
sid: GnssSignal;
}
/**
* Signal identifier containing constellation, band, and satellite identifier.
*/
export interface GnssSignal {
code: number;
sat: number;
}
/**
* The message describes all SV profiles during acquisition time. The message is used to
* debug and measure the performance.
*/
export interface MsgAcqSvProfile {
acq_sv_profile: AcqSvProfile[];
}
/**
* Profile for a specific SV for debugging purposes. The message describes SV profile during
* acquisition time. The message is used to debug and measure the performance.
*/
export interface AcqSvProfile {
bin_width: number;
cf: number;
cf_max: number;
cf_min: number;
cn0: number;
cp: number;
int_time: number;
job_type: number;
sid: GnssSignal;
status: number;
time_spent: number;
timestamp: number;
}
/**
* This message reports the Age of the corrections used for the current Differential
* solution.
*/
export interface MsgAgeCorrections {
age: number;
tow: number;
}
/**
* The almanac message returns a set of satellite orbit parameters. Almanac data is not very
* precise and is considered valid for up to several months. Please see the Navstar GPS
* Space Segment/Navigation user interfaces (ICD-GPS-200, Chapter 20.3.3.5.1.2 Almanac Data)
* for more details.
*/
export interface MsgAlmanacGPS {
af0: number;
af1: number;
common: AlmanacCommonContent;
ecc: number;
inc: number;
m0: number;
omega0: number;
omegadot: number;
sqrta: number;
w: number;
}
export interface AlmanacCommonContent {
fit_interval: number;
health_bits: number;
sid: GnssSignal;
toa: GpsTimeSEC;
ura: number;
valid: number;
}
/**
* A GPS time, defined as the number of seconds since beginning of the week on the
* Saturday/Sunday transition.
*/
export interface GpsTimeSEC {
tow: number;
wn: number;
}
/**
* The almanac message returns a set of satellite orbit parameters. Almanac data is not very
* precise and is considered valid for up to several months. Please see the GLO ICD 5.1
* "Chapter 4.5 Non-immediate information and almanac" for details.
*/
export interface MsgAlmanacGlo {
common: AlmanacCommonContent;
epsilon: number;
i: number;
lambda_na: number;
omega: number;
t: number;
t_dot: number;
t_lambda_na: number;
}
/**
* This message reports the orientation rates in the vehicle body frame. The values
* represent the measurements a strapped down gyroscope would make and are not equivalent to
* the time derivative of the Euler angles. The orientation and origin of the user frame is
* specified via device settings. By convention, the vehicle x-axis is expected to be
* aligned with the forward direction, while the vehicle y-axis is expected to be aligned
* with the right direction, and the vehicle z-axis should be aligned with the down
* direction. This message will only be available in future INS versions of Swift Products
* and is not produced by Piksi Multi or Duro.
*/
export interface MsgAngularRate {
flags: number;
tow: number;
x: number;
y: number;
z: number;
}
/**
* The base station position message is the position reported by the base station itself in
* absolute Earth Centered Earth Fixed coordinates. It is used for pseudo-absolute RTK
* positioning, and is required to be a high-accuracy surveyed location of the base station.
* Any error here will result in an error in the pseudo-absolute position output.
*/
export interface MsgBasePosECEF {
x: number;
y: number;
z: number;
}
/**
* The base station position message is the position reported by the base station itself. It
* is used for pseudo-absolute RTK positioning, and is required to be a high-accuracy
* surveyed location of the base station. Any error here will result in an error in the
* pseudo-absolute position output.
*/
export interface MsgBasePosLLH {
height: number;
lat: number;
lon: number;
}
/**
* This message reports the baseline solution in Earth Centered Earth Fixed (ECEF)
* coordinates. This baseline is the relative vector distance from the base station to the
* rover receiver. The full GPS time is given by the preceding MSG_GPS_TIME with the
* matching time-of-week (tow).,
* ,
* The values in this message are from GNSS measurements only.
*/
export interface MsgBaselineECEF {
accuracy: number;
flags: number;
n_sats: number;
tow: number;
x: number;
y: number;
z: number;
}
/**
* This message reports the baseline heading pointing from the base station to the rover
* relative to True North. The full GPS time is given by the preceding MSG_GPS_TIME with the
* matching time-of-week (tow). It is intended that time-matched RTK mode is used when the
* base station is moving.
*/
export interface MsgBaselineHeading {
flags: number;
heading: number;
n_sats: number;
tow: number;
}
/**
* This message reports the baseline solution in North East Down (NED) coordinates. This
* baseline is the relative vector distance from the base station to the rover receiver, and
* NED coordinate system is defined at the local WGS84 tangent plane centered at the base
* station position. The full GPS time is given by the preceding MSG_GPS_TIME with the
* matching time-of-week (tow).,
* ,
* The values in this message are from GNSS measurements only.
*/
export interface MsgBaselineNED {
d: number;
e: number;
flags: number;
h_accuracy: number;
n: number;
n_sats: number;
tow: number;
v_accuracy: number;
}
/**
* The handshake message response from the device establishes a handshake between the device
* bootloader and the host. The request from the host is MSG_BOOTLOADER_HANDSHAKE_REQ. The
* payload contains the bootloader version number and the SBP protocol version number.
*/
export interface MsgBootloaderHandshakeResp {
flags: number;
version: string;
}
/**
* The host initiates the bootloader to jump to the application.
*/
export interface MsgBootloaderJumpToApp {
jump: number;
}
/**
* If a cell modem is present on a piksi device, this message will be send periodically to
* update the host on the status of the modem and its various parameters.
*/
export interface MsgCellModemStatus {
signal_error_rate: number;
signal_strength: number;
}
export interface MsgCertificateChain {
corrections_certificate: number[];
expiration: UTCTime;
intermediate_certificate: number[];
root_certificate: number[];
signature: ECDSASignature;
}
export interface UTCTime {
day: number;
hours: number;
minutes: number;
month: number;
ns: number;
seconds: number;
year: number;
}
export interface ECDSASignature {
data: number[];
len: number;
}
/**
* Returns the standard output and standard error of the command requested by
* MSG_COMMAND_REQ. The sequence number can be used to filter for filtering the correct
* command.
*/
export interface MsgCommandOutput {
line: string;
sequence: number;
}
/**
* Request the recipient to execute an command. Output will be sent in MSG_LOG messages, and
* the exit code will be returned with MSG_COMMAND_RESP.
*/
export interface MsgCommandReq {
command: string;
sequence: number;
}
/**
* The response to MSG_COMMAND_REQ with the return code of the command. A return code of
* zero indicates success.
*/
export interface MsgCommandResp {
code: number;
sequence: number;
}
/**
* The CSAC telemetry message has an implementation defined telemetry string from a device.
* It is not produced or available on general Swift Products. It is intended to be a low
* rate message for status purposes.
*/
export interface MsgCsacTelemetry {
id: number;
telemetry: string;
}
/**
* The CSAC telemetry message provides labels for each member of the string produced by
* MSG_CSAC_TELEMETRY. It should be provided by a device at a lower rate than the
* MSG_CSAC_TELEMETRY.
*/
export interface MsgCsacTelemetryLabels {
id: number;
telemetry_labels: string;
}
/**
* This message contains temperature and voltage level measurements from the processor's
* monitoring system and the RF frontend die temperature if available.
*/
export interface MsgDeviceMonitor {
cpu_temperature: number;
cpu_vaux: number;
cpu_vint: number;
dev_vin: number;
fe_temperature: number;
}
/**
* This message provides information about the receipt of Differential corrections. It is
* expected to be sent with each receipt of a complete corrections packet.
*/
export interface MsgDgnssStatus {
flags: number;
latency: number;
num_signals: number;
source: string;
}
/**
* This dilution of precision (DOP) message describes the effect of navigation satellite
* geometry on positional measurement precision. The flags field indicated whether the DOP
* reported corresponds to differential or SPP solution.,
* ,
* The values in this message are from GNSS measurements only.
*/
export interface MsgDops {
flags: number;
gdop: number;
hdop: number;
pdop: number;
tdop: number;
tow: number;
vdop: number;
}
/**
* A DER encoded x.509 ECDSA-256 certificate (using curve secp256r1).
*/
export interface MsgEcdsaCertificate {
certificate_bytes: number[];
certificate_id: number[];
flags: number;
n_msg: number;
}
/**
* An ECDSA-256 signature using SHA-256 as the message digest algorithm.
*/
export interface MsgEcdsaSignature {
certificate_id: number[];
flags: number;
on_demand_counter: number;
signature: ECDSASignature;
signed_messages: number[];
stream_counter: number;
}
/**
* The ephemeris message returns a set of satellite orbit parameters that is used to
* calculate BDS satellite position, velocity, and clock offset. Please see the BeiDou
* Navigation Satellite System SIS-ICD Version 2.1, Table 5-9 for more details.
*/
export interface MsgEphemerisBds {
af0: number;
af1: number;
af2: number;
c_ic: number;
c_is: number;
c_rc: number;
c_rs: number;
c_uc: number;
c_us: number;
common: EphemerisCommonContent;
dn: number;
ecc: number;
inc: number;
inc_dot: number;
iodc: number;
iode: number;
m0: number;
omega0: number;
omegadot: number;
sqrta: number;
tgd1: number;
tgd2: number;
toc: GpsTimeSEC;
w: number;
}
export interface EphemerisCommonContent {
fit_interval: number;
health_bits: number;
sid: GnssSignal;
toe: GpsTimeSEC;
ura: number;
valid: number;
}
/**
* The ephemeris message returns a set of satellite orbit parameters that is used to
* calculate GPS satellite position, velocity, and clock offset. Please see the Navstar GPS
* Space Segment/Navigation user interfaces (ICD-GPS-200, Table 20-III) for more details.
*/
export interface MsgEphemerisGPS {
af0: number;
af1: number;
af2: number;
c_ic: number;
c_is: number;
c_rc: number;
c_rs: number;
c_uc: number;
c_us: number;
common: EphemerisCommonContent;
dn: number;
ecc: number;
inc: number;
inc_dot: number;
iodc: number;
iode: number;
m0: number;
omega0: number;
omegadot: number;
sqrta: number;
tgd: number;
toc: GpsTimeSEC;
w: number;
}
/**
* The ephemeris message returns a set of satellite orbit parameters that is used to
* calculate Galileo satellite position, velocity, and clock offset. Please see the Signal
* In Space ICD OS SIS ICD, Issue 1.3, December 2016 for more details.
*/
export interface MsgEphemerisGal {
af0: number;
af1: number;
af2: number;
bgd_e1e5a: number;
bgd_e1e5b: number;
c_ic: number;
c_is: number;
c_rc: number;
c_rs: number;
c_uc: number;
c_us: number;
common: EphemerisCommonContent;
dn: number;
ecc: number;
inc: number;
inc_dot: number;
iodc: number;
iode: number;
m0: number;
omega0: number;
omegadot: number;
source: number;
sqrta: number;
toc: GpsTimeSEC;
w: number;
}
/**
* The ephemeris message returns a set of satellite orbit parameters that is used to
* calculate GLO satellite position, velocity, and clock offset. Please see the GLO ICD 5.1
* "Table 4.5 Characteristics of words of immediate information (ephemeris parameters)" for
* more details.
*/
export interface MsgEphemerisGlo {
acc: number[];
common: EphemerisCommonContent;
d_tau: number;
fcn: number;
gamma: number;
iod: number;
pos: number[];
tau: number;
vel: number[];
}
/**
* The ephemeris message returns a set of satellite orbit parameters that is used to
* calculate QZSS satellite position, velocity, and clock offset.
*/
export interface MsgEphemerisQzss {
af0: number;
af1: number;
af2: number;
c_ic: number;
c_is: number;
c_rc: number;
c_rs: number;
c_uc: number;
c_us: number;
common: EphemerisCommonContent;
dn: number;
ecc: number;
inc: number;
inc_dot: number;
iodc: number;
iode: number;
m0: number;
omega0: number;
omegadot: number;
sqrta: number;
tgd: number;
toc: GpsTimeSEC;
w: number;
}
export interface MsgEphemerisSbas {
a_gf0: number;
a_gf1: number;
acc: number[];
common: EphemerisCommonContent;
pos: number[];
vel: number[];
}
/**
* Reports detection of an external event, the GPS time it occurred, which pin it was and
* whether it was rising or falling.
*/
export interface MsgEXTEvent {
flags: number;
ns_residual: number;
pin: number;
tow: number;
wn: number;
}
/**
* Requests advice on the optimal configuration for a FileIO transfer. Newer version of
* FileIO can support greater throughput by supporting a large window of FileIO data that
* can be in-flight during read or write operations.
*/
export interface MsgFileioConfigReq {
sequence: number;
}
/**
* The advice on the optimal configuration for a FileIO transfer. Newer version of FileIO
* can support greater throughput by supporting a large window of FileIO data that can be
* in-flight during read or write operations.
*/
export interface MsgFileioConfigResp {
batch_size: number;
fileio_version: number;
sequence: number;
window_size: number;
}
/**
* The read directory message lists the files in a directory on the device's onboard flash
* file system. The offset parameter can be used to skip the first n elements of the file
* list. Returns a MSG_FILEIO_READ_DIR_RESP message containing the directory listings as a
* NULL delimited list. The listing is chunked over multiple SBP packets. The sequence
* number in the request will be returned in the response. If message is invalid, a
* followup MSG_PRINT message will print "Invalid fileio read message". A device will only
* respond to this message when it is received from sender ID 0x42.
*/
export interface MsgFileioReadDirReq {
dirname: string;
offset: number;
sequence: number;
}
/**
* The read directory message lists the files in a directory on the device's onboard flash
* file system. Message contains the directory listings as a NULL delimited list. The
* listing is chunked over multiple SBP packets and the end of the list is identified by an
* packet with no entries. The sequence number in the response is preserved from the request.
*/
export interface MsgFileioReadDirResp {
contents: string;
sequence: number;
}
/**
* The file read message reads a certain length (up to 255 bytes) from a given offset into a
* file, and returns the data in a MSG_FILEIO_READ_RESP message where the message length
* field indicates how many bytes were successfully read. The sequence number in the request
* will be returned in the response. If the message is invalid, a followup MSG_PRINT message
* will print "Invalid fileio read message". A device will only respond to this message when
* it is received from sender ID 0x42.
*/
export interface MsgFileioReadReq {
chunk_size: number;
filename: string;
offset: number;
sequence: number;
}
/**
* The file read message reads a certain length (up to 255 bytes) from a given offset into a
* file, and returns the data in a message where the message length field indicates how many
* bytes were successfully read. The sequence number in the response is preserved from the
* request.
*/
export interface MsgFileioReadResp {
contents: number[];
sequence: number;
}
/**
* The file remove message deletes a file from the file system. If the message is invalid, a
* followup MSG_PRINT message will print "Invalid fileio remove message". A device will only
* process this message when it is received from sender ID 0x42.
*/
export interface MsgFileioRemove {
filename: string;
}
/**
* The file write message writes a certain length (up to 255 bytes) of data to a file at a
* given offset. Returns a copy of the original MSG_FILEIO_WRITE_RESP message to check
* integrity of the write. The sequence number in the request will be returned in the
* response. If message is invalid, a followup MSG_PRINT message will print "Invalid fileio
* write message". A device will only process this message when it is received from sender
* ID 0x42.
*/
export interface MsgFileioWriteReq {
data: number[];
filename: string;
offset: number;
sequence: number;
}
/**
* The file write message writes a certain length (up to 255 bytes) of data to a file at a
* given offset. The message is a copy of the original MSG_FILEIO_WRITE_REQ message to check
* integrity of the write. The sequence number in the response is preserved from the request.
*/
export interface MsgFileioWriteResp {
sequence: number;
}
/**
* This message defines success or failure codes for a variety of flash memory requests from
* the host to the device. Flash read and write messages, such as MSG_FLASH_READ_REQ, or
* MSG_FLASH_PROGRAM, may return this message on failure.
*/
export interface MsgFlashDone {
response: number;
}
/**
* The flash erase message from the host erases a sector of either the STM or M25 onboard
* flash memory. The device will reply with a MSG_FLASH_DONE message containing the return
* code - FLASH_OK (0) on success or FLASH_INVALID_FLASH (1) if the flash specified is
* invalid.
*/
export interface MsgFlashErase {
sector_num: number;
target: number;
}
/**
* The flash program message programs a set of addresses of either the STM or M25 flash. The
* device replies with either a MSG_FLASH_DONE message containing the return code FLASH_OK
* (0) on success, or FLASH_INVALID_LEN (2) if the maximum write size is exceeded. Note that
* the sector-containing addresses must be erased before addresses can be programmed.
*/
export interface MsgFlashProgram {
addr_len: number;
addr_start: number[];
data: number[];
target: number;
}
/**
* The flash read message reads a set of addresses of either the STM or M25 onboard flash.
* The device replies with a MSG_FLASH_READ_RESP message containing either the read data on
* success or a MSG_FLASH_DONE message containing the return code FLASH_INVALID_LEN (2) if
* the maximum read size is exceeded or FLASH_INVALID_ADDR (3) if the address is outside of
* the allowed range.
*/
export interface MsgFlashReadReq {
addr_len: number;
addr_start: number[];
target: number;
}
/**
* The flash read message reads a set of addresses of either the STM or M25 onboard flash.
* The device replies with a MSG_FLASH_READ_RESP message containing either the read data on
* success or a MSG_FLASH_DONE message containing the return code FLASH_INVALID_LEN (2) if