openc3-cosmos-demo 5.11.3 → 5.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/plugin.txt +2 -2
  3. data/targets/INST/lib/example_limits_response.rb +4 -10
  4. data/targets/INST/procedures/calendar.rb +43 -0
  5. data/targets/INST/target.txt +2 -0
  6. data/targets/INST2/cmd_tlm/_ccsds_cmd.txt +9 -0
  7. data/targets/INST2/cmd_tlm/_ccsds_tlm.txt +19 -0
  8. data/targets/INST2/cmd_tlm/inst_cmds.txt +68 -0
  9. data/targets/INST2/cmd_tlm/inst_tlm.txt +149 -0
  10. data/targets/INST2/cmd_tlm/inst_tlm_override.txt +12 -0
  11. data/targets/INST2/data/attitude.bin +0 -0
  12. data/targets/INST2/data/position.bin +0 -0
  13. data/targets/INST2/lib/example_limits_response.py +27 -0
  14. data/targets/INST2/lib/helper.py +3 -0
  15. data/targets/INST2/lib/sim_inst.py +383 -0
  16. data/targets/INST2/procedures/calendar.py +57 -0
  17. data/targets/{INST/procedures_py → INST2/procedures}/checks.py +0 -1
  18. data/targets/{INST/procedures_py → INST2/procedures}/collect.py +7 -3
  19. data/targets/{INST/procedures_py → INST2/procedures}/disconnect.py +0 -2
  20. data/targets/{INST/procedures_py → INST2/procedures}/file_dialog.py +0 -2
  21. data/targets/{INST/procedures_py → INST2/procedures}/metadata.py +0 -2
  22. data/targets/INST2/procedures/my_script_suite.py +50 -0
  23. data/targets/INST2/procedures/my_test_suite.py +43 -0
  24. data/targets/{INST/procedures_py → INST2/procedures}/screens.py +0 -2
  25. data/targets/{INST/procedures_py → INST2/procedures}/stash.py +0 -2
  26. data/targets/{INST/procedures_py → INST2/procedures}/target_file.py +0 -1
  27. data/targets/{INST/procedures_py → INST2/procedures}/utilities/clear.py +0 -3
  28. data/targets/{INST/procedures_py → INST2/procedures}/utilities/collect.py +1 -3
  29. data/targets/INST2/public/ground_error.png +0 -0
  30. data/targets/INST2/public/ground_off.png +0 -0
  31. data/targets/INST2/public/ground_on.png +0 -0
  32. data/targets/INST2/public/satellite.png +0 -0
  33. data/targets/INST2/public/spiral.jpg +0 -0
  34. data/targets/INST2/screens/_footer.txt +1 -0
  35. data/targets/INST2/screens/adcs.txt +65 -0
  36. data/targets/INST2/screens/array.txt +16 -0
  37. data/targets/INST2/screens/block.txt +7 -0
  38. data/targets/INST2/screens/commanding.txt +57 -0
  39. data/targets/INST2/screens/graphs.txt +27 -0
  40. data/targets/INST2/screens/ground.txt +48 -0
  41. data/targets/INST2/screens/hs.txt +41 -0
  42. data/targets/INST2/screens/image.txt +3 -0
  43. data/targets/INST2/screens/latest.txt +20 -0
  44. data/targets/INST2/screens/launcher.txt +10 -0
  45. data/targets/INST2/screens/limits.txt +77 -0
  46. data/targets/INST2/screens/other.txt +22 -0
  47. data/targets/INST2/screens/params.txt +69 -0
  48. data/targets/INST2/screens/simple.txt +6 -0
  49. data/targets/INST2/screens/tabs.txt +56 -0
  50. data/targets/INST2/screens/web.txt +5 -0
  51. data/targets/INST2/tables/bin/ConfigTables.bin +0 -0
  52. data/targets/INST2/tables/config/ConfigTables_def.txt +7 -0
  53. data/targets/INST2/tables/config/MCConfigurationTable_def.txt +36 -0
  54. data/targets/INST2/tables/config/PPSSelectionTable_def.txt +7 -0
  55. data/targets/INST2/tables/config/TLMMonitoringTable_def.txt +31 -0
  56. data/targets/INST2/tables/procedures/download.rb +16 -0
  57. data/targets/INST2/tables/procedures/upload.rb +19 -0
  58. data/targets/INST2/target.txt +27 -0
  59. data/targets/SYSTEM/procedures/example_test.rb +0 -5
  60. data/tools/widgets/BigWidget/BigWidget.umd.min.js +1 -3
  61. data/tools/widgets/BigWidget/BigWidget.umd.min.js.map +1 -1
  62. data/tools/widgets/DataviewerquaternionWidget/DataviewerquaternionWidget.umd.min.js +2 -2
  63. data/tools/widgets/DataviewerquaternionWidget/DataviewerquaternionWidget.umd.min.js.map +1 -1
  64. data/tools/widgets/DataviewertimeWidget/DataviewertimeWidget.umd.min.js +1 -1
  65. data/tools/widgets/DataviewertimeWidget/DataviewertimeWidget.umd.min.js.map +1 -1
  66. data/tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js +1 -1
  67. data/tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js.map +1 -1
  68. metadata +56 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a3ce948a516a01495cff0d7f73729f1194d6649fac749456076dca9aa3d8218
4
- data.tar.gz: ff3ef2c5c18d4b958eb07c15a6964589b24d0f9655a21aff7c74c7196d95de65
3
+ metadata.gz: c954060fba09d346a77dc1a8de7b01bb024a3ebd0993b0a483baae84777c8f81
4
+ data.tar.gz: fc2eeb43813e0451f5c0f53bbfcc95de97e3184741a9e885b81c809382329499
5
5
  SHA512:
6
- metadata.gz: cdafa7ca34de638d8f218e5fcc5e57a0341413d22caac1f082b8249713e4f861783eff6ba3bfbf40da89040c1ddb24a88bc75ebb9641d0be942e84cfe84c6337
7
- data.tar.gz: 6131ce213a9a13686ee73aa4a11925b2a2304e3158ec47fa70fb06c5564db8611c5e3e1b37beaed81452e64f3d4c74058f9c731f6bd5ea40bb9e6df6b6aadd9b
6
+ metadata.gz: e647203522455fcb5663cdb9fef5a77abeaa59e4021ab07b3e942b085313dc74adcbe3e76e6b2f777ec426b51bd3c240c7b12e08a981d14605625361748fbafb
7
+ data.tar.gz: d554da81d73e739cb8aa311c5202713d22bdcb96fe21484f8a3399cd7bce1a2d7ea432bfdf4f8267e7dd29f3f1d5fdbb3f55386521838ca54f86b7ca6cf67359
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 INST <%= inst2_target_name %>
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.rb sim_inst.rb
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 2022, OpenC3, Inc.
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' => 5)
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")
@@ -1,3 +1,5 @@
1
+ LANGUAGE ruby
2
+
1
3
  # Requires for limits responses and custom conversion classes
2
4
  REQUIRE example_limits_response.rb
3
5
  REQUIRE sim_inst.rb
@@ -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")
@@ -0,0 +1,3 @@
1
+ class Helper:
2
+ def help(self):
3
+ print("help")