cosmos 4.3.0-java → 4.4.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/.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 +1 -0
- data/.travis.yml +5 -5
- data/Manifest.txt +81 -44
- data/Rakefile +9 -0
- data/appveyor.yml +2 -1
- 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/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/tools/limits_monitor.ahk +1 -1
- data/autohotkey/tools/packet_viewer.ahk +1 -1
- data/autohotkey/tools/script_runner.ahk +16 -4
- data/bin/cosmos +1 -1
- data/bin/xtce_converter +1 -1
- data/cosmos.gemspec +5 -7
- data/data/config/_interfaces.yaml +4 -0
- data/data/config/cmd_sequence.yaml +14 -0
- data/data/config/housekeeping_params.yaml +14 -0
- data/data/config/interface_modifiers.yaml +11 -0
- data/data/config/item_modifiers.yaml +2 -1
- data/data/config/launcher.yaml +12 -2
- data/data/config/param_item_modifiers.yaml +2 -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 +47 -10
- data/data/config/table_manager.yaml +7 -0
- data/data/config/target.yaml +12 -0
- data/data/config/telemetry_modifiers.yaml +3 -1
- data/data/config/test_runner.yaml +10 -9
- data/data/config/widgets.yaml +174 -11
- data/data/crc.txt +128 -125
- 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/config/data/crc.txt +40 -20
- data/demo/config/system/system.txt +1 -1
- data/demo/config/system/system_alt_ports.txt +1 -1
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +2 -1
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +7 -7
- 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/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/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 +1 -1
- data/demo/procedures/interactive.rb +22 -0
- data/ext/cosmos/ext/packet/packet.c +0 -77
- data/install/Gemfile +1 -1
- data/install/Launcher.bat +1 -9
- data/install/config/data/crc.txt +17 -1
- data/install/config/system/system.txt +1 -1
- 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/lib/cosmos/config/config_parser.rb +4 -5
- data/lib/cosmos/dart/lib/dart_common.rb +1 -1
- data/lib/cosmos/gui/dialogs/details_dialog.rb +16 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -0
- 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 +3 -1
- data/lib/cosmos/gui/qt_tool.rb +46 -23
- data/lib/cosmos/gui/text/ruby_editor.rb +44 -41
- data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
- data/lib/cosmos/gui/utilities/script_module_gui.rb +92 -92
- data/lib/cosmos/interfaces.rb +1 -0
- data/lib/cosmos/interfaces/interface.rb +5 -1
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +6 -1
- data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
- data/lib/cosmos/io/json_drb.rb +11 -7
- data/lib/cosmos/packets/commands.rb +28 -11
- data/lib/cosmos/packets/packet.rb +69 -32
- data/lib/cosmos/packets/packet_config.rb +34 -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 +4 -3
- data/lib/cosmos/packets/structure.rb +4 -2
- data/lib/cosmos/packets/telemetry.rb +19 -3
- data/lib/cosmos/script/api_shared.rb +12 -9
- data/lib/cosmos/script/scripting.rb +16 -14
- data/lib/cosmos/system/system.rb +39 -20
- data/lib/cosmos/system/target.rb +39 -9
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +94 -35
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +3 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +30 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +1 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +9 -12
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +5 -2
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
- data/lib/cosmos/tools/config_editor/config_editor.rb +80 -24
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +2 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +15 -9
- data/lib/cosmos/tools/data_viewer/dump_component.rb +2 -9
- data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +64 -38
- data/lib/cosmos/tools/launcher/launcher.rb +1 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -17
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +8 -6
- data/lib/cosmos/tools/script_runner/script_runner.rb +87 -29
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +41 -7
- data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +6 -3
- data/lib/cosmos/tools/test_runner/test_runner.rb +14 -9
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +21 -9
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
- 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 +11 -8
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +9 -15
- data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -1
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +19 -13
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +2 -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 +1 -1
- 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 +2 -7
- 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 +54 -46
- data/lib/cosmos/top_level.rb +23 -12
- data/lib/cosmos/version.rb +4 -4
- 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 +112 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
- data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
- data/spec/packets/commands_spec.rb +22 -0
- data/spec/packets/packet_config_spec.rb +24 -0
- data/spec/packets/packet_item_spec.rb +2 -2
- data/spec/packets/packet_spec.rb +39 -6
- data/spec/packets/parsers/state_parser_spec.rb +33 -11
- data/spec/packets/structure_spec.rb +41 -0
- data/spec/packets/telemetry_spec.rb +23 -0
- data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
- data/spec/system/system_spec.rb +77 -2
- data/spec/system/target_spec.rb +62 -1
- data/spec/tools/cmd_tlm_server/api_spec.rb +1 -1
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
- data/spec/top_level/top_level_spec.rb +29 -5
- data/tasks/gemfile_stats.rake +28 -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 +92 -55
|
@@ -67,6 +67,15 @@ module Cosmos
|
|
|
67
67
|
@analyze_log.connect(SIGNAL('triggered()')) { analyze_log_files() }
|
|
68
68
|
|
|
69
69
|
# Mode Menu Actions
|
|
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
|
+
|
|
70
79
|
@include_raw = Qt::Action.new('Include &Raw Data', self)
|
|
71
80
|
@include_raw_keyseq = Qt::KeySequence.new('Ctrl+R')
|
|
72
81
|
@include_raw.shortcut = @include_raw_keyseq
|
|
@@ -81,6 +90,8 @@ module Cosmos
|
|
|
81
90
|
@file_menu.addSeparator()
|
|
82
91
|
@file_menu.addAction(@exit_action)
|
|
83
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()
|
|
@@ -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
|
|
|
@@ -182,8 +201,10 @@ module Cosmos
|
|
|
182
201
|
@meta_filters = @dart_meta_frame.meta_filters
|
|
183
202
|
|
|
184
203
|
return unless pre_process_tests()
|
|
185
|
-
|
|
204
|
+
csv_output = @csv_output.isChecked
|
|
205
|
+
skip_ignored = @skip_ignored.isChecked
|
|
186
206
|
include_raw = @include_raw.isChecked
|
|
207
|
+
|
|
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
|
|
@@ -246,6 +268,8 @@ module Cosmos
|
|
|
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
|
|
@@ -271,17 +295,7 @@ module Cosmos
|
|
|
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
|
-
output_file.puts "#{defined_packet.target_name} #{defined_packet.packet_name}"
|
|
276
|
-
output_file.puts " PACKET_TIMEFORMATTED: #{defined_packet.packet_time.formatted}"
|
|
277
|
-
output_file.puts " RECEIVED_TIMEFORMATTED: #{defined_packet.received_time.formatted}"
|
|
278
|
-
output_file.puts defined_packet.formatted(:WITH_UNITS, 2)
|
|
279
|
-
if include_raw or !defined_packet.identified? or !defined_packet.defined?
|
|
280
|
-
output_file.puts " RAW PACKET DATA (#{defined_packet.length} bytes):"
|
|
281
|
-
output_file.puts defined_packet.buffer.formatted(1, 16, ' ', 4)
|
|
282
|
-
end
|
|
283
|
-
output_file.puts
|
|
284
|
-
|
|
298
|
+
write_output_file_packet(output_file, defined_packet, csv_output, skip_ignored, include_raw)
|
|
285
299
|
progress = ((@time_delta - (@time_end - defined_packet.packet_time)).to_f / @time_delta.to_f)
|
|
286
300
|
progress_dialog.set_overall_progress(progress) if !@cancel
|
|
287
301
|
end
|
|
@@ -294,6 +308,7 @@ module Cosmos
|
|
|
294
308
|
progress_dialog.complete
|
|
295
309
|
Qt.execute_in_main_thread(true) do
|
|
296
310
|
@open_button.setEnabled(true)
|
|
311
|
+
@open_excel_button.setEnabled(true) if Kernel.is_windows?
|
|
297
312
|
end
|
|
298
313
|
end
|
|
299
314
|
end
|
|
@@ -309,11 +324,15 @@ module Cosmos
|
|
|
309
324
|
Cosmos.open_in_text_editor(@output_filename)
|
|
310
325
|
end
|
|
311
326
|
|
|
327
|
+
def open_excel_button
|
|
328
|
+
system("start Excel.exe \"#{@output_filename}\"")
|
|
329
|
+
end
|
|
330
|
+
|
|
312
331
|
###############################################################################
|
|
313
332
|
# Helper Methods
|
|
314
333
|
###############################################################################
|
|
315
334
|
|
|
316
|
-
def process_files(output_file,
|
|
335
|
+
def process_files(output_file, progress_dialog, csv_output, skip_ignored, include_raw)
|
|
317
336
|
log_file_count = 1
|
|
318
337
|
@input_filenames.each do |log_file|
|
|
319
338
|
break if @cancel
|
|
@@ -322,10 +341,7 @@ module Cosmos
|
|
|
322
341
|
file_size = File.size(log_file).to_f
|
|
323
342
|
progress_dialog.append_text("Processing File #{log_file_count}/#{@input_filenames.length}: #{log_file}")
|
|
324
343
|
progress_dialog.set_step_progress(0.0)
|
|
325
|
-
output_file
|
|
326
|
-
output_file.puts log_file
|
|
327
|
-
output_file.puts '-' * (log_file.length * 1.4).to_i
|
|
328
|
-
output_file.puts
|
|
344
|
+
write_output_file_header(output_file, log_file, csv_output)
|
|
329
345
|
@packet_log_reader.each(
|
|
330
346
|
log_file, # log filename
|
|
331
347
|
true, # identify and define packet
|
|
@@ -334,17 +350,7 @@ module Cosmos
|
|
|
334
350
|
|
|
335
351
|
break if @cancel
|
|
336
352
|
progress_dialog.set_step_progress(@packet_log_reader.bytes_read / file_size)
|
|
337
|
-
output_file
|
|
338
|
-
if packet.received_time
|
|
339
|
-
output_file.puts " PACKET_TIMEFORMATTED: #{packet.packet_time.formatted}"
|
|
340
|
-
output_file.puts " RECEIVED_TIMEFORMATTED: #{packet.received_time.formatted}"
|
|
341
|
-
end
|
|
342
|
-
output_file.puts packet.formatted(:WITH_UNITS, 2)
|
|
343
|
-
if include_raw or !packet.identified? or !packet.defined?
|
|
344
|
-
output_file.puts " RAW PACKET DATA (#{packet.length} bytes):"
|
|
345
|
-
output_file.puts packet.buffer.formatted(1, 16, ' ', 4)
|
|
346
|
-
end
|
|
347
|
-
output_file.puts
|
|
353
|
+
write_output_file_packet(output_file, packet, csv_output, skip_ignored, include_raw)
|
|
348
354
|
end
|
|
349
355
|
progress_dialog.set_step_progress(1.0) if !@cancel
|
|
350
356
|
progress_dialog.set_overall_progress(log_file_count.to_f / @input_filenames.length.to_f) if !@cancel
|
|
@@ -359,6 +365,57 @@ module Cosmos
|
|
|
359
365
|
# Helper Methods
|
|
360
366
|
###############################################################################
|
|
361
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
|
+
|
|
362
419
|
def pre_process_tests
|
|
363
420
|
if @log_file_radio.isChecked
|
|
364
421
|
unless @input_filenames and @input_filenames[0]
|
|
@@ -372,7 +429,7 @@ module Cosmos
|
|
|
372
429
|
Qt::MessageBox.critical(self, 'Error', 'No Output File Selected')
|
|
373
430
|
return false
|
|
374
431
|
else
|
|
375
|
-
@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()))
|
|
376
433
|
@output_filename = @packet_log_frame.output_filename
|
|
377
434
|
end
|
|
378
435
|
end
|
|
@@ -385,6 +442,10 @@ module Cosmos
|
|
|
385
442
|
true
|
|
386
443
|
end
|
|
387
444
|
|
|
445
|
+
def get_output_file_extension
|
|
446
|
+
@csv_output.isChecked ? '.csv' : '.txt'
|
|
447
|
+
end
|
|
448
|
+
|
|
388
449
|
###############################################################################
|
|
389
450
|
# Additional Callbacks
|
|
390
451
|
###############################################################################
|
|
@@ -400,12 +461,10 @@ module Cosmos
|
|
|
400
461
|
if filename
|
|
401
462
|
extension = File.extname(filename)
|
|
402
463
|
filename_no_extension = filename[0..-(extension.length + 1)]
|
|
403
|
-
|
|
404
|
-
@packet_log_frame.output_filename = filename
|
|
464
|
+
@packet_log_frame.output_filename = "#{filename_no_extension}#{get_output_file_extension}"
|
|
405
465
|
end
|
|
406
466
|
end
|
|
407
467
|
end
|
|
408
468
|
|
|
409
|
-
end
|
|
410
|
-
|
|
411
|
-
end # module Cosmos
|
|
469
|
+
end
|
|
470
|
+
end
|
|
@@ -690,6 +690,9 @@ module Cosmos
|
|
|
690
690
|
end
|
|
691
691
|
if !value_text.is_printable?
|
|
692
692
|
value_text = "0x" + value_text.simple_formatted
|
|
693
|
+
# Add quotes around STRING or BLOCK defaults so CmdSender interprets them correctly
|
|
694
|
+
elsif (packet_item.data_type == :STRING or packet_item.data_type == :BLOCK)
|
|
695
|
+
value_text = "'#{packet_item.default}'"
|
|
693
696
|
end
|
|
694
697
|
end
|
|
695
698
|
value_item = Qt::TableWidgetItem.new(value_text)
|
|
@@ -435,7 +435,7 @@ module Cosmos
|
|
|
435
435
|
@cmd_name.text = command_string
|
|
436
436
|
hazardous, _ = System.commands.cmd_hazardous?(@command.target_name, @command.packet_name, command_params())
|
|
437
437
|
if hazardous
|
|
438
|
-
@cmd_info.text = "(
|
|
438
|
+
@cmd_info.text = "(Hazardous)"
|
|
439
439
|
else
|
|
440
440
|
@cmd_info.text = ""
|
|
441
441
|
end
|
|
@@ -20,7 +20,6 @@ require 'cosmos/tools/cmd_tlm_server/routers'
|
|
|
20
20
|
require 'cosmos/tools/cmd_tlm_server/replay_backend'
|
|
21
21
|
|
|
22
22
|
module Cosmos
|
|
23
|
-
|
|
24
23
|
# Provides the interface for all applications to get the latest telemetry and
|
|
25
24
|
# to send commands.
|
|
26
25
|
class CmdTlmServer
|
|
@@ -126,6 +125,9 @@ module Cosmos
|
|
|
126
125
|
# receive data. This is useful for testing scripts when actual hardware
|
|
127
126
|
# is not available.
|
|
128
127
|
# @param mode [Symbol] :CMD_TLM_SERVER or :REPLAY - Defines overall mode
|
|
128
|
+
# @param replay_routers [Boolean] Whether to keep existing routers when starting
|
|
129
|
+
# the server in REPLAY mode. Default is false which means to clear all
|
|
130
|
+
# existing routers and simply create the preidentified routers.
|
|
129
131
|
def initialize(
|
|
130
132
|
config_file = DEFAULT_CONFIG_FILE,
|
|
131
133
|
production = false,
|
|
@@ -218,16 +220,40 @@ module Cosmos
|
|
|
218
220
|
@routers.add_preidentified('PREIDENTIFIED_ROUTER', System.ports['CTS_PREIDENTIFIED'])
|
|
219
221
|
@routers.add_cmd_preidentified('PREIDENTIFIED_CMD_ROUTER', System.ports['CTS_CMD_ROUTER'])
|
|
220
222
|
else
|
|
223
|
+
# Create dummy interface for Replay so we can attach the preidentified routers to it.
|
|
224
|
+
# This is needed because interfaces are not mapped to targets when loading a saved_config.
|
|
225
|
+
# Since interfaces are used to access the routers, nothing is send out the preidentified
|
|
226
|
+
# interface port and TlmGrapher (most notably) does not work.
|
|
227
|
+
@replay_interface = Interface.new
|
|
228
|
+
@replay_interface.name = "REPLAY"
|
|
221
229
|
@routers.all.clear unless replay_routers
|
|
222
|
-
@routers.add_preidentified('PREIDENTIFIED_ROUTER', System.ports['REPLAY_PREIDENTIFIED'])
|
|
223
|
-
@routers.add_cmd_preidentified('PREIDENTIFIED_CMD_ROUTER', System.ports['REPLAY_CMD_ROUTER'])
|
|
230
|
+
@replay_interface.routers << @routers.add_preidentified('PREIDENTIFIED_ROUTER', System.ports['REPLAY_PREIDENTIFIED'])
|
|
231
|
+
@replay_interface.cmd_routers << @routers.add_cmd_preidentified('PREIDENTIFIED_CMD_ROUTER', System.ports['REPLAY_CMD_ROUTER'])
|
|
224
232
|
end
|
|
225
233
|
System.telemetry.limits_change_callback = method(:limits_change_callback)
|
|
226
234
|
@routers.start
|
|
227
235
|
|
|
228
236
|
start(production)
|
|
229
237
|
end
|
|
230
|
-
end
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
# Map any targets without interfaces to the dummy replay interface.
|
|
241
|
+
# Targets will only have an interface already mapped if the replay_routers
|
|
242
|
+
# flag was passed to the server.
|
|
243
|
+
def replay_map_targets_to_interfaces
|
|
244
|
+
# Try to map existing interfaces to targets
|
|
245
|
+
if @interfaces
|
|
246
|
+
@interfaces.all.each do |name, interface|
|
|
247
|
+
interface.target_names.each do |target|
|
|
248
|
+
System.targets[target].interface = interface
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
# If any remaing targets don't have an interface map to the @replay_interface
|
|
253
|
+
System.targets.each do |name, target|
|
|
254
|
+
target.interface = @replay_interface unless target.interface
|
|
255
|
+
end
|
|
256
|
+
end
|
|
231
257
|
|
|
232
258
|
# Properly shuts down the command and telemetry server by stoping the
|
|
233
259
|
# JSON-RPC server, background tasks, routers, and interfaces. Also kills
|
|
@@ -216,6 +216,7 @@ module Cosmos
|
|
|
216
216
|
when 'LOG_RAW', 'ROUTER_LOG_RAW'
|
|
217
217
|
parser.verify_num_parameters(0, nil, "#{keyword} <Raw Logger Class File (optional)> <Raw Logger Parameters (optional)>")
|
|
218
218
|
current_interface_or_router.raw_logger_pair = RawLoggerPair.new(current_interface_or_router.name, params)
|
|
219
|
+
current_interface_or_router.start_raw_logging
|
|
219
220
|
|
|
220
221
|
when 'OPTION'
|
|
221
222
|
parser.verify_num_parameters(2, nil, "#{keyword} <Option Name> <Option Value 1> <Option Value 2 (optional)> <etc>")
|
|
@@ -56,9 +56,6 @@ else
|
|
|
56
56
|
option_parser.on("--system FILE", "Use an alternative system.txt file") do |arg|
|
|
57
57
|
System.instance(File.join(USERPATH, 'config', 'system', arg))
|
|
58
58
|
end
|
|
59
|
-
option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
|
|
60
|
-
options.config_file = arg
|
|
61
|
-
end
|
|
62
59
|
end
|
|
63
60
|
|
|
64
61
|
return parser, options
|
|
@@ -75,7 +72,6 @@ else
|
|
|
75
72
|
end
|
|
76
73
|
|
|
77
74
|
module Cosmos
|
|
78
|
-
|
|
79
75
|
# Implements the GUI functions of the Command and Telemetry Server. All the
|
|
80
76
|
# QT calls are implemented here. The non-GUI functionality is contained in
|
|
81
77
|
# the CmdTlmServer class.
|
|
@@ -262,7 +258,7 @@ module Cosmos
|
|
|
262
258
|
end
|
|
263
259
|
@targets_tab = TargetsTab.new(@tab_widget)
|
|
264
260
|
@commands_tab = PacketsTab.new(self, PacketsTab::COMMANDS, @tab_widget)
|
|
265
|
-
@telemetry_tab = PacketsTab.new(self, PacketsTab::TELEMETRY, @tab_widget)
|
|
261
|
+
@telemetry_tab = PacketsTab.new(self, PacketsTab::TELEMETRY, @tab_widget, (@mode == :REPLAY))
|
|
266
262
|
@routers_tab = InterfacesTab.new(self, InterfacesTab::ROUTERS, @tab_widget)
|
|
267
263
|
if @mode == :CMD_TLM_SERVER
|
|
268
264
|
@logging_tab = LoggingTab.new(@production, @tab_widget)
|
|
@@ -271,6 +267,7 @@ module Cosmos
|
|
|
271
267
|
end
|
|
272
268
|
|
|
273
269
|
def config_change_callback
|
|
270
|
+
CmdTlmServer.instance.replay_map_targets_to_interfaces
|
|
274
271
|
start(nil)
|
|
275
272
|
end
|
|
276
273
|
|
|
@@ -546,6 +543,8 @@ module Cosmos
|
|
|
546
543
|
def self.post_options_parsed_hook(options)
|
|
547
544
|
@options = options
|
|
548
545
|
if options.no_gui
|
|
546
|
+
normalize_config_options(options)
|
|
547
|
+
|
|
549
548
|
["TERM", "INT"].each {|sig| Signal.trap(sig) {exit}}
|
|
550
549
|
|
|
551
550
|
begin
|
|
@@ -613,16 +612,15 @@ module Cosmos
|
|
|
613
612
|
# Set the default title which can be overridden in the config file
|
|
614
613
|
options.title = TOOL_NAME
|
|
615
614
|
options.auto_size = false
|
|
616
|
-
options.config_file = CmdTlmServer::DEFAULT_CONFIG_FILE
|
|
617
615
|
options.production = false
|
|
618
616
|
options.no_prompt = false
|
|
619
617
|
options.no_gui = false
|
|
620
618
|
options.replay_routers = false
|
|
619
|
+
options.config_file = true # config_file is required
|
|
620
|
+
# Set config_dir because by default it would be config/tools/cmd_tlm_server_gui
|
|
621
|
+
options.config_dir = File.join(Cosmos::USERPATH, 'config', 'tools', 'cmd_tlm_server')
|
|
621
622
|
|
|
622
623
|
option_parser.separator "CTS Specific Options:"
|
|
623
|
-
option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
|
|
624
|
-
options.config_file = arg
|
|
625
|
-
end
|
|
626
624
|
option_parser.on("-p", "--production", "Run the server in production mode which disables the ability to stop logging.") do |arg|
|
|
627
625
|
options.production = true
|
|
628
626
|
end
|
|
@@ -647,6 +645,5 @@ module Cosmos
|
|
|
647
645
|
super(option_parser, options)
|
|
648
646
|
end
|
|
649
647
|
end
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
end # module Cosmos
|
|
648
|
+
end
|
|
649
|
+
end
|
|
@@ -18,9 +18,10 @@ module Cosmos
|
|
|
18
18
|
COMMANDS = "Commands"
|
|
19
19
|
TELEMETRY = "Telemetry"
|
|
20
20
|
|
|
21
|
-
def initialize(server_gui, name, tab_widget)
|
|
21
|
+
def initialize(server_gui, name, tab_widget, replay = false)
|
|
22
22
|
@server_gui = server_gui
|
|
23
23
|
@name = name
|
|
24
|
+
@replay = replay
|
|
24
25
|
@widget = nil
|
|
25
26
|
reset()
|
|
26
27
|
@scroll = Qt::ScrollArea.new
|
|
@@ -147,7 +148,9 @@ module Cosmos
|
|
|
147
148
|
view_pv = Qt::PushButton.new("View in #{tool_name}")
|
|
148
149
|
view_pv.connect(SIGNAL('clicked()')) do
|
|
149
150
|
tool_name = tool_name.split.join.gsub("Command","Cmd") # remove space and convert name
|
|
150
|
-
|
|
151
|
+
options = "-p \"#{target_name} #{packet_name}\" --system #{File.basename(System.initial_filename)}"
|
|
152
|
+
options += " --replay" if @replay && @name == TELEMETRY
|
|
153
|
+
Cosmos.run_cosmos_tool(tool_name, options)
|
|
151
154
|
end
|
|
152
155
|
table.setCellWidget(row, 4, view_pv)
|
|
153
156
|
else
|
|
@@ -49,6 +49,7 @@ module Cosmos
|
|
|
49
49
|
router.interfaces << interface
|
|
50
50
|
interface.routers << router
|
|
51
51
|
end
|
|
52
|
+
router
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
# Adds a Preidentified command router to the system with given name and port.
|
|
@@ -72,6 +73,7 @@ module Cosmos
|
|
|
72
73
|
@config.interfaces.each do |interface_name, interface|
|
|
73
74
|
interface.cmd_routers << cmd_router
|
|
74
75
|
end
|
|
76
|
+
cmd_router
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
# Recreate a router with new initialization parameters
|