cosmos 3.2.1 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +195 -0
- data/README.md +3 -3
- data/data/crc.txt +52 -52
- data/lib/cosmos.rb +1 -1
- data/lib/cosmos/core_ext/time.rb +11 -9
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +0 -2
- data/lib/cosmos/gui/dialogs/about_dialog.rb +2 -2
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +2 -2
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +11 -5
- data/lib/cosmos/gui/dialogs/splash.rb +32 -10
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +2 -2
- data/lib/cosmos/gui/qt.rb +22 -22
- data/lib/cosmos/io/json_drb.rb +4 -4
- data/lib/cosmos/io/json_rpc.rb +21 -21
- data/lib/cosmos/packet_logs/packet_log_writer.rb +18 -20
- data/lib/cosmos/packets/commands.rb +8 -6
- data/lib/cosmos/packets/limits.rb +3 -2
- data/lib/cosmos/packets/packet.rb +14 -11
- data/lib/cosmos/packets/parsers/limits_parser.rb +1 -1
- data/lib/cosmos/packets/parsers/macro_parser.rb +4 -4
- data/lib/cosmos/packets/parsers/state_parser.rb +1 -1
- data/lib/cosmos/packets/structure.rb +2 -2
- data/lib/cosmos/packets/telemetry.rb +5 -4
- data/lib/cosmos/script/script.rb +6 -6
- data/lib/cosmos/streams/tcpip_socket_stream.rb +2 -1
- data/lib/cosmos/streams/template_stream_protocol.rb +1 -1
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +5 -8
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +4 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +9 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +15 -11
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +1 -1
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +2 -2
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +2 -2
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +0 -2
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +1 -1
- data/lib/cosmos/tools/replay/replay.rb +2 -2
- data/lib/cosmos/tools/script_runner/script_audit.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +3 -7
- data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
- data/lib/cosmos/tools/test_runner/results_writer.rb +1 -1
- data/lib/cosmos/tools/test_runner/test_runner.rb +2 -2
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +2 -1
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +1 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +1 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +1 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +3 -3
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +1 -3
- data/lib/cosmos/top_level.rb +2 -6
- data/lib/cosmos/utilities/ruby_lex_utils.rb +1 -1
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32_main.rb +11 -7
- data/spec/ccsds/ccsds_packet_spec.rb +28 -28
- data/spec/ccsds/ccsds_parser_spec.rb +27 -27
- data/spec/config/config_parser_spec.rb +88 -88
- data/spec/conversions/conversion_spec.rb +3 -3
- data/spec/conversions/generic_conversion_spec.rb +9 -9
- data/spec/conversions/new_packet_log_conversion_spec.rb +4 -4
- data/spec/conversions/polynomial_conversion_spec.rb +7 -7
- data/spec/conversions/processor_conversion_spec.rb +9 -9
- data/spec/conversions/received_count_conversion_spec.rb +7 -7
- data/spec/conversions/received_time_formatted_conversion_spec.rb +9 -9
- data/spec/conversions/received_time_seconds_conversion_spec.rb +9 -9
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +11 -11
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +13 -13
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +13 -13
- data/spec/core_ext/array_spec.rb +76 -76
- data/spec/core_ext/class_spec.rb +3 -3
- data/spec/core_ext/cosmos_io_spec.rb +16 -16
- data/spec/core_ext/exception_spec.rb +19 -19
- data/spec/core_ext/file_spec.rb +16 -16
- data/spec/core_ext/hash_spec.rb +3 -3
- data/spec/core_ext/io_spec.rb +2 -2
- data/spec/core_ext/kernel_spec.rb +2 -2
- data/spec/core_ext/math_spec.rb +43 -43
- data/spec/core_ext/matrix_spec.rb +22 -22
- data/spec/core_ext/objectspace_spec.rb +6 -6
- data/spec/core_ext/range_spec.rb +2 -2
- data/spec/core_ext/socket_spec.rb +4 -4
- data/spec/core_ext/string_spec.rb +67 -67
- data/spec/core_ext/stringio_spec.rb +2 -2
- data/spec/core_ext/time_spec.rb +82 -82
- data/spec/gui/line_graph/line_clip_spec.rb +34 -34
- data/spec/interfaces/interface_spec.rb +46 -46
- data/spec/interfaces/linc_interface_spec.rb +26 -26
- data/spec/interfaces/serial_interface_spec.rb +16 -16
- data/spec/interfaces/simulated_target_interface_spec.rb +21 -21
- data/spec/interfaces/stream_interface_spec.rb +22 -22
- data/spec/interfaces/tcpip_client_interface_spec.rb +14 -14
- data/spec/interfaces/tcpip_server_interface_spec.rb +41 -41
- data/spec/interfaces/udp_interface_spec.rb +46 -46
- data/spec/io/buffered_file_spec.rb +50 -50
- data/spec/io/io_multiplexer_spec.rb +9 -9
- data/spec/io/json_drb_object_spec.rb +7 -7
- data/spec/io/json_drb_spec.rb +55 -55
- data/spec/io/json_rpc_spec.rb +68 -68
- data/spec/io/raw_logger_pair_spec.rb +28 -28
- data/spec/io/raw_logger_spec.rb +22 -22
- data/spec/io/serial_driver_spec.rb +3 -3
- data/spec/io/stderr_spec.rb +2 -2
- data/spec/io/stdout_spec.rb +2 -2
- data/spec/io/tcpip_server_spec.rb +62 -62
- data/spec/io/udp_sockets_spec.rb +19 -19
- data/spec/io/win32_serial_driver_spec.rb +10 -10
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +32 -32
- data/spec/packet_logs/packet_log_reader_spec.rb +138 -138
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +3 -3
- data/spec/packet_logs/packet_log_writer_spec.rb +26 -26
- data/spec/packets/binary_accessor_spec.rb +672 -672
- data/spec/packets/commands_spec.rb +123 -123
- data/spec/packets/limits_response_spec.rb +1 -1
- data/spec/packets/limits_spec.rb +69 -69
- data/spec/packets/packet_config_spec.rb +93 -93
- data/spec/packets/packet_item_limits_spec.rb +46 -46
- data/spec/packets/packet_item_spec.rb +108 -108
- data/spec/packets/packet_spec.rb +364 -348
- data/spec/packets/parsers/format_string_parser_spec.rb +13 -13
- data/spec/packets/parsers/limits_parser_spec.rb +8 -8
- data/spec/packets/parsers/limits_response_parser_spec.rb +9 -9
- data/spec/packets/parsers/macro_parser_spec.rb +34 -6
- data/spec/packets/parsers/packet_parser_spec.rb +6 -6
- data/spec/packets/parsers/processor_parser_spec.rb +7 -7
- data/spec/packets/parsers/state_parser_spec.rb +23 -23
- data/spec/packets/structure_item_spec.rb +62 -62
- data/spec/packets/structure_spec.rb +183 -183
- data/spec/packets/telemetry_spec.rb +174 -174
- data/spec/processors/new_packet_log_processor_spec.rb +4 -4
- data/spec/processors/processor_spec.rb +9 -9
- data/spec/processors/statistics_processor_spec.rb +21 -21
- data/spec/processors/watermark_processor_spec.rb +12 -12
- data/spec/script/script_spec.rb +158 -158
- data/spec/spec_helper.rb +44 -13
- data/spec/streams/burst_stream_protocol_spec.rb +8 -8
- data/spec/streams/fixed_stream_protocol_spec.rb +26 -26
- data/spec/streams/length_stream_protocol_spec.rb +27 -27
- data/spec/streams/preidentified_stream_protocol_spec.rb +25 -25
- data/spec/streams/serial_stream_spec.rb +19 -19
- data/spec/streams/stream_protocol_spec.rb +52 -52
- data/spec/streams/stream_spec.rb +1 -1
- data/spec/streams/tcpip_client_stream_spec.rb +7 -7
- data/spec/streams/tcpip_socket_stream_spec.rb +84 -49
- data/spec/streams/template_stream_protocol_spec.rb +17 -17
- data/spec/streams/terminated_stream_protocol_spec.rb +19 -19
- data/spec/system/system_spec.rb +95 -95
- data/spec/system/target_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/api_spec.rb +386 -386
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +3 -3
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +8 -8
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +57 -57
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +85 -85
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +11 -11
- data/spec/tools/cmd_tlm_server/connections_spec.rb +23 -23
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +57 -57
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +17 -17
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +15 -15
- data/spec/tools/cmd_tlm_server/routers_spec.rb +36 -36
- data/spec/top_level/top_level_spec.rb +60 -60
- data/spec/utilities/crc_spec.rb +6 -6
- data/spec/utilities/csv_spec.rb +13 -13
- data/spec/utilities/logger_spec.rb +20 -20
- data/spec/utilities/message_log_spec.rb +13 -13
- data/spec/utilities/quaternion_spec.rb +30 -30
- data/spec/utilities/ruby_lex_utils_spec.rb +14 -14
- data/test/benchmarks/binary_accessor_benchmark.rb +14 -0
- data/test/benchmarks/gsub_benchmark.rb +114 -0
- data/test/performance/PACKETS.bat +1 -0
- data/test/performance/Rakefile +77 -0
- data/test/performance/THREADS.bat +1 -0
- data/test/performance/config/data/attitude.bin +0 -0
- data/test/performance/config/data/crc.txt +206 -0
- data/test/performance/config/data/diamond.STL +58 -0
- data/test/performance/config/data/groundoff.gif +0 -0
- data/test/performance/config/data/groundon.gif +0 -0
- data/test/performance/config/data/hselectoff.gif +0 -0
- data/test/performance/config/data/hselecton.gif +0 -0
- data/test/performance/config/data/hswitchoff.gif +0 -0
- data/test/performance/config/data/hswitchon.gif +0 -0
- data/test/performance/config/data/meta_init.txt +4 -0
- data/test/performance/config/data/position.bin +0 -0
- data/test/performance/config/data/poweroff.gif +0 -0
- data/test/performance/config/data/poweron.gif +0 -0
- data/test/performance/config/data/satellite.gif +0 -0
- data/test/performance/config/data/tada.wav +0 -0
- data/test/performance/config/data/vswitchoff.gif +0 -0
- data/test/performance/config/data/vswitchon.gif +0 -0
- data/test/performance/config/system/system_packets.txt +39 -0
- data/test/performance/config/system/system_threads.txt +59 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -0
- data/test/performance/config/targets/COSMOS/screens/version.txt +19 -0
- data/test/performance/config/targets/COSMOS/target.txt +11 -0
- data/test/performance/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +17 -0
- data/test/performance/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +18 -0
- data/test/performance/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/EXAMPLE/lib/example_interface.rb +22 -0
- data/test/performance/config/targets/EXAMPLE/target.txt +7 -0
- data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -0
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +34 -0
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -0
- data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -0
- data/test/performance/config/tools/handbook_creator/default_toc.xsl +59 -0
- data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -0
- data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
- data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
- data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -0
- data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -0
- data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
- data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -0
- data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
- data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
- data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
- data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -0
- data/test/performance/config/tools/launcher/launcher_packets.txt +29 -0
- data/test/performance/config/tools/launcher/launcher_threads.txt +70 -0
- data/test/performance/config/tools/limits_monitor/README.txt +1 -0
- data/test/performance/config/tools/opengl_builder/README.txt +1 -0
- data/test/performance/config/tools/script_runner/script_runner.txt +3 -0
- data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -0
- data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
- data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
- data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
- data/test/performance/config/tools/test_runner/test_runner.txt +17 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
- data/test/performance/config/tools/tlm_grapher/README.txt +1 -0
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
- data/test/performance/lib/example_background_task.rb +57 -0
- data/test/performance/lib/example_target.rb +120 -0
- data/test/performance/lib/scpi_target.rb +74 -0
- data/test/performance/lib/user_version.rb +3 -0
- data/test/performance/outputs/handbooks/README.txt +1 -0
- data/test/performance/outputs/logs/README.txt +1 -0
- data/test/performance/outputs/saved_config/README.txt +1 -0
- data/test/performance/outputs/tables/README.txt +1 -0
- data/test/performance/outputs/tmp/README.txt +1 -0
- data/test/performance/procedures/checks.rb +11 -0
- data/test/performance/procedures/clear_util.rb +7 -0
- data/test/performance/procedures/collect.rb +18 -0
- data/test/performance/procedures/collect_util.rb +14 -0
- data/test/performance/procedures/cosmos_api_test.rb +293 -0
- data/test/performance/procedures/disconnect.rb +29 -0
- data/test/performance/procedures/example_test.rb +182 -0
- data/test/performance/procedures/plot_test.rb +8 -0
- data/test/performance/procedures/procedure.rb +3 -0
- data/test/performance/procedures/run_example_test.rb +3 -0
- data/test/performance/procedures/test.rb +51 -0
- data/test/performance/tools/CmdExtractor +14 -0
- data/test/performance/tools/CmdExtractor.bat +59 -0
- data/test/performance/tools/CmdSender +14 -0
- data/test/performance/tools/CmdSender.bat +59 -0
- data/test/performance/tools/CmdTlmServer +16 -0
- data/test/performance/tools/CmdTlmServer.bat +59 -0
- data/test/performance/tools/CmdTlmServerMemProf +20 -0
- data/test/performance/tools/CmdTlmServerMemProf.bat +59 -0
- data/test/performance/tools/DataViewer +14 -0
- data/test/performance/tools/DataViewer.bat +59 -0
- data/test/performance/tools/ExampleTarget +14 -0
- data/test/performance/tools/ExampleTarget.bat +59 -0
- data/test/performance/tools/HandbookCreator +14 -0
- data/test/performance/tools/HandbookCreator.bat +61 -0
- data/test/performance/tools/Launcher +14 -0
- data/test/performance/tools/Launcher.bat +59 -0
- data/test/performance/tools/LimitsMonitor +14 -0
- data/test/performance/tools/LimitsMonitor.bat +59 -0
- data/test/performance/tools/OpenGLBuilder +14 -0
- data/test/performance/tools/OpenGLBuilder.bat +59 -0
- data/test/performance/tools/PacketViewer +14 -0
- data/test/performance/tools/PacketViewer.bat +59 -0
- data/test/performance/tools/Replay +14 -0
- data/test/performance/tools/Replay.bat +59 -0
- data/test/performance/tools/ScpiTarget +14 -0
- data/test/performance/tools/ScpiTarget.bat +59 -0
- data/test/performance/tools/ScriptRunner +14 -0
- data/test/performance/tools/ScriptRunner.bat +59 -0
- data/test/performance/tools/TableManager +14 -0
- data/test/performance/tools/TableManager.bat +59 -0
- data/test/performance/tools/TestRunner +14 -0
- data/test/performance/tools/TestRunner.bat +59 -0
- data/test/performance/tools/TlmExtractor +14 -0
- data/test/performance/tools/TlmExtractor.bat +59 -0
- data/test/performance/tools/TlmGrapher +14 -0
- data/test/performance/tools/TlmGrapher.bat +59 -0
- data/test/performance/tools/TlmViewer +14 -0
- data/test/performance/tools/TlmViewer.bat +59 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/userpath.txt +1 -0
- metadata +197 -2
@@ -88,6 +88,7 @@ module Cosmos
|
|
88
88
|
@file_size = 0
|
89
89
|
@filename = nil
|
90
90
|
@label = nil
|
91
|
+
@entry_header = String.new
|
91
92
|
@start_time = Time.now
|
92
93
|
|
93
94
|
@cancel_threads = false
|
@@ -246,10 +247,10 @@ module Cosmos
|
|
246
247
|
start_new_file()
|
247
248
|
end
|
248
249
|
if @file
|
249
|
-
entry_header = build_entry_header(packet)
|
250
|
-
if entry_header
|
251
|
-
@file.write(entry_header)
|
252
|
-
@file_size += entry_header.length
|
250
|
+
@entry_header = build_entry_header(packet) # populate @entry_header
|
251
|
+
if @entry_header
|
252
|
+
@file.write(@entry_header)
|
253
|
+
@file_size += @entry_header.length
|
253
254
|
end
|
254
255
|
buffer = packet.buffer
|
255
256
|
@file.write(buffer)
|
@@ -300,24 +301,21 @@ module Cosmos
|
|
300
301
|
def build_entry_header(packet)
|
301
302
|
received_time = packet.received_time
|
302
303
|
received_time = Time.now unless received_time
|
304
|
+
# This is an optimization to avoid creating a new entry_header object
|
305
|
+
# each time we create an entry_header which we do a LOT!
|
306
|
+
@entry_header.clear
|
307
|
+
@entry_header << [received_time.tv_sec].pack('N'.freeze)
|
308
|
+
@entry_header << [received_time.tv_usec].pack('N'.freeze)
|
303
309
|
target_name = packet.target_name
|
304
|
-
target_name = 'UNKNOWN' unless target_name
|
310
|
+
target_name = 'UNKNOWN'.freeze unless target_name
|
311
|
+
@entry_header << target_name.length
|
312
|
+
@entry_header << target_name
|
305
313
|
packet_name = packet.packet_name
|
306
|
-
packet_name = 'UNKNOWN' unless packet_name
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
header = ''
|
312
|
-
header << time_seconds
|
313
|
-
header << time_microseconds
|
314
|
-
header << target_name.length
|
315
|
-
header << target_name
|
316
|
-
header << packet_name.length
|
317
|
-
header << packet_name
|
318
|
-
header << data_length
|
319
|
-
|
320
|
-
return header
|
314
|
+
packet_name = 'UNKNOWN'.freeze unless packet_name
|
315
|
+
@entry_header << packet_name.length
|
316
|
+
@entry_header << packet_name
|
317
|
+
@entry_header << [packet.length].pack('N'.freeze)
|
318
|
+
return @entry_header
|
321
319
|
end
|
322
320
|
|
323
321
|
end # class PacketLogWriter
|
@@ -38,9 +38,11 @@ module Cosmos
|
|
38
38
|
return @config.warnings
|
39
39
|
end
|
40
40
|
|
41
|
-
# @return [Array<String>] The command target names
|
41
|
+
# @return [Array<String>] The command target names (excluding UNKNOWN)
|
42
42
|
def target_names
|
43
|
-
|
43
|
+
result = @config.commands.keys.sort
|
44
|
+
result.delete('UNKNOWN'.freeze)
|
45
|
+
return result
|
44
46
|
end
|
45
47
|
|
46
48
|
# @param target_name [String] The target name
|
@@ -194,17 +196,17 @@ module Cosmos
|
|
194
196
|
items.each do |item_name, item_value|
|
195
197
|
unless ignored_parameters.include?(item_name)
|
196
198
|
if first
|
197
|
-
string << ' with '
|
199
|
+
string << ' with '.freeze
|
198
200
|
first = false
|
199
201
|
else
|
200
|
-
string << ', '
|
202
|
+
string << ', '.freeze
|
201
203
|
end
|
202
204
|
|
203
205
|
item = packet.get_item(item_name)
|
204
206
|
if item.data_type ==:STRING or item.data_type == :BLOCK
|
205
207
|
item_value = item_value.inspect
|
206
208
|
if item_value.length > 256
|
207
|
-
item_value = item_value[0..255] + '..."'
|
209
|
+
item_value = item_value[0..255] + '..."'.freeze
|
208
210
|
end
|
209
211
|
string << "#{item_name} #{item_value}"
|
210
212
|
else
|
@@ -216,7 +218,7 @@ module Cosmos
|
|
216
218
|
end
|
217
219
|
end
|
218
220
|
end
|
219
|
-
string << "')"
|
221
|
+
string << "')".freeze
|
220
222
|
string
|
221
223
|
end
|
222
224
|
|
@@ -201,7 +201,8 @@ module Cosmos
|
|
201
201
|
# @return [Array<limits_set, persistence, enabled, red_low, yellow_low, red_high, yellow_high, green_low (optional), green_high (optional)] Limits information
|
202
202
|
def set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true)
|
203
203
|
packet = get_packet(target_name, packet_name)
|
204
|
-
|
204
|
+
item = packet.get_item(item_name)
|
205
|
+
limits = item.limits
|
205
206
|
if limits_set
|
206
207
|
limits_set = limits_set.to_s.upcase.intern
|
207
208
|
else
|
@@ -231,7 +232,7 @@ module Cosmos
|
|
231
232
|
end
|
232
233
|
limits.enabled = enabled
|
233
234
|
limits.persistence_setting = Integer(persistence) if persistence
|
234
|
-
packet.update_limits_items_cache
|
235
|
+
packet.update_limits_items_cache(item)
|
235
236
|
@config.limits_sets << limits_set
|
236
237
|
@config.limits_sets.uniq!
|
237
238
|
return [limits_set, limits.persistence_setting, limits.enabled, limits_for_set[0], limits_for_set[1], limits_for_set[2], limits_for_set[3], limits_for_set[4], limits_for_set[5]]
|
@@ -279,7 +279,7 @@ module Cosmos
|
|
279
279
|
def define(item)
|
280
280
|
item = super(item)
|
281
281
|
update_id_items(item)
|
282
|
-
update_limits_items_cache()
|
282
|
+
update_limits_items_cache(item)
|
283
283
|
item
|
284
284
|
end
|
285
285
|
|
@@ -532,16 +532,19 @@ module Cosmos
|
|
532
532
|
end
|
533
533
|
end
|
534
534
|
|
535
|
-
#
|
536
|
-
#
|
535
|
+
# Add an item to the limits items cache if necessary.
|
536
|
+
# You MUST call this after adding limits to an item
|
537
|
+
#This is an optimization so we don't have to iterate through all the items when
|
537
538
|
# checking for limits.
|
538
|
-
def update_limits_items_cache
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
539
|
+
def update_limits_items_cache(item)
|
540
|
+
if item.limits.values || item.state_colors
|
541
|
+
@limits_items ||= []
|
542
|
+
@limits_items_hash ||= {}
|
543
|
+
unless @limits_items_hash[item]
|
544
|
+
@limits_items << item
|
545
|
+
@limits_items_hash[item] = true
|
546
|
+
end
|
543
547
|
end
|
544
|
-
@limits_items.compact!
|
545
548
|
end
|
546
549
|
|
547
550
|
# Return an array of arrays indicating all items in the packet that are out of limits
|
@@ -629,8 +632,8 @@ module Cosmos
|
|
629
632
|
# buffer of data and processors
|
630
633
|
def clone
|
631
634
|
packet = super()
|
632
|
-
if packet.instance_variable_get("@processors")
|
633
|
-
packet.instance_variable_set("@processors", packet.processors.clone)
|
635
|
+
if packet.instance_variable_get("@processors".freeze)
|
636
|
+
packet.instance_variable_set("@processors".freeze, packet.processors.clone)
|
634
637
|
packet.processors.each do |processor_name, processor|
|
635
638
|
packet.processors[processor_name] = processor.clone
|
636
639
|
end
|
@@ -71,7 +71,7 @@ module Cosmos
|
|
71
71
|
raise @parser.error("Missing MACRO_APPEND_START before this config.line.", @parser.keyword) unless @macro
|
72
72
|
raise @parser.error("No items appended in MACRO_APPEND list", @parser.keyword) if @macro.list.empty?
|
73
73
|
|
74
|
-
create_new_packet_items(packet)
|
74
|
+
create_new_packet_items(packet)
|
75
75
|
end
|
76
76
|
|
77
77
|
private
|
@@ -85,11 +85,11 @@ module Cosmos
|
|
85
85
|
end
|
86
86
|
|
87
87
|
def create_new_packet_items(packet)
|
88
|
+
# Shift off the first macro index because since the first item(s) already exist we just rename
|
89
|
+
first_index = @macro.indices.shift
|
88
90
|
@macro.list.each do |name|
|
89
91
|
original_item_name = name
|
90
|
-
|
91
|
-
# exists we just rename it
|
92
|
-
new_name = format_item_name(name, @macro.indices.shift)
|
92
|
+
new_name = format_item_name(name, first_index)
|
93
93
|
item = packet.rename_item(name, new_name)
|
94
94
|
|
95
95
|
# The renaming indices create new items
|
@@ -371,7 +371,7 @@ module Cosmos
|
|
371
371
|
structure = super()
|
372
372
|
# Use instance_variable_set since we have overriden buffer= to do
|
373
373
|
# additional work that isn't neccessary here
|
374
|
-
structure.instance_variable_set("@buffer", @buffer.clone) if @buffer
|
374
|
+
structure.instance_variable_set("@buffer".freeze, @buffer.clone) if @buffer
|
375
375
|
return structure
|
376
376
|
end
|
377
377
|
alias dup clone
|
@@ -442,7 +442,7 @@ module Cosmos
|
|
442
442
|
def internal_buffer_equals(buffer)
|
443
443
|
raise ArgumentError, "Buffer class is #{buffer.class} but must be String" unless String === buffer
|
444
444
|
@buffer = buffer.dup
|
445
|
-
@buffer.force_encoding('ASCII-8BIT')
|
445
|
+
@buffer.force_encoding('ASCII-8BIT'.freeze)
|
446
446
|
if @buffer.length != @defined_length
|
447
447
|
if @buffer.length < @defined_length
|
448
448
|
resize_buffer()
|
@@ -39,9 +39,11 @@ module Cosmos
|
|
39
39
|
return @config.warnings
|
40
40
|
end
|
41
41
|
|
42
|
-
# @return [Array<String>] The telemetry target names
|
42
|
+
# @return [Array<String>] The telemetry target names (excluding UNKNOWN)
|
43
43
|
def target_names
|
44
|
-
|
44
|
+
result = @config.telemetry.keys.sort
|
45
|
+
result.delete('UNKNOWN'.freeze)
|
46
|
+
return result
|
45
47
|
end
|
46
48
|
|
47
49
|
# @param target_name [String] The target name
|
@@ -285,7 +287,6 @@ module Cosmos
|
|
285
287
|
tnames = target_names()
|
286
288
|
total = tnames.length.to_f
|
287
289
|
tnames.each_with_index do |target_name, index|
|
288
|
-
next if target_name == 'UNKNOWN'
|
289
290
|
if splash
|
290
291
|
splash.message = "Processing #{target_name} telemetry"
|
291
292
|
splash.progress = index / total
|
@@ -296,7 +297,7 @@ module Cosmos
|
|
296
297
|
packets(target_name).each do |packet_name, packet|
|
297
298
|
# We don't audit against hidden or disabled packets
|
298
299
|
next if !include_hidden and (packet.hidden || packet.disabled)
|
299
|
-
packet.items.
|
300
|
+
packet.items.each_key do |item_name|
|
300
301
|
# Skip ignored items
|
301
302
|
next if !include_hidden and ignored_items.include? item_name
|
302
303
|
strings << "#{target_name} #{packet_name} #{item_name}"
|
data/lib/cosmos/script/script.rb
CHANGED
@@ -598,7 +598,7 @@ module Cosmos
|
|
598
598
|
def _wait_tolerance(raw, *args)
|
599
599
|
type = (raw ? :RAW : :CONVERTED)
|
600
600
|
type_string = 'wait_tolerance'
|
601
|
-
type_string
|
601
|
+
type_string << '_raw' if raw
|
602
602
|
target_name, packet_name, item_name, expected_value, tolerance, timeout, polling_rate = wait_tolerance_process_args(args, type_string)
|
603
603
|
start_time = Time.now
|
604
604
|
success, value = cosmos_script_wait_implementation_tolerance(target_name, packet_name, item_name, type, expected_value, tolerance, timeout, polling_rate)
|
@@ -682,7 +682,7 @@ module Cosmos
|
|
682
682
|
|
683
683
|
def _wait_check_tolerance(raw, *args)
|
684
684
|
type_string = 'wait_check_tolerance'
|
685
|
-
type_string
|
685
|
+
type_string << '_raw' if raw
|
686
686
|
type = (raw ? :RAW : :CONVERTED)
|
687
687
|
target_name, packet_name, item_name, expected_value, tolerance, timeout, polling_rate = wait_tolerance_process_args(args, type_string)
|
688
688
|
start_time = Time.now
|
@@ -1067,7 +1067,7 @@ module Cosmos
|
|
1067
1067
|
|
1068
1068
|
if use_file_cache
|
1069
1069
|
# Check file based instrumented cache
|
1070
|
-
flat_path = path.
|
1070
|
+
flat_path = path.tr("/", "_").gsub("\\", "_").tr(":", "_").tr(" ", "_")
|
1071
1071
|
flat_path_with_md5 = flat_path + '_' + md5
|
1072
1072
|
cache_filename = File.join(cache_path, flat_path_with_md5)
|
1073
1073
|
end
|
@@ -1418,7 +1418,7 @@ module Cosmos
|
|
1418
1418
|
end
|
1419
1419
|
output_string << target_name + ' ' + cmd_name
|
1420
1420
|
if cmd_params.nil? or cmd_params.empty?
|
1421
|
-
output_string
|
1421
|
+
output_string << '")'
|
1422
1422
|
else
|
1423
1423
|
params = []
|
1424
1424
|
cmd_params.each do |key, value|
|
@@ -1428,13 +1428,13 @@ module Cosmos
|
|
1428
1428
|
if value.length > 256
|
1429
1429
|
value = value[0..255] + "...'"
|
1430
1430
|
end
|
1431
|
-
value.
|
1431
|
+
value.tr!('"',"'")
|
1432
1432
|
end
|
1433
1433
|
end
|
1434
1434
|
params << "#{key} #{value}"
|
1435
1435
|
end
|
1436
1436
|
params = params.join(", ")
|
1437
|
-
output_string
|
1437
|
+
output_string << ' with ' + params + '")'
|
1438
1438
|
end
|
1439
1439
|
return output_string
|
1440
1440
|
end
|
@@ -39,6 +39,7 @@ module Cosmos
|
|
39
39
|
# Mutex on write is needed to protect from commands coming in from more
|
40
40
|
# than one tool
|
41
41
|
@write_mutex = Mutex.new
|
42
|
+
@connected = false
|
42
43
|
end
|
43
44
|
|
44
45
|
# @return [String] Returns a binary string of data from the socket
|
@@ -50,7 +51,7 @@ module Cosmos
|
|
50
51
|
begin
|
51
52
|
data = @read_socket.recv_nonblock(65535)
|
52
53
|
@raw_logger_pair.read_logger.write(data) if @raw_logger_pair
|
53
|
-
rescue
|
54
|
+
rescue IO::WaitReadable
|
54
55
|
# Wait for the socket to be ready for reading or for the timeout
|
55
56
|
begin
|
56
57
|
result = IO.fast_select([@read_socket], nil, nil, @read_timeout)
|
@@ -126,7 +126,7 @@ module Cosmos
|
|
126
126
|
# Scan the response for the variables in brackets <VARIABLE>
|
127
127
|
# Write the packet value with each of the values received
|
128
128
|
response_values = response_string.scan(response_regexp)[0]
|
129
|
-
raise "Unexpected response received: #{response_string}" if response_values.length != response_item_names.length
|
129
|
+
raise "Unexpected response received: #{response_string}" if !response_values or (response_values.length != response_item_names.length)
|
130
130
|
response_values.each_with_index do |value, i|
|
131
131
|
result_packet.write(response_item_names[i], value)
|
132
132
|
end
|
@@ -443,7 +443,7 @@ module Cosmos
|
|
443
443
|
def update_targets
|
444
444
|
@target_select.clearItems()
|
445
445
|
target_names = System.commands.target_names
|
446
|
-
target_names_to_delete = [
|
446
|
+
target_names_to_delete = []
|
447
447
|
target_names.each do |target_name|
|
448
448
|
found_non_hidden = false
|
449
449
|
begin
|
@@ -149,7 +149,9 @@ module Cosmos
|
|
149
149
|
# Add the message output
|
150
150
|
@output = Qt::PlainTextEdit.new
|
151
151
|
@output.setReadOnly(true)
|
152
|
-
|
152
|
+
# Block count does NOT equal line numbers. Testing on Windows indicates
|
153
|
+
# 100 blocks equals a little over 27000 lines.
|
154
|
+
@output.setMaximumBlockCount(100)
|
153
155
|
|
154
156
|
@splitter.addWidget(@output)
|
155
157
|
# Set the stretch factor to give priority to the tab_widget (index 0) instead of the output (index 1)
|
@@ -218,16 +220,11 @@ module Cosmos
|
|
218
220
|
|
219
221
|
# Update the status tab of the server
|
220
222
|
def handle_status_tab
|
221
|
-
if CmdTlmServer.json_drb
|
222
|
-
previous_request_count = CmdTlmServer.json_drb.request_count
|
223
|
-
else
|
224
|
-
previous_request_count = 0
|
225
|
-
end
|
226
223
|
@tab_thread = Thread.new do
|
227
224
|
begin
|
228
225
|
while true
|
229
226
|
start_time = Time.now
|
230
|
-
Qt.execute_in_main_thread(true) { @status_tab.update
|
227
|
+
Qt.execute_in_main_thread(true) { @status_tab.update }
|
231
228
|
total_time = Time.now - start_time
|
232
229
|
if total_time > 0.0 and total_time < 1.0
|
233
230
|
break if @tab_sleeper.sleep(1.0 - total_time)
|
@@ -296,7 +293,7 @@ module Cosmos
|
|
296
293
|
lines_to_write = ''
|
297
294
|
string = @string_output.string.clone
|
298
295
|
@string_output.string = @string_output.string[string.length..-1]
|
299
|
-
string.each_line {|out_line| @output.add_formatted_text(out_line); lines_to_write
|
296
|
+
string.each_line {|out_line| @output.add_formatted_text(out_line); lines_to_write << out_line }
|
300
297
|
@output.flush
|
301
298
|
if @first_output < 2
|
302
299
|
# Scroll to the bottom on the first two outputs for Linux
|
@@ -17,6 +17,7 @@ module Cosmos
|
|
17
17
|
class InterfacesTab
|
18
18
|
INTERFACES = 'Interfaces'
|
19
19
|
ROUTERS = 'Routers'
|
20
|
+
ALIGN_CENTER = Qt::AlignCenter
|
20
21
|
|
21
22
|
def initialize
|
22
23
|
@interfaces_table = {}
|
@@ -116,7 +117,7 @@ module Cosmos
|
|
116
117
|
row = 0
|
117
118
|
interfaces.all.each do |interface_name, interface|
|
118
119
|
item = Qt::TableWidgetItem.new(Qt::Object.tr(interface_name))
|
119
|
-
item.setTextAlignment(
|
120
|
+
item.setTextAlignment(ALIGN_CENTER)
|
120
121
|
interfaces_table.setItem(row, 0, item)
|
121
122
|
interfaces_table.setCellWidget(row, 1, create_button(name, interface, interface_name))
|
122
123
|
interfaces_table.setItem(row, 2, create_state(interface))
|
@@ -126,8 +127,8 @@ module Cosmos
|
|
126
127
|
interface.bytes_written, interface.bytes_read,
|
127
128
|
interface.write_count, interface.read_count].each do |val|
|
128
129
|
|
129
|
-
item = Qt::TableWidgetItem.new(Qt::Object.tr(val.to_s))
|
130
|
-
item.setTextAlignment(
|
130
|
+
item = Qt::TableWidgetItem.new(val.to_s)#Qt::Object.tr(val.to_s))
|
131
|
+
item.setTextAlignment(ALIGN_CENTER)
|
131
132
|
interfaces_table.setItem(row, index, item)
|
132
133
|
index += 1
|
133
134
|
end
|
@@ -39,7 +39,7 @@ module Cosmos
|
|
39
39
|
return if cmd_tlm.nil? || cmd_tlm.target_names.empty?
|
40
40
|
|
41
41
|
row = 0
|
42
|
-
cmd_tlm.target_names.
|
42
|
+
cmd_tlm.target_names.each do |target_name|
|
43
43
|
packets = cmd_tlm.packets(target_name)
|
44
44
|
packets.sort.each do |packet_name, packet|
|
45
45
|
next if packet.hidden
|
@@ -47,6 +47,9 @@ module Cosmos
|
|
47
47
|
row += 1
|
48
48
|
end
|
49
49
|
end
|
50
|
+
packet = cmd_tlm.packet('UNKNOWN', 'UNKNOWN')
|
51
|
+
@packets_table[name].item(row, 2).setText(packet.received_count.to_s)
|
52
|
+
row += 1
|
50
53
|
end
|
51
54
|
|
52
55
|
private
|
@@ -55,12 +58,13 @@ module Cosmos
|
|
55
58
|
return if cmd_tlm.target_names.empty?
|
56
59
|
|
57
60
|
count = 0
|
58
|
-
cmd_tlm.target_names.
|
61
|
+
cmd_tlm.target_names.each do |target_name|
|
59
62
|
packets = cmd_tlm.packets(target_name)
|
60
63
|
packets.each do |packet_name, packet|
|
61
64
|
count += 1 unless packet.hidden
|
62
65
|
end
|
63
66
|
end
|
67
|
+
count += 1 # For UNKNOWN UNKNOWN
|
64
68
|
|
65
69
|
scroll = Qt::ScrollArea.new
|
66
70
|
widget = Qt::Widget.new
|
@@ -95,7 +99,9 @@ module Cosmos
|
|
95
99
|
|
96
100
|
def populate_packets_table(name, cmd_tlm, table)
|
97
101
|
row = 0
|
98
|
-
cmd_tlm.target_names
|
102
|
+
target_names = cmd_tlm.target_names
|
103
|
+
target_names << 'UNKNOWN'.freeze
|
104
|
+
target_names.each do |target_name|
|
99
105
|
packets = cmd_tlm.packets(target_name)
|
100
106
|
packets.sort.each do |packet_name, packet|
|
101
107
|
packet.received_count ||= 0
|