cosmos 3.9.2 → 4.0.0
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/.rubocop.yml +23 -0
- data/.travis.yml +1 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -1
- data/Manifest.txt +137 -52
- data/Rakefile +50 -44
- data/autohotkey/config/system/system.txt +0 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
- data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
- data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
- data/autohotkey/config/targets/META/screens/data.txt +12 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/tools/CmdSequence +14 -0
- data/autohotkey/tools/CmdSequenceAHK +23 -0
- data/autohotkey/tools/CmdSequenceAHK2 +16 -0
- data/autohotkey/tools/cmd_extractor.ahk +2 -2
- data/autohotkey/tools/cmd_sender.ahk +4 -6
- data/autohotkey/tools/cmd_sequence.ahk +215 -0
- data/autohotkey/tools/cmd_sequence2.ahk +23 -0
- data/autohotkey/tools/data_viewer.ahk +2 -3
- data/autohotkey/tools/limits_monitor.ahk +9 -11
- data/autohotkey/tools/open_gl_builder.ahk +1 -2
- data/autohotkey/tools/packet_viewer.ahk +51 -35
- data/autohotkey/tools/replay.ahk +1 -2
- data/autohotkey/tools/script_runner.ahk +1 -2
- data/autohotkey/tools/script_runner2.ahk +1 -2
- data/autohotkey/tools/test_runner2.ahk +1 -5
- data/autohotkey/tools/test_runner3.ahk +1 -3
- data/autohotkey/tools/tlm_grapher.ahk +1 -3
- data/autohotkey/tools/tlm_grapher3.ahk +1 -2
- data/autohotkey/tools/tlm_viewer.ahk +8 -3
- data/autohotkey/tools/tlm_viewer2.ahk +2 -3
- data/autohotkey/tools/tlm_viewer5.ahk +1 -2
- data/cosmos.gemspec +26 -20
- data/data/cmd_sequence.png +0 -0
- data/data/config/_array_params.yaml +23 -0
- data/data/config/_id_items.yaml +24 -0
- data/data/config/_id_params.yaml +58 -0
- data/data/config/_interfaces.yaml +206 -0
- data/data/config/_items.yaml +20 -0
- data/data/config/_params.yaml +58 -0
- data/data/config/cmd_tlm_server.yaml +110 -0
- data/data/config/command.yaml +38 -0
- data/data/config/command_modifiers.yaml +127 -0
- data/data/config/command_telemetry.yaml +3 -0
- data/data/config/data_viewer.yaml +43 -0
- data/data/config/handbook_creator.yaml +23 -0
- data/data/config/housekeeping_params.yaml +71 -0
- data/data/config/interface_modifiers.yaml +44 -0
- data/data/config/item_modifiers.yaml +172 -0
- data/data/config/launcher.yaml +117 -0
- data/data/config/limits_monitor.yaml +53 -0
- data/data/config/linegraph_params.yaml +30 -0
- data/data/config/linegraph_plot.yaml +106 -0
- data/data/config/page_modifiers.yaml +128 -0
- data/data/config/param_item_modifiers.yaml +41 -0
- data/data/config/parameter_modifiers.yaml +144 -0
- data/data/config/protocols.yaml +257 -0
- data/data/config/screen.yaml +151 -0
- data/data/config/script_runner.yaml +15 -0
- data/data/config/system.yaml +153 -0
- data/data/config/table_manager.yaml +76 -0
- data/data/config/table_parameter_modifiers.yaml +9 -0
- data/data/config/target.yaml +71 -0
- data/data/config/telemetry.yaml +73 -0
- data/data/config/telemetry_modifiers.yaml +129 -0
- data/data/config/test_runner.yaml +118 -0
- data/data/config/tlm_extractor.yaml +109 -0
- data/data/config/tlm_grapher.yaml +78 -0
- data/data/config/tlm_viewer.yaml +107 -0
- data/data/config/unknown.yaml +3 -0
- data/data/config/widgets.yaml +1339 -0
- data/data/config/xy_params.yaml +50 -0
- data/data/config/xy_plot.yaml +12 -0
- data/data/config_editor.png +0 -0
- data/data/crc.txt +172 -161
- data/data/delete.png +0 -0
- data/demo/config/data/crc.txt +56 -36
- data/demo/config/data/meta_init.txt +1 -4
- data/demo/config/system/system.txt +15 -3
- data/demo/config/system/system2.txt +13 -3
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
- data/demo/config/targets/EXAMPLE/target.txt +3 -1
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
- data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
- data/demo/config/targets/INST/screens/adcs.txt +39 -15
- data/demo/config/targets/INST/screens/commanding.txt +26 -19
- data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
- data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
- data/demo/config/targets/INST/screens/tabs.txt +0 -2
- data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
- data/demo/config/targets/INST/tables/EventAction.csv +9 -0
- data/demo/config/targets/INST/tables/EventAction.dat +0 -0
- data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
- data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
- data/demo/config/targets/INST/target.txt +4 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
- data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
- data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
- data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
- data/demo/config/targets/SYSTEM/target.txt +12 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
- data/demo/config/targets/TEMPLATED/target.txt +2 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
- data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
- data/demo/config/tools/launcher/launcher.txt +9 -6
- data/demo/config/tools/launcher/launcher2.txt +16 -13
- data/demo/config/tools/launcher/launcher_mini.txt +45 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
- data/demo/config/tools/test_runner/test_runner.txt +1 -1
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/demo/lib/example_background_task.rb +9 -5
- data/demo/lib/example_target.rb +5 -15
- data/demo/lib/scpi_target.rb +4 -10
- data/demo/procedures/cosmos_api_test.rb +17 -0
- data/demo/tools/CmdSequence +16 -0
- data/demo/tools/CmdSequence.bat +9 -0
- data/demo/tools/ConfigEditor +16 -0
- data/demo/tools/ConfigEditor.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/ext/cosmos/ext/packet/packet.c +5 -5
- data/install/config/data/crc.txt +12 -8
- data/install/config/system/system.txt +13 -3
- data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
- data/install/config/targets/SYSTEM/target.txt +12 -0
- data/install/tools/CmdSequence +16 -0
- data/install/tools/CmdSequence.bat +9 -0
- data/install/tools/ConfigEditor +16 -0
- data/install/tools/ConfigEditor.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/lib/cosmos.rb +1 -1
- data/lib/cosmos/config/config_parser.rb +147 -59
- data/lib/cosmos/config/meta_config_parser.rb +57 -0
- data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
- data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
- data/lib/cosmos/core_ext/array.rb +45 -5
- data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
- data/lib/cosmos/core_ext/file.rb +2 -2
- data/lib/cosmos/core_ext/kernel.rb +1 -6
- data/lib/cosmos/core_ext/objectspace.rb +0 -2
- data/lib/cosmos/core_ext/string.rb +27 -4
- data/lib/cosmos/core_ext/time.rb +39 -10
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
- data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
- data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
- data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
- data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
- data/lib/cosmos/gui/dialogs/splash.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
- data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
- data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
- data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
- data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
- data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
- data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
- data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
- data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
- data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
- data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
- data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
- data/lib/cosmos/gui/qt.rb +1 -1
- data/lib/cosmos/gui/qt_tool.rb +21 -10
- data/lib/cosmos/gui/text/completion.rb +23 -2
- data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
- data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
- data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
- data/lib/cosmos/interfaces.rb +10 -0
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
- data/lib/cosmos/interfaces/interface.rb +240 -22
- data/lib/cosmos/interfaces/linc_interface.rb +3 -5
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
- data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
- data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
- data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
- data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
- data/lib/cosmos/interfaces/serial_interface.rb +28 -23
- data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
- data/lib/cosmos/interfaces/stream_interface.rb +36 -108
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
- data/lib/cosmos/interfaces/udp_interface.rb +51 -83
- data/lib/cosmos/io/buffered_file.rb +92 -2
- data/lib/cosmos/io/json_drb.rb +2 -2
- data/lib/cosmos/io/posix_serial_driver.rb +3 -1
- data/lib/cosmos/io/raw_logger.rb +3 -3
- data/lib/cosmos/io/serial_driver.rb +14 -5
- data/lib/cosmos/io/win32_serial_driver.rb +16 -4
- data/lib/cosmos/packet_logs.rb +0 -1
- data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
- data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
- data/lib/cosmos/packets/binary_accessor.rb +599 -32
- data/lib/cosmos/packets/commands.rb +48 -24
- data/lib/cosmos/packets/packet.rb +140 -54
- data/lib/cosmos/packets/packet_config.rb +0 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
- data/lib/cosmos/packets/structure.rb +81 -33
- data/lib/cosmos/packets/structure_item.rb +45 -5
- data/lib/cosmos/packets/telemetry.rb +149 -55
- data/lib/cosmos/script/api_shared.rb +1000 -0
- data/lib/cosmos/script/commands.rb +2 -2
- data/lib/cosmos/script/extract.rb +19 -4
- data/lib/cosmos/script/limits.rb +2 -0
- data/lib/cosmos/script/script.rb +1 -1
- data/lib/cosmos/script/scripting.rb +4 -784
- data/lib/cosmos/script/telemetry.rb +44 -23
- data/lib/cosmos/script/tools.rb +15 -69
- data/lib/cosmos/streams/serial_stream.rb +12 -19
- data/lib/cosmos/streams/stream.rb +2 -11
- data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
- data/lib/cosmos/system/system.rb +187 -31
- data/lib/cosmos/system/target.rb +11 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
- data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
- data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
- data/lib/cosmos/tools/launcher/launcher.rb +29 -12
- data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
- data/lib/cosmos/tools/replay/replay.rb +36 -20
- data/lib/cosmos/tools/replay/replay_server.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
- data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
- data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
- data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
- data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
- data/lib/cosmos/top_level.rb +34 -24
- data/lib/cosmos/utilities/crc.rb +108 -6
- data/lib/cosmos/utilities/csv.rb +68 -14
- data/lib/cosmos/utilities/logger.rb +2 -2
- data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
- data/lib/cosmos/version.rb +6 -6
- data/lib/cosmos/win32/win32_main.rb +50 -46
- data/run_gui_tests.bat +3 -1
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
- data/spec/core_ext/file_spec.rb +1 -1
- data/spec/core_ext/objectspace_spec.rb +12 -9
- data/spec/core_ext/string_spec.rb +6 -0
- data/spec/core_ext/time_spec.rb +10 -0
- data/spec/gui/line_graph/line_clip_spec.rb +226 -224
- data/spec/gui/qt_spec.rb +81 -79
- data/spec/install/config/system/system.txt +0 -6
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
- data/spec/install/config/targets/SYSTEM/target.txt +12 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
- data/spec/interfaces/interface_spec.rb +402 -18
- data/spec/interfaces/linc_interface_spec.rb +37 -39
- data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
- data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
- data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
- data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
- data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
- data/spec/interfaces/serial_interface_spec.rb +35 -34
- data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
- data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
- data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
- data/spec/interfaces/udp_interface_spec.rb +120 -55
- data/spec/io/serial_driver_spec.rb +41 -39
- data/spec/io/udp_sockets_spec.rb +13 -8
- data/spec/io/win32_serial_driver_spec.rb +62 -59
- data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
- data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
- data/spec/packets/commands_spec.rb +5 -5
- data/spec/packets/packet_spec.rb +2 -14
- data/spec/script/extract_spec.rb +21 -7
- data/spec/script/scripting_spec.rb +261 -6
- data/spec/script/telemetry_spec.rb +17 -9
- data/spec/spec_helper.rb +26 -10
- data/spec/streams/serial_stream_spec.rb +87 -82
- data/spec/streams/tcpip_client_stream_spec.rb +12 -4
- data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
- data/spec/system/system_spec.rb +66 -50
- data/spec/system/target_spec.rb +33 -11
- data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
- data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
- data/spec/top_level/top_level_spec.rb +39 -11
- data/spec/utilities/csv_spec.rb +62 -20
- data/tasks/gemfile_stats.rake +6 -3
- data/test/performance/config/system/system_packets.txt +0 -1
- data/test/performance/config/system/system_threads.txt +0 -1
- metadata +177 -92
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/autohotkey/config/targets/COSMOS/target.txt +0 -5
- data/autohotkey/userpath.txt +0 -1
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/demo/config/targets/COSMOS/screens/version.txt +0 -19
- data/demo/config/targets/COSMOS/target.txt +0 -11
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
- data/demo/userpath.txt +0 -1
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/install/config/targets/COSMOS/target.txt +0 -9
- data/install/config/targets/SYSTEM/README.txt +0 -1
- data/install/userpath.txt +0 -1
- data/lib/cosmos/io/tcpip_server.rb +0 -571
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
- data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
- data/lib/cosmos/streams/stream_protocol.rb +0 -373
- data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/spec/install/config/targets/COSMOS/target.txt +0 -5
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
- data/spec/install/userpath.txt +0 -1
- data/spec/interfaces/stream_interface_spec.rb +0 -157
- data/spec/io/tcpip_server_spec.rb +0 -338
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
- data/spec/streams/burst_stream_protocol_spec.rb +0 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
- data/spec/streams/length_stream_protocol_spec.rb +0 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
- data/spec/streams/stream_protocol_spec.rb +0 -346
- data/spec/streams/template_stream_protocol_spec.rb +0 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
- data/test/performance/userpath.txt +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/bin/bash -l
|
|
2
|
+
TOOLNAME=CmdSequence
|
|
3
|
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
4
|
+
rm $DIR/$TOOLNAME
|
|
5
|
+
if hash rbenv 2>/dev/null; then
|
|
6
|
+
ln -s `rbenv which ruby` $DIR/$TOOLNAME
|
|
7
|
+
else
|
|
8
|
+
ln -s `which ruby` $DIR/$TOOLNAME
|
|
9
|
+
fi
|
|
10
|
+
exec $DIR/$TOOLNAME $DIR/$TOOLNAME.rb "$@" &
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# encoding: ascii-8bit
|
|
3
|
+
|
|
4
|
+
# Copyright 2015 Ball Aerospace & Technologies Corp.
|
|
5
|
+
# All Rights Reserved.
|
|
6
|
+
#
|
|
7
|
+
# This program is free software; you can modify and/or redistribute it
|
|
8
|
+
# under the terms of the GNU General Public License
|
|
9
|
+
# as published by the Free Software Foundation; version 3 with
|
|
10
|
+
# attribution addendums as found in the LICENSE.txt
|
|
11
|
+
|
|
12
|
+
def tool_launch
|
|
13
|
+
begin
|
|
14
|
+
require 'bundler/setup'
|
|
15
|
+
require 'cosmos'
|
|
16
|
+
yield
|
|
17
|
+
rescue Exception => error
|
|
18
|
+
popup_error = error; popup_error = $cosmos_fatal_exception if defined? $cosmos_fatal_exception
|
|
19
|
+
begin
|
|
20
|
+
raise error if STDIN.isatty # Have a console
|
|
21
|
+
raise error unless defined? $cosmos_fatal_exception or (error.class != SystemExit and error.class != Interrupt)
|
|
22
|
+
case RUBY_PLATFORM
|
|
23
|
+
when /mingw32/
|
|
24
|
+
require 'fiddle'
|
|
25
|
+
Fiddle::Function.new(Fiddle.dlopen('user32')['MessageBox'], [Fiddle::TYPE_LONG, Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP, Fiddle::TYPE_LONG], Fiddle::TYPE_LONG).call(0, "#{popup_error.class}:#{popup_error.message}\n\n#{popup_error.backtrace.join("\n")}\n\nNote: Ctrl-C will copy this information to the clipboard.", "Error Starting COSMOS Tool", 0x50030)
|
|
26
|
+
when /darwin/
|
|
27
|
+
system("osascript -e 'display notification \"#{popup_error.class}:#{popup_error.message}:#{popup_error.backtrace[0].tr("'\"`<>", '')}\" with title \"Error Starting COSMOS Tool\"'")
|
|
28
|
+
else
|
|
29
|
+
message = "#{popup_error.class}:#{popup_error.message}\\n\\n#{popup_error.backtrace.join("\\n").tr("'\"`<>", '')}"
|
|
30
|
+
command = "zenity --info --text=\"#{message}\" --title=\"Error Starting COSMOS Tool\""
|
|
31
|
+
success = system(command)
|
|
32
|
+
system("notify-send \"Error Starting COSMOS Tool\" \"#{message}\"") unless success
|
|
33
|
+
end
|
|
34
|
+
ensure
|
|
35
|
+
raise error
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
Binary file
|
data/lib/cosmos.rb
CHANGED
|
@@ -34,7 +34,7 @@ if Kernel.is_windows?
|
|
|
34
34
|
else
|
|
35
35
|
ENV['PATH'] = File.join(File.dirname(__FILE__), '../bin') + ':' + ENV['PATH']
|
|
36
36
|
end
|
|
37
|
-
require 'cosmos/ext/platform'
|
|
37
|
+
require 'cosmos/ext/platform' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
|
|
38
38
|
|
|
39
39
|
# Remove warning about dl deprecation in Ruby 2.0 and 2.1
|
|
40
40
|
saved_verbose = $VERBOSE; $VERBOSE = nil
|
|
@@ -8,12 +8,11 @@
|
|
|
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/ext/config_parser'
|
|
11
|
+
require 'cosmos/ext/config_parser' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
|
|
12
12
|
require 'tempfile'
|
|
13
13
|
require 'erb'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
17
16
|
# Reads COSMOS style configuration data which consists of keywords followed
|
|
18
17
|
# by 0 or more comma delimited parameters. Parameters with spaces must be
|
|
19
18
|
# enclosed in quotes. Quotes should also be used to indicate a parameter is a
|
|
@@ -131,7 +130,7 @@ module Cosmos
|
|
|
131
130
|
end
|
|
132
131
|
|
|
133
132
|
# @param url [String] The url to link to in error messages
|
|
134
|
-
def initialize(url = "
|
|
133
|
+
def initialize(url = "http://cosmosrb.com/docs/home")
|
|
135
134
|
@url = url
|
|
136
135
|
end
|
|
137
136
|
|
|
@@ -180,21 +179,16 @@ module Cosmos
|
|
|
180
179
|
remove_quotes = true,
|
|
181
180
|
&block)
|
|
182
181
|
@filename = filename
|
|
183
|
-
file = nil
|
|
184
|
-
unparsed_data = nil
|
|
185
|
-
begin
|
|
186
|
-
# Create a temp file where we can write the ERB parsed output
|
|
187
|
-
file = Tempfile.new("parsed_#{File.basename(filename)}")
|
|
188
|
-
unparsed_data = File.read(@filename)
|
|
189
|
-
file.write(ERB.new(unparsed_data).result(binding))
|
|
190
|
-
file.rewind
|
|
191
182
|
|
|
192
|
-
|
|
183
|
+
# Create a temp file where we write the ERB parsed output
|
|
184
|
+
file = create_parsed_output_file(filename)
|
|
185
|
+
size = file.stat.size.to_f
|
|
193
186
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
187
|
+
# Callbacks for beginning of parsing
|
|
188
|
+
@@message_callback.call("Parsing #{size} bytes of #{filename}") if @@message_callback
|
|
189
|
+
@@progress_callback.call(0.0) if @@progress_callback
|
|
197
190
|
|
|
191
|
+
begin
|
|
198
192
|
# Loop through each line of the data
|
|
199
193
|
parse_loop(file,
|
|
200
194
|
yield_non_keyword_lines,
|
|
@@ -202,13 +196,8 @@ module Cosmos
|
|
|
202
196
|
size,
|
|
203
197
|
PARSING_REGEX,
|
|
204
198
|
&block)
|
|
205
|
-
rescue Exception => e
|
|
206
|
-
|
|
207
|
-
if debug_file
|
|
208
|
-
raise e, "#{e}\nDebug output in #{debug_file}", e.backtrace
|
|
209
|
-
else
|
|
210
|
-
raise e
|
|
211
|
-
end
|
|
199
|
+
rescue Exception => e # Catch EVERYTHING so we can re-raise with additional info
|
|
200
|
+
raise e, "#{e}\n\nParsed output in #{file.path}", e.backtrace
|
|
212
201
|
ensure
|
|
213
202
|
file.close unless file.closed?
|
|
214
203
|
end
|
|
@@ -225,7 +214,7 @@ module Cosmos
|
|
|
225
214
|
# for a backwards range
|
|
226
215
|
(1..min_num_params).each do |index|
|
|
227
216
|
# If the parameter is nil (0 based) then we have a problem
|
|
228
|
-
if @parameters[index-1].nil?
|
|
217
|
+
if @parameters[index - 1].nil?
|
|
229
218
|
raise Error.new(self, "Not enough parameters for #{@keyword}.", usage, @url)
|
|
230
219
|
end
|
|
231
220
|
end
|
|
@@ -329,7 +318,7 @@ module Cosmos
|
|
|
329
318
|
when 'MIN_FLOAT64'
|
|
330
319
|
return -Float::MAX
|
|
331
320
|
when 'MAX_FLOAT64'
|
|
332
|
-
|
|
321
|
+
return Float::MAX
|
|
333
322
|
when 'MIN_FLOAT32'
|
|
334
323
|
return -3.402823e38
|
|
335
324
|
when 'MAX_FLOAT32'
|
|
@@ -347,30 +336,31 @@ module Cosmos
|
|
|
347
336
|
|
|
348
337
|
protected
|
|
349
338
|
|
|
350
|
-
# Writes the parsed results
|
|
351
|
-
def
|
|
339
|
+
# Writes the ERB parsed results
|
|
340
|
+
def create_parsed_output_file(filename)
|
|
352
341
|
begin
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
end
|
|
369
|
-
rescue Exception
|
|
370
|
-
# Oh well - we tried
|
|
371
|
-
debug_file = nil
|
|
342
|
+
output = ERB.new(File.read(filename)).result(binding)
|
|
343
|
+
rescue => e
|
|
344
|
+
# The first line of the backtrace indicates the line where the ERB
|
|
345
|
+
# parse failed. Grab the line number for the error message.
|
|
346
|
+
match = /:(.*):/.match(e.backtrace[0])
|
|
347
|
+
line_number = match.captures[0] if match
|
|
348
|
+
raise e, "ERB error at #{filename}:#{line_number}\n#{e}", e.backtrace
|
|
349
|
+
end
|
|
350
|
+
# Make a copy of the filename since we're calling slice! which modifies
|
|
351
|
+
# it directly. Downcase to avoid filesytem case issues.
|
|
352
|
+
copy = filename.downcase.dup
|
|
353
|
+
if copy.include?(Cosmos::USERPATH.downcase)
|
|
354
|
+
copy.slice!(Cosmos::USERPATH.downcase) # Remove the USERPATH
|
|
355
|
+
elsif copy.include?(':') # Check for Windows drive letter
|
|
356
|
+
copy = copy.split(':')[1]
|
|
372
357
|
end
|
|
373
|
-
|
|
358
|
+
parsed_filename = File.join(Cosmos::USERPATH, 'outputs', 'tmp', copy)
|
|
359
|
+
FileUtils.mkdir_p(File.dirname(parsed_filename)) # Create the path
|
|
360
|
+
file = File.open(parsed_filename, 'w+')
|
|
361
|
+
file.puts output
|
|
362
|
+
file.rewind # Rewind so the file is ready to read
|
|
363
|
+
file
|
|
374
364
|
end
|
|
375
365
|
|
|
376
366
|
def self.calculate_range_value(type, data_type, bit_size)
|
|
@@ -379,9 +369,9 @@ module Cosmos
|
|
|
379
369
|
case data_type
|
|
380
370
|
when :INT
|
|
381
371
|
if type == 'MIN'
|
|
382
|
-
value = -2**(bit_size-1)
|
|
372
|
+
value = -2**(bit_size - 1)
|
|
383
373
|
else # 'MAX'
|
|
384
|
-
value = 2**(bit_size-1) - 1
|
|
374
|
+
value = 2**(bit_size - 1) - 1
|
|
385
375
|
end
|
|
386
376
|
when :UINT
|
|
387
377
|
# Default is 0 for 'MIN'
|
|
@@ -405,16 +395,114 @@ module Cosmos
|
|
|
405
395
|
value
|
|
406
396
|
end
|
|
407
397
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
398
|
+
if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
|
|
399
|
+
# Iterates over each line of the io object and yields the keyword and parameters
|
|
400
|
+
def parse_loop(io, yield_non_keyword_lines, remove_quotes, size, rx)
|
|
401
|
+
line_continuation = false
|
|
402
|
+
|
|
403
|
+
@line_number = 0
|
|
404
|
+
@keyword = nil
|
|
405
|
+
@parameters = []
|
|
406
|
+
@line = nil
|
|
407
|
+
|
|
408
|
+
while true
|
|
409
|
+
@line_number += 1
|
|
417
410
|
|
|
418
|
-
|
|
411
|
+
if @@progress_callback && ((@line_number % 10) == 0)
|
|
412
|
+
@@progress_callback.call(io.pos / size) if size > 0.0
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
begin
|
|
416
|
+
line = io.readline
|
|
417
|
+
rescue Exception
|
|
418
|
+
break
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
line.strip!
|
|
422
|
+
data = line.scan(rx)
|
|
423
|
+
first_item = data[0].to_s
|
|
424
|
+
|
|
425
|
+
if line_continuation
|
|
426
|
+
@line << line
|
|
427
|
+
# Carry over keyword and parameters
|
|
428
|
+
else
|
|
429
|
+
@line = line
|
|
430
|
+
if (first_item.length == 0) || (first_item[0] == '#')
|
|
431
|
+
@keyword = nil
|
|
432
|
+
else
|
|
433
|
+
@keyword = first_item.upcase
|
|
434
|
+
end
|
|
435
|
+
@parameters = []
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
# Ignore comments and blank lines
|
|
439
|
+
if @keyword.nil?
|
|
440
|
+
if (yield_non_keyword_lines) && (!line_continuation)
|
|
441
|
+
yield(@keyword, @parameters)
|
|
442
|
+
end
|
|
443
|
+
next
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
if line_continuation
|
|
447
|
+
if remove_quotes
|
|
448
|
+
@parameters << first_item.remove_quotes
|
|
449
|
+
else
|
|
450
|
+
@parameters << first_item
|
|
451
|
+
end
|
|
452
|
+
line_continuation = false
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
length = data.length
|
|
456
|
+
if (length > 1)
|
|
457
|
+
(1..(length - 1)).each do |index|
|
|
458
|
+
string = data[index]
|
|
459
|
+
|
|
460
|
+
# Don't process trailing comments such as:
|
|
461
|
+
# KEYWORD PARAM #This is a comment
|
|
462
|
+
# But still process Ruby string interpolations such as:
|
|
463
|
+
# KEYWORD PARAM #{var}
|
|
464
|
+
if (string.length > 0) && (string[0] == '#')
|
|
465
|
+
if !((string.length > 1) && (string[1] == '{'))
|
|
466
|
+
break
|
|
467
|
+
end
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
# If the string is simply '&' and its the last string then its a line continuation so break the loop
|
|
471
|
+
if (string.length == 1) && (string[0] == '&') && (index == (length - 1))
|
|
472
|
+
line_continuation = true
|
|
473
|
+
next
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
line_continuation = false
|
|
477
|
+
if remove_quotes
|
|
478
|
+
@parameters << string.remove_quotes
|
|
479
|
+
else
|
|
480
|
+
@parameters << string
|
|
481
|
+
end
|
|
482
|
+
end
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
# If we detected a line continuation while going through all the
|
|
486
|
+
# strings on the line then we strip off the continuation character and
|
|
487
|
+
# return to the top of the loop to continue processing the line.
|
|
488
|
+
if line_continuation
|
|
489
|
+
# Strip the continuation character
|
|
490
|
+
if @line.length >= 1
|
|
491
|
+
@line = @line[0..-2]
|
|
492
|
+
else
|
|
493
|
+
@line = ""
|
|
494
|
+
end
|
|
495
|
+
next
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
yield(@keyword, @parameters)
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
@@progress_callback.call(1.0) if @@progress_callback
|
|
502
|
+
|
|
503
|
+
return nil
|
|
504
|
+
end
|
|
505
|
+
end
|
|
419
506
|
|
|
420
|
-
end
|
|
507
|
+
end
|
|
508
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
require 'erb'
|
|
12
|
+
require 'psych'
|
|
13
|
+
require 'tempfile'
|
|
14
|
+
|
|
15
|
+
class Array
|
|
16
|
+
def to_meta_config_yaml(indentation = 0)
|
|
17
|
+
Psych.dump(self).split("\n")[1..-1].join("\n#{' '*indentation}")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
class Hash
|
|
21
|
+
def to_meta_config_yaml(indentation = 0)
|
|
22
|
+
Psych.dump(self).split("\n")[1..-1].join("\n#{' '*indentation}")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
module Cosmos
|
|
27
|
+
# Reads YAML formatted files describing a configuration file
|
|
28
|
+
class MetaConfigParser
|
|
29
|
+
def self.load(filename)
|
|
30
|
+
data = nil
|
|
31
|
+
if File.exist?(filename)
|
|
32
|
+
path = filename
|
|
33
|
+
else
|
|
34
|
+
path = Cosmos.data_path("config/#{filename}")
|
|
35
|
+
end
|
|
36
|
+
tf = Tempfile.new("temp.yaml")
|
|
37
|
+
output = ERB.new(File.read(path)).result(binding)
|
|
38
|
+
tf.write(output)
|
|
39
|
+
tf.close
|
|
40
|
+
begin
|
|
41
|
+
data = Psych.load_file(tf.path)
|
|
42
|
+
rescue => error
|
|
43
|
+
error_file = "ERROR_#{filename}"
|
|
44
|
+
File.open(error_file, 'w') { |file| file.puts output }
|
|
45
|
+
raise error.exception("#{error.message}\n\nParsed output written to #{File.expand_path(error_file)}\n")
|
|
46
|
+
end
|
|
47
|
+
tf.unlink
|
|
48
|
+
data
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.dump(object, filename)
|
|
52
|
+
File.open(filename, 'w') do |file|
|
|
53
|
+
file.write Psych.dump(object)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
# attribution addendums as found in the LICENSE.txt
|
|
10
10
|
|
|
11
11
|
require 'cosmos/conversions/conversion'
|
|
12
|
-
require 'cosmos/ext/polynomial_conversion'
|
|
12
|
+
require 'cosmos/ext/polynomial_conversion' if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_EXT']
|
|
13
13
|
|
|
14
14
|
module Cosmos
|
|
15
15
|
|
|
@@ -33,9 +33,25 @@ module Cosmos
|
|
|
33
33
|
@converted_bit_size = 64
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if RUBY_ENGINE != 'ruby' or ENV['COSMOS_NO_EXT']
|
|
37
|
+
# @param (see Conversion#call)
|
|
38
|
+
# @return [Float] The value with the polynomial applied
|
|
39
|
+
def call(value, myself, buffer)
|
|
40
|
+
value = value.to_f
|
|
41
|
+
|
|
42
|
+
# Handle C0
|
|
43
|
+
result = @coeffs[0]
|
|
44
|
+
|
|
45
|
+
# Handle Coefficients raised to a power
|
|
46
|
+
raised_to_power = 1.0
|
|
47
|
+
@coeffs[1..-1].each do |coeff|
|
|
48
|
+
raised_to_power *= value
|
|
49
|
+
result += (coeff * raised_to_power)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
return result
|
|
53
|
+
end
|
|
54
|
+
end
|
|
39
55
|
|
|
40
56
|
# @return [String] Class followed by the list of coefficients
|
|
41
57
|
def to_s
|
|
@@ -31,18 +31,18 @@ module Cosmos
|
|
|
31
31
|
# @return [Float] Packet time in seconds since UNIX epoch
|
|
32
32
|
def call(value, packet, buffer)
|
|
33
33
|
if @microseconds_item_name
|
|
34
|
-
return Time.at(packet.read(@seconds_item_name, :RAW, buffer), packet.read(@microseconds_item_name, :RAW, buffer))
|
|
34
|
+
return Time.at(packet.read(@seconds_item_name, :RAW, buffer), packet.read(@microseconds_item_name, :RAW, buffer)).sys
|
|
35
35
|
else
|
|
36
|
-
return Time.at(packet.read(@seconds_item_name, :RAW, buffer), 0)
|
|
36
|
+
return Time.at(packet.read(@seconds_item_name, :RAW, buffer), 0).sys
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
# @return [String] The name of the class followed by the time conversion
|
|
41
41
|
def to_s
|
|
42
42
|
if @microseconds_item_name
|
|
43
|
-
return "Time.at(packet.read('#{@seconds_item_name}', :RAW, buffer), packet.read('#{@microseconds_item_name}', :RAW, buffer))"
|
|
43
|
+
return "Time.at(packet.read('#{@seconds_item_name}', :RAW, buffer), packet.read('#{@microseconds_item_name}', :RAW, buffer)).sys"
|
|
44
44
|
else
|
|
45
|
-
return "Time.at(packet.read('#{@seconds_item_name}', :RAW, buffer), 0)"
|
|
45
|
+
return "Time.at(packet.read('#{@seconds_item_name}', :RAW, buffer), 0).sys"
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|