openc3 6.10.4 → 7.0.0.pre.rc2
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 +2 -1
- data/Guardfile +4 -9
- data/LICENSE.md +85 -0
- data/README.md +8 -8
- data/Rakefile +3 -9
- data/bin/cstol_converter +3 -8
- data/bin/openc3cli +64 -35
- data/data/config/command_modifiers.yaml +18 -1
- data/data/config/interface_modifiers.yaml +0 -2
- data/data/config/plugins.yaml +14 -18
- data/data/config/screen.yaml +1 -1
- data/data/config/target.yaml +26 -79
- data/data/config/telemetry_modifiers.yaml +15 -0
- data/data/config/widgets.yaml +32 -32
- data/ext/openc3/ext/array/array.c +4 -9
- data/ext/openc3/ext/buffered_file/buffered_file.c +4 -9
- data/ext/openc3/ext/burst_protocol/burst_protocol.c +3 -8
- data/ext/openc3/ext/config_parser/config_parser.c +2 -7
- data/ext/openc3/ext/crc/crc.c +3 -8
- data/ext/openc3/ext/openc3_io/openc3_io.c +4 -9
- data/ext/openc3/ext/packet/packet.c +7 -9
- data/ext/openc3/ext/platform/platform.c +3 -8
- data/ext/openc3/ext/polynomial_conversion/polynomial_conversion.c +16 -12
- data/ext/openc3/ext/string/string.c +4 -9
- data/ext/openc3/ext/structure/structure.c +5 -9
- data/ext/openc3/ext/tabbed_plots_config/tabbed_plots_config.c +4 -9
- data/ext/openc3/ext/telemetry/telemetry.c +8 -12
- data/lib/cosmos.rb +4 -9
- data/lib/cosmosc2.rb +4 -9
- data/lib/openc3/accessors/accessor.rb +10 -13
- data/lib/openc3/accessors/binary_accessor.rb +18 -17
- data/lib/openc3/accessors/cbor_accessor.rb +3 -8
- data/lib/openc3/accessors/form_accessor.rb +4 -9
- data/lib/openc3/accessors/html_accessor.rb +3 -8
- data/lib/openc3/accessors/http_accessor.rb +4 -9
- data/lib/openc3/accessors/json_accessor.rb +4 -9
- data/lib/openc3/accessors/template_accessor.rb +4 -9
- data/lib/openc3/accessors/xml_accessor.rb +4 -9
- data/lib/openc3/accessors.rb +3 -8
- data/lib/openc3/api/README.md +1 -1
- data/lib/openc3/api/api.rb +3 -8
- data/lib/openc3/api/authorized_api.rb +4 -9
- data/lib/openc3/api/cmd_api.rb +3 -8
- data/lib/openc3/api/config_api.rb +3 -8
- data/lib/openc3/api/interface_api.rb +4 -9
- data/lib/openc3/api/limits_api.rb +3 -8
- data/lib/openc3/api/metrics_api.rb +2 -19
- data/lib/openc3/api/offline_access_api.rb +2 -7
- data/lib/openc3/api/router_api.rb +5 -10
- data/lib/openc3/api/settings_api.rb +3 -8
- data/lib/openc3/api/stash_api.rb +2 -7
- data/lib/openc3/api/target_api.rb +3 -8
- data/lib/openc3/api/tlm_api.rb +15 -38
- data/lib/openc3/bridge/bridge.rb +3 -8
- data/lib/openc3/bridge/bridge_config.rb +5 -10
- data/lib/openc3/bridge/bridge_interface_thread.rb +4 -9
- data/lib/openc3/bridge/bridge_router_thread.rb +4 -9
- data/lib/openc3/ccsds/ccsds_packet.rb +4 -9
- data/lib/openc3/ccsds/ccsds_parser.rb +3 -8
- data/lib/openc3/config/config_parser.rb +3 -8
- data/lib/openc3/config/meta_config_parser.rb +3 -8
- data/lib/openc3/conversions/bit_reverse_conversion.rb +3 -8
- data/lib/openc3/conversions/conversion.rb +3 -8
- data/lib/openc3/conversions/generic_conversion.rb +3 -8
- data/lib/openc3/conversions/ip_read_conversion.rb +3 -8
- data/lib/openc3/conversions/ip_write_conversion.rb +3 -8
- data/lib/openc3/conversions/object_read_conversion.rb +3 -8
- data/lib/openc3/conversions/object_write_conversion.rb +3 -8
- data/lib/openc3/conversions/packet_time_formatted_conversion.rb +4 -9
- data/lib/openc3/conversions/packet_time_seconds_conversion.rb +4 -9
- data/lib/openc3/conversions/polynomial_conversion.rb +6 -8
- data/lib/openc3/conversions/processor_conversion.rb +3 -8
- data/lib/openc3/conversions/received_count_conversion.rb +4 -9
- data/lib/openc3/conversions/received_time_formatted_conversion.rb +4 -9
- data/lib/openc3/conversions/received_time_seconds_conversion.rb +4 -9
- data/lib/openc3/conversions/segmented_polynomial_conversion.rb +6 -8
- data/lib/openc3/conversions/unix_time_conversion.rb +3 -8
- data/lib/openc3/conversions/unix_time_formatted_conversion.rb +3 -8
- data/lib/openc3/conversions/unix_time_seconds_conversion.rb +3 -8
- data/lib/openc3/conversions.rb +3 -8
- data/lib/openc3/core_ext/array.rb +3 -8
- data/lib/openc3/core_ext/binding.rb +4 -9
- data/lib/openc3/core_ext/class.rb +4 -9
- data/lib/openc3/core_ext/exception.rb +3 -8
- data/lib/openc3/core_ext/file.rb +4 -9
- data/lib/openc3/core_ext/io.rb +4 -9
- data/lib/openc3/core_ext/kernel.rb +3 -8
- data/lib/openc3/core_ext/math.rb +4 -9
- data/lib/openc3/core_ext/matrix.rb +4 -9
- data/lib/openc3/core_ext/objectspace.rb +4 -9
- data/lib/openc3/core_ext/openc3_io.rb +4 -9
- data/lib/openc3/core_ext/range.rb +4 -9
- data/lib/openc3/core_ext/socket.rb +4 -9
- data/lib/openc3/core_ext/string.rb +3 -8
- data/lib/openc3/core_ext/stringio.rb +4 -9
- data/lib/openc3/core_ext/tempfile.rb +4 -9
- data/lib/openc3/core_ext/time.rb +3 -8
- data/lib/openc3/core_ext.rb +3 -8
- data/lib/openc3/interfaces/file_interface.rb +3 -8
- data/lib/openc3/interfaces/http_client_interface.rb +3 -8
- data/lib/openc3/interfaces/http_server_interface.rb +3 -8
- data/lib/openc3/interfaces/interface.rb +3 -8
- data/lib/openc3/interfaces/mqtt_interface.rb +3 -8
- data/lib/openc3/interfaces/mqtt_stream_interface.rb +3 -8
- data/lib/openc3/interfaces/protocols/burst_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/cmd_response_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/cobs_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/crc_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/fixed_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/ignore_packet_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/length_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/preidentified_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/slip_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/template_protocol.rb +3 -8
- data/lib/openc3/interfaces/protocols/terminated_protocol.rb +3 -8
- data/lib/openc3/interfaces/serial_interface.rb +3 -8
- data/lib/openc3/interfaces/simulated_target_interface.rb +3 -8
- data/lib/openc3/interfaces/stream_interface.rb +3 -8
- data/lib/openc3/interfaces/tcpip_client_interface.rb +3 -8
- data/lib/openc3/interfaces/tcpip_server_interface.rb +3 -8
- data/lib/openc3/interfaces/udp_interface.rb +3 -8
- data/lib/openc3/interfaces.rb +3 -8
- data/lib/openc3/io/buffered_file.rb +4 -9
- data/lib/openc3/io/io_multiplexer.rb +4 -9
- data/lib/openc3/io/json_api.rb +3 -8
- data/lib/openc3/io/json_api_object.rb +4 -9
- data/lib/openc3/io/json_drb.rb +3 -8
- data/lib/openc3/io/json_drb_object.rb +4 -9
- data/lib/openc3/io/json_drb_rack.rb +4 -9
- data/lib/openc3/io/json_rpc.rb +3 -8
- data/lib/openc3/io/posix_serial_driver.rb +3 -8
- data/lib/openc3/io/serial_driver.rb +3 -8
- data/lib/openc3/io/stderr.rb +4 -9
- data/lib/openc3/io/stdout.rb +4 -9
- data/lib/openc3/io/udp_sockets.rb +3 -8
- data/lib/openc3/io/win32_serial_driver.rb +4 -9
- data/lib/openc3/logs/buffered_packet_log_reader.rb +3 -8
- data/lib/openc3/logs/buffered_packet_log_writer.rb +3 -8
- data/lib/openc3/logs/log_writer.rb +3 -8
- data/lib/openc3/logs/packet_log_constants.rb +3 -8
- data/lib/openc3/logs/packet_log_reader.rb +3 -8
- data/lib/openc3/logs/packet_log_writer.rb +3 -8
- data/lib/openc3/logs/stream_log.rb +3 -8
- data/lib/openc3/logs/stream_log_pair.rb +3 -8
- data/lib/openc3/logs/text_log_writer.rb +3 -8
- data/lib/openc3/logs.rb +3 -8
- data/lib/openc3/microservices/cleanup_microservice.rb +4 -14
- data/lib/openc3/microservices/decom_microservice.rb +3 -8
- data/lib/openc3/microservices/interface_decom_common.rb +3 -8
- data/lib/openc3/microservices/interface_microservice.rb +5 -9
- data/lib/openc3/microservices/log_microservice.rb +3 -8
- data/lib/openc3/microservices/microservice.rb +24 -12
- data/lib/openc3/microservices/multi_microservice.rb +2 -7
- data/lib/openc3/microservices/periodic_microservice.rb +3 -8
- data/lib/openc3/microservices/plugin_microservice.rb +3 -8
- data/lib/openc3/microservices/queue_microservice.rb +3 -8
- data/lib/openc3/microservices/router_microservice.rb +3 -8
- data/lib/openc3/microservices/scope_cleanup_microservice.rb +3 -8
- data/lib/openc3/microservices/text_log_microservice.rb +3 -8
- data/lib/openc3/migrations/20251213120000_reinstall_plugins.rb +45 -0
- data/lib/openc3/migrations/20260204000000_remove_decom_reducer.rb +60 -0
- data/lib/openc3/models/activity_model.rb +4 -8
- data/lib/openc3/models/auth_model.rb +57 -38
- data/lib/openc3/models/cvt_model.rb +203 -62
- data/lib/openc3/models/environment_model.rb +4 -9
- data/lib/openc3/models/gem_model.rb +3 -8
- data/lib/openc3/models/info_model.rb +4 -9
- data/lib/openc3/models/interface_model.rb +6 -10
- data/lib/openc3/models/interface_status_model.rb +4 -9
- data/lib/openc3/models/metadata_model.rb +3 -8
- data/lib/openc3/models/metric_model.rb +3 -8
- data/lib/openc3/models/microservice_model.rb +24 -10
- data/lib/openc3/models/microservice_status_model.rb +3 -8
- data/lib/openc3/models/migration_model.rb +3 -8
- data/lib/openc3/models/model.rb +3 -8
- data/lib/openc3/models/news_model.rb +3 -8
- data/lib/openc3/models/note_model.rb +3 -8
- data/lib/openc3/models/offline_access_model.rb +3 -8
- data/lib/openc3/models/ping_model.rb +4 -9
- data/lib/openc3/models/plugin_model.rb +14 -9
- data/lib/openc3/models/plugin_store_model.rb +21 -17
- data/lib/openc3/models/process_status_model.rb +4 -9
- data/lib/openc3/models/python_package_model.rb +3 -8
- data/lib/openc3/models/queue_model.rb +3 -8
- data/lib/openc3/models/reaction_model.rb +9 -10
- data/lib/openc3/models/router_model.rb +4 -9
- data/lib/openc3/models/router_status_model.rb +4 -9
- data/lib/openc3/models/scope_model.rb +4 -9
- data/lib/openc3/models/script_engine_model.rb +3 -8
- data/lib/openc3/models/script_status_model.rb +3 -8
- data/lib/openc3/models/secret_model.rb +3 -8
- data/lib/openc3/models/setting_model.rb +3 -8
- data/lib/openc3/models/sorted_model.rb +3 -8
- data/lib/openc3/models/stash_model.rb +3 -8
- data/lib/openc3/models/target_model.rb +99 -229
- data/lib/openc3/models/timeline_model.rb +3 -8
- data/lib/openc3/models/tool_config_model.rb +3 -8
- data/lib/openc3/models/tool_model.rb +10 -10
- data/lib/openc3/models/trigger_group_model.rb +3 -8
- data/lib/openc3/models/trigger_model.rb +3 -8
- data/lib/openc3/models/widget_model.rb +3 -8
- data/lib/openc3/operators/microservice_operator.rb +7 -8
- data/lib/openc3/operators/operator.rb +3 -8
- data/lib/openc3/packets/command_validator.rb +3 -8
- data/lib/openc3/packets/commands.rb +32 -14
- data/lib/openc3/packets/json_packet.rb +7 -19
- data/lib/openc3/packets/limits.rb +3 -8
- data/lib/openc3/packets/limits_response.rb +3 -8
- data/lib/openc3/packets/packet.rb +38 -32
- data/lib/openc3/packets/packet_config.rb +23 -13
- data/lib/openc3/packets/packet_item.rb +3 -8
- data/lib/openc3/packets/packet_item_limits.rb +3 -8
- data/lib/openc3/packets/parsers/format_string_parser.rb +3 -8
- data/lib/openc3/packets/parsers/limits_parser.rb +3 -8
- data/lib/openc3/packets/parsers/limits_response_parser.rb +3 -8
- data/lib/openc3/packets/parsers/packet_item_parser.rb +7 -8
- data/lib/openc3/packets/parsers/packet_parser.rb +3 -8
- data/lib/openc3/packets/parsers/processor_parser.rb +3 -8
- data/lib/openc3/packets/parsers/state_parser.rb +3 -8
- data/lib/openc3/packets/parsers/xtce_converter.rb +12 -9
- data/lib/openc3/packets/parsers/xtce_parser.rb +3 -8
- data/lib/openc3/packets/structure.rb +14 -11
- data/lib/openc3/packets/structure_item.rb +4 -9
- data/lib/openc3/packets/telemetry.rb +7 -11
- data/lib/openc3/processors/processor.rb +5 -10
- data/lib/openc3/processors/statistics_processor.rb +4 -9
- data/lib/openc3/processors/watermark_processor.rb +4 -9
- data/lib/openc3/processors.rb +4 -9
- data/lib/openc3/script/api_shared.rb +8 -37
- data/lib/openc3/script/autonomic.rb +3 -8
- data/lib/openc3/script/calendar.rb +3 -8
- data/lib/openc3/script/commands.rb +3 -8
- data/lib/openc3/script/critical_cmd.rb +3 -8
- data/lib/openc3/script/exceptions.rb +4 -9
- data/lib/openc3/script/extract.rb +3 -8
- data/lib/openc3/script/limits.rb +3 -8
- data/lib/openc3/script/metadata.rb +3 -8
- data/lib/openc3/script/packages.rb +3 -8
- data/lib/openc3/script/plugins.rb +3 -8
- data/lib/openc3/script/queue.rb +3 -8
- data/lib/openc3/script/screen.rb +7 -8
- data/lib/openc3/script/script.rb +3 -8
- data/lib/openc3/script/script_runner.rb +3 -8
- data/lib/openc3/script/storage.rb +6 -10
- data/lib/openc3/script/suite.rb +3 -8
- data/lib/openc3/script/suite_results.rb +3 -8
- data/lib/openc3/script/suite_runner.rb +3 -8
- data/lib/openc3/script/tables.rb +3 -8
- data/lib/openc3/script/telemetry.rb +3 -8
- data/lib/openc3/script/web_socket_api.rb +8 -13
- data/lib/openc3/script.rb +4 -9
- data/lib/openc3/script_engines/script_engine.rb +3 -8
- data/lib/openc3/streams/mqtt_stream.rb +3 -8
- data/lib/openc3/streams/serial_stream.rb +3 -8
- data/lib/openc3/streams/stream.rb +3 -8
- data/lib/openc3/streams/tcpip_client_stream.rb +3 -8
- data/lib/openc3/streams/tcpip_socket_stream.rb +3 -8
- data/lib/openc3/streams/web_socket_client_stream.rb +3 -8
- data/lib/openc3/system/system.rb +3 -8
- data/lib/openc3/system/target.rb +3 -8
- data/lib/openc3/system.rb +3 -8
- data/lib/openc3/tools/cmd_tlm_server/api.rb +4 -9
- data/lib/openc3/tools/cmd_tlm_server/interface_thread.rb +3 -8
- data/lib/openc3/tools/table_manager/table.rb +3 -8
- data/lib/openc3/tools/table_manager/table_config.rb +3 -8
- data/lib/openc3/tools/table_manager/table_item.rb +4 -9
- data/lib/openc3/tools/table_manager/table_item_parser.rb +3 -8
- data/lib/openc3/tools/table_manager/table_manager_core.rb +3 -8
- data/lib/openc3/tools/table_manager/table_parser.rb +3 -8
- data/lib/openc3/tools/test_runner/test.rb +4 -9
- data/lib/openc3/top_level.rb +3 -8
- data/lib/openc3/topics/autonomic_topic.rb +4 -9
- data/lib/openc3/topics/calendar_topic.rb +4 -9
- data/lib/openc3/topics/command_decom_topic.rb +14 -17
- data/lib/openc3/topics/command_topic.rb +14 -10
- data/lib/openc3/topics/config_topic.rb +3 -8
- data/lib/openc3/topics/decom_interface_topic.rb +3 -8
- data/lib/openc3/topics/interface_topic.rb +3 -8
- data/lib/openc3/topics/limits_event_topic.rb +3 -8
- data/lib/openc3/topics/notebook_topic.rb +32 -0
- data/lib/openc3/topics/queue_topic.rb +3 -8
- data/lib/openc3/topics/router_topic.rb +3 -8
- data/lib/openc3/topics/system_events_topic.rb +3 -8
- data/lib/openc3/topics/telemetry_decom_topic.rb +12 -12
- data/lib/openc3/topics/telemetry_topic.rb +3 -8
- data/lib/openc3/topics/timeline_topic.rb +4 -9
- data/lib/openc3/topics/topic.rb +3 -8
- data/lib/openc3/utilities/authentication.rb +29 -10
- data/lib/openc3/utilities/authorization.rb +4 -9
- data/lib/openc3/utilities/aws_bucket.rb +126 -16
- data/lib/openc3/utilities/bucket.rb +9 -9
- data/lib/openc3/utilities/bucket_file_cache.rb +3 -13
- data/lib/openc3/utilities/bucket_require.rb +3 -8
- data/lib/openc3/utilities/bucket_utilities.rb +3 -10
- data/lib/openc3/utilities/cli_generator.rb +11 -16
- data/lib/openc3/utilities/cmd_log.rb +3 -8
- data/lib/openc3/utilities/crc.rb +3 -8
- data/lib/openc3/utilities/csv.rb +4 -9
- data/lib/openc3/utilities/local_bucket.rb +5 -10
- data/lib/openc3/utilities/local_mode.rb +14 -18
- data/lib/openc3/utilities/logger.rb +3 -8
- data/lib/openc3/utilities/message_log.rb +3 -8
- data/lib/openc3/utilities/metric.rb +3 -8
- data/lib/openc3/utilities/migration.rb +3 -8
- data/lib/openc3/utilities/open_telemetry.rb +3 -8
- data/lib/openc3/utilities/process_manager.rb +3 -8
- data/lib/openc3/utilities/python_proxy.rb +3 -8
- data/lib/openc3/utilities/quaternion.rb +3 -8
- data/lib/openc3/utilities/questdb_client.rb +210 -0
- data/lib/openc3/utilities/redis_secrets.rb +3 -8
- data/lib/openc3/utilities/ruby_lex_utils.rb +3 -8
- data/lib/openc3/utilities/running_script.rb +13 -11
- data/lib/openc3/utilities/s3_autoload.rb +9 -2
- data/lib/openc3/utilities/secrets.rb +8 -9
- data/lib/openc3/utilities/simulated_target.rb +4 -9
- data/lib/openc3/utilities/sleeper.rb +3 -8
- data/lib/openc3/utilities/store.rb +4 -9
- data/lib/openc3/utilities/store_autoload.rb +7 -14
- data/lib/openc3/utilities/store_queued.rb +6 -9
- data/lib/openc3/utilities/target_file.rb +3 -8
- data/lib/openc3/utilities/thread_manager.rb +3 -8
- data/lib/openc3/utilities/throttle.rb +3 -8
- data/lib/openc3/utilities/zip.rb +4 -9
- data/lib/openc3/utilities.rb +4 -9
- data/lib/openc3/version.rb +8 -8
- data/lib/openc3/win32/excel.rb +4 -9
- data/lib/openc3/win32/win32.rb +4 -9
- data/lib/openc3/win32/win32_main.rb +3 -8
- data/lib/openc3.rb +3 -12
- data/tasks/gemfile_stats.rake +4 -9
- data/tasks/spec.rake +4 -9
- data/templates/plugin/README.md +2 -2
- data/templates/plugin/plugin.gemspec +1 -1
- data/templates/tool_angular/package.json +1 -1
- data/templates/tool_vue/package.json +3 -3
- data/templates/tool_vue/vite.config.js +2 -1
- data/templates/widget/package.json +3 -3
- data/templates/widget/vite.config.js +1 -1
- metadata +49 -26
- data/LICENSE.txt +0 -729
- data/bin/rubysloc +0 -142
- data/ext/openc3/ext/reducer_microservice/extconf.rb +0 -13
- data/ext/openc3/ext/reducer_microservice/reducer_microservice.c +0 -165
- data/lib/openc3/microservices/reducer_microservice.rb +0 -640
- data/lib/openc3/models/reducer_model.rb +0 -72
- data/lib/openc3/topics/telemetry_reduced_topics.rb +0 -80
- /data/templates/plugin/{LICENSE.txt → LICENSE.md} +0 -0
- /data/templates/widget/{LICENSE.txt → LICENSE.md} +0 -0
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -53,9 +48,13 @@ module OpenC3
|
|
|
53
48
|
if microservice_config["needs_dependencies"]
|
|
54
49
|
env['GEM_HOME'] = '/gems'
|
|
55
50
|
env['PYTHONUSERBASE'] = '/gems/python_packages'
|
|
51
|
+
# Ensure PYTHONPATH includes both the UV venv (for base openc3 module) and user packages
|
|
52
|
+
# This is critical for UV-based Python installations where openc3 is installed as editable
|
|
53
|
+
env['PYTHONPATH'] = "#{ENV['PYTHONPATH']}"
|
|
56
54
|
else
|
|
57
55
|
env['GEM_HOME'] = nil
|
|
58
56
|
env['PYTHONUSERBASE'] = nil
|
|
57
|
+
env['PYTHONPATH'] = nil
|
|
59
58
|
end
|
|
60
59
|
env['OPENC3_MICROSERVICE_NAME'] = microservice_name
|
|
61
60
|
container = microservice_config["container"]
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
# encoding: ascii-8bit
|
|
2
2
|
|
|
3
|
-
# Copyright
|
|
3
|
+
# Copyright 2026 OpenC3, Inc.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# This file may also be used under the terms of a commercial license
|
|
17
12
|
# if purchased from OpenC3, Inc.
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -190,9 +185,15 @@ module OpenC3
|
|
|
190
185
|
target_upcase = target_name.to_s.upcase
|
|
191
186
|
packet_upcase = packet_name.to_s.upcase
|
|
192
187
|
|
|
193
|
-
# Lookup the command
|
|
194
|
-
|
|
195
|
-
|
|
188
|
+
# Lookup the command directly - avoid redundant upcase in packet()/packets()
|
|
189
|
+
target_packets = @config.commands[target_upcase]
|
|
190
|
+
raise "Command target '#{target_upcase}' does not exist" unless target_packets
|
|
191
|
+
pkt = target_packets[packet_upcase]
|
|
192
|
+
raise "Command packet '#{target_upcase} #{packet_upcase}' does not exist" unless pkt
|
|
193
|
+
# Use deep_copy to avoid shared item modifications affecting the template
|
|
194
|
+
# This is critical for variable_bit_size items where handle_write_variable_bit_size
|
|
195
|
+
# modifies item.bit_offset and item.array_size during writes
|
|
196
|
+
command = pkt.deep_copy
|
|
196
197
|
|
|
197
198
|
# Restore the command's buffer to a zeroed string of defined length
|
|
198
199
|
# This will undo any side effects from earlier commands that may have altered the size
|
|
@@ -294,8 +295,25 @@ module OpenC3
|
|
|
294
295
|
|
|
295
296
|
def set_parameters(command, params, range_checking)
|
|
296
297
|
given_item_names = []
|
|
298
|
+
|
|
299
|
+
# Identify length fields that are auto-managed by variable_bit_size arrays
|
|
300
|
+
# These should not be written directly - the array write will auto-update them
|
|
301
|
+
auto_length_fields = Set.new
|
|
302
|
+
command.sorted_items.each do |item|
|
|
303
|
+
if item.variable_bit_size
|
|
304
|
+
auto_length_fields << item.variable_bit_size['length_item_name'].upcase
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
297
308
|
params.each do |item_name, value|
|
|
298
309
|
item_upcase = item_name.to_s.upcase
|
|
310
|
+
|
|
311
|
+
# Skip auto-managed length fields - they will be set when the array is written
|
|
312
|
+
if auto_length_fields.include?(item_upcase)
|
|
313
|
+
given_item_names << item_upcase
|
|
314
|
+
next
|
|
315
|
+
end
|
|
316
|
+
|
|
299
317
|
item = command.get_item(item_upcase)
|
|
300
318
|
range_check_value = value
|
|
301
319
|
|
|
@@ -327,11 +345,11 @@ module OpenC3
|
|
|
327
345
|
end
|
|
328
346
|
end
|
|
329
347
|
|
|
330
|
-
# Update parameter in command
|
|
348
|
+
# Update parameter in command - use write_item directly to avoid redundant get_item call
|
|
331
349
|
if command.raw
|
|
332
|
-
command.
|
|
350
|
+
command.write_item(item, value, :RAW)
|
|
333
351
|
else
|
|
334
|
-
command.
|
|
352
|
+
command.write_item(item, value, :CONVERTED)
|
|
335
353
|
end
|
|
336
354
|
|
|
337
355
|
given_item_names << item_upcase
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -77,7 +72,9 @@ module OpenC3
|
|
|
77
72
|
end
|
|
78
73
|
end
|
|
79
74
|
if reduced_type
|
|
80
|
-
|
|
75
|
+
if value_type == :FORMATTED or value_type == :WITH_UNITS
|
|
76
|
+
raise "Reduced types only support RAW or CONVERTED value types: #{value_type} unsupported"
|
|
77
|
+
end
|
|
81
78
|
if value_type == :CONVERTED
|
|
82
79
|
case reduced_type
|
|
83
80
|
when :AVG
|
|
@@ -109,13 +106,6 @@ module OpenC3
|
|
|
109
106
|
return value
|
|
110
107
|
end
|
|
111
108
|
end
|
|
112
|
-
if value_type == :WITH_UNITS
|
|
113
|
-
value = @json_hash["#{name}__U"]
|
|
114
|
-
if value
|
|
115
|
-
value = value[array_index] if array_index
|
|
116
|
-
return value
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
109
|
if value_type == :WITH_UNITS or value_type == :FORMATTED
|
|
120
110
|
value = @json_hash["#{name}__F"]
|
|
121
111
|
if value
|
|
@@ -197,10 +187,8 @@ module OpenC3
|
|
|
197
187
|
postfix = ''
|
|
198
188
|
when :CONVERTED
|
|
199
189
|
postfix = 'C'
|
|
200
|
-
when :FORMATTED
|
|
190
|
+
when :FORMATTED, :WITH_UNITS
|
|
201
191
|
postfix = 'F'
|
|
202
|
-
when :WITH_UNITS
|
|
203
|
-
postfix = 'U'
|
|
204
192
|
end
|
|
205
193
|
case reduced_type
|
|
206
194
|
when :MIN
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -3,15 +3,10 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
12
|
# All changes Copyright 2026, OpenC3, Inc.
|
|
@@ -32,7 +27,8 @@ module OpenC3
|
|
|
32
27
|
# Packet adds is the ability to apply formatting to PacketItem values as well
|
|
33
28
|
# as managing PacketItem's limit states.
|
|
34
29
|
class Packet < Structure
|
|
35
|
-
RESERVED_ITEM_NAMES = ['PACKET_TIMESECONDS'.freeze, 'PACKET_TIMEFORMATTED'.freeze, 'RECEIVED_TIMESECONDS'.freeze,
|
|
30
|
+
RESERVED_ITEM_NAMES = Set['PACKET_TIMESECONDS'.freeze, 'PACKET_TIMEFORMATTED'.freeze, 'RECEIVED_TIMESECONDS'.freeze,
|
|
31
|
+
'RECEIVED_TIMEFORMATTED'.freeze, 'RECEIVED_COUNT'.freeze, 'COSMOS_DATA_TAG'.freeze, 'COSMOS_EXTRA'.freeze].freeze
|
|
36
32
|
ANY_STATE = 'ANY'
|
|
37
33
|
|
|
38
34
|
# @return [String] Name of the target this packet is associated with
|
|
@@ -119,8 +115,11 @@ module OpenC3
|
|
|
119
115
|
# @return [Subpacketizer] Subpacketizer class (optional)
|
|
120
116
|
attr_accessor :subpacketizer
|
|
121
117
|
|
|
118
|
+
# @return [Boolean] Catchall flag - Used to prevent warnings for catchall packets
|
|
119
|
+
attr_accessor :catchall
|
|
120
|
+
|
|
122
121
|
# Valid format types
|
|
123
|
-
VALUE_TYPES = [:RAW, :CONVERTED, :FORMATTED
|
|
122
|
+
VALUE_TYPES = [:RAW, :CONVERTED, :FORMATTED]
|
|
124
123
|
|
|
125
124
|
if RUBY_ENGINE != 'ruby' or ENV['OPENC3_NO_EXT']
|
|
126
125
|
# Creates a new packet by initializing the attributes.
|
|
@@ -165,6 +164,7 @@ module OpenC3
|
|
|
165
164
|
@subpacket = false
|
|
166
165
|
@subpacketizer = nil
|
|
167
166
|
@obfuscated_items = nil
|
|
167
|
+
@catchall = false
|
|
168
168
|
end
|
|
169
169
|
|
|
170
170
|
# Sets the target name this packet is associated with. Unidentified packets
|
|
@@ -219,7 +219,7 @@ module OpenC3
|
|
|
219
219
|
if !(Time === received_time)
|
|
220
220
|
raise(ArgumentError, "received_time must be a Time but is a #{received_time.class}")
|
|
221
221
|
end
|
|
222
|
-
@received_time = received_time
|
|
222
|
+
@received_time = received_time
|
|
223
223
|
else
|
|
224
224
|
@received_time = nil
|
|
225
225
|
end
|
|
@@ -602,7 +602,7 @@ module OpenC3
|
|
|
602
602
|
cloned_item = sorted_item.clone
|
|
603
603
|
cloned_item.key = cloned_item.name
|
|
604
604
|
cloned_item.name = "#{item.name}.#{cloned_item.name}"
|
|
605
|
-
cloned_item.parent_item = item
|
|
605
|
+
cloned_item.parent_item = item.name
|
|
606
606
|
cloned_item.bit_offset = item.bit_offset
|
|
607
607
|
if sorted_item.bit_size <= 0
|
|
608
608
|
cloned_item.bit_size = item.bit_size
|
|
@@ -625,9 +625,10 @@ module OpenC3
|
|
|
625
625
|
# Must be one of {VALUE_TYPES}
|
|
626
626
|
# @param buffer (see Structure#read_item)
|
|
627
627
|
# @param given_raw Given raw value to optimize
|
|
628
|
-
# @return The value
|
|
629
|
-
#
|
|
630
|
-
#
|
|
628
|
+
# @return The value
|
|
629
|
+
# :FORMATTED values are always returned as Strings
|
|
630
|
+
# :RAW values will match their data_type
|
|
631
|
+
# :CONVERTED values can be any type
|
|
631
632
|
def read_item(item, value_type = :CONVERTED, buffer = @buffer, given_raw = nil)
|
|
632
633
|
if given_raw
|
|
633
634
|
# Must clone this since value is returned
|
|
@@ -733,7 +734,7 @@ module OpenC3
|
|
|
733
734
|
value_type = value_type.simple_formatted unless value_type.is_printable?
|
|
734
735
|
value_type += '...'
|
|
735
736
|
end
|
|
736
|
-
raise ArgumentError, "Unknown value type '#{value_type}', must be :RAW, :CONVERTED
|
|
737
|
+
raise ArgumentError, "Unknown value type '#{value_type}', must be :RAW, :CONVERTED or :FORMATTED"
|
|
737
738
|
end
|
|
738
739
|
return value
|
|
739
740
|
end
|
|
@@ -803,7 +804,7 @@ module OpenC3
|
|
|
803
804
|
value_type = value_type.simple_formatted unless value_type.is_printable?
|
|
804
805
|
value_type += '...'
|
|
805
806
|
end
|
|
806
|
-
raise ArgumentError, "Unknown value type '#{value_type}', must be :RAW, :CONVERTED
|
|
807
|
+
raise ArgumentError, "Unknown value type '#{value_type}', must be :RAW, :CONVERTED or :FORMATTED"
|
|
807
808
|
end
|
|
808
809
|
if @read_conversion_cache
|
|
809
810
|
synchronize() do
|
|
@@ -1048,6 +1049,9 @@ module OpenC3
|
|
|
1048
1049
|
if item.limits.enabled
|
|
1049
1050
|
value = read_item(item)
|
|
1050
1051
|
|
|
1052
|
+
# Skip limits checking if value is nil (item outside buffer bounds)
|
|
1053
|
+
next if value.nil?
|
|
1054
|
+
|
|
1051
1055
|
# Handle state monitoring and value monitoring differently
|
|
1052
1056
|
if item.states
|
|
1053
1057
|
handle_limits_states(item, value)
|
|
@@ -1094,7 +1098,7 @@ module OpenC3
|
|
|
1094
1098
|
end
|
|
1095
1099
|
end
|
|
1096
1100
|
packet.instance_variable_set("@read_conversion_cache".freeze, nil)
|
|
1097
|
-
packet.extra =
|
|
1101
|
+
packet.extra = packet.extra.deep_dup if packet.extra
|
|
1098
1102
|
packet
|
|
1099
1103
|
end
|
|
1100
1104
|
alias dup clone
|
|
@@ -1136,13 +1140,13 @@ module OpenC3
|
|
|
1136
1140
|
if @validator
|
|
1137
1141
|
config << " VALIDATOR #{@validator.class} #{@validator.args.map { |a| a.to_s.quote_if_necessary }.join(" ")}\n"
|
|
1138
1142
|
end
|
|
1139
|
-
# TODO: Add TEMPLATE_ENCODED so this can always be done inline regardless of content
|
|
1140
1143
|
if @template
|
|
1141
|
-
config << "
|
|
1144
|
+
config << " TEMPLATE_BASE64 #{Base64.strict_encode64(@template)}\n"
|
|
1142
1145
|
end
|
|
1143
1146
|
config << " ALLOW_SHORT\n" if @short_buffer_allowed
|
|
1144
1147
|
config << " HAZARDOUS #{@hazardous_description.to_s.quote_if_necessary}\n" if @hazardous
|
|
1145
1148
|
config << " DISABLE_MESSAGES\n" if @messages_disabled
|
|
1149
|
+
config << " CATCHALL" if @catchall
|
|
1146
1150
|
if @virtual
|
|
1147
1151
|
config << " VIRTUAL\n"
|
|
1148
1152
|
elsif @disabled
|
|
@@ -1213,6 +1217,7 @@ module OpenC3
|
|
|
1213
1217
|
config['hazardous'] = true if @hazardous
|
|
1214
1218
|
config['hazardous_description'] = @hazardous_description.to_s if @hazardous_description
|
|
1215
1219
|
config['messages_disabled'] = true if @messages_disabled
|
|
1220
|
+
config['catchall'] = true if @catchall
|
|
1216
1221
|
config['disabled'] = true if @disabled
|
|
1217
1222
|
config['hidden'] = true if @hidden
|
|
1218
1223
|
config['virtual'] = true if @virtual
|
|
@@ -1222,7 +1227,7 @@ module OpenC3
|
|
|
1222
1227
|
config['accessor'] = @accessor.class.to_s
|
|
1223
1228
|
config['accessor_args'] = @accessor.args
|
|
1224
1229
|
config['validator'] = @validator.class.to_s if @validator
|
|
1225
|
-
config['template'] = Base64.
|
|
1230
|
+
config['template'] = Base64.strict_encode64(@template) if @template
|
|
1226
1231
|
config['config_name'] = self.config_name
|
|
1227
1232
|
config['obfuscated_items'] = @obfuscated_items&.map(&:name) || []
|
|
1228
1233
|
|
|
@@ -1283,24 +1288,22 @@ module OpenC3
|
|
|
1283
1288
|
# Read all the RAW at once because this could be optimized by the accessor
|
|
1284
1289
|
json_hash = read_items(@sorted_items)
|
|
1285
1290
|
|
|
1286
|
-
# Decom extra into the values (all raw)
|
|
1287
|
-
if @extra
|
|
1288
|
-
@extra.each do |key, value|
|
|
1289
|
-
json_hash[key.upcase] = value
|
|
1290
|
-
end
|
|
1291
|
-
end
|
|
1292
|
-
|
|
1293
1291
|
# Now read all other value types - no accessor required
|
|
1294
1292
|
@sorted_items.each do |item|
|
|
1295
1293
|
if item.hidden
|
|
1296
1294
|
json_hash.delete(item.name)
|
|
1297
1295
|
else
|
|
1298
1296
|
given_raw = json_hash[item.name]
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1297
|
+
if item.states or (item.read_conversion and item.data_type != :DERIVED)
|
|
1298
|
+
json_hash["#{item.name}__C"] = read_item(item, :CONVERTED, @buffer, given_raw)
|
|
1299
|
+
end
|
|
1300
|
+
if item.format_string or item.units
|
|
1301
|
+
json_hash["#{item.name}__F"] = read_item(item, :FORMATTED, @buffer, given_raw)
|
|
1302
|
+
end
|
|
1302
1303
|
limits_state = item.limits.state
|
|
1303
|
-
|
|
1304
|
+
if limits_state
|
|
1305
|
+
json_hash["#{item.name}__L"] = limits_state
|
|
1306
|
+
end
|
|
1304
1307
|
end
|
|
1305
1308
|
end
|
|
1306
1309
|
|
|
@@ -1520,14 +1523,17 @@ module OpenC3
|
|
|
1520
1523
|
end
|
|
1521
1524
|
|
|
1522
1525
|
def apply_format_string_and_units(item, value, value_type)
|
|
1526
|
+
# Return nil as-is - can't format a value that doesn't exist
|
|
1527
|
+
return nil if value.nil?
|
|
1528
|
+
|
|
1523
1529
|
if value_type == :FORMATTED or value_type == :WITH_UNITS
|
|
1524
1530
|
if item.format_string && value
|
|
1525
1531
|
value = sprintf(item.format_string, value)
|
|
1526
1532
|
else
|
|
1527
1533
|
value = value.to_s
|
|
1528
1534
|
end
|
|
1535
|
+
value << ' ' << item.units if item.units
|
|
1529
1536
|
end
|
|
1530
|
-
value = "#{value} #{item.units}" if value_type == :WITH_UNITS and item.units
|
|
1531
1537
|
value
|
|
1532
1538
|
end
|
|
1533
1539
|
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|
|
@@ -35,6 +30,7 @@ require 'openc3/utilities/python_proxy'
|
|
|
35
30
|
require 'openc3/conversions'
|
|
36
31
|
require 'openc3/processors'
|
|
37
32
|
require 'openc3/accessors'
|
|
33
|
+
require 'base64'
|
|
38
34
|
require 'nokogiri'
|
|
39
35
|
require 'ostruct'
|
|
40
36
|
require 'fileutils'
|
|
@@ -244,7 +240,7 @@ module OpenC3
|
|
|
244
240
|
'PARAMETER', 'ID_ITEM', 'ID_PARAMETER', 'ARRAY_ITEM', 'ARRAY_PARAMETER', 'APPEND_ITEM',\
|
|
245
241
|
'APPEND_PARAMETER', 'APPEND_ID_ITEM', 'APPEND_ID_PARAMETER', 'APPEND_ARRAY_ITEM',\
|
|
246
242
|
'APPEND_ARRAY_PARAMETER', 'ALLOW_SHORT', 'HAZARDOUS', 'PROCESSOR', 'META',\
|
|
247
|
-
'DISABLE_MESSAGES', 'HIDDEN', 'DISABLED', 'VIRTUAL', 'RESTRICTED', 'ACCESSOR', 'TEMPLATE', 'TEMPLATE_FILE',\
|
|
243
|
+
'DISABLE_MESSAGES', 'HIDDEN', 'DISABLED', 'VIRTUAL', 'CATCHALL', 'RESTRICTED', 'ACCESSOR', 'TEMPLATE', 'TEMPLATE_BASE64', 'TEMPLATE_FILE',\
|
|
248
244
|
'RESPONSE', 'ERROR_RESPONSE', 'SCREEN', 'RELATED_ITEM', 'IGNORE_OVERLAP', 'VALIDATOR', 'SUBPACKET', 'SUBPACKETIZER',\
|
|
249
245
|
'STRUCTURE', 'APPEND_STRUCTURE'
|
|
250
246
|
raise parser.error("No current packet for #{keyword}") unless @current_packet
|
|
@@ -341,6 +337,10 @@ module OpenC3
|
|
|
341
337
|
finish_item()
|
|
342
338
|
if @current_packet
|
|
343
339
|
@warnings += @current_packet.check_bit_offsets
|
|
340
|
+
if !@current_packet.virtual && !@current_packet.disabled && !@current_packet.catchall && @current_packet.target_name != 'UNKNOWN' && @current_packet.id_items.empty?
|
|
341
|
+
type = @current_cmd_or_tlm == COMMAND ? "Command" : "Telemetry"
|
|
342
|
+
@warnings << "#{type} packet #{@current_packet.target_name} #{@current_packet.packet_name} has no ID_ITEMS and will match all buffers"
|
|
343
|
+
end
|
|
344
344
|
if @current_cmd_or_tlm == COMMAND
|
|
345
345
|
PacketParser.check_item_data_types(@current_packet)
|
|
346
346
|
@commands[@current_packet.target_name][@current_packet.packet_name] = @current_packet
|
|
@@ -493,8 +493,8 @@ module OpenC3
|
|
|
493
493
|
'APPEND_ARRAY_ITEM', 'APPEND_ARRAY_PARAMETER', 'STRUCTURE', 'APPEND_STRUCTURE'
|
|
494
494
|
start_item(parser)
|
|
495
495
|
|
|
496
|
-
# Allow this packet to be received with less data than the defined length
|
|
497
|
-
#
|
|
496
|
+
# Allow this packet to be received with less data than the defined length.
|
|
497
|
+
# Items that are beyond the buffer will return nil when read.
|
|
498
498
|
when 'ALLOW_SHORT'
|
|
499
499
|
@current_packet.short_buffer_allowed = true
|
|
500
500
|
|
|
@@ -568,6 +568,11 @@ module OpenC3
|
|
|
568
568
|
parser.verify_num_parameters(0, 0, usage)
|
|
569
569
|
@current_packet.restricted = true
|
|
570
570
|
|
|
571
|
+
when 'CATCHALL'
|
|
572
|
+
usage = "#{keyword}"
|
|
573
|
+
parser.verify_num_parameters(0, 0, usage)
|
|
574
|
+
@current_packet.catchall = true
|
|
575
|
+
|
|
571
576
|
when 'ACCESSOR', 'VALIDATOR', 'SUBPACKETIZER'
|
|
572
577
|
usage = "#{keyword} <Class name> <Optional parameters> ..."
|
|
573
578
|
parser.verify_num_parameters(1, nil, usage)
|
|
@@ -594,14 +599,19 @@ module OpenC3
|
|
|
594
599
|
when 'TEMPLATE'
|
|
595
600
|
usage = "#{keyword} <Template string>"
|
|
596
601
|
parser.verify_num_parameters(1, 1, usage)
|
|
597
|
-
@current_packet.template = params[0]
|
|
602
|
+
@current_packet.template = params[0].force_encoding('ascii-8bit')
|
|
603
|
+
|
|
604
|
+
when 'TEMPLATE_BASE64'
|
|
605
|
+
usage = "#{keyword} <Template string>"
|
|
606
|
+
parser.verify_num_parameters(1, 1, usage)
|
|
607
|
+
@current_packet.template = Base64.decode64(params[0])
|
|
598
608
|
|
|
599
609
|
when 'TEMPLATE_FILE'
|
|
600
610
|
usage = "#{keyword} <Template file path>"
|
|
601
611
|
parser.verify_num_parameters(1, 1, usage)
|
|
602
612
|
|
|
603
613
|
begin
|
|
604
|
-
@current_packet.template = parser.read_file(params[0])
|
|
614
|
+
@current_packet.template = parser.read_file(params[0]).force_encoding('ascii-8bit')
|
|
605
615
|
rescue Exception => e
|
|
606
616
|
raise parser.error(e.formatted)
|
|
607
617
|
end
|
|
@@ -3,18 +3,13 @@
|
|
|
3
3
|
# Copyright 2022 Ball Aerospace & Technologies Corp.
|
|
4
4
|
# All Rights Reserved.
|
|
5
5
|
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU Affero General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
#
|
|
11
6
|
# This program is distributed in the hope that it will be useful,
|
|
12
7
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
14
|
-
#
|
|
8
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
9
|
+
# See LICENSE.md for more details.
|
|
15
10
|
|
|
16
11
|
# Modified by OpenC3, Inc.
|
|
17
|
-
# All changes Copyright
|
|
12
|
+
# All changes Copyright 2026, OpenC3, Inc.
|
|
18
13
|
# All Rights Reserved
|
|
19
14
|
#
|
|
20
15
|
# This file may also be used under the terms of a commercial license
|