1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.rinex.navigation.parsers.ephemeris;
18
19 import org.orekit.files.rinex.navigation.RinexNavigation;
20 import org.orekit.files.rinex.navigation.parsers.ParseInfo;
21 import org.orekit.propagation.analytical.gnss.data.GalileoNavigationMessage;
22 import org.orekit.propagation.analytical.gnss.data.GalileoNavigationMessageFactory;
23 import org.orekit.time.GNSSDate;
24 import org.orekit.utils.units.Unit;
25
26
27
28
29
30
31 public class GalileoParser
32 extends AbstractNavigationParser<GalileoNavigationMessage, GalileoNavigationMessageFactory> {
33
34
35
36
37
38 public GalileoParser(final ParseInfo parseInfo, final GalileoNavigationMessageFactory factory) {
39 super(parseInfo, factory);
40 }
41
42
43 @Override
44 public void parseLine00() {
45 final ParseInfo parseInfo = getParseInfo();
46 final GalileoNavigationMessageFactory factory = getFactory();
47 parseSvEpochSvClockLine(parseInfo.getTimeScales().getGPS(), parseInfo, factory);
48 }
49
50
51 @Override
52 public void parseLine01() {
53 super.parseLine01();
54 final GalileoNavigationMessageFactory factory = getFactory();
55 factory.setIodNav(getParseInfo().parseInt1());
56 }
57
58
59 @Override
60 public void parseLine05() {
61 super.parseLine05();
62 final GalileoNavigationMessageFactory factory = getFactory();
63 factory.setDataSource(getParseInfo().parseInt2());
64 }
65
66
67 @Override
68 public void parseLine06() {
69 final ParseInfo parseInfo = getParseInfo();
70 final GalileoNavigationMessageFactory factory = getFactory();
71 factory.setSisa(parseInfo.parseDouble1(Unit.METRE));
72 factory.setSvHealth(parseInfo.parseDouble2(Unit.NONE));
73 factory.setBGDE1E5a(parseInfo.parseDouble3(Unit.SECOND));
74 factory.setBGDE5bE1(parseInfo.parseDouble4(Unit.SECOND));
75 }
76
77
78 @Override
79 public void parseLine07() {
80 final ParseInfo parseInfo = getParseInfo();
81 final GalileoNavigationMessageFactory factory = getFactory();
82 factory.setTransmissionTime(new GNSSDate(factory.getTimeOfEphemeris().getWeekNumber(),
83 parseInfo.parseDouble1(Unit.SECOND),
84 factory.getSystem()));
85 parseInfo.closePendingRecord();
86 }
87
88
89 @Override
90 public void closeRecord(final RinexNavigation file) {
91 file.addGalileoNavigationMessage(getMessage());
92 }
93
94 }