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
|
@@ -13,6 +13,19 @@ require 'cosmos/gui/qt'
|
|
|
13
13
|
require 'cosmos/gui/dialogs/calendar_dialog'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
+
|
|
17
|
+
class PacketLogFrameListWidget < Qt::ListWidget
|
|
18
|
+
attr_accessor :delete_callback
|
|
19
|
+
|
|
20
|
+
def keyPressEvent(event)
|
|
21
|
+
case event.key
|
|
22
|
+
when Qt::Key_Delete, Qt::Key_Backspace
|
|
23
|
+
@delete_callback.call if @delete_callback
|
|
24
|
+
end
|
|
25
|
+
super(event)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
16
29
|
# Widget which displays a button to browse for log files. Files are listed
|
|
17
30
|
# and can be removed. Buttons exist to display start and stop time choosers
|
|
18
31
|
# which apply to all files in the list. The widget can also show a button
|
|
@@ -88,8 +101,8 @@ module Cosmos
|
|
|
88
101
|
row = 0
|
|
89
102
|
|
|
90
103
|
# Chooser for Log Files
|
|
91
|
-
|
|
92
|
-
@layout.addWidget(
|
|
104
|
+
@log_files_label = Qt::Label.new('Log Files:')
|
|
105
|
+
@layout.addWidget(@log_files_label, row, 0, 1, 2)
|
|
93
106
|
@browse_button = Qt::PushButton.new('Browse...')
|
|
94
107
|
@browse_button.connect(SIGNAL('clicked()')) { handle_browse_button() }
|
|
95
108
|
@layout.addWidget(@browse_button, row, 2)
|
|
@@ -98,13 +111,10 @@ module Cosmos
|
|
|
98
111
|
@layout.addWidget(@remove_button, row, 3)
|
|
99
112
|
row += 1
|
|
100
113
|
|
|
101
|
-
@filenames =
|
|
114
|
+
@filenames = PacketLogFrameListWidget.new(self)
|
|
102
115
|
@filenames.setSelectionMode(Qt::AbstractItemView::ExtendedSelection)
|
|
103
116
|
@filenames.setSortingEnabled(true)
|
|
104
|
-
|
|
105
|
-
delete.connect(SIGNAL('activated()')) { handle_remove_button }
|
|
106
|
-
backspace = Qt::Shortcut.new(Qt::KeySequence.new(Qt::Key_Backspace), @filenames)
|
|
107
|
-
backspace.connect(SIGNAL('activated()')) { handle_remove_button }
|
|
117
|
+
@filenames.delete_callback = method(:handle_remove_button)
|
|
108
118
|
initial_filenames.each {|filename| @filenames.addItem(filename)}
|
|
109
119
|
@filenames.setMinimumHeight(90)
|
|
110
120
|
@layout.addWidget(@filenames, row, 0, 3, 4)
|
|
@@ -152,15 +162,15 @@ module Cosmos
|
|
|
152
162
|
@packet_log_reader = PacketLogReader.new unless @packet_log_reader
|
|
153
163
|
|
|
154
164
|
# Chooser or label for log reader
|
|
155
|
-
|
|
156
|
-
@layout.addWidget(
|
|
165
|
+
@packet_log_reader_label = Qt::Label.new('Packet Log Reader:')
|
|
166
|
+
@layout.addWidget(@packet_log_reader_label, row, 0)
|
|
157
167
|
@packet_log_reader_field = Qt::LineEdit.new(@packet_log_reader.class.to_s)
|
|
158
168
|
@packet_log_reader_field.setMinimumWidth(340)
|
|
159
169
|
@packet_log_reader_field.setReadOnly(true)
|
|
160
170
|
@layout.addWidget(@packet_log_reader_field, row, 1, 1, 2)
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
@layout.addWidget(
|
|
171
|
+
@plr_select_button = Qt::PushButton.new('Select')
|
|
172
|
+
@plr_select_button.connect(SIGNAL('clicked()')) { handle_log_reader_button() }
|
|
173
|
+
@layout.addWidget(@plr_select_button, row, 3)
|
|
164
174
|
row += 1
|
|
165
175
|
end
|
|
166
176
|
|
|
@@ -216,6 +226,26 @@ module Cosmos
|
|
|
216
226
|
end
|
|
217
227
|
end
|
|
218
228
|
|
|
229
|
+
def show_log_fields(show_fields)
|
|
230
|
+
if show_fields
|
|
231
|
+
@filenames.show if @filenames
|
|
232
|
+
@log_files_label.show if @log_files_label
|
|
233
|
+
@browse_button.show if @browse_button
|
|
234
|
+
@remove_button.show if @remove_button
|
|
235
|
+
@packet_log_reader_field.show if @packet_log_reader_field
|
|
236
|
+
@packet_log_reader_label.show if @packet_log_reader_label
|
|
237
|
+
@plr_select_button.show if @plr_select_button
|
|
238
|
+
else
|
|
239
|
+
@filenames.hide if @filenames
|
|
240
|
+
@log_files_label.hide if @log_files_label
|
|
241
|
+
@browse_button.hide if @browse_button
|
|
242
|
+
@remove_button.hide if @remove_button
|
|
243
|
+
@packet_log_reader_field.hide if @packet_log_reader_field
|
|
244
|
+
@packet_log_reader_label.hide if @packet_log_reader_label
|
|
245
|
+
@plr_select_button.hide if @plr_select_button
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
219
249
|
protected
|
|
220
250
|
|
|
221
251
|
# Handles removing a selected filename
|
|
@@ -394,9 +394,8 @@ module Cosmos
|
|
|
394
394
|
# implement this method and call super to count the raw bytes and allow raw
|
|
395
395
|
# logging.
|
|
396
396
|
#
|
|
397
|
-
#
|
|
398
397
|
# @param data [String] Raw packet data
|
|
399
|
-
# @return
|
|
398
|
+
# @return [String] The exact data written
|
|
400
399
|
def write_interface_base(data)
|
|
401
400
|
@written_raw_data_time = Time.now
|
|
402
401
|
@written_raw_data = data.clone
|
|
@@ -64,15 +64,32 @@ module Cosmos
|
|
|
64
64
|
raise "Invalid endianness '#{endianness}'. Must be BIG_ENDIAN or LITTLE_ENDIAN."
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
begin
|
|
68
|
+
@bit_offset = Integer(bit_offset)
|
|
69
|
+
rescue
|
|
70
|
+
raise "Invalid bit offset of #{bit_offset}. Must be a number."
|
|
71
|
+
end
|
|
72
|
+
raise "Invalid bit offset of #{bit_offset}. Must be divisible by 8." if @bit_offset % 8 != 0
|
|
73
|
+
|
|
74
|
+
poly = ConfigParser.handle_nil(poly)
|
|
75
|
+
begin
|
|
76
|
+
poly = Integer(poly) if poly
|
|
77
|
+
rescue
|
|
78
|
+
raise "Invalid polynomial of #{poly}. Must be a number."
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
seed = ConfigParser.handle_nil(seed)
|
|
82
|
+
begin
|
|
83
|
+
seed = Integer(seed) if seed
|
|
84
|
+
rescue
|
|
85
|
+
raise "Invalid seed of #{seed}. Must be a number."
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
xor = ConfigParser.handle_true_false_nil(xor)
|
|
73
89
|
raise "Invalid XOR value of '#{xor}'. Must be TRUE or FALSE." if xor && !!xor != xor
|
|
74
|
-
reflect = ConfigParser.
|
|
90
|
+
reflect = ConfigParser.handle_true_false_nil(reflect) if reflect
|
|
75
91
|
raise "Invalid reflect value of '#{reflect}'. Must be TRUE or FALSE." if reflect && !!reflect != reflect
|
|
92
|
+
|
|
76
93
|
# Built the CRC arguments array. All subsequent arguments are dependent
|
|
77
94
|
# on the previous ones so we build it up incrementally.
|
|
78
95
|
args = []
|
|
@@ -89,7 +106,8 @@ module Cosmos
|
|
|
89
106
|
end
|
|
90
107
|
end
|
|
91
108
|
|
|
92
|
-
|
|
109
|
+
@bit_size = bit_size.to_i
|
|
110
|
+
case @bit_size
|
|
93
111
|
when 16
|
|
94
112
|
@pack = (@endianness == :BIG_ENDIAN) ? 'n' : 'v'
|
|
95
113
|
if args.empty?
|
|
@@ -39,6 +39,9 @@ module Cosmos
|
|
|
39
39
|
@min_id_size = Integer(min_id_size)
|
|
40
40
|
@telemetry = telemetry
|
|
41
41
|
@unknown_raise = ConfigParser::handle_true_false(unknown_raise)
|
|
42
|
+
@received_time = nil
|
|
43
|
+
@target_name = nil
|
|
44
|
+
@packet_name = nil
|
|
42
45
|
end
|
|
43
46
|
|
|
44
47
|
# Set the received_time, target_name and packet_name which we recorded when
|
|
@@ -77,7 +80,7 @@ module Cosmos
|
|
|
77
80
|
end
|
|
78
81
|
|
|
79
82
|
target_packets.each do |packet_name, packet|
|
|
80
|
-
if
|
|
83
|
+
if packet.identify?(@data)
|
|
81
84
|
identified_packet = packet
|
|
82
85
|
if identified_packet.defined_length > @data.length
|
|
83
86
|
# Check if need more data to finish packet
|
|
@@ -100,7 +103,10 @@ module Cosmos
|
|
|
100
103
|
|
|
101
104
|
unless identified_packet
|
|
102
105
|
raise "Unknown data received by FixedProtocol" if @unknown_raise
|
|
103
|
-
# Unknown packet?
|
|
106
|
+
# Unknown packet? Just return all the current data
|
|
107
|
+
@received_time = nil
|
|
108
|
+
@target_name = nil
|
|
109
|
+
@packet_name = nil
|
|
104
110
|
packet_data = @data.clone
|
|
105
111
|
@data.replace('')
|
|
106
112
|
end
|
|
@@ -9,10 +9,11 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
require 'cosmos/config/config_parser'
|
|
12
|
-
require 'cosmos/interfaces/protocols/protocol'
|
|
13
12
|
require 'thread'
|
|
14
13
|
|
|
15
14
|
module Cosmos
|
|
15
|
+
# Base class for all COSMOS protocols which defines a framework which must be
|
|
16
|
+
# implemented by a subclass.
|
|
16
17
|
class Protocol
|
|
17
18
|
attr_accessor :interface
|
|
18
19
|
attr_accessor :allow_empty_data
|
|
@@ -161,8 +161,7 @@ module Cosmos
|
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
# Shutdowns the listener threads for both the read and write ports as well
|
|
164
|
-
# as any client connections.
|
|
165
|
-
# the {Protocol#disconnect} method is called.
|
|
164
|
+
# as any client connections.
|
|
166
165
|
def disconnect
|
|
167
166
|
@cancel_threads = true
|
|
168
167
|
@read_queue << nil if @read_queue
|
|
@@ -227,7 +226,7 @@ module Cosmos
|
|
|
227
226
|
def write(packet)
|
|
228
227
|
raise "Interface not connected for write: #{@name}" unless connected? && write_allowed?
|
|
229
228
|
@write_count += 1
|
|
230
|
-
@write_queue << packet
|
|
229
|
+
@write_queue << packet.clone
|
|
231
230
|
@write_condition_variable.broadcast
|
|
232
231
|
end
|
|
233
232
|
|
|
@@ -38,7 +38,7 @@ module Cosmos
|
|
|
38
38
|
def initialize(hostname, port, connect_timeout = 1.0)
|
|
39
39
|
hostname = '127.0.0.1' if (hostname.to_s.upcase == 'LOCALHOST')
|
|
40
40
|
begin
|
|
41
|
-
|
|
41
|
+
Socket.pack_sockaddr_in(port, hostname)
|
|
42
42
|
rescue => error
|
|
43
43
|
if error.message =~ /getaddrinfo/
|
|
44
44
|
raise "Invalid hostname: #{hostname}"
|
data/lib/cosmos/io/json_rpc.rb
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
require 'json'
|
|
12
|
+
require 'date'
|
|
12
13
|
|
|
13
14
|
class Object
|
|
14
15
|
def as_json(options = nil) #:nodoc:
|
|
@@ -271,7 +272,7 @@ module Cosmos
|
|
|
271
272
|
begin
|
|
272
273
|
hash = JSON.parse(response_data, :allow_nan => true, :create_additions => true)
|
|
273
274
|
rescue
|
|
274
|
-
raise msg
|
|
275
|
+
raise $!, msg, $!.backtrace
|
|
275
276
|
end
|
|
276
277
|
|
|
277
278
|
# Verify the jsonrpc version is correct and there is an ID
|
|
@@ -8,15 +8,12 @@
|
|
|
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/io/serial_driver'
|
|
12
11
|
require 'cosmos/win32/win32'
|
|
13
12
|
require 'timeout' # For Timeout::Error
|
|
14
13
|
|
|
15
14
|
module Cosmos
|
|
16
|
-
|
|
17
15
|
# Serial driver for use on Windows serial ports
|
|
18
16
|
class Win32SerialDriver
|
|
19
|
-
|
|
20
17
|
# (see SerialDriver#initialize)
|
|
21
18
|
def initialize(port_name = 'COM1',
|
|
22
19
|
baud_rate = 9600,
|
|
@@ -150,16 +147,12 @@ module Cosmos
|
|
|
150
147
|
# (see SerialDriver#read_nonblock)
|
|
151
148
|
def read_nonblock
|
|
152
149
|
data = ''
|
|
153
|
-
|
|
154
150
|
loop do
|
|
155
151
|
buffer = Win32.read_file(@handle, @read_max_length - data.length)
|
|
156
152
|
data << buffer
|
|
157
153
|
break if buffer.length <= 0 or data.length >= @read_max_length
|
|
158
154
|
end
|
|
159
|
-
|
|
160
155
|
data
|
|
161
156
|
end
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
end # module Cosmos
|
|
157
|
+
end
|
|
158
|
+
end
|
|
@@ -14,13 +14,11 @@ require 'cosmos/packets/packet_item'
|
|
|
14
14
|
require 'cosmos/ext/packet' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
|
|
15
15
|
|
|
16
16
|
module Cosmos
|
|
17
|
-
|
|
18
17
|
# Adds features common to all COSMOS packets of data to the Structure class.
|
|
19
18
|
# This includes the additional attributes listed below. The primary behavior
|
|
20
19
|
# Packet adds is the ability to apply formatting to PacketItem values as well
|
|
21
20
|
# as managing PacketItem's limit states.
|
|
22
21
|
class Packet < Structure
|
|
23
|
-
|
|
24
22
|
RESERVED_ITEM_NAMES = ['RECEIVED_TIMESECONDS'.freeze, 'RECEIVED_TIMEFORMATTED'.freeze, 'RECEIVED_COUNT'.freeze]
|
|
25
23
|
|
|
26
24
|
# @return [String] Name of the target this packet is associated with
|
|
@@ -207,8 +205,7 @@ module Cosmos
|
|
|
207
205
|
|
|
208
206
|
true
|
|
209
207
|
end
|
|
210
|
-
|
|
211
|
-
end
|
|
208
|
+
end # if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
|
|
212
209
|
|
|
213
210
|
# Calculates a unique MD5Sum that changes if the parts of the packet configuration change that could affect
|
|
214
211
|
# the "shape" of the packet. This value is cached and that packet should not be changed if this method is being used
|
|
@@ -339,9 +336,7 @@ module Cosmos
|
|
|
339
336
|
else
|
|
340
337
|
next_offset = nil
|
|
341
338
|
if item.bit_offset > 0
|
|
342
|
-
|
|
343
|
-
byte_aligned = ((item.bit_offset % 8) == 0)
|
|
344
|
-
if item.endianness == :LITTLE_ENDIAN and (item.data_type == :INT or item.data_type == :UINT) and !(byte_aligned and (item.bit_size == 8 or item.bit_size == 16 or item.bit_size == 32 or item.bit_size == 64))
|
|
339
|
+
if item.little_endian_bit_field?
|
|
345
340
|
# Bit offset always refers to the most significant bit of a bitfield
|
|
346
341
|
bits_remaining_in_last_byte = 8 - (item.bit_offset % 8)
|
|
347
342
|
if item.bit_size > bits_remaining_in_last_byte
|
|
@@ -673,6 +668,19 @@ module Cosmos
|
|
|
673
668
|
end
|
|
674
669
|
end
|
|
675
670
|
|
|
671
|
+
# Define the reserved items on the current telemetry packet
|
|
672
|
+
def define_reserved_items
|
|
673
|
+
item = define_item('RECEIVED_TIMESECONDS', 0, 0, :DERIVED, nil, @default_endianness,
|
|
674
|
+
:ERROR, '%0.6f', ReceivedTimeSecondsConversion.new)
|
|
675
|
+
item.description = 'COSMOS Received Time (UTC, Floating point, Unix epoch)'
|
|
676
|
+
item = define_item('RECEIVED_TIMEFORMATTED', 0, 0, :DERIVED, nil, @default_endianness,
|
|
677
|
+
:ERROR, nil, ReceivedTimeFormattedConversion.new)
|
|
678
|
+
item.description = 'COSMOS Received Time (Local time zone, Formatted string)'
|
|
679
|
+
item = define_item('RECEIVED_COUNT', 0, 0, :DERIVED, nil, @default_endianness,
|
|
680
|
+
:ERROR, nil, ReceivedCountConversion.new)
|
|
681
|
+
item.description = 'COSMOS packet received count'
|
|
682
|
+
end
|
|
683
|
+
|
|
676
684
|
# Enable limits on an item by name
|
|
677
685
|
#
|
|
678
686
|
# @param name [String] Name of the item to enable limits
|
|
@@ -773,6 +781,9 @@ module Cosmos
|
|
|
773
781
|
# Reset temporary packet data
|
|
774
782
|
# This includes packet received time, received count, and processor state
|
|
775
783
|
def reset
|
|
784
|
+
# The SYSTEM META packet is a special case that does not get reset
|
|
785
|
+
return if @target_name == 'SYSTEM' && @packet_name == 'META'
|
|
786
|
+
|
|
776
787
|
@received_time = nil
|
|
777
788
|
@received_count = 0
|
|
778
789
|
if @read_conversion_cache
|
|
@@ -860,7 +871,8 @@ module Cosmos
|
|
|
860
871
|
|
|
861
872
|
protected
|
|
862
873
|
|
|
863
|
-
# Performs packet specific processing on the packet.
|
|
874
|
+
# Performs packet specific processing on the packet.
|
|
875
|
+
# Intended to only be run once for each packet received
|
|
864
876
|
def process(buffer = @buffer)
|
|
865
877
|
return unless @processors
|
|
866
878
|
@processors.each do |processor_name, processor|
|
|
@@ -988,7 +1000,5 @@ module Cosmos
|
|
|
988
1000
|
end
|
|
989
1001
|
item
|
|
990
1002
|
end
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
end # module Cosmos
|
|
1003
|
+
end
|
|
1004
|
+
end
|
|
@@ -109,6 +109,7 @@ module Cosmos
|
|
|
109
109
|
|
|
110
110
|
process_target_name = process_target_name.upcase
|
|
111
111
|
parser = ConfigParser.new("http://cosmosrb.com/docs/cmdtlm")
|
|
112
|
+
parser.instance_variable_set(:@target_name, process_target_name)
|
|
112
113
|
parser.parse_file(filename) do |keyword, params|
|
|
113
114
|
|
|
114
115
|
if @building_generic_conversion
|
|
@@ -532,7 +533,7 @@ module Cosmos
|
|
|
532
533
|
|
|
533
534
|
def start_item(parser)
|
|
534
535
|
finish_item()
|
|
535
|
-
@current_item = PacketItemParser.parse(parser, @current_packet, @current_cmd_or_tlm)
|
|
536
|
+
@current_item = PacketItemParser.parse(parser, @current_packet, @current_cmd_or_tlm, @warnings)
|
|
536
537
|
MacroParser.new_item()
|
|
537
538
|
end
|
|
538
539
|
|
|
@@ -348,33 +348,11 @@ module Cosmos
|
|
|
348
348
|
else # :COMMAND
|
|
349
349
|
if self.array_size
|
|
350
350
|
config << " ARRAY_PARAMETER #{self.name.to_s.quote_if_necessary} #{self.bit_offset} #{self.bit_size} #{self.data_type} #{self.array_size} \"#{self.description.to_s.gsub("\"", "'")}\""
|
|
351
|
-
elsif self.id_value
|
|
352
|
-
if self.data_type == :BLOCK or self.data_type == :STRING
|
|
353
|
-
unless self.id_value.is_printable?
|
|
354
|
-
id_value = "0x" + self.id_value.simple_formatted
|
|
355
|
-
else
|
|
356
|
-
id_value = "\"#{self.id_value}\""
|
|
357
|
-
end
|
|
358
|
-
config << " ID_PARAMETER #{self.name.to_s.quote_if_necessary} #{self.bit_offset} #{self.bit_size} #{self.data_type} #{id_value} \"#{self.description.to_s.gsub("\"", "'")}\""
|
|
359
|
-
else
|
|
360
|
-
first, last = calculate_range()
|
|
361
|
-
config << " ID_PARAMETER #{self.name.to_s.quote_if_necessary} #{self.bit_offset} #{self.bit_size} #{self.data_type} #{first} #{last} #{self.id_value} \"#{self.description.to_s.gsub("\"", "'")}\""
|
|
362
|
-
end
|
|
363
351
|
else
|
|
364
|
-
|
|
365
|
-
unless self.default.is_printable?
|
|
366
|
-
default = "0x" + self.default.simple_formatted
|
|
367
|
-
else
|
|
368
|
-
default = "\"#{self.default}\""
|
|
369
|
-
end
|
|
370
|
-
config << " PARAMETER #{self.name.to_s.quote_if_necessary} #{self.bit_offset} #{self.bit_size} #{self.data_type} #{default} \"#{self.description.to_s.gsub("\"", "'")}\""
|
|
371
|
-
else
|
|
372
|
-
first, last = calculate_range()
|
|
373
|
-
config << " PARAMETER #{self.name.to_s.quote_if_necessary} #{self.bit_offset} #{self.bit_size} #{self.data_type} #{first} #{last} #{self.default} \"#{self.description.to_s.gsub("\"", "'")}\""
|
|
374
|
-
end
|
|
352
|
+
config << parameter_config()
|
|
375
353
|
end
|
|
376
354
|
end
|
|
377
|
-
config << " #{self.endianness}" if self.endianness != default_endianness
|
|
355
|
+
config << " #{self.endianness}" if (self.endianness != default_endianness && self.data_type != :STRING && self.data_type != :BLOCK)
|
|
378
356
|
config << "\n"
|
|
379
357
|
|
|
380
358
|
config << " REQUIRED\n" if self.required
|
|
@@ -423,6 +401,30 @@ module Cosmos
|
|
|
423
401
|
|
|
424
402
|
protected
|
|
425
403
|
|
|
404
|
+
def parameter_config
|
|
405
|
+
if @id_value
|
|
406
|
+
value = @id_value
|
|
407
|
+
config = " ID_PARAMETER "
|
|
408
|
+
else
|
|
409
|
+
value = @default
|
|
410
|
+
config = " PARAMETER "
|
|
411
|
+
end
|
|
412
|
+
config << "#{@name.to_s.quote_if_necessary} #{@bit_offset} #{@bit_size} #{@data_type} "
|
|
413
|
+
|
|
414
|
+
if @data_type == :BLOCK || @data_type == :STRING
|
|
415
|
+
unless value.is_printable?
|
|
416
|
+
val_string = "0x" + value.simple_formatted
|
|
417
|
+
else
|
|
418
|
+
val_string = "\"#{value}\""
|
|
419
|
+
end
|
|
420
|
+
else
|
|
421
|
+
first, last = calculate_range()
|
|
422
|
+
config << "#{first} #{last} "
|
|
423
|
+
val_string = value.to_s
|
|
424
|
+
end
|
|
425
|
+
config << "#{val_string} \"#{@description.to_s.gsub("\"", "'")}\""
|
|
426
|
+
end
|
|
427
|
+
|
|
426
428
|
# Convert a value into the given data type
|
|
427
429
|
def convert(value, data_type)
|
|
428
430
|
case data_type
|