1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.adm.acm;
18
19 import org.orekit.files.ccsds.definitions.AdMethodType;
20 import org.orekit.files.ccsds.definitions.Units;
21 import org.orekit.files.ccsds.utils.ContextBinding;
22 import org.orekit.files.ccsds.utils.lexical.ParseToken;
23 import org.orekit.files.ccsds.utils.lexical.TokenType;
24
25
26
27
28
29
30 public enum AttitudeDeterminationKey {
31
32
33 COMMENT((token, parser, context, container) ->
34 token.getType() == TokenType.ENTRY ? container.addComment(token.getContentAsNormalizedString()) : true),
35
36
37 AD_ID((token, parser, context, container) -> token.processAsFreeTextString(container::setId)),
38
39
40 AD_PREV_ID((token, parser, context, container) -> token.processAsFreeTextString(container::setPrevId)),
41
42
43 AD_METHOD((token, parser, context, container) -> token.processAsEnum(AdMethodType.class, container::setMethod)),
44
45
46 ATTITUDE_SOURCE((token, parser, context, container) -> token.processAsFreeTextString(container::setSource)),
47
48
49 EULER_ROT_SEQ((token, parser, context, container) -> token.processAsRotationOrder(container::setEulerRotSeq)),
50
51
52 NUMBER_STATES((token, parser, context, container) -> token.processAsInteger(container::setNbStates)),
53
54
55 ATTITUDE_STATES((token, parser, context, container) -> token.processAsEnum(AttitudeElementsType.class, container::setAttitudeStates)),
56
57
58 COV_TYPE((token, parser, context, container) -> token.processAsEnum(AttitudeCovarianceType.class, container::setCovarianceType)),
59
60
61 REF_FRAME_A((token, parser, context, container) -> token.processAsFrame(container.getEndpoints()::setFrameA, context, true, true, false)),
62
63
64 REF_FRAME_B((token, parser, context, container) -> token.processAsFrame(container.getEndpoints()::setFrameB, context, false, false, true)),
65
66
67 RATE_STATES((token, parser, context, container) -> token.processAsEnum(RateElementsType.class, container::setRateStates)),
68
69
70 SIGMA_U((token, parser, context, container) -> token.processAsDouble(Units.DEG_PER_S_3_2, context.getParsedUnitsBehavior(),
71 container::setSigmaU)),
72
73
74 SIGMA_V((token, parser, context, container) -> token.processAsDouble(Units.DEG_PER_S_1_2, context.getParsedUnitsBehavior(),
75 container::setSigmaV)),
76
77
78 RATE_PROCESS_NOISE_STDDEV((token, parser, context, container) -> token.processAsDouble(Units.DEG_PER_S_3_2, context.getParsedUnitsBehavior(),
79 container::setRateProcessNoiseStdDev)),
80
81
82 SENSOR((token, parser, context, container) -> parser.manageAttitudeDeterminationSensorSection(token.getType() == TokenType.START));
83
84
85 private final transient TokenProcessor processor;
86
87
88
89
90 AttitudeDeterminationKey(final TokenProcessor processor) {
91 this.processor = processor;
92 }
93
94
95
96
97
98
99
100
101 public boolean process(final ParseToken token, final AcmParser parser, final ContextBinding context,
102 final AttitudeDetermination container) {
103 return processor.process(token, parser, context, container);
104 }
105
106
107 interface TokenProcessor {
108
109
110
111
112
113
114
115 boolean process(ParseToken token, AcmParser parser, ContextBinding context, AttitudeDetermination container);
116 }
117
118 }