openc3 5.5.2 → 5.6.0

Sign up to get free protection for your applications and to get access to all the features.
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