openc3 5.11.3 → 5.13.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of openc3 might be problematic. Click here for more details.

Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -2
  3. data/bin/openc3cli +29 -15
  4. data/data/config/_id_items.yaml +6 -4
  5. data/data/config/_id_params.yaml +9 -6
  6. data/data/config/_items.yaml +6 -4
  7. data/data/config/_params.yaml +3 -2
  8. data/data/config/graph_settings.yaml +1 -1
  9. data/data/config/interface_modifiers.yaml +1 -1
  10. data/data/config/item_modifiers.yaml +1 -2
  11. data/data/config/microservice.yaml +10 -1
  12. data/data/config/parameter_modifiers.yaml +13 -14
  13. data/data/config/plugins.yaml +13 -3
  14. data/data/config/screen.yaml +1 -2
  15. data/data/config/target.yaml +9 -0
  16. data/data/config/target_config.yaml +14 -6
  17. data/data/config/tool.yaml +12 -3
  18. data/lib/openc3/api/api.rb +1 -1
  19. data/lib/openc3/api/cmd_api.rb +123 -59
  20. data/lib/openc3/api/config_api.rb +12 -12
  21. data/lib/openc3/api/limits_api.rb +4 -3
  22. data/lib/openc3/api/settings_api.rb +5 -2
  23. data/lib/openc3/api/tlm_api.rb +70 -34
  24. data/lib/openc3/conversions/unix_time_conversion.rb +8 -6
  25. data/lib/openc3/interfaces/mqtt_interface.rb +11 -9
  26. data/lib/openc3/interfaces/mqtt_stream_interface.rb +78 -0
  27. data/lib/openc3/interfaces/tcpip_server_interface.rb +0 -7
  28. data/lib/openc3/io/json_drb.rb +3 -2
  29. data/lib/openc3/io/json_rpc.rb +6 -6
  30. data/lib/openc3/logs/buffered_packet_log_writer.rb +4 -2
  31. data/lib/openc3/logs/packet_log_reader.rb +2 -2
  32. data/lib/openc3/logs/packet_log_writer.rb +22 -7
  33. data/lib/openc3/logs/text_log_writer.rb +3 -2
  34. data/lib/openc3/microservices/cleanup_microservice.rb +8 -1
  35. data/lib/openc3/microservices/decom_microservice.rb +1 -1
  36. data/lib/openc3/microservices/interface_microservice.rb +2 -2
  37. data/lib/openc3/microservices/microservice.rb +5 -2
  38. data/lib/openc3/microservices/reaction_microservice.rb +1 -0
  39. data/lib/openc3/microservices/timeline_microservice.rb +7 -5
  40. data/lib/openc3/microservices/trigger_group_microservice.rb +2 -1
  41. data/lib/openc3/migrations/20231022000000_tlm_viewer_config.rb +22 -0
  42. data/lib/openc3/models/activity_model.rb +21 -3
  43. data/lib/openc3/models/cvt_model.rb +2 -1
  44. data/lib/openc3/models/gem_model.rb +4 -1
  45. data/lib/openc3/models/interface_model.rb +11 -5
  46. data/lib/openc3/models/metadata_model.rb +11 -0
  47. data/lib/openc3/models/microservice_model.rb +16 -3
  48. data/lib/openc3/models/model.rb +18 -0
  49. data/lib/openc3/models/note_model.rb +11 -0
  50. data/lib/openc3/models/plugin_model.rb +56 -4
  51. data/lib/openc3/models/python_package_model.rb +104 -0
  52. data/lib/openc3/models/scope_model.rb +2 -0
  53. data/lib/openc3/models/sorted_model.rb +17 -8
  54. data/lib/openc3/models/target_model.rb +53 -18
  55. data/lib/openc3/models/tool_config_model.rb +9 -3
  56. data/lib/openc3/models/tool_model.rb +22 -7
  57. data/lib/openc3/models/widget_model.rb +19 -3
  58. data/lib/openc3/operators/microservice_operator.rb +2 -0
  59. data/lib/openc3/packets/json_packet.rb +46 -15
  60. data/lib/openc3/packets/limits.rb +6 -18
  61. data/lib/openc3/packets/packet.rb +1 -0
  62. data/lib/openc3/packets/packet_config.rb +2 -1
  63. data/lib/openc3/packets/parsers/format_string_parser.rb +4 -4
  64. data/lib/openc3/packets/parsers/limits_parser.rb +4 -4
  65. data/lib/openc3/packets/parsers/limits_response_parser.rb +5 -5
  66. data/lib/openc3/packets/parsers/processor_parser.rb +4 -4
  67. data/lib/openc3/packets/parsers/state_parser.rb +3 -3
  68. data/lib/openc3/packets/parsers/xtce_parser.rb +5 -1
  69. data/lib/openc3/script/api_shared.rb +81 -63
  70. data/lib/openc3/script/calendar.rb +109 -0
  71. data/lib/openc3/script/commands.rb +18 -19
  72. data/lib/openc3/script/limits.rb +1 -1
  73. data/lib/openc3/script/{gems.rb → packages.rb} +20 -16
  74. data/lib/openc3/script/script.rb +49 -38
  75. data/lib/openc3/script/storage.rb +4 -4
  76. data/lib/openc3/script/web_socket_api.rb +2 -2
  77. data/lib/openc3/streams/mqtt_stream.rb +109 -0
  78. data/lib/openc3/system/system.rb +2 -0
  79. data/lib/openc3/system/target.rb +10 -1
  80. data/lib/openc3/top_level.rb +2 -2
  81. data/lib/openc3/utilities/aws_bucket.rb +3 -2
  82. data/lib/openc3/utilities/bucket_file_cache.rb +1 -1
  83. data/lib/openc3/utilities/cli_generator.rb +33 -20
  84. data/lib/openc3/utilities/local_mode.rb +5 -3
  85. data/lib/openc3/utilities/logger.rb +18 -17
  86. data/lib/openc3/utilities/process_manager.rb +1 -1
  87. data/lib/openc3/utilities/ruby_lex_utils.rb +0 -8
  88. data/lib/openc3/version.rb +6 -6
  89. data/templates/conversion/conversion.py +28 -0
  90. data/templates/conversion/conversion.rb +1 -18
  91. data/templates/limits_response/response.py +37 -0
  92. data/templates/limits_response/response.rb +0 -17
  93. data/templates/microservice/microservices/TEMPLATE/microservice.py +54 -0
  94. data/templates/microservice/microservices/TEMPLATE/microservice.rb +0 -7
  95. data/templates/plugin/.gitignore +1 -0
  96. data/templates/target/targets/TARGET/lib/target.py +9 -0
  97. data/templates/target/targets/TARGET/procedures/procedure.py +3 -0
  98. data/templates/tool_angular/package.json +22 -21
  99. data/templates/tool_angular/yarn.lock +2319 -3156
  100. data/templates/tool_react/package.json +16 -16
  101. data/templates/tool_react/yarn.lock +763 -645
  102. data/templates/tool_svelte/package.json +15 -14
  103. data/templates/tool_svelte/src/services/openc3-api.js +33 -82
  104. data/templates/tool_svelte/yarn.lock +748 -538
  105. data/templates/tool_vue/package.json +15 -14
  106. data/templates/tool_vue/yarn.lock +150 -64
  107. data/templates/widget/package.json +14 -13
  108. data/templates/widget/yarn.lock +133 -58
  109. metadata +60 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a810e5031ff4cc16e2e2f171700189e4ba5c6ca041793033eb56129d087016b
