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
data/lib/cosmos/system/target.rb
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
require 'cosmos/config/config_parser'
|
|
12
|
+
require 'pathname'
|
|
12
13
|
|
|
13
14
|
module Cosmos
|
|
14
|
-
|
|
15
15
|
# Target encapsulates the information about a COSMOS target. Targets are
|
|
16
16
|
# accessed through interfaces and have command and telemetry definition files
|
|
17
17
|
# which define their access.
|
|
@@ -66,6 +66,12 @@ module Cosmos
|
|
|
66
66
|
# @return [Integer] The number of telemetry packets received from this target
|
|
67
67
|
attr_accessor :tlm_cnt
|
|
68
68
|
|
|
69
|
+
# @return [Boolean] Indicates if all command packets identify using different fields
|
|
70
|
+
attr_accessor :cmd_unique_id_mode
|
|
71
|
+
|
|
72
|
+
# @return [Boolean] Indicates if telemetry packets identify using different fields
|
|
73
|
+
attr_accessor :tlm_unique_id_mode
|
|
74
|
+
|
|
69
75
|
# Creates a new target by processing the target.txt file in the directory
|
|
70
76
|
# given by the path joined with the target_name. Records all the command
|
|
71
77
|
# and telemetry definition files found in the targets cmd_tlm directory.
|
|
@@ -90,6 +96,8 @@ module Cosmos
|
|
|
90
96
|
@routers = []
|
|
91
97
|
@cmd_cnt = 0
|
|
92
98
|
@tlm_cnt = 0
|
|
99
|
+
@cmd_unique_id_mode = false
|
|
100
|
+
@tlm_unique_id_mode = false
|
|
93
101
|
|
|
94
102
|
# Determine the target name using substitution if given
|
|
95
103
|
@original_name = target_name.clone.upcase.freeze
|
|
@@ -123,16 +131,18 @@ module Cosmos
|
|
|
123
131
|
when 'REQUIRE'
|
|
124
132
|
usage = "#{keyword} <FILENAME>"
|
|
125
133
|
parser.verify_num_parameters(1, 1, usage)
|
|
134
|
+
filename = File.join(@dir, 'lib', parameters[0])
|
|
126
135
|
begin
|
|
127
|
-
# Require absolute path to file in target lib folder.
|
|
136
|
+
# Require absolute path to file in target lib folder. Prevents name
|
|
128
137
|
# conflicts at the require step
|
|
129
138
|
Cosmos.disable_warnings do
|
|
130
|
-
Cosmos.require_file(
|
|
139
|
+
Cosmos.require_file(filename, false)
|
|
131
140
|
end
|
|
132
141
|
rescue LoadError
|
|
133
142
|
begin
|
|
134
143
|
# If we couldn't load at the target/lib level check everywhere
|
|
135
144
|
Cosmos.disable_warnings do
|
|
145
|
+
filename = parameters[0]
|
|
136
146
|
Cosmos.require_file(parameters[0])
|
|
137
147
|
end
|
|
138
148
|
rescue Exception => err
|
|
@@ -141,7 +151,19 @@ module Cosmos
|
|
|
141
151
|
rescue Exception => err
|
|
142
152
|
raise parser.error(err.message)
|
|
143
153
|
end
|
|
144
|
-
|
|
154
|
+
|
|
155
|
+
# This code resolves any relative paths to absolute before putting into the @requires array
|
|
156
|
+
unless Pathname.new(filename).absolute?
|
|
157
|
+
$:.each do |search_path|
|
|
158
|
+
test_filename = File.join(search_path, filename).gsub("\\", "/")
|
|
159
|
+
if File.exist?(test_filename)
|
|
160
|
+
filename = test_filename
|
|
161
|
+
break
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
@requires << filename
|
|
145
167
|
|
|
146
168
|
when 'IGNORE_PARAMETER', 'IGNORE_ITEM'
|
|
147
169
|
usage = "#{keyword} <#{keyword.split('_')[1]} NAME>"
|
|
@@ -161,6 +183,16 @@ module Cosmos
|
|
|
161
183
|
parser.verify_num_parameters(0, 0, usage)
|
|
162
184
|
@auto_screen_substitute = true
|
|
163
185
|
|
|
186
|
+
when 'CMD_UNIQUE_ID_MODE'
|
|
187
|
+
usage = "#{keyword}"
|
|
188
|
+
parser.verify_num_parameters(0, 0, usage)
|
|
189
|
+
@cmd_unique_id_mode = true
|
|
190
|
+
|
|
191
|
+
when 'TLM_UNIQUE_ID_MODE'
|
|
192
|
+
usage = "#{keyword}"
|
|
193
|
+
parser.verify_num_parameters(0, 0, usage)
|
|
194
|
+
@tlm_unique_id_mode = true
|
|
195
|
+
|
|
164
196
|
else
|
|
165
197
|
# blank lines will have a nil keyword and should not raise an exception
|
|
166
198
|
raise parser.error("Unknown keyword '#{keyword}'") if keyword
|
|
@@ -213,7 +245,7 @@ module Cosmos
|
|
|
213
245
|
cmd_tlm_files.sort!
|
|
214
246
|
end
|
|
215
247
|
|
|
216
|
-
# Make sure all partials are included in the cmd_tlm list for the
|
|
248
|
+
# Make sure all partials are included in the cmd_tlm list for the hashing sum calculation
|
|
217
249
|
def add_cmd_tlm_partials(dir)
|
|
218
250
|
partial_files = []
|
|
219
251
|
if Dir.exist?(File.join(dir, 'cmd_tlm'))
|
|
@@ -226,7 +258,5 @@ module Cosmos
|
|
|
226
258
|
@cmd_tlm_files.concat(partial_files)
|
|
227
259
|
@cmd_tlm_files.uniq!
|
|
228
260
|
end
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
end # module Cosmos
|
|
261
|
+
end
|
|
262
|
+
end
|
|
@@ -62,25 +62,36 @@ module Cosmos
|
|
|
62
62
|
super()
|
|
63
63
|
|
|
64
64
|
# File Menu Actions
|
|
65
|
-
@analyze_log = Qt::Action.new(
|
|
66
|
-
@analyze_log.statusTip =
|
|
65
|
+
@analyze_log = Qt::Action.new('&Analyze Logs', self)
|
|
66
|
+
@analyze_log.statusTip = 'Analyze log file packet counts'
|
|
67
67
|
@analyze_log.connect(SIGNAL('triggered()')) { analyze_log_files() }
|
|
68
68
|
|
|
69
69
|
# Mode Menu Actions
|
|
70
|
-
@
|
|
71
|
-
@
|
|
70
|
+
@csv_output = Qt::Action.new('&CSV Output', self)
|
|
71
|
+
@csv_output.statusTip = 'Output as CSV based on Packet Time'
|
|
72
|
+
@csv_output.setCheckable(true)
|
|
73
|
+
@csv_output.connect(SIGNAL('triggered()')) { change_callback(:INPUT_FILES) }
|
|
74
|
+
|
|
75
|
+
@skip_ignored = Qt::Action.new('&Skip Ignored Items', self)
|
|
76
|
+
@skip_ignored.statusTip = "Skip ignored items in the command when building output"
|
|
77
|
+
@skip_ignored.setCheckable(true)
|
|
78
|
+
|
|
79
|
+
@include_raw = Qt::Action.new('Include &Raw Data', self)
|
|
80
|
+
@include_raw_keyseq = Qt::KeySequence.new('Ctrl+R')
|
|
72
81
|
@include_raw.shortcut = @include_raw_keyseq
|
|
73
|
-
@include_raw.statusTip =
|
|
82
|
+
@include_raw.statusTip = 'Include raw packet data in the text output'
|
|
74
83
|
@include_raw.setCheckable(true)
|
|
75
84
|
end
|
|
76
85
|
|
|
77
86
|
# Create the File and Mode menus and initialize the Help menu
|
|
78
87
|
def initialize_menus
|
|
79
|
-
@file_menu = menuBar.addMenu(
|
|
88
|
+
@file_menu = menuBar.addMenu('&File')
|
|
80
89
|
@file_menu.addAction(@analyze_log)
|
|
81
90
|
@file_menu.addSeparator()
|
|
82
91
|
@file_menu.addAction(@exit_action)
|
|
83
|
-
@mode_menu = menuBar.addMenu(
|
|
92
|
+
@mode_menu = menuBar.addMenu('&Mode')
|
|
93
|
+
@mode_menu.addAction(@csv_output)
|
|
94
|
+
@mode_menu.addAction(@skip_ignored)
|
|
84
95
|
@mode_menu.addAction(@include_raw)
|
|
85
96
|
@about_string = "Command Extractor extracts commands from a binary command log file into a human readable text file."
|
|
86
97
|
initialize_help_menu()
|
|
@@ -102,20 +113,20 @@ module Cosmos
|
|
|
102
113
|
@data_source_layout.addWidget(label)
|
|
103
114
|
@log_file_radio = Qt::RadioButton.new("Log File", self)
|
|
104
115
|
@log_file_radio.setChecked(true)
|
|
105
|
-
@log_file_radio.connect(SIGNAL('clicked()')) do
|
|
116
|
+
@log_file_radio.connect(SIGNAL('clicked()')) do
|
|
106
117
|
@packet_log_frame.show_log_fields(true)
|
|
107
118
|
@packet_log_frame.output_filename = ""
|
|
108
|
-
@dart_meta_frame.hide
|
|
119
|
+
@dart_meta_frame.hide
|
|
109
120
|
@resize_timer.start(100)
|
|
110
121
|
end
|
|
111
122
|
@data_source_layout.addWidget(@log_file_radio)
|
|
112
123
|
@dart_radio = Qt::RadioButton.new("DART Database", self)
|
|
113
|
-
@dart_radio.connect(SIGNAL('clicked()')) do
|
|
124
|
+
@dart_radio.connect(SIGNAL('clicked()')) do
|
|
114
125
|
@packet_log_frame.show_log_fields(false)
|
|
115
126
|
@packet_log_frame.output_filename = ""
|
|
116
127
|
@dart_meta_frame.show
|
|
117
128
|
@resize_timer.start(100)
|
|
118
|
-
end
|
|
129
|
+
end
|
|
119
130
|
@data_source_layout.addWidget(@dart_radio)
|
|
120
131
|
@data_source_layout.addStretch()
|
|
121
132
|
@top_layout.addLayout(@data_source_layout)
|
|
@@ -144,6 +155,14 @@ module Cosmos
|
|
|
144
155
|
@open_button.connect(SIGNAL('clicked()')) { open_button() }
|
|
145
156
|
@open_button.setEnabled(false)
|
|
146
157
|
@button_layout.addWidget(@open_button)
|
|
158
|
+
|
|
159
|
+
if Kernel.is_windows?
|
|
160
|
+
@open_excel_button = Qt::PushButton.new('&Open in Excel')
|
|
161
|
+
@open_excel_button.connect(SIGNAL('clicked()')) { open_excel_button() }
|
|
162
|
+
@open_excel_button.setEnabled(false)
|
|
163
|
+
@button_layout.addWidget(@open_excel_button)
|
|
164
|
+
end
|
|
165
|
+
|
|
147
166
|
@top_layout.addLayout(@button_layout)
|
|
148
167
|
end
|
|
149
168
|
|
|
@@ -176,14 +195,16 @@ module Cosmos
|
|
|
176
195
|
@time_start = @packet_log_frame.time_start
|
|
177
196
|
@time_end = @packet_log_frame.time_end
|
|
178
197
|
@packet_log_reader = @packet_log_frame.packet_log_reader
|
|
179
|
-
@input_filenames = @packet_log_frame.filenames.sort
|
|
198
|
+
@input_filenames = @packet_log_frame.filenames.sort
|
|
180
199
|
@output_filename = @packet_log_frame.output_filename
|
|
181
200
|
@output_filename = nil if @output_filename.strip.empty?
|
|
182
201
|
@meta_filters = @dart_meta_frame.meta_filters
|
|
183
202
|
|
|
184
203
|
return unless pre_process_tests()
|
|
204
|
+
csv_output = @csv_output.isChecked
|
|
205
|
+
skip_ignored = @skip_ignored.isChecked
|
|
206
|
+
include_raw = @include_raw.isChecked
|
|
185
207
|
|
|
186
|
-
include_raw = @include_raw.isChecked
|
|
187
208
|
if @log_file_radio.isChecked
|
|
188
209
|
begin
|
|
189
210
|
ProgressDialog.execute(self, # parent
|
|
@@ -196,13 +217,14 @@ module Cosmos
|
|
|
196
217
|
begin
|
|
197
218
|
Cosmos.set_working_dir do
|
|
198
219
|
File.open(@output_filename, 'w') do |output_file|
|
|
199
|
-
process_files(output_file,
|
|
220
|
+
process_files(output_file, progress_dialog, csv_output, skip_ignored, include_raw)
|
|
200
221
|
end
|
|
201
222
|
end
|
|
202
223
|
ensure
|
|
203
224
|
progress_dialog.complete
|
|
204
225
|
Qt.execute_in_main_thread(true) do
|
|
205
226
|
@open_button.setEnabled(true)
|
|
227
|
+
@open_excel_button.setEnabled(true) if Kernel.is_windows?
|
|
206
228
|
end
|
|
207
229
|
end
|
|
208
230
|
end
|
|
@@ -214,8 +236,8 @@ module Cosmos
|
|
|
214
236
|
ProgressDialog.execute(self, # parent
|
|
215
237
|
'Log File Progress', # title
|
|
216
238
|
600, # width, height
|
|
217
|
-
300,
|
|
218
|
-
true, # Overall progress, no step progress
|
|
239
|
+
300,
|
|
240
|
+
true, # Overall progress, no step progress
|
|
219
241
|
false) do |progress_dialog|
|
|
220
242
|
progress_dialog.cancel_callback = method(:cancel_callback)
|
|
221
243
|
progress_dialog.enable_cancel_button
|
|
@@ -227,7 +249,7 @@ module Cosmos
|
|
|
227
249
|
@interface.disconnect
|
|
228
250
|
request_packet = Cosmos::Packet.new('DART', 'DART')
|
|
229
251
|
request_packet.define_item('REQUEST', 0, 0, :BLOCK)
|
|
230
|
-
|
|
252
|
+
|
|
231
253
|
@time_start ||= Time.utc(1970, 1, 1)
|
|
232
254
|
@time_end ||= Time.now
|
|
233
255
|
@time_delta = @time_end - @time_start
|
|
@@ -239,13 +261,15 @@ module Cosmos
|
|
|
239
261
|
request['cmd_tlm'] = 'CMD'
|
|
240
262
|
request['meta_filters'] = @meta_filters unless @meta_filters.empty?
|
|
241
263
|
request_packet.write('REQUEST', JSON.dump(request))
|
|
242
|
-
|
|
264
|
+
|
|
243
265
|
progress_dialog.append_text("Connecting to DART Database...")
|
|
244
266
|
@interface.connect
|
|
245
267
|
progress_dialog.append_text("Sending DART Database Query...")
|
|
246
268
|
@interface.write(request_packet)
|
|
247
269
|
progress_dialog.append_text("Receiving Packets...")
|
|
248
270
|
|
|
271
|
+
write_output_file_DART_header(output_file, request, csv_output)
|
|
272
|
+
|
|
249
273
|
first = true
|
|
250
274
|
while true
|
|
251
275
|
break if @cancel
|
|
@@ -260,31 +284,22 @@ module Cosmos
|
|
|
260
284
|
# Switch to correct configuration from SYSTEM META when needed
|
|
261
285
|
if packet.target_name == 'SYSTEM'.freeze and packet.packet_name == 'META'.freeze
|
|
262
286
|
meta_packet = System.commands.packet('SYSTEM', 'META')
|
|
263
|
-
meta_packet.buffer = packet.buffer
|
|
287
|
+
meta_packet.buffer = packet.buffer
|
|
264
288
|
Cosmos::System.load_configuration(meta_packet.read('CONFIG'))
|
|
265
289
|
elsif first
|
|
266
290
|
first = false
|
|
267
|
-
@time_start = packet.
|
|
291
|
+
@time_start = packet.packet_time
|
|
268
292
|
@time_delta = @time_end - @time_start
|
|
269
293
|
end
|
|
270
294
|
|
|
271
295
|
defined_packet = System.commands.packet(packet.target_name, packet.packet_name)
|
|
272
296
|
defined_packet.buffer = packet.buffer
|
|
273
297
|
defined_packet.received_time = packet.received_time
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
output_file.puts " RECEIVED_TIMEFORMATTED: #{defined_packet.received_time.formatted}"
|
|
277
|
-
output_file.puts defined_packet.formatted(:WITH_UNITS, 2)
|
|
278
|
-
if include_raw or !defined_packet.identified? or !defined_packet.defined?
|
|
279
|
-
output_file.puts " RAW PACKET DATA (#{defined_packet.length} bytes):"
|
|
280
|
-
output_file.puts defined_packet.buffer.formatted(1, 16, ' ', 4)
|
|
281
|
-
end
|
|
282
|
-
output_file.puts
|
|
283
|
-
|
|
284
|
-
progress = ((@time_delta - (@time_end - defined_packet.received_time)).to_f / @time_delta.to_f)
|
|
298
|
+
write_output_file_packet(output_file, defined_packet, csv_output, skip_ignored, include_raw)
|
|
299
|
+
progress = ((@time_delta - (@time_end - defined_packet.packet_time)).to_f / @time_delta.to_f)
|
|
285
300
|
progress_dialog.set_overall_progress(progress) if !@cancel
|
|
286
301
|
end
|
|
287
|
-
|
|
302
|
+
|
|
288
303
|
end
|
|
289
304
|
end
|
|
290
305
|
|
|
@@ -293,14 +308,15 @@ module Cosmos
|
|
|
293
308
|
progress_dialog.complete
|
|
294
309
|
Qt.execute_in_main_thread(true) do
|
|
295
310
|
@open_button.setEnabled(true)
|
|
311
|
+
@open_excel_button.setEnabled(true) if Kernel.is_windows?
|
|
296
312
|
end
|
|
297
313
|
end
|
|
298
|
-
end
|
|
314
|
+
end
|
|
299
315
|
rescue => error
|
|
300
316
|
Qt::MessageBox.critical(self, 'Error!', "Error Querying DART Database\n#{error.formatted}")
|
|
301
317
|
ensure
|
|
302
318
|
@interface.disconnect
|
|
303
|
-
end
|
|
319
|
+
end
|
|
304
320
|
end
|
|
305
321
|
end # def process_data
|
|
306
322
|
|
|
@@ -308,11 +324,15 @@ module Cosmos
|
|
|
308
324
|
Cosmos.open_in_text_editor(@output_filename)
|
|
309
325
|
end
|
|
310
326
|
|
|
327
|
+
def open_excel_button
|
|
328
|
+
system("start Excel.exe \"#{@output_filename}\"")
|
|
329
|
+
end
|
|
330
|
+
|
|
311
331
|
###############################################################################
|
|
312
332
|
# Helper Methods
|
|
313
333
|
###############################################################################
|
|
314
334
|
|
|
315
|
-
def process_files(output_file,
|
|
335
|
+
def process_files(output_file, progress_dialog, csv_output, skip_ignored, include_raw)
|
|
316
336
|
log_file_count = 1
|
|
317
337
|
@input_filenames.each do |log_file|
|
|
318
338
|
break if @cancel
|
|
@@ -321,10 +341,7 @@ module Cosmos
|
|
|
321
341
|
file_size = File.size(log_file).to_f
|
|
322
342
|
progress_dialog.append_text("Processing File #{log_file_count}/#{@input_filenames.length}: #{log_file}")
|
|
323
343
|
progress_dialog.set_step_progress(0.0)
|
|
324
|
-
output_file
|
|
325
|
-
output_file.puts log_file
|
|
326
|
-
output_file.puts '-' * (log_file.length * 1.4).to_i
|
|
327
|
-
output_file.puts
|
|
344
|
+
write_output_file_header(output_file, log_file, csv_output)
|
|
328
345
|
@packet_log_reader.each(
|
|
329
346
|
log_file, # log filename
|
|
330
347
|
true, # identify and define packet
|
|
@@ -333,16 +350,7 @@ module Cosmos
|
|
|
333
350
|
|
|
334
351
|
break if @cancel
|
|
335
352
|
progress_dialog.set_step_progress(@packet_log_reader.bytes_read / file_size)
|
|
336
|
-
|
|
337
|
-
output_file.puts "#{packet.target_name} #{packet.packet_name}"
|
|
338
|
-
output_file.puts " RECEIVED_TIMEFORMATTED: #{packet.received_time.formatted}"
|
|
339
|
-
end
|
|
340
|
-
output_file.puts packet.formatted(:WITH_UNITS, 2)
|
|
341
|
-
if include_raw or !packet.identified? or !packet.defined?
|
|
342
|
-
output_file.puts " RAW PACKET DATA (#{packet.length} bytes):"
|
|
343
|
-
output_file.puts packet.buffer.formatted(1, 16, ' ', 4)
|
|
344
|
-
end
|
|
345
|
-
output_file.puts
|
|
353
|
+
write_output_file_packet(output_file, packet, csv_output, skip_ignored, include_raw)
|
|
346
354
|
end
|
|
347
355
|
progress_dialog.set_step_progress(1.0) if !@cancel
|
|
348
356
|
progress_dialog.set_overall_progress(log_file_count.to_f / @input_filenames.length.to_f) if !@cancel
|
|
@@ -357,6 +365,57 @@ module Cosmos
|
|
|
357
365
|
# Helper Methods
|
|
358
366
|
###############################################################################
|
|
359
367
|
|
|
368
|
+
def write_output_file_header(output_file, log_file, csv_output)
|
|
369
|
+
if csv_output
|
|
370
|
+
output_file.puts "Filename,#{log_file}"
|
|
371
|
+
output_file.puts "PACKET_TIMEFORMATTED,Target,Packet,Parameters"
|
|
372
|
+
else
|
|
373
|
+
output_file.puts '-' * (log_file.length * 1.4).to_i
|
|
374
|
+
output_file.puts log_file
|
|
375
|
+
output_file.puts '-' * (log_file.length * 1.4).to_i
|
|
376
|
+
output_file.puts
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
def write_output_file_DART_header(output_file, request, csv_output)
|
|
381
|
+
if csv_output
|
|
382
|
+
output_file.puts "DART Request"
|
|
383
|
+
output_file.puts "start secs,#{request['start_time_sec']},start usec,#{request['start_time_usec']}"
|
|
384
|
+
output_file.puts "end secs,#{request['end_time_sec']},end usec,#{request['end_time_usec']}"
|
|
385
|
+
output_file.puts "meta_filter,#{request['meta_filters']}" unless @meta_filters.empty?
|
|
386
|
+
else
|
|
387
|
+
output_file.puts "DART Request"
|
|
388
|
+
output_file.puts "start secs:#{request['start_time_sec']} start usec:#{request['start_time_usec']}"
|
|
389
|
+
output_file.puts "end secs:#{request['end_time_sec']} end usec:#{request['end_time_usec']}"
|
|
390
|
+
output_file.puts "meta_filter:#{request['meta_filters']}" unless @meta_filters.empty?
|
|
391
|
+
end
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
def write_output_file_packet(output_file, packet, csv_output, skip_ignored, include_raw)
|
|
395
|
+
if csv_output
|
|
396
|
+
items_string = ""
|
|
397
|
+
packet.read_all.each do |name, value|
|
|
398
|
+
next if skip_ignored && System.targets[packet.target_name].ignored_items.include?(name)
|
|
399
|
+
items_string << "#{name},#{value},"
|
|
400
|
+
end
|
|
401
|
+
output_file.puts "#{packet.packet_time.formatted},#{packet.target_name},#{packet.packet_name},#{items_string}"
|
|
402
|
+
output_file.puts "#{packet.buffer.formatted}" if include_raw
|
|
403
|
+
else
|
|
404
|
+
output_file.puts "#{packet.target_name} #{packet.packet_name}"
|
|
405
|
+
if packet.received_time
|
|
406
|
+
output_file.puts " PACKET_TIMEFORMATTED: #{packet.packet_time.formatted}"
|
|
407
|
+
output_file.puts " RECEIVED_TIMEFORMATTED: #{packet.received_time.formatted}"
|
|
408
|
+
end
|
|
409
|
+
ignored = skip_ignored ? System.targets[packet.target_name].ignored_items : nil
|
|
410
|
+
output_file.puts packet.formatted(:WITH_UNITS, 2, packet.buffer, ignored)
|
|
411
|
+
if include_raw or !packet.identified? or !packet.defined?
|
|
412
|
+
output_file.puts " RAW PACKET DATA (#{packet.length} bytes):"
|
|
413
|
+
output_file.puts packet.buffer.formatted(1, 16, ' ', 4)
|
|
414
|
+
end
|
|
415
|
+
output_file.puts
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
|
|
360
419
|
def pre_process_tests
|
|
361
420
|
if @log_file_radio.isChecked
|
|
362
421
|
unless @input_filenames and @input_filenames[0]
|
|
@@ -370,7 +429,7 @@ module Cosmos
|
|
|
370
429
|
Qt::MessageBox.critical(self, 'Error', 'No Output File Selected')
|
|
371
430
|
return false
|
|
372
431
|
else
|
|
373
|
-
@packet_log_frame.output_filename = File.join(System.paths['LOGS'], File.build_timestamped_filename(['cmd_extractor', 'dart']))
|
|
432
|
+
@packet_log_frame.output_filename = File.join(System.paths['LOGS'], File.build_timestamped_filename(['cmd_extractor', 'dart'], get_output_file_extension()))
|
|
374
433
|
@output_filename = @packet_log_frame.output_filename
|
|
375
434
|
end
|
|
376
435
|
end
|
|
@@ -383,6 +442,10 @@ module Cosmos
|
|
|
383
442
|
true
|
|
384
443
|
end
|
|
385
444
|
|
|
445
|
+
def get_output_file_extension
|
|
446
|
+
@csv_output.isChecked ? '.csv' : '.txt'
|
|
447
|
+
end
|
|
448
|
+
|
|
386
449
|
###############################################################################
|
|
387
450
|
# Additional Callbacks
|
|
388
451
|
###############################################################################
|
|
@@ -398,12 +461,10 @@ module Cosmos
|
|
|
398
461
|
if filename
|
|
399
462
|
extension = File.extname(filename)
|
|
400
463
|
filename_no_extension = filename[0..-(extension.length + 1)]
|
|
401
|
-
|
|
402
|
-
@packet_log_frame.output_filename = filename
|
|
464
|
+
@packet_log_frame.output_filename = "#{filename_no_extension}#{get_output_file_extension}"
|
|
403
465
|
end
|
|
404
466
|
end
|
|
405
467
|
end
|
|
406
468
|
|
|
407
|
-
end
|
|
408
|
-
|
|
409
|
-
end # module Cosmos
|
|
469
|
+
end
|
|
470
|
+
end
|