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.Rtcm1063;
26 import org.orekit.gnss.metric.messages.rtcm.correction.RtcmOrbitCorrectionData;
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 Rtcm1063Test {
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 = "010000100111" +
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 "01001010111111011110000";
59
60 message = new ByteArrayEncodedMessage(byteArrayFromBinary(m));
61 message.start();
62
63 messages = new ArrayList<>();
64 messages.add(1063);
65
66 }
67
68 @Test
69 public void testPerfectValue() {
70 final Rtcm1063 rtcm1063 = (Rtcm1063) new RtcmMessagesParser(messages, DataContext.getDefault().getTimeScales()).
71 parse(message, false);
72
73
74 Assertions.assertEquals(1, rtcm1063.getData().size());
75
76
77 Assertions.assertEquals(1063, rtcm1063.getTypeCode());
78 Assertions.assertEquals(64711.0, rtcm1063.getHeader().getEpochTime1s(), eps);
79 Assertions.assertEquals(30.0, rtcm1063.getHeader().getSsrUpdateInterval().getUpdateInterval(), eps);
80 Assertions.assertEquals(0, rtcm1063.getHeader().getMultipleMessageIndicator());
81 Assertions.assertEquals(7, rtcm1063.getHeader().getIodSsr());
82 Assertions.assertEquals(3951, rtcm1063.getHeader().getSsrProviderId());
83 Assertions.assertEquals(1, rtcm1063.getHeader().getSsrSolutionId());
84 Assertions.assertEquals(1, rtcm1063.getHeader().getNumberOfSatellites());
85
86
87 final RtcmOrbitCorrectionData r01 = rtcm1063.getDataMap().get("R01").get(0);
88 Assertions.assertEquals(1, r01.getSatelliteID());
89 Assertions.assertEquals(132, r01.getGnssIod());
90 Assertions.assertEquals(18.0095, r01.getOrbitCorrection().getDeltaOrbitRadial(), eps);
91 Assertions.assertEquals(122.8668, r01.getOrbitCorrection().getDeltaOrbitAlongTrack(), eps);
92 Assertions.assertEquals(122.8668, r01.getOrbitCorrection().getDeltaOrbitCrossTrack(), eps);
93 Assertions.assertEquals(0.090047, r01.getOrbitCorrection().getDotOrbitDeltaRadial(), eps);
94 Assertions.assertEquals(0.614332, r01.getOrbitCorrection().getDotOrbitDeltaAlongTrack(), eps);
95 Assertions.assertEquals(0.614332, r01.getOrbitCorrection().getDotOrbitDeltaCrossTrack(), eps);
96 }
97
98 private byte[] byteArrayFromBinary(String radix2Value) {
99 final byte[] array = new byte[radix2Value.length() / 8];
100 for (int i = 0; i < array.length; ++i) {
101 for (int j = 0; j < 8; ++j) {
102 if (radix2Value.charAt(8 * i + j) != '0') {
103 array[i] |= 0x1 << (7 - j);
104 }
105 }
106 }
107 return array;
108 }
109
110 }