openc3-cosmos-demo 5.5.0 → 5.5.2.pre.beta0.20230315041141

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fa57472a26d8bb68c57270d8ffc5664aae5e332cd9599fb61d59b5ff1d2e3312
4
- data.tar.gz: aede6a97cea27c5471546e7ef2e9dce7f4112f6125a936ad52f3fd88c1759b6f
3
+ metadata.gz: d68b184dd454d8f36558554f50a6aea6e01add20919215d8514e35612c3a709d
4
+ data.tar.gz: 393df363aa79e1f77ed8f87da87f060e8d26745ab576d6bb67635688008a2ad7
5
5
  SHA512:
6
- metadata.gz: 59f94a1c99266e310955517f7436d5adf1cce7cb8a968201e9ecb63d4498eaa2f4e336ab5ae1e103622c00f2fb149a150927e3ea397545b847dd93cb4ccf9a94
7
- data.tar.gz: ebfb8148bc912313a799566276ec15100d9faee0f71b926c804c6034d76800e0a69a66108cc4eb63334010253b7ea3da5df35224aef406ff5474d2feeafe966f
6
+ metadata.gz: 0020462c6750d25adbe3349ce426a7f9688727eaff209cfd11ccfe813c9fc5912cf6d2a994120b3f2081875411768542c8a3c3e74375d0ad46d195c0f7c25219
7
+ data.tar.gz: 9f2adff2d4d1c17d658d3f33efa3781c559102bece6cf5b653a5485e802006cf85990f9a773b01d15763f6831f04e987a79f4aef834b9ff2189a2e351b88553d
data/plugin.txt CHANGED
@@ -15,9 +15,7 @@ VARIABLE templated_int_name TEMPLATED_INT
15
15
  VARIABLE demo_tool_name Demo
16
16
  VARIABLE example_microservice_name openc3-example
17
17
  VARIABLE templated_microservice_name openc3-templated
18
- VARIABLE example_host openc3-operator
19
18
  VARIABLE example_port 9999
20
- VARIABLE templated_host openc3-operator
21
19
  VARIABLE templated_port 5025
22
20
  VARIABLE inst_router_port 7779
23
21
  VARIABLE log_retain_time 172800
@@ -78,6 +76,8 @@ VARIABLE reduced_log_retain_time 2592000
78
76
  <% end %>
79
77
 
80
78
  <% if include_example and include_example_int %>
79
+ # This expression builds the correct hostname for Open Source or Enterprise Edition in Kubernetes
80
+ <% example_host = ENV['KUBERNETES_SERVICE_HOST'] ? "#{scope}-user-#{example_microservice_name.downcase.gsub('__', '-').gsub('_', '-')}-service" : "openc3-operator" %>
81
81
  INTERFACE <%= example_int_name %> example_interface.rb <%= example_host %> <%= example_port %>
82
82
  PROTOCOL WRITE MyRejectProtocol
83
83
  MAP_TARGET <%= example_target_name %>
@@ -86,6 +86,8 @@ VARIABLE reduced_log_retain_time 2592000
86
86
  <% end %>
87
87
 
88
88
  <% if include_templated and include_templated_int %>
89
+ # This expression builds the correct hostname for Open Source or Enterprise Edition in Kubernetes
90
+ <% templated_host = ENV['KUBERNETES_SERVICE_HOST'] ? "#{scope}-user-#{templated_microservice_name.downcase.gsub('__', '-').gsub('_', '-')}-service" : "openc3-operator" %>
89
91
  INTERFACE <%= templated_int_name %> templated_interface.rb <%= templated_host %> <%= templated_port %> <%= templated_port %> 5.0 nil TEMPLATE 0xA 0xA
90
92
  MAP_TARGET <%= templated_target_name %>
91
93
  DONT_CONNECT
@@ -122,9 +122,10 @@ TELEMETRY <%= target_name %> PARAMS BIG_ENDIAN "Params set by SETPARAMS command"
122
122
 