4
- data.tar.gz: 61c2caa4d9a234dbffa4cc3ec5192df934b55f9fc3de88b013313ff71208bbfc
3
+ metadata.gz: 70d4819352855e3fdb8b4c4d39331968e3e60af59beb0555743b42669d5b4b4a
4
+ data.tar.gz: c906a678c11f68b8751000875fe5cfdfdbbe98880e182edc572791246d625491
5
5
  SHA512:
6
- metadata.gz: dab9c2811db9e91bd078b618da8b788c7ea2ae353cd7941fd9afccff77649e8dc5703575e16aa3cd3cd04d6a499b1fd97dd127eae9b2b4cc52c6ae853ad4ebfb
7
- data.tar.gz: 402ab73b30182f61554f085465872a84d47f67238d630012b20f3d385f40d6bb652f6aec640acd5df24d7fe5c349475d07d80a6fc626fb3ac7ea6dd27d32842d
6
+ metadata.gz: 2adcf16c91e84be3d1ef2b412ffc57eda1e7ed87e2d808519f9502c2cd937dcc06e766fad4f74b346daa0122a08745442decdbeb9185990206d7098c0331bf51
7
+ data.tar.gz: 413edafbcaebcb868c68f1e0ddfeadc4ef32e4950be652a2520858060efd2274d28e9f15f85d944ae48058c1c52cc72ad768f097f5a7830217ae71345869044d
data/Gemfile CHANGED
@@ -7,11 +7,11 @@ gem 'ruby-termios', '>= 0.9' if RbConfig::CONFIG['target_os'] !~ /mswin|mingw|cy
7
7
  gemspec :name => 'openc3'
