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
|
@@ -12,12 +12,7 @@ require 'cosmos'
|
|
|
12
12
|
require 'cosmos/gui/choosers/value_chooser'
|
|
13
13
|
|
|
14
14
|
module Cosmos
|
|
15
|
-
|
|
16
15
|
class FloatChooserDoubleValidator < Qt::DoubleValidator
|
|
17
|
-
def initialize(*args)
|
|
18
|
-
super(*args)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
16
|
def fixup(input)
|
|
22
17
|
begin
|
|
23
18
|
value = input.to_f
|
|
@@ -34,10 +29,17 @@ module Cosmos
|
|
|
34
29
|
end
|
|
35
30
|
end
|
|
36
31
|
|
|
32
|
+
# Widget which creates a horizontally laid out label and editable float value.
|
|
33
|
+
# Minimum and maximum values can be specified to perform input validation.
|
|
34
|
+
# A callback can be specified which is called once the value is changed.
|
|
37
35
|
class FloatChooser < ValueChooser
|
|
38
|
-
#
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
# @param parent (see ValueChooser#initialize)
|
|
37
|
+
# @param label_text (see ValueChooser#initialize)
|
|
38
|
+
# @param initial_value (see ValueChooser#initialize)
|
|
39
|
+
# @param minimum_value [Float] Minimum allowable value
|
|
40
|
+
# @param maximum_value [Float] Maximum allowable value
|
|
41
|
+
# @param field_width (see ValueChooser#initialize)
|
|
42
|
+
# @param fill (see ValueChooser#initialize)
|
|
41
43
|
def initialize(parent, label_text, initial_value,
|
|
42
44
|
minimum_value = nil, maximum_value = nil,
|
|
43
45
|
field_width = 20, fill = false)
|
|
@@ -52,14 +54,14 @@ module Cosmos
|
|
|
52
54
|
@value.setValidator(validator)
|
|
53
55
|
end
|
|
54
56
|
|
|
55
|
-
#
|
|
57
|
+
# @return [Float] Value as a float. If minimum and/or maximum values were
|
|
58
|
+
# specified and the the value falls outside, it will be set to the
|
|
59
|
+
# minimum or maximum as appropriate.
|
|
56
60
|
def value
|
|
57
61
|
float_value = @value.text.to_f
|
|
58
62
|
float_value = @minimum_value if @minimum_value && float_value < @minimum_value
|
|
59
63
|
float_value = @maximum_value if @maximum_value && float_value > @maximum_value
|
|
60
64
|
float_value
|
|
61
65
|
end
|
|
62
|
-
|
|
63
66
|
end
|
|
64
67
|
end
|
|
65
|
-
|
|
@@ -12,12 +12,7 @@ require 'cosmos'
|
|
|
12
12
|
require 'cosmos/gui/choosers/value_chooser'
|
|
13
13
|
|
|
14
14
|
module Cosmos
|
|
15
|
-
|
|
16
15
|
class IntegerChooserIntValidator < Qt::IntValidator
|
|
17
|
-
def initialize(*args)
|
|
18
|
-
super(*args)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
16
|
def fixup(input)
|
|
22
17
|
begin
|
|
23
18
|
value = input.to_i
|
|
@@ -37,10 +32,17 @@ module Cosmos
|
|
|
37
32
|
end
|
|
38
33
|
end
|
|
39
34
|
|
|
35
|
+
# Widget which creates a horizontally laid out label and editable integer value.
|
|
36
|
+
# Minimum and maximum values can be specified to perform input validation.
|
|
37
|
+
# A callback can be specified which is called once the value is changed.
|
|
40
38
|
class IntegerChooser < ValueChooser
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
# @param parent (see ValueChooser#initialize)
|
|
40
|
+
# @param label_text (see ValueChooser#initialize)
|
|
41
|
+
# @param initial_value (see ValueChooser#initialize)
|
|
42
|
+
# @param minimum_value [Integer] Minimum allowable value
|
|
43
|
+
# @param maximum_value [Integer] Maximum allowable value
|
|
44
|
+
# @param field_width (see ValueChooser#initialize)
|
|
45
|
+
# @param fill (see ValueChooser#initialize)
|
|
44
46
|
def initialize(parent, label_text, initial_value,
|
|
45
47
|
minimum_value = nil, maximum_value = nil,
|
|
46
48
|
field_width = 20, fill = false)
|
|
@@ -54,14 +56,14 @@ module Cosmos
|
|
|
54
56
|
@value.setValidator(validator)
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
#
|
|
59
|
+
# @return [Integer] Value as an integer. If minimum and/or maximum values were
|
|
60
|
+
# specified and the the value falls outside, it will be set to the
|
|
61
|
+
# minimum or maximum as appropriate.
|
|
58
62
|
def value
|
|
59
63
|
integer_value = @value.text.to_i
|
|
60
64
|
integer_value = @minimum_value if @minimum_value && integer_value < @minimum_value
|
|
61
65
|
integer_value = @maximum_value if @maximum_value && integer_value > @maximum_value
|
|
62
66
|
integer_value
|
|
63
67
|
end
|
|
64
|
-
|
|
65
68
|
end
|
|
66
69
|
end
|
|
67
|
-
|
|
@@ -9,45 +9,27 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
require 'cosmos'
|
|
12
|
+
require 'cosmos/gui/choosers/value_chooser'
|
|
12
13
|
|
|
13
14
|
module Cosmos
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
# Widget which creates a horizontally laid out label and editable string value.
|
|
16
|
+
# A callback can be specified which is called once the value is changed.
|
|
17
|
+
class StringChooser < ValueChooser
|
|
18
|
+
# @param parent (see ValueChooser#initialize)
|
|
19
|
+
# @param label_text (see ValueChooser#initialize)
|
|
20
|
+
# @param initial_value (see ValueChooser#initialize)
|
|
21
|
+
# @param field_width (see ValueChooser#initialize)
|
|
22
|
+
# @param fill (see ValueChooser#initialize)
|
|
23
|
+
# @param read_only [Boolean] Whether the string is editable
|
|
24
|
+
# @param alignment [Integer] The alignment of the string value field
|
|
17
25
|
def initialize(
|
|
18
26
|
parent, label_text, initial_value,
|
|
19
|
-
field_width = 20, fill = false, read_only = false,
|
|
27
|
+
field_width = 20, fill = false, read_only = false,
|
|
28
|
+
alignment = Qt::AlignLeft | Qt::AlignVCenter
|
|
20
29
|
)
|
|
21
|
-
super(parent)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@string_label = Qt::Label.new(label_text)
|
|
25
|
-
@string_label.setSizePolicy(Qt::SizePolicy::Fixed, Qt::SizePolicy::Fixed) if fill
|
|
26
|
-
if fill
|
|
27
|
-
layout.addWidget(@string_label)
|
|
28
|
-
else
|
|
29
|
-
layout.addWidget(@string_label, 1)
|
|
30
|
-
end
|
|
31
|
-
layout.addStretch unless fill
|
|
32
|
-
@string_value = Qt::LineEdit.new(initial_value.to_s)
|
|
33
|
-
@string_value.setMinimumWidth(field_width)
|
|
34
|
-
@string_value.setReadOnly(true) if read_only
|
|
35
|
-
@string_value.setAlignment(alignment)
|
|
36
|
-
layout.addWidget(@string_value)
|
|
37
|
-
setLayout(layout)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Returns the text field as a string
|
|
41
|
-
def string
|
|
42
|
-
@string_value.text
|
|
30
|
+
super(parent, label_text, initial_value, field_width, fill)
|
|
31
|
+
@value.setReadOnly(true) if read_only
|
|
32
|
+
@value.setAlignment(alignment)
|
|
43
33
|
end
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
# Sets the value
|
|
47
|
-
def value=(new_value)
|
|
48
|
-
@string_value.setText(new_value.to_s)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end # class StringChooser
|
|
52
|
-
|
|
53
|
-
end # module Cosmos
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -13,13 +13,11 @@ require 'cosmos/gui/qt'
|
|
|
13
13
|
require 'cosmos/system/system'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
17
16
|
# Provides dropdowns to select from all the defined Targets, Packets, and
|
|
18
17
|
# Items. Callbacks can be added when any of the dropdown values are changed
|
|
19
18
|
# as well as when the select button is pressed. Provides an option to orient
|
|
20
19
|
# the dropdowns horizontally or vertically.
|
|
21
20
|
class TelemetryChooser < Qt::Widget
|
|
22
|
-
|
|
23
21
|
# Width of the button in the Combobox
|
|
24
22
|
COMBOBOX_BUTTON_WIDTH = 30
|
|
25
23
|
|
|
@@ -44,6 +42,14 @@ module Cosmos
|
|
|
44
42
|
# Label for the item
|
|
45
43
|
attr_accessor :item_label
|
|
46
44
|
|
|
45
|
+
# Custom error which we raise and catch
|
|
46
|
+
class NotFoundError < StandardError
|
|
47
|
+
# @param msg [String] The error message
|
|
48
|
+
def initialize(msg)
|
|
49
|
+
super(msg)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
47
53
|
# @param parent [Qt::Widget] Parent of this widget
|
|
48
54
|
# @param orientation [Integer] Must be Qt::Horizontal or Qt::Vertical
|
|
49
55
|
# @param choose_item [Boolean] Whether to allow choosing items. Choosing
|
|
@@ -52,6 +58,8 @@ module Cosmos
|
|
|
52
58
|
# You can disable the button if you just want to implement the dropdown
|
|
53
59
|
# change callbacks.
|
|
54
60
|
# @param support_latest [Boolean] Whether to add LATEST to the list of packets
|
|
61
|
+
# @param fill [Boolean] Whether to allow this widget to take all available
|
|
62
|
+
# space or have a fixed width/height
|
|
55
63
|
def initialize(
|
|
56
64
|
parent,
|
|
57
65
|
orientation = Qt::Horizontal,
|
|
@@ -60,7 +68,6 @@ module Cosmos
|
|
|
60
68
|
support_latest = false,
|
|
61
69
|
fill = false
|
|
62
70
|
)
|
|
63
|
-
|
|
64
71
|
super(parent)
|
|
65
72
|
if orientation == Qt::Horizontal
|
|
66
73
|
# Horizontal Frame for overall widget
|
|
@@ -69,7 +76,7 @@ module Cosmos
|
|
|
69
76
|
# Vertical Frame for overall widget
|
|
70
77
|
@overall_frame = Qt::VBoxLayout.new(self)
|
|
71
78
|
end
|
|
72
|
-
@overall_frame.setContentsMargins(0,0,0,0)
|
|
79
|
+
@overall_frame.setContentsMargins(0, 0, 0, 0)
|
|
73
80
|
|
|
74
81
|
# Target Selection
|
|
75
82
|
@target_layout = Qt::HBoxLayout.new
|
|
@@ -120,8 +127,6 @@ module Cosmos
|
|
|
120
127
|
end
|
|
121
128
|
|
|
122
129
|
if select_button
|
|
123
|
-
# Select Button
|
|
124
|
-
#@overall_frame.addStretch()
|
|
125
130
|
@select_button = Qt::PushButton.new('Select')
|
|
126
131
|
@select_button.connect(SIGNAL('clicked()')) do
|
|
127
132
|
@select_button_callback.call(target_name(), packet_name(), item_name()) if @select_button_callback
|
|
@@ -137,118 +142,117 @@ module Cosmos
|
|
|
137
142
|
@support_latest = support_latest
|
|
138
143
|
end
|
|
139
144
|
|
|
140
|
-
# Update items
|
|
145
|
+
# Update all items in all comboboxes. If a previous item was selected that
|
|
146
|
+
# item will be reselected if it still exists.
|
|
141
147
|
def update
|
|
142
148
|
current_target_name = target_name()
|
|
143
149
|
current_packet_name = packet_name()
|
|
144
150
|
current_item_name = item_name()
|
|
145
151
|
update_targets()
|
|
146
|
-
if current_target_name
|
|
152
|
+
if current_target_name && current_packet_name && (current_item_name || !@item_combobox)
|
|
147
153
|
begin
|
|
148
154
|
set_item(current_target_name, current_packet_name, current_item_name)
|
|
149
|
-
rescue
|
|
155
|
+
rescue NotFoundError
|
|
150
156
|
# Oh well - Tried to keep the same item
|
|
151
157
|
end
|
|
152
158
|
end
|
|
153
159
|
end
|
|
154
160
|
|
|
155
|
-
#
|
|
156
|
-
def button_text=(
|
|
157
|
-
@select_button.setText(
|
|
161
|
+
# @param text [String] Select button text
|
|
162
|
+
def button_text=(text)
|
|
163
|
+
@select_button.setText(text)
|
|
158
164
|
end
|
|
159
165
|
|
|
160
|
-
#
|
|
166
|
+
# @return [String] Selected target name
|
|
161
167
|
def target_name
|
|
162
168
|
@target_combobox.text
|
|
163
169
|
end
|
|
164
170
|
|
|
165
|
-
#
|
|
171
|
+
# @return [String] Selected packet name
|
|
166
172
|
def packet_name
|
|
167
173
|
@packet_combobox.text
|
|
168
174
|
end
|
|
169
175
|
|
|
170
|
-
#
|
|
176
|
+
# @return [String] Selected item name
|
|
171
177
|
def item_name
|
|
172
|
-
|
|
173
|
-
@item_combobox.text
|
|
174
|
-
else
|
|
175
|
-
nil
|
|
176
|
-
end
|
|
178
|
+
@item_combobox ? @item_combobox.text : nil
|
|
177
179
|
end
|
|
178
180
|
|
|
179
|
-
#
|
|
181
|
+
# @return [Array<String>] List of all target names in the target combobox
|
|
180
182
|
def target_names
|
|
181
183
|
target_names_array = []
|
|
182
|
-
@target_combobox.each {|item_text,
|
|
184
|
+
@target_combobox.each {|item_text, _item_data| target_names_array << item_text}
|
|
183
185
|
target_names_array
|
|
184
186
|
end
|
|
185
187
|
|
|
186
|
-
#
|
|
188
|
+
# @return [Array<String>] List of all packet names in the packet combobox
|
|
187
189
|
def packet_names
|
|
188
190
|
packet_names_array = []
|
|
189
|
-
@packet_combobox.each {|item_text,
|
|
191
|
+
@packet_combobox.each {|item_text, _item_data| packet_names_array << item_text}
|
|
190
192
|
packet_names_array
|
|
191
193
|
end
|
|
192
194
|
|
|
193
|
-
#
|
|
195
|
+
# @return [Array<String>] List of all item names in the item combobox
|
|
194
196
|
def item_names
|
|
195
197
|
item_names_array = []
|
|
196
198
|
if @item_combobox
|
|
197
|
-
@item_combobox.each {|item_text,
|
|
199
|
+
@item_combobox.each {|item_text, _item_data| item_names_array << item_text}
|
|
198
200
|
end
|
|
199
201
|
item_names_array
|
|
200
202
|
end
|
|
201
203
|
|
|
202
|
-
# Sets the
|
|
204
|
+
# Sets the packet combobox
|
|
205
|
+
# @param target_name [String] Name of the target
|
|
206
|
+
# @param packet_name [String] Name of the packet
|
|
203
207
|
def set_packet(target_name, packet_name)
|
|
204
208
|
# Select desired target
|
|
205
209
|
index = 0
|
|
206
210
|
found = false
|
|
207
|
-
@target_combobox.each do |item_text,
|
|
208
|
-
if target_name.
|
|
211
|
+
@target_combobox.each do |item_text, _item_data|
|
|
212
|
+
if target_name.casecmp(item_text).zero?
|
|
209
213
|
found = true
|
|
210
214
|
break
|
|
211
215
|
end
|
|
212
216
|
index += 1
|
|
213
217
|
end
|
|
214
|
-
|
|
218
|
+
raise NotFoundError, "TelemetryChooser unknown target_name #{target_name}" unless found
|
|
215
219
|
@target_combobox.setCurrentIndex(index)
|
|
216
220
|
update_packets()
|
|
217
221
|
|
|
218
222
|
# Select desired packet
|
|
219
223
|
index = 0
|
|
220
224
|
found = false
|
|
221
|
-
@packet_combobox.each do |item_text,
|
|
222
|
-
if packet_name.
|
|
225
|
+
@packet_combobox.each do |item_text, _item_data|
|
|
226
|
+
if packet_name.casecmp(item_text).zero?
|
|
223
227
|
found = true
|
|
224
228
|
break
|
|
225
229
|
end
|
|
226
230
|
index += 1
|
|
227
231
|
end
|
|
228
|
-
|
|
232
|
+
raise NotFoundError, "TelemetryChooser unknown packet_name #{packet_name}" unless found
|
|
229
233
|
@packet_combobox.setCurrentIndex(index)
|
|
230
234
|
update_items()
|
|
231
235
|
end
|
|
232
236
|
|
|
233
|
-
# Sets the
|
|
237
|
+
# Sets the item combobox
|
|
238
|
+
# @param target_name [String] Name of the target
|
|
239
|
+
# @param packet_name [String] Name of the packet
|
|
240
|
+
# @param item_name [String] Name of the item
|
|
234
241
|
def set_item(target_name, packet_name, item_name)
|
|
235
|
-
# Set the desired packet
|
|
236
242
|
set_packet(target_name, packet_name)
|
|
243
|
+
return unless @item_combobox
|
|
237
244
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
found = true
|
|
245
|
-
break
|
|
246
|
-
end
|
|
247
|
-
index += 1
|
|
245
|
+
index = 0
|
|
246
|
+
found = false
|
|
247
|
+
@item_combobox.each do |item_text, _item_data|
|
|
248
|
+
if item_name.casecmp(item_text).zero?
|
|
249
|
+
found = true
|
|
250
|
+
break
|
|
248
251
|
end
|
|
249
|
-
|
|
250
|
-
@item_combobox.setCurrentIndex(index)
|
|
252
|
+
index += 1
|
|
251
253
|
end
|
|
254
|
+
raise NotFoundError, "TelemetryChooser unknown item_name #{item_name}" unless found
|
|
255
|
+
@item_combobox.setCurrentIndex(index)
|
|
252
256
|
end
|
|
253
257
|
|
|
254
258
|
protected
|
|
@@ -305,22 +309,18 @@ module Cosmos
|
|
|
305
309
|
|
|
306
310
|
# Updates the item names based on a change
|
|
307
311
|
def update_items
|
|
308
|
-
return unless target_name()
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
@item_combobox.setMaxVisibleItems(item_names.length)
|
|
320
|
-
end
|
|
312
|
+
return unless target_name() && packet_name() && @item_combobox
|
|
313
|
+
@item_combobox.clearItems()
|
|
314
|
+
item_names = System.telemetry.item_names(target_name(), packet_name())
|
|
315
|
+
item_names.sort!
|
|
316
|
+
item_names.each do |name|
|
|
317
|
+
@item_combobox.addItem(name)
|
|
318
|
+
end
|
|
319
|
+
if item_names.length > 20
|
|
320
|
+
@item_combobox.setMaxVisibleItems(20)
|
|
321
|
+
else
|
|
322
|
+
@item_combobox.setMaxVisibleItems(item_names.length)
|
|
321
323
|
end
|
|
322
324
|
end
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
end # module Cosmos
|
|
325
|
+
end
|
|
326
|
+
end
|
|
@@ -11,18 +11,24 @@
|
|
|
11
11
|
require 'cosmos'
|
|
12
12
|
|
|
13
13
|
module Cosmos
|
|
14
|
-
|
|
14
|
+
# Widget which creates a horizontally laid out label and editable value.
|
|
15
|
+
# A callback can be specified which is called once the value is changed.
|
|
15
16
|
class ValueChooser < Qt::Widget
|
|
16
|
-
|
|
17
17
|
# Callback for a new value entered into the text field
|
|
18
18
|
attr_accessor :sel_command_callback
|
|
19
19
|
|
|
20
|
+
# @param parent [Qt::Widget] Widget to parent this widget to
|
|
21
|
+
# @param label_text [String] Text to place in the label
|
|
22
|
+
# @param initial_value [String] Initial value to put in the value box
|
|
23
|
+
# @param field_width [Integer] Minimum width of the value field
|
|
24
|
+
# @param fill [Boolean] Whether to make this widget fill up the horizontal
|
|
25
|
+
# space allocated to it or be fixed width.
|
|
20
26
|
def initialize(parent, label_text, initial_value, field_width = 20, fill = false)
|
|
21
27
|
super(parent)
|
|
22
28
|
@field_width = field_width
|
|
23
29
|
|
|
24
30
|
layout = Qt::HBoxLayout.new(self)
|
|
25
|
-
layout.setContentsMargins(0,0,0,0)
|
|
31
|
+
layout.setContentsMargins(0, 0, 0, 0)
|
|
26
32
|
|
|
27
33
|
@label = Qt::Label.new(label_text)
|
|
28
34
|
@label.setSizePolicy(Qt::SizePolicy::Fixed, Qt::SizePolicy::Fixed) if fill
|
|
@@ -47,21 +53,15 @@ module Cosmos
|
|
|
47
53
|
@sel_command_callback = nil
|
|
48
54
|
end
|
|
49
55
|
|
|
50
|
-
#
|
|
51
|
-
def string
|
|
52
|
-
@value.text
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Returns the value as a string
|
|
56
|
+
# @return [String] The value as a string
|
|
56
57
|
def value
|
|
57
|
-
|
|
58
|
+
@value.text
|
|
58
59
|
end
|
|
60
|
+
alias string value
|
|
59
61
|
|
|
60
|
-
#
|
|
61
|
-
def value=(
|
|
62
|
-
@value.setText(
|
|
62
|
+
# @param value [#to_s] String to set the value to
|
|
63
|
+
def value=(value)
|
|
64
|
+
@value.setText(value.to_s)
|
|
63
65
|
end
|
|
64
|
-
|
|
65
66
|
end
|
|
66
67
|
end
|
|
67
|
-
|