openc3-cosmos-geosim 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/microservices/GEOSIM/geosat_target.rb +1 -1
- data/microservices/GEOSIM/targets/GEOSAT/cmd_tlm/cmds.txt +16 -125
- data/microservices/GEOSIM/targets/GEOSAT/cmd_tlm/tlm.txt +0 -170
- data/microservices/GEOSIM/targets/GEOSAT/lib/sim_sat.rb +9 -379
- data/microservices/GEOSIM/targets/GEOSAT/target.txt +1 -2
- metadata +2 -4
- data/microservices/GEOSIM/targets/GEOSAT/data/attitude.bin +0 -0
- data/microservices/GEOSIM/targets/GEOSAT/data/position.bin +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e89fcaba782b9edd416bc892ff37e10a16b64df1d41041f785bcf0efafce8432
|
4
|
+
data.tar.gz: a1d5527330f925bfcd6cc502c063f3381358c1da4ebdc32b27b3c5228e0eaf3f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1c5107657c7fcee85409953bbb1b52832d7b6054f505bbebed4f64d0f8312bd541bd33611989f8285f5664f95876c97d963394590e2bc25b2a3e1a250755c33
|
7
|
+
data.tar.gz: 0aef2be7641dad9901081cdd2cdd43670ff8998fc43651af7e4f07669ee0661a7745028f2df4e3b72956cfcf2c8457d59c6aa6b90e02ed7f98b2c65835a58f28
|
@@ -25,7 +25,7 @@ module OpenC3
|
|
25
25
|
class GeosatTarget
|
26
26
|
class GeosatServerInterface < TcpipServerInterface
|
27
27
|
def initialize(port)
|
28
|
-
super(port.to_i, port.to_i, 5.0, nil, 'LENGTH', 64, 16, 11, 1, 'BIG_ENDIAN', 4, "
|
28
|
+
super(port.to_i, port.to_i, 5.0, nil, 'LENGTH', 64, 16, 11, 1, 'BIG_ENDIAN', 4, "0x1ACFFC1D", nil, true)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -1,165 +1,56 @@
|
|
1
|
-
COMMAND GEOSAT
|
2
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
3
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
4
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
5
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
6
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
7
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
8
|
-
OVERFLOW TRUNCATE
|
9
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
10
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 1 "Packet id"
|
11
|
-
PARAMETER TYPE 64 16 UINT MIN MAX 0 "Collect type"
|
12
|
-
REQUIRED
|
13
|
-
STATE NORMAL 0
|
14
|
-
STATE SPECIAL 1 HAZARDOUS
|
15
|
-
PARAMETER DURATION 80 32 FLOAT 0.0 10.0 1.0 "Collect duration"
|
16
|
-
PARAMETER OPCODE 112 8 UINT 0x0 0xFF 0xAB "Collect opcode"
|
17
|
-
FORMAT_STRING "0x%0X"
|
18
|
-
PARAMETER TEMP 120 32 FLOAT 0.0 25.0 0.0 "Collect temperature"
|
19
|
-
UNITS Celsius C
|
20
|
-
|
21
|
-
COMMAND GEOSAT ABORT BIG_ENDIAN "Aborts a collect on the GEOSAT instrument"
|
1
|
+
COMMAND GEOSAT NOOP BIG_ENDIAN "NOOP"
|
22
2
|
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
23
3
|
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
24
4
|
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
25
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047
|
5
|
+
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 1 "CCSDS primary header application id"
|
26
6
|
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
27
7
|
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
28
8
|
OVERFLOW TRUNCATE
|
29
9
|
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
30
|
-
|
10
|
+
APPEND_PARAMETER IGNORE 8 UINT MIN MAX 0 "Ignored item"
|
31
11
|
|
32
|
-
COMMAND GEOSAT
|
33
|
-
HAZARDOUS "Clearing counters may lose valuable information."
|
12
|
+
COMMAND GEOSAT COLLECT BIG_ENDIAN "Starts a collect on the GEOSAT target"
|
34
13
|
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
35
14
|
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
36
15
|
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
37
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047
|
16
|
+
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 2 "CCSDS primary header application id"
|
38
17
|
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
39
18
|
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
40
19
|
OVERFLOW TRUNCATE
|
41
20
|
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
42
|
-
|
21
|
+
APPEND_PARAMETER TYPE 16 UINT MIN MAX 0 "Collect type"
|
22
|
+
REQUIRED
|
23
|
+
STATE NORMAL 0
|
24
|
+
STATE SPECIAL 1 HAZARDOUS
|
25
|
+
APPEND_PARAMETER DURATION 32 FLOAT 0.0 10.0 1.0 "Collect duration"
|
26
|
+
APPEND_PARAMETER OPCODE 8 UINT 0x0 0xFF 0xAB "Collect opcode"
|
27
|
+
FORMAT_STRING "0x%0X"
|
28
|
+
APPEND_PARAMETER TEMP 32 FLOAT 0.0 25.0 0.0 "Collect temperature"
|
29
|
+
UNITS Celsius C
|
43
30
|
|
44
31
|
COMMAND GEOSAT SET_MODE BIG_ENDIAN "Change spacecraft mode"
|
45
32
|
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
46
33
|
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
47
34
|
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
48
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047
|
35
|
+
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 5 "CCSDS primary header application id"
|
49
36
|
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
50
37
|
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
51
38
|
OVERFLOW TRUNCATE
|
52
39
|
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
53
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 4 "Packet id"
|
54
40
|
APPEND_PARAMETER MODE 8 UINT 0 2 0 "Desired Mode"
|
55
41
|
REQUIRED
|
56
42
|
STATE SAFE 0
|
57
43
|
STATE CHECKOUT 1
|
58
44
|
STATE OPERATE 2
|
59
45
|
|
60
|
-
COMMAND GEOSAT SLRPNLDEPLOY BIG_ENDIAN "Deploy solar array panel"
|
61
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
62
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
63
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
64
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
65
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
66
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
67
|
-
OVERFLOW TRUNCATE
|
68
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
69
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 5 "Packet id"
|
70
|
-
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
|
71
|
-
|
72
|
-
COMMAND GEOSAT SLRPNLSTOW BIG_ENDIAN "Stow solar array panel"
|
73
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
74
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
75
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
76
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
77
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
78
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
79
|
-
OVERFLOW TRUNCATE
|
80
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
81
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 6 "Packet id"
|
82
|
-
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
|
83
|
-
|
84
|
-
COMMAND GEOSAT SLRPNLANG BIG_ENDIAN "Set Solar Array Panel Angle"
|
85
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
86
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
87
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
88
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
89
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
90
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
91
|
-
OVERFLOW TRUNCATE
|
92
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
93
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 7 "Packet id"
|
94
|
-
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Solar Array Number"
|
95
|
-
APPEND_PARAMETER ANG 32 FLOAT 0 360 0 "Solar Array Angle"
|
96
|
-
UNITS DEGREES DEG
|
97
|
-
|
98
|
-
COMMAND GEOSAT TABLE_LOAD BIG_ENDIAN "Load table"
|
99
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
100
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
101
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
102
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
103
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
104
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
105
|
-
OVERFLOW TRUNCATE
|
106
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
107
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 8 "Packet id"
|
108
|
-
APPEND_PARAMETER DATA 80 BLOCK "" "Table data"
|
109
|
-
|
110
|
-
COMMAND GEOSAT HTR_CTRL BIG_ENDIAN "Heater Control ON/OFF"
|
111
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
112
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
113
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
114
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
115
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
116
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
117
|
-
OVERFLOW TRUNCATE
|
118
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
119
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 9 "Packet id"
|
120
|
-
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
|
121
|
-
APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
|
122
|
-
STATE OFF 0 HAZARDOUS
|
123
|
-
STATE ON 1
|
124
|
-
|
125
|
-
COMMAND GEOSAT HTR_STATE BIG_ENDIAN "Heater State ON/OFF"
|
126
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
127
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
128
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
129
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
130
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
131
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
132
|
-
OVERFLOW TRUNCATE
|
133
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
134
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 10 "Packet id"
|
135
|
-
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
|
136
|
-
APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
|
137
|
-
STATE OFF 0
|
138
|
-
STATE ON 1
|
139
|
-
|
140
46
|
COMMAND GEOSAT HTR_SETPT BIG_ENDIAN "Heater Setpoint"
|
141
47
|
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
142
48
|
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
143
49
|
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
144
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047
|
50
|
+
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 12 "CCSDS primary header application id"
|
145
51
|
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
146
52
|
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
147
53
|
OVERFLOW TRUNCATE
|
148
54
|
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
149
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 11 "Packet id"
|
150
55
|
APPEND_PARAMETER NUM 8 UINT 1 2 1 "Heater Number"
|
151
56
|
APPEND_PARAMETER SETPT 32 FLOAT -100 100 0 "Setpoint"
|
152
|
-
|
153
|
-
COMMAND GEOSAT ADCS_CTRL BIG_ENDIAN "ADCS Control of Solar Panel Angle ON/OFF"
|
154
|
-
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
155
|
-
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
156
|
-
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
157
|
-
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
158
|
-
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
159
|
-
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
160
|
-
OVERFLOW TRUNCATE
|
161
|
-
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
162
|
-
ID_PARAMETER PKTID 48 16 UINT MIN MAX 12 "Packet id"
|
163
|
-
APPEND_PARAMETER STATE 8 UINT 0 1 0 "Desired State"
|
164
|
-
STATE OFF 0 HAZARDOUS
|
165
|
-
STATE ON 1
|
@@ -17,7 +17,6 @@ TELEMETRY GEOSAT HEALTH_STATUS BIG_ENDIAN "Health and status from the GEOSAT tar
|
|
17
17
|
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
18
18
|
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
19
19
|
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
20
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
21
20
|
APPEND_ITEM CMD_ACPT_CNT 32 UINT "Command accept counter"
|
22
21
|
APPEND_ITEM CMD_RJCT_CNT 32 UINT "Command reject counter"
|
23
22
|
APPEND_ITEM MODE 8 UINT "Spacecraft mode"
|
@@ -49,7 +48,6 @@ TELEMETRY GEOSAT THERMAL BIG_ENDIAN "Thermal data"
|
|
49
48
|
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
50
49
|
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
51
50
|
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
52
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
53
51
|
APPEND_ITEM TEMP1 32 FLOAT "Temperature #1"
|
54
52
|
UNITS CELSIUS C
|
55
53
|
FORMAT_STRING "%0.2f"
|
@@ -81,69 +79,6 @@ TELEMETRY GEOSAT THERMAL BIG_ENDIAN "Thermal data"
|
|
81
79
|
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
82
80
|
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
83
81
|
|
84
|
-
TELEMETRY GEOSAT ADCS BIG_ENDIAN "Position and attitude data"
|
85
|
-
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
86
|
-
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
87
|
-
STATE TLM 0
|
88
|
-
STATE CMD 1
|
89
|
-
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
|
90
|
-
STATE FALSE 0
|
91
|
-
STATE TRUE 1
|
92
|
-
APPEND_ID_ITEM CCSDSAPID 11 UINT 3 "CCSDS application process id"
|
93
|
-
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
|
94
|
-
STATE FIRST 1
|
95
|
-
STATE CONT 0
|
96
|
-
STATE LAST 2
|
97
|
-
STATE NOGROUP 3
|
98
|
-
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
|
99
|
-
OVERFLOW TRUNCATE
|
100
|
-
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
101
|
-
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
102
|
-
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
103
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
104
|
-
ITEM POSX 128 32 FLOAT "Position X"
|
105
|
-
UNITS METERS M
|
106
|
-
ITEM POSY 160 32 FLOAT "Position Y"
|
107
|
-
UNITS METERS M
|
108
|
-
ITEM POSZ 192 32 FLOAT "Position Z"
|
109
|
-
UNITS METERS M
|
110
|
-
ITEM VELX 224 32 FLOAT "Velocity X"
|
111
|
-
UNITS METERS_PER_SECOND MPS
|
112
|
-
ITEM VELY 256 32 FLOAT "Velocity Y"
|
113
|
-
UNITS METERS_PER_SECOND MPS
|
114
|
-
ITEM VELZ 288 32 FLOAT "Velocity Z"
|
115
|
-
UNITS METERS_PER_SECOND MPS
|
116
|
-
ITEM Q1 320 32 FLOAT "Quaternion param 1"
|
117
|
-
FORMAT_STRING "%0.6f"
|
118
|
-
ITEM Q2 352 32 FLOAT "Quaternion param 2"
|
119
|
-
FORMAT_STRING "%0.6f"
|
120
|
-
ITEM Q3 384 32 FLOAT "Quaternion param 3"
|
121
|
-
FORMAT_STRING "%0.6f"
|
122
|
-
ITEM Q4 416 32 FLOAT "Quaternion param 4"
|
123
|
-
FORMAT_STRING "%0.6f"
|
124
|
-
ITEM BIASX 448 32 FLOAT "Body X rate bias"
|
125
|
-
FORMAT_STRING "%0.6f"
|
126
|
-
ITEM BIASY 480 32 FLOAT "Body Y rate bias"
|
127
|
-
FORMAT_STRING "%0.6f"
|
128
|
-
ITEM BIASZ 512 32 FLOAT "Body Z rate bias"
|
129
|
-
FORMAT_STRING "%0.6f"
|
130
|
-
APPEND_ITEM STAR1ID 16 UINT "Star 1 id"
|
131
|
-
APPEND_ITEM STAR2ID 16 UINT "Star 2 id"
|
132
|
-
APPEND_ITEM STAR3ID 16 UINT "Star 3 id"
|
133
|
-
APPEND_ITEM STAR4ID 16 UINT "Star 4 id"
|
134
|
-
APPEND_ITEM STAR5ID 16 UINT "Star 5 id"
|
135
|
-
ITEM POSPROGRESS 624 32 FLOAT "Position file progress"
|
136
|
-
FORMAT_STRING "%0.2f"
|
137
|
-
ITEM ATTPROGRESS 656 32 FLOAT "Attitude file progress"
|
138
|
-
FORMAT_STRING "%0.2f"
|
139
|
-
APPEND_ITEM SR_ANG_TO_SUN 32 FLOAT "Ideal Solar Array Angle to Point at Sun"
|
140
|
-
FORMAT_STRING "%0.2f"
|
141
|
-
APPEND_ITEM ADCS_CTRL 8 UINT "ADCS Control ON/OFF"
|
142
|
-
STATE OFF 0 YELLOW
|
143
|
-
STATE ON 1 GREEN
|
144
|
-
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
145
|
-
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
146
|
-
|
147
82
|
TELEMETRY GEOSAT EVENT BIG_ENDIAN "Event packet"
|
148
83
|
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
149
84
|
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
@@ -163,111 +98,6 @@ TELEMETRY GEOSAT EVENT BIG_ENDIAN "Event packet"
|
|
163
98
|
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
164
99
|
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
165
100
|
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
166
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
167
101
|
APPEND_ITEM MESSAGE 0 STRING "Event Message"
|
168
102
|
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
169
103
|
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
170
|
-
|
171
|
-
TELEMETRY GEOSAT IMAGE BIG_ENDIAN "Packet with image data"
|
172
|
-
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
173
|
-
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
174
|
-
STATE TLM 0
|
175
|
-
STATE CMD 1
|
176
|
-
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
|
177
|
-
STATE FALSE 0
|
178
|
-
STATE TRUE 1
|
179
|
-
APPEND_ID_ITEM CCSDSAPID 11 UINT 5 "CCSDS application process id"
|
180
|
-
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
|
181
|
-
STATE FIRST 1
|
182
|
-
STATE CONT 0
|
183
|
-
STATE LAST 2
|
184
|
-
STATE NOGROUP 3
|
185
|
-
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
|
186
|
-
OVERFLOW TRUNCATE
|
187
|
-
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
188
|
-
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
189
|
-
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
190
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
191
|
-
ITEM BYTES 128 32 UINT "First bytes"
|
192
|
-
FORMAT_STRING '0x%08x'
|
193
|
-
ITEM IMAGE 128 0 BLOCK "Image Data"
|
194
|
-
OVERLAP # Notify OpenC3 that this is intentionally overlapping the BYTES field
|
195
|
-
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
196
|
-
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
197
|
-
|
198
|
-
TELEMETRY GEOSAT MECH BIG_ENDIAN "Mechanism status"
|
199
|
-
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
200
|
-
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
201
|
-
STATE TLM 0
|
202
|
-
STATE CMD 1
|
203
|
-
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
|
204
|
-
STATE FALSE 0
|
205
|
-
STATE TRUE 1
|
206
|
-
APPEND_ID_ITEM CCSDSAPID 11 UINT 6 "CCSDS application process id"
|
207
|
-
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
|
208
|
-
STATE FIRST 1
|
209
|
-
STATE CONT 0
|
210
|
-
STATE LAST 2
|
211
|
-
STATE NOGROUP 3
|
212
|
-
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
|
213
|
-
OVERFLOW TRUNCATE
|
214
|
-
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
215
|
-
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
216
|
-
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
217
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
218
|
-
APPEND_ITEM SLRPNL1_ANG 32 FLOAT "Solar panel 1 angle"
|
219
|
-
UNITS DEGREES DEG
|
220
|
-
APPEND_ITEM SLRPNL2_ANG 32 FLOAT "Solar panel 2 angle"
|
221
|
-
UNITS DEGREES DEG
|
222
|
-
APPEND_ITEM SLRPNL1_STATE 8 UINT "Solar panel 1 state DEPLOYED/STOWED"
|
223
|
-
STATE STOWED 0 YELLOW
|
224
|
-
STATE DEPLOYED 1 GREEN
|
225
|
-
APPEND_ITEM SLRPNL2_STATE 8 UINT "Solar panel 2 state DEPLOYED/STOWED"
|
226
|
-
STATE STOWED 0 YELLOW
|
227
|
-
STATE DEPLOYED 1 GREEN
|
228
|
-
APPEND_ITEM SLRPNL1_PWR 32 FLOAT "Solar panel 1 power"
|
229
|
-
LIMITS DEFAULT 1 ENABLED 50 100 505 510
|
230
|
-
UNITS WATTS W
|
231
|
-
APPEND_ITEM SLRPNL2_PWR 32 FLOAT "Solar panel 2 power"
|
232
|
-
LIMITS DEFAULT 1 ENABLED 50 100 505 510
|
233
|
-
UNITS WATTS W
|
234
|
-
APPEND_ITEM BATTERY 32 FLOAT "Battery Percentage"
|
235
|
-
UNITS PERCENT %
|
236
|
-
LIMITS DEFAULT 1 ENABLED 10 50 105 110
|
237
|
-
FORMAT_STRING "%0.2f"
|
238
|
-
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
239
|
-
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
240
|
-
|
241
|
-
TELEMETRY GEOSAT IMAGER BIG_ENDIAN "Imager Status"
|
242
|
-
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
243
|
-
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
244
|
-
STATE TLM 0
|
245
|
-
STATE CMD 1
|
246
|
-
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
|
247
|
-
STATE FALSE 0
|
248
|
-
STATE TRUE 1
|
249
|
-
APPEND_ID_ITEM CCSDSAPID 11 UINT 7 "CCSDS application process id"
|
250
|
-
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
|
251
|
-
STATE FIRST 1
|
252
|
-
STATE CONT 0
|
253
|
-
STATE LAST 2
|
254
|
-
STATE NOGROUP 3
|
255
|
-
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
|
256
|
-
OVERFLOW TRUNCATE
|
257
|
-
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
258
|
-
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
259
|
-
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
260
|
-
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
261
|
-
APPEND_ITEM COLLECTS 16 UINT "Number of collects"
|
262
|
-
APPEND_ITEM DURATION 32 FLOAT "Most recent collect duration"
|
263
|
-
APPEND_ITEM COLLECT_TYPE 16 UINT "Most recent collect type"
|
264
|
-
STATE NORMAL 0
|
265
|
-
STATE SPECIAL 1
|
266
|
-
STATE ERROR ANY
|
267
|
-
APPEND_ITEM IMAGER_STATE 8 UINT "Imager State ON/OFF"
|
268
|
-
STATE OFF 0
|
269
|
-
STATE ON 1
|
270
|
-
APPEND_ITEM IMAGER_PWR 32 FLOAT "Image Power"
|
271
|
-
UNITS WATTS W
|
272
|
-
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
273
|
-
READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
|
@@ -27,46 +27,7 @@ module OpenC3
|
|
27
27
|
class SimSat < SimulatedTarget
|
28
28
|
def initialize(target_name)
|
29
29
|
super(target_name)
|
30
|
-
|
31
30
|
@target = System.targets[target_name]
|
32
|
-
position_filename = File.join(@target.dir, 'data', 'position.bin')
|
33
|
-
attitude_filename = File.join(@target.dir, 'data', 'attitude.bin')
|
34
|
-
@position_file = File.open(position_filename, 'rb')
|
35
|
-
@attitude_file = File.open(attitude_filename, 'rb')
|
36
|
-
@position_file_size = File.size(position_filename)
|
37
|
-
@attitude_file_size = File.size(attitude_filename)
|
38
|
-
@position_file_bytes_read = 0
|
39
|
-
@attitude_file_bytes_read = 0
|
40
|
-
|
41
|
-
@pos_packet = Structure.new(:BIG_ENDIAN)
|
42
|
-
@pos_packet.append_item('DAY', 16, :UINT)
|
43
|
-
@pos_packet.append_item('MSOD', 32, :UINT)
|
44
|
-
@pos_packet.append_item('USOMS', 16, :UINT)
|
45
|
-
@pos_packet.append_item('POSX', 32, :FLOAT)
|
46
|
-
@pos_packet.append_item('POSY', 32, :FLOAT)
|
47
|
-
@pos_packet.append_item('POSZ', 32, :FLOAT)
|
48
|
-
@pos_packet.append_item('SPARE1', 16, :UINT)
|
49
|
-
@pos_packet.append_item('SPARE2', 32, :UINT)
|
50
|
-
@pos_packet.append_item('SPARE3', 16, :UINT)
|
51
|
-
@pos_packet.append_item('VELX', 32, :FLOAT)
|
52
|
-
@pos_packet.append_item('VELY', 32, :FLOAT)
|
53
|
-
@pos_packet.append_item('VELZ', 32, :FLOAT)
|
54
|
-
@pos_packet.append_item('SPARE4', 32, :UINT)
|
55
|
-
@pos_packet.enable_method_missing
|
56
|
-
|
57
|
-
@att_packet = Structure.new(:BIG_ENDIAN)
|
58
|
-
@att_packet.append_item('DAY', 16, :UINT)
|
59
|
-
@att_packet.append_item('MSOD', 32, :UINT)
|
60
|
-
@att_packet.append_item('USOMS', 16, :UINT)
|
61
|
-
@att_packet.append_item('Q1', 32, :FLOAT)
|
62
|
-
@att_packet.append_item('Q2', 32, :FLOAT)
|
63
|
-
@att_packet.append_item('Q3', 32, :FLOAT)
|
64
|
-
@att_packet.append_item('Q4', 32, :FLOAT)
|
65
|
-
@att_packet.append_item('BIASX', 32, :FLOAT)
|
66
|
-
@att_packet.append_item('BIASY', 32, :FLOAT)
|
67
|
-
@att_packet.append_item('BIASZ', 32, :FLOAT)
|
68
|
-
@att_packet.append_item('SPARE', 32, :FLOAT)
|
69
|
-
@att_packet.enable_method_missing
|
70
31
|
|
71
32
|
# Initialize fixed parts of packets
|
72
33
|
packet = @tlm_packets['HEALTH_STATUS']
|
@@ -84,45 +45,9 @@ module OpenC3
|
|
84
45
|
packet.CcsdsSeqFlags = 'NOGROUP'
|
85
46
|
packet.CcsdsLength = packet.buffer.length - 7
|
86
47
|
|
87
|
-
packet = @tlm_packets['ADCS']
|
88
|
-
packet.enable_method_missing
|
89
|
-
packet.CcsdsSeqFlags = 'NOGROUP'
|
90
|
-
packet.CcsdsLength = packet.buffer.length - 7
|
91
|
-
|
92
|
-
packet = @tlm_packets['IMAGE']
|
93
|
-
packet.enable_method_missing
|
94
|
-
packet.CcsdsSeqFlags = 'NOGROUP'
|
95
|
-
packet.image = ("\x05" * 10000) + "The Secret is Astral Body"
|
96
|
-
packet.CcsdsLength = packet.buffer.length - 7
|
97
|
-
|
98
|
-
packet = @tlm_packets['MECH']
|
99
|
-
packet.enable_method_missing
|
100
|
-
packet.CcsdsSeqFlags = 'NOGROUP'
|
101
|
-
packet.CcsdsLength = packet.buffer.length - 7
|
102
|
-
|
103
|
-
packet = @tlm_packets['IMAGER']
|
104
|
-
packet.enable_method_missing
|
105
|
-
packet.CcsdsSeqFlags = 'NOGROUP'
|
106
|
-
packet.CcsdsLength = packet.buffer.length - 7
|
107
|
-
|
108
48
|
@get_count = 0
|
109
49
|
@queue = Queue.new
|
110
50
|
|
111
|
-
# ADCS
|
112
|
-
@trackStars = Array.new
|
113
|
-
@trackStars[0] = 1237
|
114
|
-
@trackStars[1] = 1329
|
115
|
-
@trackStars[2] = 1333
|
116
|
-
@trackStars[3] = 1139
|
117
|
-
@trackStars[4] = 1161
|
118
|
-
@trackStars[5] = 682
|
119
|
-
@trackStars[6] = 717
|
120
|
-
@trackStars[7] = 814
|
121
|
-
@trackStars[8] = 583
|
122
|
-
@trackStars[9] = 622
|
123
|
-
@adcs_ctrl = 'OFF'
|
124
|
-
@sr_ang_to_sun = 0
|
125
|
-
|
126
51
|
# HEALTH_STATUS
|
127
52
|
@cmd_acpt_cnt = 0
|
128
53
|
@cmd_rjct_cnt = 0
|
@@ -133,40 +58,19 @@ module OpenC3
|
|
133
58
|
# THERMAL
|
134
59
|
@temp1 = 0
|
135
60
|
@temp2 = 0
|
136
|
-
@heater1_ctrl = '
|
61
|
+
@heater1_ctrl = 'ON'
|
137
62
|
@heater1_state = 'OFF'
|
138
63
|
@heater1_setpt = 0.0
|
139
64
|
@heater1_pwr = 0.0
|
140
|
-
@heater2_ctrl = '
|
65
|
+
@heater2_ctrl = 'ON'
|
141
66
|
@heater2_state = 'OFF'
|
142
67
|
@heater2_setpt = 0.0
|
143
68
|
@heater2_pwr = 0.0
|
144
|
-
|
145
|
-
# MECH
|
146
|
-
@slrpnl1_ang = 180.0
|
147
|
-
@slrpnl2_ang = 180.0
|
148
|
-
@slrpnl1_state = 'STOWED'
|
149
|
-
@slrpnl2_state = 'STOWED'
|
150
|
-
@slrpnl1_pwr = 0.0
|
151
|
-
@slrpnl2_pwr = 0.0
|
152
|
-
@pwr_watt_seconds = INIT_PWR_WATT_SECONDS
|
153
|
-
@battery = (@pwr_watt_seconds.to_f / MAX_PWR_WATT_SECONDS.to_f) * 100.0
|
154
|
-
|
155
|
-
# IMAGER
|
156
|
-
@collects = 0
|
157
|
-
@duration = 10
|
158
|
-
@collect_type = 'NORMAL'
|
159
|
-
@imager_state = 'OFF'
|
160
|
-
@imager_pwr = 0.0
|
161
|
-
@collect_end_time = nil
|
162
69
|
end
|
163
70
|
|
164
71
|
def set_rates
|
165
|
-
set_rate('ADCS', 10)
|
166
72
|
set_rate('HEALTH_STATUS', 100)
|
167
73
|
set_rate('THERMAL', 100)
|
168
|
-
set_rate('MECH', 100)
|
169
|
-
set_rate('IMAGER', 100)
|
170
74
|
end
|
171
75
|
|
172
76
|
def accept_cmd(message = nil)
|
@@ -197,6 +101,9 @@ module OpenC3
|
|
197
101
|
name = packet.packet_name.upcase
|
198
102
|
|
199
103
|
case name
|
104
|
+
when 'NOOP'
|
105
|
+
accept_cmd()
|
106
|
+
|
200
107
|
when 'COLLECT'
|
201
108
|
if @mode == 'OPERATE'
|
202
109
|
@collects += 1
|
@@ -208,16 +115,6 @@ module OpenC3
|
|
208
115
|
reject_cmd("Mode must be OPERATE to collect images")
|
209
116
|
end
|
210
117
|
|
211
|
-
when 'ABORT'
|
212
|
-
@collect_end_time = nil
|
213
|
-
accept_cmd()
|
214
|
-
|
215
|
-
when 'CLEAR'
|
216
|
-
accept_cmd()
|
217
|
-
@collects = 0
|
218
|
-
@cmd_acpt_cnt = 0
|
219
|
-
@cmd_rjct_cnt = 0
|
220
|
-
|
221
118
|
when 'SET_MODE'
|
222
119
|
mode = packet.read('mode')
|
223
120
|
case mode
|
@@ -225,122 +122,13 @@ module OpenC3
|
|
225
122
|
@mode = mode
|
226
123
|
accept_cmd()
|
227
124
|
when 'CHECKOUT'
|
228
|
-
|
229
|
-
@mode = mode
|
230
|
-
accept_cmd()
|
231
|
-
else
|
232
|
-
reject_cmd("Cannot enter checkout if battery < 50.0%")
|
233
|
-
end
|
234
|
-
when 'OPERATE'
|
235
|
-
if @temp1 < 35.0 and @temp1 > 25.0 and @temp2 < 35.0 and @temp2 > 25.0
|
236
|
-
@mode = mode
|
237
|
-
accept_cmd()
|
238
|
-
else
|
239
|
-
reject_cmd("Cannot enter OPERATE unless temperatures are stable near 30.0")
|
240
|
-
end
|
241
|
-
else
|
242
|
-
reject_cmd("Invalid Mode: #{mode}")
|
243
|
-
end
|
244
|
-
|
245
|
-
when 'SLRPNLDEPLOY'
|
246
|
-
num = packet.read('NUM')
|
247
|
-
case num
|
248
|
-
when 1
|
249
|
-
@slrpnl1_state = 'DEPLOYED'
|
250
|
-
accept_cmd()
|
251
|
-
when 2
|
252
|
-
@slrpnl2_state = 'DEPLOYED'
|
253
|
-
accept_cmd()
|
254
|
-
else
|
255
|
-
reject_cmd("Invalid Solar Array Number: #{num}")
|
256
|
-
end
|
257
|
-
|
258
|
-
when 'SLRPNLSTOW'
|
259
|
-
num = packet.read('NUM')
|
260
|
-
case num
|
261
|
-
when 1
|
262
|
-
@slrpnl1_state = 'STOWED'
|
125
|
+
@mode = mode
|
263
126
|
accept_cmd()
|
264
|
-
when
|
265
|
-
@
|
127
|
+
when 'OPERATE'
|
128
|
+
@mode = mode
|
266
129
|
accept_cmd()
|
267
130
|
else
|
268
|
-
reject_cmd("Invalid
|
269
|
-
end
|
270
|
-
|
271
|
-
when 'SLRPNLANG'
|
272
|
-
num = packet.read('NUM')
|
273
|
-
ang = packet.read('ANG')
|
274
|
-
case num
|
275
|
-
when 1
|
276
|
-
case ang
|
277
|
-
when 0..360
|
278
|
-
@slrpnl1_ang = ang
|
279
|
-
accept_cmd()
|
280
|
-
else
|
281
|
-
reject_cmd("Invalid Solar Array Angle: #{setpt}")
|
282
|
-
end
|
283
|
-
when 2
|
284
|
-
case ang
|
285
|
-
when 0..360
|
286
|
-
@slrpnl2_ang = ang
|
287
|
-
accept_cmd()
|
288
|
-
else
|
289
|
-
reject_cmd("Invalid Solar Array Angle: #{setpt}")
|
290
|
-
end
|
291
|
-
else
|
292
|
-
reject_cmd("Invalid Solar Array Number: #{num}")
|
293
|
-
end
|
294
|
-
|
295
|
-
when 'TABLE_LOAD'
|
296
|
-
@table_data = packet.read('DATA')
|
297
|
-
|
298
|
-
when 'HTR_CTRL'
|
299
|
-
num = packet.read('NUM')
|
300
|
-
state = packet.read('STATE')
|
301
|
-
case num
|
302
|
-
when 1
|
303
|
-
case state
|
304
|
-
when 'ON', 'OFF'
|
305
|
-
@heater1_ctrl = state
|
306
|
-
accept_cmd()
|
307
|
-
else
|
308
|
-
reject_cmd("Invalid Heater Control: #{state}")
|
309
|
-
end
|
310
|
-
when 2
|
311
|
-
case state
|
312
|
-
when 'ON', 'OFF'
|
313
|
-
@heater2_ctrl = state
|
314
|
-
accept_cmd()
|
315
|
-
else
|
316
|
-
reject_cmd("Invalid Heater Control: #{state}")
|
317
|
-
end
|
318
|
-
else
|
319
|
-
reject_cmd("Invalid Heater Number: #{num}")
|
320
|
-
end
|
321
|
-
|
322
|
-
when 'HTR_STATE'
|
323
|
-
num = packet.read('NUM')
|
324
|
-
state = packet.read('STATE')
|
325
|
-
case num
|
326
|
-
when 1
|
327
|
-
case state
|
328
|
-
when 'ON', 'OFF'
|
329
|
-
@heater1_state = state
|
330
|
-
accept_cmd()
|
331
|
-
else
|
332
|
-
reject_cmd("Invalid Heater State: #{state}")
|
333
|
-
end
|
334
|
-
when 2
|
335
|
-
case state
|
336
|
-
when 'ON', 'OFF'
|
337
|
-
@heater2_state = state
|
338
|
-
accept_cmd()
|
339
|
-
else
|
340
|
-
reject_cmd("Invalid Heater State: #{state}")
|
341
|
-
end
|
342
|
-
else
|
343
|
-
reject_cmd("Invalid Heater Number: #{num}")
|
131
|
+
reject_cmd("Invalid Mode: #{mode}")
|
344
132
|
end
|
345
133
|
|
346
134
|
when 'HTR_SETPT'
|
@@ -367,15 +155,6 @@ module OpenC3
|
|
367
155
|
reject_cmd("Invalid Heater Number: #{num}")
|
368
156
|
end
|
369
157
|
|
370
|
-
when 'ADCS_CTRL'
|
371
|
-
state = packet.read('STATE')
|
372
|
-
case state
|
373
|
-
when 'ON', 'OFF'
|
374
|
-
@adcs_ctrl = state
|
375
|
-
accept_cmd()
|
376
|
-
else
|
377
|
-
reject_cmd("Invalid ADCS Control: #{state}")
|
378
|
-
end
|
379
158
|
end
|
380
159
|
end
|
381
160
|
|
@@ -395,73 +174,6 @@ module OpenC3
|
|
395
174
|
|
396
175
|
pending_packets.each do |packet|
|
397
176
|
case packet.packet_name
|
398
|
-
when 'ADCS'
|
399
|
-
# Read 44 Bytes for Position Data
|
400
|
-
pos_data = nil
|
401
|
-
begin
|
402
|
-
pos_data = @position_file.read(44)
|
403
|
-
@position_file_bytes_read += 44
|
404
|
-
rescue
|
405
|
-
# Do Nothing
|
406
|
-
end
|
407
|
-
|
408
|
-
if pos_data.nil? or pos_data.length == 0
|
409
|
-
# Assume end of file - close and reopen
|
410
|
-
@position_file.close
|
411
|
-
@position_file = File.open(File.join(@target.dir, 'data', 'position.bin'), 'rb')
|
412
|
-
pos_data = @position_file.read(44)
|
413
|
-
@position_file_bytes_read = 44
|
414
|
-
end
|
415
|
-
|
416
|
-
@pos_packet.buffer = pos_data
|
417
|
-
packet.posx = @pos_packet.posx
|
418
|
-
packet.posy = @pos_packet.posy
|
419
|
-
packet.posz = @pos_packet.posz
|
420
|
-
packet.velx = @pos_packet.velx
|
421
|
-
packet.vely = @pos_packet.vely
|
422
|
-
packet.velz = @pos_packet.velz
|
423
|
-
|
424
|
-
# Read 40 Bytes for Attitude Data
|
425
|
-
att_data = nil
|
426
|
-
begin
|
427
|
-
att_data = @attitude_file.read(40)
|
428
|
-
@attitude_file_bytes_read += 40
|
429
|
-
rescue
|
430
|
-
# Do Nothing
|
431
|
-
end
|
432
|
-
|
433
|
-
if att_data.nil? or att_data.length == 0
|
434
|
-
@attitude_file.close
|
435
|
-
@attitude_file = File.open(File.join(@target.dir, 'data', 'attitude.bin'), 'rb')
|
436
|
-
att_data = @attitude_file.read(40)
|
437
|
-
@attitude_file_bytes_read = 40
|
438
|
-
end
|
439
|
-
|
440
|
-
@att_packet.buffer = att_data
|
441
|
-
packet.q1 = @att_packet.q1
|
442
|
-
packet.q2 = @att_packet.q2
|
443
|
-
packet.q3 = @att_packet.q3
|
444
|
-
packet.q4 = @att_packet.q4
|
445
|
-
packet.biasx = @att_packet.biasx
|
446
|
-
packet.biasy = @att_packet.biasy
|
447
|
-
packet.biasy = @att_packet.biasz
|
448
|
-
|
449
|
-
packet.star1id = @trackStars[((@get_count / 100) + 0) % 10]
|
450
|
-
packet.star2id = @trackStars[((@get_count / 100) + 1) % 10]
|
451
|
-
packet.star3id = @trackStars[((@get_count / 100) + 2) % 10]
|
452
|
-
packet.star4id = @trackStars[((@get_count / 100) + 3) % 10]
|
453
|
-
packet.star5id = @trackStars[((@get_count / 100) + 4) % 10]
|
454
|
-
|
455
|
-
packet.posprogress = (@position_file_bytes_read.to_f / @position_file_size.to_f) * 100.0
|
456
|
-
packet.attprogress = (@attitude_file_bytes_read.to_f / @attitude_file_size.to_f) * 100.0
|
457
|
-
@sr_ang_to_sun = packet.posprogress * 3.6
|
458
|
-
packet.sr_ang_to_sun = @sr_ang_to_sun
|
459
|
-
packet.adcs_ctrl = @adcs_ctrl
|
460
|
-
|
461
|
-
packet.timesec = time.tv_sec
|
462
|
-
packet.timeus = time.tv_usec
|
463
|
-
packet.ccsdsseqcnt += 1
|
464
|
-
|
465
177
|
when 'HEALTH_STATUS'
|
466
178
|
packet.timesec = time.tv_sec
|
467
179
|
packet.timeus = time.tv_usec
|
@@ -532,88 +244,6 @@ module OpenC3
|
|
532
244
|
packet.heater2_pwr = @heater2_pwr
|
533
245
|
packet.temp1 = @temp1
|
534
246
|
packet.temp2 = @temp2
|
535
|
-
|
536
|
-
when 'MECH'
|
537
|
-
if @adcs_ctrl == 'ON'
|
538
|
-
@slrpnl1_ang = @sr_ang_to_sun
|
539
|
-
@slrpnl2_ang = @sr_ang_to_sun
|
540
|
-
end
|
541
|
-
|
542
|
-
delta_ang = (@sr_ang_to_sun - @slrpnl1_ang).abs
|
543
|
-
if delta_ang > 180.0
|
544
|
-
delta_ang = 360 - delta_ang
|
545
|
-
end
|
546
|
-
if @slrpnl1_state == 'DEPLOYED'
|
547
|
-
@slrpnl1_pwr = 500 * (1 - (delta_ang / 180.0))
|
548
|
-
else
|
549
|
-
@slrpnl1_pwr = 0
|
550
|
-
end
|
551
|
-
|
552
|
-
delta_ang = (@sr_ang_to_sun - @slrpnl2_ang).abs
|
553
|
-
if delta_ang > 180.0
|
554
|
-
delta_ang = 360 - delta_ang
|
555
|
-
end
|
556
|
-
if @slrpnl2_state == 'DEPLOYED'
|
557
|
-
@slrpnl2_pwr = 500 * (1 - (delta_ang / 180.0))
|
558
|
-
else
|
559
|
-
@slrpnl2_pwr = 0
|
560
|
-
end
|
561
|
-
|
562
|
-
incoming_pwr = @slrpnl1_pwr + @slrpnl2_pwr # Upto 1000 per second
|
563
|
-
|
564
|
-
used_pwr = @cpu_pwr + @imager_pwr + @heater1_pwr + @heater2_pwr # Up to 900 per second
|
565
|
-
delta_pwr = incoming_pwr - used_pwr
|
566
|
-
@pwr_watt_seconds += delta_pwr
|
567
|
-
if @pwr_watt_seconds < 0
|
568
|
-
@pwr_watt_seconds = 100
|
569
|
-
elsif @pwr_watt_seconds > MAX_PWR_WATT_SECONDS
|
570
|
-
@pwr_watt_seconds = MAX_PWR_WATT_SECONDS
|
571
|
-
end
|
572
|
-
@battery = (@pwr_watt_seconds.to_f / MAX_PWR_WATT_SECONDS.to_f) * 100.0
|
573
|
-
if @battery < 50.0
|
574
|
-
@mode = 'SAFE'
|
575
|
-
end
|
576
|
-
|
577
|
-
packet.timesec = time.tv_sec
|
578
|
-
packet.timeus = time.tv_usec
|
579
|
-
packet.ccsdsseqcnt += 1
|
580
|
-
packet.slrpnl1_ang = @slrpnl1_ang
|
581
|
-
packet.slrpnl2_ang = @slrpnl2_ang
|
582
|
-
packet.slrpnl1_state = @slrpnl1_state
|
583
|
-
packet.slrpnl2_state = @slrpnl2_state
|
584
|
-
packet.slrpnl1_pwr = @slrpnl1_pwr
|
585
|
-
packet.slrpnl2_pwr = @slrpnl2_pwr
|
586
|
-
packet.battery = @battery
|
587
|
-
|
588
|
-
when 'IMAGER'
|
589
|
-
if @collect_end_time
|
590
|
-
if @collect_end_time < Time.now
|
591
|
-
@imager_state = 'OFF'
|
592
|
-
@collect_end_time = nil
|
593
|
-
@imager_pwr = 0
|
594
|
-
image_packet = @tlm_packets['IMAGE']
|
595
|
-
time = Time.now
|
596
|
-
image_packet.timesec = time.tv_sec
|
597
|
-
image_packet.timeus = time.tv_usec
|
598
|
-
image_packet.ccsdsseqcnt += 1
|
599
|
-
@queue << image_packet.dup
|
600
|
-
else
|
601
|
-
@imager_state = 'ON'
|
602
|
-
@imager_pwr = 200
|
603
|
-
end
|
604
|
-
else
|
605
|
-
@imager_pwr = 0
|
606
|
-
end
|
607
|
-
|
608
|
-
packet.timesec = time.tv_sec
|
609
|
-
packet.timeus = time.tv_usec
|
610
|
-
packet.ccsdsseqcnt += 1
|
611
|
-
packet.collects = @collects
|
612
|
-
packet.duration = @duration
|
613
|
-
packet.collect_type = @collect_type
|
614
|
-
packet.imager_state = @imager_state
|
615
|
-
packet.imager_pwr = @imager_pwr
|
616
|
-
|
617
247
|
end
|
618
248
|
end
|
619
249
|
|
@@ -6,7 +6,7 @@ IGNORE_PARAMETER CCSDSAPID
|
|
6
6
|
IGNORE_PARAMETER CCSDSSEQFLAGS
|
7
7
|
IGNORE_PARAMETER CCSDSSEQCNT
|
8
8
|
IGNORE_PARAMETER CCSDSLENGTH
|
9
|
-
IGNORE_PARAMETER
|
9
|
+
IGNORE_PARAMETER IGNORE
|
10
10
|
|
11
11
|
# Ignored Items
|
12
12
|
IGNORE_ITEM CCSDSVER
|
@@ -21,7 +21,6 @@ IGNORE_ITEM PACKET_TIMESECONDS
|
|
21
21
|
IGNORE_ITEM RECEIVED_TIMESECONDS
|
22
22
|
IGNORE_ITEM TIMESEC
|
23
23
|
IGNORE_ITEM TIMEUS
|
24
|
-
IGNORE_ITEM PKTID
|
25
24
|
|
26
25
|
# Explicitly define command and telemetry files
|
27
26
|
# If not given then all the files in cmd/tlm will be processed in
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openc3-cosmos-geosim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Melton
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-01-
|
12
|
+
date: 2023-01-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: " cosmos-geosim plugin facilitating COSMOS config training\n"
|
15
15
|
email:
|
@@ -25,8 +25,6 @@ files:
|
|
25
25
|
- microservices/GEOSIM/geosat_target.rb
|
26
26
|
- microservices/GEOSIM/targets/GEOSAT/cmd_tlm/cmds.txt
|
27
27
|
- microservices/GEOSIM/targets/GEOSAT/cmd_tlm/tlm.txt
|
28
|
-
- microservices/GEOSIM/targets/GEOSAT/data/attitude.bin
|
29
|
-
- microservices/GEOSIM/targets/GEOSAT/data/position.bin
|
30
28
|
- microservices/GEOSIM/targets/GEOSAT/lib/sim_sat.rb
|
31
29
|
- microservices/GEOSIM/targets/GEOSAT/target.txt
|
32
30
|
- plugin.txt
|
Binary file
|
Binary file
|