8
8
 
9
9
  # Include the rails gems for the convenience of custom microservice plugins
10
- gem 'rails', '~> 7.0.0'
10
+ gem 'rails', '~> 7.1.0'
11
11
  gem 'bootsnap', '>= 1.9.3', require: false
12
12
  gem 'rack-cors', '~> 2.0'
13
13
  gem 'tzinfo-data'
14
14
  gem 'rspec-rails', '~> 6.0'
15
15
  gem 'simplecov', '~> 0.20'
16
16
  gem 'simplecov-cobertura', '~> 2.1'
17
- gem 'mock_redis', '0.36'
17
+ gem 'mock_redis', '0.40'
data/bin/openc3cli CHANGED
@@ -42,9 +42,8 @@ require 'find'
42
42
  require 'json'
43
43
  require 'redis'
44
44
  require 'erb'
45
- require 'pp'
46
- require "irb"
47
- require "irb/completion"
45
+ require 'irb'
46
+ require 'irb/completion'
48
47
 
49
48
  $redis_url = "redis://#{ENV['OPENC3_REDIS_HOSTNAME']}:#{ENV['OPENC3_REDIS_PORT']}"
50
49
 
@@ -68,11 +67,13 @@ def print_usage
68
67
  puts " cli validate /PATH/FILENAME.gem SCOPE variables.txt # Validate a COSMOS plugin gem file"
69
68
  puts " cli load /PATH/FILENAME.gem SCOPE variables.txt # Loads a COSMOS plugin gem file"
70
69
  puts " cli generate TYPE OPTIONS # Generate various COSMOS entities"
70
+ puts " OPTIONS includes either --ruby or --python to specify the language in the generated code"
71
71
  puts " #{MIGRATE_PARSER}"
72
72
  puts " cli bridge CONFIG_FILENAME # Run COSMOS host bridge"
73
73
  puts " cli bridgegem gem_name variable1=value1 variable2=value2 # Runs bridge using gem bridge.txt"
74
74
  puts " cli bridgesetup CONFIG_FILENAME # Create a default config file"
75
- puts " cli geminstall GEMFILENAME SCOPE # Install loaded gem to /gems"
75
+ puts " cli pkginstall PKGFILENAME SCOPE # Install loaded package (Ruby gem or python package)"
76
+ puts " cli pkguninstall PKGFILENAME SCOPE # Uninstall loaded package (Ruby gem or python package)"
76
77
  puts " cli rubysloc # Counts Ruby SLOC recursively. Run with --help for more info."
77
78
  puts " cli xtce_converter # Convert to and from the XTCE format. Run with --help for more info."
78
79
  puts " cli cstol_converter # Converts CSTOL files (.prc) to COSMOS. Run with --help for more info."
@@ -507,30 +508,43 @@ def unload_plugin(plugin_name, scope:)
507
508
  end
508
509
  end
509
510
 
510
- def cli_gem_install(gem_filename, scope:)
511
+ def cli_pkg_install(filename, scope:)
511
512
  scope ||= 'DEFAULT'
512
513
  check_environment()
513
514
  if $openc3_in_cluster
514
- OpenC3::GemModel.install(gem_filename, scope: scope)
515
+ if File.extname(filename) == '.gem'
516
+ OpenC3::GemModel.install(filename, scope: scope)
517
+ else
518
+ OpenC3::PythonPackageModel.install(filename, scope: scope)
519
+ end
515
520
  else