123
123
  TELEMETRY <%= target_name %> IMAGE BIG_ENDIAN "Packet with image data"
124
124
  <%= render "_ccsds_tlm.txt", locals: {apid: 4} %>
125
- ITEM BYTES 128 32 UINT "First bytes"
125
+ APPEND_ITEM BYTES 32 UINT "First bytes"
126
126
  FORMAT_STRING '0x%08x'
127
- ITEM IMAGE 128 131072 BLOCK "10x10 Image Data"
127
+ APPEND_ITEM BLOCK 8000 BLOCK "Raw Data"
128
+ APPEND_ITEM IMAGE 0 BLOCK "Image Data"
128
129
  OVERLAP # Notify OpenC3 that this is intentionally overlapping the BYTES field
129
130
  ITEM PACKET_TIME 0 0 DERIVED "Ruby time based on TIMESEC and TIMEUS"
130
131
  READ_CONVERSION unix_time_conversion.rb TIMESEC TIMEUS
@@ -24,6 +24,7 @@
24
24
 
25
25
  require 'openc3'
26
26
  require 'stringio'
27
+ require 'base64'
27
28
 
28
29
  module OpenC3
29
30
  # Simulated instrument for the demo. Populates several packets and cycles
@@ -46,6 +47,9 @@ module OpenC3
46
47
  @position_file_bytes_read = 0
47
48
  @attitude_file_bytes_read = 0
48
49
 
50
+ data = File.read(File.join(@target.dir, 'public', 'spiral.jpg'), mode: "rb")
51
+ @image = Base64.encode64(data)
52
+
49
53
  @pos_packet = Structure.new(:BIG_ENDIAN)
50
54
  @pos_packet.append_item('DAY', 16, :UINT)
51
55
  @pos_packet.append_item('MSOD', 32, :UINT)
@@ -347,11 +351,11 @@ module OpenC3
347
351
  when 'IMAGE'
348
352
  packet.timesec = time.tv_sec - @time_offset
349
353
  packet.timeus = time.tv_usec
350
- # Create an Array the size of the packet and then initialize
354
+ packet.image = @image
355
+ # Create an Array and then initialize
351
356
  # using a sample of all possible hex values (0..15)
352
357
  # finally pack it into binary using the Character 'C' specifier
353
- data = Array.new(packet.image.length) { Array(0..15).sample }.pack("C*")
354
- packet.image = data
358
+ packet.block = Array.new(1000) { Array(0..15).sample }.pack("C*")
355
359
  packet.ccsdsseqcnt += 1
356
360
 
357
361
  when 'MECH'
Binary file
@@ -1,3 +1 @@
1
- VERTICALBOX
2
- LABELVALUE <%= target_name %> HEALTH_STATUS PACKET_TIMEFORMATTED WITH_UNITS 30
3
- END
1
+ LABELVALUE <%= target_name %> HEALTH_STATUS PACKET_TIMEFORMATTED WITH_UNITS 30
@@ -5,9 +5,7 @@ VERTICAL
5
5
  # Note @original_target_name is also available
6
6
 
7
7
  HORIZONTAL
8
- VERTICALBOX
9
- SECTIONHEADER "Position and Velocity"
10
-
8
+ VERTICALBOX "Position and Velocity"
11
9
  LABELVALUE <%= target_name %> ADCS POSX WITH_UNITS 20 CENTER
12
10
  LABELVALUE <%= target_name %> ADCS POSY WITH_UNITS 22 CENTER
13
11
  LABELVALUE <%= target_name %> ADCS POSZ WITH_UNITS 24 CENTER
@@ -16,9 +14,7 @@ VERTICAL
16
14
  LABELVALUE <%= target_name %> ADCS VELZ WITH_UNITS 24
17
15
  END
18
16
 
19
- VERTICALBOX
20
- SECTIONHEADER "Attitude"
21
-
17
+ VERTICALBOX "Attitude"
22
18
  LABELVALUE <%= target_name %> ADCS Q1 WITH_UNITS 12 RIGHT
