cosmos 4.1.1-java → 4.2.0-java
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/.gitignore +0 -2
- data/.travis.yml +2 -0
- data/.yardopts +1 -0
- data/Gemfile +1 -0
- data/Manifest.txt +130 -0
- data/autohotkey/tools/ConfigEditorAHK +19 -0
- data/autohotkey/tools/cmd_extractor.ahk +4 -4
- data/autohotkey/tools/cmd_sequence.ahk +9 -5
- data/autohotkey/tools/config_editor.ahk +197 -0
- data/autohotkey/tools/packet_viewer.ahk +12 -6
- data/autohotkey/tools/replay.ahk +29 -29
- data/autohotkey/tools/script_runner.ahk +10 -2
- data/autohotkey/tools/tlm_extractor.ahk +7 -8
- data/autohotkey/tools/tlm_grapher.ahk +21 -9
- data/bin/dart_import +2 -0
- data/cosmos.gemspec +18 -16
- data/data/config/cmd_tlm_server.yaml +9 -0
- data/data/config/interface_modifiers.yaml +17 -0
- data/data/config/item_modifiers.yaml +3 -3
- data/data/crc.txt +184 -90
- data/data/dart.png +0 -0
- data/demo/Gemfile +1 -0
- data/demo/Rakefile +4 -0
- data/demo/config/dart/Gemfile +54 -0
- data/demo/config/data/crc.txt +28 -21
- data/demo/config/system/system.txt +3 -0
- data/demo/config/system/system2.txt +3 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +3 -3
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -1
- data/demo/config/targets/INST/lib/sim_inst.rb +1 -1
- data/demo/config/targets/INST/screens/adcs.txt +2 -1
- data/demo/config/targets/INST/screens/array.txt +1 -1
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +7 -2
- data/demo/config/targets/INST/screens/graphs.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +1 -1
- data/demo/config/targets/INST/screens/hs.txt +2 -1
- data/demo/config/targets/INST/screens/latest.txt +1 -1
- data/demo/config/targets/INST/screens/limits.txt +1 -1
- data/demo/config/targets/INST/screens/other.txt +1 -1
- data/demo/config/targets/INST/screens/tabs.txt +1 -1
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +3 -1
- data/demo/config/tools/launcher/launcher.txt +3 -2
- data/demo/tools/Dart +16 -0
- data/demo/tools/Dart.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/install/Gemfile +1 -0
- data/install/Rakefile +4 -0
- data/install/config/dart/Gemfile +54 -0
- data/install/config/data/crc.txt +6 -3
- data/install/config/system/system.txt +3 -0
- data/install/config/tools/launcher/launcher.txt +3 -2
- data/install/tools/Dart +16 -0
- data/install/tools/Dart.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/lib/cosmos/core_ext/time.rb +8 -8
- data/lib/cosmos/dart/.rspec +1 -0
- data/lib/cosmos/dart/Gemfile +69 -0
- data/lib/cosmos/dart/Rakefile +7 -0
- data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
- data/lib/cosmos/dart/app/assets/images/.keep +0 -0
- data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
- data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
- data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
- data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
- data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
- data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
- data/lib/cosmos/dart/app/helpers/application_helper.rb +2 -0
- data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
- data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
- data/lib/cosmos/dart/app/models/application_record.rb +3 -0
- data/lib/cosmos/dart/app/models/item.rb +6 -0
- data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
- data/lib/cosmos/dart/app/models/packet.rb +4 -0
- data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
- data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
- data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
- data/lib/cosmos/dart/app/models/system_config.rb +2 -0
- data/lib/cosmos/dart/app/models/target.rb +4 -0
- data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
- data/lib/cosmos/dart/bin/bundle +3 -0
- data/lib/cosmos/dart/bin/rails +4 -0
- data/lib/cosmos/dart/bin/rake +4 -0
- data/lib/cosmos/dart/bin/setup +34 -0
- data/lib/cosmos/dart/bin/update +29 -0
- data/lib/cosmos/dart/config.ru +5 -0
- data/lib/cosmos/dart/config/application.rb +29 -0
- data/lib/cosmos/dart/config/boot.rb +3 -0
- data/lib/cosmos/dart/config/cable.yml +9 -0
- data/lib/cosmos/dart/config/database.yml +23 -0
- data/lib/cosmos/dart/config/environment.rb +5 -0
- data/lib/cosmos/dart/config/environments/development.rb +62 -0
- data/lib/cosmos/dart/config/environments/production.rb +84 -0
- data/lib/cosmos/dart/config/environments/test.rb +42 -0
- data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
- data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
- data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
- data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
- data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
- data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
- data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
- data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
- data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
- data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
- data/lib/cosmos/dart/config/locales/en.yml +23 -0
- data/lib/cosmos/dart/config/puma.rb +47 -0
- data/lib/cosmos/dart/config/routes.rb +3 -0
- data/lib/cosmos/dart/config/secrets.yml +22 -0
- data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
- data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
- data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/schema.rb +103 -0
- data/lib/cosmos/dart/db/seeds.rb +7 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
- data/lib/cosmos/dart/examples/dart_stream_client.rb +93 -0
- data/lib/cosmos/dart/lib/dart_common.rb +749 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +172 -0
- data/lib/cosmos/dart/lib/dart_decom_query.rb +184 -0
- data/lib/cosmos/dart/lib/dart_decommutator.rb +235 -0
- data/lib/cosmos/dart/lib/dart_importer.rb +154 -0
- data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +139 -0
- data/lib/cosmos/dart/lib/dart_reducer_manager.rb +85 -0
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +263 -0
- data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
- data/lib/cosmos/dart/processes/dart.rb +145 -0
- data/lib/cosmos/dart/processes/dart_decom_server.rb +39 -0
- data/lib/cosmos/dart/processes/dart_import.rb +63 -0
- data/lib/cosmos/dart/processes/dart_ingester.rb +92 -0
- data/lib/cosmos/dart/processes/dart_reducer.rb +27 -0
- data/lib/cosmos/dart/processes/dart_stream_server.rb +31 -0
- data/lib/cosmos/dart/processes/dart_worker.rb +37 -0
- data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
- data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
- data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +153 -0
- data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +336 -0
- data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +83 -0
- data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
- data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +149 -0
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +289 -0
- data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +241 -0
- data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
- data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
- data/lib/cosmos/gui/dialogs/about_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +1 -0
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +0 -3
- data/lib/cosmos/gui/qt.rb +10 -1
- data/lib/cosmos/gui/text/completion.rb +10 -9
- data/lib/cosmos/gui/text/completion_text_edit.rb +16 -14
- data/lib/cosmos/gui/text/ruby_editor.rb +2 -2
- data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +119 -0
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +42 -12
- data/lib/cosmos/interfaces/interface.rb +1 -2
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +26 -8
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +8 -2
- data/lib/cosmos/interfaces/protocols/protocol.rb +2 -1
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +1 -1
- data/lib/cosmos/interfaces/stream_interface.rb +1 -0
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +2 -3
- data/lib/cosmos/io/json_drb_object.rb +1 -1
- data/lib/cosmos/io/json_rpc.rb +2 -1
- data/lib/cosmos/io/win32_serial_driver.rb +2 -9
- data/lib/cosmos/packet_logs/packet_log_writer.rb +1 -1
- data/lib/cosmos/packets/packet.rb +22 -12
- data/lib/cosmos/packets/packet_config.rb +2 -1
- data/lib/cosmos/packets/packet_item.rb +26 -24
- data/lib/cosmos/packets/parsers/macro_parser.rb +5 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +35 -17
- data/lib/cosmos/packets/parsers/packet_parser.rb +3 -10
- data/lib/cosmos/packets/parsers/xtce_converter.rb +21 -35
- data/lib/cosmos/packets/parsers/xtce_parser.rb +54 -46
- data/lib/cosmos/packets/structure.rb +10 -2
- data/lib/cosmos/packets/structure_item.rb +22 -8
- data/lib/cosmos/processors/statistics_processor.rb +2 -0
- data/lib/cosmos/script/api_shared.rb +13 -12
- data/lib/cosmos/script/cmd_tlm_server.rb +4 -0
- data/lib/cosmos/script/commands.rb +3 -15
- data/lib/cosmos/script/script.rb +69 -23
- data/lib/cosmos/streams/tcpip_client_stream.rb +2 -2
- data/lib/cosmos/system/system.rb +42 -25
- data/lib/cosmos/system/target.rb +6 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +177 -36
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +3 -2
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +34 -8
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +80 -25
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +19 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +15 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +15 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +1 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +84 -7
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +0 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +1 -5
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +3 -2
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +159 -27
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +1 -1
- data/lib/cosmos/tools/config_editor/config_editor.rb +17 -52
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +0 -5
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +111 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -18
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +12 -3
- data/lib/cosmos/tools/script_runner/script_runner.rb +27 -14
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +104 -37
- data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
- data/lib/cosmos/tools/table_manager/table_item_parser.rb +4 -2
- data/lib/cosmos/tools/table_manager/table_manager.rb +0 -5
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +0 -1
- data/lib/cosmos/tools/test_runner/test.rb +1 -3
- data/lib/cosmos/tools/test_runner/test_runner.rb +26 -15
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +290 -137
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +122 -25
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +67 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +28 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +36 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +42 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +88 -14
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +2 -5
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +2 -6
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +74 -18
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +3 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +159 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +49 -2
- data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +0 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +5 -5
- data/lib/cosmos/top_level.rb +1 -0
- data/lib/cosmos/utilities/crc.rb +3 -0
- data/lib/cosmos/utilities/csv.rb +1 -0
- data/lib/cosmos/utilities/message_log.rb +2 -1
- data/lib/cosmos/utilities/simulated_target.rb +8 -8
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32.rb +4 -10
- data/run_gui_tests.bat +2 -1
- data/spec/config/config_parser_spec.rb +4 -4
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/exception_spec.rb +12 -12
- data/spec/core_ext/file_spec.rb +6 -6
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/socket_spec.rb +2 -2
- data/spec/core_ext/string_spec.rb +13 -13
- data/spec/core_ext/time_spec.rb +0 -2
- data/spec/gui/utilities/script_module_gui_spec.rb +3 -3
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +6 -6
- data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +6 -2
- data/spec/interfaces/interface_spec.rb +0 -1
- data/spec/interfaces/linc_interface_spec.rb +0 -5
- data/spec/interfaces/protocols/crc_protocol_spec.rb +201 -85
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +33 -9
- data/spec/interfaces/protocols/length_protocol_spec.rb +1 -1
- data/spec/interfaces/protocols/override_protocol_spec.rb +6 -2
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +1 -5
- data/spec/interfaces/protocols/template_protocol_spec.rb +0 -1
- data/spec/interfaces/simulated_target_interface_spec.rb +5 -5
- data/spec/interfaces/udp_interface_spec.rb +2 -4
- data/spec/io/buffered_file_spec.rb +8 -12
- data/spec/io/json_drb_spec.rb +9 -9
- data/spec/io/json_rpc_spec.rb +4 -4
- data/spec/io/raw_logger_spec.rb +4 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +3 -6
- data/spec/packet_logs/packet_log_writer_spec.rb +4 -4
- data/spec/packets/binary_accessor_spec.rb +5 -8
- data/spec/packets/commands_spec.rb +2 -2
- data/spec/packets/limits_spec.rb +2 -2
- data/spec/packets/packet_config_spec.rb +12 -0
- data/spec/packets/packet_item_limits_spec.rb +1 -1
- data/spec/packets/packet_item_spec.rb +9 -9
- data/spec/packets/packet_spec.rb +15 -5
- data/spec/packets/parsers/packet_item_parser_spec.rb +27 -0
- data/spec/packets/parsers/xtce_parser_spec.rb +27 -30
- data/spec/packets/structure_spec.rb +2 -1
- data/spec/packets/telemetry_spec.rb +3 -5
- data/spec/processors/statistics_processor_spec.rb +35 -0
- data/spec/script/cmd_tlm_server_spec.rb +4 -21
- data/spec/script/commands_disconnect_spec.rb +46 -58
- data/spec/script/commands_spec.rb +40 -61
- data/spec/script/limits_spec.rb +1 -21
- data/spec/script/script_spec.rb +32 -41
- data/spec/script/scripting_spec.rb +166 -185
- data/spec/script/telemetry_spec.rb +10 -5
- data/spec/script/tools_spec.rb +2 -24
- data/spec/spec_helper.rb +11 -5
- data/spec/system/system_spec.rb +17 -12
- data/spec/tools/cmd_tlm_server/api_spec.rb +21 -10
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -16
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +0 -1
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +16 -27
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +2 -6
- data/spec/tools/cmd_tlm_server/connections_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +13 -13
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +5 -9
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +11 -3
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/routers_spec.rb +5 -9
- data/spec/tools/table_manager/table_config_spec.rb +0 -1
- data/spec/tools/table_manager/tablemanager_core_spec.rb +23 -23
- data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +6 -4
- data/spec/top_level/top_level_spec.rb +9 -9
- data/spec/utilities/csv_spec.rb +2 -12
- data/spec/utilities/logger_spec.rb +6 -6
- data/spec/utilities/message_log_spec.rb +3 -11
- data/tasks/gemfile_stats.rake +2 -2
- metadata +167 -60
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
require 'ostruct'
|
|
12
12
|
|
|
13
13
|
module Cosmos
|
|
14
|
+
# Parses a macro definition in a command or telemetry configuration file.
|
|
15
|
+
# Note: Using ERB to define multiple items is now the preferred solution.
|
|
14
16
|
class MacroParser
|
|
17
|
+
@macro = nil
|
|
18
|
+
|
|
15
19
|
# Adds a new item to the Macro
|
|
16
20
|
def self.new_item
|
|
17
21
|
return unless @macro
|
|
@@ -113,6 +117,5 @@ module Cosmos
|
|
|
113
117
|
@macro.format_order = 'ds'
|
|
114
118
|
end
|
|
115
119
|
end
|
|
116
|
-
|
|
117
120
|
end
|
|
118
|
-
end
|
|
121
|
+
end
|
|
@@ -8,24 +8,30 @@
|
|
|
8
8
|
# as published by the Free Software Foundation; version 3 with
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
|
-
require 'cosmos/packets/packet_config'
|
|
12
11
|
require 'cosmos/packets/packet_item'
|
|
13
12
|
|
|
14
13
|
module Cosmos
|
|
15
|
-
|
|
14
|
+
# Parses a packet item definition and creates a new PacketItem
|
|
16
15
|
class PacketItemParser
|
|
16
|
+
# This number is a little arbitrary but there are definitely issues at
|
|
17
|
+
# 1 million and you really shouldn't be doing anything this big anyway
|
|
18
|
+
BIG_ARRAY_SIZE = 100_000
|
|
19
|
+
|
|
17
20
|
# @param parser [ConfigParser] Configuration parser
|
|
18
21
|
# @param packet [Packet] The packet the item should be added to
|
|
19
|
-
# @param cmd_or_tlm [String] Whether this is
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
# @param cmd_or_tlm [String] Whether this is a command or telemetry packet
|
|
23
|
+
# @param warnings [Array<String>] Array of warning strings from PacketConfig
|
|
24
|
+
def self.parse(parser, packet, cmd_or_tlm, warnings)
|
|
25
|
+
parser = PacketItemParser.new(parser, warnings)
|
|
22
26
|
parser.verify_parameters(cmd_or_tlm)
|
|
23
27
|
parser.create_packet_item(packet, cmd_or_tlm)
|
|
24
28
|
end
|
|
25
29
|
|
|
26
30
|
# @param parser [ConfigParser] Configuration parser
|
|
27
|
-
|
|
31
|
+
# @param warnings [Array<String>] Array of warning strings from PacketConfig
|
|
32
|
+
def initialize(parser, warnings)
|
|
28
33
|
@parser = parser
|
|
34
|
+
@warnings = warnings
|
|
29
35
|
@usage = get_usage()
|
|
30
36
|
end
|
|
31
37
|
|
|
@@ -43,7 +49,13 @@ module Cosmos
|
|
|
43
49
|
end
|
|
44
50
|
|
|
45
51
|
def create_packet_item(packet, cmd_or_tlm)
|
|
46
|
-
|
|
52
|
+
item_name = @parser.parameters[0].upcase
|
|
53
|
+
if packet.items[item_name]
|
|
54
|
+
msg = "#{packet.target_name} #{packet.packet_name} #{item_name} redefined."
|
|
55
|
+
Logger.instance.warn msg
|
|
56
|
+
@warnings << msg
|
|
57
|
+
end
|
|
58
|
+
item = PacketItem.new(item_name,
|
|
47
59
|
get_bit_offset(),
|
|
48
60
|
get_bit_size(),
|
|
49
61
|
get_data_type(),
|
|
@@ -94,7 +106,17 @@ module Cosmos
|
|
|
94
106
|
def get_array_size
|
|
95
107
|
return nil unless (@parser.keyword.include?('ARRAY'))
|
|
96
108
|
index = append? ? 3 : 4
|
|
97
|
-
Integer(@parser.parameters[index])
|
|
109
|
+
array_bit_size = Integer(@parser.parameters[index])
|
|
110
|
+
items = array_bit_size / get_bit_size()
|
|
111
|
+
if items >= BIG_ARRAY_SIZE
|
|
112
|
+
warning = "Performance Issue!\n"\
|
|
113
|
+
"In #{@parser.filename}:#{@parser.line_number} your definition of:\n"\
|
|
114
|
+
"#{@parser.line}\n"\
|
|
115
|
+
"creates an array with #{items} elements. Consider creating a BLOCK if this is binary data."
|
|
116
|
+
Logger.warn(warning)
|
|
117
|
+
@warnings << warning
|
|
118
|
+
end
|
|
119
|
+
array_bit_size
|
|
98
120
|
rescue => err
|
|
99
121
|
raise @parser.error(err, @usage)
|
|
100
122
|
end
|
|
@@ -131,7 +153,7 @@ module Cosmos
|
|
|
131
153
|
|
|
132
154
|
index = append? ? 3 : 4
|
|
133
155
|
data_type = get_data_type()
|
|
134
|
-
if data_type == :STRING or data_type == :BLOCK
|
|
156
|
+
if data_type == :STRING or data_type == :BLOCK
|
|
135
157
|
# If the default value is 0x<data> (no quotes), it is treated as
|
|
136
158
|
# binary data. Otherwise, the default value is considered to be a string.
|
|
137
159
|
if (@parser.parameters[index].upcase.start_with?("0X") and
|
|
@@ -171,13 +193,11 @@ module Cosmos
|
|
|
171
193
|
# There are many different usages of the ITEM and PARAMETER keywords so
|
|
172
194
|
# parse the keyword and parameters to generate the correct usage information.
|
|
173
195
|
def get_usage
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
usage = "#{keyword} <ITEM NAME> "
|
|
177
|
-
usage << "<BIT OFFSET> " unless keyword.include?("APPEND")
|
|
196
|
+
usage = "#{@parser.keyword} <ITEM NAME> "
|
|
197
|
+
usage << "<BIT OFFSET> " unless @parser.keyword.include?("APPEND")
|
|
178
198
|
usage << bit_size_usage()
|
|
179
199
|
usage << type_usage()
|
|
180
|
-
usage << "<TOTAL ARRAY BIT SIZE> " if keyword.include?("ARRAY")
|
|
200
|
+
usage << "<TOTAL ARRAY BIT SIZE> " if @parser.keyword.include?("ARRAY")
|
|
181
201
|
usage << id_usage()
|
|
182
202
|
usage << "<DESCRIPTION (Optional)> <ENDIANNESS (Optional)>"
|
|
183
203
|
usage
|
|
@@ -198,7 +218,6 @@ module Cosmos
|
|
|
198
218
|
|
|
199
219
|
# Build up the parameter type usage based on the keyword
|
|
200
220
|
usage = "<TYPE: "
|
|
201
|
-
params = @parser.parameters
|
|
202
221
|
# ARRAY types don't have min or max or default values
|
|
203
222
|
if keyword.include?("ARRAY")
|
|
204
223
|
usage << "INT/UINT/FLOAT/STRING/BLOCK> "
|
|
@@ -229,6 +248,5 @@ module Cosmos
|
|
|
229
248
|
"<ID VALUE> "
|
|
230
249
|
end
|
|
231
250
|
end
|
|
232
|
-
|
|
233
251
|
end
|
|
234
|
-
end
|
|
252
|
+
end
|
|
@@ -50,7 +50,7 @@ module Cosmos
|
|
|
50
50
|
packet.sorted_items.each do |item|
|
|
51
51
|
item.check_default_and_range_data_types()
|
|
52
52
|
end
|
|
53
|
-
rescue
|
|
53
|
+
rescue
|
|
54
54
|
# Add the target name and packet name to the error message so the user
|
|
55
55
|
# can debug where the error occurred
|
|
56
56
|
raise $!, "#{packet.target_name} #{packet.packet_name} #{$!}", $!.backtrace
|
|
@@ -111,14 +111,7 @@ module Cosmos
|
|
|
111
111
|
def self.finish_create_telemetry(packet, telemetry, latest_data, warnings)
|
|
112
112
|
warning = PacketParser.check_for_duplicate('Telemetry', telemetry, packet)
|
|
113
113
|
warnings << warning if warning
|
|
114
|
-
|
|
115
|
-
# Add received time packet items
|
|
116
|
-
item = packet.define_item('RECEIVED_TIMESECONDS', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, '%0.6f', ReceivedTimeSecondsConversion.new)
|
|
117
|
-
item.description = 'COSMOS Received Time (UTC, Floating point, Unix epoch)'
|
|
118
|
-
item = packet.define_item('RECEIVED_TIMEFORMATTED', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, nil, ReceivedTimeFormattedConversion.new)
|
|
119
|
-
item.description = 'COSMOS Received Time (Local time zone, Formatted string)'
|
|
120
|
-
item = packet.define_item('RECEIVED_COUNT', 0, 0, :DERIVED, nil, packet.default_endianness, :ERROR, nil, ReceivedCountConversion.new)
|
|
121
|
-
item.description = 'COSMOS packet received count'
|
|
114
|
+
packet.define_reserved_items()
|
|
122
115
|
|
|
123
116
|
unless telemetry[packet.target_name]
|
|
124
117
|
telemetry[packet.target_name] = {}
|
|
@@ -128,4 +121,4 @@ module Cosmos
|
|
|
128
121
|
end
|
|
129
122
|
|
|
130
123
|
end
|
|
131
|
-
end
|
|
124
|
+
end
|
|
@@ -168,13 +168,13 @@ module Cosmos
|
|
|
168
168
|
unique[item.name] << item
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
|
-
unique.each do |item_name,
|
|
172
|
-
if
|
|
173
|
-
unique[item_name] =
|
|
171
|
+
unique.each do |item_name, unique_items|
|
|
172
|
+
if unique_items.length <= 1
|
|
173
|
+
unique[item_name] = unique_items[0]
|
|
174
174
|
next
|
|
175
175
|
end
|
|
176
176
|
# TODO: need to make sure all the items in the array are exactly the same
|
|
177
|
-
unique[item_name] =
|
|
177
|
+
unique[item_name] = unique_items[0]
|
|
178
178
|
end
|
|
179
179
|
unique
|
|
180
180
|
end
|
|
@@ -260,6 +260,20 @@ module Cosmos
|
|
|
260
260
|
end
|
|
261
261
|
end
|
|
262
262
|
|
|
263
|
+
def to_xtce_limits(item, xml)
|
|
264
|
+
return unless item.limits && item.limits.values
|
|
265
|
+
item.limits.values.each do |limits_set, limits_values|
|
|
266
|
+
if limits_set == :DEFAULT
|
|
267
|
+
xml['xtce'].DefaultAlarm do
|
|
268
|
+
xml['xtce'].StaticAlarmRanges do
|
|
269
|
+
xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
|
|
270
|
+
xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
263
277
|
def to_xtce_int(item, param_or_arg, xml)
|
|
264
278
|
attrs = { :name => (item.name + '_Type') }
|
|
265
279
|
attrs[:initialValue] = item.default if item.default and !item.array_size
|
|
@@ -302,20 +316,7 @@ module Cosmos
|
|
|
302
316
|
else
|
|
303
317
|
xml['xtce'].IntegerDataEncoding(:sizeInBits => item.bit_size, :encoding => encoding)
|
|
304
318
|
end
|
|
305
|
-
|
|
306
|
-
if item.limits.values
|
|
307
|
-
item.limits.values.each do |limits_set, limits_values|
|
|
308
|
-
if limits_set == :DEFAULT
|
|
309
|
-
xml['xtce'].DefaultAlarm do
|
|
310
|
-
xml['xtce'].StaticAlarmRanges do
|
|
311
|
-
xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
|
|
312
|
-
xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
|
|
313
|
-
end
|
|
314
|
-
end
|
|
315
|
-
end
|
|
316
|
-
end
|
|
317
|
-
end
|
|
318
|
-
end
|
|
319
|
+
to_xtce_limits(item, xml)
|
|
319
320
|
if item.range
|
|
320
321
|
xml['xtce'].ValidRange(:minInclusive => item.range.first, :maxInclusive => item.range.last)
|
|
321
322
|
end
|
|
@@ -337,22 +338,7 @@ module Cosmos
|
|
|
337
338
|
else
|
|
338
339
|
xml['xtce'].FloatDataEncoding(:sizeInBits => item.bit_size, :encoding => 'IEEE754_1985')
|
|
339
340
|
end
|
|
340
|
-
|
|
341
|
-
if item.limits
|
|
342
|
-
if item.limits.values
|
|
343
|
-
item.limits.values.each do |limits_set, limits_values|
|
|
344
|
-
if limits_set == :DEFAULT
|
|
345
|
-
xml['xtce'].DefaultAlarm do
|
|
346
|
-
xml['xtce'].StaticAlarmRanges do
|
|
347
|
-
xml['xtce'].WarningRange(:minInclusive => limits_values[1], :maxInclusive => limits_values[2])
|
|
348
|
-
xml['xtce'].CriticalRange(:minInclusive => limits_values[0], :maxInclusive => limits_values[3])
|
|
349
|
-
end
|
|
350
|
-
end
|
|
351
|
-
end
|
|
352
|
-
end
|
|
353
|
-
end
|
|
354
|
-
end
|
|
355
|
-
|
|
341
|
+
to_xtce_limits(item, xml)
|
|
356
342
|
if item.range
|
|
357
343
|
xml['xtce'].ValidRange(:minInclusive => item.range.first, :maxInclusive => item.range.last)
|
|
358
344
|
end
|
|
@@ -372,7 +358,7 @@ module Cosmos
|
|
|
372
358
|
end
|
|
373
359
|
attrs[:shortDescription] = item.description if item.description
|
|
374
360
|
xml['xtce'].send(string_or_binary + param_or_arg + 'Type', attrs) do
|
|
375
|
-
to_xtce_endianness
|
|
361
|
+
# Don't call to_xtce_endianness for Strings or Blocks
|
|
376
362
|
to_xtce_units(item, xml)
|
|
377
363
|
if string_or_binary == 'String'
|
|
378
364
|
xml['xtce'].StringDataEncoding(:encoding => 'UTF-8') do
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
require 'nokogiri'
|
|
12
12
|
require 'ostruct'
|
|
13
|
-
require 'cosmos/packets/packet_config'
|
|
14
13
|
|
|
15
14
|
module Cosmos
|
|
16
15
|
|
|
@@ -55,16 +54,17 @@ module Cosmos
|
|
|
55
54
|
@commands = commands
|
|
56
55
|
@telemetry = telemetry
|
|
57
56
|
@warnings = warnings
|
|
57
|
+
@current_packet = nil
|
|
58
58
|
parse(filename, target_name)
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def parse(filename, target_name)
|
|
62
62
|
doc = File.open(filename) { |f| Nokogiri::XML(f, nil, nil, Nokogiri::XML::ParseOptions::STRICT | Nokogiri::XML::ParseOptions::NOBLANKS) }
|
|
63
|
-
xtce_process_element(doc.root
|
|
63
|
+
xtce_process_element(doc.root)
|
|
64
64
|
@current_target_name = target_name if target_name
|
|
65
65
|
doc.root.children.each do |child|
|
|
66
|
-
xtce_recurse_element(child
|
|
67
|
-
xtce_process_element(element
|
|
66
|
+
xtce_recurse_element(child) do |element|
|
|
67
|
+
xtce_process_element(element)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
finish_packet()
|
|
@@ -100,7 +100,13 @@ module Cosmos
|
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def set_packet_endianness
|
|
103
|
-
item_endianness = @current_packet.sorted_items.collect
|
|
103
|
+
item_endianness = @current_packet.sorted_items.collect do |item|
|
|
104
|
+
# Strings and Blocks endianness don't matter so ignore them
|
|
105
|
+
item.endianness if (item.data_type != :STRING && item.data_type != :BLOCK)
|
|
106
|
+
end
|
|
107
|
+
# Compact to get rid of nils from skipping Strings and Blocks
|
|
108
|
+
# Uniq to get rid of duplicates which results in an array of 1 or 2 items
|
|
109
|
+
item_endianness = item_endianness.compact.uniq
|
|
104
110
|
if item_endianness.length == 1 # All items have the same endianness
|
|
105
111
|
# default_endianness is read_only since it affects how items are added
|
|
106
112
|
# thus we have to use instance_variable_set here to override it
|
|
@@ -137,7 +143,7 @@ module Cosmos
|
|
|
137
143
|
|
|
138
144
|
XTCE_IGNORED_ELEMENTS = ['text', 'AliasSet', 'Alias', 'Header']
|
|
139
145
|
|
|
140
|
-
def xtce_process_element(element
|
|
146
|
+
def xtce_process_element(element)
|
|
141
147
|
if XTCE_IGNORED_ELEMENTS.include?(element.name)
|
|
142
148
|
return false
|
|
143
149
|
end
|
|
@@ -154,14 +160,17 @@ module Cosmos
|
|
|
154
160
|
finish_packet()
|
|
155
161
|
@current_cmd_or_tlm = PacketConfig::COMMAND
|
|
156
162
|
|
|
157
|
-
when 'ParameterTypeSet', 'EnumerationList', 'ParameterSet', 'ContainerSet',
|
|
158
|
-
'
|
|
159
|
-
'
|
|
160
|
-
|
|
163
|
+
when 'ParameterTypeSet', 'EnumerationList', 'ParameterSet', 'ContainerSet',
|
|
164
|
+
'EntryList', 'DefaultCalibrator', 'DefaultAlarm', 'RestrictionCriteria',
|
|
165
|
+
'ComparisonList', 'MetaCommandSet', 'ArgumentTypeSet', 'ArgumentList',
|
|
166
|
+
'ArgumentAssignmentList', 'LocationInContainerInBits'
|
|
161
167
|
# Do Nothing
|
|
162
168
|
|
|
163
|
-
when 'EnumeratedParameterType', 'EnumeratedArgumentType',
|
|
164
|
-
'
|
|
169
|
+
when 'EnumeratedParameterType', 'EnumeratedArgumentType',
|
|
170
|
+
'IntegerParameterType', 'IntegerArgumentType',
|
|
171
|
+
'FloatParameterType', 'FloatArgumentType',
|
|
172
|
+
'StringParameterType', 'StringArgumentType',
|
|
173
|
+
'BinaryParameterType', 'BinaryArgumentType'
|
|
165
174
|
@current_type = create_new_type(element)
|
|
166
175
|
@current_type.endianness = :BIG_ENDIAN
|
|
167
176
|
|
|
@@ -187,10 +196,10 @@ module Cosmos
|
|
|
187
196
|
|
|
188
197
|
when 'ByteOrderList'
|
|
189
198
|
byte_list = []
|
|
190
|
-
xtce_recurse_element(element
|
|
191
|
-
if
|
|
192
|
-
if
|
|
193
|
-
byte_list <<
|
|
199
|
+
xtce_recurse_element(element) do |block_element|
|
|
200
|
+
if block_element.name == 'Byte'
|
|
201
|
+
if block_element['byteSignificance']
|
|
202
|
+
byte_list << block_element['byteSignificance'].to_i
|
|
194
203
|
end
|
|
195
204
|
end
|
|
196
205
|
true
|
|
@@ -228,9 +237,9 @@ module Cosmos
|
|
|
228
237
|
return false # Already recursed
|
|
229
238
|
|
|
230
239
|
when "SizeInBits"
|
|
231
|
-
xtce_recurse_element(element
|
|
232
|
-
if
|
|
233
|
-
@current_type.sizeInBits = Integer(
|
|
240
|
+
xtce_recurse_element(element) do |block_element|
|
|
241
|
+
if block_element.name == 'FixedValue'
|
|
242
|
+
@current_type.sizeInBits = Integer(block_element.text)
|
|
234
243
|
false
|
|
235
244
|
else
|
|
236
245
|
true
|
|
@@ -239,10 +248,10 @@ module Cosmos
|
|
|
239
248
|
return false # Already recursed
|
|
240
249
|
|
|
241
250
|
when 'UnitSet'
|
|
242
|
-
xtce_recurse_element(element
|
|
243
|
-
if
|
|
244
|
-
units =
|
|
245
|
-
description =
|
|
251
|
+
xtce_recurse_element(element) do |block_element|
|
|
252
|
+
if block_element.name == 'Unit'
|
|
253
|
+
units = block_element.text.to_s
|
|
254
|
+
description = block_element['description'].to_s
|
|
246
255
|
description = units if description.empty?
|
|
247
256
|
units = description if units.empty?
|
|
248
257
|
|
|
@@ -252,7 +261,7 @@ module Cosmos
|
|
|
252
261
|
else
|
|
253
262
|
@current_type.units << ('/' + units)
|
|
254
263
|
end
|
|
255
|
-
@current_type.units << "^#{
|
|
264
|
+
@current_type.units << "^#{block_element['power']}" if block_element['power']
|
|
256
265
|
|
|
257
266
|
@current_type.units_full ||= ''
|
|
258
267
|
if @current_type.units_full.empty?
|
|
@@ -266,12 +275,11 @@ module Cosmos
|
|
|
266
275
|
return false # Already recursed
|
|
267
276
|
|
|
268
277
|
when 'PolynomialCalibrator'
|
|
269
|
-
xtce_recurse_element(element
|
|
270
|
-
if
|
|
271
|
-
|
|
272
|
-
coeff = Float(element['coefficient'])
|
|
278
|
+
xtce_recurse_element(element) do |block_element|
|
|
279
|
+
if block_element.name == 'Term'
|
|
280
|
+
exponent = Float(block_element['exponent']).to_i
|
|
273
281
|
@current_type.conversion ||= PolynomialConversion.new([])
|
|
274
|
-
@current_type.conversion.coeffs[
|
|
282
|
+
@current_type.conversion.coeffs[exponent] = Float(block_element['coefficient'])
|
|
275
283
|
@current_type.conversion.coeffs.each_with_index do |value, index|
|
|
276
284
|
@current_type.conversion.coeffs[index] = 0.0 if value.nil?
|
|
277
285
|
end
|
|
@@ -281,15 +289,15 @@ module Cosmos
|
|
|
281
289
|
return false # Already recursed
|
|
282
290
|
|
|
283
291
|
when 'StaticAlarmRanges'
|
|
284
|
-
xtce_recurse_element(element
|
|
285
|
-
if
|
|
292
|
+
xtce_recurse_element(element) do |block_element|
|
|
293
|
+
if block_element.name == 'WarningRange'
|
|
286
294
|
@current_type.limits ||= [0.0, 0.0, 0.0, 0.0]
|
|
287
|
-
@current_type.limits[1] = Float(
|
|
288
|
-
@current_type.limits[2] = Float(
|
|
289
|
-
elsif
|
|
295
|
+
@current_type.limits[1] = Float(block_element['minInclusive']) if block_element['minInclusive']
|
|
296
|
+
@current_type.limits[2] = Float(block_element['maxInclusive']) if block_element['maxInclusive']
|
|
297
|
+
elsif block_element.name == 'CriticalRange'
|
|
290
298
|
@current_type.limits ||= [0.0, 0.0, 0.0, 0.0]
|
|
291
|
-
@current_type.limits[0] = Float(
|
|
292
|
-
@current_type.limits[3] = Float(
|
|
299
|
+
@current_type.limits[0] = Float(block_element['minInclusive']) if block_element['minInclusive']
|
|
300
|
+
@current_type.limits[3] = Float(block_element['maxInclusive']) if block_element['maxInclusive']
|
|
293
301
|
end
|
|
294
302
|
true
|
|
295
303
|
end
|
|
@@ -345,7 +353,7 @@ module Cosmos
|
|
|
345
353
|
end
|
|
346
354
|
|
|
347
355
|
when 'ParameterRefEntry', 'ArgumentRefEntry', 'ArrayParameterRefEntry', 'ArrayArgumentRefEntry'
|
|
348
|
-
process_ref_entry(element
|
|
356
|
+
process_ref_entry(element)
|
|
349
357
|
return false # Already recursed
|
|
350
358
|
|
|
351
359
|
when 'BaseContainer'
|
|
@@ -399,12 +407,12 @@ module Cosmos
|
|
|
399
407
|
return true # Recurse further
|
|
400
408
|
end
|
|
401
409
|
|
|
402
|
-
def process_ref_entry(element
|
|
410
|
+
def process_ref_entry(element)
|
|
403
411
|
reference_location, bit_offset = xtce_handle_location_in_container_in_bits(element)
|
|
404
412
|
object, type, data_type, array_type = get_object_types(element)
|
|
405
413
|
bit_size = Integer(type.sizeInBits)
|
|
406
414
|
if array_type
|
|
407
|
-
array_bit_size = process_array_type(element,
|
|
415
|
+
array_bit_size = process_array_type(element, bit_size)
|
|
408
416
|
else
|
|
409
417
|
array_bit_size = nil # in define_item, nil indicates the item is not an array
|
|
410
418
|
end
|
|
@@ -477,14 +485,14 @@ module Cosmos
|
|
|
477
485
|
return [object, type, data_type, array_type]
|
|
478
486
|
end
|
|
479
487
|
|
|
480
|
-
def process_array_type(element,
|
|
488
|
+
def process_array_type(element, bit_size)
|
|
481
489
|
array_num_items = 1
|
|
482
490
|
# Need to determine dimensions
|
|
483
|
-
xtce_recurse_element(element
|
|
484
|
-
if
|
|
491
|
+
xtce_recurse_element(element) do |block_element|
|
|
492
|
+
if block_element.name == 'Dimension'
|
|
485
493
|
starting_index = 0
|
|
486
494
|
ending_index = 0
|
|
487
|
-
|
|
495
|
+
block_element.children.each do |child_element|
|
|
488
496
|
if child_element.name == 'StartingIndex'
|
|
489
497
|
child_element.children.each do |child_element2|
|
|
490
498
|
if child_element2.name == 'FixedValue'
|
|
@@ -623,10 +631,10 @@ module Cosmos
|
|
|
623
631
|
return string
|
|
624
632
|
end
|
|
625
633
|
|
|
626
|
-
def xtce_recurse_element(element,
|
|
627
|
-
return unless yield(element
|
|
634
|
+
def xtce_recurse_element(element, &block)
|
|
635
|
+
return unless yield(element)
|
|
628
636
|
element.children.each do |child_element|
|
|
629
|
-
xtce_recurse_element(child_element,
|
|
637
|
+
xtce_recurse_element(child_element, &block)
|
|
630
638
|
end
|
|
631
639
|
end
|
|
632
640
|
|