516
521
  # Outside Cluster
517
522
  require 'openc3/script'
518
- process_name = gem_install(gem_filename, scope: scope)
523
+ process_name = package_install(filename, scope: scope)
519
524
  print "Installing..."
520
525
  wait_process_complete(process_name)
521
526
  end
522
527
  end
523
528
 
524
- def cli_gem_uninstall(gem_filename, scope:)
529
+ def cli_pkg_uninstall(filename, scope:)
525
530
  scope ||= 'DEFAULT'
526
531
  check_environment()
527
532
  if $openc3_in_cluster
528
- OpenC3::GemModel.destroy(gem_filename)
533
+ if File.extname(filename) == '.rb'
534
+ OpenC3::GemModel.destroy(filename)
535
+ else
536
+ OpenC3::PythonPackageModel.destroy(filename, scope: scope)
537
+ end
529
538
  else
530
539
  # Outside Cluster
531
540
  require 'openc3/script'
532
- gem_uninstall(gem_filename, scope: scope)
533
- puts "Success!"
541
+ process_name = package_uninstall(filename, scope: scope)
542
+ if File.extname(filename) == '.rb'
543
+ puts "Uninstalled"
544
+ else
545
+ print "Uninstalling..."
546
+ wait_process_complete(process_name)
547
+ end
534
548
  end
535
549
  end
536
550
 
@@ -637,11 +651,11 @@ if not ARGV[0].nil? # argument(s) given
637
651
  when 'unload'
638
652
  unload_plugin(ARGV[1], scope: ARGV[2])
639
653
 
640
- when 'geminstall'
641
- cli_gem_install(ARGV[1], scope: ARGV[2])
654
+ when 'pkginstall', 'geminstall'
655
+ cli_pkg_install(ARGV[1], scope: ARGV[2])
642
656
 
643
- when 'gemuninstall'
644
- cli_gem_uninstall(ARGV[1], scope: ARGV[2])
657
+ when 'pkguninstall', 'gemuninstall'
658
+ cli_pkg_uninstall(ARGV[1], scope: ARGV[2])
645
659
 
646
660
  when 'generate'
647
661
  OpenC3::CliGenerator.generate(ARGV[1..-1])
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  - name: Bit Size
3
3
  required: true
4
- description: Bit size of this telemetry item. Zero or Negative values may be used
4
+ description:
5
+ Bit size of this telemetry item. Zero or Negative values may be used
5
6
  to indicate that a string fills the packet up to the offset from the end of
6
7
  the packet specified by this value. If Bit Offset is 0 and Bit Size is 0 then
7
8
  this is a derived parameter and the Data Type must be set to 'DERIVED'.
@@ -17,9 +18,10 @@
17
18
  - name: Description
18
19
  required: false
19
20
  description: Description for this telemetry item which must be enclosed with quotes
20
- values: "['\"].*['\"]"
21
+ values: '[''"].*[''"]'
21
22
  - name: Endianness
22
23
  required: false
23
- description: Indicates if the item is to be interpreted in Big Endian or Little Endian format.
24
- See guide on <a href="https://openc3.com/docs/v5/little-endian-bitfields">Little Endian Bitfields</a>.
24
+ description:
25
+ Indicates if the item is to be interpreted in Big Endian or Little Endian format.
26
+ See guide on [Little Endian Bitfields](../guides/little-endian-bitfields.md).
25
27
  values: <%= %w(BIG_ENDIAN LITTLE_ENDIAN) %>
@@ -22,17 +22,19 @@
22
22
  values: .*
23
23
  - name: ID Value
24
24
  required: true
25
- description: Identification value for this parameter. The binary data must
25
+ description:
26
+ Identification value for this parameter. The binary data must
26
27
  match this value for the buffer to be identified as this packet.
27
28
  values: .*
28
29
  - name: Description
29
30
  required: false
30
31
  description: Description for this parameter which must be enclosed with quotes
31
- values: "['\"].*['\"]"
32
+ values: '[''"].*[''"]'
32
33
  - name: Endianness
33
34
  required: false
