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
|
@@ -22,17 +22,15 @@ require 'cosmos/tools/tlm_grapher/data_objects/xy_data_object'
|
|
|
22
22
|
require 'cosmos/tools/tlm_grapher/data_objects/singlexy_data_object'
|
|
23
23
|
|
|
24
24
|
module Cosmos
|
|
25
|
-
|
|
26
25
|
# Provides capabilities to read an ascii file that lists
|
|
27
26
|
# the details for a set of plots drawn in tabs.
|
|
28
27
|
class TabbedPlotsConfig
|
|
29
|
-
|
|
30
28
|
# Default Values
|
|
31
29
|
DEFAULT_SECONDS_PLOTTED = 100.0
|
|
32
30
|
DEFAULT_POINTS_SAVED = 1000000
|
|
33
31
|
DEFAULT_POINTS_PLOTTED = 1000
|
|
34
32
|
DEFAULT_REFRESH_RATE_HZ = 10.0
|
|
35
|
-
DEFAULT_CTS_TIMEOUT =
|
|
33
|
+
DEFAULT_CTS_TIMEOUT = 60.0
|
|
36
34
|
|
|
37
35
|
# Gives access to the array of tabs defined by the configuration file
|
|
38
36
|
attr_accessor :tabs
|
|
@@ -445,7 +443,5 @@ module Cosmos
|
|
|
445
443
|
end
|
|
446
444
|
end
|
|
447
445
|
end
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
end # module Cosmos
|
|
446
|
+
end
|
|
447
|
+
end
|
|
@@ -0,0 +1,159 @@
|
|
|
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
|
+
|
|
17
|
+
# Thread used to gather telemetry from DART and process it using a TabbedPlotsDefinition
|
|
18
|
+
class TabbedPlotsDartThread
|
|
19
|
+
# Array of exceptions that occurred
|
|
20
|
+
attr_reader :errors
|
|
21
|
+
|
|
22
|
+
# Create a new TabbedPlotsLogfileThread
|
|
23
|
+
def initialize(tabbed_plots_config, progress_dialog = nil, time_start = nil, time_end = nil, meta_filters = [])
|
|
24
|
+
super()
|
|
25
|
+
@tabbed_plots_config = tabbed_plots_config
|
|
26
|
+
@errors = []
|
|
27
|
+
@done = false
|
|
28
|
+
@cancel = false
|
|
29
|
+
|
|
30
|
+
if progress_dialog
|
|
31
|
+
progress_dialog.cancel_callback = method(:kill)
|
|
32
|
+
progress_dialog.enable_cancel_button
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
@thread = Thread.new do
|
|
36
|
+
begin
|
|
37
|
+
# Determine required queries for DART
|
|
38
|
+
required_queries = []
|
|
39
|
+
@tabbed_plots_config.mu_synchronize do
|
|
40
|
+
@tabbed_plots_config.each_data_object do |data_object|
|
|
41
|
+
required_queries.concat(data_object.processed_items)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
required_queries.uniq!
|
|
45
|
+
|
|
46
|
+
# Execute each query
|
|
47
|
+
results = {}
|
|
48
|
+
server = JsonDRbObject.new(System.connect_hosts['DART_DECOM'], System.ports['DART_DECOM'])
|
|
49
|
+
time_start = Time.utc(1970, 1, 1) unless time_start
|
|
50
|
+
time_end = Time.now unless time_end
|
|
51
|
+
progress_dialog.set_step_progress(0) if progress_dialog
|
|
52
|
+
index = 0
|
|
53
|
+
required_queries.each do |target_name, packet_name, item_name, value_type, array_index, dart_reduction, dart_reduced_type|
|
|
54
|
+
begin
|
|
55
|
+
break if @cancel
|
|
56
|
+
value_type = :CONVERTED if !value_type or value_type != :RAW
|
|
57
|
+
# TODO: Support FORMATTED and WITH_UNITS by iterating and modifying results
|
|
58
|
+
query_string = "#{target_name} #{packet_name} #{item_name} #{value_type} #{array_index} #{dart_reduction} #{dart_reduced_type}"
|
|
59
|
+
progress_dialog.append_text("Querying #{query_string}") if progress_dialog
|
|
60
|
+
request = {}
|
|
61
|
+
request['start_time_sec'] = time_start.tv_sec
|
|
62
|
+
request['start_time_usec'] = time_start.tv_usec
|
|
63
|
+
request['end_time_sec'] = time_end.tv_sec
|
|
64
|
+
request['end_time_usec'] = time_end.tv_usec
|
|
65
|
+
request['item'] = [target_name, packet_name, item_name]
|
|
66
|
+
request['reduction'] = dart_reduction.to_s
|
|
67
|
+
request['cmd_tlm'] = 'TLM'
|
|
68
|
+
request['offset'] = 0
|
|
69
|
+
request['limit'] = 10000
|
|
70
|
+
if dart_reduction == :NONE
|
|
71
|
+
request['value_type'] = value_type.to_s
|
|
72
|
+
else
|
|
73
|
+
request['value_type'] = value_type.to_s + "_#{dart_reduced_type}"
|
|
74
|
+
end
|
|
75
|
+
request['meta_filters'] = meta_filters unless meta_filters.empty?
|
|
76
|
+
query_result = server.query(request)
|
|
77
|
+
result = query_result
|
|
78
|
+
if array_index
|
|
79
|
+
result = []
|
|
80
|
+
query_result.each do |qr|
|
|
81
|
+
result << [qr[0][array_index], qr[1], qr[2], qr[3], qr[4]]
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
results[query_string] = result
|
|
85
|
+
progress_dialog.append_text(" Received #{result.length} values") if progress_dialog
|
|
86
|
+
progress_dialog.set_step_progress((index + 1).to_f / required_queries.length) if progress_dialog
|
|
87
|
+
rescue Exception => error
|
|
88
|
+
@errors << error
|
|
89
|
+
break if @cancel
|
|
90
|
+
progress_dialog.append_text("Error querying #{query_string} : #{error.class}:#{error.message}\n#{error.backtrace.join("\n")}\n", 2) if progress_dialog
|
|
91
|
+
# If a progress dialog is shown we can't just bail on this error or
|
|
92
|
+
# it will close and the user will have no idea what happened
|
|
93
|
+
# Thus we'll spin here waiting for them to close the dialog
|
|
94
|
+
break if @cancel
|
|
95
|
+
if progress_dialog
|
|
96
|
+
sleep(0.1) until progress_dialog.complete?
|
|
97
|
+
end
|
|
98
|
+
break # Bail out because something bad happened
|
|
99
|
+
end
|
|
100
|
+
index += 1
|
|
101
|
+
end
|
|
102
|
+
progress_dialog.set_step_progress(1.0) if progress_dialog and not @cancel
|
|
103
|
+
progress_dialog.set_overall_progress(0.5) if progress_dialog and not @cancel
|
|
104
|
+
|
|
105
|
+
# Fill each data object with the DART data
|
|
106
|
+
# For now assume all results are time correlated (they should be)
|
|
107
|
+
@tabbed_plots_config.mu_synchronize do
|
|
108
|
+
@tabbed_plots_config.each_data_object do |data_object|
|
|
109
|
+
do_results = []
|
|
110
|
+
data_object.processed_items.each do |target_name, packet_name, item_name, value_type, array_index, dart_reduction, dart_reduced_type|
|
|
111
|
+
query_string = "#{target_name} #{packet_name} #{item_name} #{value_type} #{array_index} #{dart_reduction} #{dart_reduced_type}"
|
|
112
|
+
do_results << results[query_string]
|
|
113
|
+
end
|
|
114
|
+
data_object.process_dart(do_results)
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
rescue Exception => error
|
|
119
|
+
@errors << error
|
|
120
|
+
return if @cancel
|
|
121
|
+
progress_dialog.append_text("DART Thread Error #{error.class}:#{error.message}\n#{error.backtrace.join("\n")}\n", 2) if progress_dialog
|
|
122
|
+
# If a progress dialog is shown we can't just bail on this error or
|
|
123
|
+
# it will close and the user will have no idea what happened
|
|
124
|
+
# Thus we'll spin here waiting for them to close the dialog
|
|
125
|
+
if progress_dialog
|
|
126
|
+
sleep(0.1) until progress_dialog.complete? or @cancel
|
|
127
|
+
end
|
|
128
|
+
ensure
|
|
129
|
+
if !@cancel
|
|
130
|
+
progress_dialog.complete if progress_dialog
|
|
131
|
+
sleep(0.1) # Give the user a chance to see something if we process really fast
|
|
132
|
+
end
|
|
133
|
+
@done = true
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end # def initialize
|
|
137
|
+
|
|
138
|
+
# Indicates if processing is complete
|
|
139
|
+
def done?
|
|
140
|
+
@done
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Kills the log file processing thread
|
|
144
|
+
def kill(progress_dialog = nil)
|
|
145
|
+
@cancel = true
|
|
146
|
+
Cosmos.kill_thread(self, @thread)
|
|
147
|
+
progress_dialog.complete if progress_dialog
|
|
148
|
+
@thread = nil
|
|
149
|
+
@done = true
|
|
150
|
+
return true, false
|
|
151
|
+
end # def kill
|
|
152
|
+
|
|
153
|
+
def graceful_kill
|
|
154
|
+
# Just to remove warnings
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end # class TabbedPlotsLogfileThread
|
|
158
|
+
|
|
159
|
+
end # module Cosmos
|
|
@@ -15,10 +15,12 @@ require 'cosmos/packet_logs/packet_log_reader'
|
|
|
15
15
|
require 'cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config'
|
|
16
16
|
require 'cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread'
|
|
17
17
|
require 'cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread'
|
|
18
|
+
require 'cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread'
|
|
18
19
|
require 'cosmos/gui/widgets/realtime_button_bar'
|
|
19
20
|
require 'cosmos/gui/dialogs/exception_list_dialog'
|
|
20
21
|
require 'cosmos/gui/dialogs/packet_log_dialog'
|
|
21
22
|
require 'cosmos/gui/dialogs/progress_dialog'
|
|
23
|
+
require 'cosmos/gui/dialogs/dart_dialog'
|
|
22
24
|
require 'cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots'
|
|
23
25
|
|
|
24
26
|
module Cosmos
|
|
@@ -42,6 +44,7 @@ module Cosmos
|
|
|
42
44
|
complete_initialize()
|
|
43
45
|
|
|
44
46
|
# Define instance variables
|
|
47
|
+
@need_reset = false
|
|
45
48
|
@log_filenames = []
|
|
46
49
|
@log_dir = System.paths['LOGS']
|
|
47
50
|
@log_dir += '/' unless @log_dir[-1..-1] == '\\' or @log_dir[-1..-1] == '/'
|
|
@@ -94,6 +97,12 @@ module Cosmos
|
|
|
94
97
|
@file_process.statusTip = tr('Open Log File')
|
|
95
98
|
@file_process.connect(SIGNAL('triggered()')) { on_file_process_log() }
|
|
96
99
|
|
|
100
|
+
@file_dart = Qt::Action.new(tr('&Query DART Database'), self)
|
|
101
|
+
@file_dart_keyseq = Qt::KeySequence.new(tr('Ctrl+D'))
|
|
102
|
+
@file_dart.shortcut = @file_dart_keyseq
|
|
103
|
+
@file_dart.statusTip = tr('Query DART Database')
|
|
104
|
+
@file_dart.connect(SIGNAL('triggered()')) { on_file_dart() }
|
|
105
|
+
|
|
97
106
|
@file_load = Qt::Action.new(Cosmos.get_icon('open.png'), tr('&Load Config'), self)
|
|
98
107
|
@file_load.statusTip = tr('Load Saved Configuration')
|
|
99
108
|
@file_load.connect(SIGNAL('triggered()')) { on_file_load_config() }
|
|
@@ -208,6 +217,7 @@ module Cosmos
|
|
|
208
217
|
# File Menu
|
|
209
218
|
@file_menu = menuBar.addMenu(tr('&File'))
|
|
210
219
|
@file_menu.addAction(@file_process)
|
|
220
|
+
@file_menu.addAction(@file_dart)
|
|
211
221
|
@file_menu.addSeparator()
|
|
212
222
|
@file_menu.addAction(@file_load)
|
|
213
223
|
@file_menu.addAction(@file_save)
|
|
@@ -512,9 +522,9 @@ module Cosmos
|
|
|
512
522
|
@time_start = dialog.time_start
|
|
513
523
|
@time_end = dialog.time_end
|
|
514
524
|
handle_stop()
|
|
525
|
+
@need_reset = true
|
|
515
526
|
System.telemetry.reset
|
|
516
527
|
@tabbed_plots.reset_all_data_objects
|
|
517
|
-
@realtime_button_bar.state = 'Log File'
|
|
518
528
|
@packet_log_reader = dialog.packet_log_reader
|
|
519
529
|
@log_filenames = dialog.filenames.clone
|
|
520
530
|
filenames = dialog.filenames.sort
|
|
@@ -538,6 +548,42 @@ module Cosmos
|
|
|
538
548
|
dialog.dispose
|
|
539
549
|
end # def on_file_process_log
|
|
540
550
|
|
|
551
|
+
# Handles querying data from DART
|
|
552
|
+
def on_file_dart
|
|
553
|
+
paused = @tabbed_plots.paused?
|
|
554
|
+
@tabbed_plots.pause
|
|
555
|
+
dialog = DartDialog.new(self,
|
|
556
|
+
'Query DART Database:')
|
|
557
|
+
dialog.time_start = @time_start
|
|
558
|
+
dialog.time_end = @time_end
|
|
559
|
+
result = dialog.exec
|
|
560
|
+
if result != 0
|
|
561
|
+
@time_start = dialog.time_start
|
|
562
|
+
@time_end = dialog.time_end
|
|
563
|
+
@meta_filters = dialog.meta_filters
|
|
564
|
+
handle_stop()
|
|
565
|
+
@need_reset = true
|
|
566
|
+
System.telemetry.reset
|
|
567
|
+
@tabbed_plots.reset_all_data_objects
|
|
568
|
+
|
|
569
|
+
ProgressDialog.execute(self, 'DART Query Progress', 500, 300) do |progress_dialog|
|
|
570
|
+
dart_thread = TabbedPlotsDartThread.new(@tabbed_plots_config,
|
|
571
|
+
progress_dialog,
|
|
572
|
+
@time_start,
|
|
573
|
+
@time_end,
|
|
574
|
+
@meta_filters)
|
|
575
|
+
sleep(0.1) until dart_thread.done?
|
|
576
|
+
progress_dialog.close_done
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
@tabbed_plots.redraw_plots(true, true)
|
|
580
|
+
@tabbed_plots.update
|
|
581
|
+
else
|
|
582
|
+
@tabbed_plots.resume unless paused
|
|
583
|
+
end
|
|
584
|
+
dialog.dispose
|
|
585
|
+
end # def on_file_process_log
|
|
586
|
+
|
|
541
587
|
# Handles loading a configuration file
|
|
542
588
|
def on_file_load_config
|
|
543
589
|
paused = @tabbed_plots.paused?
|
|
@@ -937,7 +983,8 @@ module Cosmos
|
|
|
937
983
|
@realtime_button_bar.state = 'Running'
|
|
938
984
|
else
|
|
939
985
|
System.load_configuration
|
|
940
|
-
if @
|
|
986
|
+
if @need_reset
|
|
987
|
+
@need_reset = false
|
|
941
988
|
System.telemetry.reset
|
|
942
989
|
@tabbed_plots.reset_all_data_objects
|
|
943
990
|
end
|
|
@@ -258,6 +258,9 @@ module Cosmos
|
|
|
258
258
|
|
|
259
259
|
begin
|
|
260
260
|
parser = ConfigParser.new("http://cosmosrb.com/docs/screens/")
|
|
261
|
+
parser.instance_variable_set(:@original_target_name, @original_target_name)
|
|
262
|
+
name = @substitute ? @substitute : @original_target_name
|
|
263
|
+
parser.instance_variable_set(:@target_name, name)
|
|
261
264
|
parser.parse_file(filename) do |keyword, parameters|
|
|
262
265
|
|
|
263
266
|
if keyword
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
# as published by the Free Software Foundation; version 3 with
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
|
-
require 'cosmos'
|
|
12
|
-
|
|
13
11
|
module Cosmos
|
|
14
12
|
# Parses the Telemetry Viewer configuration file and builds up the list
|
|
15
13
|
# of available screens to display.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
require 'cosmos/tools/tlm_viewer/widgets/array_widget.rb'
|
|
3
3
|
require 'cosmos/tools/tlm_viewer/widgets/block_widget.rb'
|
|
4
4
|
require 'cosmos/tools/tlm_viewer/widgets/button_widget.rb'
|
|
5
|
+
require 'cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb'
|
|
5
6
|
require 'cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb'
|
|
6
7
|
require 'cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb'
|
|
7
8
|
require 'cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb'
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 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 BackgroundbuttonWidget class.
|
|
12
|
+
|
|
13
|
+
require 'cosmos'
|
|
14
|
+
require 'cosmos/tools/tlm_viewer/widgets/widget'
|
|
15
|
+
require 'cosmos/gui/utilities/script_module_gui'
|
|
16
|
+
|
|
17
|
+
module Cosmos
|
|
18
|
+
# Run user defined code in the background. This means that all code which
|
|
19
|
+
# interacts with the GUI MUST be wrapped in Qt.execute_in_main_thread.
|
|
20
|
+
class BackgroundbuttonWidget < Qt::PushButton
|
|
21
|
+
include Widget
|
|
22
|
+
|
|
23
|
+
def initialize(parent_layout, button_text, string_to_eval)
|
|
24
|
+
super()
|
|
25
|
+
setText(button_text.to_s)
|
|
26
|
+
connect(SIGNAL('clicked()')) { execute(string_to_eval.to_s) }
|
|
27
|
+
parent_layout.addWidget(self) if parent_layout
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def execute(code)
|
|
31
|
+
# Disable the button while the code is executed to avoid thrashing
|
|
32
|
+
setEnabled(false)
|
|
33
|
+
# Spawn a new thread to avoid blocking the GUI.
|
|
34
|
+
Thread.new do
|
|
35
|
+
begin
|
|
36
|
+
@screen.instance_eval(code)
|
|
37
|
+
rescue DRb::DRbConnError
|
|
38
|
+
Qt.execute_in_main_thread do
|
|
39
|
+
Qt::MessageBox.warning(parent.parentWidget, 'Error', "Error Connecting to Command and Telemetry Server")
|
|
40
|
+
end
|
|
41
|
+
rescue Exception => error
|
|
42
|
+
message = error.message
|
|
43
|
+
if error.message.include?("Qt methods cannot be called")
|
|
44
|
+
message = "Error executing button code:\n#{code}\n\nYou must wrap calls to the GUI in Qt.execute_in_main_thread { <GUI Code> }"
|
|
45
|
+
end
|
|
46
|
+
Qt.execute_in_main_thread do
|
|
47
|
+
Qt::MessageBox.warning(parent.parentWidget, 'Error', "#{error.class} : #{message}")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
Qt.execute_in_main_thread { self.setEnabled(true) }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -15,11 +15,13 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
|
|
|
15
15
|
require 'cosmos/gui/utilities/script_module_gui'
|
|
16
16
|
|
|
17
17
|
module Cosmos
|
|
18
|
-
|
|
18
|
+
# Run user defined code in the GUI thread context. This means that user
|
|
19
|
+
# code should not block or take too long to execute as it will freeze
|
|
20
|
+
# the TlmViewer screen.
|
|
19
21
|
class ButtonWidget < Qt::PushButton
|
|
20
22
|
include Widget
|
|
21
23
|
|
|
22
|
-
def initialize
|
|
24
|
+
def initialize(parent_layout, button_text, string_to_eval)
|
|
23
25
|
super()
|
|
24
26
|
setText(button_text.to_s)
|
|
25
27
|
connect(SIGNAL('clicked()')) do
|
|
@@ -33,7 +35,5 @@ module Cosmos
|
|
|
33
35
|
end
|
|
34
36
|
parent_layout.addWidget(self) if parent_layout
|
|
35
37
|
end
|
|
36
|
-
|
|
37
38
|
end
|
|
38
|
-
|
|
39
|
-
end # module Cosmos
|
|
39
|
+
end
|
data/lib/cosmos/top_level.rb
CHANGED
data/lib/cosmos/utilities/crc.rb
CHANGED
|
@@ -96,6 +96,9 @@ module Cosmos
|
|
|
96
96
|
# to use the default seed set in the constructor.
|
|
97
97
|
# @return [Integer] The CRC value
|
|
98
98
|
|
|
99
|
+
# Bit reverse the 8 bit value
|
|
100
|
+
# @param value [Integer]
|
|
101
|
+
# @return [Integer] Bit reversed value
|
|
99
102
|
def bit_reverse_8(value)
|
|
100
103
|
BIT_REVERSE_TABLE[value & 0xFF]
|
|
101
104
|
end
|
data/lib/cosmos/utilities/csv.rb
CHANGED
|
@@ -39,13 +39,14 @@ module Cosmos
|
|
|
39
39
|
# message to the log and flushes it to force the write.
|
|
40
40
|
#
|
|
41
41
|
# @param message [String] Message to write to the log
|
|
42
|
-
def write(message)
|
|
42
|
+
def write(message, flush = false)
|
|
43
43
|
@mutex.synchronize do
|
|
44
44
|
if @file.nil? or @file.closed? or (not File.exist?(@filename))
|
|
45
45
|
start(false)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
@file.write(message)
|
|
49
|
+
@file.flush if flush
|
|
49
50
|
end
|
|
50
51
|
end
|
|
51
52
|
|
|
@@ -13,26 +13,27 @@ require 'cosmos/packets/structure'
|
|
|
13
13
|
require 'cosmos/system/system'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
17
|
-
# Update Packet for Simulated Targets
|
|
18
16
|
class Packet < Structure
|
|
19
17
|
attr_accessor :packet_rate
|
|
20
18
|
end
|
|
21
19
|
|
|
20
|
+
# Base class for all virtual COSMOS targets which must be implemented by
|
|
21
|
+
# a subclass. Provides a framework and helper methods to implement a
|
|
22
|
+
# virtual target which can cycle telemetry values and emit telemetry
|
|
23
|
+
# packets.
|
|
22
24
|
class SimulatedTarget
|
|
23
|
-
|
|
24
25
|
attr_accessor :tlm_packets
|
|
25
26
|
|
|
26
|
-
def initialize
|
|
27
|
+
def initialize(target_name)
|
|
27
28
|
@tlm_packets = {}
|
|
28
29
|
|
|
29
|
-
#Generate copy of telemetry packets for this target
|
|
30
|
+
# Generate copy of telemetry packets for this target
|
|
30
31
|
System.telemetry.packets(target_name).each do |name, packet|
|
|
31
32
|
@tlm_packets[name] = packet.clone
|
|
32
33
|
@tlm_packets[name].enable_method_missing
|
|
33
34
|
end
|
|
34
35
|
|
|
35
|
-
#Set id values
|
|
36
|
+
# Set id values
|
|
36
37
|
@tlm_packets.each do |name, packet|
|
|
37
38
|
ids = packet.id_items
|
|
38
39
|
ids.each do |id|
|
|
@@ -65,7 +66,7 @@ module Cosmos
|
|
|
65
66
|
def get_pending_packets(count_100hz)
|
|
66
67
|
pending_packets = []
|
|
67
68
|
|
|
68
|
-
#
|
|
69
|
+
# Determine if packets are due to be sent and add to pending
|
|
69
70
|
@tlm_packets.each do |name, packet|
|
|
70
71
|
if packet.packet_rate
|
|
71
72
|
if ((count_100hz % packet.packet_rate) == 0)
|
|
@@ -96,5 +97,4 @@ module Cosmos
|
|
|
96
97
|
updated_value
|
|
97
98
|
end
|
|
98
99
|
end
|
|
99
|
-
|
|
100
100
|
end
|