23
19
  SETTING TEXTALIGN LEFT
24
20
  SETTING TEXTCOLOR RED
@@ -40,9 +36,7 @@ VERTICAL
40
36
  SETTING TEXTALIGN LEFT
41
37
  END
42
38
 
43
- VERTICALBOX
44
- SECTIONHEADER "File Progress"
45
-
39
+ VERTICALBOX "File Progress"
46
40
  LABELPROGRESSBAR <%= target_name %> ADCS POSPROGRESS
47
41
  LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS
48
42
  LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS 2 60 RAW # scale by 2
@@ -7,8 +7,7 @@ VERTICAL
7
7
  LABELVALUE <%= target_name %> HEALTH_STATUS COLLECT_TYPE
8
8
  LABELVALUE <%= target_name %> HEALTH_STATUS DURATION
9
9
 
10
- VERTICALBOX
11
- SECTIONHEADER "Send Collect Command:"
10
+ VERTICALBOX "Send Collect Command:"
12
11
  HORIZONTAL
13
12
  LABEL "Type: "
14
13
  # The ampersand '&' indicates a line continuation
@@ -31,10 +30,8 @@ VERTICAL
31
30
  # You can have comments between string concatenations
32
31
  "api.cmd('<%= target_name %> COLLECT with TYPE '+type+', DURATION '+dur)"
33
32
  END
34
- SETTING BACKCOLOR 163 185 163
35
33
 
36
- VERTICALBOX
37
- SECTIONHEADER "Parameter-less Commands:"
34
+ VERTICALBOX "Parameter-less Commands:"
38
35
  NAMED_WIDGET GROUP RADIOGROUP 1 # Select 'Clear' initially, 0-based index
39
36
  RADIOBUTTON 'Abort'
40
37
  RADIOBUTTON 'Clear'
@@ -44,10 +41,8 @@ VERTICAL
44
41
  "api.cmd('<%= target_name %> ABORT') : (screen.getNamedWidget('CHECK').checked() ? " +
45
42
  "api.cmd_no_hazardous_check('<%= target_name %> CLEAR') : api.cmd('<%= target_name %> CLEAR'))"
46
43
  END
47
- SETTING BACKCOLOR 163 185 163
48
44
 
49
- VERTICALBOX
50
- SECTIONHEADER "Run Script:"
45
+ VERTICALBOX "Run Script:"
51
46
  NAMED_WIDGET SCRIPTNAME COMBOBOX collect.rb checks.rb
52
47
  NAMED_WIDGET BG CHECKBUTTON 'Background'
53
48
  # The backslash '\' character indicates string concatenation without newlines.
@@ -58,5 +53,4 @@ VERTICAL
58
53
  "var env = {}; env['TYPE'] = ctype;" \
59
54
  "runScript('INST/procedures/'+script, !screen.getNamedWidget('BG').checked(), env)"
60
55
  END
61
- SETTING BACKCOLOR 163 185 163
62
56
  END
@@ -1,16 +1,13 @@
1
1
  SCREEN AUTO AUTO 1.0
2
2
 
3
3
  VERTICAL
4
- # TODO: This causes an error because layout widgets don't have settings
5
- # SETTING BACKCOLOR white
6
4
  TITLE "<%= target_name %> Instrument Ground Station Status"
7
- SETTING BACKCOLOR white
8
5
 
9
6
  CANVAS 650 600
10
7
  # Just demonstrate lines and circles
11
8
  CANVASLINE 0 3 650 3 blue 3
12
- CANVASDOT 10 15 BLUE 5
13
- CANVASLABEL 200 20 "Ground Contact Status"
9
+ # CANVASDOT 10 15 BLUE 5
10
+ CANVASLABEL 200 30 "Ground Contact Status"
14
11
 
15
12
  # This is an example of using TLM_AND to && together different logical values
