openc3 5.18.0 → 5.19.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.
- checksums.yaml +4 -4
- data/Gemfile +7 -4
- data/bin/cstol_converter +14 -14
- data/bin/openc3cli +189 -7
- data/data/config/_interfaces.yaml +1 -1
- data/data/config/command_modifiers.yaml +55 -0
- data/data/config/interface_modifiers.yaml +1 -1
- data/data/config/param_item_modifiers.yaml +1 -1
- data/data/config/parameter_modifiers.yaml +1 -1
- data/data/config/plugins.yaml +6 -2
- data/data/config/screen.yaml +2 -2
- data/data/config/table_manager.yaml +2 -2
- data/data/config/tool.yaml +4 -1
- data/data/config/widgets.yaml +3 -3
- data/ext/openc3/ext/config_parser/config_parser.c +1 -1
- data/ext/openc3/ext/packet/packet.c +1 -1
- data/ext/openc3/ext/platform/platform.c +3 -3
- data/ext/openc3/ext/structure/structure.c +56 -76
- data/lib/openc3/accessors/binary_accessor.rb +4 -4
- data/lib/openc3/accessors/form_accessor.rb +2 -2
- data/lib/openc3/accessors/http_accessor.rb +1 -1
- data/lib/openc3/accessors/json_accessor.rb +6 -4
- data/lib/openc3/accessors/template_accessor.rb +6 -9
- data/lib/openc3/accessors/xml_accessor.rb +1 -1
- data/lib/openc3/api/cmd_api.rb +35 -11
- data/lib/openc3/api/limits_api.rb +1 -1
- data/lib/openc3/config/config_parser.rb +1 -1
- data/lib/openc3/conversions/segmented_polynomial_conversion.rb +7 -7
- data/lib/openc3/core_ext/array.rb +5 -5
- data/lib/openc3/core_ext/exception.rb +9 -2
- data/lib/openc3/core_ext/string.rb +2 -2
- data/lib/openc3/interfaces/http_server_interface.rb +1 -0
- data/lib/openc3/interfaces/interface.rb +1 -1
- data/lib/openc3/interfaces/linc_interface.rb +3 -3
- data/lib/openc3/io/json_api.rb +11 -6
- data/lib/openc3/io/json_rpc.rb +1 -1
- data/lib/openc3/logs/buffered_packet_log_writer.rb +3 -3
- data/lib/openc3/logs/log_writer.rb +7 -8
- data/lib/openc3/logs/packet_log_writer.rb +7 -7
- data/lib/openc3/logs/text_log_writer.rb +4 -4
- data/lib/openc3/microservices/decom_microservice.rb +19 -4
- data/lib/openc3/microservices/interface_microservice.rb +41 -3
- data/lib/openc3/microservices/reaction_microservice.rb +2 -2
- data/lib/openc3/microservices/trigger_group_microservice.rb +3 -3
- data/lib/openc3/migrations/20240915000000_activity_uuid.rb +28 -0
- data/lib/openc3/models/activity_model.rb +109 -80
- data/lib/openc3/models/auth_model.rb +31 -2
- data/lib/openc3/models/cvt_model.rb +11 -5
- data/lib/openc3/models/gem_model.rb +8 -8
- data/lib/openc3/models/plugin_model.rb +3 -3
- data/lib/openc3/models/reducer_model.rb +2 -2
- data/lib/openc3/models/scope_model.rb +1 -1
- data/lib/openc3/models/sorted_model.rb +4 -4
- data/lib/openc3/models/target_model.rb +3 -3
- data/lib/openc3/models/tool_config_model.rb +1 -1
- data/lib/openc3/models/tool_model.rb +4 -4
- data/lib/openc3/models/widget_model.rb +11 -5
- data/lib/openc3/operators/operator.rb +5 -3
- data/lib/openc3/packets/command_validator.rb +48 -0
- data/lib/openc3/packets/commands.rb +6 -14
- data/lib/openc3/packets/packet.rb +31 -15
- data/lib/openc3/packets/packet_config.rb +10 -9
- data/lib/openc3/packets/parsers/packet_parser.rb +3 -3
- data/lib/openc3/packets/structure.rb +21 -13
- data/lib/openc3/packets/structure_item.rb +33 -47
- data/lib/openc3/packets/telemetry.rb +6 -27
- data/lib/openc3/script/api_shared.rb +7 -5
- data/lib/openc3/script/calendar.rb +2 -2
- data/lib/openc3/script/commands.rb +6 -4
- data/lib/openc3/script/metadata.rb +2 -2
- data/lib/openc3/script/suite.rb +17 -17
- data/lib/openc3/streams/serial_stream.rb +2 -3
- data/lib/openc3/streams/stream.rb +2 -2
- data/lib/openc3/tools/cmd_tlm_server/interface_thread.rb +10 -10
- data/lib/openc3/tools/table_manager/table_manager_core.rb +11 -11
- data/lib/openc3/tools/table_manager/table_parser.rb +2 -3
- data/lib/openc3/topics/command_decom_topic.rb +2 -1
- data/lib/openc3/topics/command_topic.rb +3 -3
- data/lib/openc3/topics/decom_interface_topic.rb +2 -2
- data/lib/openc3/topics/telemetry_decom_topic.rb +1 -1
- data/lib/openc3/utilities/authorization.rb +2 -1
- data/lib/openc3/utilities/cli_generator.rb +15 -8
- data/lib/openc3/utilities/cosmos_rails_formatter.rb +60 -0
- data/lib/openc3/utilities/crc.rb +6 -6
- data/lib/openc3/utilities/local_mode.rb +2 -1
- data/lib/openc3/utilities/logger.rb +44 -34
- data/lib/openc3/utilities/metric.rb +1 -2
- data/lib/openc3/utilities/quaternion.rb +18 -18
- data/lib/openc3/utilities/target_file.rb +4 -4
- data/lib/openc3/version.rb +5 -5
- data/lib/openc3/win32/win32_main.rb +2 -2
- data/templates/tool_angular/package.json +21 -21
- data/templates/tool_react/package.json +10 -10
- data/templates/tool_svelte/package.json +11 -11
- data/templates/tool_svelte/src/services/openc3-api.js +17 -17
- data/templates/tool_vue/package.json +9 -9
- data/templates/widget/package.json +6 -7
- metadata +5 -2
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
require 'openc3/utilities/logger'
|
|
3
|
+
require 'openc3/utilities/authorization'
|
|
4
|
+
|
|
5
|
+
# Use with Rails Semantic Logger
|
|
6
|
+
module OpenC3
|
|
7
|
+
class CosmosRailsFormatter
|
|
8
|
+
include OpenC3::Authorization
|
|
9
|
+
|
|
10
|
+
def call(log, _appender = nil)
|
|
11
|
+
#<SemanticLogger::Log:0x0000ffffa5002b20 @level=:info, @thread_name="puma srv tp 001", @name="MicroservicesController",
|
|
12
|
+
# @time=2024-09-22 18:04:27.955490052 +0000, @tags=[], @named_tags={}, @level_index=2, @message="Completed #traefik",
|
|
13
|
+
# @payload={:controller=>"MicroservicesController", :action=>"traefik", :format=>"HTML", :method=>"GET",
|
|
14
|
+
# :path=>"/openc3-api/traefik", :status=>200, :view_runtime=>0.41, :allocations=>1438, :status_message=>"OK",
|
|
15
|
+
# :exception_object=>#<RuntimeError: death>}, @named_tags={:request_id=>"65446ef0-734e-4488-aa5f-e85b7b573fd8"},
|
|
16
|
+
# @duration=3.2528750002384186, @metric=nil, @metric_amount=nil, @dimensions=nil, @exception=nil, @backtrace=nil>
|
|
17
|
+
message = log.message
|
|
18
|
+
other = {}
|
|
19
|
+
other[:thread_name] = log.thread_name
|
|
20
|
+
other[:duration] = log.duration if log.duration
|
|
21
|
+
named_tags = log.named_tags
|
|
22
|
+
username = nil
|
|
23
|
+
if named_tags
|
|
24
|
+
other[:request_id] = named_tags[:request_id]
|
|
25
|
+
if named_tags[:token]
|
|
26
|
+
begin
|
|
27
|
+
user = user_info(named_tags[:token])
|
|
28
|
+
rescue
|
|
29
|
+
user = {}
|
|
30
|
+
end
|
|
31
|
+
username = user['username']
|
|
32
|
+
# Open Source username (EE has the actual username)
|
|
33
|
+
username ||= 'anonymous'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
username ||= 'anonymous'
|
|
37
|
+
payload = log.payload
|
|
38
|
+
if payload
|
|
39
|
+
other[:path] = payload[:path]
|
|
40
|
+
other[:status] = payload[:status]
|
|
41
|
+
other[:controller] = payload[:controller]
|
|
42
|
+
other[:action] = payload[:action]
|
|
43
|
+
other[:format] = payload[:format]
|
|
44
|
+
other[:method] = payload[:method]
|
|
45
|
+
other[:allocations] = payload[:allocations]
|
|
46
|
+
other[:view_runtime] = payload[:view_runtime]
|
|
47
|
+
if payload[:exception_object]
|
|
48
|
+
other[:exception_message] = payload[:exception_object].message
|
|
49
|
+
other[:exception_class] = payload[:exception_object].class.to_s
|
|
50
|
+
other[:exception_backtrace] = payload[:exception_object].backtrace.as_json
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
# This happens for a separate exception log entry which we want to not include the backtrace a second time
|
|
54
|
+
if log.exception
|
|
55
|
+
message = "Exception was raised - #{log.exception.class}:#{log.exception.message}" unless message
|
|
56
|
+
end
|
|
57
|
+
return OpenC3::Logger.build_log_data(log.level.to_s.upcase, message, user: username, type: OpenC3::Logger::LOG, url: nil, other: other).as_json(:allow_nan => true).to_json(:allow_nan => true)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/lib/openc3/utilities/crc.rb
CHANGED
|
@@ -45,9 +45,9 @@ module OpenC3
|
|
|
45
45
|
0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
|
|
46
46
|
]
|
|
47
47
|
|
|
48
|
-
# @return [Integer] The polynomial used when
|
|
48
|
+
# @return [Integer] The polynomial used when calculating the CRC
|
|
49
49
|
attr_reader :poly
|
|
50
|
-
# @return [Integer] Seed value used to start the
|
|
50
|
+
# @return [Integer] Seed value used to start the calculation
|
|
51
51
|
attr_reader :seed
|
|
52
52
|
# @return [Boolean] Whether the result is XORed with 0xFFFF
|
|
53
53
|
attr_reader :xor
|
|
@@ -221,7 +221,7 @@ module OpenC3
|
|
|
221
221
|
# Seed for 8-bit CRC
|
|
222
222
|
DEFAULT_SEED = 0x00
|
|
223
223
|
|
|
224
|
-
# Creates a 8 bit CRC algorithm instance. By default it is
|
|
224
|
+
# Creates a 8 bit CRC algorithm instance. By default it is initialized to
|
|
225
225
|
# use the CRC-8-DVB-S2 algorithm.
|
|
226
226
|
#
|
|
227
227
|
# @param poly [Integer] Polynomial to use when calculating the CRC
|
|
@@ -246,7 +246,7 @@ module OpenC3
|
|
|
246
246
|
# Seed for 16-bit CRC
|
|
247
247
|
DEFAULT_SEED = 0xFFFF
|
|
248
248
|
|
|
249
|
-
# Creates a 16 bit CRC algorithm instance. By default it is
|
|
249
|
+
# Creates a 16 bit CRC algorithm instance. By default it is initialized to
|
|
250
250
|
# use the CRC-16-CCITT algorithm.
|
|
251
251
|
#
|
|
252
252
|
# @param poly [Integer] Polynomial to use when calculating the CRC
|
|
@@ -271,7 +271,7 @@ module OpenC3
|
|
|
271
271
|
# Default Seed for 32-bit CRC
|
|
272
272
|
DEFAULT_SEED = 0xFFFFFFFF
|
|
273
273
|
|
|
274
|
-
# Creates a 32 bit CRC algorithm instance. By default it is
|
|
274
|
+
# Creates a 32 bit CRC algorithm instance. By default it is initialized to
|
|
275
275
|
# use the CRC-32 algorithm.
|
|
276
276
|
#
|
|
277
277
|
# @param poly [Integer] Polynomial to use when calculating the CRC
|
|
@@ -296,7 +296,7 @@ module OpenC3
|
|
|
296
296
|
# Default Seed for 64-bit CRC
|
|
297
297
|
DEFAULT_SEED = 0xFFFFFFFFFFFFFFFF
|
|
298
298
|
|
|
299
|
-
# Creates a 64 bit CRC algorithm instance. By default it is
|
|
299
|
+
# Creates a 64 bit CRC algorithm instance. By default it is initialized to
|
|
300
300
|
# use the algorithm.
|
|
301
301
|
#
|
|
302
302
|
# @param poly [Integer] Polynomial to use when calculating the CRC
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: ascii-8bit
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright 2024 OpenC3, Inc.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
6
|
# This program is free software; you can modify and/or redistribute it
|
|
@@ -31,6 +31,7 @@ module OpenC3
|
|
|
31
31
|
'openc3-cosmos-tool-admin',
|
|
32
32
|
'openc3-cosmos-tool-bucketexplorer',
|
|
33
33
|
'openc3-cosmos-tool-cmdsender',
|
|
34
|
+
'openc3-cosmos-tool-cmdhistory',
|
|
34
35
|
'openc3-cosmos-tool-cmdtlmserver',
|
|
35
36
|
'openc3-cosmos-tool-dataextractor',
|
|
36
37
|
'openc3-cosmos-tool-dataviewer',
|
|
@@ -97,53 +97,53 @@ module OpenC3
|
|
|
97
97
|
# below the method name log level.
|
|
98
98
|
# @param block [Proc] Block to call which should return a string to append
|
|
99
99
|
# to the log message
|
|
100
|
-
def debug(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
101
|
-
log_message(DEBUG_LEVEL, message, scope: scope, user: user, type: type, url: url, &block) if @level <= DEBUG
|
|
100
|
+
def debug(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
101
|
+
log_message(DEBUG_LEVEL, message, scope: scope, user: user, type: type, url: url, other: other, &block) if @level <= DEBUG
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
# (see #debug)
|
|
105
|
-
def info(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
106
|
-
log_message(INFO_LEVEL, message, scope: scope, user: user, type: type, url: url, &block) if @level <= INFO
|
|
105
|
+
def info(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
106
|
+
log_message(INFO_LEVEL, message, scope: scope, user: user, type: type, url: url, other: other, &block) if @level <= INFO
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
# (see #debug)
|
|
110
|
-
def warn(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
111
|
-
log_message(WARN_LEVEL, message, scope: scope, user: user, type: type, url: url, &block) if @level <= WARN
|
|
110
|
+
def warn(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
111
|
+
log_message(WARN_LEVEL, message, scope: scope, user: user, type: type, url: url, other: other, &block) if @level <= WARN
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# (see #debug)
|
|
115
|
-
def error(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
116
|
-
log_message(ERROR_LEVEL, message, scope: scope, user: user, type: type, url: url, &block) if @level <= ERROR
|
|
115
|
+
def error(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
116
|
+
log_message(ERROR_LEVEL, message, scope: scope, user: user, type: type, url: url, other: other, &block) if @level <= ERROR
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
# (see #debug)
|
|
120
|
-
def fatal(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
121
|
-
log_message(FATAL_LEVEL, message, scope: scope, user: user, type: type, url: url, &block) if @level <= FATAL
|
|
120
|
+
def fatal(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
121
|
+
log_message(FATAL_LEVEL, message, scope: scope, user: user, type: type, url: url, other: other, &block) if @level <= FATAL
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
# (see #debug)
|
|
125
|
-
def self.debug(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
126
|
-
self.instance.debug(message, scope: scope, user: user, type: type, url: url, &block)
|
|
125
|
+
def self.debug(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
126
|
+
self.instance.debug(message, scope: scope, user: user, type: type, url: url, other: other, &block)
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
# (see #debug)
|
|
130
|
-
def self.info(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
131
|
-
self.instance.info(message, scope: scope, user: user, type: type, url: url, &block)
|
|
130
|
+
def self.info(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
131
|
+
self.instance.info(message, scope: scope, user: user, type: type, url: url, other: other, &block)
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
# (see #debug)
|
|
135
|
-
def self.warn(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
136
|
-
self.instance.warn(message, scope: scope, user: user, type: type, url: url, &block)
|
|
135
|
+
def self.warn(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
136
|
+
self.instance.warn(message, scope: scope, user: user, type: type, url: url, other: other, &block)
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
# (see #debug)
|
|
140
|
-
def self.error(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
141
|
-
self.instance.error(message, scope: scope, user: user, type: type, url: url, &block)
|
|
140
|
+
def self.error(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
141
|
+
self.instance.error(message, scope: scope, user: user, type: type, url: url, other: other, &block)
|
|
142
142
|
end
|
|
143
143
|
|
|
144
144
|
# (see #debug)
|
|
145
|
-
def self.fatal(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, &block)
|
|
146
|
-
self.instance.fatal(message, scope: scope, user: user, type: type, url: url, &block)
|
|
145
|
+
def self.fatal(message = nil, scope: @@scope, user: nil, type: LOG, url: nil, other: nil, &block)
|
|
146
|
+
self.instance.fatal(message, scope: scope, user: user, type: type, url: url, other: other, &block)
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
# @return [Logger] The logger instance
|
|
@@ -172,23 +172,33 @@ module OpenC3
|
|
|
172
172
|
@@scope = scope
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
+
def build_log_data(log_level, message, user: nil, type: nil, url: nil, other: nil, &block)
|
|
176
|
+
time = Time.now.utc
|
|
177
|
+
# timestamp iso8601 with 6 decimal places to match the python output format
|
|
178
|
+
data = { time: time.to_nsec_from_epoch, '@timestamp' => time.iso8601(6), level: log_level }
|
|
179
|
+
data[:microservice_name] = @microservice_name if @microservice_name
|
|
180
|
+
data[:detail] = @detail_string if @detail_string
|
|
181
|
+
data[:user] = user if user # EE: If a user is passed, put its name. Don't include user data if no user was passed.
|
|
182
|
+
if block_given?
|
|
183
|
+
message = yield
|
|
184
|
+
end
|
|
185
|
+
data[:container_name] = @container_name
|
|
186
|
+
data[:message] = message if message
|
|
187
|
+
data[:type] = type if type
|
|
188
|
+
data[:url] = url if url
|
|
189
|
+
data = data.merge(other) if other
|
|
190
|
+
return data
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def self.build_log_data(log_level, message, user: nil, type: nil, url: nil, other: nil)
|
|
194
|
+
self.instance.build_log_data(log_level, message, user: user, type: type, url: url, other: other)
|
|
195
|
+
end
|
|
196
|
+
|
|
175
197
|
protected
|
|
176
198
|
|
|
177
|
-
def log_message(log_level, message, scope:, user:, type:, url:)
|
|
199
|
+
def log_message(log_level, message, scope:, user:, type:, url:, other: nil, &block)
|
|
178
200
|
@@mutex.synchronize do
|
|
179
|
-
|
|
180
|
-
# timestamp iso8601 with 6 decimal places to match the python output format
|
|
181
|
-
data = { time: time.to_nsec_from_epoch, '@timestamp' => time.iso8601(6), level: log_level }
|
|
182
|
-
data[:microservice_name] = @microservice_name if @microservice_name
|
|
183
|
-
data[:detail] = @detail_string if @detail_string
|
|
184
|
-
data[:user] = user if user # EE: If a user is passed, put its name. Don't include user data if no user was passed.
|
|
185
|
-
if block_given?
|
|
186
|
-
message = yield
|
|
187
|
-
end
|
|
188
|
-
data[:container_name] = @container_name
|
|
189
|
-
data[:message] = message
|
|
190
|
-
data[:type] = type
|
|
191
|
-
data[:url] = url if url
|
|
201
|
+
data = build_log_data(log_level, message, user: user, type: type, url: url, other: other, &block)
|
|
192
202
|
if @stdout
|
|
193
203
|
case log_level
|
|
194
204
|
when WARN_LEVEL, ERROR_LEVEL, FATAL_LEVEL
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
# Note: This file has been completely reimplemented post version 5.3.0
|
|
20
20
|
|
|
21
21
|
require 'openc3/models/metric_model'
|
|
22
|
-
require 'thread'
|
|
23
22
|
|
|
24
23
|
module OpenC3
|
|
25
24
|
class Metric
|
|
@@ -77,7 +76,7 @@ module OpenC3
|
|
|
77
76
|
end
|
|
78
77
|
|
|
79
78
|
def set_multiple(data)
|
|
80
|
-
@mutex.
|
|
79
|
+
@mutex.synchronize do
|
|
81
80
|
@data.merge!(data)
|
|
82
81
|
end
|
|
83
82
|
end
|
|
@@ -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/core_ext/matrix'
|
|
@@ -38,7 +38,7 @@ module OpenC3
|
|
|
38
38
|
@data = array.clone
|
|
39
39
|
elsif array.length == 3 and angle
|
|
40
40
|
a = 0.5 * angle
|
|
41
|
-
s = sin(a) / sqrt(array[0] * array[0] + array[1] * array[1] + array[2] * array[2])
|
|
41
|
+
s = sin(a) / sqrt((array[0] * array[0]) + (array[1] * array[1]) + (array[2] * array[2]))
|
|
42
42
|
@data = []
|
|
43
43
|
@data[0] = array[0] * s
|
|
44
44
|
@data[1] = array[1] * s
|
|
@@ -116,7 +116,7 @@ module OpenC3
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
# @param other [Quaternion] Quaternion to multiply with
|
|
119
|
-
# @return [Quaternion] New quaternion resulting from the
|
|
119
|
+
# @return [Quaternion] New quaternion resulting from the multiplication
|
|
120
120
|
def *(other)
|
|
121
121
|
q = Quaternion.new()
|
|
122
122
|
|
|
@@ -141,7 +141,7 @@ module OpenC3
|
|
|
141
141
|
|
|
142
142
|
# @return [Quaternion] The normalized version of the current quaternion
|
|
143
143
|
def normalize
|
|
144
|
-
t = @data[0] * @data[0] + @data[1] * @data[1] + @data[2] * @data[2] + @data[3] * @data[3]
|
|
144
|
+
t = (@data[0] * @data[0]) + (@data[1] * @data[1]) + (@data[2] * @data[2]) + (@data[3] * @data[3])
|
|
145
145
|
if t > 0.0
|
|
146
146
|
f = 1.0 / sqrt(t)
|
|
147
147
|
@data[0] *= f
|
|
@@ -162,7 +162,7 @@ module OpenC3
|
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
def self.arc(f, t)
|
|
165
|
-
dot = f[0] * t[0] + f[1] * t[1] + f[2] * t[2]
|
|
165
|
+
dot = (f[0] * t[0]) + (f[1] * t[1]) + (f[2] * t[2])
|
|
166
166
|
if dot > 0.999999
|
|
167
167
|
x = 0.0
|
|
168
168
|
y = 0.0
|
|
@@ -170,20 +170,20 @@ module OpenC3
|
|
|
170
170
|
w = 1.0
|
|
171
171
|
elsif dot < -0.999999
|
|
172
172
|
if (f.z.abs < f.x.abs) && (f.z.abs < f.y.abs)
|
|
173
|
-
x = f[0] * f[2] - f[2] * f[1]
|
|
174
|
-
y = f[2] * f[0] + f[1] * f[2]
|
|
175
|
-
z = -f[1] * f[1] - f[0] * f[0]
|
|
173
|
+
x = (f[0] * f[2]) - (f[2] * f[1])
|
|
174
|
+
y = (f[2] * f[0]) + (f[1] * f[2])
|
|
175
|
+
z = (-f[1] * f[1]) - (f[0] * f[0])
|
|
176
176
|
elsif f.y.abs < f.x.abs
|
|
177
|
-
x = f[1] * f[2] - f[0] * f[1]
|
|
178
|
-
y = f[0] * f[0] + f[2] * f[2]
|
|
179
|
-
z = -f[2] * f[1] - f[1] * f[0]
|
|
177
|
+
x = (f[1] * f[2]) - (f[0] * f[1])
|
|
178
|
+
y = (f[0] * f[0]) + (f[2] * f[2])
|
|
179
|
+
z = (-f[2] * f[1]) - (f[1] * f[0])
|
|
180
180
|
else
|
|
181
|
-
x = -f[2] * f[2] - f[1] * f[1]
|
|
182
|
-
y = f[1] * f[0] - f[0] * f[2]
|
|
183
|
-
z = f[0] * f[1] + f[2] * f[0]
|
|
181
|
+
x = (-f[2] * f[2]) - (f[1] * f[1])
|
|
182
|
+
y = (f[1] * f[0]) - (f[0] * f[2])
|
|
183
|
+
z = (f[0] * f[1]) + (f[2] * f[0])
|
|
184
184
|
end
|
|
185
185
|
|
|
186
|
-
dot = x * x + y * y + z * z
|
|
186
|
+
dot = (x * x) + (y * y) + (z * z)
|
|
187
187
|
div = sqrt(dot)
|
|
188
188
|
x /= div
|
|
189
189
|
y /= div
|
|
@@ -191,9 +191,9 @@ module OpenC3
|
|
|
191
191
|
w = 0.0
|
|
192
192
|
else
|
|
193
193
|
div = sqrt((dot + 1.0) * 2.0)
|
|
194
|
-
x = (f[1] * t[2] - f[2] * t[1]) / div
|
|
195
|
-
y = (f[2] * t[0] - f[0] * t[2]) / div
|
|
196
|
-
z = (f[0] * t[1] - f[1] * t[0]) / div
|
|
194
|
+
x = ((f[1] * t[2]) - (f[2] * t[1])) / div
|
|
195
|
+
y = ((f[2] * t[0]) - (f[0] * t[2])) / div
|
|
196
|
+
z = ((f[0] * t[1]) - (f[1] * t[0])) / div
|
|
197
197
|
w = div * 0.5
|
|
198
198
|
end
|
|
199
199
|
return Quaternion.new([x, y, z, w])
|
|
@@ -64,8 +64,8 @@ module OpenC3
|
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
# Concat any remaining modified files (new files not in original target)
|
|
67
|
-
result.
|
|
68
|
-
result.
|
|
67
|
+
result = result.merge(modified)
|
|
68
|
+
result = result.merge(temp.uniq)
|
|
69
69
|
result.sort
|
|
70
70
|
end
|
|
71
71
|
|
|
@@ -154,8 +154,8 @@ module OpenC3
|
|
|
154
154
|
# protected
|
|
155
155
|
|
|
156
156
|
def self.remote_target_files(bucket_client:, prefix:, include_temp: false, path_matchers: nil)
|
|
157
|
-
result =
|
|
158
|
-
temp =
|
|
157
|
+
result = Set.new
|
|
158
|
+
temp = Set.new
|
|
159
159
|
resp = bucket_client.list_objects(
|
|
160
160
|
bucket: ENV['OPENC3_CONFIG_BUCKET'],
|
|
161
161
|
prefix: prefix,
|
data/lib/openc3/version.rb
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# encoding: ascii-8bit
|
|
2
2
|
|
|
3
|
-
OPENC3_VERSION = '5.
|
|
3
|
+
OPENC3_VERSION = '5.19.0'
|
|
4
4
|
module OpenC3
|
|
5
5
|
module Version
|
|
6
6
|
MAJOR = '5'
|
|
7
|
-
MINOR = '
|
|
7
|
+
MINOR = '19'
|
|
8
8
|
PATCH = '0'
|
|
9
9
|
OTHER = ''
|
|
10
|
-
BUILD = '
|
|
10
|
+
BUILD = 'af741bca7c2c591e1bceace639d66ac9e6a21ca4'
|
|
11
11
|
end
|
|
12
|
-
VERSION = '5.
|
|
13
|
-
GEM_VERSION = '5.
|
|
12
|
+
VERSION = '5.19.0'
|
|
13
|
+
GEM_VERSION = '5.19.0'
|
|
14
14
|
end
|
|
@@ -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
|
module OpenC3
|
|
@@ -61,7 +61,7 @@ module OpenC3
|
|
|
61
61
|
# Convert argument into array of longs
|
|
62
62
|
args[index], = [arg].pack("p").unpack(POINTER_TYPE)
|
|
63
63
|
when 'I'
|
|
64
|
-
# Handle
|
|
64
|
+
# Handle integers larger than 2^31 - 1
|
|
65
65
|
args[index], = [arg].pack("I").unpack("i")
|
|
66
66
|
end
|
|
67
67
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "<%= tool_name %>",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.19.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"ng": "ng",
|
|
6
6
|
"start": "ng serve",
|
|
@@ -12,37 +12,37 @@
|
|
|
12
12
|
},
|
|
13
13
|
"private": true,
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@angular/animations": "^
|
|
16
|
-
"@angular/cdk": "^
|
|
17
|
-
"@angular/common": "^
|
|
18
|
-
"@angular/compiler": "^
|
|
19
|
-
"@angular/core": "^
|
|
20
|
-
"@angular/forms": "^
|
|
21
|
-
"@angular/material": "
|
|
22
|
-
"@angular/platform-browser": "^
|
|
23
|
-
"@angular/platform-browser-dynamic": "^
|
|
24
|
-
"@angular/router": "^
|
|
15
|
+
"@angular/animations": "^18.2.6",
|
|
16
|
+
"@angular/cdk": "^18.2.6",
|
|
17
|
+
"@angular/common": "^18.2.6",
|
|
18
|
+
"@angular/compiler": "^18.2.6",
|
|
19
|
+
"@angular/core": "^18.2.6",
|
|
20
|
+
"@angular/forms": "^18.2.6",
|
|
21
|
+
"@angular/material": "18.2.6",
|
|
22
|
+
"@angular/platform-browser": "^18.2.6",
|
|
23
|
+
"@angular/platform-browser-dynamic": "^18.2.6",
|
|
24
|
+
"@angular/router": "^18.2.6",
|
|
25
25
|
"@astrouxds/astro-web-components": "7.22.1",
|
|
26
|
-
"@openc3/tool-common": "5.
|
|
26
|
+
"@openc3/tool-common": "5.19.0",
|
|
27
27
|
"rxjs": "~7.8.0",
|
|
28
28
|
"single-spa": "5.9.5",
|
|
29
|
-
"single-spa-angular": "^9.0
|
|
30
|
-
"tslib": "^2.
|
|
31
|
-
"zone.js": "~0.
|
|
29
|
+
"single-spa-angular": "^9.2.0",
|
|
30
|
+
"tslib": "^2.7.0",
|
|
31
|
+
"zone.js": "~0.15.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@angular-builders/custom-webpack": "
|
|
35
|
-
"@angular-devkit/build-angular": "^
|
|
36
|
-
"@angular/cli": "~
|
|
37
|
-
"@angular/compiler-cli": "^
|
|
34
|
+
"@angular-builders/custom-webpack": "18.0.0",
|
|
35
|
+
"@angular-devkit/build-angular": "^18.2.6",
|
|
36
|
+
"@angular/cli": "~18.2.6",
|
|
37
|
+
"@angular/compiler-cli": "^18.2.6",
|
|
38
38
|
"@types/jasmine": "~5.1.4",
|
|
39
|
-
"jasmine-core": "~5.
|
|
39
|
+
"jasmine-core": "~5.3.0",
|
|
40
40
|
"karma": "~6.4.4",
|
|
41
41
|
"karma-chrome-launcher": "~3.2.0",
|
|
42
42
|
"karma-coverage": "~2.2.0",
|
|
43
43
|
"karma-jasmine": "~5.1.0",
|
|
44
44
|
"karma-jasmine-html-reporter": "~2.1.0",
|
|
45
45
|
"style-loader": "^4.0.0",
|
|
46
|
-
"typescript": "~5.
|
|
46
|
+
"typescript": "~5.6.2"
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"coverage": "cross-env BABEL_ENV=test jest --coverage"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@emotion/react": "^11.
|
|
16
|
+
"@emotion/react": "^11.13.3",
|
|
17
17
|
"@emotion/styled": "^11.11.0",
|
|
18
|
-
"@mui/material": "^
|
|
18
|
+
"@mui/material": "^6.1.1",
|
|
19
19
|
"react": "^18.2.0",
|
|
20
20
|
"react-dom": "^18.2.0",
|
|
21
21
|
"single-spa-react": "^5.1.4"
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@babel/core": "^7.25.2",
|
|
25
25
|
"@babel/eslint-parser": "^7.25.1",
|
|
26
|
-
"@babel/plugin-transform-runtime": "^7.
|
|
27
|
-
"@babel/preset-env": "^7.25.
|
|
26
|
+
"@babel/plugin-transform-runtime": "^7.25.4",
|
|
27
|
+
"@babel/preset-env": "^7.25.4",
|
|
28
28
|
"@babel/preset-react": "^7.23.3",
|
|
29
|
-
"@babel/runtime": "^7.25.
|
|
30
|
-
"@testing-library/jest-dom": "^6.
|
|
31
|
-
"@testing-library/react": "^16.0.
|
|
29
|
+
"@babel/runtime": "^7.25.6",
|
|
30
|
+
"@testing-library/jest-dom": "^6.5.0",
|
|
31
|
+
"@testing-library/react": "^16.0.1",
|
|
32
32
|
"babel-jest": "^29.7.0",
|
|
33
|
-
"concurrently": "^
|
|
33
|
+
"concurrently": "^9.0.1",
|
|
34
34
|
"cross-env": "^7.0.3",
|
|
35
35
|
"eslint": "^8.56.0",
|
|
36
36
|
"eslint-config-prettier": "^9.1.0",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"jest-cli": "^29.7.0",
|
|
42
42
|
"prettier": "^3.1.1",
|
|
43
43
|
"pretty-quick": "^4.0.0",
|
|
44
|
-
"webpack": "^5.
|
|
44
|
+
"webpack": "^5.95.0",
|
|
45
45
|
"webpack-cli": "^5.1.4",
|
|
46
46
|
"webpack-config-single-spa-react": "^4.0.5",
|
|
47
|
-
"webpack-dev-server": "^5.0
|
|
47
|
+
"webpack-dev-server": "^5.1.0",
|
|
48
48
|
"webpack-merge": "^6.0.1"
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -12,36 +12,36 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@astrouxds/astro-web-components": "7.22.1",
|
|
15
|
-
"@openc3/tool-common": "5.
|
|
15
|
+
"@openc3/tool-common": "5.19.0",
|
|
16
16
|
"@smui/button": "^7.0.0-beta.16",
|
|
17
17
|
"@smui/card": "^7.0.0-beta.16",
|
|
18
18
|
"@smui/list": "^7.0.0-beta.16",
|
|
19
19
|
"@smui/menu": "^7.0.0-beta.16",
|
|
20
|
-
"axios": "1.7.
|
|
20
|
+
"axios": "1.7.7",
|
|
21
21
|
"single-spa-svelte": "^2.1.1",
|
|
22
22
|
"sirv-cli": "^2.0.2",
|
|
23
23
|
"svelte-portal": "^2.2.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@babel/core": "^7.25.2",
|
|
27
|
-
"@babel/preset-env": "^7.25.
|
|
28
|
-
"@rollup/plugin-commonjs": "^
|
|
29
|
-
"@rollup/plugin-node-resolve": "^15.
|
|
30
|
-
"@testing-library/jest-dom": "^6.
|
|
27
|
+
"@babel/preset-env": "^7.25.4",
|
|
28
|
+
"@rollup/plugin-commonjs": "^28.0.0",
|
|
29
|
+
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
30
|
+
"@testing-library/jest-dom": "^6.5.0",
|
|
31
31
|
"@testing-library/svelte": "^5.2.1",
|
|
32
32
|
"babel-jest": "^29.7.0",
|
|
33
|
-
"concurrently": "^
|
|
33
|
+
"concurrently": "^9.0.1",
|
|
34
34
|
"jest": "^29.7.0",
|
|
35
|
-
"postcss": "^8.4.
|
|
35
|
+
"postcss": "^8.4.47",
|
|
36
36
|
"prettier": "^3.1.1",
|
|
37
|
-
"prettier-plugin-svelte": "^3.
|
|
38
|
-
"rollup": "^4.
|
|
37
|
+
"prettier-plugin-svelte": "^3.2.7",
|
|
38
|
+
"rollup": "^4.22.4",
|
|
39
39
|
"rollup-plugin-livereload": "^2.0.5",
|
|
40
40
|
"rollup-plugin-postcss": "^4.0.2",
|
|
41
41
|
"rollup-plugin-svelte": "^7.1.6",
|
|
42
42
|
"rollup-plugin-terser": "^7.0.2",
|
|
43
43
|
"smui-theme": "^7.0.0-beta.16",
|
|
44
|
-
"svelte": "^4.2.
|
|
44
|
+
"svelte": "^4.2.19",
|
|
45
45
|
"svelte-jester": "^5.0.0"
|
|
46
46
|
}
|
|
47
47
|
}
|