1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.gnss.metric.messages.rtcm;
18
19 import java.util.ArrayList;
20
21 import org.junit.jupiter.api.Assertions;
22 import org.junit.jupiter.api.BeforeEach;
23 import org.junit.jupiter.api.Test;
24 import org.orekit.data.DataContext;
25 import org.orekit.gnss.metric.messages.rtcm.correction.Rtcm1066;
26 import org.orekit.gnss.metric.messages.rtcm.correction.RtcmCombinedCorrectionData;
27 import org.orekit.gnss.metric.parser.ByteArrayEncodedMessage;
28 import org.orekit.gnss.metric.parser.EncodedMessage;
29 import org.orekit.gnss.metric.parser.RtcmMessagesParser;
30
31 public class Rtcm1066Test {
32
33 private double eps = 1.0e-13;
34
35 private EncodedMessage message;
36
37 private ArrayList<Integer> messages;
38
39 @BeforeEach
40 public void setUp() {
41
42 final String m = "010000101010" +
43 "01111110011000111" +
44 "0101" +
45 "0" +
46 "0" +
47 "0111" +
48 "0000111101101111" +
49 "0001" +
50 "000001" +
51 "00001" +
52 "10000100" +
53 "0000101011111101111111" +
54 "01001010111111011111" +
55 "01001010111111011111" +
56 "000010101111110111111" +
57 "0100101011111101111" +
58 "0100101011111101111" +
59 "0011101011111101111111" +
60 "001110101111110111111" +
61 "0011101011111101111111000110000000";
62
63 message = new ByteArrayEncodedMessage(byteArrayFromBinary(m));
64 message.start();
65
66 messages = new ArrayList<>();
67 messages.add(1066);
68
69 }
70
71 @Test
72 public void testPerfectValue() {
73 final Rtcm1066 rtcm1066 = (Rtcm1066) new RtcmMessagesParser(messages, DataContext.getDefault().getTimeScales()).
74 parse(message, false);
75
76
77 Assertions.assertEquals(1, rtcm1066.getData().size());
78
79
80 Assertions.assertEquals(1066, rtcm1066.getTypeCode());
81 Assertions.assertEquals(64711.0, rtcm1066.getHeader().getEpochTime1s(), eps);
82 Assertions.assertEquals(30.0, rtcm1066.getHeader().getSsrUpdateInterval().getUpdateInterval(), eps);
83 Assertions.assertEquals(0, rtcm1066.getHeader().getMultipleMessageIndicator());
84 Assertions.assertEquals(7, rtcm1066.getHeader().getIodSsr());
85 Assertions.assertEquals(3951, rtcm1066.getHeader().getSsrProviderId());
86 Assertions.assertEquals(1, rtcm1066.getHeader().getSsrSolutionId());
87 Assertions.assertEquals(1, rtcm1066.getHeader().getNumberOfSatellites());
88
89
90 final RtcmCombinedCorrectionData r01 = rtcm1066.getDataMap().get("R01").get(0);
91 Assertions.assertEquals(1, r01.getSatelliteID());
92 Assertions.assertEquals(132, r01.getGnssIod());
93 Assertions.assertEquals(18.0095, r01.getOrbitCorrection().getDeltaOrbitRadial(), eps);
94 Assertions.assertEquals(122.8668, r01.getOrbitCorrection().getDeltaOrbitAlongTrack(), eps);
95 Assertions.assertEquals(122.8668, r01.getOrbitCorrection().getDeltaOrbitCrossTrack(), eps);
96 Assertions.assertEquals(0.090047, r01.getOrbitCorrection().getDotOrbitDeltaRadial(), eps);
97 Assertions.assertEquals(0.614332, r01.getOrbitCorrection().getDotOrbitDeltaAlongTrack(), eps);
98 Assertions.assertEquals(0.614332, r01.getOrbitCorrection().getDotOrbitDeltaCrossTrack(), eps);
99 Assertions.assertEquals(96.6527, r01.getClockCorrection().getDeltaClockC0(), eps);
100 Assertions.assertEquals(0.483263, r01.getClockCorrection().getDeltaClockC1(), eps);
101 Assertions.assertEquals(0.61857734, r01.getClockCorrection().getDeltaClockC2(), eps);
102 }
103
104 private byte[] byteArrayFromBinary(String radix2Value) {
105 final byte[] array = new byte[radix2Value.length() / 8];
106 for (int i = 0; i < array.length; ++i) {
107 for (int j = 0; j < 8; ++j) {
108 if (radix2Value.charAt(8 * i + j) != '0') {
109 array[i] |= 0x1 << (7 - j);
110 }
111 }
112 }
113 return array;
114 }
115
116 }