16
13
  # Note you must use RAW for the base value and use SETTING IMAGE true / false
@@ -22,13 +19,15 @@ VERTICAL
22
19
  # SETTING IMAGE false "ground_off.png" 100 200
23
20
  CANVASLINE 10 10 640 10 blue 3
24
21
  CANVASIMAGE "satellite.png" 90 130 200 200
22
+ # If the image is clicked the "<%= target_name %> ADCS" screen will popup
23
+ SETTING SCREEN <%= target_name %> ADCS
25
24
  # We're using the converted value and specifing a default of "ground_error.png"
26
25
  # if none of the IMAGE settings match the value
27
26
  CANVASIMAGEVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS CONVERTED "ground_error.png" 400 100 180 180
28
27
  SETTING IMAGE CONNECTED "ground_on.png" 400 100
29
28
  SETTING IMAGE UNAVAILABLE "ground_off.png" 400 100
30
- # If the image is clicked the "<%= target_name %> HS" screen will popup at 100, 100
31
- SETTING SCREEN "<%= target_name %> HS" 100 100
29
+ # If the image is clicked the "<%= target_name %> HS" screen will popup
30
+ SETTING SCREEN <%= target_name %> HS
32
31
  CANVASLABEL 380 300 "Ground Station #1"
33
32
  CANVASLABELVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS 520 300
34
33
  # The default type is RAW and no default means anything over 10 will be blank
@@ -39,7 +38,11 @@ VERTICAL
39
38
  SETTING IMAGE 2..10 "ground_error.png" 400 350
40
39
  CANVASLABEL 380 550 "Ground Station #2"
41
40
  CANVASLABELVALUE <%= target_name %> HEALTH_STATUS GROUND2STATUS 520 550
42
- CANVASLINEVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS 420 135 240 330 green white 3
43
- CANVASLINEVALUE <%= target_name %> HEALTH_STATUS GROUND2STATUS 420 385 240 330 green white 3
41
+ CANVASLINEVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS 420 135 240 330 3 RAW
42
+ SETTING VALUE_EQ 0 WHITE
43
+ SETTING VALUE_EQ 1 GREEN
44
+ CANVASLINEVALUE <%= target_name %> HEALTH_STATUS GROUND2STATUS 420 385 240 330 3
45
+ SETTING VALUE_EQ UNAVAILABLE WHITE
46
+ SETTING VALUE_EQ CONNECTED GREEN
44
47
  END
45
48
  END
@@ -1,5 +1,8 @@
1
1
  SCREEN AUTO AUTO 0.5
2
2
  GLOBAL_SETTING LABELVALUELIMITSBAR COLORBLIND TRUE
3
+ GLOBAL_SETTING LABELVALUELIMITSBAR TEXTCOLOR BLACK
4
+ GLOBAL_SETTING LABELVALUE TEXTCOLOR BLACK
5
+ GLOBAL_SETTING VERTICALBOX TEXTCOLOR BLACK
3
6
 
4
7
  VERTICAL
5
8
 
@@ -7,8 +10,7 @@ VERTICAL
7
10
  SETTING BACKCOLOR 162 181 205
8
11
  SETTING TEXTCOLOR black
9
12
 
10
- VERTICALBOX
11
- SECTIONHEADER "General Telemetry"
13
+ VERTICALBOX "General Telemetry"
12
14
  BUTTON 'Start Collect' 'api.cmd("<%= target_name %> COLLECT with TYPE NORMAL, DURATION 5")'
13
15
  FORMATVALUE <%= target_name %> HEALTH_STATUS COLLECTS "0x%08X" CONVERTED 14
14
16
  LABELVALUE <%= target_name %> HEALTH_STATUS COLLECT_TYPE
@@ -17,8 +19,7 @@ VERTICAL
17
19
  END
18
20
  SETTING BACKCOLOR 163 185 163
19
21
 