34
- description: Indicates if the data in this command is to be sent in Big Endian or Little Endian format.
35
- See guide on <a href="https://openc3.com/docs/v5/little-endian-bitfields">Little Endian Bitfields</a>.
35
+ description:
36
+ Indicates if the data in this command is to be sent in Big Endian or Little Endian format.
37
+ See guide on [Little Endian Bitfields](../guides/little-endian-bitfields.md).
36
38
  values: <%= %w(BIG_ENDIAN LITTLE_ENDIAN) %>
37
39
  UINT:
38
40
  parameters: *params
@@ -44,13 +46,14 @@
44
46
  parameters: &sparams
45
47
  - name: Default Value
46
48
  required: true
47
- description: Default value for this parameter. You must provide a default
49
+ description:
50
+ Default value for this parameter. You must provide a default
48
51
  but if you mark the parameter REQUIRED then scripts will be forced to specify a value.
49
52
  values: .*
50
53
  - name: Description
51
54
  required: false
52
55
  description: Description for this parameter which must be enclosed with quotes
53
- values: "['\"].*['\"]"
56
+ values: '[''"].*[''"]'
54
57
  - name: Endianness
55
58
  required: false
56
59
  description: Indicates if the data in this command is to be sent in Big Endian or Little Endian format
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  - name: Bit Size
3
3
  required: true
4
- description: Bit size of this telemetry item. Zero or Negative values may be used
4
+ description:
5
+ Bit size of this telemetry item. Zero or Negative values may be used
5
6
  to indicate that a string fills the packet up to the offset from the end of
6
7
  the packet specified by this value. If Bit Offset is 0 and Bit Size is 0 then
7
8
  this is a derived parameter and the Data Type must be set to 'DERIVED'.
@@ -13,9 +14,10 @@
13
14
  - name: Description
14
15
  required: false
15
16
  description: Description for this telemetry item which must be enclosed with quotes
16
- values: "['\"].*['\"]"
17
+ values: '[''"].*[''"]'
17
18
  - name: Endianness
18
19
  required: false
19
- description: Indicates if the item is to be interpreted in Big Endian or Little Endian format.
20
- See guide on <a href="https://openc3.com/docs/v5/little-endian-bitfields">Little Endian Bitfields</a>.
20
+ description:
21
+ Indicates if the item is to be interpreted in Big Endian or Little Endian format.
22
+ See guide on [Little Endian Bitfields](../guides/little-endian-bitfields.md).
21
23
  values: <%= %w(BIG_ENDIAN LITTLE_ENDIAN) %>
@@ -32,8 +32,9 @@
32
32
  values: '[''"].*[''"]'
33
33
  - name: Endianness
34
34
  required: false
35
- description: Indicates if the data in this command is to be sent in Big Endian or Little Endian format.
36
- See guide on <a href="https://openc3.com/docs/v5/little-endian-bitfields">Little Endian Bitfields</a>.
35
+ description:
36
+ Indicates if the data in this command is to be sent in Big Endian or Little Endian format.
37
+ See guide on [Little Endian Bitfields](../guides/little-endian-bitfields.md).
37
38
  values: <%= %w(BIG_ENDIAN LITTLE_ENDIAN) %>
38
39
  UINT:
39
40
  parameters: *params
@@ -18,7 +18,7 @@ HISTORY:
18
18
  parameters:
19
19
  - name: Value
20
20
  required: true
21
- description: Value{d,h,m,s}. For example 1d, 2h, 30m, 15s
21
+ description: Value(d,h,m,s). For example 1d, 2h, 30m, 15s
22
22
  values: .+
23
23
  SECONDSGRAPHED:
24
24
  summary: Display the specified number of seconds in the graph
@@ -93,7 +93,7 @@ PROTOCOL:
93
93
  Protocols can be either READ, WRITE, or READ_WRITE. READ protocols act on the data
94
94
  received by the interface while write acts on the data before it is sent out. READ_WRITE applies
95
95
  the protocol to both reading and writing.<br/><br/>
96
- For information on creating your own custom protocol please see <a href="https://openc3.com/docs/v5/protocols">https://openc3.com/docs/v5/protocols</a>
96
+ For information on creating your own custom protocol please see [Protocols](../configuration/protocols.md)
97
97
  since: 4.0.0
98
98
  parameters:
99
99
  - name: Type
