openc3 5.5.2 → 5.6.0

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.

Potentially problematic release.


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

Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/bin/openc3cli +167 -69
  3. data/data/config/_interfaces.yaml +1 -6
  4. data/data/config/interface_modifiers.yaml +55 -4
  5. data/data/config/microservice.yaml +30 -3
  6. data/ext/openc3/ext/crc/crc.c +82 -1
  7. data/lib/openc3/api/cmd_api.rb +19 -7
  8. data/lib/openc3/api/tlm_api.rb +13 -12
  9. data/lib/openc3/bridge/bridge_config.rb +4 -4
  10. data/lib/openc3/config/config_parser.rb +1 -0
  11. data/lib/openc3/conversions/unix_time_conversion.rb +3 -1
  12. data/lib/openc3/ext/.keep +0 -0
  13. data/lib/openc3/interfaces/interface.rb +54 -26
  14. data/lib/openc3/interfaces/serial_interface.rb +4 -5
  15. data/lib/openc3/interfaces/simulated_target_interface.rb +4 -4
  16. data/lib/openc3/interfaces/stream_interface.rb +2 -2
  17. data/lib/openc3/interfaces/tcpip_client_interface.rb +4 -3
  18. data/lib/openc3/interfaces/tcpip_server_interface.rb +18 -19
  19. data/lib/openc3/interfaces/udp_interface.rb +10 -4
  20. data/lib/openc3/io/json_api.rb +72 -0
  21. data/lib/openc3/io/serial_driver.rb +4 -5
  22. data/lib/openc3/logs/buffered_packet_log_writer.rb +2 -4
  23. data/lib/openc3/logs/log_writer.rb +9 -8
  24. data/lib/openc3/logs/packet_log_reader.rb +8 -1
  25. data/lib/openc3/logs/packet_log_writer.rb +3 -4
  26. data/lib/openc3/logs/stream_log.rb +116 -0
  27. data/lib/openc3/logs/stream_log_pair.rb +70 -0
  28. data/lib/openc3/microservices/cleanup_microservice.rb +1 -1
  29. data/lib/openc3/microservices/decom_microservice.rb +17 -2
  30. data/lib/openc3/microservices/interface_decom_common.rb +42 -0
  31. data/lib/openc3/microservices/interface_microservice.rb +24 -17
  32. data/lib/openc3/microservices/router_microservice.rb +46 -4
  33. data/lib/openc3/migrations/20221202214600_add_target_names.rb +1 -1
  34. data/lib/openc3/migrations/20230319154100_log_stream.rb +40 -0
  35. data/lib/openc3/migrations/20230413101100_remove_log.rb +30 -0
  36. data/lib/openc3/models/gem_model.rb +2 -2
  37. data/lib/openc3/models/interface_model.rb +13 -14
  38. data/lib/openc3/models/metadata_model.rb +1 -1
  39. data/lib/openc3/models/note_model.rb +1 -1
  40. data/lib/openc3/models/plugin_model.rb +3 -2
  41. data/lib/openc3/operators/operator.rb +2 -0
  42. data/lib/openc3/packets/commands.rb +2 -0
  43. data/lib/openc3/packets/packet_config.rb +3 -2
  44. data/lib/openc3/packets/parsers/xtce_converter.rb +2 -1
  45. data/lib/openc3/script/gems.rb +125 -0
  46. data/lib/openc3/script/plugins.rb +186 -0
  47. data/lib/openc3/script/screen.rb +119 -0
  48. data/lib/openc3/script/script.rb +3 -0
  49. data/lib/openc3/script/script_runner.rb +19 -8
  50. data/lib/openc3/script/suite_results.rb +2 -2
  51. data/lib/openc3/script/web_socket_api.rb +5 -1
  52. data/lib/openc3/streams/serial_stream.rb +14 -11
  53. data/lib/openc3/streams/tcpip_client_stream.rb +5 -2
  54. data/lib/openc3/streams/tcpip_socket_stream.rb +37 -71
  55. data/lib/openc3/streams/web_socket_client_stream.rb +5 -3
  56. data/lib/openc3/system/system.rb +2 -0
  57. data/lib/openc3/topics/interface_topic.rb +13 -4
  58. data/lib/openc3/topics/router_topic.rb +6 -6
  59. data/lib/openc3/topics/telemetry_decom_topic.rb +10 -1
  60. data/lib/openc3/utilities/bucket_utilities.rb +12 -5
  61. data/lib/openc3/utilities/cli_generator.rb +56 -4
  62. data/lib/openc3/utilities/crc.rb +42 -7
  63. data/lib/openc3/utilities/process_manager.rb +3 -1
  64. data/lib/openc3/utilities/ruby_lex_utils.rb +265 -504
  65. data/lib/openc3/version.rb +6 -6
  66. data/templates/conversion/conversion.rb +10 -2
  67. data/templates/microservice/microservices/TEMPLATE/microservice.rb +1 -1
  68. data/templates/plugin/Rakefile +8 -1
  69. data/templates/widget/.browserslistrc +16 -0
  70. data/templates/widget/.eslintrc.js +43 -0
  71. data/templates/widget/.nycrc +3 -0
  72. data/templates/widget/.prettierrc.js +5 -0
  73. data/templates/widget/LICENSE.txt +20 -0
  74. data/templates/widget/Rakefile +24 -0
  75. data/templates/widget/babel.config.json +11 -0
  76. data/templates/widget/package.json +35 -0
  77. data/templates/widget/src/Widget.vue +46 -0
  78. data/templates/widget/vue.config.js +25 -0
  79. data/templates/widget/yarn.lock +8938 -0
  80. metadata +23 -4
  81. data/lib/openc3/io/raw_logger.rb +0 -170
  82. data/lib/openc3/io/raw_logger_pair.rb +0 -80