20
- VERTICALBOX
21
- SECTIONHEADER "Temperatures"
22
+ VERTICALBOX "Temperatures"
22
23
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1 WITH_UNITS 7
23
24
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP2 CONVERTED 25
24
25
  # LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP2 RAW 20 # RAW is not allowed for LIMITSBAR widgets
@@ -26,17 +27,15 @@ VERTICAL
26
27
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP2 WITH_UNITS
27
28
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP3
28
29
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP4
29
- SETTING GRAY_TOLERANCE 0.1
30
30
  END
31
31
  SETTING BACKCOLOR 203 173 158
32
32
 
33
- VERTICALBOX
34
- SECTIONHEADER "Ground Station"
33
+ VERTICALBOX "Ground Station"
35
34
  LABELVALUE <%= target_name %> HEALTH_STATUS GROUND1STATUS CONVERTED 18
36
35
  LABELVALUE <%= target_name %> HEALTH_STATUS GROUND2STATUS CONVERTED 18
37
36
  END
37
+ SETTING BACKCOLOR 207 171 175
38
38
 
39
39
  <%= render "_footer.txt" %>
40
- SETTING BACKCOLOR 207 171 169
41
40
  END
42
41
  SETTING BACKCOLOR 162 181 205
@@ -0,0 +1,3 @@
1
+ SCREEN AUTO AUTO 1.0
2
+
3
+ IMAGEVIEWER INST IMAGE IMAGE png
@@ -4,8 +4,7 @@ VERTICAL
4
4
 
5
5
  TITLE "<%= @target_name %> Instrument Latest Header"
6
6
 
7
- VERTICALBOX
8
- SECTIONHEADER "Header"
7
+ VERTICALBOX "Header"
9
8
  LABELVALUE INST LATEST CCSDSVER
10
9
  LABELVALUE INST LATEST CCSDSTYPE
11
10
  LABELVALUE INST LATEST CCSDSSHF
@@ -3,8 +3,7 @@ SCREEN AUTO AUTO 1.0
3
3
  TITLE "<%= target_name %> Instrument Limits"
4
4
 
5
5
  HORIZONTAL
6
- VERTICALBOX
7
- SECTIONHEADER "Limits Bars"
6
+ VERTICALBOX "Limits Bars"
8
7
  LIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1
9
8
  VALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1
10
9
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1
@@ -31,14 +30,12 @@ HORIZONTAL
31
30
  SUBSETTING 1 MAX_VALUE 10
32
31
  END
33
32
  VERTICAL
34
- VERTICALBOX
35
- SECTIONHEADER "Range Bars 0-100"
33
+ VERTICALBOX "Range Bars 0-100"
36
34
  RANGEBAR <%= target_name %> HEALTH_STATUS TEMP2 0 100
37
35
  VALUERANGEBAR <%= target_name %> HEALTH_STATUS TEMP2 0 100
38
36
  LABELVALUERANGEBAR <%= target_name %> HEALTH_STATUS TEMP2 0 100
39
37
  END
40
- VERTICALBOX
41
- SECTIONHEADER "Limits Colors"
38
+ VERTICALBOX "Limits Colors"
42
39
  LIMITSCOLOR <%= target_name %> HEALTH_STATUS TEMP1 CONVERTED 5 NIL # No label
43
40
  LIMITSCOLOR <%= target_name %> HEALTH_STATUS TEMP2 # Default is label with just item name
44
41
  LIMITSCOLOR <%= target_name %> HEALTH_STATUS GROUND1STATUS CONVERTED 5 TRUE # Full TGT/PKT/ITEM label
@@ -47,8 +44,7 @@ HORIZONTAL
47
44
  END
48
45
 
49
46
  HORIZONTAL
50
- VERTICALBOX
51
- SECTIONHEADER "Limits Columns"
47
+ VERTICALBOX "Limits Columns"
52
48
  HORIZONTAL
53
49
  LIMITSCOLUMN <%= target_name %> HEALTH_STATUS TEMP2
54
50
  VALUELIMITSCOLUMN <%= target_name %> HEALTH_STATUS TEMP2
