openc3-cosmos-geosim 1.0.1 → 1.0.3

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