@@ -32,8 +32,7 @@ STATE:
32
32
  READ_CONVERSION:
33
33
  summary: Applies a conversion to the current telemetry item
34
34
  description: Conversions are implemented in a custom Ruby file which should be
35
- located in the target's lib folder and required by the target's target.txt
36
- file (see REQUIRE). The class must require 'openc3/conversions/conversion'
35
+ located in the target's lib folder. The class must require 'openc3/conversions/conversion'
37
36
  and inherit from Conversion. It must implement the initialize method if it
38
37
  takes extra parameters and must always implement the call method. The conversion
39
38
  factor is applied to the raw value in the telemetry packet before it is displayed
@@ -4,7 +4,7 @@ MICROSERVICE:
4
4
  description: Defines a microservice that the plugin adds to the OpenC3 system. Microservices are background software processes that perform persistent processing.
5
5
  parameters:
6
6
  - name: Microservice Folder Name
7
- description: The exact name of the microservice folder in the plugin. ie. microservices/<Microservice Folder Name>
7
+ description: The exact name of the microservice folder in the plugin. ie. microservices/MicroserviceFolderName
8
8
  required: true
9
9
  values: .+
10
10
  - name: Microservice Name
@@ -148,3 +148,12 @@ MICROSERVICE:
148
148
  example: |
149
149
  MICROSERVICE CFDP CFDP
150
150
  ROUTE_PREFIX /cfdp
151
+ DISABLE_ERB:
152
+ summary: Disable ERB processing
153
+ description: Disable ERB processing for the entire microservice or a set of regular expressions over its filenames
154
+ since: 5.12.0
155
+ parameters:
156
+ - name: Regex
157
+ required: false
158
+ description: Regex to match against filenames. If match, then no ERB processing
159
+ values: .+
@@ -63,23 +63,22 @@ STATE:
63
63
  values: "['\"].*['\"]"
64
64
  WRITE_CONVERSION:
65
65
  summary: Applies a conversion when writing the current command parameter
66
- description: Conversions are implemented in a custom Ruby file which should be
67
- located in the target's lib folder and required by the target's target.txt
68
- file (see REQUIRE). The class must require 'openc3/conversions/conversion'
66
+ description: |
67
+ Conversions are implemented in a custom Ruby file which should be
68
+ located in the target's lib folder. The class must require 'openc3/conversions/conversion'
69
69
  and inherit from Conversion. It must implement the initialize method if it
70
70
  takes extra parameters and must always implement the call method. The conversion
71
71
  factor is applied to the value entered by the user before it is written into
72
72
  the binary command packet and sent.
73
73
 
74
- <div class="note info">
75
- <h5>Multiple write conversions on command parameters</h5>
76
- <p>When a command is built, each item gets written (and write conversions are run)
74
+ :::info Multiple write conversions on command parameters
75
+ When a command is built, each item gets written (and write conversions are run)
77
76
  to set the default value. Then items are written (again write conversions are run)
78
77
  with user provided values. Thus write conversions can be run twice. Also there are
79
78
  no guarantees which parameters have already been written. The packet itself has a
80
79
  given_values() method which can be used to retrieve a hash of the user provided
81
- values to the command. That can be used to check parameter values passed in.</p>
82
- </div>
80
+ values to the command. That can be used to check parameter values passed in.
81
+ :::
83
82
  example: |
84
83
  WRITE_CONVERSION the_great_conversion.rb 1000
85
84
 
@@ -154,7 +153,8 @@ SEG_POLY_WRITE_CONVERSION:
154
153
  values: .*
155
154
  GENERIC_WRITE_CONVERSION_START:
156
155
  summary: Start a generic write conversion
157
- description: Adds a generic conversion function to the current command parameter.
156
+ description: |
157
+ Adds a generic conversion function to the current command parameter.
158
158
  This conversion factor is applied to the value entered by the user before it
159
159
  is written into the binary command packet and sent. The conversion is specified
160
160
  as ruby code that receives two implied parameters. 'value' which is the raw
@@ -164,15 +164,14 @@ GENERIC_WRITE_CONVERSION_START:
164
164
  value. The GENERIC_WRITE_CONVERSION_END keyword specifies that all lines of
165
165
  ruby code for the conversion have been given.
166
166
 
