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