openc3-cosmos-demo 5.11.3 → 5.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/plugin.txt +2 -2
- data/targets/INST/lib/example_limits_response.rb +4 -10
- data/targets/INST/procedures/calendar.rb +43 -0
- data/targets/INST/screens/adcs.txt +12 -12
- data/targets/INST/screens/array.txt +5 -9
- data/targets/INST/screens/ground.txt +2 -3
- data/targets/INST/screens/hs.txt +7 -11
- data/targets/INST/target.txt +2 -0
- data/targets/INST2/cmd_tlm/_ccsds_cmd.txt +9 -0
- data/targets/INST2/cmd_tlm/_ccsds_tlm.txt +19 -0
- data/targets/INST2/cmd_tlm/inst_cmds.txt +68 -0
- data/targets/INST2/cmd_tlm/inst_tlm.txt +149 -0
- data/targets/INST2/cmd_tlm/inst_tlm_override.txt +12 -0
- data/targets/INST2/data/attitude.bin +0 -0
- data/targets/INST2/data/position.bin +0 -0
- data/targets/INST2/lib/example_limits_response.py +27 -0
- data/targets/INST2/lib/helper.py +3 -0
- data/targets/INST2/lib/sim_inst.py +383 -0
- data/targets/INST2/procedures/calendar.py +57 -0
- data/targets/{INST/procedures_py → INST2/procedures}/checks.py +0 -1
- data/targets/{INST/procedures_py → INST2/procedures}/collect.py +7 -3
- data/targets/{INST/procedures_py → INST2/procedures}/disconnect.py +0 -2
- data/targets/{INST/procedures_py → INST2/procedures}/file_dialog.py +0 -2
- data/targets/{INST/procedures_py → INST2/procedures}/metadata.py +0 -2
- data/targets/INST2/procedures/my_script_suite.py +49 -0
- data/targets/INST2/procedures/my_test_suite.py +43 -0
- data/targets/{INST/procedures_py → INST2/procedures}/screens.py +0 -2
- data/targets/{INST/procedures_py → INST2/procedures}/stash.py +0 -2
- data/targets/{INST/procedures_py → INST2/procedures}/target_file.py +0 -1
- data/targets/{INST/procedures_py → INST2/procedures}/utilities/clear.py +0 -3
- data/targets/{INST/procedures_py → INST2/procedures}/utilities/collect.py +1 -3
- data/targets/INST2/public/ground_error.png +0 -0
- data/targets/INST2/public/ground_off.png +0 -0
- data/targets/INST2/public/ground_on.png +0 -0
- data/targets/INST2/public/satellite.png +0 -0
- data/targets/INST2/public/spiral.jpg +0 -0
- data/targets/INST2/screens/_footer.txt +1 -0
- data/targets/INST2/screens/adcs.txt +65 -0
- data/targets/INST2/screens/array.txt +12 -0
- data/targets/INST2/screens/block.txt +7 -0
- data/targets/INST2/screens/commanding.txt +57 -0
- data/targets/INST2/screens/graphs.txt +27 -0
- data/targets/INST2/screens/ground.txt +47 -0
- data/targets/INST2/screens/hs.txt +37 -0
- data/targets/INST2/screens/image.txt +3 -0
- data/targets/INST2/screens/latest.txt +20 -0
- data/targets/INST2/screens/launcher.txt +10 -0
- data/targets/INST2/screens/limits.txt +77 -0
- data/targets/INST2/screens/other.txt +22 -0
- data/targets/INST2/screens/params.txt +69 -0
- data/targets/INST2/screens/simple.txt +6 -0
- data/targets/INST2/screens/tabs.txt +56 -0
- data/targets/INST2/screens/web.txt +5 -0
- data/targets/INST2/tables/bin/ConfigTables.bin +0 -0
- data/targets/INST2/tables/config/ConfigTables_def.txt +7 -0
- data/targets/INST2/tables/config/MCConfigurationTable_def.txt +36 -0
- data/targets/INST2/tables/config/PPSSelectionTable_def.txt +7 -0
- data/targets/INST2/tables/config/TLMMonitoringTable_def.txt +31 -0
- data/targets/INST2/tables/procedures/download.rb +16 -0
- data/targets/INST2/tables/procedures/upload.rb +19 -0
- data/targets/INST2/target.txt +27 -0
- data/targets/SYSTEM/procedures/example_test.rb +0 -5
- data/targets/SYSTEM/procedures/openc3_api_test.rb +6 -6
- data/tools/widgets/BigWidget/BigWidget.umd.min.js +1 -3
- data/tools/widgets/BigWidget/BigWidget.umd.min.js.map +1 -1
- data/tools/widgets/DataviewerquaternionWidget/DataviewerquaternionWidget.umd.min.js +2 -2
- data/tools/widgets/DataviewerquaternionWidget/DataviewerquaternionWidget.umd.min.js.map +1 -1
- data/tools/widgets/DataviewertimeWidget/DataviewertimeWidget.umd.min.js +1 -1
- data/tools/widgets/DataviewertimeWidget/DataviewertimeWidget.umd.min.js.map +1 -1
- data/tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js +1 -1
- data/tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js.map +1 -1
- metadata +56 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8102e76c668e398b631245873162c40e493ebf7c966f8ae729b49dcbe424c879
|
4
|
+
data.tar.gz: f9e670d0d4fe1596609c0f4be97b077f6b9bcbac376dd2db714628ec60ce0803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c69a457e058ec5d22d82e329e8f2b3aec72ddf4bdc6783f4d6e6d53d132af819222abd66eecb4013261daa7848b9f1793ac86882fb1af6e50f1212ad1577d9d5
|
7
|
+
data.tar.gz: 10882583301fbba61f8170a3c38d1b0c3af6d729645fdeefeb108fa6fedf188bcce6312df5c618440fd60972d200a61dcf740c55fc9100885c423975d9f5a96f
|
data/plugin.txt
CHANGED
@@ -44,7 +44,7 @@ VARIABLE reduced_log_retain_time 2592000
|
|
44
44
|
<% end %>
|
45
45
|
|
46
46
|
<% if include_inst2 %>
|
47
|
-
TARGET
|
47
|
+
TARGET INST2 <%= inst2_target_name %>
|
48
48
|
LOG_RETAIN_TIME <%= log_retain_time %>
|
49
49
|
REDUCED_LOG_RETAIN_TIME <%= reduced_log_retain_time %>
|
50
50
|
TLM_LOG_CYCLE_TIME 600
|
@@ -78,7 +78,7 @@ VARIABLE reduced_log_retain_time 2592000
|
|
78
78
|
<% end %>
|
79
79
|
|
80
80
|
<% if include_inst2 and include_inst2_int %>
|
81
|
-
INTERFACE <%= inst2_int_name %> simulated_target_interface.
|
81
|
+
INTERFACE <%= inst2_int_name %> openc3/interfaces/simulated_target_interface.py sim_inst.py
|
82
82
|
MAP_TARGET <%= inst2_target_name %>
|
83
83
|
<% end %>
|
84
84
|
|
@@ -14,29 +14,23 @@
|
|
14
14
|
# GNU Affero General Public License for more details.
|
15
15
|
|
16
16
|
# Modified by OpenC3, Inc.
|
17
|
-
# All changes Copyright
|
17
|
+
# All changes Copyright 2023, OpenC3, Inc.
|
18
18
|
# All Rights Reserved
|
19
19
|
#
|
20
|
-
# This file may also be used under the terms of a commercial license
|
20
|
+
# This file may also be used under the terms of a commercial license
|
21
21
|
# if purchased from OpenC3, Inc.
|
22
22
|
|
23
23
|
# This file implements a class to handle responses to limits state changes.
|
24
24
|
|
25
25
|
require 'openc3/packets/limits_response'
|
26
26
|
|
27
|
-
# ExampleLimitsResponse class
|
28
|
-
#
|
29
|
-
# This class handles a limits response
|
30
|
-
#
|
31
27
|
class ExampleLimitsResponse < OpenC3::LimitsResponse
|
32
|
-
|
33
28
|
def call(packet, item, old_limits_state)
|
34
29
|
case item.limits.state
|
35
30
|
when :RED_HIGH
|
36
|
-
cmd('<%= target_name %>', 'COLLECT', 'TYPE' => 'NORMAL', 'DURATION' =>
|
31
|
+
cmd('<%= target_name %>', 'COLLECT', 'TYPE' => 'NORMAL', 'DURATION' => 7)
|
37
32
|
when :RED_LOW
|
38
33
|
cmd_no_hazardous_check('<%= target_name %>', 'CLEAR')
|
39
34
|
end
|
40
35
|
end
|
41
|
-
|
42
|
-
end # class ExampleLimitsResponse
|
36
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
tl = create_timeline("Mine")
|
2
|
+
puts tl #=> {"name"=>"Mine", "color"=>"#ae2d1b", "scope"=>"DEFAULT", "updated_at"=>1698763720728596964}
|
3
|
+
tls = list_timelines()
|
4
|
+
check_expression("#{tls.length} == 1")
|
5
|
+
puts tls[0] #=> {"name"=>"Mine", "color"=>"#ae2d1b", "scope"=>"DEFAULT", "updated_at"=>1698763720728596964}
|
6
|
+
delete_timeline("Mine")
|
7
|
+
check_expression("#{list_timelines().length} == 0")
|
8
|
+
|
9
|
+
create_timeline("Mine")
|
10
|
+
set_timeline_color("Mine", "#4287f5")
|
11
|
+
puts get_timeline("Mine") #=> {"name"=>"Mine", "color"=>"#4287f5", "scope"=>"DEFAULT", "updated_at"=>1698763720728596964}
|
12
|
+
|
13
|
+
now = Time.now()
|
14
|
+
start = Time.new(now.year, now.month, now.day, now.hour + 1, 30, 00)
|
15
|
+
stop = start + 3600 # Stop plus 1hr
|
16
|
+
act = create_timeline_activity("Mine", kind: "reserve", start: start, stop: stop)
|
17
|
+
puts act #=>
|
18
|
+
# { "name"=>"Mine", "updated_at"=>1698763721927799173, "fulfillment"=>false, "duration"=>3600,
|
19
|
+
# "start"=>1698764400, "stop"=>1698768000, "kind"=>"reserve",
|
20
|
+
# "events"=>[{"time"=>1698763721, "event"=>"created"}], "data"=>{"username"=>""} }
|
21
|
+
# Get activities in the past ... should be none
|
22
|
+
tlas = get_timeline_activities("Mine", start: Time.now() - 3600, stop: Time.now())
|
23
|
+
check_expression("#{tlas.length} == 0")
|
24
|
+
# Get all activities
|
25
|
+
tlas = get_timeline_activities("Mine")
|
26
|
+
check_expression("#{tlas.length} == 1")
|
27
|
+
|
28
|
+
# Create and delete a new activity
|
29
|
+
start = start + 7200
|
30
|
+
stop = start + 300
|
31
|
+
act = create_timeline_activity("Mine", kind: "reserve", start: start, stop: stop)
|
32
|
+
tlas = get_timeline_activities("Mine")
|
33
|
+
check_expression("#{tlas.length} == 2")
|
34
|
+
delete_timeline_activity("Mine", act['start'])
|
35
|
+
tlas = get_timeline_activities("Mine")
|
36
|
+
check_expression("#{tlas.length} == 1")
|
37
|
+
|
38
|
+
# delete fails since the timeline has activities
|
39
|
+
delete_timeline("Mine") #=> RuntimeError : Failed to delete timeline due to timeline contains activities, must force remove
|
40
|
+
# Force delete since the timeline has activities
|
41
|
+
delete_timeline("Mine", force: true)
|
42
|
+
tls = list_timelines()
|
43
|
+
check_expression("#{tls.length} == 0")
|
@@ -7,27 +7,29 @@ VERTICAL
|
|
7
7
|
HORIZONTAL
|
8
8
|
VERTICALBOX "Position and Velocity"
|
9
9
|
LABELVALUE <%= target_name %> ADCS POSX WITH_UNITS 20 CENTER
|
10
|
+
# We recommend using these built-in colors from 1-8
|
11
|
+
SETTING TEXTCOLOR var(--color-data-visualization-1)
|
10
12
|
LABELVALUE <%= target_name %> ADCS POSY WITH_UNITS 22 CENTER
|
13
|
+
SETTING TEXTCOLOR var(--color-data-visualization-1)
|
11
14
|
LABELVALUE <%= target_name %> ADCS POSZ WITH_UNITS 24 CENTER
|
15
|
+
SETTING TEXTCOLOR var(--color-data-visualization-1)
|
12
16
|
LABELVALUE <%= target_name %> ADCS VELX WITH_UNITS 20
|
17
|
+
SETTING TEXTCOLOR var(--color-data-visualization-2)
|
13
18
|
LABELVALUE <%= target_name %> ADCS VELY WITH_UNITS 22
|
19
|
+
SETTING TEXTCOLOR var(--color-data-visualization-2)
|
14
20
|
LABELVALUE <%= target_name %> ADCS VELZ WITH_UNITS 24
|
21
|
+
SETTING TEXTCOLOR var(--color-data-visualization-2)
|
15
22
|
END
|
16
23
|
|
17
24
|
VERTICALBOX "Attitude"
|
18
25
|
LABELVALUE <%= target_name %> ADCS Q1 WITH_UNITS 12 RIGHT
|
19
26
|
SETTING TEXTALIGN LEFT
|
20
|
-
SETTING TEXTCOLOR RED
|
21
27
|
LABELVALUE <%= target_name %> ADCS Q2 WITH_UNITS 12 RIGHT
|
22
28
|
SETTING TEXTALIGN LEFT
|
23
|
-
SUBSETTING 0 TEXTCOLOR BLUE
|
24
|
-
SUBSETTING 1 TEXTCOLOR GREEN
|
25
29
|
LABELVALUE <%= target_name %> ADCS Q3 WITH_UNITS 12 RIGHT
|
26
30
|
SETTING TEXTALIGN LEFT
|
27
|
-
SETTING BACKCOLOR PURPLE
|
28
31
|
LABELVALUE <%= target_name %> ADCS Q4 WITH_UNITS 12 RIGHT
|
29
32
|
SETTING TEXTALIGN LEFT
|
30
|
-
SUBSETTING 0 BACKCOLOR ORANGE
|
31
33
|
LABELVALUE <%= target_name %> ADCS BIASX WITH_UNITS 12 RIGHT
|
32
34
|
SETTING TEXTALIGN LEFT
|
33
35
|
LABELVALUE <%= target_name %> ADCS BIASY WITH_UNITS 12 RIGHT
|
@@ -37,25 +39,23 @@ VERTICAL
|
|
37
39
|
END
|
38
40
|
|
39
41
|
VERTICALBOX "File Progress"
|
40
|
-
LABELPROGRESSBAR <%= target_name %> ADCS POSPROGRESS
|
42
|
+
LABELPROGRESSBAR <%= target_name %> ADCS POSPROGRESS 1 200 # scale 1, width 200
|
41
43
|
LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS
|
42
|
-
LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS 2
|
44
|
+
LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS 2 # scale by 2
|
43
45
|
|
44
46
|
LABEL ""
|
45
47
|
LABEL "LEFT"
|
46
48
|
SETTING PADDING 5
|
47
49
|
SETTING TEXTALIGN LEFT
|
48
|
-
SETTING BACKCOLOR
|
50
|
+
SETTING BACKCOLOR var(--color-data-visualization-1)
|
49
51
|
LABEL "CENTER"
|
50
52
|
SETTING PADDING 5
|
51
53
|
SETTING TEXTALIGN CENTER
|
52
|
-
SETTING
|
53
|
-
SETTING BACKCOLOR WHITE
|
54
|
+
SETTING BACKCOLOR var(--color-data-visualization-2)
|
54
55
|
LABEL "RIGHT"
|
55
56
|
SETTING PADDING 5
|
56
57
|
SETTING TEXTALIGN RIGHT
|
57
|
-
SETTING
|
58
|
-
SETTING BACKCOLOR BLUE
|
58
|
+
SETTING BACKCOLOR var(--color-data-visualization-3)
|
59
59
|
END
|
60
60
|
END
|
61
61
|
|
@@ -1,16 +1,12 @@
|
|
1
1
|
SCREEN AUTO AUTO 1.0
|
2
|
-
GLOBAL_SETTING ARRAY COLORBLIND TRUE
|
3
|
-
GLOBAL_SETTING TEXTBOX COLORBLIND TRUE
|
4
2
|
|
5
3
|
VERTICAL
|
6
4
|
TITLE "<%= target_name %> Instrument Array Data"
|
7
5
|
ARRAY <%= target_name %> HEALTH_STATUS ARY
|
8
|
-
ARRAY <%= target_name %> HEALTH_STATUS ARY 300
|
9
|
-
ARRAY <%= target_name %> HEALTH_STATUS ARY2 300
|
10
|
-
TEXTBOX <%= target_name %> HEALTH_STATUS ARY 200
|
6
|
+
ARRAY <%= target_name %> HEALTH_STATUS ARY 300 65 nil 8 FORMATTED
|
7
|
+
ARRAY <%= target_name %> HEALTH_STATUS ARY2 300 65 nil 5 WITH_UNITS
|
8
|
+
TEXTBOX <%= target_name %> HEALTH_STATUS ARY 200 65
|
11
9
|
TEXTBOX <%= target_name %> HEALTH_STATUS ARY2 300 200
|
12
|
-
ARRAY <%= target_name %> HEALTH_STATUS GROUND1STATUS 300
|
13
|
-
ARRAY <%= target_name %> HEALTH_STATUS GROUND2STATUS 300
|
14
|
-
TEXTBOX <%= target_name %> HEALTH_STATUS GROUND1STATUS 300 50
|
15
|
-
TEXTBOX <%= target_name %> HEALTH_STATUS GROUND2STATUS 300 100
|
10
|
+
ARRAY <%= target_name %> HEALTH_STATUS GROUND1STATUS 300 65 nil 8 FORMATTED
|
11
|
+
ARRAY <%= target_name %> HEALTH_STATUS GROUND2STATUS 300 65 nil 5 WITH_UNITS
|
16
12
|
END
|
@@ -4,8 +4,8 @@ VERTICAL
|
|
4
4
|
TITLE "<%= target_name %> Instrument Ground Station Status"
|
5
5
|
|
6
6
|
CANVAS 650 600
|
7
|
-
#
|
8
|
-
CANVASLINE 0 3 650 3 blue 3
|
7
|
+
# Example of lines and circles
|
8
|
+
# CANVASLINE 0 3 650 3 blue 3
|
9
9
|
# CANVASDOT 10 15 BLUE 5
|
10
10
|
CANVASLABEL 200 30 "Ground Contact Status"
|
11
11
|
|
@@ -17,7 +17,6 @@ VERTICAL
|
|
17
17
|
# SETTING TLM_AND <%= target_name %> HEALTH_STATUS COLLECTS VALUE_EQ 0
|
18
18
|
# SETTING IMAGE true "ground_on.png" 100 200
|
19
19
|
# SETTING IMAGE false "ground_off.png" 100 200
|
20
|
-
CANVASLINE 10 10 640 10 blue 3
|
21
20
|
CANVASIMAGE "satellite.png" 90 130 200 200
|
22
21
|
# If the image is clicked the "<%= target_name %> ADCS" screen will popup
|
23
22
|
SETTING SCREEN <%= target_name %> ADCS
|
data/targets/INST/screens/hs.txt
CHANGED
@@ -1,14 +1,9 @@
|
|
1
1
|
SCREEN AUTO AUTO 0.5
|
2
|
-
|
3
|
-
GLOBAL_SETTING
|
4
|
-
GLOBAL_SETTING LABELVALUE TEXTCOLOR BLACK
|
5
|
-
GLOBAL_SETTING VERTICALBOX TEXTCOLOR BLACK
|
2
|
+
# Apply a setting to all LABELVALUEs
|
3
|
+
# GLOBAL_SETTING LABELVALUE TEXTCOLOR BLACK
|
6
4
|
|
7
5
|
VERTICAL
|
8
|
-
|
9
6
|
TITLE "<%= target_name %> Instrument Health and Status"
|
10
|
-
SETTING BACKCOLOR 162 181 205
|
11
|
-
SETTING TEXTCOLOR black
|
12
7
|
|
13
8
|
VERTICALBOX "General Telemetry"
|
14
9
|
BUTTON 'Start Collect' 'api.cmd("<%= target_name %> COLLECT with TYPE NORMAL, DURATION 5")'
|
@@ -17,7 +12,6 @@ VERTICAL
|
|
17
12
|
LABELVALUE <%= target_name %> HEALTH_STATUS DURATION
|
18
13
|
LABELVALUE <%= target_name %> HEALTH_STATUS ASCIICMD WITH_UNITS 40
|
19
14
|
END
|
20
|
-
SETTING BACKCOLOR 163 185 163
|
21
15
|
|
22
16
|
VERTICALBOX "Temperatures"
|
23
17
|
LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1 WITH_UNITS 7
|
@@ -28,14 +22,16 @@ VERTICAL
|
|
28
22
|
LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP3
|
29
23
|
LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP4
|
30
24
|
END
|
31
|
-
SETTING BACKCOLOR 203 173 158
|
32
25
|
|
33
26
|
VERTICALBOX "Ground Station"
|
34
27
|
LABELVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS CONVERTED 18
|
35
28
|
LABELVALUE <%= target_name %> HEALTH_STATUS GROUND2STATUS CONVERTED 18
|
36
29
|
END
|
37
|
-
|
30
|
+
# You can apply settings to an entire box
|
31
|
+
SETTING BACKCOLOR var(--color-data-visualization-2)
|
32
|
+
SETTING TEXTCOLOR BLACK
|
38
33
|
|
39
34
|
<%= render "_footer.txt" %>
|
40
35
|
END
|
41
|
-
|
36
|
+
# You can also apply BACKCOLOR to the entire screen
|
37
|
+
# SETTING BACKCOLOR var(--color-data-visualization-1)
|
data/targets/INST/target.txt
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
PARAMETER CCSDSVER 0 3 UINT 0 0 0 "CCSDS primary header version number"
|
2
|
+
PARAMETER CCSDSTYPE 3 1 UINT 1 1 1 "CCSDS primary header packet type"
|
3
|
+
PARAMETER CCSDSSHF 4 1 UINT 0 0 0 "CCSDS primary header secondary header flag"
|
4
|
+
ID_PARAMETER CCSDSAPID 5 11 UINT 0 2047 999 "CCSDS primary header application id"
|
5
|
+
PARAMETER CCSDSSEQFLAGS 16 2 UINT 3 3 3 "CCSDS primary header sequence flags"
|
6
|
+
PARAMETER CCSDSSEQCNT 18 14 UINT 0 16383 0 "CCSDS primary header sequence count"
|
7
|
+
OVERFLOW TRUNCATE
|
8
|
+
PARAMETER CCSDSLENGTH 32 16 UINT MIN MAX 12 "CCSDS primary header packet length"
|
9
|
+
ID_PARAMETER PKTID 48 16 UINT MIN MAX <%= id %> "Packet id"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
APPEND_ITEM CCSDSVER 3 UINT "CCSDS packet version number (See CCSDS 133.0-B-1)"
|
2
|
+
APPEND_ITEM CCSDSTYPE 1 UINT "CCSDS packet type (command or telemetry)"
|
3
|
+
STATE TLM 0
|
4
|
+
STATE CMD 1
|
5
|
+
APPEND_ITEM CCSDSSHF 1 UINT "CCSDS secondary header flag"
|
6
|
+
STATE FALSE 0
|
7
|
+
STATE TRUE 1
|
8
|
+
APPEND_ID_ITEM CCSDSAPID 11 UINT <%= apid %> "CCSDS application process id"
|
9
|
+
APPEND_ITEM CCSDSSEQFLAGS 2 UINT "CCSDS sequence flags"
|
10
|
+
STATE FIRST 1
|
11
|
+
STATE CONT 0
|
12
|
+
STATE LAST 2
|
13
|
+
STATE NOGROUP 3
|
14
|
+
APPEND_ITEM CCSDSSEQCNT 14 UINT "CCSDS packet sequence count"
|
15
|
+
OVERFLOW TRUNCATE
|
16
|
+
APPEND_ITEM CCSDSLENGTH 16 UINT "CCSDS packet data length"
|
17
|
+
APPEND_ITEM TIMESEC 32 UINT "Seconds since epoch (January 1st, 1970, midnight)"
|
18
|
+
APPEND_ITEM TIMEUS 32 UINT "Microseconds of second"
|
19
|
+
APPEND_ID_ITEM PKTID 16 UINT 1 "Packet id (The combination of CCSDS_APID and PACKET_ID identify the packet)"
|
@@ -0,0 +1,68 @@
|
|
1
|
+
COMMAND <%= target_name %> COLLECT BIG_ENDIAN "Starts a collect on the <%= target_name %> target"
|
2
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 1} %>
|
3
|
+
PARAMETER TYPE 64 16 UINT MIN MAX 0 "Collect type which can be normal or special. Note the special collects are hazarous and require user confirmation."
|
4
|
+
REQUIRED
|
5
|
+
STATE NORMAL 0
|
6
|
+
STATE SPECIAL 1 HAZARDOUS
|
7
|
+
PARAMETER DURATION 80 32 FLOAT 0.0 10.0 1.0 "Collect duration"
|
8
|
+
PARAMETER OPCODE 112 8 UINT 0x0 0xFF 0xAB "Collect opcode"
|
9
|
+
FORMAT_STRING "0x%0X"
|
10
|
+
PARAMETER TEMP 120 32 FLOAT 0.0 25.0 0.0 "Collect temperature"
|
11
|
+
UNITS Celsius C
|
12
|
+
|
13
|
+
COMMAND <%= target_name %> ABORT BIG_ENDIAN "Aborts a collect on the <%= target_name %> instrument"
|
14
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 2} %>
|
15
|
+
|
16
|
+
COMMAND <%= target_name %> CLEAR BIG_ENDIAN "Clears counters on the <%= target_name %> instrument"
|
17
|
+
HAZARDOUS "Clearing counters may lose valuable information."
|
18
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 3} %>
|
19
|
+
|
20
|
+
COMMAND <%= target_name %> SETPARAMS BIG_ENDIAN "Sets numbered parameters"
|
21
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 4} %>
|
22
|
+
# ERB syntax:
|
23
|
+
<% (1..5).each do |i| %>
|
24
|
+
APPEND_PARAMETER VALUE<%= i %> 16 UINT 0 5 1 "Value <%= i %> setting"
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
SELECT_PARAMETER VALUE5
|
28
|
+
POLY_WRITE_CONVERSION 0 2
|
29
|
+
|
30
|
+
COMMAND <%= target_name %> ASCIICMD BIG_ENDIAN "Enumerated ASCII command"
|
31
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 5} %>
|
32
|
+
APPEND_PARAMETER STRING 2048 STRING "NOOP" "Enumerated string parameter"
|
33
|
+
STATE "ARM LASER" "ARM LASER" HAZARDOUS "Arming the laser poses an eye safety hazard."
|
34
|
+
STATE "FIRE LASER" "FIRE LASER" HAZARDOUS "WARNING Laser will be fired!"
|
35
|
+
STATE "NOOP" "NOOP" DISABLE_MESSAGES
|
36
|
+
APPEND_PARAMETER BINARY 32 STRING 0xDEADBEEF "Binary string"
|
37
|
+
APPEND_PARAMETER ASCII 80 STRING "0xDEADBEEF" "ASCII string"
|
38
|
+
|
39
|
+
COMMAND <%= target_name %> FLTCMD BIG_ENDIAN "Command with float parameters"
|
40
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 6} %>
|
41
|
+
PARAMETER FLOAT32 64 32 FLOAT MIN MAX 0.0 "Float32 parameter"
|
42
|
+
PARAMETER FLOAT64 96 64 FLOAT MIN MAX 0.0 "Float64 parameter"
|
43
|
+
|
44
|
+
COMMAND <%= target_name %> ARYCMD BIG_ENDIAN "Command with array parameter"
|
45
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 7} %>
|
46
|
+
ARRAY_PARAMETER ARRAY 64 32 UINT -8 "Array parameter"
|
47
|
+
PARAMETER CRC -8 8 UINT MIN MAX 0 "CRC"
|
48
|
+
|
49
|
+
COMMAND <%= target_name %> SLRPNLDEPLOY BIG_ENDIAN "Deploy solar array panels"
|
50
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 8} %>
|
51
|
+
|
52
|
+
COMMAND <%= target_name %> SLRPNLRESET BIG_ENDIAN "Reset solar array panels"
|
53
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 9} %>
|
54
|
+
|
55
|
+
COMMAND <%= target_name %> MEMLOAD BIG_ENDIAN "Load memory"
|
56
|
+
DISABLE_MESSAGES # Disable messages on a command that could be sent many many times
|
57
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 10} %>
|
58
|
+
APPEND_PARAMETER DATA 80 BLOCK "" "Block of data"
|
59
|
+
|
60
|
+
COMMAND <%= target_name %> QUIET BIG_ENDIAN "Enable/disable no out of limits in the demo"
|
61
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 11} %>
|
62
|
+
APPEND_PARAMETER STATE 8 UINT 0 1 1
|
63
|
+
STATE FALSE 0
|
64
|
+
STATE TRUE 1
|
65
|
+
|
66
|
+
COMMAND <%= target_name %> TIME_OFFSET BIG_ENDIAN "Subtract the packet time by the given seconds"
|
67
|
+
<%= render "_ccsds_cmd.txt", locals: {id: 12} %>
|
68
|
+
APPEND_PARAMETER SECONDS 32 UINT MIN MAX 0 "Seconds to subtract from packet time"
|
@@ -0,0 +1,149 @@
|
|
1
|
+
TELEMETRY <%= target_name %> HEALTH_STATUS BIG_ENDIAN "Health and status from the <%= target_name %> target"
|
2
|
+
<%= render "_ccsds_tlm.txt", locals: {apid: 1} %>
|
3
|
+
APPEND_ITEM COLLECTS 16 UINT "Number of collects"
|
4
|
+
APPEND_ITEM TEMP1 16 UINT "Temperature #1"
|
5
|
+
POLY_READ_CONVERSION -100.0 0.00305
|
6
|
+
POLY_WRITE_CONVERSION 32768.885246 327.86885
|
7
|
+
UNITS CELSIUS C
|
8
|
+
FORMAT_STRING "%0.3f"
|
9
|
+
LIMITS DEFAULT 1 ENABLED -80.0 -70.0 60.0 80.0 -20.0 20.0
|
10
|
+
LIMITS TVAC 1 ENABLED -80.0 -30.0 30.0 80.0
|
11
|
+
LIMITS_RESPONSE example_limits_response.py
|
12
|
+
APPEND_ITEM TEMP2 32 FLOAT "Temperature #2"
|
13
|
+
POLY_READ_CONVERSION -100.0 0.00305
|
14
|
+
POLY_WRITE_CONVERSION 32768.885246 327.86885
|
15
|
+
UNITS CELSIUS C
|
16
|
+
FORMAT_STRING "%0.3f"
|
17
|
+
LIMITS DEFAULT 1 ENABLED -60.0 -60.0 35.0 35.0
|
18
|
+
LIMITS TVAC 1 ENABLED -60.0 20.0 35.0 35.0
|
19
|
+
APPEND_ITEM TEMP3 16 UINT "Temperature #3"
|
20
|
+
POLY_READ_CONVERSION -100.0 0.00305
|
21
|
+
POLY_WRITE_CONVERSION 32768.885246 327.86885
|
22
|
+
UNITS CELSIUS C
|
23
|
+
FORMAT_STRING "%0.3f"
|
24
|
+
LIMITS DEFAULT 1 ENABLED -25.0 -10.0 50.0 55.0
|
25
|
+
LIMITS TVAC 1 ENABLED -15.0 -10.0 20.0 30.0
|
26
|
+
APPEND_ITEM TEMP4 16 UINT "Temperature #4"
|
27
|
+
POLY_READ_CONVERSION -100.0 0.00305
|
28
|
+
POLY_WRITE_CONVERSION 32768.885246 327.86885
|
29
|
+
UNITS CELSIUS C
|
30
|
+
FORMAT_STRING "%0.3f"
|
31
|
+
LIMITS DEFAULT 1 ENABLED -80.0 -70.0 60.0 80.0
|
32
|
+
APPEND_ARRAY_ITEM ARY 8 UINT 80 "Array data"
|
33
|
+
UNITS VOLTS V
|
34
|
+
APPEND_ITEM DURATION 32 FLOAT "Most recent collect duration"
|
35
|
+
APPEND_ITEM COLLECT_TYPE 16 UINT "Most recent collect type"
|
36
|
+
STATE NORMAL 0
|
37
|
+
STATE SPECIAL 1
|
38
|
+
STATE ERROR ANY
|
39
|
+
APPEND_ARRAY_ITEM ARY2 64 FLOAT 640 "Double array"
|
40
|
+
UNITS CELSIUS C
|
41
|
+
APPEND_ITEM ASCIICMD 2048 STRING "Most recent ASCIICMD string"
|
42
|
+
STATE "NOOP" "NOOP"
|
43
|
+
STATE "FIRE LASER" "FIRE LASER"
|
44
|
+
STATE "ARM LASER" "ARM LASER"
|
45
|
+
APPEND_ITEM GROUND1STATUS 8 UINT "Ground station #1 status"
|
46
|
+
STATE CONNECTED 1 GREEN
|
47
|
+
STATE UNAVAILABLE 0 YELLOW
|
48
|
+
APPEND_ITEM GROUND2STATUS 8 UINT "Ground station #2 status"
|
49
|
+
STATE CONNECTED 1 GREEN
|
50
|
+
STATE UNAVAILABLE 0 YELLOW
|
51
|
+
APPEND_ITEM BLOCKTEST 80 BLOCK "Block data"
|
52
|
+
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
53
|
+
READ_CONVERSION openc3/conversions/unix_time_conversion.py TIMESEC TIMEUS
|
54
|
+
ITEM TEMP1HIGH 0 0 DERIVED "High-water mark for TEMP1"
|
55
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1WATER HIGH_WATER
|
56
|
+
ITEM TEMP1LOW 0 0 DERIVED "Low-water mark for TEMP1"
|
57
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1WATER LOW_WATER
|
58
|
+
ITEM TEMP1MAX 0 0 DERIVED "Maximum of most recent 100 samples for TEMP1"
|
59
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1STAT MAX
|
60
|
+
ITEM TEMP1MIN 0 0 DERIVED "Minimum of most recent 100 samples for TEMP1"
|
61
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1STAT MIN
|
62
|
+
ITEM TEMP1MEAN 0 0 DERIVED "Mean of most recent 100 samples for TEMP1"
|
63
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1STAT MEAN
|
64
|
+
ITEM TEMP1STDDEV 0 0 DERIVED "Stddev of most recent 100 samples for TEMP1"
|
65
|
+
READ_CONVERSION openc3/conversions/processor_conversion.py TEMP1STAT STDDEV
|
66
|
+
PROCESSOR TEMP1STAT openc3/processors/statistics_processor.py TEMP1 100
|
67
|
+
PROCESSOR TEMP1WATER openc3/processors/watermark_processor.py TEMP1
|
68
|
+
|
69
|
+
TELEMETRY <%= target_name %> ADCS BIG_ENDIAN "Position and attitude data"
|
70
|
+
META TYPE 'struct adcs'
|
71
|
+
<%= render "_ccsds_tlm.txt", locals: {apid: 2} %>
|
72
|
+
ITEM POSX 128 32 FLOAT "Position X"
|
73
|
+
UNITS METERS M
|
74
|
+
ITEM POSY 160 32 FLOAT "Position Y"
|
75
|
+
UNITS METERS M
|
76
|
+
ITEM POSZ 192 32 FLOAT "Position Z"
|
77
|
+
UNITS METERS M
|
78
|
+
ITEM VELX 224 32 FLOAT "Velocity X"
|
79
|
+
UNITS METERS_PER_SECOND MPS
|
80
|
+
ITEM VELY 256 32 FLOAT "Velocity Y"
|
81
|
+
UNITS METERS_PER_SECOND MPS
|
82
|
+
ITEM VELZ 288 32 FLOAT "Velocity Z"
|
83
|
+
UNITS METERS_PER_SECOND MPS
|
84
|
+
ITEM Q1 320 32 FLOAT "Quaternion param 1"
|
85
|
+
FORMAT_STRING "%0.6f"
|
86
|
+
META TYPE 'float32'
|
87
|
+
ITEM Q2 352 32 FLOAT "Quaternion param 2"
|
88
|
+
FORMAT_STRING "%0.6f"
|
89
|
+
META TYPE 'float32'
|
90
|
+
ITEM Q3 384 32 FLOAT "Quaternion param 3"
|
91
|
+
FORMAT_STRING "%0.6f"
|
92
|
+
META TYPE 'float32'
|
93
|
+
ITEM Q4 416 32 FLOAT "Quaternion param 4"
|
94
|
+
FORMAT_STRING "%0.6f"
|
95
|
+
META TYPE 'float32'
|
96
|
+
ITEM BIASX 448 32 FLOAT "Body X rate bias"
|
97
|
+
FORMAT_STRING "%0.6f"
|
98
|
+
ITEM BIASY 480 32 FLOAT "Body Y rate bias"
|
99
|
+
FORMAT_STRING "%0.6f"
|
100
|
+
ITEM BIASZ 512 32 FLOAT "Body Z rate bias"
|
101
|
+
FORMAT_STRING "%0.6f"
|
102
|
+
<% (1..5).each do |i| %>
|
103
|
+
APPEND_ITEM STAR<%= i %>ID 16 UINT "Star <%= i %> id"
|
104
|
+
<% end %>
|
105
|
+
ITEM POSPROGRESS 624 32 FLOAT "Position file progress"
|
106
|
+
FORMAT_STRING "%0.2f"
|
107
|
+
ITEM ATTPROGRESS 656 32 FLOAT "Attitude file progress"
|
108
|
+
FORMAT_STRING "%0.2f"
|
109
|
+
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
110
|
+
READ_CONVERSION openc3/conversions/unix_time_conversion.py TIMESEC TIMEUS
|
111
|
+
|
112
|
+
TELEMETRY <%= target_name %> PARAMS BIG_ENDIAN "Params set by SETPARAMS command"
|
113
|
+
<%= render "_ccsds_tlm.txt", locals: {apid: 3} %>
|
114
|
+
# ERB syntax:
|
115
|
+
<% (1..5).each do |i| %>
|
116
|
+
APPEND_ITEM VALUE<%= i %> 16 UINT "Value <%= i %> setting"
|
117
|
+
STATE GOOD 0 GREEN
|
118
|
+
STATE BAD 1 RED
|
119
|
+
<% end %>
|
120
|
+
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
121
|
+
READ_CONVERSION openc3/conversions/unix_time_conversion.py TIMESEC TIMEUS
|
122
|
+
|
123
|
+
TELEMETRY <%= target_name %> IMAGE BIG_ENDIAN "Packet with image data"
|
124
|
+
<%= render "_ccsds_tlm.txt", locals: {apid: 4} %>
|
125
|
+
APPEND_ITEM BLOCK 8000 BLOCK "Raw Data"
|
126
|
+
APPEND_ITEM IMAGE 0 BLOCK "Image Data"
|
127
|
+
ITEM BYTES 128 32 UINT "First bytes"
|
128
|
+
FORMAT_STRING '0x%08x'
|
129
|
+
OVERLAP # Notify OpenC3 that this is intentionally overlapping the BLOCK field
|
130
|
+
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
131
|
+
READ_CONVERSION openc3/conversions/unix_time_conversion.py TIMESEC TIMEUS
|
132
|
+
|
133
|
+
TELEMETRY <%= target_name %> MECH BIG_ENDIAN "Mechanism status"
|
134
|
+
<%= render "_ccsds_tlm.txt", locals: {apid: 5} %>
|
135
|
+
APPEND_ITEM EXTRA 32 FLOAT "Extra item to be deleted"
|
136
|
+
APPEND_ITEM SLRPNL1 32 FLOAT "Solar panel 1 angle"
|
137
|
+
UNITS DEGREES DEG
|
138
|
+
APPEND_ITEM SLRPNL2 32 FLOAT "Solar panel 2 angle"
|
139
|
+
UNITS DEGREES DEG
|
140
|
+
APPEND_ITEM SLRPNL3 32 FLOAT "Solar panel 3 angle"
|
141
|
+
UNITS DEGREES DEG
|
142
|
+
APPEND_ITEM SLRPNL4 32 FLOAT "Solar panel 4 angle"
|
143
|
+
UNITS DEGREES DEG
|
144
|
+
APPEND_ITEM SLRPNL5 32 FLOAT "Solar panel 5 angle"
|
145
|
+
UNITS DEGREES DEG
|
146
|
+
APPEND_ITEM CURRENT 32 FLOAT "Device current"
|
147
|
+
UNITS micro-Ampères µA
|
148
|
+
ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
|
149
|
+
READ_CONVERSION openc3/conversions/unix_time_conversion.py TIMESEC TIMEUS
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# NOTE: Telemetry definitions are processed in alphabetical order by default.
|
2
|
+
# However, this can be overridden by explicitly calling them out in target.txt.
|
3
|
+
# Thus it's recommended to create a file like this with an extension
|
4
|
+
# such as inst_tlm_override.txt which will be processed AFTER inst_tlm.txt.
|
5
|
+
|
6
|
+
# Existing telemetry packets can be selected and items modified
|
7
|
+
SELECT_TELEMETRY <%= target_name %> MECH
|
8
|
+
# Existing items can be selected and modified by adding conversions, limits, etc
|
9
|
+
SELECT_ITEM SLRPNL1
|
10
|
+
LIMITS DEFAULT 1 ENABLED -180.0 -170.0 170.0 180.0
|
11
|
+
# Delete an item so it doesn't appear in the packet
|
12
|
+
DELETE_ITEM EXTRA
|
Binary file
|
Binary file
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Copyright 2023 OpenC3, Inc.
|
2
|
+
# All Rights Reserved.
|
3
|
+
#
|
4
|
+
# This program is free software; you can modify and/or redistribute it
|
5
|
+
# under the terms of the GNU Affero General Public License
|
6
|
+
# as published by the Free Software Foundation; version 3 with
|
7
|
+
# attribution addendums as found in the LICENSE.txt
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU Affero General Public License for more details.
|
13
|
+
#
|
14
|
+
# This file may also be used under the terms of a commercial license
|
15
|
+
# if purchased from OpenC3, Inc.
|
16
|
+
|
17
|
+
from openc3.packets.limits_response import LimitsResponse
|
18
|
+
from openc3.api.cmd_api import cmd, cmd_no_hazardous_check
|
19
|
+
|
20
|
+
|
21
|
+
class ExampleLimitsResponse(LimitsResponse):
|
22
|
+
def call(self, packet, item, old_limits_state):
|
23
|
+
match item.limits.state:
|
24
|
+
case "RED_HIGH":
|
25
|
+
cmd("<%= target_name %>", "COLLECT", {"TYPE": "NORMAL", "DURATION": 7})
|
26
|
+
case "RED_LOW":
|
27
|
+
cmd_no_hazardous_check("<%= target_name %>", "CLEAR")
|