167
- <div class="note info">
168
- <h5>Multiple write conversions on command parameters</h5>
169
- <p>When a command is built, each item gets written (and write conversions are run)
167
+ :::info Multiple write conversions on command parameters
168
+ When a command is built, each item gets written (and write conversions are run)
170
169
  to set the default value. Then items are written (again write conversions are run)
171
170
  with user provided values. Thus write conversions can be run twice. Also there are
172
171
  no guarantees which parameters have already been written. The packet itself has a
173
172
  given_values() method which can be used to retrieve a hash of the user provided
174
- values to the command. That can be used to check parameter values passed in.</p>
175
- </div>
173
+ values to the command. That can be used to check parameter values passed in.
174
+ :::
176
175
  warning: Generic conversions are not a good long term solution. Consider creating
177
176
  a conversion class and using WRITE_CONVERSION instead. WRITE_CONVERSION is easier
178
177
  to debug and higher performance.
@@ -40,7 +40,7 @@ INTERFACE:
40
40
  description: Ruby file to use when instantiating the interface.
41
41
  values:
42
42
  <%= MetaConfigParser.load('_interfaces.yaml').to_meta_config_yaml(8) %>
43
- documentation: Additional parameters are required. Please see the [Interfaces](/docs/v5/interfaces)
43
+ documentation: Additional parameters are required. Please see the [Interfaces](../configuration/interfaces.md)
44
44
  documentation for more details.
45
45
  ROUTER:
46
46
  modifiers:
@@ -60,7 +60,7 @@ ROUTER:
60
60
  description: Ruby file to use when instantiating the interface.
61
61
  values:
62
62
  <%= MetaConfigParser.load('_interfaces.yaml').to_meta_config_yaml(8) %>
63
- documentation: Additional parameters are required. Please see the [Interfaces](/docs/v5/interfaces)
63
+ documentation: Additional parameters are required. Please see the [Interfaces](../configuration/interfaces.md)
64
64
  documentation for more details.
65
65
  <%= MetaConfigParser.load('target.yaml').to_meta_config_yaml() %>
66
66
  <%= MetaConfigParser.load('microservice.yaml').to_meta_config_yaml() %>
@@ -71,7 +71,17 @@ WIDGET:
71
71
  description: Defines a custom widget that can be used in Telemetry Viewer screens.
72
72
  parameters:
73
73
  - name: Widget Name
74
- description: The name of the widget wil be used to build a path to the widget implementation. For example, `WIDGET HELLOWORLD` will find the as-built file tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js. See the [Custom Widgets](/docs/v5/custom-widgets)
74
+ description: The name of the widget wil be used to build a path to the widget implementation. For example, `WIDGET HELLOWORLD` will find the as-built file tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js. See the [Custom Widgets](../guides/custom-widgets.md)
75
75
  guide for more details.
76
76
  required: true
77
77
  values: .+
78
+ modifiers:
79
+ DISABLE_ERB:
80
+ summary: Disable ERB processing
81
+ description: Disable ERB processing for the entire widget or a set of regular expressions over its filenames
82
+ since: 5.12.0
83
+ parameters:
84
+ - name: Regex
85
+ required: false
86
+ description: Regex to match against filenames. If match, then no ERB processing
87
+ values: .+
@@ -53,7 +53,7 @@ GLOBAL_SETTING:
53
53
  description: See SETTING for details.
54
54
  values: .*
55
55
  example: |
56
- GLOBAL_SETTING LABELVALUELIMITSBAR COLORBLIND TRUE
56
+ GLOBAL_SETTING LABELVALUELIMITSBAR TEXTCOLOR BLACK
57
57
  GLOBAL_SUBSETTING:
58
58
  summary: Applies a widget subsetting to all widgets of a certain type
59
59
  description: Subsettings are only valid for widgets that are
@@ -81,7 +81,6 @@ GLOBAL_SUBSETTING:
81
81
  description: See SETTING for details.
82
82
  values: .*
83
83
  example: |
84
- GLOBAL_SUBSETTING LABELVALUELIMITSBAR 1 COLORBLIND TRUE
85
84
  # Set all text color to white for labelvaluelimitsbars
86
85
  GLOBAL_SUBSETTING LABELVALUELIMITSBAR 0:0 TEXTCOLOR white
