1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.rinex.navigation.parsers;
18
19 import org.orekit.files.rinex.navigation.RinexNavigation;
20 import org.orekit.files.rinex.navigation.RinexNavigationParser;
21 import org.orekit.files.rinex.navigation.SbasId;
22 import org.orekit.files.rinex.navigation.SystemTimeOffsetMessage;
23 import org.orekit.files.rinex.navigation.UtcId;
24 import org.orekit.files.rinex.utils.ParsingUtils;
25 import org.orekit.gnss.PredefinedTimeSystem;
26 import org.orekit.utils.units.Unit;
27
28
29
30
31
32 public class SystemTimeOffsetParser extends RecordLineParser {
33
34
35 private final ParseInfo parseInfo;
36
37
38 private final SystemTimeOffsetMessage message;
39
40
41
42
43
44 public SystemTimeOffsetParser(final ParseInfo parseInfo, final SystemTimeOffsetMessage message) {
45 this.parseInfo = parseInfo;
46 this.message = message;
47 }
48
49
50 @Override
51 public void parseLine00() {
52
53 final String defTS = ParsingUtils.parseString(parseInfo.getLine(), 24, 2);
54 final String refTS = ParsingUtils.parseString(parseInfo.getLine(), 26, 2);
55 final String sbas = ParsingUtils.parseString(parseInfo.getLine(), 43, 18);
56 final String utc = ParsingUtils.parseString(parseInfo.getLine(), 62, 18);
57
58 message.setDefinedTimeSystem(PredefinedTimeSystem.parseTwoLettersCode(defTS));
59 message.setReferenceTimeSystem(PredefinedTimeSystem.parseTwoLettersCode(refTS));
60 message.setSbasId(sbas == null || sbas.isEmpty() ? null : SbasId.valueOf(sbas));
61 message.setUtcId(utc == null || utc.isEmpty() ? null : UtcId.parseUtcId(utc));
62 message.setReferenceEpoch(parseInfo.parseDate(message.getSystem()));
63
64 }
65
66
67 @Override
68 public void parseLine01() {
69 message.setTransmissionTime(parseInfo.parseDouble1(Unit.SECOND));
70 message.setA0(parseInfo.parseDouble2(Unit.SECOND));
71 message.setA1(parseInfo.parseDouble3(RinexNavigationParser.S_PER_S));
72 message.setA2(parseInfo.parseDouble4(RinexNavigationParser.S_PER_S2));
73 parseInfo.closePendingRecord();
74 }
75
76
77 @Override
78 public void closeRecord(final RinexNavigation file) {
79 file.addSystemTimeOffset(message);
80 }
81
82 }