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
data/lib/cosmos/version.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# encoding: ascii-8bit
|
|
2
2
|
|
|
3
|
-
COSMOS_VERSION = '4.
|
|
3
|
+
COSMOS_VERSION = '4.2.0'
|
|
4
4
|
module Cosmos
|
|
5
5
|
module Version
|
|
6
6
|
MAJOR = '4'
|
|
7
|
-
MINOR = '
|
|
8
|
-
PATCH = '
|
|
9
|
-
BUILD = '
|
|
7
|
+
MINOR = '2'
|
|
8
|
+
PATCH = '0'
|
|
9
|
+
BUILD = 'a20c2452747369e5340a437a5652474bae0299e4'
|
|
10
10
|
end
|
|
11
|
-
VERSION = '4.
|
|
11
|
+
VERSION = '4.2.0'
|
|
12
12
|
end
|
data/lib/cosmos/win32/win32.rb
CHANGED
|
@@ -12,11 +12,7 @@ require 'cosmos/win32/win32_main'
|
|
|
12
12
|
require 'cosmos/packets/structure'
|
|
13
13
|
|
|
14
14
|
module Cosmos
|
|
15
|
-
|
|
16
|
-
# Win32 class
|
|
17
|
-
#
|
|
18
|
-
# This class implements the Win32
|
|
19
|
-
#
|
|
15
|
+
# Uses the Win32API to implement methods useful on Windows.
|
|
20
16
|
class Win32
|
|
21
17
|
# Create a file
|
|
22
18
|
def self.create_file(filename, desired_access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file = NULL)
|
|
@@ -132,10 +128,8 @@ module Cosmos
|
|
|
132
128
|
comm_timeouts.write('WriteTotalTimeoutConstant', write_total_timeout_constant)
|
|
133
129
|
comm_timeouts
|
|
134
130
|
end
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
end # module Cosmos
|
|
131
|
+
end
|
|
132
|
+
end
|
|
139
133
|
|
|
140
134
|
module QDA
|
|
141
135
|
module Filters
|
|
@@ -313,7 +307,7 @@ module QDA
|
|
|
313
307
|
end
|
|
314
308
|
|
|
315
309
|
class Win32popenIO
|
|
316
|
-
def initialize
|
|
310
|
+
def initialize(hRead, hWrite, hError)
|
|
317
311
|
@hRead = hRead
|
|
318
312
|
@hWrite = hWrite
|
|
319
313
|
@hError = hError
|
data/run_gui_tests.bat
CHANGED
|
@@ -4,6 +4,7 @@ call bundle exec ruby autohotkey\tools\CmdSequenceAHK -w 650 -t 650
|
|
|
4
4
|
call bundle exec ruby autohotkey\tools\CmdSequenceAHK2 -w 650 -t 650 -r run_sequence.txt -o procedures
|
|
5
5
|
call bundle exec ruby autohotkey\tools\CmdTlmServerAHK -x 50 -y 50 -w 900 -t 1000
|
|
6
6
|
call bundle exec ruby autohotkey\tools\CmdTlmServerAHK2 -w 900 -t 1000 -p -n -c cmd_tlm_server.txt
|
|
7
|
+
call bundle exec ruby autohotkey\tools\ConfigEditorAHK -w 1200 -t 800
|
|
7
8
|
call bundle exec ruby autohotkey\tools\DataViewerAHK -w 600 -t 800
|
|
8
9
|
call bundle exec ruby autohotkey\tools\HandbookCreatorAHK
|
|
9
10
|
call bundle exec ruby autohotkey\tools\LauncherAHK
|
|
@@ -11,7 +12,7 @@ call bundle exec ruby autohotkey\tools\LimitsMonitorAHK
|
|
|
11
12
|
call bundle exec ruby autohotkey\tools\OpenGLBuilderAHK -w 600 -t 600
|
|
12
13
|
call bundle exec ruby autohotkey\tools\PacketViewerAHK -w 600 -t 800
|
|
13
14
|
call bundle exec ruby autohotkey\tools\PacketViewerAHK2 --defaultsize -p "INST ADCS"
|
|
14
|
-
call bundle exec ruby autohotkey\tools\ReplayAHK -w 800
|
|
15
|
+
call bundle exec ruby autohotkey\tools\ReplayAHK -w 800 -t 800
|
|
15
16
|
call bundle exec ruby autohotkey\tools\ScriptRunnerAHK -w 600 -t 800
|
|
16
17
|
call bundle exec ruby autohotkey\tools\ScriptRunnerAHK2 -w 600 -t 800
|
|
17
18
|
call bundle exec ruby autohotkey\tools\TableManagerAHK -w 800 -t 800
|
|
@@ -364,7 +364,7 @@ module Cosmos
|
|
|
364
364
|
expect(ConfigParser.handle_defined_constants("MIN", :UINT, val)).to eql 0
|
|
365
365
|
expect(ConfigParser.handle_defined_constants("MAX", :UINT, val)).to eql (2**val - 1)
|
|
366
366
|
# Signed
|
|
367
|
-
expect(ConfigParser.handle_defined_constants("MIN", :INT, val)).to eql -(
|
|
367
|
+
expect(ConfigParser.handle_defined_constants("MIN", :INT, val)).to eql (-(2**val) / 2)
|
|
368
368
|
expect(ConfigParser.handle_defined_constants("MAX", :INT, val)).to eql ((2**val) / 2 - 1)
|
|
369
369
|
end
|
|
370
370
|
[8,16,32,64].each do |val|
|
|
@@ -372,16 +372,16 @@ module Cosmos
|
|
|
372
372
|
expect(ConfigParser.handle_defined_constants("MIN_UINT#{val}")).to eql 0
|
|
373
373
|
expect(ConfigParser.handle_defined_constants("MAX_UINT#{val}")).to eql (2**val - 1)
|
|
374
374
|
# Signed
|
|
375
|
-
expect(ConfigParser.handle_defined_constants("MIN_INT#{val}")).to eql -(
|
|
375
|
+
expect(ConfigParser.handle_defined_constants("MIN_INT#{val}")).to eql (-(2**val) / 2)
|
|
376
376
|
expect(ConfigParser.handle_defined_constants("MAX_INT#{val}")).to eql ((2**val) / 2 - 1)
|
|
377
377
|
end
|
|
378
378
|
# Float
|
|
379
379
|
expect(ConfigParser.handle_defined_constants("MIN_FLOAT32")).to be <= -3.4 * 10**38
|
|
380
380
|
expect(ConfigParser.handle_defined_constants("MAX_FLOAT32")).to be >= 3.4 * 10**38
|
|
381
|
-
expect(ConfigParser.handle_defined_constants("MIN_FLOAT64")).to eql -Float::MAX
|
|
381
|
+
expect(ConfigParser.handle_defined_constants("MIN_FLOAT64")).to eql (-Float::MAX)
|
|
382
382
|
expect(ConfigParser.handle_defined_constants("MAX_FLOAT64")).to eql Float::MAX
|
|
383
383
|
expect(ConfigParser.handle_defined_constants("POS_INFINITY")).to eql Float::INFINITY
|
|
384
|
-
expect(ConfigParser.handle_defined_constants("NEG_INFINITY")).to eql -Float::INFINITY
|
|
384
|
+
expect(ConfigParser.handle_defined_constants("NEG_INFINITY")).to eql (-Float::INFINITY)
|
|
385
385
|
end
|
|
386
386
|
|
|
387
387
|
it "complains about undefined strings" do
|
data/spec/core_ext/array_spec.rb
CHANGED
|
@@ -16,7 +16,7 @@ describe Array do
|
|
|
16
16
|
describe "inspect" do
|
|
17
17
|
it "limits the number of items to 10" do
|
|
18
18
|
expect(Array.new([1,2,3,4,5,6,7,8,9,10]).inspect).to eql "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
|
|
19
|
-
expect(Array.new([1,2,3,4,5,6,7,8,9,10,11]).inspect).to match
|
|
19
|
+
expect(Array.new([1,2,3,4,5,6,7,8,9,10,11]).inspect).to match(/#<Array:\d+>/)
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -18,8 +18,8 @@ describe Exception do
|
|
|
18
18
|
begin
|
|
19
19
|
raise "My message"
|
|
20
20
|
rescue => err
|
|
21
|
-
expect(err.formatted).to match
|
|
22
|
-
expect(err.formatted).to match
|
|
21
|
+
expect(err.formatted).to match(/RuntimeError : My message/)
|
|
22
|
+
expect(err.formatted).to match(/#{File.expand_path(__FILE__)}/)
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -27,18 +27,18 @@ describe Exception do
|
|
|
27
27
|
begin
|
|
28
28
|
raise "My message"
|
|
29
29
|
rescue => err
|
|
30
|
-
expect(err.formatted(true)).not_to match
|
|
31
|
-
expect(err.formatted(true)).to match
|
|
32
|
-
expect(err.formatted(true)).to match
|
|
30
|
+
expect(err.formatted(true)).not_to match(/RuntimeError/)
|
|
31
|
+
expect(err.formatted(true)).to match(/My message/)
|
|
32
|
+
expect(err.formatted(true)).to match(/#{File.expand_path(__FILE__)}/)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
# If it's not a RuntimeError then we should still see the class
|
|
36
36
|
begin
|
|
37
37
|
raise ArgumentError.new("My message")
|
|
38
38
|
rescue => err
|
|
39
|
-
expect(err.formatted(true)).to match
|
|
40
|
-
expect(err.formatted(true)).to match
|
|
41
|
-
expect(err.formatted(true)).to match
|
|
39
|
+
expect(err.formatted(true)).to match(/ArgumentError/)
|
|
40
|
+
expect(err.formatted(true)).to match(/My message/)
|
|
41
|
+
expect(err.formatted(true)).to match(/#{File.expand_path(__FILE__)}/)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -46,15 +46,15 @@ describe Exception do
|
|
|
46
46
|
begin
|
|
47
47
|
raise "My message"
|
|
48
48
|
rescue => err
|
|
49
|
-
expect(err.formatted(false, false)).to match
|
|
50
|
-
expect(err.formatted(false, false)).not_to match
|
|
49
|
+
expect(err.formatted(false, false)).to match(/RuntimeError : My message/)
|
|
50
|
+
expect(err.formatted(false, false)).not_to match(/#{File.expand_path(__FILE__)}/)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
begin
|
|
54
54
|
raise "My message"
|
|
55
55
|
rescue => err
|
|
56
|
-
expect(err.formatted(true, false)).to match
|
|
57
|
-
expect(err.formatted(true, false)).not_to match
|
|
56
|
+
expect(err.formatted(true, false)).to match(/My message/)
|
|
57
|
+
expect(err.formatted(true, false)).not_to match(/#{File.expand_path(__FILE__)}/)
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
data/spec/core_ext/file_spec.rb
CHANGED
|
@@ -40,29 +40,29 @@ describe File do
|
|
|
40
40
|
it "formats the time" do
|
|
41
41
|
time = Time.now
|
|
42
42
|
timestamp = sprintf("%04u_%02u_%02u_%02u_%02u_%02u", time.year, time.month, time.mday, time.hour, time.min, time.sec)
|
|
43
|
-
expect(File.build_timestamped_filename(nil,".txt",time)).to match
|
|
43
|
+
expect(File.build_timestamped_filename(nil,".txt",time)).to match(timestamp)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
it "allows empty tags" do
|
|
47
|
-
expect(File.build_timestamped_filename([])).to match
|
|
47
|
+
expect(File.build_timestamped_filename([])).to match(/\d\d\.txt/)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
it "allows nil tags" do
|
|
51
|
-
expect(File.build_timestamped_filename(nil)).to match
|
|
51
|
+
expect(File.build_timestamped_filename(nil)).to match(/\d\d\.txt/)
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
it "includes the tags" do
|
|
55
|
-
expect(File.build_timestamped_filename(['this','is','a','test'])).to match
|
|
55
|
+
expect(File.build_timestamped_filename(['this','is','a','test'])).to match('this_is_a_test')
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
it "changes the extension" do
|
|
59
|
-
expect(File.build_timestamped_filename(nil,".bin")).to match
|
|
59
|
+
expect(File.build_timestamped_filename(nil,".bin")).to match(".bin")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
describe "find_in_search_path" do
|
|
64
64
|
it "returns the path to the file" do
|
|
65
|
-
expect(File.find_in_search_path("cosmos.rb")).to match
|
|
65
|
+
expect(File.find_in_search_path("cosmos.rb")).to match("lib/cosmos.rb")
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
it "returns nil if the file can't be found" do
|
data/spec/core_ext/hash_spec.rb
CHANGED
|
@@ -18,7 +18,7 @@ describe Hash do
|
|
|
18
18
|
hash = {'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,'10'=>10}
|
|
19
19
|
expect(hash.inspect).to eql '{"1"=>1, "2"=>2, "3"=>3, "4"=>4, "5"=>5, "6"=>6, "7"=>7, "8"=>8, "9"=>9, "10"=>10}'
|
|
20
20
|
hash['11'] = 11
|
|
21
|
-
expect(hash.inspect).to match
|
|
21
|
+
expect(hash.inspect).to match(/#<Hash:\d+>/)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -16,7 +16,7 @@ describe Socket do
|
|
|
16
16
|
it "returns the ip address of the current machine" do
|
|
17
17
|
begin
|
|
18
18
|
Socket.get_own_ip_address
|
|
19
|
-
expect(Socket.get_own_ip_address).to match
|
|
19
|
+
expect(Socket.get_own_ip_address).to match(/\b(?:\d{1,3}\.){3}\d{1,3}\b/)
|
|
20
20
|
rescue Resolv::ResolvError
|
|
21
21
|
# Oh well
|
|
22
22
|
end
|
|
@@ -27,7 +27,7 @@ describe Socket do
|
|
|
27
27
|
it "returns the hostname for the ip address" do
|
|
28
28
|
if !ENV['APPVEYOR']
|
|
29
29
|
ipaddr = Resolv.getaddress "localhost"
|
|
30
|
-
expect(Socket.lookup_hostname_from_ip(ipaddr)).to match
|
|
30
|
+
expect(Socket.lookup_hostname_from_ip(ipaddr)).to match("localhost")
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -26,39 +26,39 @@ describe String do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "uses 2 byte words" do
|
|
29
|
-
expect(@data.formatted(2, 8)).to match
|
|
30
|
-
expect(@data.formatted(2, 8)).to match
|
|
29
|
+
expect(@data.formatted(2, 8)).to match("00000000: 1A1B 1C1D 1E1F") # ...
|
|
30
|
+
expect(@data.formatted(2, 8)).to match("00000010: 2A2B 2C2D 2E2F")
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "changes the word separator" do
|
|
34
|
-
expect(@data.formatted(2, 4, '_')).to match
|
|
35
|
-
expect(@data.formatted(2, 4, '_')).to match
|
|
36
|
-
expect(@data.formatted(2, 4, '_')).to match
|
|
34
|
+
expect(@data.formatted(2, 4, '_')).to match("00000000: 1A1B_1C1D_1E1F_2021")
|
|
35
|
+
expect(@data.formatted(2, 4, '_')).to match("00000008: 2223_2425_2627_2829")
|
|
36
|
+
expect(@data.formatted(2, 4, '_')).to match("00000010: 2A2B_2C2D_2E2F")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
it "indents the lines" do
|
|
40
|
-
expect(@data.formatted(1, 16, ' ', 4)).to match
|
|
40
|
+
expect(@data.formatted(1, 16, ' ', 4)).to match(" 00000000: 1A 1B 1C 1D")
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "does not show the address" do
|
|
44
|
-
expect(@data.formatted(1, 16, ' ', 0, false)).to match
|
|
44
|
+
expect(@data.formatted(1, 16, ' ', 0, false)).to match("1A 1B 1C 1D")
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "changes the address separator" do
|
|
48
|
-
expect(@data.formatted(1, 16, ' ', 0, true, '= ')).to match
|
|
48
|
+
expect(@data.formatted(1, 16, ' ', 0, true, '= ')).to match("00000000= 1A 1B 1C 1D")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it "does not show the ASCII" do
|
|
52
|
-
expect(@data.formatted(1,16,'',0,true,'',true)).to match
|
|
53
|
-
expect(@data.formatted(1,16,'',0,true,'',false)).not_to match
|
|
52
|
+
expect(@data.formatted(1,16,'',0,true,'',true)).to match('29 !"#\$%&\'()')
|
|
53
|
+
expect(@data.formatted(1,16,'',0,true,'',false)).not_to match('29 !"#\$%&\'()')
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
it "changes the ASCII separator" do
|
|
57
|
-
expect(@data.formatted(1,16,'',0,true,'',true,'__')).to match
|
|
57
|
+
expect(@data.formatted(1,16,'',0,true,'',true,'__')).to match('29__ !"#\$%&\'()')
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it "changes the ASCII unprintable character" do
|
|
61
|
-
expect(@data.formatted(1,16,'',0,true,'',true,'__','x')).to match
|
|
61
|
+
expect(@data.formatted(1,16,'',0,true,'',true,'__','x')).to match('29__xxxxxx !"#\$%&\'()')
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
it "changes the line separator" do
|
|
@@ -199,7 +199,7 @@ describe String do
|
|
|
199
199
|
expect("[.a,2,3]".convert_to_value).to eql "[.a,2,3]"
|
|
200
200
|
end
|
|
201
201
|
|
|
202
|
-
it "doesn't match
|
|
202
|
+
it "doesn't match(multiline strings" do
|
|
203
203
|
expect("12345\n12345".convert_to_value).to eql "12345\n12345"
|
|
204
204
|
expect("5.123\n5.123".convert_to_value).to eql "5.123\n5.123"
|
|
205
205
|
expect("[0,1,2,3]\n[0,1,2,3]".convert_to_value).to eql "[0,1,2,3]\n[0,1,2,3]"
|
data/spec/core_ext/time_spec.rb
CHANGED
|
@@ -164,7 +164,6 @@ describe Time do
|
|
|
164
164
|
describe "Time.ccsds2julian and Time.julian2ccsds" do
|
|
165
165
|
it "converts CCSDS to and from Julian" do
|
|
166
166
|
expect(Time.ccsds2julian(0, 1000, 2)).to be_within(0.00001).of(2436204.500012)
|
|
167
|
-
time = Time.now
|
|
168
167
|
ccsds_day, ccsds_ms, ccsds_us = Time.mdy2ccsds(2015,1,2,3,4,5,100)
|
|
169
168
|
julian = Time.ccsds2julian(ccsds_day, ccsds_ms, ccsds_us)
|
|
170
169
|
parts = Time.julian2ccsds(julian)
|
|
@@ -177,7 +176,6 @@ describe Time do
|
|
|
177
176
|
describe "Time.ccsds2sec and Time.sec2ccsds" do
|
|
178
177
|
it "converts seconds to and from CCSDS" do
|
|
179
178
|
expect(Time.ccsds2sec(0, 1000, 2)).to be_within(0.00001).of(1)
|
|
180
|
-
time = Time.now
|
|
181
179
|
ccsds_day, ccsds_ms, ccsds_us = Time.mdy2ccsds(2015,1,2,3,4,5,100)
|
|
182
180
|
seconds = Time.ccsds2sec(ccsds_day, ccsds_ms, ccsds_us)
|
|
183
181
|
parts = Time.sec2ccsds(seconds)
|
|
@@ -63,7 +63,7 @@ if RUBY_ENGINE == 'ruby'
|
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
buttons = %w(THIS IS A TEST)
|
|
66
|
-
|
|
66
|
+
combo_box("HI", *buttons)
|
|
67
67
|
expect(buttons).to eq %w(THIS IS A TEST)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
@@ -79,7 +79,7 @@ if RUBY_ENGINE == 'ruby'
|
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
buttons = %w(THIS IS A TEST)
|
|
82
|
-
|
|
82
|
+
message_box("HI", *buttons)
|
|
83
83
|
expect(buttons).to eq %w(THIS IS A TEST)
|
|
84
84
|
end
|
|
85
85
|
end
|
|
@@ -93,7 +93,7 @@ if RUBY_ENGINE == 'ruby'
|
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
buttons = %w(THIS IS A TEST)
|
|
96
|
-
|
|
96
|
+
vertical_message_box("HI", *buttons)
|
|
97
97
|
expect(buttons).to eq %w(THIS IS A TEST)
|
|
98
98
|
end
|
|
99
99
|
end
|
|
@@ -70,17 +70,17 @@ TELEMETRY INST HEALTH_STATUS BIG_ENDIAN "Health and status from the instrument"
|
|
|
70
70
|
ITEM TIMEFORMATTED 0 0 DERIVED "Derived time since epoch as formatted string"
|
|
71
71
|
READ_CONVERSION unix_time_formatted_conversion.rb TIMESEC TIMEUS
|
|
72
72
|
ITEM TEMP1HIGH 0 0 DERIVED "High-water mark for TEMP1"
|
|
73
|
-
READ_CONVERSION processor_conversion.rb TEMP1WATER HIGH_WATER
|
|
73
|
+
READ_CONVERSION processor_conversion.rb TEMP1WATER HIGH_WATER # Deliberately leave off type and bit size
|
|
74
74
|
ITEM TEMP1LOW 0 0 DERIVED "Low-water mark for TEMP1"
|
|
75
|
-
READ_CONVERSION processor_conversion.rb TEMP1WATER LOW_WATER
|
|
75
|
+
READ_CONVERSION processor_conversion.rb TEMP1WATER LOW_WATER # Deliberately leave off type and bit size
|
|
76
76
|
ITEM TEMP1MAX 0 0 DERIVED "Maximum of most recent 100 samples for TEMP1"
|
|
77
|
-
READ_CONVERSION processor_conversion.rb TEMP1STAT MAX
|
|
77
|
+
READ_CONVERSION processor_conversion.rb TEMP1STAT MAX FLOAT 64
|
|
78
78
|
ITEM TEMP1MIN 0 0 DERIVED "Minimum of most recent 100 samples for TEMP1"
|
|
79
|
-
READ_CONVERSION processor_conversion.rb TEMP1STAT MIN
|
|
79
|
+
READ_CONVERSION processor_conversion.rb TEMP1STAT MIN FLOAT 64
|
|
80
80
|
ITEM TEMP1MEAN 0 0 DERIVED "Mean of most recent 100 samples for TEMP1"
|
|
81
|
-
READ_CONVERSION processor_conversion.rb TEMP1STAT MEAN
|
|
81
|
+
READ_CONVERSION processor_conversion.rb TEMP1STAT MEAN FLOAT 64
|
|
82
82
|
ITEM TEMP1STDDEV 0 0 DERIVED "Stddev of most recent 100 samples for TEMP1"
|
|
83
|
-
READ_CONVERSION processor_conversion.rb TEMP1STAT STDDEV
|
|
83
|
+
READ_CONVERSION processor_conversion.rb TEMP1STAT STDDEV FLOAT 64
|
|
84
84
|
PROCESSOR TEMP1STAT statistics_processor.rb TEMP1 100
|
|
85
85
|
PROCESSOR TEMP1WATER watermark_processor.rb TEMP1
|
|
86
86
|
|
|
@@ -15,7 +15,9 @@ module Cosmos
|
|
|
15
15
|
|
|
16
16
|
describe CmdTlmServerInterface do
|
|
17
17
|
before(:all) do
|
|
18
|
+
# Save cmd_tlm_server.txt
|
|
18
19
|
cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
20
|
+
FileUtils.mv cts, Cosmos::USERPATH
|
|
19
21
|
FileUtils.mkdir_p(File.dirname(cts))
|
|
20
22
|
File.open(cts,'w') do |file|
|
|
21
23
|
file.puts 'INTERFACE INT interface.rb'
|
|
@@ -24,8 +26,10 @@ module Cosmos
|
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
after(:all) do
|
|
27
|
-
|
|
28
|
-
FileUtils.
|
|
29
|
+
# Restore cmd_tlm_server.txt
|
|
30
|
+
FileUtils.mv File.join(Cosmos::USERPATH, 'cmd_tlm_server.txt'),
|
|
31
|
+
File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server')
|
|
32
|
+
System.class_eval('@@instance = nil')
|
|
29
33
|
end
|
|
30
34
|
|
|
31
35
|
before(:each) do
|
|
@@ -14,7 +14,6 @@ require 'cosmos/interfaces/protocols/protocol'
|
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
16
|
class InterfaceTestProtocol < Protocol
|
|
17
|
-
|
|
18
17
|
def initialize(added_data, stop_count = 0, packet_added_data = nil, packet_stop_count = 0)
|
|
19
18
|
@added_data = added_data
|
|
20
19
|
@packet_added_data = packet_added_data
|
|
@@ -19,11 +19,6 @@ module Cosmos
|
|
|
19
19
|
def write(data); end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
before(:all) do
|
|
23
|
-
clean_config()
|
|
24
|
-
System.class_eval('@@instance = nil')
|
|
25
|
-
end
|
|
26
|
-
|
|
27
22
|
describe "connect" do
|
|
28
23
|
it "passes a new TcpipClientStream to the stream protocol" do
|
|
29
24
|
i = LincInterface.new('localhost','8888')
|
|
@@ -35,111 +35,226 @@ module Cosmos
|
|
|
35
35
|
|
|
36
36
|
describe "initialize" do
|
|
37
37
|
it "complains if strip crc is not boolean" do
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
['ERROR', 0, nil].each do |strip_crc|
|
|
39
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
40
|
+
nil, # item name
|
|
41
|
+
strip_crc, # strip crc
|
|
42
|
+
'ERROR', # bad strategy
|
|
43
|
+
-16, # bit offset
|
|
44
|
+
16], # bit size
|
|
45
|
+
:READ_WRITE) }.to raise_error(/Invalid strip CRC/)
|
|
46
|
+
end
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
it "complains if bad strategy is not ERROR or DISCONNECT" do
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
['BAD', 0, nil].each do |strategy|
|
|
51
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
52
|
+
nil, # item name
|
|
53
|
+
'TRUE', # strip crc
|
|
54
|
+
strategy, # bad strategy
|
|
55
|
+
-16, # bit offset
|
|
56
|
+
16], # bit size
|
|
57
|
+
:READ_WRITE) }.to raise_error(/Invalid bad CRC strategy/)
|
|
58
|
+
end
|
|
55
59
|
end
|
|
56
60
|
|
|
57
61
|
it "complains if bit size is not 16, 32, or 64" do
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
['0', 0, nil].each do |bit_size|
|
|
63
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
64
|
+
nil, # item name
|
|
65
|
+
'TRUE', # strip crc
|
|
66
|
+
'ERROR', # bad strategy
|
|
67
|
+
128, # bit offset
|
|
68
|
+
bit_size], # bit size
|
|
69
|
+
:READ_WRITE) }.to raise_error( /Invalid bit size/)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "accepts a string bit size of 16, 32, or 64" do
|
|
74
|
+
%w(16 32 64).each do |bit_size|
|
|
75
|
+
@interface.add_protocol(CrcProtocol, [
|
|
76
|
+
nil, # item name
|
|
77
|
+
'TRUE', # strip crc
|
|
78
|
+
'ERROR', # bad strategy
|
|
79
|
+
-32, # bit offset
|
|
80
|
+
bit_size], # bit size
|
|
81
|
+
:READ_WRITE)
|
|
82
|
+
expect(@interface.read_protocols[-1].instance_variable_get(:@bit_size)).to eq Integer(bit_size)
|
|
83
|
+
end
|
|
65
84
|
end
|
|
66
85
|
|
|
67
86
|
it "complains if bit offset is not byte divisible" do
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
[nil, 100, '100'].each do |offset|
|
|
88
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
89
|
+
nil, # item name
|
|
90
|
+
'TRUE', # strip crc
|
|
91
|
+
'ERROR', # bad strategy
|
|
92
|
+
offset, # bit offset
|
|
93
|
+
16], # bit size
|
|
94
|
+
:READ_WRITE) }.to raise_error(/Invalid bit offset/)
|
|
95
|
+
end
|
|
75
96
|
end
|
|
76
97
|
|
|
77
|
-
it "
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
it "accepts a string for bit offset" do
|
|
99
|
+
%w(0 32 -32).each do |offset|
|
|
100
|
+
@interface.add_protocol(CrcProtocol, [
|
|
101
|
+
nil, # item name
|
|
102
|
+
'TRUE', # strip crc
|
|
103
|
+
'ERROR', # bad strategy
|
|
104
|
+
offset, # bit offset
|
|
105
|
+
16], # bit size
|
|
106
|
+
:READ_WRITE)
|
|
107
|
+
expect(@interface.read_protocols[-1].instance_variable_get(:@bit_offset)).to eq Integer(offset)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "complains if the endianness is not BIG_ENDIAN or LITTLE_ENDIAN" do
|
|
112
|
+
['ENDIAN', 0, nil].each do |endianness|
|
|
113
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
114
|
+
nil, # item name
|
|
115
|
+
'FALSE', # strip crc
|
|
116
|
+
'ERROR', # bad strategy
|
|
117
|
+
-16, # bit offset
|
|
118
|
+
16, # bit size
|
|
119
|
+
endianness, # endianness
|
|
120
|
+
0xDEAD, # poly
|
|
121
|
+
0x0, # seed
|
|
122
|
+
'TRUE', # xor
|
|
123
|
+
'TRUE', # reflect
|
|
124
|
+
],
|
|
125
|
+
:READ_WRITE) }.to raise_error(/Invalid endianness/)
|
|
126
|
+
end
|
|
91
127
|
end
|
|
92
128
|
|
|
93
129
|
it "complains if the poly is not a number" do
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
130
|
+
['TRUE', '123abc'].each do |poly|
|
|
131
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
132
|
+
nil, # item name
|
|
133
|
+
'FALSE', # strip crc
|
|
134
|
+
'ERROR', # bad strategy
|
|
135
|
+
-16, # bit offset
|
|
136
|
+
16, # bit size
|
|
137
|
+
'BIG_ENDIAN', # endianness
|
|
138
|
+
poly, # poly
|
|
139
|
+
0x0, # seed
|
|
140
|
+
'TRUE', # xor
|
|
141
|
+
'TRUE', # reflect
|
|
142
|
+
],
|
|
143
|
+
:READ_WRITE) }.to raise_error(/Invalid poly/)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "accepts nil and numeric polynomials" do
|
|
148
|
+
['0xABCD', 0xABCD, nil, '', 'NIL', 'NULL'].each do |poly|
|
|
149
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
150
|
+
nil, # item name
|
|
151
|
+
'FALSE', # strip crc
|
|
152
|
+
'ERROR', # bad strategy
|
|
153
|
+
-16, # bit offset
|
|
154
|
+
16, # bit size
|
|
155
|
+
'BIG_ENDIAN', # endianness
|
|
156
|
+
poly, # poly
|
|
157
|
+
0x0, # seed
|
|
158
|
+
'TRUE', # xor
|
|
159
|
+
'TRUE', # reflect
|
|
160
|
+
],
|
|
161
|
+
:READ_WRITE) }.to_not raise_error
|
|
162
|
+
end
|
|
107
163
|
end
|
|
108
164
|
|
|
109
165
|
it "complains if the seed is not a number" do
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
166
|
+
['TRUE', '123abc'].each do |seed|
|
|
167
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
168
|
+
nil, # item name
|
|
169
|
+
'FALSE', # strip crc
|
|
170
|
+
'ERROR', # bad strategy
|
|
171
|
+
-16, # bit offset
|
|
172
|
+
16, # bit size
|
|
173
|
+
'LITTLE_ENDIAN', # endianness
|
|
174
|
+
0xABCD, # poly
|
|
175
|
+
seed, # seed
|
|
176
|
+
'TRUE', # xor
|
|
177
|
+
'TRUE', # reflect
|
|
178
|
+
],
|
|
179
|
+
:READ_WRITE) }.to raise_error(/Invalid seed/)
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "accepts nil and numeric seeds" do
|
|
184
|
+
['0xABCD', 0xABCD, nil, '', 'NIL', 'NULL'].each do |seed|
|
|
185
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
186
|
+
nil, # item name
|
|
187
|
+
'FALSE', # strip crc
|
|
188
|
+
'ERROR', # bad strategy
|
|
189
|
+
-16, # bit offset
|
|
190
|
+
16, # bit size
|
|
191
|
+
'BIG_ENDIAN', # endianness
|
|
192
|
+
nil, # poly
|
|
193
|
+
seed, # seed
|
|
194
|
+
'TRUE', # xor
|
|
195
|
+
'TRUE', # reflect
|
|
196
|
+
],
|
|
197
|
+
:READ_WRITE) }.to_not raise_error
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
it "accepts nil TRUE FALSE for xor" do
|
|
202
|
+
[nil, '', 'NIL', 'NULL', 'TRUE', 'FALSE'].each do |xor|
|
|
203
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
204
|
+
nil, # item name
|
|
205
|
+
'FALSE', # strip crc
|
|
206
|
+
'ERROR', # bad strategy
|
|
207
|
+
-16, # bit offset
|
|
208
|
+
16, # bit size
|
|
209
|
+
'BIG_ENDIAN', # endianness
|
|
210
|
+
0xABCD, # poly
|
|
211
|
+
0, # seed
|
|
212
|
+
xor, # xor
|
|
213
|
+
'TRUE', # reflect
|
|
214
|
+
],
|
|
215
|
+
:READ_WRITE) }.to_not raise_error
|
|
216
|
+
end
|
|
123
217
|
end
|
|
124
218
|
|
|
125
219
|
it "complains if the xor is not boolean" do
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
220
|
+
['ERROR', 0].each do |xor|
|
|
221
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
222
|
+
nil, # item name
|
|
223
|
+
'FALSE', # strip crc
|
|
224
|
+
'ERROR', # bad strategy
|
|
225
|
+
-16, # bit offset
|
|
226
|
+
16, # bit size
|
|
227
|
+
'BIG_ENDIAN', # endianness
|
|
228
|
+
0xABCD, # poly
|
|
229
|
+
0, # seed
|
|
230
|
+
xor, # xor
|
|
231
|
+
'TRUE', # reflect
|
|
232
|
+
],
|
|
233
|
+
:READ_WRITE) }.to raise_error(/Invalid XOR value/)
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
it "accepts nil TRUE FALSE for reflect" do
|
|
238
|
+
[nil, '', 'NIL', 'NULL', 'TRUE', 'FALSE'].each do |reflect|
|
|
239
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
240
|
+
nil, # item name
|
|
241
|
+
'FALSE', # strip crc
|
|
242
|
+
'ERROR', # bad strategy
|
|
243
|
+
-16, # bit offset
|
|
244
|
+
16, # bit size
|
|
245
|
+
'BIG_ENDIAN', # endianness
|
|
246
|
+
0xABCD, # poly
|
|
247
|
+
0, # seed
|
|
248
|
+
'TRUE', # xor
|
|
249
|
+
reflect, # reflect
|
|
250
|
+
],
|
|
251
|
+
:READ_WRITE) }.to_not raise_error
|
|
252
|
+
end
|
|
139
253
|
end
|
|
140
254
|
|
|
141
255
|
it "complains if the reflect is not boolean" do
|
|
142
|
-
|
|
256
|
+
['ERROR', 0].each do |reflect|
|
|
257
|
+
expect { @interface.add_protocol(CrcProtocol, [
|
|
143
258
|
nil, # item name
|
|
144
259
|
'FALSE', # strip crc
|
|
145
260
|
'ERROR', # bad strategy
|
|
@@ -149,9 +264,10 @@ module Cosmos
|
|
|
149
264
|
0xABCD, # poly
|
|
150
265
|
0, # seed
|
|
151
266
|
'TRUE', # xor
|
|
152
|
-
|
|
267
|
+
reflect, # reflect
|
|
153
268
|
],
|
|
154
269
|
:READ_WRITE) }.to raise_error(/Invalid reflect value/)
|
|
270
|
+
end
|
|
155
271
|
end
|
|
156
272
|
end
|
|
157
273
|
|
|
@@ -378,7 +494,7 @@ module Cosmos
|
|
|
378
494
|
$buffer[0] = "\x01"
|
|
379
495
|
|
|
380
496
|
expect(Logger).to receive(:error) do |msg|
|
|
381
|
-
expect(msg).to match
|
|
497
|
+
expect(msg).to match("Invalid CRC detected!")
|
|
382
498
|
end
|
|
383
499
|
packet = @interface.read
|
|
384
500
|
expect(packet.buffer.length).to eql 8
|
|
@@ -406,7 +522,7 @@ module Cosmos
|
|
|
406
522
|
$buffer[0] = "\x01"
|
|
407
523
|
|
|
408
524
|
expect(Logger).to receive(:error) do |msg|
|
|
409
|
-
expect(msg).to match
|
|
525
|
+
expect(msg).to match("Invalid CRC detected!")
|
|
410
526
|
end
|
|
411
527
|
packet = @interface.read
|
|
412
528
|
expect(packet).to be_nil # thread disconnects when packet is nil
|