87
86
  SETTING:
@@ -187,3 +187,12 @@ TARGET:
187
187
  description: The packet name. Does not apply to
188
188
  REDUCER or CLEANUP target microservice types.
189
189
  values: .*
190
+ DISABLE_ERB:
191
+ summary: Disable ERB processing
192
+ description: Disable ERB processing for the entire target or a set of regular expressions over its filenames
193
+ since: 5.12.0
194
+ parameters:
195
+ - name: Regex
196
+ required: false
197
+ description: Regex to match against filenames. If match, then no ERB processing
198
+ values: .+
@@ -1,10 +1,19 @@
1
1
  ---
2
+ LANGUAGE:
3
+ summary: Programming language of the target interfaces and microservices
4
+ description: The target language must be either Ruby or Python. The language
5
+ determines how the target's interfaces and microservices are run. Note that
6
+ both Ruby and Python still use ERB to perform templating.
7
+ example: LANGUAGE python
8
+ parameters:
9
+ - language: Programming language
10
+ required: true
11
+ description: Ruby or Python
12
+ values: ["ruby", "python"]
13
+ since: 5.11.1
2
14
  REQUIRE:
3
15
  summary: Requires a Ruby file
4
- description:
5
- Ruby files must be required to be available to call in other code.
6
- Files are first required from the target's lib folder. If no file is found the
7
- Ruby system path is checked which includes the base openc3/lib folder.
16
+ description: Ruby files optionally be required to explicitly declare dependencies.
8
17
  example: REQUIRE limits_response.rb
9
18
  parameters:
10
19
  - name: Filename
@@ -13,8 +22,7 @@ REQUIRE:
13
22
  simply supply the filename, e.g. "REQUIRE my_file". Files in the base OpenC3
14
23
  lib directory also should just list the filename. If a file is in a folder
15
24
  under the lib directory then you must specify the folder name, e.g. "REQUIRE
16
- folder/my_file". The filename can also be an absolute path but this is not
17
- common. Note the ".rb" extension is optional when specifying the filename.
25
+ folder/my_file". Note the ".rb" extension is optional when specifying the filename.
18
26
  values: .+
19
27
  IGNORE_PARAMETER:
20
28
  summary: Ignore the given command parameter
@@ -5,7 +5,7 @@ TOOL:
5
5
  description: Defines a tool that the plugin adds to the OpenC3 system. Tools are web based applications that make use of the Single-SPA javascript library that allows them to by dynamically added to the running system as independent frontend microservices.
6
6
  parameters:
7
7
  - name: Tool Folder Name
8
- description: The exact name of the tool folder in the plugin. ie. tools/<Tool Folder Name>
8
+ description: The exact name of the tool folder in the plugin. ie. tools/ToolFolderName
9
9
  required: true
10
10
  values: .+
11
11
  - name: Tool Name
@@ -15,11 +15,11 @@ TOOL:
15
15
  modifiers:
16
16
  URL:
17
17
  summary: Url used to access the tool
18
- description: The relative url used to access the tool. Defaults to "/tools/<Tool Folder Name>".
18
+ description: The relative url used to access the tool. Defaults to "/tools/ToolFolderName".
19
19
  parameters:
20
20
  - name: Url
21
21
  required: true
22
- description: The url. If not given defaults to tools/<Tool Folder Name>. Generally should not be given unless linking to external tools.
22
+ description: The url. If not given defaults to tools/ToolFolderName. Generally should not be given unless linking to external tools.
23
23
  values: .+
24
24
  INLINE_URL:
25
25
  summary: Internal url to load a tool
@@ -70,3 +70,12 @@ TOOL:
70
70
  required: true
71
71
  description: Numerical position
72
72
  values: \d+
73
+ DISABLE_ERB:
74
+ summary: Disable ERB processing
75
+ description: Disable ERB processing for the entire tool or a set of regular expressions over its filenames
76
+ since: 5.12.0
77
+ parameters:
78
+ - name: Regex
79
+ required: false
80
+ description: Regex to match against filenames. If match, then no ERB processing
81
+ values: .+
@@ -14,7 +14,7 @@
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
20
  # This file may also be used under the terms of a commercial license