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.Rtcm1240;
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 Rtcm1240Test {
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 = "010011011000" +
43 "00001111110011000111" +
44 "0101" +
45 "0" +
46 "0" +
47 "0111" +
48 "0000111101101111" +
49 "0001" +
50 "000001" +
51 "000001" +
52 "0010000100" +
53 "0000101011111101111111" +
54 "01001010111111011111" +
55 "01001010111111011111" +
56 "000010101111110111111" +
57 "0100101011111101111" +
58 "010010101111110111100000";
59
60 message = new ByteArrayEncodedMessage(byteArrayFromBinary(m));
61 message.start();
62
63 messages = new ArrayList<>();
64 messages.add(1240);
65
66 }
67
68 @Test
69 public void testPerfectValue() {
70 final Rtcm1240 rtcm1240 = (Rtcm1240) new RtcmMessagesParser(messages, DataContext.getDefault().getTimeScales()).
71 parse(message, false);
72
73
74 Assertions.assertEquals(1, rtcm1240.getData().size());
75
76
77 Assertions.assertEquals(1240, rtcm1240.getTypeCode());
78 Assertions.assertEquals(64711.0, rtcm1240.getHeader().getEpochTime1s(), eps);
79 Assertions.assertEquals(30.0, rtcm1240.getHeader().getSsrUpdateInterval().getUpdateInterval(), eps);
80 Assertions.assertEquals(0, rtcm1240.getHeader().getMultipleMessageIndicator());
81 Assertions.assertEquals(7, rtcm1240.getHeader().getIodSsr());
82 Assertions.assertEquals(3951, rtcm1240.getHeader().getSsrProviderId());
83 Assertions.assertEquals(1, rtcm1240.getHeader().getSsrSolutionId());
84 Assertions.assertEquals(1, rtcm1240.getHeader().getNumberOfSatellites());
85
86
87 final RtcmOrbitCorrectionData e01 = rtcm1240.getDataMap().get("E01").get(0);
88 Assertions.assertEquals(1, e01.getSatelliteID());
89 Assertions.assertEquals(132, e01.getGnssIod());
90 Assertions.assertEquals(18.0095, e01.getOrbitCorrection().getDeltaOrbitRadial(), eps);
91 Assertions.assertEquals(122.8668, e01.getOrbitCorrection().getDeltaOrbitAlongTrack(), eps);
92 Assertions.assertEquals(122.8668, e01.getOrbitCorrection().getDeltaOrbitCrossTrack(), eps);
93 Assertions.assertEquals(0.090047, e01.getOrbitCorrection().getDotOrbitDeltaRadial(), eps);
94 Assertions.assertEquals(0.614332, e01.getOrbitCorrection().getDotOrbitDeltaAlongTrack(), eps);
95 Assertions.assertEquals(0.614332, e01.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 }