cosmos 3.9.2 → 4.0.0
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/.rubocop.yml +23 -0
- data/.travis.yml +1 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -1
- data/Manifest.txt +137 -52
- data/Rakefile +50 -44
- data/autohotkey/config/system/system.txt +0 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
- data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
- data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
- data/autohotkey/config/targets/META/screens/data.txt +12 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/tools/CmdSequence +14 -0
- data/autohotkey/tools/CmdSequenceAHK +23 -0
- data/autohotkey/tools/CmdSequenceAHK2 +16 -0
- data/autohotkey/tools/cmd_extractor.ahk +2 -2
- data/autohotkey/tools/cmd_sender.ahk +4 -6
- data/autohotkey/tools/cmd_sequence.ahk +215 -0
- data/autohotkey/tools/cmd_sequence2.ahk +23 -0
- data/autohotkey/tools/data_viewer.ahk +2 -3
- data/autohotkey/tools/limits_monitor.ahk +9 -11
- data/autohotkey/tools/open_gl_builder.ahk +1 -2
- data/autohotkey/tools/packet_viewer.ahk +51 -35
- data/autohotkey/tools/replay.ahk +1 -2
- data/autohotkey/tools/script_runner.ahk +1 -2
- data/autohotkey/tools/script_runner2.ahk +1 -2
- data/autohotkey/tools/test_runner2.ahk +1 -5
- data/autohotkey/tools/test_runner3.ahk +1 -3
- data/autohotkey/tools/tlm_grapher.ahk +1 -3
- data/autohotkey/tools/tlm_grapher3.ahk +1 -2
- data/autohotkey/tools/tlm_viewer.ahk +8 -3
- data/autohotkey/tools/tlm_viewer2.ahk +2 -3
- data/autohotkey/tools/tlm_viewer5.ahk +1 -2
- data/cosmos.gemspec +26 -20
- data/data/cmd_sequence.png +0 -0
- data/data/config/_array_params.yaml +23 -0
- data/data/config/_id_items.yaml +24 -0
- data/data/config/_id_params.yaml +58 -0
- data/data/config/_interfaces.yaml +206 -0
- data/data/config/_items.yaml +20 -0
- data/data/config/_params.yaml +58 -0
- data/data/config/cmd_tlm_server.yaml +110 -0
- data/data/config/command.yaml +38 -0
- data/data/config/command_modifiers.yaml +127 -0
- data/data/config/command_telemetry.yaml +3 -0
- data/data/config/data_viewer.yaml +43 -0
- data/data/config/handbook_creator.yaml +23 -0
- data/data/config/housekeeping_params.yaml +71 -0
- data/data/config/interface_modifiers.yaml +44 -0
- data/data/config/item_modifiers.yaml +172 -0
- data/data/config/launcher.yaml +117 -0
- data/data/config/limits_monitor.yaml +53 -0
- data/data/config/linegraph_params.yaml +30 -0
- data/data/config/linegraph_plot.yaml +106 -0
- data/data/config/page_modifiers.yaml +128 -0
- data/data/config/param_item_modifiers.yaml +41 -0
- data/data/config/parameter_modifiers.yaml +144 -0
- data/data/config/protocols.yaml +257 -0
- data/data/config/screen.yaml +151 -0
- data/data/config/script_runner.yaml +15 -0
- data/data/config/system.yaml +153 -0
- data/data/config/table_manager.yaml +76 -0
- data/data/config/table_parameter_modifiers.yaml +9 -0
- data/data/config/target.yaml +71 -0
- data/data/config/telemetry.yaml +73 -0
- data/data/config/telemetry_modifiers.yaml +129 -0
- data/data/config/test_runner.yaml +118 -0
- data/data/config/tlm_extractor.yaml +109 -0
- data/data/config/tlm_grapher.yaml +78 -0
- data/data/config/tlm_viewer.yaml +107 -0
- data/data/config/unknown.yaml +3 -0
- data/data/config/widgets.yaml +1339 -0
- data/data/config/xy_params.yaml +50 -0
- data/data/config/xy_plot.yaml +12 -0
- data/data/config_editor.png +0 -0
- data/data/crc.txt +172 -161
- data/data/delete.png +0 -0
- data/demo/config/data/crc.txt +56 -36
- data/demo/config/data/meta_init.txt +1 -4
- data/demo/config/system/system.txt +15 -3
- data/demo/config/system/system2.txt +13 -3
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
- data/demo/config/targets/EXAMPLE/target.txt +3 -1
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
- data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
- data/demo/config/targets/INST/screens/adcs.txt +39 -15
- data/demo/config/targets/INST/screens/commanding.txt +26 -19
- data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
- data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
- data/demo/config/targets/INST/screens/tabs.txt +0 -2
- data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
- data/demo/config/targets/INST/tables/EventAction.csv +9 -0
- data/demo/config/targets/INST/tables/EventAction.dat +0 -0
- data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
- data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
- data/demo/config/targets/INST/target.txt +4 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
- data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
- data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
- data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
- data/demo/config/targets/SYSTEM/target.txt +12 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
- data/demo/config/targets/TEMPLATED/target.txt +2 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
- data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
- data/demo/config/tools/launcher/launcher.txt +9 -6
- data/demo/config/tools/launcher/launcher2.txt +16 -13
- data/demo/config/tools/launcher/launcher_mini.txt +45 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
- data/demo/config/tools/test_runner/test_runner.txt +1 -1
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/demo/lib/example_background_task.rb +9 -5
- data/demo/lib/example_target.rb +5 -15
- data/demo/lib/scpi_target.rb +4 -10
- data/demo/procedures/cosmos_api_test.rb +17 -0
- data/demo/tools/CmdSequence +16 -0
- data/demo/tools/CmdSequence.bat +9 -0
- data/demo/tools/ConfigEditor +16 -0
- data/demo/tools/ConfigEditor.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/ext/cosmos/ext/packet/packet.c +5 -5
- data/install/config/data/crc.txt +12 -8
- data/install/config/system/system.txt +13 -3
- data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
- data/install/config/targets/SYSTEM/target.txt +12 -0
- data/install/tools/CmdSequence +16 -0
- data/install/tools/CmdSequence.bat +9 -0
- data/install/tools/ConfigEditor +16 -0
- data/install/tools/ConfigEditor.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/lib/cosmos.rb +1 -1
- data/lib/cosmos/config/config_parser.rb +147 -59
- data/lib/cosmos/config/meta_config_parser.rb +57 -0
- data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
- data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
- data/lib/cosmos/core_ext/array.rb +45 -5
- data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
- data/lib/cosmos/core_ext/file.rb +2 -2
- data/lib/cosmos/core_ext/kernel.rb +1 -6
- data/lib/cosmos/core_ext/objectspace.rb +0 -2
- data/lib/cosmos/core_ext/string.rb +27 -4
- data/lib/cosmos/core_ext/time.rb +39 -10
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
- data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
- data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
- data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
- data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
- data/lib/cosmos/gui/dialogs/splash.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
- data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
- data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
- data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
- data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
- data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
- data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
- data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
- data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
- data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
- data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
- data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
- data/lib/cosmos/gui/qt.rb +1 -1
- data/lib/cosmos/gui/qt_tool.rb +21 -10
- data/lib/cosmos/gui/text/completion.rb +23 -2
- data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
- data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
- data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
- data/lib/cosmos/interfaces.rb +10 -0
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
- data/lib/cosmos/interfaces/interface.rb +240 -22
- data/lib/cosmos/interfaces/linc_interface.rb +3 -5
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
- data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
- data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
- data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
- data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
- data/lib/cosmos/interfaces/serial_interface.rb +28 -23
- data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
- data/lib/cosmos/interfaces/stream_interface.rb +36 -108
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
- data/lib/cosmos/interfaces/udp_interface.rb +51 -83
- data/lib/cosmos/io/buffered_file.rb +92 -2
- data/lib/cosmos/io/json_drb.rb +2 -2
- data/lib/cosmos/io/posix_serial_driver.rb +3 -1
- data/lib/cosmos/io/raw_logger.rb +3 -3
- data/lib/cosmos/io/serial_driver.rb +14 -5
- data/lib/cosmos/io/win32_serial_driver.rb +16 -4
- data/lib/cosmos/packet_logs.rb +0 -1
- data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
- data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
- data/lib/cosmos/packets/binary_accessor.rb +599 -32
- data/lib/cosmos/packets/commands.rb +48 -24
- data/lib/cosmos/packets/packet.rb +140 -54
- data/lib/cosmos/packets/packet_config.rb +0 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
- data/lib/cosmos/packets/structure.rb +81 -33
- data/lib/cosmos/packets/structure_item.rb +45 -5
- data/lib/cosmos/packets/telemetry.rb +149 -55
- data/lib/cosmos/script/api_shared.rb +1000 -0
- data/lib/cosmos/script/commands.rb +2 -2
- data/lib/cosmos/script/extract.rb +19 -4
- data/lib/cosmos/script/limits.rb +2 -0
- data/lib/cosmos/script/script.rb +1 -1
- data/lib/cosmos/script/scripting.rb +4 -784
- data/lib/cosmos/script/telemetry.rb +44 -23
- data/lib/cosmos/script/tools.rb +15 -69
- data/lib/cosmos/streams/serial_stream.rb +12 -19
- data/lib/cosmos/streams/stream.rb +2 -11
- data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
- data/lib/cosmos/system/system.rb +187 -31
- data/lib/cosmos/system/target.rb +11 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
- data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
- data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
- data/lib/cosmos/tools/launcher/launcher.rb +29 -12
- data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
- data/lib/cosmos/tools/replay/replay.rb +36 -20
- data/lib/cosmos/tools/replay/replay_server.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
- data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
- data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
- data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
- data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
- data/lib/cosmos/top_level.rb +34 -24
- data/lib/cosmos/utilities/crc.rb +108 -6
- data/lib/cosmos/utilities/csv.rb +68 -14
- data/lib/cosmos/utilities/logger.rb +2 -2
- data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
- data/lib/cosmos/version.rb +6 -6
- data/lib/cosmos/win32/win32_main.rb +50 -46
- data/run_gui_tests.bat +3 -1
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
- data/spec/core_ext/file_spec.rb +1 -1
- data/spec/core_ext/objectspace_spec.rb +12 -9
- data/spec/core_ext/string_spec.rb +6 -0
- data/spec/core_ext/time_spec.rb +10 -0
- data/spec/gui/line_graph/line_clip_spec.rb +226 -224
- data/spec/gui/qt_spec.rb +81 -79
- data/spec/install/config/system/system.txt +0 -6
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
- data/spec/install/config/targets/SYSTEM/target.txt +12 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
- data/spec/interfaces/interface_spec.rb +402 -18
- data/spec/interfaces/linc_interface_spec.rb +37 -39
- data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
- data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
- data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
- data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
- data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
- data/spec/interfaces/serial_interface_spec.rb +35 -34
- data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
- data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
- data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
- data/spec/interfaces/udp_interface_spec.rb +120 -55
- data/spec/io/serial_driver_spec.rb +41 -39
- data/spec/io/udp_sockets_spec.rb +13 -8
- data/spec/io/win32_serial_driver_spec.rb +62 -59
- data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
- data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
- data/spec/packets/commands_spec.rb +5 -5
- data/spec/packets/packet_spec.rb +2 -14
- data/spec/script/extract_spec.rb +21 -7
- data/spec/script/scripting_spec.rb +261 -6
- data/spec/script/telemetry_spec.rb +17 -9
- data/spec/spec_helper.rb +26 -10
- data/spec/streams/serial_stream_spec.rb +87 -82
- data/spec/streams/tcpip_client_stream_spec.rb +12 -4
- data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
- data/spec/system/system_spec.rb +66 -50
- data/spec/system/target_spec.rb +33 -11
- data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
- data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
- data/spec/top_level/top_level_spec.rb +39 -11
- data/spec/utilities/csv_spec.rb +62 -20
- data/tasks/gemfile_stats.rake +6 -3
- data/test/performance/config/system/system_packets.txt +0 -1
- data/test/performance/config/system/system_threads.txt +0 -1
- metadata +177 -92
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/autohotkey/config/targets/COSMOS/target.txt +0 -5
- data/autohotkey/userpath.txt +0 -1
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/demo/config/targets/COSMOS/screens/version.txt +0 -19
- data/demo/config/targets/COSMOS/target.txt +0 -11
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
- data/demo/userpath.txt +0 -1
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/install/config/targets/COSMOS/target.txt +0 -9
- data/install/config/targets/SYSTEM/README.txt +0 -1
- data/install/userpath.txt +0 -1
- data/lib/cosmos/io/tcpip_server.rb +0 -571
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
- data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
- data/lib/cosmos/streams/stream_protocol.rb +0 -373
- data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/spec/install/config/targets/COSMOS/target.txt +0 -5
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
- data/spec/install/userpath.txt +0 -1
- data/spec/interfaces/stream_interface_spec.rb +0 -157
- data/spec/io/tcpip_server_spec.rb +0 -338
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
- data/spec/streams/burst_stream_protocol_spec.rb +0 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
- data/spec/streams/length_stream_protocol_spec.rb +0 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
- data/spec/streams/stream_protocol_spec.rb +0 -346
- data/spec/streams/template_stream_protocol_spec.rb +0 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
- data/test/performance/userpath.txt +0 -1
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
module Cosmos
|
|
12
|
-
# Help->About dialog which is part of all COSMOS tools. Displays
|
|
13
|
-
# software versions, environment variables
|
|
14
|
-
#
|
|
12
|
+
# Help->About dialog which is part of all COSMOS tools. Displays information
|
|
13
|
+
# about licenses, software versions, and environment variables. This dialog
|
|
14
|
+
# also creates a {PryDialog} when the letters 'p', 'r', 'y' are typed. See
|
|
15
15
|
# {PryDialog} for more details.
|
|
16
16
|
class AboutDialog < Qt::Dialog
|
|
17
17
|
# About text to display in the dialog
|
|
@@ -19,24 +19,26 @@ module Cosmos
|
|
|
19
19
|
"COSMOS application sounds are courtesy of http://www.freesfx.co.uk.\n"\
|
|
20
20
|
"\n"\
|
|
21
21
|
"COSMOS utilizes the QtRuby (http://rubyforge.org/projects/korundum) "\
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
"library under the GNU Lesser General Public License. "\
|
|
23
|
+
"QtRuby is a Ruby extension module that provides an "\
|
|
24
|
+
"interface to the Qt Gui Toolkit (http://qt-project.org) by Digia "\
|
|
25
|
+
"under the GNU Lesser General Public License.\n"\
|
|
26
|
+
"\n"\
|
|
26
27
|
"Ruby Version: ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} "\
|
|
27
|
-
|
|
28
|
+
"patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]\n"\
|
|
28
29
|
"Rubygems Version: #{Gem::VERSION}\n"\
|
|
29
30
|
"Qt Version: #{Qt::qVersion}\n"\
|
|
30
31
|
"Cosmos::PATH: #{Cosmos::PATH}\n"\
|
|
31
|
-
"Cosmos::USERPATH: #{Cosmos::USERPATH}\n
|
|
32
|
+
"Cosmos::USERPATH: #{Cosmos::USERPATH}\n"\
|
|
33
|
+
"\n"\
|
|
32
34
|
"Environment Variables:\n"\
|
|
33
35
|
"RUBYLIB: #{ENV['RUBYLIB']}\n"\
|
|
34
36
|
"RUBYOPT: #{ENV['RUBYOPT']}\n"\
|
|
35
37
|
"GEM_PATH: #{ENV['GEM_PATH']}\n"\
|
|
36
|
-
"GEM_HOME: #{ENV['GEM_HOME']}\n
|
|
38
|
+
"GEM_HOME: #{ENV['GEM_HOME']}\n"\
|
|
39
|
+
"\n"\
|
|
37
40
|
"Loaded Gems:\n"
|
|
38
41
|
Gem.loaded_specs.values.map {|x| ABOUT_COSMOS << "#{x.name} #{x.version} #{x.platform}\n"}
|
|
39
|
-
|
|
40
42
|
@@pry_dialogs = []
|
|
41
43
|
|
|
42
44
|
# @param parent [Qt::Widget] Part of the dialog (the application)
|
|
@@ -91,9 +93,12 @@ module Cosmos
|
|
|
91
93
|
if Kernel.is_windows?
|
|
92
94
|
configurable_about_text << "\n" \
|
|
93
95
|
"Main Application x:#{parent.x} y:#{parent.y} width:#{parent.frameGeometry.width + 16} " \
|
|
94
|
-
"height:#{parent.frameGeometry.height + 38}\n\n" +
|
|
96
|
+
"height:#{parent.frameGeometry.height + 38}\n\n" + ABOUT_COSMOS
|
|
95
97
|
else
|
|
96
|
-
configurable_about_text << "\n"
|
|
98
|
+
configurable_about_text << "\n" \
|
|
99
|
+
"Main Application x:#{parent.x} y:#{parent.y} width:#{parent.frameGeometry.width} " \
|
|
100
|
+
"height:#{parent.frameGeometry.height}\n\n" + ABOUT_COSMOS
|
|
101
|
+
end
|
|
97
102
|
|
|
98
103
|
# Set the application about text
|
|
99
104
|
about = Qt::Label.new(about_string + "\n\n" + configurable_about_text)
|
|
@@ -32,8 +32,12 @@ module Cosmos
|
|
|
32
32
|
if initial_time
|
|
33
33
|
@time = initial_time
|
|
34
34
|
else
|
|
35
|
-
time_now = Time.now
|
|
36
|
-
|
|
35
|
+
time_now = Time.now.sys
|
|
36
|
+
if time_now.utc?
|
|
37
|
+
@time = Time.utc(time_now.year, time_now.mon, time_now.day)
|
|
38
|
+
else
|
|
39
|
+
@time = Time.local(time_now.year, time_now.mon, time_now.day)
|
|
40
|
+
end
|
|
37
41
|
end
|
|
38
42
|
@show_time = show_time
|
|
39
43
|
|
|
@@ -54,7 +58,11 @@ module Cosmos
|
|
|
54
58
|
|
|
55
59
|
if @show_time
|
|
56
60
|
@time_layout = Qt::HBoxLayout.new
|
|
57
|
-
@
|
|
61
|
+
if @time.utc?
|
|
62
|
+
@time_label = Qt::Label.new("Time (UTC):")
|
|
63
|
+
else
|
|
64
|
+
@time_label = Qt::Label.new("Time (UTC #{@time.strftime('%z')}):")
|
|
65
|
+
end
|
|
58
66
|
@time_layout.addWidget(@time_label)
|
|
59
67
|
@time_layout.addStretch
|
|
60
68
|
@hour = Qt::LineEdit.new(sprintf("%02u", @time.hour))
|
|
@@ -38,7 +38,7 @@ module Cosmos
|
|
|
38
38
|
# @param packet_name [String] Name of the packet
|
|
39
39
|
def initialize(parent, type, target_name, packet_name)
|
|
40
40
|
super(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
|
41
|
-
raise "RawDialog: Undefined type:#{type}" if type != CMD_TYPE
|
|
41
|
+
raise "RawDialog: Undefined type:#{type}" if (type != CMD_TYPE) && (type != TLM_TYPE)
|
|
42
42
|
|
|
43
43
|
@type = type
|
|
44
44
|
@done = false
|
|
@@ -127,7 +127,7 @@ module Cosmos
|
|
|
127
127
|
limits_details = Qt::GroupBox.new(tr("Limits"))
|
|
128
128
|
@limits_layout = Qt::FormLayout.new
|
|
129
129
|
limits.each do |limits_set_name, limits_settings|
|
|
130
|
-
if limits_settings[4]
|
|
130
|
+
if limits_settings[4] && limits_settings[5]
|
|
131
131
|
label = Qt::Label.new("RL/#{limits_settings[0]} YL/#{limits_settings[1]} YH/#{limits_settings[2]} RH/#{limits_settings[3]} GL/#{limits_settings[4]} GH/#{limits_settings[5]}")
|
|
132
132
|
else
|
|
133
133
|
label = Qt::Label.new("RL/#{limits_settings[0]} YL/#{limits_settings[1]} YH/#{limits_settings[2]} RH/#{limits_settings[3]}")
|
|
@@ -50,10 +50,10 @@ module Cosmos
|
|
|
50
50
|
# by the ConfigParser
|
|
51
51
|
when ConfigParser::Error
|
|
52
52
|
# Substitute the html tags '<' and '>' and then replace newlines with html breaks
|
|
53
|
-
usage = exception.usage.gsub("<","<").gsub(">",">").gsub("\n","<br/>")
|
|
54
|
-
message = exception.message.gsub("<","<").gsub(">",">").gsub("\n","<br/>")
|
|
55
|
-
line = exception.keyword + ' ' + exception.parameters.join(' ').gsub("<","<").gsub(">",">").gsub("\n","<br/>")
|
|
56
|
-
text = "Error
|
|
53
|
+
usage = exception.usage.gsub("<", "<").gsub(">", ">").gsub("\n", "<br/>")
|
|
54
|
+
message = exception.message.gsub("<", "<").gsub(">", ">").gsub("\n", "<br/>")
|
|
55
|
+
line = exception.keyword + ' ' + exception.parameters.join(' ').gsub("<", "<").gsub(">", ">").gsub("\n", "<br/>")
|
|
56
|
+
text = "Error at #{exception.filename}:#{exception.line_number}<br/><br/>#{line}<br/><br/>Usage: #{usage}<br/><br/>#{message}"
|
|
57
57
|
unless exception.url.nil?
|
|
58
58
|
text << "<br/><br/>For more information see <a href='#{exception.url}'>#{exception.url}</a>."
|
|
59
59
|
end
|
|
@@ -61,14 +61,14 @@ module Cosmos
|
|
|
61
61
|
# occurs. Since it is a known issue we don't put up the full error
|
|
62
62
|
# dialog.
|
|
63
63
|
when FatalError
|
|
64
|
-
text = "Error: #{exception.message.gsub("\n","<br/>")}"
|
|
64
|
+
text = "Error: #{exception.message.gsub("\n", "<br/>")}"
|
|
65
65
|
else
|
|
66
66
|
file_contents = ""
|
|
67
67
|
# First read the log_file we wrote out to the logs directory
|
|
68
68
|
# Change newlines to %0A for Outlook and remove all quotes to avoid breaking the link
|
|
69
69
|
begin
|
|
70
|
-
message = exception.message.gsub("\n","<br/>")
|
|
71
|
-
file_contents = File.read(log_file).gsub("\n","%0A").gsub("'","").gsub("\"","") if log_file
|
|
70
|
+
message = exception.message.gsub("\n", "<br/>")
|
|
71
|
+
file_contents = File.read(log_file).gsub("\n", "%0A").gsub("'", "").gsub("\"", "") if log_file
|
|
72
72
|
rescue
|
|
73
73
|
end
|
|
74
74
|
text = "The following error occurred:<br/>#{message}"
|
|
@@ -18,40 +18,44 @@ module Cosmos
|
|
|
18
18
|
class FindReplaceDialog < Qt::Dialog
|
|
19
19
|
include Singleton
|
|
20
20
|
|
|
21
|
-
#
|
|
22
|
-
# @param parent [Qt::Widget] Dialog parent which must implement a
|
|
23
|
-
# search_text method which returns a String to search on
|
|
21
|
+
# (see #show_find)
|
|
24
22
|
def self.show_find(parent)
|
|
25
23
|
self.instance.show_find(parent)
|
|
26
24
|
end
|
|
25
|
+
# Displays a Find dialog
|
|
26
|
+
# @param parent [Qt::Widget] Dialog parent which must implement a
|
|
27
|
+
# search_text method which returns a String to search on
|
|
27
28
|
def show_find(parent)
|
|
28
29
|
@parent = parent
|
|
29
30
|
disable_replace
|
|
30
31
|
show_dialog
|
|
31
32
|
end
|
|
32
33
|
|
|
33
|
-
#
|
|
34
|
-
# @param parent [Qt::Widget] Dialog parent which must implement a
|
|
35
|
-
# search_text method which returns a String to search on
|
|
34
|
+
# (see #show_replace)
|
|
36
35
|
def self.show_replace(parent)
|
|
37
36
|
self.instance.show_replace(parent)
|
|
38
37
|
end
|
|
38
|
+
# Displays a Find/Replace dialog
|
|
39
|
+
# @param parent [Qt::Widget] Dialog parent which must implement a
|
|
40
|
+
# search_text method which returns a String to search on
|
|
39
41
|
def show_replace(parent)
|
|
40
42
|
@parent = parent
|
|
41
43
|
enable_replace
|
|
42
44
|
show_dialog
|
|
43
45
|
end
|
|
44
46
|
|
|
45
|
-
#
|
|
46
|
-
# search_text method which returns a String to search on
|
|
47
|
+
# (see #find_next)
|
|
47
48
|
def self.find_next(parent)
|
|
48
49
|
self.instance.find_next(parent)
|
|
49
50
|
end
|
|
51
|
+
# Finds the next instance of the search term
|
|
52
|
+
# @param parent [#search_text] Object which must implement a
|
|
53
|
+
# search_text method which returns a String to search on
|
|
50
54
|
def find_next(parent)
|
|
51
55
|
flags = find_flags()
|
|
52
56
|
flags &= ~Qt::TextDocument::FindBackward.to_i
|
|
53
57
|
found = parent.search_text.find(find_text(), flags)
|
|
54
|
-
if
|
|
58
|
+
if !found && wrap_around?
|
|
55
59
|
cursor = parent.search_text.textCursor
|
|
56
60
|
cursor.movePosition(Qt::TextCursor::Start)
|
|
57
61
|
parent.search_text.setTextCursor(cursor)
|
|
@@ -59,16 +63,18 @@ module Cosmos
|
|
|
59
63
|
end
|
|
60
64
|
end
|
|
61
65
|
|
|
62
|
-
#
|
|
63
|
-
# search_text method which returns a String to search on
|
|
66
|
+
# (see #find_previous)
|
|
64
67
|
def self.find_previous(parent)
|
|
65
68
|
self.instance.find_previous(parent)
|
|
66
69
|
end
|
|
70
|
+
# Finds the previous instance of the search term
|
|
71
|
+
# @param parent [#search_text] Object which must implement a
|
|
72
|
+
# search_text method which returns a String to search on
|
|
67
73
|
def find_previous(parent)
|
|
68
74
|
flags = find_flags()
|
|
69
75
|
flags |= Qt::TextDocument::FindBackward.to_i
|
|
70
76
|
found = parent.search_text.find(find_text(), flags)
|
|
71
|
-
if
|
|
77
|
+
if !found && wrap_around?
|
|
72
78
|
cursor = parent.search_text.textCursor
|
|
73
79
|
cursor.movePosition(Qt::TextCursor::End)
|
|
74
80
|
parent.search_text.setTextCursor(cursor)
|
|
@@ -206,7 +212,7 @@ module Cosmos
|
|
|
206
212
|
def handle_find_next
|
|
207
213
|
text = @parent.search_text
|
|
208
214
|
found = text.find(find_text, find_flags)
|
|
209
|
-
if
|
|
215
|
+
if !found && wrap_around?
|
|
210
216
|
cursor = text.textCursor
|
|
211
217
|
if find_up?
|
|
212
218
|
cursor.movePosition(Qt::TextCursor::End)
|
|
@@ -225,7 +231,7 @@ module Cosmos
|
|
|
225
231
|
found = true
|
|
226
232
|
else
|
|
227
233
|
found = text.find(find_text, find_flags)
|
|
228
|
-
if
|
|
234
|
+
if !found && wrap_around?
|
|
229
235
|
cursor = text.textCursor
|
|
230
236
|
if find_up?
|
|
231
237
|
cursor.movePosition(Qt::TextCursor::End)
|
|
@@ -262,6 +268,5 @@ module Cosmos
|
|
|
262
268
|
end
|
|
263
269
|
cursor.endEditBlock
|
|
264
270
|
end
|
|
265
|
-
|
|
266
271
|
end # class FindReplaceDialog
|
|
267
272
|
end # module Cosmos
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2017 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 showing the most recent raw data read and written by an interface
|
|
16
|
+
class InterfaceRawDialog < Qt::Dialog
|
|
17
|
+
slots 'data_update_timeout()'
|
|
18
|
+
|
|
19
|
+
# Dialog update period
|
|
20
|
+
DATA_UPDATE_PERIOD_MS = 1000
|
|
21
|
+
# Header string to display over the dump
|
|
22
|
+
HEADER = "Address Data Ascii\n"\
|
|
23
|
+
"---------------------------------------------------------------------------\n"
|
|
24
|
+
|
|
25
|
+
# @return [Qt::Font] Font to display the dialog dump (should be monospaced)
|
|
26
|
+
@@font = nil
|
|
27
|
+
|
|
28
|
+
# @param parent [Qt::Dialog] Parent for the dialog
|
|
29
|
+
# @param interface [Interface] Interface to get data from
|
|
30
|
+
def initialize(parent, interface)
|
|
31
|
+
super(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
|
32
|
+
|
|
33
|
+
@interface = interface
|
|
34
|
+
@done = false
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
title = "Interface #{@interface.name} Raw Data"
|
|
38
|
+
setWindowTitle(title)
|
|
39
|
+
|
|
40
|
+
@timer = Qt::Timer.new
|
|
41
|
+
|
|
42
|
+
overall_layout = Qt::VBoxLayout.new
|
|
43
|
+
top_layout = Qt::HBoxLayout.new
|
|
44
|
+
text_layout = Qt::VBoxLayout.new
|
|
45
|
+
|
|
46
|
+
title_label = Qt::Label.new(tr(title))
|
|
47
|
+
text_layout.addWidget(title_label)
|
|
48
|
+
@read_raw_data_time = Qt::Label.new("Read Raw Data Time: ")
|
|
49
|
+
text_layout.addWidget(@read_raw_data_time)
|
|
50
|
+
top_layout.addLayout(text_layout)
|
|
51
|
+
top_layout.addStretch(1)
|
|
52
|
+
|
|
53
|
+
button = Qt::PushButton.new(tr("Pause"))
|
|
54
|
+
top_layout.addWidget(button)
|
|
55
|
+
button.connect(SIGNAL('clicked()')) do
|
|
56
|
+
if button.text == "Pause"
|
|
57
|
+
button.setText("Resume")
|
|
58
|
+
@timer.method_missing(:stop)
|
|
59
|
+
else
|
|
60
|
+
button.setText("Pause")
|
|
61
|
+
@timer.method_missing(:start, DATA_UPDATE_PERIOD_MS)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
overall_layout.addLayout(top_layout)
|
|
65
|
+
|
|
66
|
+
@read_raw_data = Qt::PlainTextEdit.new
|
|
67
|
+
@read_raw_data.setReadOnly(true)
|
|
68
|
+
@read_raw_data.setWordWrapMode(Qt::TextOption::NoWrap)
|
|
69
|
+
overall_layout.addWidget(@read_raw_data)
|
|
70
|
+
if Kernel.is_windows?
|
|
71
|
+
@@font = Cosmos.getFont('Courier', 10) unless @@font
|
|
72
|
+
else
|
|
73
|
+
@@font = Cosmos.getFont('Courier', 14) unless @@font
|
|
74
|
+
end
|
|
75
|
+
@read_format = @read_raw_data.currentCharFormat()
|
|
76
|
+
@read_format.setFont(@@font)
|
|
77
|
+
@read_raw_data.setCurrentCharFormat(@read_format)
|
|
78
|
+
|
|
79
|
+
@written_raw_data_time = Qt::Label.new("Written Raw Data Time: ")
|
|
80
|
+
overall_layout.addWidget(@written_raw_data_time)
|
|
81
|
+
|
|
82
|
+
@written_raw_data = Qt::PlainTextEdit.new
|
|
83
|
+
@written_raw_data.setReadOnly(true)
|
|
84
|
+
@written_raw_data.setWordWrapMode(Qt::TextOption::NoWrap)
|
|
85
|
+
overall_layout.addWidget(@written_raw_data)
|
|
86
|
+
if Kernel.is_windows?
|
|
87
|
+
@@font = Cosmos.getFont('Courier', 10) unless @@font
|
|
88
|
+
else
|
|
89
|
+
@@font = Cosmos.getFont('Courier', 14) unless @@font
|
|
90
|
+
end
|
|
91
|
+
@written_format = @written_raw_data.currentCharFormat()
|
|
92
|
+
@written_format.setFont(@@font)
|
|
93
|
+
@written_raw_data.setCurrentCharFormat(@written_format)
|
|
94
|
+
|
|
95
|
+
connect(@timer, SIGNAL('timeout()'), self, SLOT('data_update_timeout()'))
|
|
96
|
+
@timer.method_missing(:start, DATA_UPDATE_PERIOD_MS)
|
|
97
|
+
data_update_timeout()
|
|
98
|
+
|
|
99
|
+
self.setLayout(overall_layout)
|
|
100
|
+
self.resize(700, 280)
|
|
101
|
+
self.show
|
|
102
|
+
self.raise
|
|
103
|
+
rescue DRb::DRbConnError
|
|
104
|
+
# Just do nothing
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Callback to get the latest data and update the dialog
|
|
109
|
+
def data_update_timeout
|
|
110
|
+
@read_raw_data_time.setText("Read Raw Data Time: #{@interface.read_raw_data_time.formatted}") if @interface.read_raw_data_time
|
|
111
|
+
position_x = @read_raw_data.horizontalScrollBar.value
|
|
112
|
+
position_y = @read_raw_data.verticalScrollBar.value
|
|
113
|
+
@read_raw_data.setPlainText(HEADER + @interface.read_raw_data.formatted)
|
|
114
|
+
@read_raw_data.horizontalScrollBar.setValue(position_x)
|
|
115
|
+
@read_raw_data.verticalScrollBar.setValue(position_y)
|
|
116
|
+
|
|
117
|
+
@written_raw_data_time.setText("Written Raw Data Time: #{@interface.written_raw_data_time.formatted}") if @interface.written_raw_data_time
|
|
118
|
+
position_x = @written_raw_data.horizontalScrollBar.value
|
|
119
|
+
position_y = @written_raw_data.verticalScrollBar.value
|
|
120
|
+
@written_raw_data.setPlainText(HEADER + @interface.written_raw_data.formatted)
|
|
121
|
+
@written_raw_data.horizontalScrollBar.setValue(position_x)
|
|
122
|
+
@written_raw_data.verticalScrollBar.setValue(position_y)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def reject
|
|
126
|
+
super()
|
|
127
|
+
stop_timer if @timer
|
|
128
|
+
self.dispose
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def closeEvent(event)
|
|
132
|
+
super(event)
|
|
133
|
+
stop_timer if @timer
|
|
134
|
+
self.dispose
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def stop_timer
|
|
138
|
+
@timer.stop
|
|
139
|
+
@timer.dispose
|
|
140
|
+
@timer = nil
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -97,22 +97,23 @@ module Cosmos
|
|
|
97
97
|
# against what is listed in the file to detect any modifications. Also
|
|
98
98
|
# opens all files listed in <Cosmos::USERPATH/config/data/crc.txt to verify
|
|
99
99
|
# the user defined COSMOS configuration files.
|
|
100
|
+
#
|
|
100
101
|
# @return [String] Either a success message or warning about all files
|
|
101
102
|
# which did not match their expected CRCs.
|
|
102
103
|
def check_all_crcs
|
|
103
104
|
result_text = ''
|
|
104
105
|
missing_text = ''
|
|
105
|
-
core_file_count, core_error_count, _, _ = check_crcs(::Cosmos::PATH, File.join(::Cosmos::PATH,'data','crc.txt'), result_text, missing_text, 'CORE')
|
|
106
|
+
core_file_count, core_error_count, _, _ = check_crcs(::Cosmos::PATH, File.join(::Cosmos::PATH, 'data', 'crc.txt'), result_text, missing_text, 'CORE')
|
|
106
107
|
project_file_count = 0
|
|
107
108
|
project_error_count = 0
|
|
108
109
|
official = true
|
|
109
|
-
if File.exist?(File.join(::Cosmos::USERPATH,'config','data','crc.txt'))
|
|
110
|
-
project_file_count, project_error_count, _, official = check_crcs(::Cosmos::USERPATH, File.join(::Cosmos::USERPATH,'config','data','crc.txt'), result_text, missing_text, 'PROJECT')
|
|
110
|
+
if File.exist?(File.join(::Cosmos::USERPATH, 'config', 'data', 'crc.txt'))
|
|
111
|
+
project_file_count, project_error_count, _, official = check_crcs(::Cosmos::USERPATH, File.join(::Cosmos::USERPATH, 'config', 'data', 'crc.txt'), result_text, missing_text, 'PROJECT')
|
|
111
112
|
end
|
|
112
113
|
|
|
113
114
|
final_text = ''
|
|
114
|
-
if core_error_count == 0
|
|
115
|
-
if missing_text.empty?
|
|
115
|
+
if (core_error_count == 0) && (project_error_count == 0)
|
|
116
|
+
if missing_text.empty? && official
|
|
116
117
|
@text_crc.setTextColor(Cosmos::GREEN)
|
|
117
118
|
else
|
|
118
119
|
@text_crc.setTextColor(Cosmos::YELLOW)
|
|
@@ -34,6 +34,7 @@ module Cosmos
|
|
|
34
34
|
# @param show_log_reader (see PacketLogFrame#initialize)
|
|
35
35
|
# @param input_filename_filter (see PacketLogFrame#initialize)
|
|
36
36
|
# @param output_filename_filter (see PacketLogFrame#initialize)
|
|
37
|
+
# @param multiple_file_select (see PacketLogFrame#initialize)
|
|
37
38
|
def initialize(parent,
|
|
38
39
|
title,
|
|
39
40
|
log_directory,
|
|
@@ -44,7 +45,8 @@ module Cosmos
|
|
|
44
45
|
show_time = true,
|
|
45
46
|
show_log_reader = true,
|
|
46
47
|
input_filename_filter = Cosmos::BIN_FILE_PATTERN,
|
|
47
|
-
output_filename_filter = Cosmos::BIN_FILE_PATTERN
|
|
48
|
+
output_filename_filter = Cosmos::BIN_FILE_PATTERN,
|
|
49
|
+
multiple_file_select = true)
|
|
48
50
|
super(parent)
|
|
49
51
|
setWindowTitle(title)
|
|
50
52
|
|
|
@@ -58,7 +60,8 @@ module Cosmos
|
|
|
58
60
|
show_time,
|
|
59
61
|
show_log_reader,
|
|
60
62
|
input_filename_filter,
|
|
61
|
-
output_filename_filter
|
|
63
|
+
output_filename_filter,
|
|
64
|
+
multiple_file_select)
|
|
62
65
|
@packet_log_frame.change_callback = method(:change_callback)
|
|
63
66
|
@layout.addWidget(@packet_log_frame)
|
|
64
67
|
|
|
@@ -123,7 +123,7 @@ module Cosmos
|
|
|
123
123
|
@top_layout.addLayout(@overall) if show_overall
|
|
124
124
|
@top_layout.addLayout(@step) if show_step
|
|
125
125
|
@top_layout.addWidget(@progress_text) if show_text
|
|
126
|
-
@top_layout.addLayout(@button_layout) if show_done
|
|
126
|
+
@top_layout.addLayout(@button_layout) if show_done || show_cancel
|
|
127
127
|
|
|
128
128
|
setLayout(@top_layout)
|
|
129
129
|
|