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.Rtcm1064;
26 import org.orekit.gnss.metric.messages.rtcm.correction.RtcmClockCorrectionData;
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 Rtcm1064Test {
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 = "010000101000" +
43 "01111110011000111" +
44 "0101" +
45 "0" +
46 "0111" +
47 "0000111101101111" +
48 "0001" +
49 "000001" +
50 "00001" +
51 "0011101011111101111111" +
52 "001110101111110111111" +
53 "0011101011111101111111000110000000";
54
55 message = new ByteArrayEncodedMessage(byteArrayFromBinary(m));
56 message.start();
57
58 messages = new ArrayList<>();
59 messages.add(1064);
60
61 }
62
63 @Test
64 public void testPerfectValue() {
65 final Rtcm1064 rtcm1064 = (Rtcm1064) new RtcmMessagesParser(messages, DataContext.getDefault().getTimeScales()).
66 parse(message, false);
67
68
69 Assertions.assertEquals(1, rtcm1064.getData().size());
70
71
72 Assertions.assertEquals(1064, rtcm1064.getTypeCode());
73 Assertions.assertEquals(64711.0, rtcm1064.getHeader().getEpochTime1s(), eps);
74 Assertions.assertEquals(30.0, rtcm1064.getHeader().getSsrUpdateInterval().getUpdateInterval(), eps);
75 Assertions.assertEquals(0, rtcm1064.getHeader().getMultipleMessageIndicator());
76 Assertions.assertEquals(7, rtcm1064.getHeader().getIodSsr());
77 Assertions.assertEquals(3951, rtcm1064.getHeader().getSsrProviderId());
78 Assertions.assertEquals(1, rtcm1064.getHeader().getSsrSolutionId());
79 Assertions.assertEquals(1, rtcm1064.getHeader().getNumberOfSatellites());
80
81
82 final RtcmClockCorrectionData r01 = rtcm1064.getDataMap().get("R01").get(0);
83 Assertions.assertEquals(1, r01.getSatelliteID());
84 Assertions.assertEquals(96.6527, r01.getClockCorrection().getDeltaClockC0(), eps);
85 Assertions.assertEquals(0.483263, r01.getClockCorrection().getDeltaClockC1(), eps);
86 Assertions.assertEquals(0.61857734, r01.getClockCorrection().getDeltaClockC2(), eps);
87 }
88
89 private byte[] byteArrayFromBinary(String radix2Value) {
90 final byte[] array = new byte[radix2Value.length() / 8];
91 for (int i = 0; i < array.length; ++i) {
92 for (int j = 0; j < 8; ++j) {
93 if (radix2Value.charAt(8 * i + j) != '0') {
94 array[i] |= 0x1 << (7 - j);
95 }
96 }
97 }
98 return array;
99 }
100
101 }