cosmos 4.2.4-java → 4.5.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/.dockerignore +2 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
- data/.gitignore +2 -0
- data/.travis.yml +6 -6
- data/Dockerfile +69 -0
- data/Gemfile +1 -1
- data/Manifest.txt +130 -46
- data/README.md +9 -0
- data/Rakefile +57 -0
- data/appveyor.yml +18 -7
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
- data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
- data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
- data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
- data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
- data/autohotkey/procedures/collect.rb +2 -2
- data/autohotkey/procedures/collect_util.rb +1 -1
- data/autohotkey/procedures/script_test.rb +1 -1
- data/autohotkey/tools/CmdSenderAHK2 +18 -0
- data/autohotkey/tools/cmd_sender.ahk +34 -6
- data/autohotkey/tools/cmd_sender2.ahk +4 -0
- data/autohotkey/tools/cmd_sequence.ahk +36 -22
- data/autohotkey/tools/cmd_sequence2.ahk +1 -1
- data/autohotkey/tools/config_editor.ahk +5 -5
- data/autohotkey/tools/launcher.ahk +1 -0
- data/autohotkey/tools/limits_monitor.ahk +1 -1
- data/autohotkey/tools/packet_viewer.ahk +7 -6
- data/autohotkey/tools/script_runner.ahk +16 -4
- data/autohotkey/tools/test_runner.ahk +8 -8
- data/bin/cosmos +38 -1
- data/bin/cstol_converter +1 -1
- data/bin/dart_util +0 -0
- data/bin/rubysloc +73 -28
- data/bin/xtce_converter +1 -1
- data/cosmos.gemspec +7 -9
- data/data/config/_interfaces.yaml +4 -0
- data/data/config/cmd_sequence.yaml +14 -0
- data/data/config/command_modifiers.yaml +16 -1
- data/data/config/housekeeping_params.yaml +14 -0
- data/data/config/interface_modifiers.yaml +14 -2
- data/data/config/item_modifiers.yaml +11 -1
- data/data/config/launcher.yaml +12 -2
- data/data/config/param_item_modifiers.yaml +7 -2
- data/data/config/parameter_modifiers.yaml +20 -0
- data/data/config/screen.yaml +2 -0
- data/data/config/script_runner.yaml +9 -0
- data/data/config/system.yaml +152 -28
- data/data/config/table_manager.yaml +7 -0
- data/data/config/target.yaml +12 -0
- data/data/config/telemetry_modifiers.yaml +19 -2
- data/data/config/test_runner.yaml +10 -9
- data/data/config/widgets.yaml +174 -11
- data/data/crc.txt +428 -415
- data/demo/Gemfile +1 -1
- data/demo/Launcher.bat +1 -9
- data/demo/Launcher2.bat +1 -0
- data/demo/LauncherMini.bat +1 -0
- data/demo/Rakefile +2 -0
- data/demo/config/dart/Gemfile +2 -7
- data/demo/config/data/crc.txt +243 -219
- data/demo/config/system/system.txt +42 -3
- data/demo/config/system/system2.txt +34 -5
- data/demo/config/system/system_alt_ports.txt +80 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +5 -4
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +12 -7
- data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
- data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
- data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
- data/demo/config/targets/INST/screens/adcs.txt +2 -2
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +27 -5
- data/demo/config/targets/INST/screens/ground_error.gif +0 -0
- data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
- data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
- data/demo/config/targets/INST/screens/limits.txt +69 -31
- data/demo/config/targets/INST/screens/other.txt +13 -3
- data/demo/config/targets/INST/screens/params.txt +54 -0
- data/demo/config/targets/INST/screens/satellite.gif +0 -0
- data/demo/config/targets/INST/target.txt +1 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
- data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/demo/config/tools/script_runner/script_runner.txt +1 -2
- data/demo/config/tools/test_runner/test_runner.txt +3 -1
- data/demo/lib/example_background_task.rb +1 -0
- data/demo/procedures/cosmos_api_test.rb +26 -22
- data/demo/procedures/interactive.rb +22 -0
- data/demo/procedures/local_screen_example.rb +51 -0
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
- data/ext/cosmos/ext/packet/packet.c +6 -77
- data/ext/mkrf_conf.rb +2 -2
- data/extensions/vscode/.gitignore +4 -0
- data/extensions/vscode/.vscode/launch.json +32 -0
- data/extensions/vscode/.vscode/settings.json +13 -0
- data/extensions/vscode/.vscode/tasks.json +79 -0
- data/extensions/vscode/License.txt +879 -0
- data/extensions/vscode/README.md +9 -0
- data/extensions/vscode/client/License.txt +879 -0
- data/extensions/vscode/client/README.md +39 -0
- data/extensions/vscode/client/cosmos.configuration.json +23 -0
- data/extensions/vscode/client/images/icon.png +0 -0
- data/extensions/vscode/client/package-lock.json +414 -0
- data/extensions/vscode/client/package.json +105 -0
- data/extensions/vscode/client/src/extension.ts +132 -0
- data/extensions/vscode/client/src/screen_preview.rb +25 -0
- data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
- data/extensions/vscode/client/tsconfig.json +17 -0
- data/extensions/vscode/package-lock.json +26 -0
- data/extensions/vscode/package.json +35 -0
- data/extensions/vscode/server/License.txt +879 -0
- data/extensions/vscode/server/package-lock.json +236 -0
- data/extensions/vscode/server/package.json +29 -0
- data/extensions/vscode/server/src/server.ts +59 -0
- data/extensions/vscode/server/tsconfig.json +16 -0
- data/install/Gemfile +1 -1
- data/install/Launcher.bat +1 -9
- data/install/config/dart/Gemfile +3 -8
- data/install/config/data/crc.txt +148 -132
- data/install/config/system/system.txt +36 -3
- data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/lib/cosmos/config/config_parser.rb +4 -5
- data/lib/cosmos/conversions.rb +2 -0
- data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
- data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
- data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
- data/lib/cosmos/core_ext/time.rb +3 -1
- data/lib/cosmos/dart/config/boot.rb +1 -1
- data/lib/cosmos/dart/config/database.yml +2 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
- data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
- data/lib/cosmos/dart/lib/dart_common.rb +13 -6
- data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
- data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
- data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
- data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
- data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
- data/lib/cosmos/dart/processes/dart.rb +4 -2
- data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
- data/lib/cosmos/dart/processes/dart_ingester.rb +40 -1
- data/lib/cosmos/dart/processes/dart_master.rb +44 -0
- data/lib/cosmos/dart/processes/dart_util.rb +119 -4
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
- data/lib/cosmos/gui/dialogs/details_dialog.rb +44 -29
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +11 -10
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
- data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
- data/lib/cosmos/gui/qt.rb +13 -2
- data/lib/cosmos/gui/qt_tool.rb +71 -43
- data/lib/cosmos/gui/text/ruby_editor.rb +91 -49
- data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
- data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
- data/lib/cosmos/gui/utilities/script_module_gui.rb +117 -91
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
- data/lib/cosmos/interfaces.rb +2 -0
- data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
- data/lib/cosmos/interfaces/interface.rb +9 -1
- data/lib/cosmos/interfaces/linc_interface.rb +3 -3
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
- data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
- data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +9 -4
- data/lib/cosmos/interfaces/serial_interface.rb +7 -1
- data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
- data/lib/cosmos/interfaces/stream_interface.rb +1 -1
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +13 -13
- data/lib/cosmos/io/json_drb.rb +16 -12
- data/lib/cosmos/io/json_drb_object.rb +7 -2
- data/lib/cosmos/io/json_drb_rack.rb +25 -5
- data/lib/cosmos/io/json_rpc.rb +1 -1
- data/lib/cosmos/io/posix_serial_driver.rb +60 -22
- data/lib/cosmos/io/serial_driver.rb +11 -8
- data/lib/cosmos/io/win32_serial_driver.rb +31 -3
- data/lib/cosmos/packet_logs/packet_log_reader.rb +71 -28
- data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
- data/lib/cosmos/packets/commands.rb +30 -9
- data/lib/cosmos/packets/packet.rb +105 -34
- data/lib/cosmos/packets/packet_config.rb +60 -10
- data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
- data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
- data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
- data/lib/cosmos/packets/parsers/xtce_parser.rb +5 -4
- data/lib/cosmos/packets/structure.rb +32 -4
- data/lib/cosmos/packets/structure_item.rb +5 -1
- data/lib/cosmos/packets/telemetry.rb +30 -4
- data/lib/cosmos/script/api_shared.rb +22 -10
- data/lib/cosmos/script/extract.rb +1 -1
- data/lib/cosmos/script/limits.rb +4 -0
- data/lib/cosmos/script/script.rb +29 -20
- data/lib/cosmos/script/scripting.rb +16 -14
- data/lib/cosmos/script/telemetry.rb +3 -1
- data/lib/cosmos/script/tools.rb +18 -8
- data/lib/cosmos/streams/serial_stream.rb +11 -6
- data/lib/cosmos/system/system.rb +214 -76
- data/lib/cosmos/system/target.rb +39 -9
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +116 -55
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
- data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +54 -340
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +74 -52
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +40 -333
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +44 -15
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +8 -1
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +18 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +9 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
- data/lib/cosmos/tools/config_editor/config_editor.rb +181 -94
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +10 -9
- data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +57 -47
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
- data/lib/cosmos/tools/data_viewer/dump_component.rb +3 -9
- data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +68 -42
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
- data/lib/cosmos/tools/launcher/launcher.rb +2 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +59 -41
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +64 -59
- data/lib/cosmos/tools/script_runner/script_runner.rb +198 -123
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +87 -35
- data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +48 -45
- data/lib/cosmos/tools/test_runner/test.rb +5 -2
- data/lib/cosmos/tools/test_runner/test_runner.rb +61 -38
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +24 -12
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +48 -48
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +5 -8
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +94 -91
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +27 -26
- data/lib/cosmos/tools/tlm_viewer/screen.rb +76 -14
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +51 -34
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +3 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +60 -47
- data/lib/cosmos/top_level.rb +37 -13
- data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/excel.rb +81 -24
- data/make_gems.sh +10 -0
- data/run_gui_tests.bat +1 -0
- data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
- data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
- data/spec/core_ext/socket_spec.rb +1 -1
- data/spec/core_ext/time_spec.rb +4 -0
- data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
- data/spec/install/yaml_docs_spec.rb +132 -0
- data/spec/interfaces/linc_interface_spec.rb +1 -1
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
- data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
- data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
- data/spec/io/json_drb_rack_spec.rb +166 -0
- data/spec/io/json_drb_spec.rb +14 -0
- data/spec/io/json_rpc_spec.rb +4 -5
- data/spec/io/posix_serial_driver_spec.rb +81 -0
- data/spec/io/serial_driver_spec.rb +15 -13
- data/spec/io/win32_serial_driver_spec.rb +33 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +106 -52
- data/spec/packets/commands_spec.rb +22 -0
- data/spec/packets/packet_config_spec.rb +29 -16
- data/spec/packets/packet_item_spec.rb +2 -2
- data/spec/packets/packet_spec.rb +39 -6
- data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
- data/spec/packets/parsers/macro_parser_spec.rb +36 -36
- data/spec/packets/parsers/state_parser_spec.rb +69 -11
- data/spec/packets/structure_spec.rb +93 -2
- data/spec/packets/telemetry_spec.rb +63 -10
- data/spec/script/extract_spec.rb +4 -1
- data/spec/script/script_spec.rb +2 -3
- data/spec/script/scripting_spec.rb +2 -1
- data/spec/script/tools_spec.rb +0 -1
- data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
- data/spec/system/system_spec.rb +187 -4
- data/spec/system/target_spec.rb +62 -1
- data/spec/tools/cmd_tlm_server/api_spec.rb +29 -21
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
- data/spec/top_level/top_level_spec.rb +29 -5
- data/spec/utilities/message_log_spec.rb +6 -3
- data/tasks/gemfile_stats.rake +38 -14
- data/test/performance/config/system/system.txt +0 -0
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
- data/test/performance/procedures/cosmos_api_test.rb +1 -1
- data/test/performance/tools/identify_performance.rb +82 -0
- metadata +146 -62
- data/lib/cosmos/dart/Gemfile +0 -69
|
@@ -60,6 +60,16 @@ module Cosmos
|
|
|
60
60
|
# packet is not.
|
|
61
61
|
attr_reader :latest_data
|
|
62
62
|
|
|
63
|
+
# @return [Hash<String>=>Hash<Array>=>Packet] Hash keyed by target name
|
|
64
|
+
# that returns a hash keyed by an array of id values. The id values resolve to the packet
|
|
65
|
+
# defined by that identification. Command version
|
|
66
|
+
attr_reader :cmd_id_value_hash
|
|
67
|
+
|
|
68
|
+
# @return [Hash<String>=>Hash<Array>=>Packet] Hash keyed by target name
|
|
69
|
+
# that returns a hash keyed by an array of id values. The id values resolve to the packet
|
|
70
|
+
# defined by that identification. Telemetry version
|
|
71
|
+
attr_reader :tlm_id_value_hash
|
|
72
|
+
|
|
63
73
|
COMMAND = "Command"
|
|
64
74
|
TELEMETRY = "Telemetry"
|
|
65
75
|
|
|
@@ -73,6 +83,8 @@ module Cosmos
|
|
|
73
83
|
# Returns an array of packets with that target and item.
|
|
74
84
|
@latest_data = {}
|
|
75
85
|
@warnings = []
|
|
86
|
+
@cmd_id_value_hash = {}
|
|
87
|
+
@tlm_id_value_hash = {}
|
|
76
88
|
|
|
77
89
|
# Create unknown packets
|
|
78
90
|
@commands['UNKNOWN'] = {}
|
|
@@ -91,7 +103,8 @@ module Cosmos
|
|
|
91
103
|
# knowledge of the commands, telemetry, and limits groups.
|
|
92
104
|
#
|
|
93
105
|
# @param filename [String] The name of the configuration file
|
|
94
|
-
# @param process_target_name [String] The target name
|
|
106
|
+
# @param process_target_name [String] The target name. Pass nil when parsing
|
|
107
|
+
# an xtce file to automatically determine the target name.
|
|
95
108
|
def process_file(filename, process_target_name)
|
|
96
109
|
# Handle .xtce files
|
|
97
110
|
if File.extname(filename).to_s.downcase == ".xtce"
|
|
@@ -185,14 +198,22 @@ module Cosmos
|
|
|
185
198
|
#######################################################################
|
|
186
199
|
# All the following keywords must have a current packet defined
|
|
187
200
|
#######################################################################
|
|
188
|
-
when 'SELECT_ITEM', 'SELECT_PARAMETER', '
|
|
201
|
+
when 'SELECT_ITEM', 'SELECT_PARAMETER', 'DELETE_ITEM', 'DELETE_PARAMETER', 'ITEM',\
|
|
202
|
+
'PARAMETER', 'ID_ITEM', 'ID_PARAMETER', 'ARRAY_ITEM', 'ARRAY_PARAMETER', 'APPEND_ITEM',\
|
|
203
|
+
'APPEND_PARAMETER', 'APPEND_ID_ITEM', 'APPEND_ID_PARAMETER', 'APPEND_ARRAY_ITEM',\
|
|
204
|
+
'APPEND_ARRAY_PARAMETER', 'MACRO_APPEND_START', 'MACRO_APPEND_END', 'ALLOW_SHORT',\
|
|
205
|
+
'HAZARDOUS', 'PROCESSOR', 'META', 'DISABLE_MESSAGES', 'HIDDEN', 'DISABLED'
|
|
189
206
|
raise parser.error("No current packet for #{keyword}") unless @current_packet
|
|
190
207
|
process_current_packet(parser, keyword, params)
|
|
191
208
|
|
|
192
209
|
#######################################################################
|
|
193
210
|
# All the following keywords must have a current item defined
|
|
194
211
|
#######################################################################
|
|
195
|
-
when 'STATE', 'READ_CONVERSION', 'WRITE_CONVERSION', 'POLY_READ_CONVERSION'
|
|
212
|
+
when 'STATE', 'READ_CONVERSION', 'WRITE_CONVERSION', 'POLY_READ_CONVERSION',\
|
|
213
|
+
'POLY_WRITE_CONVERSION', 'SEG_POLY_READ_CONVERSION', 'SEG_POLY_WRITE_CONVERSION',\
|
|
214
|
+
'GENERIC_READ_CONVERSION_START', 'GENERIC_WRITE_CONVERSION_START', 'REQUIRED',\
|
|
215
|
+
'LIMITS', 'LIMITS_RESPONSE', 'UNITS', 'FORMAT_STRING', 'DESCRIPTION',\
|
|
216
|
+
'MINIMUM_VALUE', 'MAXIMUM_VALUE', 'DEFAULT_VALUE', 'OVERFLOW', 'OVERLAP'
|
|
196
217
|
raise parser.error("No current item for #{keyword}") unless @current_item
|
|
197
218
|
process_current_item(parser, keyword, params)
|
|
198
219
|
|
|
@@ -274,8 +295,16 @@ module Cosmos
|
|
|
274
295
|
if @current_cmd_or_tlm == COMMAND
|
|
275
296
|
PacketParser.check_item_data_types(@current_packet)
|
|
276
297
|
@commands[@current_packet.target_name][@current_packet.packet_name] = @current_packet
|
|
298
|
+
hash = @cmd_id_value_hash[@current_packet.target_name]
|
|
299
|
+
hash = {} unless hash
|
|
300
|
+
@cmd_id_value_hash[@current_packet.target_name] = hash
|
|
301
|
+
update_id_value_hash(hash)
|
|
277
302
|
else
|
|
278
303
|
@telemetry[@current_packet.target_name][@current_packet.packet_name] = @current_packet
|
|
304
|
+
hash = @tlm_id_value_hash[@current_packet.target_name]
|
|
305
|
+
hash = {} unless hash
|
|
306
|
+
@tlm_id_value_hash[@current_packet.target_name] = hash
|
|
307
|
+
update_id_value_hash(hash)
|
|
279
308
|
end
|
|
280
309
|
@current_packet = nil
|
|
281
310
|
@current_item = nil
|
|
@@ -284,6 +313,18 @@ module Cosmos
|
|
|
284
313
|
|
|
285
314
|
protected
|
|
286
315
|
|
|
316
|
+
def update_id_value_hash(hash)
|
|
317
|
+
if @current_packet.id_items.length > 0
|
|
318
|
+
key = []
|
|
319
|
+
@current_packet.id_items.each do |item|
|
|
320
|
+
key << item.id_value
|
|
321
|
+
end
|
|
322
|
+
hash[key] = @current_packet
|
|
323
|
+
else
|
|
324
|
+
hash['CATCHALL'.freeze] = @current_packet
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
287
328
|
def reset_processing_variables
|
|
288
329
|
@current_cmd_or_tlm = nil
|
|
289
330
|
@current_packet = nil
|
|
@@ -294,25 +335,31 @@ module Cosmos
|
|
|
294
335
|
def process_current_packet(parser, keyword, params)
|
|
295
336
|
case keyword
|
|
296
337
|
|
|
297
|
-
# Select an item in the current
|
|
298
|
-
when 'SELECT_PARAMETER', 'SELECT_ITEM'
|
|
338
|
+
# Select or delete an item in the current packet
|
|
339
|
+
when 'SELECT_PARAMETER', 'SELECT_ITEM', 'DELETE_PARAMETER', 'DELETE_ITEM'
|
|
299
340
|
if (@current_cmd_or_tlm == COMMAND) && (keyword.split('_')[1] == 'ITEM')
|
|
300
|
-
raise parser.error("
|
|
341
|
+
raise parser.error("#{keyword} only applies to telemetry packets")
|
|
301
342
|
end
|
|
302
343
|
if (@current_cmd_or_tlm == TELEMETRY) && (keyword.split('_')[1] == 'PARAMETER')
|
|
303
|
-
raise parser.error("
|
|
344
|
+
raise parser.error("#{keyword} only applies to command packets")
|
|
304
345
|
end
|
|
305
346
|
usage = "#{keyword} <#{keyword.split('_')[1]} NAME>"
|
|
306
347
|
finish_item()
|
|
307
348
|
parser.verify_num_parameters(1, 1, usage)
|
|
308
349
|
begin
|
|
309
|
-
|
|
350
|
+
if keyword.include?("SELECT")
|
|
351
|
+
@current_item = @current_packet.get_item(params[0])
|
|
352
|
+
else # DELETE
|
|
353
|
+
@current_packet.delete_item(params[0])
|
|
354
|
+
end
|
|
310
355
|
rescue # Rescue the default execption to provide a nicer error message
|
|
311
356
|
raise parser.error("#{params[0]} not found in #{@current_cmd_or_tlm.downcase} packet #{@current_packet.target_name} #{@current_packet.packet_name}", usage)
|
|
312
357
|
end
|
|
313
358
|
|
|
314
359
|
# Start a new telemetry item in the current packet
|
|
315
|
-
when 'ITEM', 'PARAMETER', 'ID_ITEM', 'ID_PARAMETER', 'ARRAY_ITEM', 'ARRAY_PARAMETER'
|
|
360
|
+
when 'ITEM', 'PARAMETER', 'ID_ITEM', 'ID_PARAMETER', 'ARRAY_ITEM', 'ARRAY_PARAMETER',\
|
|
361
|
+
'APPEND_ITEM', 'APPEND_PARAMETER', 'APPEND_ID_ITEM', 'APPEND_ID_PARAMETER',\
|
|
362
|
+
'APPEND_ARRAY_ITEM', 'APPEND_ARRAY_PARAMETER'
|
|
316
363
|
start_item(parser)
|
|
317
364
|
|
|
318
365
|
# Start the creation of a macro-expanded list of items
|
|
@@ -472,7 +519,6 @@ module Cosmos
|
|
|
472
519
|
|
|
473
520
|
# Define the units of the current telemetry item
|
|
474
521
|
when 'UNITS'
|
|
475
|
-
raise parser.error("Items with STATE can't define UNITS") if @current_item.states
|
|
476
522
|
usage = "UNITS <FULL UNITS NAME> <ABBREVIATED UNITS NAME>"
|
|
477
523
|
parser.verify_num_parameters(2, 2, usage)
|
|
478
524
|
@current_item.units_full = params[0]
|
|
@@ -538,6 +584,10 @@ module Cosmos
|
|
|
538
584
|
parser.verify_num_parameters(1, 1, usage)
|
|
539
585
|
@current_item.overflow = params[0].to_s.upcase.intern
|
|
540
586
|
|
|
587
|
+
when 'OVERLAP'
|
|
588
|
+
parser.verify_num_parameters(0, 0, 'OVERLAP')
|
|
589
|
+
@current_item.overlap = true
|
|
590
|
+
|
|
541
591
|
end
|
|
542
592
|
end
|
|
543
593
|
|
|
@@ -14,7 +14,6 @@ module Cosmos
|
|
|
14
14
|
# @param parser [ConfigParser] Configuration parser
|
|
15
15
|
# @param item [Packet] The current item
|
|
16
16
|
def self.parse(parser, item)
|
|
17
|
-
raise parser.error("Items with STATE can't define FORMAT_STRING") if item.states
|
|
18
17
|
@parser = FormatStringParser.new(parser)
|
|
19
18
|
@parser.verify_parameters()
|
|
20
19
|
@parser.create_format_string(item)
|
|
@@ -21,7 +21,6 @@ module Cosmos
|
|
|
21
21
|
# appended with any warnings found when parsing the limits
|
|
22
22
|
def self.parse(parser, packet, cmd_or_tlm, item, warnings)
|
|
23
23
|
raise parser.error("Items with LIMITS can't define STATE") if item.limits.values
|
|
24
|
-
raise parser.error("Items with FORMAT_STRING can't define STATE") if item.format_string
|
|
25
24
|
raise parser.error("Items with UNITS can't define STATE") if item.units
|
|
26
25
|
@parser = StateParser.new(parser)
|
|
27
26
|
@parser.verify_parameters(cmd_or_tlm)
|
|
@@ -295,6 +295,8 @@ module Cosmos
|
|
|
295
295
|
xml['xtce'].IntegerDataEncoding(:sizeInBits => item.bit_size, :encoding => encoding)
|
|
296
296
|
xml['xtce'].EnumerationList do
|
|
297
297
|
item.states.each do |state_name, state_value|
|
|
298
|
+
# Skip the special COSMOS 'ANY' enumerated state
|
|
299
|
+
next if state_value == 'ANY'
|
|
298
300
|
xml['xtce'].Enumeration(:value => state_value, :label => state_name)
|
|
299
301
|
end
|
|
300
302
|
end
|
|
@@ -25,8 +25,8 @@ module Cosmos
|
|
|
25
25
|
# @param warnings [Array<String>] Array of strings listing all the warnings
|
|
26
26
|
# that were created while parsing the configuration
|
|
27
27
|
# @param filename [String] The name of the configuration file
|
|
28
|
-
# @param target_name [String]
|
|
29
|
-
def self.process(commands, telemetry, warnings, filename, target_name)
|
|
28
|
+
# @param target_name [String] Override the target name found in the XTCE file
|
|
29
|
+
def self.process(commands, telemetry, warnings, filename, target_name = nil)
|
|
30
30
|
XtceParser.new(commands, telemetry, warnings, filename, target_name)
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -49,7 +49,7 @@ module Cosmos
|
|
|
49
49
|
|
|
50
50
|
private
|
|
51
51
|
|
|
52
|
-
def initialize(commands, telemetry, warnings, filename, target_name)
|
|
52
|
+
def initialize(commands, telemetry, warnings, filename, target_name = nil)
|
|
53
53
|
reset_processing_variables()
|
|
54
54
|
@commands = commands
|
|
55
55
|
@telemetry = telemetry
|
|
@@ -60,6 +60,7 @@ module Cosmos
|
|
|
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
|
+
# Determine the @current_target_name
|
|
63
64
|
xtce_process_element(doc.root)
|
|
64
65
|
@current_target_name = target_name if target_name
|
|
65
66
|
doc.root.children.each do |child|
|
|
@@ -650,7 +651,7 @@ module Cosmos
|
|
|
650
651
|
if base_packet
|
|
651
652
|
count = 0
|
|
652
653
|
base_packet.sorted_items.each do |item|
|
|
653
|
-
unless ['RECEIVED_TIMESECONDS', 'RECEIVED_TIMEFORMATTED', 'RECEIVED_COUNT'].include?(item.name)
|
|
654
|
+
unless ['PACKET_TIMESECONDS', 'PACKET_TIMEFORMATTED', 'RECEIVED_TIMESECONDS', 'RECEIVED_TIMEFORMATTED', 'RECEIVED_COUNT'].include?(item.name)
|
|
654
655
|
begin
|
|
655
656
|
@current_packet.get_item(item.name)
|
|
656
657
|
rescue
|
|
@@ -195,7 +195,7 @@ module Cosmos
|
|
|
195
195
|
last_item = @sorted_items[-1]
|
|
196
196
|
@sorted_items << item
|
|
197
197
|
# If the current item or last item have a negative offset then we have
|
|
198
|
-
# to re-sort. We also re-sort if the current item is less than the
|
|
198
|
+
# to re-sort. We also re-sort if the current item is less than the last
|
|
199
199
|
# item because we are inserting.
|
|
200
200
|
if last_item.bit_offset <= 0 or item.bit_offset <= 0 or item.bit_offset < last_item.bit_offset
|
|
201
201
|
@sorted_items = @sorted_items.sort
|
|
@@ -303,6 +303,23 @@ module Cosmos
|
|
|
303
303
|
end
|
|
304
304
|
end
|
|
305
305
|
|
|
306
|
+
# @param name [String] Name of the item to delete in the items Hash
|
|
307
|
+
def delete_item(name)
|
|
308
|
+
item = @items[name.upcase]
|
|
309
|
+
raise ArgumentError, "Unknown item: #{name}" unless item
|
|
310
|
+
|
|
311
|
+
# Find the item to delete in the sorted_items array
|
|
312
|
+
item_index = nil
|
|
313
|
+
@sorted_items.each_with_index do |sorted_item, index|
|
|
314
|
+
if sorted_item.name == item.name
|
|
315
|
+
item_index = index
|
|
316
|
+
break
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
@sorted_items.delete_at(item_index)
|
|
320
|
+
@items.delete(name.upcase)
|
|
321
|
+
end
|
|
322
|
+
|
|
306
323
|
# Write a value to the buffer based on the item definition
|
|
307
324
|
#
|
|
308
325
|
# @param item [StructureItem] Instance of StructureItem or one of its subclasses
|
|
@@ -370,12 +387,14 @@ module Cosmos
|
|
|
370
387
|
# parameter to check whether to perform conversions on the item.
|
|
371
388
|
# @param indent [Integer] Amount to indent before printing the item name
|
|
372
389
|
# @param buffer [String] The binary buffer to write the value to
|
|
390
|
+
# @param ignored [Array<String>] List of items to ignore when building the string
|
|
373
391
|
# @return [String] String formatted with all the item names and values
|
|
374
|
-
def formatted(value_type = :RAW, indent = 0, buffer = @buffer)
|
|
392
|
+
def formatted(value_type = :RAW, indent = 0, buffer = @buffer, ignored = nil)
|
|
375
393
|
indent_string = ' ' * indent
|
|
376
394
|
string = ''
|
|
377
395
|
synchronize_allow_reads(true) do
|
|
378
396
|
@sorted_items.each do |item|
|
|
397
|
+
next if ignored && ignored.include?(item.name)
|
|
379
398
|
if (item.data_type != :BLOCK) ||
|
|
380
399
|
(item.data_type == :BLOCK and value_type != :RAW and
|
|
381
400
|
item.respond_to? :read_conversion and item.read_conversion)
|
|
@@ -445,9 +464,18 @@ module Cosmos
|
|
|
445
464
|
|
|
446
465
|
protected
|
|
447
466
|
|
|
467
|
+
MUTEX = Mutex.new
|
|
468
|
+
|
|
469
|
+
def setup_mutex
|
|
470
|
+
return if @mutex
|
|
471
|
+
MUTEX.synchronize do
|
|
472
|
+
@mutex ||= Mutex.new
|
|
473
|
+
end
|
|
474
|
+
end
|
|
475
|
+
|
|
448
476
|
# Take the structure mutex to ensure the buffer does not change while you perform activities
|
|
449
477
|
def synchronize
|
|
450
|
-
|
|
478
|
+
setup_mutex()
|
|
451
479
|
@mutex.synchronize {|| yield}
|
|
452
480
|
end
|
|
453
481
|
|
|
@@ -457,7 +485,7 @@ module Cosmos
|
|
|
457
485
|
# lower level calls to go forward without getting the mutex
|
|
458
486
|
def synchronize_allow_reads(top = false)
|
|
459
487
|
@mutex_allow_reads ||= false
|
|
460
|
-
|
|
488
|
+
setup_mutex()
|
|
461
489
|
if top
|
|
462
490
|
@mutex.synchronize do
|
|
463
491
|
@mutex_allow_reads = Thread.current
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
require 'cosmos/ext/packet' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
|
|
12
12
|
|
|
13
13
|
module Cosmos
|
|
14
|
-
|
|
15
14
|
# Maintains knowledge of an item in a Structure. Multiple StructureItems
|
|
16
15
|
# compose a Structure.
|
|
17
16
|
class StructureItem
|
|
@@ -59,6 +58,9 @@ module Cosmos
|
|
|
59
58
|
# @return [Symbol] {BinaryAccessor::OVERFLOW_TYPES}
|
|
60
59
|
attr_reader :overflow
|
|
61
60
|
|
|
61
|
+
# @return [Boolean] Whether this structure item can overlap another item in the same packet
|
|
62
|
+
attr_accessor :overlap
|
|
63
|
+
|
|
62
64
|
# A large buffer size in bits (1 Megabyte)
|
|
63
65
|
LARGE_BUFFER_SIZE_BITS = 1024 * 1024 * 8
|
|
64
66
|
|
|
@@ -73,6 +75,7 @@ module Cosmos
|
|
|
73
75
|
# @param endianness [Symbol] {BinaryAccessor::ENDIANNESS}
|
|
74
76
|
# @param array_size [Integer, nil] Size of the array item in bits. For
|
|
75
77
|
# example, if the bit_size is 8, an array_size of 16 holds two values.
|
|
78
|
+
# @param overflow [Symbol] {BinaryAccessor::OVERFLOW_TYPES}
|
|
76
79
|
def initialize(name, bit_offset, bit_size, data_type, endianness, array_size = nil, overflow = :ERROR)
|
|
77
80
|
@structure_item_constructed = false
|
|
78
81
|
# Assignment order matters due to verifications!
|
|
@@ -83,6 +86,7 @@ module Cosmos
|
|
|
83
86
|
self.bit_size = bit_size
|
|
84
87
|
self.array_size = array_size
|
|
85
88
|
self.overflow = overflow
|
|
89
|
+
self.overlap = false
|
|
86
90
|
@create_index = @@create_index
|
|
87
91
|
@@create_index += 1
|
|
88
92
|
@structure_item_constructed = true
|
|
@@ -266,17 +266,33 @@ module Cosmos
|
|
|
266
266
|
target_names = target_names() unless target_names
|
|
267
267
|
|
|
268
268
|
target_names.each do |target_name|
|
|
269
|
+
target_name = target_name.to_s.upcase
|
|
270
|
+
|
|
269
271
|
target_packets = nil
|
|
270
272
|
begin
|
|
271
273
|
target_packets = packets(target_name)
|
|
274
|
+
#puts target_packets.length
|
|
272
275
|
rescue RuntimeError
|
|
273
276
|
# No telemetry for this target
|
|
274
277
|
next
|
|
275
278
|
end
|
|
276
279
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
+
target = System.targets[target_name]
|
|
281
|
+
if target and target.tlm_unique_id_mode
|
|
282
|
+
# Iterate through the packets and see if any represent the buffer
|
|
283
|
+
target_packets.each do |packet_name, packet|
|
|
284
|
+
return packet if packet.identify?(packet_data)
|
|
285
|
+
end
|
|
286
|
+
else
|
|
287
|
+
# Do a hash lookup to quickly identify the packet
|
|
288
|
+
if target_packets.length > 0
|
|
289
|
+
packet = target_packets.first[1]
|
|
290
|
+
key = packet.read_id_values(packet_data)
|
|
291
|
+
hash = @config.tlm_id_value_hash[target_name]
|
|
292
|
+
identified_packet = hash[key]
|
|
293
|
+
identified_packet = hash['CATCHALL'.freeze] unless identified_packet
|
|
294
|
+
return identified_packet if identified_packet
|
|
295
|
+
end
|
|
280
296
|
end
|
|
281
297
|
end
|
|
282
298
|
|
|
@@ -290,6 +306,8 @@ module Cosmos
|
|
|
290
306
|
identified_packet = identified_packet.clone
|
|
291
307
|
identified_packet.buffer = packet.buffer
|
|
292
308
|
identified_packet.received_time = packet.received_time
|
|
309
|
+
identified_packet.stored = packet.stored
|
|
310
|
+
identified_packet.extra = packet.extra
|
|
293
311
|
return identified_packet
|
|
294
312
|
end
|
|
295
313
|
|
|
@@ -302,6 +320,8 @@ module Cosmos
|
|
|
302
320
|
identified_packet = identified_packet.clone
|
|
303
321
|
identified_packet.buffer = packet.buffer
|
|
304
322
|
identified_packet.received_time = packet.received_time
|
|
323
|
+
identified_packet.stored = packet.stored
|
|
324
|
+
identified_packet.extra = packet.extra
|
|
305
325
|
return identified_packet
|
|
306
326
|
end
|
|
307
327
|
|
|
@@ -417,7 +437,13 @@ module Cosmos
|
|
|
417
437
|
splash.progress = index / total
|
|
418
438
|
end
|
|
419
439
|
|
|
420
|
-
|
|
440
|
+
# Note: System only has declared target structures but telemetry may have more
|
|
441
|
+
system_target = System.targets[target_name]
|
|
442
|
+
if system_target
|
|
443
|
+
ignored_items = system_target.ignored_items
|
|
444
|
+
else
|
|
445
|
+
ignored_items = []
|
|
446
|
+
end
|
|
421
447
|
|
|
422
448
|
packets(target_name).each do |packet_name, packet|
|
|
423
449
|
# We don't audit against hidden or disabled packets
|
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
module Cosmos
|
|
12
|
+
# Error raised by the API when a check fails
|
|
13
|
+
class CheckError < RuntimeError; end
|
|
14
|
+
# Error raised when a Script should be stopped
|
|
15
|
+
class StopScript < StandardError; end
|
|
16
|
+
# Error raised when a TestCase should be skipped by TestRunner
|
|
17
|
+
class SkipTestCase < StandardError; end
|
|
18
|
+
|
|
12
19
|
module ApiShared
|
|
13
20
|
DEFAULT_TLM_POLLING_RATE = 0.25
|
|
14
21
|
|
|
@@ -477,7 +484,7 @@ module Cosmos
|
|
|
477
484
|
path
|
|
478
485
|
end
|
|
479
486
|
|
|
480
|
-
def check_file_cache_for_instrumented_script(path,
|
|
487
|
+
def check_file_cache_for_instrumented_script(path, hash_string)
|
|
481
488
|
file_text = nil
|
|
482
489
|
instrumented_script = nil
|
|
483
490
|
cached = true
|
|
@@ -498,8 +505,8 @@ module Cosmos
|
|
|
498
505
|
if use_file_cache
|
|
499
506
|
# Check file based instrumented cache
|
|
500
507
|
flat_path = path.tr("/", "_").gsub("\\", "_").tr(":", "_").tr(" ", "_")
|
|
501
|
-
|
|
502
|
-
cache_filename = File.join(cache_path,
|
|
508
|
+
flat_path_with_hash_string = flat_path + '_' + hash_string
|
|
509
|
+
cache_filename = File.join(cache_path, flat_path_with_hash_string)
|
|
503
510
|
end
|
|
504
511
|
|
|
505
512
|
begin
|
|
@@ -536,24 +543,27 @@ module Cosmos
|
|
|
536
543
|
path = _get_procedure_path(procedure_name)
|
|
537
544
|
|
|
538
545
|
if defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
|
|
539
|
-
|
|
546
|
+
hashing_sum = nil
|
|
540
547
|
begin
|
|
541
|
-
|
|
548
|
+
hashing_result = Cosmos.hash_files([path], nil, System.hashing_algorithm)
|
|
549
|
+
hash_string = hashing_result.hexdigest
|
|
550
|
+
# Only use at most, 32 characters of the hex
|
|
551
|
+
hash_string = hash_string[-32..-1] if hash_string.length >= 32
|
|
542
552
|
rescue Exception => error
|
|
543
|
-
raise "Error calculating
|
|
553
|
+
raise "Error calculating hash string on procedure file : #{path}"
|
|
544
554
|
end
|
|
545
555
|
|
|
546
556
|
# Check RAM based instrumented cache
|
|
547
557
|
instrumented_cache = ScriptRunnerFrame.instrumented_cache[path]
|
|
548
558
|
instrumented_script = nil
|
|
549
|
-
if instrumented_cache and
|
|
559
|
+
if instrumented_cache and hash_string == instrumented_cache[1]
|
|
550
560
|
# Use cached instrumentation
|
|
551
561
|
instrumented_script = instrumented_cache[0]
|
|
552
562
|
else
|
|
553
|
-
file_text, instrumented_script, cached = check_file_cache_for_instrumented_script(path,
|
|
563
|
+
file_text, instrumented_script, cached = check_file_cache_for_instrumented_script(path, hash_string)
|
|
554
564
|
# Cache instrumentation into RAM
|
|
555
565
|
ScriptRunnerFrame.file_cache[path] = file_text
|
|
556
|
-
ScriptRunnerFrame.instrumented_cache[path] = [instrumented_script,
|
|
566
|
+
ScriptRunnerFrame.instrumented_cache[path] = [instrumented_script, hash_string]
|
|
557
567
|
end
|
|
558
568
|
|
|
559
569
|
Object.class_eval(instrumented_script, path, 1)
|
|
@@ -789,6 +799,8 @@ module Cosmos
|
|
|
789
799
|
def cosmos_script_sleep(sleep_time = nil)
|
|
790
800
|
return false if $disconnected_targets
|
|
791
801
|
if defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
|
|
802
|
+
ScriptRunnerFrame.instance.active_script_highlight('green')
|
|
803
|
+
|
|
792
804
|
sleep_time = 30000000 unless sleep_time # Handle infinite wait
|
|
793
805
|
if sleep_time > 0.0
|
|
794
806
|
end_time = Time.now.sys + sleep_time
|
|
@@ -937,7 +949,7 @@ module Cosmos
|
|
|
937
949
|
end
|
|
938
950
|
|
|
939
951
|
def run_tlm_viewer(action, display_name = '')
|
|
940
|
-
tlm_viewer = JsonDRbObject.new System.connect_hosts['TLMVIEWER_API'], System.ports['TLMVIEWER_API']
|
|
952
|
+
tlm_viewer = JsonDRbObject.new System.connect_hosts['TLMVIEWER_API'], System.ports['TLMVIEWER_API'], 1.0, Cosmos::System.x_csrf_token
|
|
941
953
|
begin
|
|
942
954
|
yield tlm_viewer
|
|
943
955
|
tlm_viewer.disconnect
|