@@ -69,8 +65,7 @@ HORIZONTAL
69
65
  END
70
66
 
71
67
  # TODO: Not yet implemented
72
- #VERTICALBOX
73
- # SECTIONHEADER "Range Columns 0-100"
68
+ #VERTICALBOX "Range Columns 0-100"
74
69
  # HORIZONTAL
75
70
  # RANGECOLUMN <%= target_name %> HEALTH_STATUS TEMP2 0 100
76
71
  # VALUERANGECOLUMN <%= target_name %> HEALTH_STATUS TEMP2 0 100
@@ -5,9 +5,7 @@ TABBOOK
5
5
  TITLE "<%= target_name %> Instrument ADCS Information"
6
6
 
7
7
  HORIZONTAL
8
- VERTICALBOX
9
- SECTIONHEADER "Position and Velocity"
10
-
8
+ VERTICALBOX "Position and Velocity"
11
9
  LABELVALUE <%= target_name %> ADCS POSX WITH_UNITS 20
12
10
  LABELVALUE <%= target_name %> ADCS POSY WITH_UNITS 20
13
11
  LABELVALUE <%= target_name %> ADCS POSZ WITH_UNITS 20
@@ -16,9 +14,7 @@ TABBOOK
16
14
  LABELVALUE <%= target_name %> ADCS VELZ WITH_UNITS 20
17
15
  END
18
16
 
19
- VERTICALBOX
20
- SECTIONHEADER "Attitude"
21
-
17
+ VERTICALBOX "Attitude"
22
18
  LABELVALUE <%= target_name %> ADCS Q1
23
19
  LABELVALUE <%= target_name %> ADCS Q2
24
20
  LABELVALUE <%= target_name %> ADCS Q3
@@ -28,9 +24,7 @@ TABBOOK
28
24
  LABELVALUE <%= target_name %> ADCS BIASZ
29
25
  END
30
26
 
31
- VERTICALBOX
32
- SECTIONHEADER "File Progress"
33
-
27
+ VERTICALBOX "File Progress"
34
28
  LABELPROGRESSBAR <%= target_name %> ADCS POSPROGRESS
35
29
  LABELPROGRESSBAR <%= target_name %> ADCS ATTPROGRESS
36
30
  END
@@ -44,15 +38,11 @@ TABBOOK
44
38
  TABITEM HS
45
39
  TITLE "Instrument Health and Status"
46
40
 
47
- VERTICALBOX
48
- SECTIONHEADER "General Telemetry"
49
-
41
+ VERTICALBOX "General Telemetry"
50
42
  LABELVALUE <%= target_name %> HEALTH_STATUS COLLECTS
51
43
  END
52
44
 
53
- VERTICALBOX
54
- SECTIONHEADER "Temperatures"
55
-
45
+ VERTICALBOX "Temperatures"
56
46
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP1
57
47
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP2
58
48
  LABELVALUELIMITSBAR <%= target_name %> HEALTH_STATUS TEMP3
@@ -10,6 +10,8 @@ answer = combo_box("This is a combo box with info & details", 'one', 'two', 'thr
10
10
  puts "answer:#{answer}"
11
11
  answer = combo_box("This is a combo box", 'one', 'two', 'three', text_color: 'blue', background_color: 'grey', font_size: 20, font_family: 'courier', details: "Some more stuff")
12
12
  puts "answer:#{answer}"
13
+ answer = combo_box("This is a multi-select combo box", 'one', 'two', 'three', multiple: true)
14
+ puts "answer:#{answer} len:#{answer.length} [0]:#{answer[0]}"
13
15
  answer = prompt("This is a test", text_color: 'blue', background_color: 'grey', font_size: 20, font_family: 'courier', informative: "Informative text", details: "Some more stuff")
14
16
  puts "answer:#{answer}"
15
17
  answer = prompt("This is a test", font_size: 30, details: "Some more stuff", informative: nil)