cosmos 4.1.1-java → 4.2.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -2
- data/.travis.yml +2 -0
- data/.yardopts +1 -0
- data/Gemfile +1 -0
- data/Manifest.txt +130 -0
- data/autohotkey/tools/ConfigEditorAHK +19 -0
- data/autohotkey/tools/cmd_extractor.ahk +4 -4
- data/autohotkey/tools/cmd_sequence.ahk +9 -5
- data/autohotkey/tools/config_editor.ahk +197 -0
- data/autohotkey/tools/packet_viewer.ahk +12 -6
- data/autohotkey/tools/replay.ahk +29 -29
- data/autohotkey/tools/script_runner.ahk +10 -2
- data/autohotkey/tools/tlm_extractor.ahk +7 -8
- data/autohotkey/tools/tlm_grapher.ahk +21 -9
- data/bin/dart_import +2 -0
- data/cosmos.gemspec +18 -16
- data/data/config/cmd_tlm_server.yaml +9 -0
- data/data/config/interface_modifiers.yaml +17 -0
- data/data/config/item_modifiers.yaml +3 -3
- data/data/crc.txt +184 -90
- data/data/dart.png +0 -0
- data/demo/Gemfile +1 -0
- data/demo/Rakefile +4 -0
- data/demo/config/dart/Gemfile +54 -0
- data/demo/config/data/crc.txt +28 -21
- data/demo/config/system/system.txt +3 -0
- data/demo/config/system/system2.txt +3 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +3 -3
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -1
- data/demo/config/targets/INST/lib/sim_inst.rb +1 -1
- data/demo/config/targets/INST/screens/adcs.txt +2 -1
- data/demo/config/targets/INST/screens/array.txt +1 -1
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +7 -2
- data/demo/config/targets/INST/screens/graphs.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +1 -1
- data/demo/config/targets/INST/screens/hs.txt +2 -1
- data/demo/config/targets/INST/screens/latest.txt +1 -1
- data/demo/config/targets/INST/screens/limits.txt +1 -1
- data/demo/config/targets/INST/screens/other.txt +1 -1
- data/demo/config/targets/INST/screens/tabs.txt +1 -1
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +3 -1
- data/demo/config/tools/launcher/launcher.txt +3 -2
- data/demo/tools/Dart +16 -0
- data/demo/tools/Dart.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/install/Gemfile +1 -0
- data/install/Rakefile +4 -0
- data/install/config/dart/Gemfile +54 -0
- data/install/config/data/crc.txt +6 -3
- data/install/config/system/system.txt +3 -0
- data/install/config/tools/launcher/launcher.txt +3 -2
- data/install/tools/Dart +16 -0
- data/install/tools/Dart.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/lib/cosmos/core_ext/time.rb +8 -8
- data/lib/cosmos/dart/.rspec +1 -0
- data/lib/cosmos/dart/Gemfile +69 -0
- data/lib/cosmos/dart/Rakefile +7 -0
- data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
- data/lib/cosmos/dart/app/assets/images/.keep +0 -0
- data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
- data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
- data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
- data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
- data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
- data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
- data/lib/cosmos/dart/app/helpers/application_helper.rb +2 -0
- data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
- data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
- data/lib/cosmos/dart/app/models/application_record.rb +3 -0
- data/lib/cosmos/dart/app/models/item.rb +6 -0
- data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
- data/lib/cosmos/dart/app/models/packet.rb +4 -0
- data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
- data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
- data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
- data/lib/cosmos/dart/app/models/system_config.rb +2 -0
- data/lib/cosmos/dart/app/models/target.rb +4 -0
- data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
- data/lib/cosmos/dart/bin/bundle +3 -0
- data/lib/cosmos/dart/bin/rails +4 -0
- data/lib/cosmos/dart/bin/rake +4 -0
- data/lib/cosmos/dart/bin/setup +34 -0
- data/lib/cosmos/dart/bin/update +29 -0
- data/lib/cosmos/dart/config.ru +5 -0
- data/lib/cosmos/dart/config/application.rb +29 -0
- data/lib/cosmos/dart/config/boot.rb +3 -0
- data/lib/cosmos/dart/config/cable.yml +9 -0
- data/lib/cosmos/dart/config/database.yml +23 -0
- data/lib/cosmos/dart/config/environment.rb +5 -0
- data/lib/cosmos/dart/config/environments/development.rb +62 -0
- data/lib/cosmos/dart/config/environments/production.rb +84 -0
- data/lib/cosmos/dart/config/environments/test.rb +42 -0
- data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
- data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
- data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
- data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
- data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
- data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
- data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
- data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
- data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
- data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
- data/lib/cosmos/dart/config/locales/en.yml +23 -0
- data/lib/cosmos/dart/config/puma.rb +47 -0
- data/lib/cosmos/dart/config/routes.rb +3 -0
- data/lib/cosmos/dart/config/secrets.yml +22 -0
- data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
- data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
- data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/schema.rb +103 -0
- data/lib/cosmos/dart/db/seeds.rb +7 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
- data/lib/cosmos/dart/examples/dart_stream_client.rb +93 -0
- data/lib/cosmos/dart/lib/dart_common.rb +749 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +172 -0
- data/lib/cosmos/dart/lib/dart_decom_query.rb +184 -0
- data/lib/cosmos/dart/lib/dart_decommutator.rb +235 -0
- data/lib/cosmos/dart/lib/dart_importer.rb +154 -0
- data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +139 -0
- data/lib/cosmos/dart/lib/dart_reducer_manager.rb +85 -0
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +263 -0
- data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
- data/lib/cosmos/dart/processes/dart.rb +145 -0
- data/lib/cosmos/dart/processes/dart_decom_server.rb +39 -0
- data/lib/cosmos/dart/processes/dart_import.rb +63 -0
- data/lib/cosmos/dart/processes/dart_ingester.rb +92 -0
- data/lib/cosmos/dart/processes/dart_reducer.rb +27 -0
- data/lib/cosmos/dart/processes/dart_stream_server.rb +31 -0
- data/lib/cosmos/dart/processes/dart_worker.rb +37 -0
- data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
- data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
- data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +153 -0
- data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +336 -0
- data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +83 -0
- data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
- data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +149 -0
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +289 -0
- data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +241 -0
- data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
- data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
- data/lib/cosmos/gui/dialogs/about_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +1 -0
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +0 -3
- data/lib/cosmos/gui/qt.rb +10 -1
- data/lib/cosmos/gui/text/completion.rb +10 -9
- data/lib/cosmos/gui/text/completion_text_edit.rb +16 -14
- data/lib/cosmos/gui/text/ruby_editor.rb +2 -2
- data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +119 -0
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +42 -12
- data/lib/cosmos/interfaces/interface.rb +1 -2
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +26 -8
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +8 -2
- data/lib/cosmos/interfaces/protocols/protocol.rb +2 -1
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +1 -1
- data/lib/cosmos/interfaces/stream_interface.rb +1 -0
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +2 -3
- data/lib/cosmos/io/json_drb_object.rb +1 -1
- data/lib/cosmos/io/json_rpc.rb +2 -1
- data/lib/cosmos/io/win32_serial_driver.rb +2 -9
- data/lib/cosmos/packet_logs/packet_log_writer.rb +1 -1
- data/lib/cosmos/packets/packet.rb +22 -12
- data/lib/cosmos/packets/packet_config.rb +2 -1
- data/lib/cosmos/packets/packet_item.rb +26 -24
- data/lib/cosmos/packets/parsers/macro_parser.rb +5 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +35 -17
- data/lib/cosmos/packets/parsers/packet_parser.rb +3 -10
- data/lib/cosmos/packets/parsers/xtce_converter.rb +21 -35
- data/lib/cosmos/packets/parsers/xtce_parser.rb +54 -46
- data/lib/cosmos/packets/structure.rb +10 -2
- data/lib/cosmos/packets/structure_item.rb +22 -8
- data/lib/cosmos/processors/statistics_processor.rb +2 -0
- data/lib/cosmos/script/api_shared.rb +13 -12
- data/lib/cosmos/script/cmd_tlm_server.rb +4 -0
- data/lib/cosmos/script/commands.rb +3 -15
- data/lib/cosmos/script/script.rb +69 -23
- data/lib/cosmos/streams/tcpip_client_stream.rb +2 -2
- data/lib/cosmos/system/system.rb +42 -25
- data/lib/cosmos/system/target.rb +6 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +177 -36
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +3 -2
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +34 -8
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +80 -25
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +19 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +15 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +15 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +1 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +84 -7
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +0 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +1 -5
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +3 -2
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +159 -27
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +1 -1
- data/lib/cosmos/tools/config_editor/config_editor.rb +17 -52
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +0 -5
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +111 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -18
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +12 -3
- data/lib/cosmos/tools/script_runner/script_runner.rb +27 -14
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +104 -37
- data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
- data/lib/cosmos/tools/table_manager/table_item_parser.rb +4 -2
- data/lib/cosmos/tools/table_manager/table_manager.rb +0 -5
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +0 -1
- data/lib/cosmos/tools/test_runner/test.rb +1 -3
- data/lib/cosmos/tools/test_runner/test_runner.rb +26 -15
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +290 -137
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +122 -25
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +67 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +28 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +36 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +42 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +88 -14
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +2 -5
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +2 -6
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +74 -18
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +3 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +159 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +49 -2
- data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +0 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +5 -5
- data/lib/cosmos/top_level.rb +1 -0
- data/lib/cosmos/utilities/crc.rb +3 -0
- data/lib/cosmos/utilities/csv.rb +1 -0
- data/lib/cosmos/utilities/message_log.rb +2 -1
- data/lib/cosmos/utilities/simulated_target.rb +8 -8
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32.rb +4 -10
- data/run_gui_tests.bat +2 -1
- data/spec/config/config_parser_spec.rb +4 -4
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/exception_spec.rb +12 -12
- data/spec/core_ext/file_spec.rb +6 -6
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/socket_spec.rb +2 -2
- data/spec/core_ext/string_spec.rb +13 -13
- data/spec/core_ext/time_spec.rb +0 -2
- data/spec/gui/utilities/script_module_gui_spec.rb +3 -3
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +6 -6
- data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +6 -2
- data/spec/interfaces/interface_spec.rb +0 -1
- data/spec/interfaces/linc_interface_spec.rb +0 -5
- data/spec/interfaces/protocols/crc_protocol_spec.rb +201 -85
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +33 -9
- data/spec/interfaces/protocols/length_protocol_spec.rb +1 -1
- data/spec/interfaces/protocols/override_protocol_spec.rb +6 -2
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +1 -5
- data/spec/interfaces/protocols/template_protocol_spec.rb +0 -1
- data/spec/interfaces/simulated_target_interface_spec.rb +5 -5
- data/spec/interfaces/udp_interface_spec.rb +2 -4
- data/spec/io/buffered_file_spec.rb +8 -12
- data/spec/io/json_drb_spec.rb +9 -9
- data/spec/io/json_rpc_spec.rb +4 -4
- data/spec/io/raw_logger_spec.rb +4 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +3 -6
- data/spec/packet_logs/packet_log_writer_spec.rb +4 -4
- data/spec/packets/binary_accessor_spec.rb +5 -8
- data/spec/packets/commands_spec.rb +2 -2
- data/spec/packets/limits_spec.rb +2 -2
- data/spec/packets/packet_config_spec.rb +12 -0
- data/spec/packets/packet_item_limits_spec.rb +1 -1
- data/spec/packets/packet_item_spec.rb +9 -9
- data/spec/packets/packet_spec.rb +15 -5
- data/spec/packets/parsers/packet_item_parser_spec.rb +27 -0
- data/spec/packets/parsers/xtce_parser_spec.rb +27 -30
- data/spec/packets/structure_spec.rb +2 -1
- data/spec/packets/telemetry_spec.rb +3 -5
- data/spec/processors/statistics_processor_spec.rb +35 -0
- data/spec/script/cmd_tlm_server_spec.rb +4 -21
- data/spec/script/commands_disconnect_spec.rb +46 -58
- data/spec/script/commands_spec.rb +40 -61
- data/spec/script/limits_spec.rb +1 -21
- data/spec/script/script_spec.rb +32 -41
- data/spec/script/scripting_spec.rb +166 -185
- data/spec/script/telemetry_spec.rb +10 -5
- data/spec/script/tools_spec.rb +2 -24
- data/spec/spec_helper.rb +11 -5
- data/spec/system/system_spec.rb +17 -12
- data/spec/tools/cmd_tlm_server/api_spec.rb +21 -10
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -16
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +0 -1
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +16 -27
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +2 -6
- data/spec/tools/cmd_tlm_server/connections_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +13 -13
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +5 -9
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +11 -3
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/routers_spec.rb +5 -9
- data/spec/tools/table_manager/table_config_spec.rb +0 -1
- data/spec/tools/table_manager/tablemanager_core_spec.rb +23 -23
- data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +6 -4
- data/spec/top_level/top_level_spec.rb +9 -9
- data/spec/utilities/csv_spec.rb +2 -12
- data/spec/utilities/logger_spec.rb +6 -6
- data/spec/utilities/message_log_spec.rb +3 -11
- data/tasks/gemfile_stats.rake +2 -2
- metadata +167 -60
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2018 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
|
+
# This file contains the implementation of the StreamPacketsDialog class. This class
|
12
|
+
# provides a dialog box to configure packet streaming from DART
|
13
|
+
|
14
|
+
require 'cosmos'
|
15
|
+
require 'cosmos/gui/qt'
|
16
|
+
require 'cosmos/gui/widgets/dart_frame'
|
17
|
+
|
18
|
+
module Cosmos
|
19
|
+
# Creates a dialog to allow a user to select the
|
20
|
+
# time period to process.
|
21
|
+
class DartDialog < Qt::Dialog
|
22
|
+
extend Forwardable
|
23
|
+
def_delegators :@stream_packets_frame, :time_start, :time_start=, :time_end, :time_end=, :meta_filters
|
24
|
+
|
25
|
+
# @param parent (see PacketLogFrame#initialize)
|
26
|
+
# @param title [String] Dialog title
|
27
|
+
# @param show_time (see PacketLogFrame#initialize)
|
28
|
+
def initialize(parent, title, show_time = true)
|
29
|
+
super(parent)
|
30
|
+
setWindowTitle(title)
|
31
|
+
|
32
|
+
@layout = Qt::VBoxLayout.new
|
33
|
+
@stream_packets_frame = DartFrame.new(self, show_time)
|
34
|
+
@stream_packets_frame.change_callback = method(:change_callback)
|
35
|
+
@layout.addWidget(@stream_packets_frame)
|
36
|
+
|
37
|
+
# Separator before buttons
|
38
|
+
@sep1 = Qt::Frame.new(self)
|
39
|
+
@sep1.setFrameStyle(Qt::Frame::HLine | Qt::Frame::Sunken)
|
40
|
+
@layout.addWidget(@sep1)
|
41
|
+
|
42
|
+
# Create OK and Cancel buttons
|
43
|
+
@button_layout = Qt::HBoxLayout.new
|
44
|
+
@ok_button = Qt::PushButton.new('OK')
|
45
|
+
@ok_button.connect(SIGNAL('clicked()')) { System.telemetry.reset; self.accept }
|
46
|
+
@button_layout.addWidget(@ok_button)
|
47
|
+
@cancel_button = Qt::PushButton.new('Cancel')
|
48
|
+
@cancel_button.connect(SIGNAL('clicked()')) { self.reject }
|
49
|
+
@button_layout.addWidget(@cancel_button)
|
50
|
+
|
51
|
+
@layout.addLayout(@button_layout)
|
52
|
+
setLayout(@layout)
|
53
|
+
end
|
54
|
+
|
55
|
+
protected
|
56
|
+
|
57
|
+
def change_callback(item_changed)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -17,9 +17,6 @@ module Cosmos
|
|
17
17
|
SCREEN_WIDTH_MARGIN = 40
|
18
18
|
SCREEN_HEIGHT_MARGIN = 100
|
19
19
|
|
20
|
-
# @param parent [Qt::Widget] Parent of this dialog
|
21
|
-
# @param title [String] Dialog title
|
22
|
-
# @param text [String] Text to display
|
23
20
|
# @param parent [Qt::Widget] Parent of this dialog
|
24
21
|
# @param title [String] Dialog title
|
25
22
|
# @param text [String] Text to display
|
data/lib/cosmos/gui/qt.rb
CHANGED
@@ -252,7 +252,16 @@ module Cosmos
|
|
252
252
|
end
|
253
253
|
end
|
254
254
|
end
|
255
|
-
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
class Qt::CheckboxLabel < Qt::Label
|
259
|
+
def setCheckbox(checkbox)
|
260
|
+
@checkbox = checkbox
|
261
|
+
end
|
262
|
+
|
263
|
+
def mouseReleaseEvent(event)
|
264
|
+
@checkbox.toggle
|
256
265
|
end
|
257
266
|
end
|
258
267
|
|
@@ -13,15 +13,17 @@ require 'cosmos/gui/qt'
|
|
13
13
|
require 'cosmos/script'
|
14
14
|
|
15
15
|
module Cosmos
|
16
|
-
|
16
|
+
# Performs code completion for COSMOS by supporting all the COSMOS keywords
|
17
|
+
# as well as the defined targets and packets.
|
17
18
|
class Completion < Qt::Completer
|
18
19
|
CMD_KEYWORDS = %w(cmd cmd_no_range_check cmd_no_hazardous_check cmd_no_checks
|
19
20
|
cmd_raw cmd_raw_no_range_check cmd_raw_no_hazardous_check cmd_raw_no_checks)
|
20
21
|
TLM_KEYWORDS = %w(set_tlm set_tlm_raw override_tlm override_tlm_raw normalize_tlm
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
tlm tlm_raw tlm_formatted tlm_with_units
|
23
|
+
limits_enabled? enable_limits disable_limits
|
24
|
+
check check_raw check_tolerance check_tolerance_raw
|
25
|
+
wait wait_raw wait_tolerance wait_tolerance_raw wait_check wait_check_raw
|
26
|
+
wait_check_tolerance wait_check_tolerance_raw)
|
25
27
|
|
26
28
|
slots 'insertCompletion(const QString&)'
|
27
29
|
|
@@ -324,13 +326,13 @@ module Cosmos
|
|
324
326
|
end
|
325
327
|
end
|
326
328
|
|
327
|
-
#Creates a Popup box to help with code completion
|
329
|
+
# Creates a Popup box to help with code completion
|
328
330
|
def create_list_popup(list_items)
|
329
331
|
return if list_items.nil? or list_items.empty?
|
330
332
|
create_popup(list_items)
|
331
333
|
end
|
332
334
|
|
333
|
-
# Called by
|
335
|
+
# Called by CompletionTextEdit in the keyPressEvent method
|
334
336
|
def handle_keypress(event)
|
335
337
|
current_line = widget.textCursor.block.text
|
336
338
|
|
@@ -398,5 +400,4 @@ module Cosmos
|
|
398
400
|
setCurrentRow(0) if popup.isVisible
|
399
401
|
end
|
400
402
|
end
|
401
|
-
|
402
|
-
end # module Cosmos
|
403
|
+
end
|
@@ -13,8 +13,13 @@ require 'cosmos/gui/qt'
|
|
13
13
|
require 'cosmos/gui/dialogs/splash'
|
14
14
|
|
15
15
|
module Cosmos
|
16
|
-
|
16
|
+
# Creates a Completion object to handle code completion popups.
|
17
|
+
# This calss also includes many helper methods to access various
|
18
|
+
# lines, indent selections, highlight lines and center the view.
|
17
19
|
class CompletionTextEdit < Qt::PlainTextEdit
|
20
|
+
# Create a signal so users of CompletionTextEdit don't have to
|
21
|
+
# subclass in order to listen to keyPressEvents
|
22
|
+
signals 'key_pressed(QKeyEvent*)'
|
18
23
|
TRUE_VARIANT = Qt::Variant.new(true)
|
19
24
|
SELECTION_DETAILS_POOL = []
|
20
25
|
|
@@ -78,34 +83,31 @@ module Cosmos
|
|
78
83
|
@code_completion.dispose if @code_completion
|
79
84
|
end
|
80
85
|
|
81
|
-
def keyPressCallback=(callback)
|
82
|
-
@keypress_callback = callback
|
83
|
-
end
|
84
|
-
|
85
86
|
def keyPressEvent(event)
|
87
|
+
emit key_pressed(event)
|
88
|
+
|
86
89
|
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
87
|
-
if (@code_completion
|
90
|
+
if (@code_completion && @code_completion.popup.isVisible)
|
88
91
|
case event.key
|
89
|
-
when Qt::Key_Return, Qt::Key_Enter
|
92
|
+
when Qt::Key_Return, Qt::Key_Enter, Qt::Key_Tab, Qt::Key_Backtab
|
90
93
|
event.ignore
|
91
94
|
return
|
92
95
|
end
|
93
96
|
end
|
94
97
|
|
95
|
-
continue = @keypress_callback.call(event) if @keypress_callback
|
96
|
-
|
97
98
|
case event.key
|
98
99
|
when Qt::Key_Tab
|
100
|
+
# Ensure Ctrl-Tab doesn't activate indentation
|
99
101
|
if event.modifiers == Qt::NoModifier
|
100
102
|
indent_selection()
|
101
103
|
end
|
102
104
|
when Qt::Key_Backtab
|
103
|
-
|
104
|
-
|
105
|
-
if continue != false
|
106
|
-
super(event)
|
107
|
-
@code_completion.handle_keypress(event) if @code_completion
|
105
|
+
if event.modifiers == Qt::NoModifier
|
106
|
+
unindent_selection()
|
108
107
|
end
|
108
|
+
else
|
109
|
+
super(event)
|
110
|
+
@code_completion.handle_keypress(event) if @code_completion
|
109
111
|
end
|
110
112
|
end
|
111
113
|
|
@@ -94,8 +94,6 @@ module Cosmos
|
|
94
94
|
['\b\w+(::\b\w+)+', 0, STYLES['class']],
|
95
95
|
# Ruby global
|
96
96
|
['\\$\b\w+', 0, STYLES['string']],
|
97
|
-
# A single # or a # not followed by { to the end
|
98
|
-
['(#$|#[^{]).*', 0, STYLES['comment']],
|
99
97
|
# Regex, possibly containing escape sequences
|
100
98
|
["/.*/", 0, STYLES['string']],
|
101
99
|
# Double-quoted string, possibly containing escape sequences
|
@@ -108,6 +106,8 @@ module Cosmos
|
|
108
106
|
["'[^'\\\\]*(\\.[^'\\\\]*)*'", 0, STYLES['string']],
|
109
107
|
# Back-tick string, possibly containing escape sequences
|
110
108
|
["`[^`\\\\]*(\\.[^`\\\\]*)*`", 0, STYLES['string']],
|
109
|
+
# A single # possibly followed by matched quotes
|
110
|
+
['#(?=([^\'"]*(\'|")[^\'"]*(\'|"))*[^\'"]*$).*', 0, STYLES['comment']],
|
111
111
|
])
|
112
112
|
|
113
113
|
# Build a QRegExp for each pattern
|
@@ -0,0 +1,142 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2018 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
|
+
require 'cosmos/gui/dialogs/calendar_dialog'
|
14
|
+
require 'cosmos/gui/widgets/dart_meta_frame'
|
15
|
+
|
16
|
+
module Cosmos
|
17
|
+
# Widget which displays a button to configure packet stream from DART.
|
18
|
+
# Buttons exist to display start and stop time choosers
|
19
|
+
class DartFrame < Qt::Widget
|
20
|
+
# @return [Time] Start time of packets to process
|
21
|
+
attr_reader :time_start
|
22
|
+
# @return [Time] End time of packets to process
|
23
|
+
attr_reader :time_end
|
24
|
+
# @return [#call] Callback called when something changes. Called with
|
25
|
+
# the item that was changed as a symbol. The possible values are
|
26
|
+
# :TIME_START, :TIME_END
|
27
|
+
attr_accessor :change_callback
|
28
|
+
|
29
|
+
# @param parent [Qt::Widget] Parent to this dialog
|
30
|
+
# @param show_time [Boolean] Whether to show the start and end time
|
31
|
+
# fields and buttons which popup a calendar browser
|
32
|
+
def initialize(parent,
|
33
|
+
show_time = true)
|
34
|
+
super(parent)
|
35
|
+
|
36
|
+
@time_start = nil
|
37
|
+
@time_end = nil
|
38
|
+
@change_callback = nil
|
39
|
+
|
40
|
+
@vbox = Qt::VBoxLayout.new
|
41
|
+
@vbox.setContentsMargins(0,0,0,0)
|
42
|
+
|
43
|
+
@layout = Qt::GridLayout.new
|
44
|
+
row = 0
|
45
|
+
|
46
|
+
# Declare these regardless of if show_time is set so getters and setters work
|
47
|
+
@time_start_field = Qt::LineEdit.new('N/A')
|
48
|
+
@time_end_field = Qt::LineEdit.new('N/A')
|
49
|
+
if show_time
|
50
|
+
%w(Start End).each do |time|
|
51
|
+
time_label = Qt::Label.new("Time Period #{time}:")
|
52
|
+
@layout.addWidget(time_label, row, 0)
|
53
|
+
if time == 'Start'
|
54
|
+
time_field = @time_start_field
|
55
|
+
else
|
56
|
+
time_field = @time_end_field
|
57
|
+
end
|
58
|
+
time_field.setMinimumWidth(340)
|
59
|
+
time_field.setReadOnly(true)
|
60
|
+
@layout.addWidget(time_field, row, 1)
|
61
|
+
time_clear_button = Qt::PushButton.new('Clear')
|
62
|
+
time_clear_button.connect(SIGNAL('clicked()')) { handle_time_clear_button(time, time_field) }
|
63
|
+
@layout.addWidget(time_clear_button, row, 2)
|
64
|
+
time_button = Qt::PushButton.new('Select')
|
65
|
+
time_button.connect(SIGNAL('clicked()')) { handle_time_select_button(time, time_field) }
|
66
|
+
@layout.addWidget(time_button, row, 3)
|
67
|
+
row += 1
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
@vbox.addLayout(@layout)
|
72
|
+
|
73
|
+
@dart_meta_frame = DartMetaFrame.new(self)
|
74
|
+
@vbox.addWidget(@dart_meta_frame)
|
75
|
+
|
76
|
+
setLayout(@vbox)
|
77
|
+
end
|
78
|
+
|
79
|
+
# @param time_start [Time] Start time
|
80
|
+
def time_start=(time_start)
|
81
|
+
@time_start = time_start
|
82
|
+
if @time_start
|
83
|
+
@time_start_field.setText(@time_start.formatted)
|
84
|
+
else
|
85
|
+
@time_start_field.setText('N/A')
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# @param time_end [Time] End time
|
90
|
+
def time_end=(time_end)
|
91
|
+
@time_end = time_end
|
92
|
+
if @time_end
|
93
|
+
@time_end_field.setText(@time_end.formatted)
|
94
|
+
else
|
95
|
+
@time_end_field.setText('N/A')
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def meta_filters
|
100
|
+
@dart_meta_frame.meta_filters
|
101
|
+
end
|
102
|
+
|
103
|
+
protected
|
104
|
+
|
105
|
+
# Handles choosing a time
|
106
|
+
def handle_time_select_button(time_period, time_field)
|
107
|
+
if time_period == 'Start'
|
108
|
+
time = @time_start
|
109
|
+
time = @time_end unless @time_start
|
110
|
+
else
|
111
|
+
time = @time_end
|
112
|
+
time = @time_start unless @time_end
|
113
|
+
end
|
114
|
+
dialog = CalendarDialog.new(self, "Select Time Period #{time_period}:", time)
|
115
|
+
case dialog.exec
|
116
|
+
when Qt::Dialog::Accepted
|
117
|
+
time_field.setText(dialog.time.formatted)
|
118
|
+
if time_period == 'Start'
|
119
|
+
@time_start = dialog.time
|
120
|
+
@change_callback.call(:TIME_START) if @change_callback
|
121
|
+
else
|
122
|
+
@time_end = dialog.time
|
123
|
+
@change_callback.call(:TIME_END) if @change_callback
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Clears the time
|
129
|
+
def handle_time_clear_button(time_period, time_field)
|
130
|
+
current_text = time_field.text
|
131
|
+
time_field.setText('N/A')
|
132
|
+
if time_period == 'Start'
|
133
|
+
@time_start = nil
|
134
|
+
@change_callback.call(:TIME_START) if @change_callback and current_text != 'N/A'
|
135
|
+
else
|
136
|
+
@time_end = nil
|
137
|
+
@change_callback.call(:TIME_END) if @change_callback and current_text != 'N/A'
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2018 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
|
+
require 'cosmos/io/json_drb_object'
|
14
|
+
|
15
|
+
module Cosmos
|
16
|
+
class DartMetaFrame < Qt::Widget
|
17
|
+
@@meta_filters = []
|
18
|
+
|
19
|
+
def initialize(parent)
|
20
|
+
super(parent)
|
21
|
+
|
22
|
+
@got_meta_item_names = false
|
23
|
+
|
24
|
+
@layout = Qt::VBoxLayout.new(self)
|
25
|
+
@layout.setContentsMargins(0,0,0,0)
|
26
|
+
|
27
|
+
@groupbox = Qt::GroupBox.new("Meta Filter Selection")
|
28
|
+
@vbox = Qt::VBoxLayout.new(@groupbox)
|
29
|
+
@hbox1 = Qt::HBoxLayout.new
|
30
|
+
@label = Qt::Label.new("Meta Filters: ")
|
31
|
+
@hbox1.addWidget(@label)
|
32
|
+
@meta_filters_text = Qt::LineEdit.new
|
33
|
+
@meta_filters_text.setReadOnly(true)
|
34
|
+
@meta_filters_text.text = @@meta_filters.to_s[1..-2]
|
35
|
+
@hbox1.addWidget(@meta_filters_text)
|
36
|
+
@clear_button = Qt::PushButton.new("Clear")
|
37
|
+
@hbox1.addWidget(@clear_button)
|
38
|
+
@clear_button.connect(SIGNAL('clicked()')) do
|
39
|
+
@@meta_filters = []
|
40
|
+
@meta_filters_text.text = ""
|
41
|
+
update_meta_item_names()
|
42
|
+
end
|
43
|
+
@vbox.addLayout(@hbox1)
|
44
|
+
|
45
|
+
@hbox2 = Qt::HBoxLayout.new
|
46
|
+
@meta_item_name = Qt::ComboBox.new
|
47
|
+
@meta_item_name.setMinimumWidth(200)
|
48
|
+
@meta_item_name.setMaxVisibleItems(6)
|
49
|
+
@hbox2.addWidget(@meta_item_name)
|
50
|
+
@comparison = Qt::ComboBox.new
|
51
|
+
@comparison.addItem("==")
|
52
|
+
@comparison.addItem("!=")
|
53
|
+
@comparison.addItem(">")
|
54
|
+
@comparison.addItem(">=")
|
55
|
+
@comparison.addItem("<")
|
56
|
+
@comparison.addItem("<=")
|
57
|
+
@comparison.setMaxVisibleItems(6)
|
58
|
+
@hbox2.addWidget(@comparison)
|
59
|
+
@filter_value = Qt::LineEdit.new
|
60
|
+
@hbox2.addWidget(@filter_value)
|
61
|
+
@add_button = Qt::PushButton.new("Add Filter")
|
62
|
+
@add_button.connect(SIGNAL('clicked()')) do
|
63
|
+
filter_value = @filter_value.text
|
64
|
+
if filter_value.to_s.strip.length > 0
|
65
|
+
if filter_value.index(" ")
|
66
|
+
if filter_value.index('"')
|
67
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} '#{@filter_value.text}'"
|
68
|
+
else
|
69
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} \"#{@filter_value.text}\""
|
70
|
+
end
|
71
|
+
else
|
72
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} #{@filter_value.text}"
|
73
|
+
end
|
74
|
+
else
|
75
|
+
@@meta_filters << "#{@meta_item_name.text} #{@comparison.text} ''"
|
76
|
+
end
|
77
|
+
@meta_filters_text.text = @@meta_filters.to_s[1..-2]
|
78
|
+
end
|
79
|
+
@hbox2.addWidget(@add_button)
|
80
|
+
@vbox.addLayout(@hbox2)
|
81
|
+
@layout.addWidget(@groupbox)
|
82
|
+
|
83
|
+
setLayout(@layout)
|
84
|
+
|
85
|
+
@resize_timer = Qt::Timer.new
|
86
|
+
@resize_timer.connect(SIGNAL('timeout()')) { update_meta_item_names() }
|
87
|
+
@resize_timer.start(100)
|
88
|
+
end
|
89
|
+
|
90
|
+
def meta_filters
|
91
|
+
@@meta_filters
|
92
|
+
end
|
93
|
+
|
94
|
+
protected
|
95
|
+
|
96
|
+
def update_meta_item_names
|
97
|
+
if !@got_meta_item_names and !@update_thread
|
98
|
+
@update_thread = Thread.new do
|
99
|
+
begin
|
100
|
+
server = JsonDRbObject.new(System.connect_hosts['DART_DECOM'], System.ports['DART_DECOM'])
|
101
|
+
item_names = server.item_names("SYSTEM", "META")
|
102
|
+
Qt.execute_in_main_thread do
|
103
|
+
@meta_item_name.clear
|
104
|
+
item_names.each do |item|
|
105
|
+
@meta_item_name.addItem(item)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
@got_meta_item_names = true
|
109
|
+
rescue Exception
|
110
|
+
# We tried...
|
111
|
+
ensure
|
112
|
+
@update_thread = nil
|
113
|
+
server.disconnect if defined? server
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|