1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.files.ccsds.ndm.odm.ocm;
18
19 import org.orekit.files.ccsds.definitions.Units;
20 import org.orekit.files.ccsds.utils.ContextBinding;
21 import org.orekit.files.ccsds.utils.lexical.ParseToken;
22 import org.orekit.files.ccsds.utils.lexical.TokenType;
23 import org.orekit.utils.units.Unit;
24
25
26
27
28
29
30 public enum OrbitPhysicalPropertiesKey {
31
32
33 COMMENT((token, context, container) ->
34 token.getType() == TokenType.ENTRY ? container.addComment(token.getContentAsNormalizedString()) : true),
35
36
37 MANUFACTURER((token, context, container) -> token.processAsFreeTextString(container::setManufacturer)),
38
39
40 BUS_MODEL((token, context, container) -> token.processAsFreeTextString(container::setBusModel)),
41
42
43 DOCKED_WITH((token, context, container) -> token.processAsFreeTextList(container::setDockedWith)),
44
45
46 DRAG_CONST_AREA((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
47 container::setDragConstantArea)),
48
49
50 DRAG_COEFF_NOM((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
51 container::setDragCoefficient)),
52
53
54 DRAG_UNCERTAINTY((token, context, container) -> token.processAsDouble(Unit.PERCENT, context.getParsedUnitsBehavior(),
55 container::setDragUncertainty)),
56
57
58 INITIAL_WET_MASS((token, context, container) -> token.processAsDouble(Unit.KILOGRAM, context.getParsedUnitsBehavior(),
59 container::setInitialWetMass)),
60
61
62 WET_MASS((token, context, container) -> token.processAsDouble(Unit.KILOGRAM, context.getParsedUnitsBehavior(),
63 container::setWetMass)),
64
65
66 DRY_MASS((token, context, container) -> token.processAsDouble(Unit.KILOGRAM, context.getParsedUnitsBehavior(),
67 container::setDryMass)),
68
69
70 OEB_PARENT_FRAME((token, context, container) -> token.processAsFrame(container::setOebParentFrame, context, true, true, false)),
71
72
73 OEB_PARENT_FRAME_EPOCH((token, context, container) -> token.processAsDate(container::setOebParentFrameEpoch, context)),
74
75
76 OEB_Q1((token, context, container) -> token.processAsIndexedDouble(1, Unit.ONE, context.getParsedUnitsBehavior(),
77 container::setOebQ)),
78
79
80 OEB_Q2((token, context, container) -> token.processAsIndexedDouble(2, Unit.ONE, context.getParsedUnitsBehavior(),
81 container::setOebQ)),
82
83
84 OEB_Q3((token, context, container) -> token.processAsIndexedDouble(3, Unit.ONE, context.getParsedUnitsBehavior(),
85 container::setOebQ)),
86
87
88 OEB_QC((token, context, container) -> token.processAsIndexedDouble(0, Unit.ONE, context.getParsedUnitsBehavior(),
89 container::setOebQ)),
90
91
92 OEB_MAX((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
93 container::setOebMax)),
94
95
96 OEB_INT((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
97 container::setOebIntermediate)),
98
99
100 OEB_MIN((token, context, container) -> token.processAsDouble(Unit.METRE, context.getParsedUnitsBehavior(),
101 container::setOebMin)),
102
103
104 AREA_ALONG_OEB_MAX((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
105 container::setOebAreaAlongMax)),
106
107
108 AREA_ALONG_OEB_INT((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
109 container::setOebAreaAlongIntermediate)),
110
111
112 AREA_ALONG_OEB_MIN((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
113 container::setOebAreaAlongMin)),
114
115
116 AREA_MIN_FOR_PC((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
117 container::setMinAreaForCollisionProbability)),
118
119
120 AREA_MAX_FOR_PC((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
121 container::setMaxAreaForCollisionProbability)),
122
123
124 AREA_TYP_FOR_PC((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
125 container::setTypAreaForCollisionProbability)),
126
127
128 RCS((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
129 container::setRcs)),
130
131
132 RCS_MIN((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
133 container::setMinRcs)),
134
135
136 RCS_MAX((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
137 container::setMaxRcs)),
138
139
140 SRP_CONST_AREA((token, context, container) -> token.processAsDouble(Units.M2, context.getParsedUnitsBehavior(),
141 container::setSrpConstantArea)),
142
143
144 SOLAR_RAD_COEFF((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
145 container::setSrpCoefficient)),
146
147
148 SOLAR_RAD_UNCERTAINTY((token, context, container) -> token.processAsDouble(Unit.PERCENT, context.getParsedUnitsBehavior(),
149 container::setSrpUncertainty)),
150
151
152 VM_ABSOLUTE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
153 container::setVmAbsolute)),
154
155
156 VM_APPARENT_MIN((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
157 container::setVmApparentMin)),
158
159
160 VM_APPARENT((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
161 container::setVmApparent)),
162
163
164 VM_APPARENT_MAX((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
165 container::setVmApparentMax)),
166
167
168 REFLECTANCE((token, context, container) -> token.processAsDouble(Unit.ONE, context.getParsedUnitsBehavior(),
169 container::setReflectance)),
170
171
172 ATT_CONTROL_MODE((token, context, container) -> token.processAsFreeTextString(container::setAttitudeControlMode)),
173
174
175 ATT_ACTUATOR_TYPE((token, context, container) -> token.processAsFreeTextString(container::setAttitudeActuatorType)),
176
177
178 ATT_KNOWLEDGE((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(), container::setAttitudeKnowledgeAccuracy)),
179
180
181 ATT_CONTROL((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(), container::setAttitudeControlAccuracy)),
182
183
184 ATT_POINTING((token, context, container) -> token.processAsDouble(Unit.DEGREE, context.getParsedUnitsBehavior(), container::setAttitudePointingAccuracy)),
185
186
187 AVG_MANEUVER_FREQ((token, context, container) -> token.processAsDouble(Units.NB_PER_Y, context.getParsedUnitsBehavior(),
188 container::setManeuversFrequency)),
189
190
191 MAX_THRUST((token, context, container) -> token.processAsDouble(Unit.NEWTON, context.getParsedUnitsBehavior(),
192 container::setMaxThrust)),
193
194
195 DV_BOL((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
196 container::setBolDv)),
197
198
199 DV_REMAINING((token, context, container) -> token.processAsDouble(Units.KM_PER_S, context.getParsedUnitsBehavior(),
200 container::setRemainingDv)),
201
202
203 IXX((token, context, container) -> token.processAsDoublyIndexedDouble(0, 0, Units.KG_M2, context.getParsedUnitsBehavior(),
204 container::setInertiaMatrixEntry)),
205
206
207 IYY((token, context, container) -> token.processAsDoublyIndexedDouble(1, 1, Units.KG_M2, context.getParsedUnitsBehavior(),
208 container::setInertiaMatrixEntry)),
209
210
211 IZZ((token, context, container) -> token.processAsDoublyIndexedDouble(2, 2, Units.KG_M2, context.getParsedUnitsBehavior(),
212 container::setInertiaMatrixEntry)),
213
214
215 IXY((token, context, container) -> token.processAsDoublyIndexedDouble(0, 1, Units.KG_M2, context.getParsedUnitsBehavior(),
216 container::setInertiaMatrixEntry)),
217
218
219 IXZ((token, context, container) -> token.processAsDoublyIndexedDouble(0, 2, Units.KG_M2, context.getParsedUnitsBehavior(),
220 container::setInertiaMatrixEntry)),
221
222
223 IYZ((token, context, container) -> token.processAsDoublyIndexedDouble(1, 2, Units.KG_M2, context.getParsedUnitsBehavior(),
224 container::setInertiaMatrixEntry));
225
226
227 private final transient TokenProcessor processor;
228
229
230
231
232 OrbitPhysicalPropertiesKey(final TokenProcessor processor) {
233 this.processor = processor;
234 }
235
236
237
238
239
240
241
242 public boolean process(final ParseToken token, final ContextBinding context, final OrbitPhysicalProperties data) {
243 return processor.process(token, context, data);
244 }
245
246
247 interface TokenProcessor {
248
249
250
251
252
253
254 boolean process(ParseToken token, ContextBinding context, OrbitPhysicalProperties data);
255 }
256
257 }