cosmos 4.1.1-java → 4.2.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.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,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 'dart_common'
|
|
12
|
+
|
|
13
|
+
class DartTcpipServerInterface < Cosmos::TcpipServerInterface
|
|
14
|
+
include DartCommon
|
|
15
|
+
|
|
16
|
+
def initialize(write_timeout = 60, read_timeout = 5)
|
|
17
|
+
port = Cosmos::System.ports['DART_STREAM']
|
|
18
|
+
super(port, port, write_timeout, read_timeout, 'PREIDENTIFIED')
|
|
19
|
+
@listen_address = Cosmos::System.listen_hosts['DART_STREAM']
|
|
20
|
+
@plr_cache = {}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def connect
|
|
24
|
+
@cancel_threads = false
|
|
25
|
+
@read_queue.clear if @read_queue
|
|
26
|
+
start_listen_thread(@read_port, true, true)
|
|
27
|
+
@write_thread = nil
|
|
28
|
+
@connected = true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def read_thread_body(interface)
|
|
32
|
+
packet = interface.read
|
|
33
|
+
return if !packet || @cancel_threads
|
|
34
|
+
|
|
35
|
+
# Expect to receive a packet that is completed composed of a JSON object with the following fields
|
|
36
|
+
# start_time_sec, start_time_usec
|
|
37
|
+
# end_time_sec, end_time_usec
|
|
38
|
+
# cmd_tlm = CMD, or TLM
|
|
39
|
+
# packets [[target_name, packet_name], ...]
|
|
40
|
+
json_data = packet.buffer(false)
|
|
41
|
+
json_object = JSON.parse(json_data)
|
|
42
|
+
Cosmos::Logger.info("Received Request: #{json_data}")
|
|
43
|
+
start_time = Time.at(json_object['start_time_sec'], json_object['start_time_usec'])
|
|
44
|
+
end_time = Time.at(json_object['end_time_sec'], json_object['end_time_usec'])
|
|
45
|
+
cmd_tlm = json_object['cmd_tlm']
|
|
46
|
+
packets = json_object['packets']
|
|
47
|
+
meta_ids = json_object['meta_ids']
|
|
48
|
+
meta_filters = json_object['meta_filters']
|
|
49
|
+
if cmd_tlm and cmd_tlm.to_s.upcase == 'CMD'
|
|
50
|
+
is_tlm = false
|
|
51
|
+
else
|
|
52
|
+
is_tlm = true
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if meta_filters and (!meta_ids or meta_ids.length <= 0)
|
|
56
|
+
meta_ids = process_meta_filters(meta_filters, is_tlm, end_time)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Retrieve and stream out requested packets here
|
|
60
|
+
pairs = []
|
|
61
|
+
if packets
|
|
62
|
+
packets.each do |target_name, packet_name|
|
|
63
|
+
target = Target.where("name = ?", target_name.to_s.upcase).first
|
|
64
|
+
if target
|
|
65
|
+
packet = Packet.where("target_id = ? and name = ? and is_tlm = #{is_tlm}", target.id, packet_name.to_s.upcase).first
|
|
66
|
+
if packet
|
|
67
|
+
pairs << [target.id, packet.id]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
if pairs.length > 0
|
|
74
|
+
where_clause = "("
|
|
75
|
+
index = 0
|
|
76
|
+
pairs.each do |target_id, packet_id|
|
|
77
|
+
where_clause << " or " if index != 0
|
|
78
|
+
where_clause << "(target_id = #{target_id} and packet_id = #{packet_id})"
|
|
79
|
+
index += 1
|
|
80
|
+
end
|
|
81
|
+
where_clause << ")"
|
|
82
|
+
else
|
|
83
|
+
where_clause = "is_tlm = #{is_tlm}"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
meta_ple = nil
|
|
87
|
+
packet_count = 0
|
|
88
|
+
batch_size = 100
|
|
89
|
+
batch_count = 0
|
|
90
|
+
loop do
|
|
91
|
+
ples = PacketLogEntry.where(where_clause)
|
|
92
|
+
ples = ples.where(:meta_id => meta_ids) if meta_ids
|
|
93
|
+
if start_time <= end_time
|
|
94
|
+
ples = ples.where("time >= ?", start_time)
|
|
95
|
+
ples = ples.where("time <= ?", end_time)
|
|
96
|
+
ples = ples.order(time: :asc)
|
|
97
|
+
else
|
|
98
|
+
ples = ples.where("time >= ?", end_time)
|
|
99
|
+
ples = ples.where("time <= ?", start_time)
|
|
100
|
+
ples = ples.order(time: :desc)
|
|
101
|
+
end
|
|
102
|
+
ples = ples.limit(batch_size).offset(batch_count * batch_size)
|
|
103
|
+
break if ples.length <= 0
|
|
104
|
+
|
|
105
|
+
ples.each do |ple|
|
|
106
|
+
if !meta_ple or ple.meta_id != meta_ple.id
|
|
107
|
+
meta_ple = PacketLogEntry.find(ple.meta_id)
|
|
108
|
+
meta_packet = read_packet_from_ple(meta_ple)
|
|
109
|
+
if meta_packet
|
|
110
|
+
begin
|
|
111
|
+
interface.write(meta_packet)
|
|
112
|
+
packet_count += 1
|
|
113
|
+
rescue Exception
|
|
114
|
+
Cosmos::Logger.error("Request ended with meta packet write error")
|
|
115
|
+
break
|
|
116
|
+
end
|
|
117
|
+
else
|
|
118
|
+
Cosmos::Logger.error("No Meta Packet Read: #{meta_ple.inspect}")
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
if meta_ple.id != ple.id
|
|
123
|
+
packet = read_packet_from_ple(ple)
|
|
124
|
+
if packet
|
|
125
|
+
begin
|
|
126
|
+
interface.write(packet)
|
|
127
|
+
packet_count += 1
|
|
128
|
+
rescue Exception
|
|
129
|
+
Cosmos::Logger.error("Request ended with write error")
|
|
130
|
+
break
|
|
131
|
+
end
|
|
132
|
+
else
|
|
133
|
+
Cosmos::Logger.error("No Packet Read: #{ple.inspect}")
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
batch_count += 1
|
|
139
|
+
end
|
|
140
|
+
Cosmos::Logger.info("Request fully served #{packet_count} packets")
|
|
141
|
+
end
|
|
142
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
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 File.expand_path('../../config/environment', __FILE__)
|
|
12
|
+
require 'dart_common'
|
|
13
|
+
require 'dart_logging'
|
|
14
|
+
require 'childprocess'
|
|
15
|
+
require 'dart_database_cleaner'
|
|
16
|
+
|
|
17
|
+
class Dart
|
|
18
|
+
include DartCommon
|
|
19
|
+
|
|
20
|
+
@@force_cleanup = false
|
|
21
|
+
def self.force_cleanup=(value)
|
|
22
|
+
@@force_cleanup = value
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Start all the DART processes:
|
|
26
|
+
# 1. Ingester - writes all packets to the DART log file
|
|
27
|
+
# 2. Reducer - reduces decommutated data by minute, hour, and day
|
|
28
|
+
# 3. Stream Server - TCPIP server which handles requests for raw data
|
|
29
|
+
# streamed from the packet log binary file
|
|
30
|
+
# 4. Decom Server - JSON DRB server which handles requests for decommutated
|
|
31
|
+
# or reduced data from the database
|
|
32
|
+
# 5..n Worker - Decommutates data from the packet log binary file into the DB
|
|
33
|
+
def run
|
|
34
|
+
Cosmos::Logger.level = Cosmos::Logger::INFO
|
|
35
|
+
dart_logging = DartLogging.new('dart')
|
|
36
|
+
|
|
37
|
+
# Cleanup the database before starting processes
|
|
38
|
+
DartDatabaseCleaner.clean(@@force_cleanup)
|
|
39
|
+
|
|
40
|
+
ruby_process_name = ENV['DART_RUBY']
|
|
41
|
+
if RUBY_ENGINE != 'ruby'
|
|
42
|
+
ruby_process_name ||= 'jruby'
|
|
43
|
+
else
|
|
44
|
+
ruby_process_name ||= 'ruby'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
num_workers = ENV['DART_NUM_WORKERS']
|
|
48
|
+
num_workers ||= 1
|
|
49
|
+
num_workers = num_workers.to_i
|
|
50
|
+
|
|
51
|
+
process_definitions = [
|
|
52
|
+
[ruby_process_name, File.join(__dir__, 'dart_ingester.rb')],
|
|
53
|
+
[ruby_process_name, File.join(__dir__, 'dart_reducer.rb')],
|
|
54
|
+
[ruby_process_name, File.join(__dir__, 'dart_stream_server.rb')],
|
|
55
|
+
[ruby_process_name, File.join(__dir__, 'dart_decom_server.rb')]
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
num_workers.times do |index|
|
|
59
|
+
process_definitions << [ruby_process_name, File.join(__dir__, 'dart_worker.rb'), index.to_s, num_workers.to_s]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
processes = []
|
|
63
|
+
p_mutex = Mutex.new
|
|
64
|
+
|
|
65
|
+
# Start all the processes.rb
|
|
66
|
+
Cosmos::Logger.info("Dart starting each process...")
|
|
67
|
+
|
|
68
|
+
process_definitions.each do |p|
|
|
69
|
+
Cosmos::Logger.info("Starting: #{p.join(' ')}")
|
|
70
|
+
processes << ChildProcess.build(*p)
|
|
71
|
+
processes[-1].start
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Setup signal handlers to shutdown cleanly
|
|
75
|
+
["TERM", "INT"].each do |sig|
|
|
76
|
+
Signal.trap(sig) do
|
|
77
|
+
@shutdown = true
|
|
78
|
+
Thread.new do
|
|
79
|
+
p_mutex.synchronize do
|
|
80
|
+
Cosmos::Logger.info("Shutting down processes...")
|
|
81
|
+
processes.each_with_index do |p, index|
|
|
82
|
+
Thread.new do
|
|
83
|
+
Cosmos::Logger.info("Soft Shutting down process: #{process_definitions[index].join(' ')}")
|
|
84
|
+
Process.kill("SIGINT", p.pid)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
sleep(2)
|
|
88
|
+
processes.each_with_index do |p, index|
|
|
89
|
+
unless p.exited?
|
|
90
|
+
Cosmos::Logger.info("Hard Shutting down process: #{process_definitions[index].join(' ')}")
|
|
91
|
+
p.stop
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
@shutdown_complete = true
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Monitor processes and respawn if died
|
|
101
|
+
@shutdown = false
|
|
102
|
+
@shutdown_complete = false
|
|
103
|
+
Cosmos::Logger.info("Dart Monitoring processes...")
|
|
104
|
+
loop do
|
|
105
|
+
p_mutex.synchronize do
|
|
106
|
+
processes.each_with_index do |p, index|
|
|
107
|
+
break if @shutdown
|
|
108
|
+
unless p.alive?
|
|
109
|
+
# Respawn process
|
|
110
|
+
Cosmos::Logger.error("Unexpected process died... respawning! #{process_definitions[index].join(' ')}")
|
|
111
|
+
processes[index] = ChildProcess.build(*process_definitions[index])
|
|
112
|
+
processes[index].leader = true
|
|
113
|
+
processes[index].start
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
break if @shutdown
|
|
118
|
+
sleep(1)
|
|
119
|
+
break if @shutdown
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
loop do
|
|
123
|
+
break if @shutdown_complete
|
|
124
|
+
sleep(1)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
ensure
|
|
128
|
+
Cosmos::Logger.info("Dart shutdown complete")
|
|
129
|
+
shutdown_cmd_tlm()
|
|
130
|
+
dart_logging.stop
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def self.run
|
|
134
|
+
Cosmos.catch_fatal_exception do
|
|
135
|
+
a = self.new
|
|
136
|
+
a.run
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
parser = DartCommon.handle_argv(false)
|
|
142
|
+
parser.on("--force-cleanup", "Force database cleanup") do |arg|
|
|
143
|
+
Dart.force_cleanup = true
|
|
144
|
+
end
|
|
145
|
+
parser.parse!
|
|
@@ -0,0 +1,39 @@
|
|
|
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 File.expand_path('../../config/environment', __FILE__)
|
|
12
|
+
require 'dart_common'
|
|
13
|
+
require 'dart_decom_query'
|
|
14
|
+
|
|
15
|
+
Cosmos.catch_fatal_exception do
|
|
16
|
+
DartCommon.handle_argv
|
|
17
|
+
|
|
18
|
+
Cosmos::Logger.level = Cosmos::Logger::INFO
|
|
19
|
+
dart_logging = DartLogging.new('dart_decom_server')
|
|
20
|
+
|
|
21
|
+
json_drb = Cosmos::JsonDRb.new
|
|
22
|
+
json_drb.acl = Cosmos::System.acl if Cosmos::System.acl
|
|
23
|
+
begin
|
|
24
|
+
json_drb.method_whitelist = ['query', 'item_names']
|
|
25
|
+
begin
|
|
26
|
+
json_drb.start_service(Cosmos::System.listen_hosts['DART_DECOM'],
|
|
27
|
+
Cosmos::System.ports['DART_DECOM'], DartDecomQuery.new)
|
|
28
|
+
rescue Exception
|
|
29
|
+
raise Cosmos::FatalError.new("Error starting JsonDRb on port #{Cosmos::System.ports['DART_DECOM']}.\nPerhaps another DART Decom Server is already running?")
|
|
30
|
+
end
|
|
31
|
+
["TERM", "INT"].each {|sig| Signal.trap(sig) {exit}}
|
|
32
|
+
Cosmos::Logger.info("Dart Decom Server Started...")
|
|
33
|
+
sleep(1) while true
|
|
34
|
+
rescue Interrupt
|
|
35
|
+
Cosmos::Logger.info("Dart Decom Server Closing...")
|
|
36
|
+
json_drb.stop_service
|
|
37
|
+
dart_logging.stop
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
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 code must be run on the database server
|
|
12
|
+
# The file to be imported should be placed in its final storage location
|
|
13
|
+
# Note that it is imported in place with algorithms that attempt to prevent
|
|
14
|
+
# duplicate creation of Database entries
|
|
15
|
+
|
|
16
|
+
require 'ostruct'
|
|
17
|
+
require 'optparse'
|
|
18
|
+
require 'cosmos/version'
|
|
19
|
+
|
|
20
|
+
options = OpenStruct.new
|
|
21
|
+
options.force = false
|
|
22
|
+
|
|
23
|
+
parser = OptionParser.new do |option_parser|
|
|
24
|
+
option_parser.banner = "Usage: dart_import filename"
|
|
25
|
+
option_parser.separator("")
|
|
26
|
+
|
|
27
|
+
# Create the help option
|
|
28
|
+
option_parser.on("-h", "--help", "Show this message") do
|
|
29
|
+
puts option_parser
|
|
30
|
+
exit(0)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Create the version option
|
|
34
|
+
option_parser.on("-v", "--version", "Show version") do
|
|
35
|
+
puts "COSMOS Version: #{COSMOS_VERSION}"
|
|
36
|
+
puts "User Version: #{USER_VERSION}" if defined? USER_VERSION
|
|
37
|
+
exit(0)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Create the system option
|
|
41
|
+
option_parser.on("--system FILE", "Use an alternative system.txt file") do |arg|
|
|
42
|
+
System.instance(File.join(USERPATH, 'config', 'system', arg))
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Create the force option
|
|
46
|
+
option_parser.on("-f", "--force", "Force parsing entire file") do
|
|
47
|
+
options.force = true
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
parser.parse!(ARGV)
|
|
52
|
+
unless ARGV[0]
|
|
53
|
+
puts parser
|
|
54
|
+
exit(1)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
require File.expand_path('../../config/environment', __FILE__)
|
|
58
|
+
require 'dart_importer'
|
|
59
|
+
|
|
60
|
+
Cosmos.catch_fatal_exception do
|
|
61
|
+
code = DartImporter.new.import(File.expand_path(ARGV[0]), options.force)
|
|
62
|
+
exit(code)
|
|
63
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
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 File.expand_path('../../config/environment', __FILE__)
|
|
12
|
+
require 'dart_packet_log_writer'
|
|
13
|
+
require 'dart_logging'
|
|
14
|
+
|
|
15
|
+
# Handles packets by writing them to the dart log file. New SYSTEM META packets
|
|
16
|
+
# cause a new log file to be started.
|
|
17
|
+
class DartInterfaceThread < Cosmos::InterfaceThread
|
|
18
|
+
attr_writer :packet_log_writer
|
|
19
|
+
attr_writer :log_type
|
|
20
|
+
|
|
21
|
+
def handle_packet(packet)
|
|
22
|
+
if packet.target_name == 'SYSTEM'.freeze and packet.packet_name == 'META'.freeze
|
|
23
|
+
Cosmos::Logger.info("#{@log_type}: #{packet.target_name} #{packet.packet_name}")
|
|
24
|
+
# Update Current Value Table Used By Packet Log Writer
|
|
25
|
+
cvt_packet = Cosmos::System.telemetry.update!(packet.target_name, packet.packet_name, packet.buffer)
|
|
26
|
+
cvt_packet.received_time = packet.received_time
|
|
27
|
+
@packet_log_writer.start
|
|
28
|
+
@packet_log_writer.write(cvt_packet)
|
|
29
|
+
else
|
|
30
|
+
@packet_log_writer.write(packet)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
Cosmos.catch_fatal_exception do
|
|
36
|
+
DartCommon.handle_argv
|
|
37
|
+
|
|
38
|
+
Cosmos::Logger.level = Cosmos::Logger::INFO
|
|
39
|
+
dart_logging = DartLogging.new('dart_ingester')
|
|
40
|
+
|
|
41
|
+
tlm_log_writer = DartPacketLogWriter.new(
|
|
42
|
+
:TLM, # Log telemetry
|
|
43
|
+
'dart_', # Put dart_ in the log file name
|
|
44
|
+
true, # Enable logging
|
|
45
|
+
nil, # Don't cycle on time
|
|
46
|
+
2_000_000_000, # Cycle the log at 2GB
|
|
47
|
+
Cosmos::System.paths['DART_DATA']) # Log into the DART_DATA dir
|
|
48
|
+
|
|
49
|
+
tlm_interface = Cosmos::TcpipClientInterface.new(
|
|
50
|
+
Cosmos::System.connect_hosts['CTS_PREIDENTIFIED'], # Connect to the CTS machine
|
|
51
|
+
nil, # Don't write commands
|
|
52
|
+
Cosmos::System.ports['CTS_PREIDENTIFIED'], # Read telemetry from the CTS port
|
|
53
|
+
nil, # No write timeout
|
|
54
|
+
nil, # No read timeout
|
|
55
|
+
'PREIDENTIFIED') # PREIDENTIFIED protocol
|
|
56
|
+
|
|
57
|
+
tlm_thread = DartInterfaceThread.new(tlm_interface)
|
|
58
|
+
tlm_thread.packet_log_writer = tlm_log_writer
|
|
59
|
+
tlm_thread.log_type = :TLM
|
|
60
|
+
|
|
61
|
+
cmd_log_writer = DartPacketLogWriter.new(
|
|
62
|
+
:CMD, # Log commands
|
|
63
|
+
'dart_', # Put dart_ in the log file name
|
|
64
|
+
true, # Enable logging
|
|
65
|
+
nil, # Don't cycle on time
|
|
66
|
+
2_000_000_000, # Cycle the log at 2GB
|
|
67
|
+
Cosmos::System.paths['DART_DATA']) # Log into the DART_DATA dir
|
|
68
|
+
|
|
69
|
+
cmd_interface = Cosmos::TcpipClientInterface.new(
|
|
70
|
+
Cosmos::System.connect_hosts['CTS_CMD_ROUTER'], # Connect to the CTS machine
|
|
71
|
+
nil, # Don't write commands
|
|
72
|
+
Cosmos::System.ports['CTS_CMD_ROUTER'], # Read commands from the CMD port
|
|
73
|
+
nil, # No write timeout
|
|
74
|
+
nil, # No read timeout
|
|
75
|
+
'PREIDENTIFIED') # PREIDENTIFIED protocol
|
|
76
|
+
|
|
77
|
+
cmd_thread = DartInterfaceThread.new(cmd_interface)
|
|
78
|
+
cmd_thread.packet_log_writer = cmd_log_writer
|
|
79
|
+
cmd_thread.log_type = :CMD
|
|
80
|
+
|
|
81
|
+
begin
|
|
82
|
+
tlm_thread.start
|
|
83
|
+
cmd_thread.start
|
|
84
|
+
sleep(1) while true
|
|
85
|
+
rescue Interrupt
|
|
86
|
+
tlm_thread.stop
|
|
87
|
+
cmd_thread.stop
|
|
88
|
+
tlm_log_writer.shutdown
|
|
89
|
+
cmd_log_writer.shutdown
|
|
90
|
+
dart_logging.stop
|
|
91
|
+
end
|
|
92
|
+
end
|