1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.adm.acm;
19
20 import java.io.IOException;
21
22 import org.orekit.files.ccsds.definitions.Units;
23 import org.orekit.files.ccsds.section.AbstractWriter;
24 import org.orekit.files.ccsds.utils.generation.Generator;
25 import org.orekit.utils.AccurateFormatter;
26 import org.orekit.utils.units.Unit;
27
28
29
30
31
32 class AttitudeManeuverWriter extends AbstractWriter {
33
34
35 private final AttitudeManeuver man;
36
37
38
39
40 AttitudeManeuverWriter(final AttitudeManeuver attitudeManeuver) {
41 super(AcmDataSubStructureKey.man.name(), AcmDataSubStructureKey.MAN.name());
42 this.man = attitudeManeuver;
43 }
44
45
46 @Override
47 protected void writeContent(final Generator generator) throws IOException {
48
49
50 generator.writeComments(man.getComments());
51
52
53 generator.writeEntry(AttitudeManeuverKey.MAN_ID.name(), man.getID(), null, false);
54 generator.writeEntry(AttitudeManeuverKey.MAN_PREV_ID.name(), man.getPrevID(), null, false);
55 generator.writeEntry(AttitudeManeuverKey.MAN_PURPOSE.name(), man.getManPurpose(), null, true);
56
57
58 generator.writeEntry(AttitudeManeuverKey.MAN_BEGIN_TIME.name(), man.getBeginTime(), Unit.SECOND, false);
59 generator.writeEntry(AttitudeManeuverKey.MAN_END_TIME.name(), man.getEndTime(), Unit.SECOND, false);
60 generator.writeEntry(AttitudeManeuverKey.MAN_DURATION.name(), man.getDuration(), Unit.SECOND, false);
61
62
63 generator.writeEntry(AttitudeManeuverKey.ACTUATOR_USED.name(), man.getActuatorUsed(), null, false);
64
65
66 if (man.getTargetMomentum() != null) {
67 final StringBuilder momentum = new StringBuilder();
68 momentum.append(AccurateFormatter.format(Units.N_M_S.fromSI(man.getTargetMomentum().getX())));
69 momentum.append(' ');
70 momentum.append(AccurateFormatter.format(Units.N_M_S.fromSI(man.getTargetMomentum().getY())));
71 momentum.append(' ');
72 momentum.append(AccurateFormatter.format(Units.N_M_S.fromSI(man.getTargetMomentum().getZ())));
73 generator.writeEntry(AttitudeManeuverKey.TARGET_MOMENTUM.name(), momentum.toString(), Units.N_M_S, true);
74 if (man.getTargetMomFrame() != null) {
75 generator.writeEntry(AttitudeManeuverKey.TARGET_MOM_FRAME.name(), man.getTargetMomFrame().getName(), null, false);
76 }
77 }
78
79 if (man.getTargetAttitude() != null) {
80 final StringBuilder attitude = new StringBuilder();
81 attitude.append(AccurateFormatter.format(man.getTargetAttitude().getQ1()));
82 attitude.append(' ');
83 attitude.append(AccurateFormatter.format(man.getTargetAttitude().getQ2()));
84 attitude.append(' ');
85 attitude.append(AccurateFormatter.format(man.getTargetAttitude().getQ3()));
86 attitude.append(' ');
87 attitude.append(AccurateFormatter.format(man.getTargetAttitude().getQ0()));
88 generator.writeEntry(AttitudeManeuverKey.TARGET_ATTITUDE.name(), attitude.toString(), null, true);
89 }
90
91 generator.writeEntry(AttitudeManeuverKey.TARGET_SPINRATE.name(), man.getTargetSpinRate(), Units.DEG_PER_S, false);
92
93 }
94
95 }