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
|
@@ -28,6 +28,10 @@ module Cosmos
|
|
|
28
28
|
def focusInEvent(event)
|
|
29
29
|
emit focus_in
|
|
30
30
|
end
|
|
31
|
+
|
|
32
|
+
def wheelEvent(event)
|
|
33
|
+
event.ignore()
|
|
34
|
+
end
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
class ConfigEditorFrame < Qt::Widget
|
|
@@ -249,6 +253,8 @@ module Cosmos
|
|
|
249
253
|
elsif @filename.include?('/config/tools/')
|
|
250
254
|
if @filename.include?('cmd_tlm_server')
|
|
251
255
|
@file_type = "Server Configuration"
|
|
256
|
+
elsif @filename.include?('cmd_sequence')
|
|
257
|
+
@file_type = "Command Sequence Configuration"
|
|
252
258
|
elsif @filename.include?('data_viewer')
|
|
253
259
|
@file_type = "Data Viewer Configuration"
|
|
254
260
|
elsif @filename.include?('handbook_creator')
|
|
@@ -288,17 +294,10 @@ module Cosmos
|
|
|
288
294
|
end
|
|
289
295
|
emit file_type_changed # Tell ConfigEditor about the file type
|
|
290
296
|
load_meta_data()
|
|
291
|
-
display_keyword_help()
|
|
292
297
|
end
|
|
293
298
|
|
|
294
299
|
def load_meta_data
|
|
295
|
-
|
|
296
|
-
type = ConfigEditor::CONFIGURATION_FILES[@file_type][0]
|
|
297
|
-
@file_meta = MetaConfigParser.load("#{type}.yaml")
|
|
298
|
-
rescue => error
|
|
299
|
-
Kernel.raise $! if error.is_a? Psych::SyntaxError
|
|
300
|
-
@file_meta = nil
|
|
301
|
-
end
|
|
300
|
+
@file_meta = ConfigEditor.meta[@file_type]
|
|
302
301
|
display_keyword_help()
|
|
303
302
|
end
|
|
304
303
|
|
|
@@ -563,7 +562,8 @@ module Cosmos
|
|
|
563
562
|
if attribute_value.is_a? Hash
|
|
564
563
|
# If the value is a Hash then we have parameter specific
|
|
565
564
|
# parameters embedded in this parameter we have to parse
|
|
566
|
-
value_widget =
|
|
565
|
+
value_widget = FocusComboBox.new()
|
|
566
|
+
value_widget.setFocusPolicy(Qt::StrongFocus)
|
|
567
567
|
value_widget.addItem(current_value) unless attribute_value.keys.include?(current_value)
|
|
568
568
|
value_widget.addItems(attribute_value.keys)
|
|
569
569
|
value_widget.setCurrentText(current_value)
|
|
@@ -579,6 +579,7 @@ module Cosmos
|
|
|
579
579
|
end
|
|
580
580
|
elsif attribute_value.is_a? Array # Just a bunch of strings
|
|
581
581
|
value_widget = FocusComboBox.new()
|
|
582
|
+
value_widget.setFocusPolicy(Qt::StrongFocus)
|
|
582
583
|
value_widget.addItems(attribute_value)
|
|
583
584
|
if required && current_value.nil?
|
|
584
585
|
value_widget.setStyleSheet("border: 1px solid red")
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU 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
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/gui/qt'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
# Creates a dialog asking to create a new system configuration.
|
|
16
|
+
class SystemConfigDialog < Qt::Dialog
|
|
17
|
+
def initialize(parent)
|
|
18
|
+
super(parent) # MUST BE FIRST
|
|
19
|
+
@parent = parent
|
|
20
|
+
Cosmos.load_cosmos_icon
|
|
21
|
+
|
|
22
|
+
self.window_title = 'Create System Configuration'
|
|
23
|
+
layout = Qt::VBoxLayout.new
|
|
24
|
+
self.layout = layout
|
|
25
|
+
|
|
26
|
+
description = Qt::Label.new("Creating a new COSMOS system configuration allows you to reuse "\
|
|
27
|
+
"an existing COSMOS configuration but include different targets and/or change configuration details.")
|
|
28
|
+
description.setWordWrap(true)
|
|
29
|
+
layout.addWidget(description)
|
|
30
|
+
|
|
31
|
+
select = Qt::Label.new("Select an existing system.txt file to base the new configuration on:")
|
|
32
|
+
select.setWordWrap(true)
|
|
33
|
+
layout.addWidget(select)
|
|
34
|
+
@system_combo = Qt::ComboBox.new
|
|
35
|
+
Dir[File.join(::Cosmos::USERPATH, 'config', 'system', '*.txt')].each do |system|
|
|
36
|
+
@system_combo.addItem(File.basename(system))
|
|
37
|
+
end
|
|
38
|
+
layout.addWidget(@system_combo)
|
|
39
|
+
layout.addSpacing(10)
|
|
40
|
+
|
|
41
|
+
name_label = Qt::Label.new("Enter a name for the new system configuration that is descriptive "\
|
|
42
|
+
" but relatively short. For example, 'EMI', 'SW Test', etc:")
|
|
43
|
+
name_label.setWordWrap(true)
|
|
44
|
+
layout.addWidget(name_label)
|
|
45
|
+
@system_name = Qt::LineEdit.new
|
|
46
|
+
layout.addWidget(@system_name)
|
|
47
|
+
layout.addSpacing(10)
|
|
48
|
+
|
|
49
|
+
info = Qt::Label.new("This action will create a new COSMOS system.txt, "\
|
|
50
|
+
"cmd_tlm_server.txt, launcher.txt, and Windows Batch file appended with the specified name. "\
|
|
51
|
+
"For example, system_emi.txt, system_sw_test.txt, launcher_emi.txt, launcher_sw_test.txt, etc.")
|
|
52
|
+
info.setWordWrap(true)
|
|
53
|
+
layout.addWidget(info)
|
|
54
|
+
|
|
55
|
+
ok_button = Qt::PushButton.new('Ok')
|
|
56
|
+
connect(ok_button, SIGNAL('clicked()'), self, SLOT('accept()'))
|
|
57
|
+
cancel_button = Qt::PushButton.new('Cancel')
|
|
58
|
+
connect(cancel_button, SIGNAL('clicked()'), self, SLOT('reject()'))
|
|
59
|
+
|
|
60
|
+
hlayout = Qt::HBoxLayout.new
|
|
61
|
+
hlayout.addWidget(ok_button, 0, Qt::AlignLeft)
|
|
62
|
+
hlayout.addWidget(cancel_button, 0, Qt::AlignRight)
|
|
63
|
+
layout.addLayout(hlayout)
|
|
64
|
+
|
|
65
|
+
resize(500, 300)
|
|
66
|
+
|
|
67
|
+
self.show()
|
|
68
|
+
self.raise()
|
|
69
|
+
if self.exec() == Qt::Dialog::Accepted
|
|
70
|
+
build_system_config()
|
|
71
|
+
end
|
|
72
|
+
self.dispose()
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def build_system_config
|
|
76
|
+
new_suffix = @system_name.text.downcase.gsub(' ','_')
|
|
77
|
+
existing_system = @system_combo.text
|
|
78
|
+
# Look for system_xxx.txt where we find the 'xxx' as the existing suffix
|
|
79
|
+
if existing = existing_system.scan(/.*?_(.*)\.txt/)[0]
|
|
80
|
+
existing_suffix = existing[0]
|
|
81
|
+
else
|
|
82
|
+
existing_suffix = nil
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# First determine all the new files and make sure they don't already exist
|
|
86
|
+
new_system = File.join(Cosmos::USERPATH, 'config', 'system', "system_#{new_suffix}.txt")
|
|
87
|
+
return if file_exist?(new_system)
|
|
88
|
+
cmd_tlm_server_path = File.join('config', 'tools', 'cmd_tlm_server')
|
|
89
|
+
new_cmd_tlm_server = File.join(Cosmos::USERPATH, cmd_tlm_server_path, "cmd_tlm_server_#{new_suffix}.txt")
|
|
90
|
+
return if file_exist?(new_cmd_tlm_server)
|
|
91
|
+
launcher_path = File.join('config', 'tools', 'launcher')
|
|
92
|
+
new_launcher = File.join(Cosmos::USERPATH, launcher_path, "launcher_#{new_suffix}.txt")
|
|
93
|
+
return if file_exist?(new_launcher)
|
|
94
|
+
new_batch = File.join(Cosmos::USERPATH, "Launcher#{@system_name.text.gsub(' ','')}.bat")
|
|
95
|
+
return if file_exist?(new_batch)
|
|
96
|
+
|
|
97
|
+
# Create the new system.txt. We know the existing exists so simply copy it.
|
|
98
|
+
File.open(new_system, 'w') do |file|
|
|
99
|
+
file.puts File.read(File.join(::Cosmos::USERPATH, 'config', 'system', existing_system))
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Create the new cmd_tlm_server config and update the TITLE
|
|
103
|
+
data = get_config_contents(existing_suffix, cmd_tlm_server_path, 'cmd_tlm_server')
|
|
104
|
+
data.sub!(/\s*TITLE.*/, "TITLE 'COSMOS Command and Telemetry Server - #{@system_name.text} Configuration'")
|
|
105
|
+
File.open(new_cmd_tlm_server, 'w') {|file| file.puts data }
|
|
106
|
+
|
|
107
|
+
# Create the new launcher config and update the TITLE and Server LAUNCH commands
|
|
108
|
+
data = get_config_contents(existing_suffix, launcher_path, 'launcher')
|
|
109
|
+
data.sub!(/\s*TITLE.*/, "TITLE 'Launcher - #{@system_name.text} Configuration'")
|
|
110
|
+
data.gsub!(/LAUNCH\s+(\w+)/, "LAUNCH \\1 --system system_#{new_suffix}.txt")
|
|
111
|
+
# Convert all --config to -c to make it easier to replace in the next step
|
|
112
|
+
data.gsub!(/(.*LAUNCH\s+CmdTlmServer.*)(--config)(.*)/, "\\1-c\\3")
|
|
113
|
+
data.gsub!(/(.*LAUNCH\s+CmdTlmServer.*)-c\s+(\w+)(.*)/, "\\1-c cmd_tlm_server_#{new_suffix}\\3")
|
|
114
|
+
File.open(new_launcher, 'w') {|file| file.puts data }
|
|
115
|
+
|
|
116
|
+
File.open(new_batch, 'w') do |file|
|
|
117
|
+
file.puts "call tools\\Launcher.bat --config launcher_#{new_suffix}.txt --system system_#{new_suffix}.txt"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
@parent.file_open(new_batch)
|
|
121
|
+
@parent.file_open(new_launcher)
|
|
122
|
+
@parent.file_open(new_cmd_tlm_server)
|
|
123
|
+
@parent.file_open(new_system)
|
|
124
|
+
Qt::MessageBox.information(self, "System Config Creation Success",
|
|
125
|
+
"The new system configuration was successfully created.\n\n"\
|
|
126
|
+
"The newly created files have been opened for further customization.")
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def file_exist?(path)
|
|
130
|
+
if File.exist?(path)
|
|
131
|
+
Qt::MessageBox.warning(self, "Config file exists!", "#{path} already exists!")
|
|
132
|
+
return true
|
|
133
|
+
else
|
|
134
|
+
return false
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def get_config_contents(existing_suffix, base_path, file_name)
|
|
139
|
+
contents = ''
|
|
140
|
+
if existing_suffix
|
|
141
|
+
existing_file = File.join(Cosmos::USERPATH, base_path, "#{file_name}_#{existing_suffix}.txt")
|
|
142
|
+
if File.exist?(existing_file)
|
|
143
|
+
contents = File.read(existing_file)
|
|
144
|
+
end
|
|
145
|
+
else
|
|
146
|
+
# Otherwise see if there is a basic one we can copy
|
|
147
|
+
basic_config = File.join(Cosmos::USERPATH, base_path, "#{file_name}.txt")
|
|
148
|
+
if File.exist?(basic_config)
|
|
149
|
+
contents = File.read(basic_config)
|
|
150
|
+
else
|
|
151
|
+
# Otherwise use the install config
|
|
152
|
+
contents = File.read(File.join(Cosmos::PATH, 'install', base_path, "#{file_name}.txt"))
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
return contents
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
require 'cosmos'
|
|
12
12
|
Cosmos.catch_fatal_exception do
|
|
13
|
-
require 'cosmos/script'
|
|
14
|
-
require 'cosmos/config/config_parser'
|
|
15
13
|
require 'cosmos/gui/qt_tool'
|
|
16
14
|
require 'cosmos/gui/dialogs/splash'
|
|
17
15
|
require 'cosmos/gui/dialogs/progress_dialog'
|
|
@@ -22,10 +20,14 @@ Cosmos.catch_fatal_exception do
|
|
|
22
20
|
require 'cosmos/gui/widgets/realtime_button_bar'
|
|
23
21
|
require 'cosmos/tools/data_viewer/data_viewer_component'
|
|
24
22
|
require 'cosmos/tools/data_viewer/dump_component'
|
|
23
|
+
require 'cosmos/tools/data_viewer/text_component'
|
|
24
|
+
require 'cosmos/config/config_parser'
|
|
25
|
+
require 'cosmos/script'
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
module Cosmos
|
|
28
|
-
|
|
29
|
+
# Displays data in text format. Useful for telemetry that doesn't work well with
|
|
30
|
+
# telemetry screens such as memory dumps or large amounts of text.
|
|
29
31
|
class DataViewer < QtTool
|
|
30
32
|
slots 'context_menu(const QPoint&)'
|
|
31
33
|
slots 'handle_tab_change(int)'
|
|
@@ -80,7 +82,8 @@ module Cosmos
|
|
|
80
82
|
component.initialize_gui
|
|
81
83
|
@tab_book.addTab(component, component.tab_name)
|
|
82
84
|
end
|
|
83
|
-
if
|
|
85
|
+
toggle_replay_mode() if options.replay
|
|
86
|
+
if @auto_start || options.start
|
|
84
87
|
handle_start()
|
|
85
88
|
end
|
|
86
89
|
ConfigParser.splash = nil
|
|
@@ -97,62 +100,62 @@ module Cosmos
|
|
|
97
100
|
super()
|
|
98
101
|
|
|
99
102
|
# File Menu Actions
|
|
100
|
-
@open_log = Qt::Action.new(
|
|
101
|
-
@open_log_keyseq = Qt::KeySequence.new(
|
|
103
|
+
@open_log = Qt::Action.new('&Open Log File', self)
|
|
104
|
+
@open_log_keyseq = Qt::KeySequence.new('Ctrl+O')
|
|
102
105
|
@open_log.shortcut = @open_log_keyseq
|
|
103
|
-
@open_log.statusTip =
|
|
106
|
+
@open_log.statusTip = 'Open telemetry log file for processing'
|
|
104
107
|
@open_log.connect(SIGNAL('triggered()')) { handle_open_log_file() }
|
|
105
108
|
|
|
106
|
-
@query_dart = Qt::Action.new(
|
|
107
|
-
@query_dart_keyseq = Qt::KeySequence.new(
|
|
109
|
+
@query_dart = Qt::Action.new('&Query DART Database', self)
|
|
110
|
+
@query_dart_keyseq = Qt::KeySequence.new('Ctrl+D')
|
|
108
111
|
@query_dart.shortcut = @query_dart_keyseq
|
|
109
|
-
@query_dart.statusTip =
|
|
112
|
+
@query_dart.statusTip = 'Query DART Database'
|
|
110
113
|
@query_dart.connect(SIGNAL('triggered()')) { handle_query_dart() }
|
|
111
114
|
|
|
112
|
-
@handle_reset = Qt::Action.new(
|
|
113
|
-
@handle_reset_keyseq = Qt::KeySequence.new(
|
|
115
|
+
@handle_reset = Qt::Action.new('&Reset', self)
|
|
116
|
+
@handle_reset_keyseq = Qt::KeySequence.new('Ctrl+R')
|
|
114
117
|
@handle_reset.shortcut = @handle_reset_keyseq
|
|
115
|
-
@handle_reset.statusTip =
|
|
118
|
+
@handle_reset.statusTip = 'Reset Components'
|
|
116
119
|
@handle_reset.connect(SIGNAL('triggered()')) { handle_reset() }
|
|
117
120
|
|
|
118
|
-
@replay_action = Qt::Action.new(
|
|
119
|
-
@replay_action.statusTip =
|
|
121
|
+
@replay_action = Qt::Action.new('Toggle Replay Mode', self)
|
|
122
|
+
@replay_action.statusTip = 'Toggle Replay Mode'
|
|
120
123
|
@replay_action.connect(SIGNAL('triggered()')) { toggle_replay_mode() }
|
|
121
124
|
|
|
122
125
|
# Search Actions
|
|
123
|
-
@search_find = Qt::Action.new(Cosmos.get_icon('search.png'),
|
|
124
|
-
@search_find_keyseq = Qt::KeySequence.new(
|
|
126
|
+
@search_find = Qt::Action.new(Cosmos.get_icon('search.png'), '&Find', self)
|
|
127
|
+
@search_find_keyseq = Qt::KeySequence.new('Ctrl+F')
|
|
125
128
|
@search_find.shortcut = @search_find_keyseq
|
|
126
|
-
@search_find.statusTip =
|
|
129
|
+
@search_find.statusTip = 'Find text'
|
|
127
130
|
@search_find.connect(SIGNAL('triggered()')) do
|
|
128
131
|
FindReplaceDialog.show_find(self)
|
|
129
132
|
end
|
|
130
133
|
|
|
131
|
-
@search_find_next = Qt::Action.new(
|
|
132
|
-
@search_find_next_keyseq = Qt::KeySequence.new(
|
|
134
|
+
@search_find_next = Qt::Action.new('Find &Next', self)
|
|
135
|
+
@search_find_next_keyseq = Qt::KeySequence.new('F3')
|
|
133
136
|
@search_find_next.shortcut = @search_find_next_keyseq
|
|
134
|
-
@search_find_next.statusTip =
|
|
137
|
+
@search_find_next.statusTip = 'Find next instance'
|
|
135
138
|
@search_find_next.connect(SIGNAL('triggered()')) do
|
|
136
139
|
FindReplaceDialog.find_next(self)
|
|
137
140
|
end
|
|
138
141
|
|
|
139
|
-
@search_find_previous = Qt::Action.new(
|
|
140
|
-
@search_find_previous_keyseq = Qt::KeySequence.new(
|
|
142
|
+
@search_find_previous = Qt::Action.new('Find &Previous', self)
|
|
143
|
+
@search_find_previous_keyseq = Qt::KeySequence.new('Shift+F3')
|
|
141
144
|
@search_find_previous.shortcut = @search_find_previous_keyseq
|
|
142
|
-
@search_find_previous.statusTip =
|
|
145
|
+
@search_find_previous.statusTip = 'Find previous instance'
|
|
143
146
|
@search_find_previous.connect(SIGNAL('triggered()')) do
|
|
144
147
|
FindReplaceDialog.find_previous(self)
|
|
145
148
|
end
|
|
146
149
|
|
|
147
150
|
# Tab Menu Actions
|
|
148
|
-
@delete_tab = Qt::Action.new(Cosmos.get_icon('delete_tab.png'),
|
|
149
|
-
@delete_tab.statusTip =
|
|
151
|
+
@delete_tab = Qt::Action.new(Cosmos.get_icon('delete_tab.png'), '&Delete Tab', self)
|
|
152
|
+
@delete_tab.statusTip = 'Delete active tab'
|
|
150
153
|
@delete_tab.connect(SIGNAL('triggered()')) { on_tab_delete() }
|
|
151
154
|
end
|
|
152
155
|
|
|
153
156
|
def initialize_menus
|
|
154
157
|
# File Menu
|
|
155
|
-
file_menu = menuBar.addMenu(
|
|
158
|
+
file_menu = menuBar.addMenu('&File')
|
|
156
159
|
file_menu.addAction(@open_log)
|
|
157
160
|
file_menu.addAction(@query_dart)
|
|
158
161
|
file_menu.addAction(@handle_reset)
|
|
@@ -161,13 +164,13 @@ module Cosmos
|
|
|
161
164
|
file_menu.addAction(@exit_action)
|
|
162
165
|
|
|
163
166
|
# Tab Menu
|
|
164
|
-
@tab_menu = menuBar.addMenu(
|
|
167
|
+
@tab_menu = menuBar.addMenu('&Tab')
|
|
165
168
|
@tab_menu.addAction(@delete_tab)
|
|
166
169
|
@tab_menu.addSeparator()
|
|
167
170
|
@tab_menu_actions = []
|
|
168
171
|
|
|
169
172
|
# Search Menu
|
|
170
|
-
view_menu = menuBar.addMenu(
|
|
173
|
+
view_menu = menuBar.addMenu('&Search')
|
|
171
174
|
view_menu.addAction(@search_find)
|
|
172
175
|
view_menu.addAction(@search_find_next)
|
|
173
176
|
view_menu.addAction(@search_find_previous)
|
|
@@ -307,7 +310,7 @@ module Cosmos
|
|
|
307
310
|
break if @cancel_thread
|
|
308
311
|
Qt.execute_in_main_thread(true) do
|
|
309
312
|
@realtime_button_bar.state = 'Connecting'
|
|
310
|
-
statusBar.showMessage(
|
|
313
|
+
statusBar.showMessage("Error Connecting to Command and Telemetry Server")
|
|
311
314
|
end
|
|
312
315
|
break if @sleeper.sleep(1)
|
|
313
316
|
break if @cancel_thread
|
|
@@ -318,7 +321,7 @@ module Cosmos
|
|
|
318
321
|
break if @cancel_thread
|
|
319
322
|
begin
|
|
320
323
|
# Get a subscribed to packet
|
|
321
|
-
packet_data, target_name, packet_name, received_time, received_count = get_packet_data(@subscription_id)
|
|
324
|
+
packet_data, target_name, packet_name, received_time, received_count, stored, extra = get_packet_data(@subscription_id)
|
|
322
325
|
break unless packet_data
|
|
323
326
|
|
|
324
327
|
# Put packet data into its packet
|
|
@@ -326,6 +329,8 @@ module Cosmos
|
|
|
326
329
|
packet.buffer = packet_data
|
|
327
330
|
packet.received_time = received_time
|
|
328
331
|
packet.received_count = received_count
|
|
332
|
+
packet.stored = stored
|
|
333
|
+
packet.extra = extra
|
|
329
334
|
|
|
330
335
|
# Make sure we are on the right configuration
|
|
331
336
|
if target_name == 'SYSTEM' and packet_name == 'META'
|
|
@@ -344,12 +349,12 @@ module Cosmos
|
|
|
344
349
|
end
|
|
345
350
|
rescue DRb::DRbConnError
|
|
346
351
|
break if @cancel_thread
|
|
347
|
-
Qt.execute_in_main_thread(true) { statusBar.showMessage(
|
|
352
|
+
Qt.execute_in_main_thread(true) { statusBar.showMessage("Error Connecting to Command and Telemetry Server") }
|
|
348
353
|
break # Let outer loop resubscribe
|
|
349
354
|
rescue RuntimeError => error
|
|
350
355
|
raise error unless error.message =~ /queue/
|
|
351
356
|
break if @cancel_thread
|
|
352
|
-
Qt.execute_in_main_thread(true) { statusBar.showMessage(
|
|
357
|
+
Qt.execute_in_main_thread(true) { statusBar.showMessage("Connection Dropped by Command and Telemetry Server: #{Time.now.sys.formatted}") }
|
|
353
358
|
break # Let outer loop resubscribe
|
|
354
359
|
end
|
|
355
360
|
end
|
|
@@ -537,7 +542,7 @@ module Cosmos
|
|
|
537
542
|
@interface.disconnect
|
|
538
543
|
request_packet = Cosmos::Packet.new('DART', 'DART')
|
|
539
544
|
request_packet.define_item('REQUEST', 0, 0, :BLOCK)
|
|
540
|
-
|
|
545
|
+
|
|
541
546
|
@time_start ||= Time.utc(1970, 1, 1)
|
|
542
547
|
@time_end ||= Time.now
|
|
543
548
|
@time_delta = @time_end - @time_start
|
|
@@ -550,7 +555,7 @@ module Cosmos
|
|
|
550
555
|
request['packets'] = @packets
|
|
551
556
|
request['meta_filters'] = @meta_filters unless @meta_filters.empty?
|
|
552
557
|
request_packet.write('REQUEST', JSON.dump(request))
|
|
553
|
-
|
|
558
|
+
|
|
554
559
|
progress_dialog.append_text("Connecting to DART Database...")
|
|
555
560
|
@interface.connect
|
|
556
561
|
progress_dialog.append_text("Sending DART Database Query...")
|
|
@@ -570,16 +575,18 @@ module Cosmos
|
|
|
570
575
|
|
|
571
576
|
# Switch to correct configuration from SYSTEM META when needed
|
|
572
577
|
if packet.target_name == 'SYSTEM'.freeze and packet.packet_name == 'META'.freeze
|
|
573
|
-
meta_packet = System.telemetry.update!('SYSTEM', 'META', packet.buffer)
|
|
578
|
+
meta_packet = System.telemetry.update!('SYSTEM', 'META', packet.buffer)
|
|
574
579
|
Cosmos::System.load_configuration(meta_packet.read('CONFIG'))
|
|
575
580
|
elsif first
|
|
576
581
|
first = false
|
|
577
|
-
@time_start = packet.
|
|
582
|
+
@time_start = packet.packet_time
|
|
578
583
|
@time_delta = @time_end - @time_start
|
|
579
584
|
end
|
|
580
585
|
|
|
581
586
|
defined_packet = System.telemetry.update!(packet.target_name, packet.packet_name, packet.buffer)
|
|
582
587
|
defined_packet.received_time = packet.received_time
|
|
588
|
+
defined_packet.stored = packet.stored
|
|
589
|
+
defined_packet.extra = packet.extra
|
|
583
590
|
|
|
584
591
|
break if @cancel_progress
|
|
585
592
|
# Route packet to its component(s)
|
|
@@ -593,14 +600,14 @@ module Cosmos
|
|
|
593
600
|
end
|
|
594
601
|
end
|
|
595
602
|
|
|
596
|
-
progress = ((@time_delta - (@time_end - defined_packet.
|
|
603
|
+
progress = ((@time_delta - (@time_end - defined_packet.packet_time)).to_f / @time_delta.to_f)
|
|
597
604
|
progress_dialog.set_overall_progress(progress) if !@cancel_progress
|
|
598
605
|
end
|
|
599
606
|
ensure
|
|
600
607
|
progress_dialog.append_text("Canceled!") if @cancel_progress
|
|
601
608
|
progress_dialog.complete
|
|
602
609
|
end
|
|
603
|
-
end
|
|
610
|
+
end
|
|
604
611
|
rescue => error
|
|
605
612
|
Qt::MessageBox.critical(self, 'Error!', "Error Querying DART Database\n#{error.formatted}")
|
|
606
613
|
ensure
|
|
@@ -745,7 +752,7 @@ module Cosmos
|
|
|
745
752
|
delete_component(tab_index)
|
|
746
753
|
@tab_book.removeTab(tab_index)
|
|
747
754
|
|
|
748
|
-
statusBar.showMessage(
|
|
755
|
+
statusBar.showMessage("Tab Deleted")
|
|
749
756
|
end
|
|
750
757
|
else
|
|
751
758
|
Qt::MessageBox.information(self, 'Info', "No tabs exist")
|
|
@@ -763,17 +770,20 @@ module Cosmos
|
|
|
763
770
|
options.width = 550
|
|
764
771
|
options.height = 500
|
|
765
772
|
options.title = "Data Viewer"
|
|
766
|
-
options.
|
|
773
|
+
options.start = false
|
|
774
|
+
options.replay = false
|
|
775
|
+
options.config_file = true # config_file is required
|
|
767
776
|
option_parser.separator "Data Viewer Specific Options:"
|
|
768
|
-
option_parser.on("-
|
|
769
|
-
options.
|
|
777
|
+
option_parser.on("-s", "--start", "Start processing immediately") do |arg|
|
|
778
|
+
options.start = true
|
|
779
|
+
end
|
|
780
|
+
option_parser.on("--replay", "Start Data Viewer in Replay mode") do
|
|
781
|
+
options.replay = true
|
|
770
782
|
end
|
|
771
783
|
end
|
|
772
784
|
|
|
773
785
|
super(option_parser, options)
|
|
774
786
|
end
|
|
775
787
|
end
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
end # module Cosmos
|
|
788
|
+
end
|
|
789
|
+
end
|