@@ -17,7 +17,7 @@
17
17
  # All changes Copyright 2022, 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
  require 'openc3/ext/crc' if RUBY_ENGINE == 'ruby' and !ENV['OPENC3_NO_EXT']
@@ -74,16 +74,22 @@ module OpenC3
74
74
  @table = []
75
75
  end
76
76
 
77
- # Determine which class we're using: Crc16, Crc32, Crc64
78
- @bit_size = self.class.name[-2..-1].to_i
79
- case @bit_size
80
- when 16
77
+ # Determine which class we're using: Crc8, Crc16, Crc32, Crc64
78
+ case self.class.name
79
+ when 'OpenC3::Crc8'
80
+ @bit_size = 8
81
+ pack = 'C'
82
+ filter_mask = 0xFF
83
+ when 'OpenC3::Crc16'
84
+ @bit_size = 16
81
85
  pack = 'S'
82
86
  filter_mask = 0xFFFF
83
- when 32
87
+ when 'OpenC3::Crc32'
88
+ @bit_size = 32
84
89
  pack = 'I'
85
90
  filter_mask = 0xFFFFFFFF
86
- when 64
91
+ when 'OpenC3::Crc64'
92
+ @bit_size = 64
87
93
  pack = 'Q'
88
94
  filter_mask = 0xFFFFFFFFFFFFFFFF
89
95
  end
@@ -142,6 +148,10 @@ module OpenC3
142
148
  crc = seed
143
149
 
144
150
  case @bit_size
151
+ when 8
152
+ right_shift = 0
153
+ filter_mask = 0xFF
154
+ final_bit_reverse = method(:bit_reverse_8)
145
155
  when 16
146
156
  right_shift = 8
147
157
  filter_mask = 0xFFFF
@@ -204,6 +214,31 @@ module OpenC3
204
214
  end
205
215
  end
206
216
 
217
+ # Calculates 8-bit CRCs over a buffer of data.
218
+ class Crc8 < Crc
219
+ # CRC-8-DVB-S2 default polynomial
220
+ DEFAULT_POLY = 0xD5
221
+ # Seed for 8-bit CRC
222
+ DEFAULT_SEED = 0x00
223
+
224
+ # Creates a 8 bit CRC algorithm instance. By default it is initialzed to
225
+ # use the CRC-8-DVB-S2 algorithm.
226
+ #
227
+ # @param poly [Integer] Polynomial to use when calculating the CRC
228
+ # @param seed [Integer] Seed value to start the calculation
229
+ # @param xor [Boolean] Whether to XOR the CRC result with 0xFF
230
+ # @param reflect [Boolean] Whether to bit reverse each byte of data before
231
+ # calculating the CRC
232
+ def initialize(poly = DEFAULT_POLY,
233
+ seed = DEFAULT_SEED,
234
+ xor = false,
235
+ reflect = false)
236
+ super(poly, seed, xor, reflect)
237
+ end
238
+
239
+ alias calculate_crc8 calc
240
+ end # class Crc8
241
+
207
242
  # Calculates 16-bit CRCs over a buffer of data.
208
243
  class Crc16 < Crc
209
244
  # CRC-16-CCITT default polynomial
@@ -32,6 +32,7 @@ module OpenC3
32
32
  attr_accessor :detail
33
33
  attr_accessor :expires_at
34
34
  attr_accessor :status
35
+ attr_accessor :name
35
36
 
36
37
  def initialize(cmd_array, process_type, detail, expires_at, **kw_args)
37
38
  super(cmd_array, **kw_args)
@@ -44,7 +45,7 @@ module OpenC3
44
45
  def start
45
46
  super()
46
47
  if @process
47
- @status = ProcessStatusModel.new(name: "#{Socket.gethostname}__#{@process.pid}", process_type: @process_type, detail: @detail, state: "Running", scope: @scope)
48
+ @status = ProcessStatusModel.new(name: @name, process_type: @process_type, detail: @detail, state: "Running", scope: @scope)
48
49
  @status.create
49
50
  end
50
51
  end
@@ -78,6 +79,7 @@ module OpenC3
78
79
  process = ProcessManagerProcess.new(cmd_array, process_type, detail, expires_at, **kw_args)
79
80
  process.start
80
81
  @processes << process
82
+ return process
81
83
  end
82
84
 
83
85
  def monitor