cosmos 3.0.1 → 3.1.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/.coveralls.yml +1 -0
- data/.gitignore +48 -48
- data/.travis.yml +7 -7
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +6 -6
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1116 -1114
- data/README.md +109 -107
- data/Rakefile +214 -214
- data/autohotkey/config/data/diamond.STL +57 -57
- data/autohotkey/config/system/system.txt +34 -34
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/autohotkey/config/targets/COSMOS/target.txt +5 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -294
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
- data/autohotkey/config/targets/INST/screens/array.txt +7 -7
- data/autohotkey/config/targets/INST/screens/block.txt +8 -8
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
- data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
- data/autohotkey/config/targets/INST/screens/image.txt +21 -21
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
- data/autohotkey/config/targets/INST/screens/other.txt +25 -25
- data/autohotkey/config/targets/INST/screens/params.txt +25 -25
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
- data/autohotkey/config/targets/INST/target.txt +26 -26
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/autohotkey/config/tools/launcher/launcher.txt +38 -38
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
- data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
- data/autohotkey/lib/example_background_task.rb +42 -42
- data/autohotkey/lib/user_version.rb +3 -3
- data/autohotkey/procedures/clear_util.rb +7 -7
- data/autohotkey/procedures/collect.rb +18 -18
- data/autohotkey/procedures/collect_util.rb +14 -14
- data/autohotkey/procedures/example_test.rb +67 -67
- data/autohotkey/procedures/example_test2.rb +74 -74
- data/autohotkey/procedures/script_test.rb +17 -17
- data/autohotkey/procedures/syntax_error.rb +18 -18
- data/autohotkey/tools/CmdExtractorAHK +16 -16
- data/autohotkey/tools/CmdSender +14 -14
- data/autohotkey/tools/CmdSenderAHK +18 -18
- data/autohotkey/tools/CmdTlmServer +14 -14
- data/autohotkey/tools/CmdTlmServerAHK +28 -28
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
- data/autohotkey/tools/DataViewer +14 -14
- data/autohotkey/tools/DataViewerAHK +17 -17
- data/autohotkey/tools/HandbookCreatorAHK +20 -20
- data/autohotkey/tools/LauncherAHK +17 -17
- data/autohotkey/tools/LimitsMonitorAHK +20 -20
- data/autohotkey/tools/OpenGLBuilderAHK +20 -20
- data/autohotkey/tools/PacketViewer +14 -14
- data/autohotkey/tools/PacketViewerAHK +18 -18
- data/autohotkey/tools/PacketViewerAHK2 +17 -17
- data/autohotkey/tools/Replay +14 -14
- data/autohotkey/tools/Replay.bat +59 -59
- data/autohotkey/tools/ReplayAHK +17 -17
- data/autohotkey/tools/ScriptRunner +14 -14
- data/autohotkey/tools/ScriptRunnerAHK +20 -20
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
- data/autohotkey/tools/TableManager +14 -14
- data/autohotkey/tools/TableManagerAHK +30 -30
- data/autohotkey/tools/TestRunner +15 -15
- data/autohotkey/tools/TestRunnerAHK +17 -17
- data/autohotkey/tools/TestRunnerAHK2 +17 -17
- data/autohotkey/tools/TestRunnerAHK3 +17 -17
- data/autohotkey/tools/TestRunnerAHK4 +17 -17
- data/autohotkey/tools/TlmExtractor +15 -15
- data/autohotkey/tools/TlmExtractorAHK +19 -19
- data/autohotkey/tools/TlmExtractorAHK2 +16 -16
- data/autohotkey/tools/TlmExtractorAHK3 +16 -16
- data/autohotkey/tools/TlmGrapher +14 -14
- data/autohotkey/tools/TlmGrapherAHK +19 -19
- data/autohotkey/tools/TlmGrapherAHK2 +23 -23
- data/autohotkey/tools/TlmGrapherAHK3 +17 -17
- data/autohotkey/tools/TlmGrapherAHK4 +17 -17
- data/autohotkey/tools/TlmViewer +14 -14
- data/autohotkey/tools/TlmViewerAHK +28 -28
- data/autohotkey/tools/TlmViewerAHK2 +18 -18
- data/autohotkey/tools/TlmViewerAHK3 +18 -18
- data/autohotkey/tools/TlmViewerAHK4 +18 -18
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +27 -27
- data/autohotkey/tools/cmd_sender.ahk +182 -162
- data/autohotkey/tools/cmd_tlm_server.ahk +89 -89
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +135 -135
- data/autohotkey/tools/handbook_creator.ahk +23 -23
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +70 -70
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +143 -143
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +98 -98
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +34 -31
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -259
- data/autohotkey/tools/test_runner2.ahk +52 -52
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/tlm_extractor.ahk +272 -272
- data/autohotkey/tools/tlm_grapher.ahk +642 -642
- data/autohotkey/tools/tlm_grapher2.ahk +115 -115
- data/autohotkey/tools/tlm_grapher3.ahk +24 -24
- data/autohotkey/tools/tlm_viewer.ahk +133 -133
- data/autohotkey/tools/tlm_viewer2.ahk +50 -49
- data/autohotkey/tools/tlm_viewer4.ahk +4 -4
- data/autohotkey/tools/tlm_viewer5.ahk +20 -20
- data/bin/cosmos +96 -96
- data/bin/cstol_converter +1166 -1166
- data/bin/rubysloc +85 -85
- data/cosmos.gemspec +98 -97
- data/data/about.txt +4 -4
- data/data/crc.txt +306 -305
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +6 -6
- data/demo/Launcher +15 -15
- data/demo/Launcher.bat +59 -59
- data/demo/Rakefile +61 -61
- data/demo/config/data/crc.txt +222 -206
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +34 -34
- data/demo/config/system/system2.txt +33 -33
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/demo/config/targets/COSMOS/screens/version.txt +19 -19
- data/demo/config/targets/COSMOS/target.txt +11 -11
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -3
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
- data/demo/config/targets/EXAMPLE/target.txt +6 -6
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/demo/config/targets/INST/lib/sim_inst.rb +305 -294
- data/demo/config/targets/INST/screens/adcs.txt +46 -46
- data/demo/config/targets/INST/screens/array.txt +15 -15
- data/demo/config/targets/INST/screens/block.txt +8 -8
- data/demo/config/targets/INST/screens/commanding.txt +30 -30
- data/demo/config/targets/INST/screens/graphs.txt +14 -14
- data/demo/config/targets/INST/screens/ground.txt +25 -25
- data/demo/config/targets/INST/screens/hs.txt +44 -44
- data/demo/config/targets/INST/screens/latest.txt +23 -23
- data/demo/config/targets/INST/screens/other.txt +29 -29
- data/demo/config/targets/INST/screens/tabs.txt +70 -70
- data/demo/config/targets/INST/target.txt +33 -33
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +54 -48
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -33
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -29
- data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/demo/config/tools/launcher/launcher.txt +45 -45
- data/demo/config/tools/launcher/launcher2.txt +45 -45
- data/demo/config/tools/script_runner/script_runner.txt +3 -3
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/demo/config/tools/test_runner/test_runner.txt +17 -17
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
- data/demo/lib/example_background_task.rb +57 -52
- data/demo/lib/example_target.rb +113 -108
- data/demo/lib/scpi_target.rb +74 -74
- data/demo/lib/user_version.rb +3 -3
- data/demo/procedures/checks.rb +11 -11
- data/demo/procedures/clear_util.rb +7 -7
- data/demo/procedures/collect.rb +18 -18
- data/demo/procedures/collect_util.rb +14 -14
- data/demo/procedures/cosmos_api_test.rb +293 -293
- data/demo/procedures/disconnect.rb +29 -29
- data/demo/procedures/example_test.rb +182 -182
- data/demo/procedures/plot_test.rb +8 -8
- data/demo/procedures/run_example_test.rb +3 -3
- data/demo/procedures/test.rb +51 -51
- data/demo/tools/CmdExtractor +15 -15
- data/demo/tools/CmdExtractor.bat +59 -59
- data/demo/tools/CmdSender +15 -15
- data/demo/tools/CmdSender.bat +59 -59
- data/demo/tools/CmdTlmServer +15 -15
- data/demo/tools/CmdTlmServer.bat +59 -59
- data/demo/tools/DataViewer +15 -15
- data/demo/tools/DataViewer.bat +59 -59
- data/demo/tools/ExampleTarget +15 -15
- data/demo/tools/ExampleTarget.bat +59 -59
- data/demo/tools/HandbookCreator +15 -15
- data/demo/tools/HandbookCreator.bat +61 -61
- data/demo/tools/Launcher +15 -15
- data/demo/tools/Launcher.bat +59 -59
- data/demo/tools/LimitsMonitor +15 -15
- data/demo/tools/LimitsMonitor.bat +59 -59
- data/demo/tools/OpenGLBuilder +15 -15
- data/demo/tools/OpenGLBuilder.bat +59 -59
- data/demo/tools/PacketViewer +15 -15
- data/demo/tools/PacketViewer.bat +59 -59
- data/demo/tools/Replay +15 -15
- data/demo/tools/Replay.bat +59 -59
- data/demo/tools/ScpiTarget +15 -15
- data/demo/tools/ScpiTarget.bat +59 -59
- data/demo/tools/ScriptRunner +15 -15
- data/demo/tools/ScriptRunner.bat +59 -59
- data/demo/tools/TableManager +15 -15
- data/demo/tools/TableManager.bat +59 -59
- data/demo/tools/TestRunner +15 -15
- data/demo/tools/TestRunner.bat +59 -59
- data/demo/tools/TlmExtractor +15 -15
- data/demo/tools/TlmExtractor.bat +59 -59
- data/demo/tools/TlmGrapher +15 -15
- data/demo/tools/TlmGrapher.bat +59 -59
- data/demo/tools/TlmViewer +15 -15
- data/demo/tools/TlmViewer.bat +59 -59
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/ext/cosmos/ext/array/array.c +111 -111
- data/ext/cosmos/ext/array/extconf.rb +13 -13
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
- data/ext/cosmos/ext/crc/crc.c +341 -341
- data/ext/cosmos/ext/crc/extconf.rb +12 -12
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -261
- data/ext/cosmos/ext/packet/extconf.rb +13 -13
- data/ext/cosmos/ext/packet/packet.c +339 -339
- data/ext/cosmos/ext/platform/extconf.rb +13 -13
- data/ext/cosmos/ext/platform/platform.c +81 -81
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
- data/ext/cosmos/ext/string/extconf.rb +13 -13
- data/ext/cosmos/ext/string/string.c +49 -49
- data/ext/cosmos/ext/structure/structure.c +894 -894
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
- data/ext/cosmos/ext/telemetry/telemetry.c +306 -306
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +6 -6
- data/install/Launcher +14 -14
- data/install/Launcher.bat +59 -59
- data/install/Rakefile +61 -61
- data/install/config/data/crc.txt +134 -133
- data/install/config/system/system.txt +29 -29
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/install/config/targets/COSMOS/target.txt +8 -8
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/install/config/tools/data_viewer/data_viewer.txt +3 -3
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/install/config/tools/launcher/launcher.txt +39 -39
- data/install/config/tools/script_runner/script_runner.txt +3 -3
- data/install/config/tools/test_runner/test_runner.txt +8 -8
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/install/lib/user_version.rb +3 -3
- data/install/tools/CmdExtractor +15 -15
- data/install/tools/CmdExtractor.bat +59 -59
- data/install/tools/CmdSender +15 -15
- data/install/tools/CmdSender.bat +59 -59
- data/install/tools/CmdTlmServer +15 -15
- data/install/tools/CmdTlmServer.bat +59 -59
- data/install/tools/DataViewer +15 -15
- data/install/tools/DataViewer.bat +59 -59
- data/install/tools/HandbookCreator +15 -15
- data/install/tools/HandbookCreator.bat +61 -61
- data/install/tools/Launcher +15 -15
- data/install/tools/Launcher.bat +59 -59
- data/install/tools/LimitsMonitor +15 -15
- data/install/tools/LimitsMonitor.bat +59 -59
- data/install/tools/OpenGLBuilder +15 -15
- data/install/tools/OpenGLBuilder.bat +59 -59
- data/install/tools/PacketViewer +15 -15
- data/install/tools/PacketViewer.bat +59 -59
- data/install/tools/Replay +15 -15
- data/install/tools/Replay.bat +59 -59
- data/install/tools/ScriptRunner +15 -15
- data/install/tools/ScriptRunner.bat +59 -59
- data/install/tools/TableManager +15 -15
- data/install/tools/TableManager.bat +59 -59
- data/install/tools/TestRunner +15 -15
- data/install/tools/TestRunner.bat +59 -59
- data/install/tools/TlmExtractor +15 -15
- data/install/tools/TlmExtractor.bat +59 -59
- data/install/tools/TlmGrapher +15 -15
- data/install/tools/TlmGrapher.bat +59 -59
- data/install/tools/TlmViewer +15 -15
- data/install/tools/TlmViewer.bat +59 -59
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/lib/cosmos.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
- data/lib/cosmos/config/config_parser.rb +324 -324
- data/lib/cosmos/conversions.rb +13 -13
- data/lib/cosmos/conversions/conversion.rb +47 -47
- data/lib/cosmos/conversions/generic_conversion.rb +55 -55
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
- data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
- data/lib/cosmos/conversions/processor_conversion.rb +46 -46
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
- data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
- data/lib/cosmos/core_ext.rb +18 -18
- data/lib/cosmos/core_ext/array.rb +354 -354
- data/lib/cosmos/core_ext/class.rb +51 -51
- data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
- data/lib/cosmos/core_ext/exception.rb +52 -52
- data/lib/cosmos/core_ext/file.rb +75 -75
- data/lib/cosmos/core_ext/hash.rb +28 -28
- data/lib/cosmos/core_ext/io.rb +75 -75
- data/lib/cosmos/core_ext/kernel.rb +38 -38
- data/lib/cosmos/core_ext/math.rb +119 -119
- data/lib/cosmos/core_ext/matrix.rb +146 -146
- data/lib/cosmos/core_ext/objectspace.rb +29 -29
- data/lib/cosmos/core_ext/range.rb +22 -22
- data/lib/cosmos/core_ext/socket.rb +32 -32
- data/lib/cosmos/core_ext/string.rb +310 -310
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +446 -446
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
- data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
- data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
- data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
- data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -317
- data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -128
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
- data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -196
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -168
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +270 -262
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -161
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
- data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
- data/lib/cosmos/gui/dialogs/splash.rb +113 -113
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
- data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -494
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -460
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
- data/lib/cosmos/gui/line_graph/lines.rb +290 -290
- data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -459
- data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
- data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
- data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
- data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
- data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
- data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
- data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -712
- data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
- data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
- data/lib/cosmos/gui/opengl/opengl.rb +8 -8
- data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
- data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
- data/lib/cosmos/gui/qt.rb +813 -786
- data/lib/cosmos/gui/qt_tool.rb +378 -373
- data/lib/cosmos/gui/text/completion.rb +381 -381
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
- data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
- data/lib/cosmos/gui/text/ruby_editor.rb +395 -395
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -203
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
- data/lib/cosmos/interfaces.rb +11 -11
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -149
- data/lib/cosmos/interfaces/interface.rb +213 -213
- data/lib/cosmos/interfaces/linc_interface.rb +360 -360
- data/lib/cosmos/interfaces/serial_interface.rb +76 -76
- data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -128
- data/lib/cosmos/interfaces/stream_interface.rb +156 -156
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -154
- data/lib/cosmos/interfaces/udp_interface.rb +173 -173
- data/lib/cosmos/io/buffered_file.rb +11 -11
- data/lib/cosmos/io/cosmos_snmp.rb +50 -50
- data/lib/cosmos/io/io_multiplexer.rb +89 -89
- data/lib/cosmos/io/json_drb.rb +344 -320
- data/lib/cosmos/io/json_drb_object.rb +137 -137
- data/lib/cosmos/io/json_rpc.rb +365 -365
- data/lib/cosmos/io/posix_serial_driver.rb +145 -145
- data/lib/cosmos/io/raw_logger.rb +174 -174
- data/lib/cosmos/io/raw_logger_pair.rb +71 -71
- data/lib/cosmos/io/serial_driver.rb +85 -85
- data/lib/cosmos/io/stderr.rb +36 -36
- data/lib/cosmos/io/stdout.rb +36 -36
- data/lib/cosmos/io/tcpip_server.rb +583 -532
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +147 -147
- data/lib/cosmos/packet_logs.rb +6 -6
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +441 -439
- data/lib/cosmos/packet_logs/packet_log_writer.rb +321 -309
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +921 -921
- data/lib/cosmos/packets/commands.rb +291 -291
- data/lib/cosmos/packets/limits.rb +263 -263
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +714 -699
- data/lib/cosmos/packets/packet_config.rb +1034 -1034
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/structure.rb +421 -386
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +317 -317
- data/lib/cosmos/processors.rb +6 -6
- data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
- data/lib/cosmos/processors/processor.rb +71 -71
- data/lib/cosmos/processors/statistics_processor.rb +65 -65
- data/lib/cosmos/processors/watermark_processor.rb +44 -44
- data/lib/cosmos/script.rb +9 -9
- data/lib/cosmos/script/extract.rb +115 -115
- data/lib/cosmos/script/script.rb +1513 -1493
- data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
- data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
- data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
- data/lib/cosmos/streams/serial_stream.rb +152 -143
- data/lib/cosmos/streams/stream.rb +57 -57
- data/lib/cosmos/streams/stream_protocol.rb +369 -369
- data/lib/cosmos/streams/tcpip_client_stream.rb +77 -77
- data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -139
- data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
- data/lib/cosmos/system.rb +4 -4
- data/lib/cosmos/system/system.rb +558 -558
- data/lib/cosmos/system/target.rb +178 -178
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +254 -253
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -716
- data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +936 -940
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -63
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +511 -497
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -241
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1033 -1008
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +241 -221
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +628 -600
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -167
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -149
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -360
- data/lib/cosmos/tools/launcher/launcher.rb +184 -184
- data/lib/cosmos/tools/launcher/launcher_config.rb +175 -167
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -41
- data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -104
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +796 -768
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -525
- data/lib/cosmos/tools/replay/replay.rb +495 -488
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -139
- data/lib/cosmos/tools/script_runner/script_runner.rb +914 -914
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1892 -1859
- data/lib/cosmos/tools/table_manager/table.rb +70 -70
- data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
- data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
- data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
- data/lib/cosmos/tools/test_runner/test.rb +480 -480
- data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -1157
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -338
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -1008
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -94
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -180
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -173
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -177
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +412 -409
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -320
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -1278
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +111 -95
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +72 -66
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
- data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -458
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +563 -544
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -287
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -70
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -61
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
- data/lib/cosmos/top_level.rb +647 -596
- data/lib/cosmos/utilities.rb +11 -10
- data/lib/cosmos/utilities/crc.rb +166 -166
- data/lib/cosmos/utilities/csv.rb +83 -83
- data/lib/cosmos/utilities/logger.rb +137 -137
- data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
- data/lib/cosmos/utilities/message_log.rb +74 -74
- data/lib/cosmos/utilities/quaternion.rb +258 -258
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
- data/lib/cosmos/utilities/simulated_target.rb +99 -99
- data/lib/cosmos/utilities/sleeper.rb +44 -0
- data/lib/cosmos/version.rb +12 -12
- data/lib/cosmos/win32/excel.rb +66 -66
- data/lib/cosmos/win32/win32.rb +387 -387
- data/lib/cosmos/win32/win32_main.rb +311 -311
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +32 -32
- data/spec/ccsds/ccsds_packet_spec.rb +67 -67
- data/spec/ccsds/ccsds_parser_spec.rb +148 -148
- data/spec/config/config_parser_spec.rb +322 -322
- data/spec/conversions/conversion_spec.rb +31 -31
- data/spec/conversions/generic_conversion_spec.rb +45 -45
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
- data/spec/conversions/polynomial_conversion_spec.rb +40 -40
- data/spec/conversions/processor_conversion_spec.rb +45 -45
- data/spec/conversions/received_count_conversion_spec.rb +43 -43
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
- data/spec/core_ext/array_spec.rb +186 -186
- data/spec/core_ext/class_spec.rb +36 -36
- data/spec/core_ext/cosmos_io_spec.rb +77 -77
- data/spec/core_ext/exception_spec.rb +91 -91
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +24 -24
- data/spec/core_ext/io_spec.rb +46 -46
- data/spec/core_ext/kernel_spec.rb +54 -54
- data/spec/core_ext/math_spec.rb +116 -116
- data/spec/core_ext/matrix_spec.rb +66 -66
- data/spec/core_ext/objectspace_spec.rb +29 -29
- data/spec/core_ext/range_spec.rb +21 -21
- data/spec/core_ext/socket_spec.rb +32 -32
- data/spec/core_ext/string_spec.rb +223 -223
- data/spec/core_ext/stringio_spec.rb +21 -21
- data/spec/core_ext/time_spec.rb +151 -151
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/install/config/system/system.txt +33 -33
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/spec/install/config/targets/COSMOS/target.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -294
- data/spec/install/config/targets/INST/target.txt +10 -10
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
- data/spec/interfaces/interface_spec.rb +130 -131
- data/spec/interfaces/linc_interface_spec.rb +199 -199
- data/spec/interfaces/serial_interface_spec.rb +56 -56
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
- data/spec/interfaces/stream_interface_spec.rb +157 -157
- data/spec/interfaces/tcpip_client_interface_spec.rb +54 -54
- data/spec/interfaces/tcpip_server_interface_spec.rb +151 -151
- data/spec/interfaces/udp_interface_spec.rb +175 -177
- data/spec/io/buffered_file_spec.rb +113 -113
- data/spec/io/io_multiplexer_spec.rb +94 -94
- data/spec/io/json_drb_object_spec.rb +99 -99
- data/spec/io/json_drb_spec.rb +311 -311
- data/spec/io/json_rpc_spec.rb +264 -264
- data/spec/io/raw_logger_pair_spec.rb +76 -76
- data/spec/io/raw_logger_spec.rb +133 -133
- data/spec/io/serial_driver_spec.rb +61 -61
- data/spec/io/stderr_spec.rb +32 -32
- data/spec/io/stdout_spec.rb +32 -32
- data/spec/io/tcpip_server_spec.rb +338 -338
- data/spec/io/udp_sockets_spec.rb +94 -94
- data/spec/io/win32_serial_driver_spec.rb +88 -88
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
- data/spec/packet_logs/packet_log_reader_spec.rb +408 -408
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +223 -223
- data/spec/packets/binary_accessor_spec.rb +2073 -2073
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +326 -326
- data/spec/packets/packet_config_spec.rb +1620 -1620
- data/spec/packets/packet_item_limits_spec.rb +161 -161
- data/spec/packets/packet_item_spec.rb +386 -386
- data/spec/packets/packet_spec.rb +1057 -949
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +419 -419
- data/spec/packets/telemetry_spec.rb +535 -535
- data/spec/processors/new_packet_log_processor_spec.rb +39 -39
- data/spec/processors/processor_spec.rb +55 -55
- data/spec/processors/statistics_processor_spec.rb +60 -60
- data/spec/processors/watermark_processor_spec.rb +51 -51
- data/spec/script/script_spec.rb +654 -654
- data/spec/spec_helper.rb +154 -148
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +110 -110
- data/spec/streams/length_stream_protocol_spec.rb +297 -297
- data/spec/streams/preidentified_stream_protocol_spec.rb +118 -118
- data/spec/streams/serial_stream_spec.rb +105 -105
- data/spec/streams/stream_protocol_spec.rb +332 -332
- data/spec/streams/stream_spec.rb +29 -29
- data/spec/streams/tcpip_client_stream_spec.rb +54 -54
- data/spec/streams/tcpip_socket_stream_spec.rb +146 -146
- data/spec/streams/template_stream_protocol_spec.rb +151 -151
- data/spec/streams/terminated_stream_protocol_spec.rb +123 -123
- data/spec/system/system_spec.rb +645 -645
- data/spec/system/target_spec.rb +248 -248
- data/spec/tools/cmd_tlm_server/api_spec.rb +1087 -1113
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +411 -411
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -123
- data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -147
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -238
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +98 -101
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -208
- data/spec/top_level/top_level_spec.rb +334 -321
- data/spec/utilities/crc_spec.rb +45 -45
- data/spec/utilities/csv_spec.rb +97 -97
- data/spec/utilities/logger_spec.rb +102 -102
- data/spec/utilities/message_log_spec.rb +89 -89
- data/spec/utilities/quaternion_spec.rb +107 -107
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
- data/tasks/manifest.rake +22 -22
- data/tasks/spec.rake +23 -23
- metadata +18 -2
|
@@ -1,60 +1,60 @@
|
|
|
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 'cosmos/interfaces/stream_interface'
|
|
12
|
-
require 'cosmos/streams/tcpip_client_stream'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
# Base class for interfaces that act as a TCP/IP client
|
|
17
|
-
class TcpipClientInterface < StreamInterface
|
|
18
|
-
|
|
19
|
-
# @param hostname [String] Machine to connect to
|
|
20
|
-
# @param write_port [Integer] Port to write commands to
|
|
21
|
-
# @param read_port [Integer] Port to read telemetry from
|
|
22
|
-
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
23
|
-
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
24
|
-
# @param stream_protocol_type (see StreamInterface#initialize)
|
|
25
|
-
# @param stream_protocol_args (see StreamInterface#initialize)
|
|
26
|
-
def initialize(hostname,
|
|
27
|
-
write_port,
|
|
28
|
-
read_port,
|
|
29
|
-
write_timeout,
|
|
30
|
-
read_timeout,
|
|
31
|
-
stream_protocol_type,
|
|
32
|
-
*stream_protocol_args)
|
|
33
|
-
super(stream_protocol_type, *stream_protocol_args)
|
|
34
|
-
|
|
35
|
-
@hostname = hostname
|
|
36
|
-
@write_port = ConfigParser.handle_nil(write_port)
|
|
37
|
-
@read_port = ConfigParser.handle_nil(read_port)
|
|
38
|
-
@write_timeout = write_timeout
|
|
39
|
-
@read_timeout = read_timeout
|
|
40
|
-
@read_allowed = false unless @read_port
|
|
41
|
-
@write_allowed = false unless @write_port
|
|
42
|
-
@write_raw_allowed = false unless @write_port
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Connects the {StreamProtocol} to a {TcpipClientStream} by passing the
|
|
46
|
-
# initialization parameters to the {TcpipClientStream}.
|
|
47
|
-
def connect
|
|
48
|
-
stream = TcpipClientStream.new(
|
|
49
|
-
@hostname,
|
|
50
|
-
@write_port,
|
|
51
|
-
@read_port,
|
|
52
|
-
@write_timeout,
|
|
53
|
-
@read_timeout)
|
|
54
|
-
stream.raw_logger_pair = @raw_logger_pair
|
|
55
|
-
@stream_protocol.connect(stream)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end # class TcpipClientInterface
|
|
59
|
-
|
|
60
|
-
end # module Cosmos
|
|
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 'cosmos/interfaces/stream_interface'
|
|
12
|
+
require 'cosmos/streams/tcpip_client_stream'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
# Base class for interfaces that act as a TCP/IP client
|
|
17
|
+
class TcpipClientInterface < StreamInterface
|
|
18
|
+
|
|
19
|
+
# @param hostname [String] Machine to connect to
|
|
20
|
+
# @param write_port [Integer] Port to write commands to
|
|
21
|
+
# @param read_port [Integer] Port to read telemetry from
|
|
22
|
+
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
23
|
+
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
24
|
+
# @param stream_protocol_type (see StreamInterface#initialize)
|
|
25
|
+
# @param stream_protocol_args (see StreamInterface#initialize)
|
|
26
|
+
def initialize(hostname,
|
|
27
|
+
write_port,
|
|
28
|
+
read_port,
|
|
29
|
+
write_timeout,
|
|
30
|
+
read_timeout,
|
|
31
|
+
stream_protocol_type,
|
|
32
|
+
*stream_protocol_args)
|
|
33
|
+
super(stream_protocol_type, *stream_protocol_args)
|
|
34
|
+
|
|
35
|
+
@hostname = hostname
|
|
36
|
+
@write_port = ConfigParser.handle_nil(write_port)
|
|
37
|
+
@read_port = ConfigParser.handle_nil(read_port)
|
|
38
|
+
@write_timeout = write_timeout
|
|
39
|
+
@read_timeout = read_timeout
|
|
40
|
+
@read_allowed = false unless @read_port
|
|
41
|
+
@write_allowed = false unless @write_port
|
|
42
|
+
@write_raw_allowed = false unless @write_port
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Connects the {StreamProtocol} to a {TcpipClientStream} by passing the
|
|
46
|
+
# initialization parameters to the {TcpipClientStream}.
|
|
47
|
+
def connect
|
|
48
|
+
stream = TcpipClientStream.new(
|
|
49
|
+
@hostname,
|
|
50
|
+
@write_port,
|
|
51
|
+
@read_port,
|
|
52
|
+
@write_timeout,
|
|
53
|
+
@read_timeout)
|
|
54
|
+
stream.raw_logger_pair = @raw_logger_pair
|
|
55
|
+
@stream_protocol.connect(stream)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end # class TcpipClientInterface
|
|
59
|
+
|
|
60
|
+
end # module Cosmos
|
|
@@ -1,154 +1,154 @@
|
|
|
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 'cosmos/interfaces/interface'
|
|
12
|
-
require 'cosmos/io/tcpip_server'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
# Base class for interfaces that act as a TCP/IP server
|
|
17
|
-
class TcpipServerInterface < Interface
|
|
18
|
-
|
|
19
|
-
# @param write_port [Integer] Port that clients should write commands to
|
|
20
|
-
# @param read_port [Integer] Port that clients should read telemetry from
|
|
21
|
-
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
22
|
-
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
23
|
-
# @param stream_protocol_type (see StreamInterface#initialize)
|
|
24
|
-
# @param stream_protocol_args (see StreamInterface#initialize)
|
|
25
|
-
def initialize(write_port,
|
|
26
|
-
read_port,
|
|
27
|
-
write_timeout,
|
|
28
|
-
read_timeout,
|
|
29
|
-
stream_protocol_type,
|
|
30
|
-
*stream_protocol_args)
|
|
31
|
-
super()
|
|
32
|
-
|
|
33
|
-
@tcpip_server = TcpipServer.new(write_port,
|
|
34
|
-
read_port,
|
|
35
|
-
write_timeout,
|
|
36
|
-
read_timeout,
|
|
37
|
-
stream_protocol_type,
|
|
38
|
-
*stream_protocol_args)
|
|
39
|
-
@tcpip_server.interface = self
|
|
40
|
-
@read_allowed = false unless ConfigParser.handle_nil(read_port)
|
|
41
|
-
@write_allowed = false unless ConfigParser.handle_nil(write_port)
|
|
42
|
-
@write_raw_allowed = false unless ConfigParser.handle_nil(write_port)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# (see TcpipServer#connect)
|
|
46
|
-
def connect
|
|
47
|
-
@tcpip_server.raw_logger_pair = @raw_logger_pair
|
|
48
|
-
@tcpip_server.connect
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# (see TcpipServer#connected?)
|
|
52
|
-
def connected?
|
|
53
|
-
@tcpip_server.connected?
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# (see TcpipServer#disconnect)
|
|
57
|
-
def disconnect
|
|
58
|
-
@tcpip_server.disconnect
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# (see TcpipServer#read)
|
|
62
|
-
def read
|
|
63
|
-
# Normal case will not be trying to read if not connected so don't bother checking
|
|
64
|
-
packet = @tcpip_server.read
|
|
65
|
-
@read_count += 1 if packet
|
|
66
|
-
packet
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# If the server has connections, the packet is written to all the connected
|
|
70
|
-
# clients.
|
|
71
|
-
#
|
|
72
|
-
# @param packet [Packet]
|
|
73
|
-
def write(packet)
|
|
74
|
-
if connected?()
|
|
75
|
-
begin
|
|
76
|
-
@tcpip_server.write(packet)
|
|
77
|
-
@write_count += 1
|
|
78
|
-
rescue Exception => err
|
|
79
|
-
Logger.instance.error("Error writing to interface : #{@name}")
|
|
80
|
-
disconnect()
|
|
81
|
-
raise err
|
|
82
|
-
end
|
|
83
|
-
else
|
|
84
|
-
raise "Interface not connected for write : #{@name}"
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# If the server has connections, the data is written to all the connected
|
|
89
|
-
# clients.
|
|
90
|
-
#
|
|
91
|
-
# @param data [String] Raw binary data
|
|
92
|
-
def write_raw(data)
|
|
93
|
-
if connected?()
|
|
94
|
-
begin
|
|
95
|
-
@tcpip_server.write_raw(data)
|
|
96
|
-
@write_count += 1
|
|
97
|
-
rescue Exception => err
|
|
98
|
-
Logger.instance.error("Error writing raw data to interface : #{@name}")
|
|
99
|
-
disconnect()
|
|
100
|
-
raise err
|
|
101
|
-
end
|
|
102
|
-
else
|
|
103
|
-
raise "Interface not connected for write_raw : #{@name}"
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
# (see TcpipServer#bytes_read)
|
|
108
|
-
def bytes_read
|
|
109
|
-
@tcpip_server.bytes_read
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# (see TcpipServer#bytes_read)
|
|
113
|
-
def bytes_read=(bytes_read)
|
|
114
|
-
@tcpip_server.bytes_read = bytes_read
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# (see TcpipServer#bytes_written)
|
|
118
|
-
def bytes_written
|
|
119
|
-
@tcpip_server.bytes_written
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
# (see TcpipServer#bytes_written)
|
|
123
|
-
def bytes_written=(bytes_written)
|
|
124
|
-
@tcpip_server.bytes_written = bytes_written
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# Number of clients connected to the TCP/IP server
|
|
128
|
-
def num_clients
|
|
129
|
-
@tcpip_server.num_clients
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
# Number of packets buffered in the read queue
|
|
133
|
-
def read_queue_size
|
|
134
|
-
@tcpip_server.read_queue_size
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
# Number of packets buffered in the write queue
|
|
138
|
-
def write_queue_size
|
|
139
|
-
@tcpip_server.write_queue_size
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
# Start raw logging for this interface
|
|
143
|
-
def start_raw_logging
|
|
144
|
-
@tcpip_server.start_raw_logging
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Stop raw logging for this interface
|
|
148
|
-
def stop_raw_logging
|
|
149
|
-
@tcpip_server.stop_raw_logging
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
end # class TcpipServerInterface
|
|
153
|
-
|
|
154
|
-
end # module Cosmos
|
|
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 'cosmos/interfaces/interface'
|
|
12
|
+
require 'cosmos/io/tcpip_server'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
# Base class for interfaces that act as a TCP/IP server
|
|
17
|
+
class TcpipServerInterface < Interface
|
|
18
|
+
|
|
19
|
+
# @param write_port [Integer] Port that clients should write commands to
|
|
20
|
+
# @param read_port [Integer] Port that clients should read telemetry from
|
|
21
|
+
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
22
|
+
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
23
|
+
# @param stream_protocol_type (see StreamInterface#initialize)
|
|
24
|
+
# @param stream_protocol_args (see StreamInterface#initialize)
|
|
25
|
+
def initialize(write_port,
|
|
26
|
+
read_port,
|
|
27
|
+
write_timeout,
|
|
28
|
+
read_timeout,
|
|
29
|
+
stream_protocol_type,
|
|
30
|
+
*stream_protocol_args)
|
|
31
|
+
super()
|
|
32
|
+
|
|
33
|
+
@tcpip_server = TcpipServer.new(write_port,
|
|
34
|
+
read_port,
|
|
35
|
+
write_timeout,
|
|
36
|
+
read_timeout,
|
|
37
|
+
stream_protocol_type,
|
|
38
|
+
*stream_protocol_args)
|
|
39
|
+
@tcpip_server.interface = self
|
|
40
|
+
@read_allowed = false unless ConfigParser.handle_nil(read_port)
|
|
41
|
+
@write_allowed = false unless ConfigParser.handle_nil(write_port)
|
|
42
|
+
@write_raw_allowed = false unless ConfigParser.handle_nil(write_port)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# (see TcpipServer#connect)
|
|
46
|
+
def connect
|
|
47
|
+
@tcpip_server.raw_logger_pair = @raw_logger_pair
|
|
48
|
+
@tcpip_server.connect
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# (see TcpipServer#connected?)
|
|
52
|
+
def connected?
|
|
53
|
+
@tcpip_server.connected?
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# (see TcpipServer#disconnect)
|
|
57
|
+
def disconnect
|
|
58
|
+
@tcpip_server.disconnect
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# (see TcpipServer#read)
|
|
62
|
+
def read
|
|
63
|
+
# Normal case will not be trying to read if not connected so don't bother checking
|
|
64
|
+
packet = @tcpip_server.read
|
|
65
|
+
@read_count += 1 if packet
|
|
66
|
+
packet
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# If the server has connections, the packet is written to all the connected
|
|
70
|
+
# clients.
|
|
71
|
+
#
|
|
72
|
+
# @param packet [Packet]
|
|
73
|
+
def write(packet)
|
|
74
|
+
if connected?()
|
|
75
|
+
begin
|
|
76
|
+
@tcpip_server.write(packet)
|
|
77
|
+
@write_count += 1
|
|
78
|
+
rescue Exception => err
|
|
79
|
+
Logger.instance.error("Error writing to interface : #{@name}")
|
|
80
|
+
disconnect()
|
|
81
|
+
raise err
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
raise "Interface not connected for write : #{@name}"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# If the server has connections, the data is written to all the connected
|
|
89
|
+
# clients.
|
|
90
|
+
#
|
|
91
|
+
# @param data [String] Raw binary data
|
|
92
|
+
def write_raw(data)
|
|
93
|
+
if connected?()
|
|
94
|
+
begin
|
|
95
|
+
@tcpip_server.write_raw(data)
|
|
96
|
+
@write_count += 1
|
|
97
|
+
rescue Exception => err
|
|
98
|
+
Logger.instance.error("Error writing raw data to interface : #{@name}")
|
|
99
|
+
disconnect()
|
|
100
|
+
raise err
|
|
101
|
+
end
|
|
102
|
+
else
|
|
103
|
+
raise "Interface not connected for write_raw : #{@name}"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# (see TcpipServer#bytes_read)
|
|
108
|
+
def bytes_read
|
|
109
|
+
@tcpip_server.bytes_read
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# (see TcpipServer#bytes_read)
|
|
113
|
+
def bytes_read=(bytes_read)
|
|
114
|
+
@tcpip_server.bytes_read = bytes_read
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# (see TcpipServer#bytes_written)
|
|
118
|
+
def bytes_written
|
|
119
|
+
@tcpip_server.bytes_written
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# (see TcpipServer#bytes_written)
|
|
123
|
+
def bytes_written=(bytes_written)
|
|
124
|
+
@tcpip_server.bytes_written = bytes_written
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Number of clients connected to the TCP/IP server
|
|
128
|
+
def num_clients
|
|
129
|
+
@tcpip_server.num_clients
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Number of packets buffered in the read queue
|
|
133
|
+
def read_queue_size
|
|
134
|
+
@tcpip_server.read_queue_size
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# Number of packets buffered in the write queue
|
|
138
|
+
def write_queue_size
|
|
139
|
+
@tcpip_server.write_queue_size
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Start raw logging for this interface
|
|
143
|
+
def start_raw_logging
|
|
144
|
+
@tcpip_server.start_raw_logging
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Stop raw logging for this interface
|
|
148
|
+
def stop_raw_logging
|
|
149
|
+
@tcpip_server.stop_raw_logging
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end # class TcpipServerInterface
|
|
153
|
+
|
|
154
|
+
end # module Cosmos
|
|
@@ -1,173 +1,173 @@
|
|
|
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 'cosmos/interfaces/interface'
|
|
12
|
-
require 'cosmos/io/udp_sockets'
|
|
13
|
-
require 'cosmos/config/config_parser'
|
|
14
|
-
|
|
15
|
-
module Cosmos
|
|
16
|
-
|
|
17
|
-
# Base class for interfaces that send and receive messages over UDP
|
|
18
|
-
class UdpInterface < Interface
|
|
19
|
-
|
|
20
|
-
# @param hostname [String] Machine to connect to
|
|
21
|
-
# @param write_dest_port [Integer] Port to write commands to
|
|
22
|
-
# @param read_port [Integer] Port to read telemetry from
|
|
23
|
-
# @param write_src_port [Integer] Port to allow replies if needed
|
|
24
|
-
# @param interface_address [String] If the destination machine represented
|
|
25
|
-
# by hostname supports multicast, then interface_address is used to
|
|
26
|
-
# configure the outgoing multicast address.
|
|
27
|
-
# @param ttl [Integer] Time To Live value. The number of intermediate
|
|
28
|
-
# routers allowed before dropping the packet.
|
|
29
|
-
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
30
|
-
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
31
|
-
def initialize(hostname,
|
|
32
|
-
write_dest_port,
|
|
33
|
-
read_port,
|
|
34
|
-
write_src_port = nil,
|
|
35
|
-
interface_address = nil,
|
|
36
|
-
ttl = 128, # default for Windows
|
|
37
|
-
write_timeout = 10.0,
|
|
38
|
-
read_timeout = nil)
|
|
39
|
-
super()
|
|
40
|
-
|
|
41
|
-
@hostname = ConfigParser.handle_nil(hostname)
|
|
42
|
-
if @hostname
|
|
43
|
-
@hostname = @hostname.to_s
|
|
44
|
-
@hostname = '127.0.0.1' if @hostname.upcase == 'LOCALHOST'
|
|
45
|
-
end
|
|
46
|
-
@write_dest_port = ConfigParser.handle_nil(write_dest_port)
|
|
47
|
-
@write_dest_port = write_dest_port.to_i if @write_dest_port
|
|
48
|
-
@read_port = ConfigParser.handle_nil(read_port)
|
|
49
|
-
@read_port = read_port.to_i if @read_port
|
|
50
|
-
@write_src_port = ConfigParser.handle_nil(write_src_port)
|
|
51
|
-
@write_src_port = @write_src_port.to_i if @write_src_port
|
|
52
|
-
@interface_address = ConfigParser.handle_nil(interface_address)
|
|
53
|
-
@interface_address = '127.0.0.1' if @interface_address and @interface_address.upcase == 'LOCALHOST'
|
|
54
|
-
@ttl = ttl.to_i
|
|
55
|
-
@ttl = 1 if @ttl < 1
|
|
56
|
-
@write_timeout = ConfigParser.handle_nil(write_timeout)
|
|
57
|
-
@write_timeout = @write_timeout.to_f if @write_timeout
|
|
58
|
-
@read_timeout = ConfigParser.handle_nil(read_timeout)
|
|
59
|
-
@read_timeout = @read_timeout.to_f if @read_timeout
|
|
60
|
-
@write_socket = nil
|
|
61
|
-
@read_socket = nil
|
|
62
|
-
@read_allowed = false unless @read_port
|
|
63
|
-
@write_allowed = false unless @write_dest_port
|
|
64
|
-
@write_raw_allowed = false unless @write_dest_port
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Creates a new {UdpWriteSocket} if the the write_dest_port was given in
|
|
68
|
-
# the constructor and a new {UdpReadSocket} if the read_port was given in
|
|
69
|
-
# the constructor.
|
|
70
|
-
def connect
|
|
71
|
-
@write_socket = UdpWriteSocket.new(@hostname,
|
|
72
|
-
@write_dest_port,
|
|
73
|
-
@write_src_port,
|
|
74
|
-
@interface_address,
|
|
75
|
-
@ttl) if @write_dest_port
|
|
76
|
-
@read_socket = UdpReadSocket.new(@read_port,@hostname,@interface_address) if @read_port
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# @return [Boolean] Whether the active ports (read and/or write) have
|
|
80
|
-
# created sockets. Since UDP is connectionless, creation of the sockets
|
|
81
|
-
# is used to determine connection.
|
|
82
|
-
def connected?
|
|
83
|
-
if @write_dest_port && @read_port
|
|
84
|
-
(@write_socket && @read_socket) ? true : false
|
|
85
|
-
elsif @write_dest_port
|
|
86
|
-
@write_socket ? true : false
|
|
87
|
-
else
|
|
88
|
-
@read_socket ? true : false
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# Close the active ports (read and/or write) and set the sockets to nil.
|
|
93
|
-
def disconnect
|
|
94
|
-
begin
|
|
95
|
-
if @write_socket
|
|
96
|
-
@write_socket.close unless @write_socket.closed?
|
|
97
|
-
@write_socket = nil
|
|
98
|
-
end
|
|
99
|
-
rescue IOError
|
|
100
|
-
@write_socket = nil
|
|
101
|
-
end
|
|
102
|
-
begin
|
|
103
|
-
if @read_socket
|
|
104
|
-
@read_socket.close unless @read_socket.closed?
|
|
105
|
-
@read_socket = nil
|
|
106
|
-
end
|
|
107
|
-
rescue IOError
|
|
108
|
-
@read_socket = nil
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# If the read port was given, the read_socket is read and the data returned
|
|
113
|
-
# in a {Packet}. bytes_read and read_count are updated.
|
|
114
|
-
#
|
|
115
|
-
# @return [Packet]
|
|
116
|
-
def read
|
|
117
|
-
if @read_port
|
|
118
|
-
begin
|
|
119
|
-
data = @read_socket.read(@read_timeout)
|
|
120
|
-
@raw_logger_pair.read_logger.write(data) if @raw_logger_pair
|
|
121
|
-
rescue IOError
|
|
122
|
-
# Disconnected
|
|
123
|
-
Thread.stop
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
@bytes_read += data.length
|
|
127
|
-
@read_count += 1
|
|
128
|
-
|
|
129
|
-
return Packet.new(nil, nil, :BIG_ENDIAN, nil, data)
|
|
130
|
-
else
|
|
131
|
-
# Write only interface so stop the thread which calls read
|
|
132
|
-
Thread.stop
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# If the write_dest_port was given, the write_socket is written with the
|
|
137
|
-
# packet data. bytes_written and write_count are updated.
|
|
138
|
-
#
|
|
139
|
-
# @param packet [Packet] Packet buffer to write
|
|
140
|
-
def write(packet)
|
|
141
|
-
if @write_dest_port
|
|
142
|
-
if connected?()
|
|
143
|
-
write_raw(packet.buffer)
|
|
144
|
-
else
|
|
145
|
-
raise "Interface not connected"
|
|
146
|
-
end
|
|
147
|
-
else
|
|
148
|
-
raise "Attempt to write to read only interface"
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# If the write_dest_port was given, the write_socket is written with the
|
|
153
|
-
# data. bytes_written and write_count are updated.
|
|
154
|
-
#
|
|
155
|
-
# @param data [String] Raw binary data to write
|
|
156
|
-
def write_raw(data)
|
|
157
|
-
if @write_dest_port
|
|
158
|
-
if connected?()
|
|
159
|
-
@write_socket.write(data, @write_timeout)
|
|
160
|
-
@bytes_written += data.length
|
|
161
|
-
@write_count += 1
|
|
162
|
-
@raw_logger_pair.write_logger.write(data) if @raw_logger_pair
|
|
163
|
-
else
|
|
164
|
-
raise "Interface not connected"
|
|
165
|
-
end
|
|
166
|
-
else
|
|
167
|
-
raise "Attempt to write to read only interface"
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
end # class UdpInterface
|
|
172
|
-
|
|
173
|
-
end # module Cosmos
|
|
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 'cosmos/interfaces/interface'
|
|
12
|
+
require 'cosmos/io/udp_sockets'
|
|
13
|
+
require 'cosmos/config/config_parser'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
|
|
17
|
+
# Base class for interfaces that send and receive messages over UDP
|
|
18
|
+
class UdpInterface < Interface
|
|
19
|
+
|
|
20
|
+
# @param hostname [String] Machine to connect to
|
|
21
|
+
# @param write_dest_port [Integer] Port to write commands to
|
|
22
|
+
# @param read_port [Integer] Port to read telemetry from
|
|
23
|
+
# @param write_src_port [Integer] Port to allow replies if needed
|
|
24
|
+
# @param interface_address [String] If the destination machine represented
|
|
25
|
+
# by hostname supports multicast, then interface_address is used to
|
|
26
|
+
# configure the outgoing multicast address.
|
|
27
|
+
# @param ttl [Integer] Time To Live value. The number of intermediate
|
|
28
|
+
# routers allowed before dropping the packet.
|
|
29
|
+
# @param write_timeout [Integer] Seconds to wait before aborting writes
|
|
30
|
+
# @param read_timeout [Integer] Seconds to wait before aborting reads
|
|
31
|
+
def initialize(hostname,
|
|
32
|
+
write_dest_port,
|
|
33
|
+
read_port,
|
|
34
|
+
write_src_port = nil,
|
|
35
|
+
interface_address = nil,
|
|
36
|
+
ttl = 128, # default for Windows
|
|
37
|
+
write_timeout = 10.0,
|
|
38
|
+
read_timeout = nil)
|
|
39
|
+
super()
|
|
40
|
+
|
|
41
|
+
@hostname = ConfigParser.handle_nil(hostname)
|
|
42
|
+
if @hostname
|
|
43
|
+
@hostname = @hostname.to_s
|
|
44
|
+
@hostname = '127.0.0.1' if @hostname.upcase == 'LOCALHOST'
|
|
45
|
+
end
|
|
46
|
+
@write_dest_port = ConfigParser.handle_nil(write_dest_port)
|
|
47
|
+
@write_dest_port = write_dest_port.to_i if @write_dest_port
|
|
48
|
+
@read_port = ConfigParser.handle_nil(read_port)
|
|
49
|
+
@read_port = read_port.to_i if @read_port
|
|
50
|
+
@write_src_port = ConfigParser.handle_nil(write_src_port)
|
|
51
|
+
@write_src_port = @write_src_port.to_i if @write_src_port
|
|
52
|
+
@interface_address = ConfigParser.handle_nil(interface_address)
|
|
53
|
+
@interface_address = '127.0.0.1' if @interface_address and @interface_address.upcase == 'LOCALHOST'
|
|
54
|
+
@ttl = ttl.to_i
|
|
55
|
+
@ttl = 1 if @ttl < 1
|
|
56
|
+
@write_timeout = ConfigParser.handle_nil(write_timeout)
|
|
57
|
+
@write_timeout = @write_timeout.to_f if @write_timeout
|
|
58
|
+
@read_timeout = ConfigParser.handle_nil(read_timeout)
|
|
59
|
+
@read_timeout = @read_timeout.to_f if @read_timeout
|
|
60
|
+
@write_socket = nil
|
|
61
|
+
@read_socket = nil
|
|
62
|
+
@read_allowed = false unless @read_port
|
|
63
|
+
@write_allowed = false unless @write_dest_port
|
|
64
|
+
@write_raw_allowed = false unless @write_dest_port
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Creates a new {UdpWriteSocket} if the the write_dest_port was given in
|
|
68
|
+
# the constructor and a new {UdpReadSocket} if the read_port was given in
|
|
69
|
+
# the constructor.
|
|
70
|
+
def connect
|
|
71
|
+
@write_socket = UdpWriteSocket.new(@hostname,
|
|
72
|
+
@write_dest_port,
|
|
73
|
+
@write_src_port,
|
|
74
|
+
@interface_address,
|
|
75
|
+
@ttl) if @write_dest_port
|
|
76
|
+
@read_socket = UdpReadSocket.new(@read_port,@hostname,@interface_address) if @read_port
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# @return [Boolean] Whether the active ports (read and/or write) have
|
|
80
|
+
# created sockets. Since UDP is connectionless, creation of the sockets
|
|
81
|
+
# is used to determine connection.
|
|
82
|
+
def connected?
|
|
83
|
+
if @write_dest_port && @read_port
|
|
84
|
+
(@write_socket && @read_socket) ? true : false
|
|
85
|
+
elsif @write_dest_port
|
|
86
|
+
@write_socket ? true : false
|
|
87
|
+
else
|
|
88
|
+
@read_socket ? true : false
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Close the active ports (read and/or write) and set the sockets to nil.
|
|
93
|
+
def disconnect
|
|
94
|
+
begin
|
|
95
|
+
if @write_socket
|
|
96
|
+
@write_socket.close unless @write_socket.closed?
|
|
97
|
+
@write_socket = nil
|
|
98
|
+
end
|
|
99
|
+
rescue IOError
|
|
100
|
+
@write_socket = nil
|
|
101
|
+
end
|
|
102
|
+
begin
|
|
103
|
+
if @read_socket
|
|
104
|
+
@read_socket.close unless @read_socket.closed?
|
|
105
|
+
@read_socket = nil
|
|
106
|
+
end
|
|
107
|
+
rescue IOError
|
|
108
|
+
@read_socket = nil
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# If the read port was given, the read_socket is read and the data returned
|
|
113
|
+
# in a {Packet}. bytes_read and read_count are updated.
|
|
114
|
+
#
|
|
115
|
+
# @return [Packet]
|
|
116
|
+
def read
|
|
117
|
+
if @read_port
|
|
118
|
+
begin
|
|
119
|
+
data = @read_socket.read(@read_timeout)
|
|
120
|
+
@raw_logger_pair.read_logger.write(data) if @raw_logger_pair
|
|
121
|
+
rescue IOError
|
|
122
|
+
# Disconnected
|
|
123
|
+
Thread.stop
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
@bytes_read += data.length
|
|
127
|
+
@read_count += 1
|
|
128
|
+
|
|
129
|
+
return Packet.new(nil, nil, :BIG_ENDIAN, nil, data)
|
|
130
|
+
else
|
|
131
|
+
# Write only interface so stop the thread which calls read
|
|
132
|
+
Thread.stop
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# If the write_dest_port was given, the write_socket is written with the
|
|
137
|
+
# packet data. bytes_written and write_count are updated.
|
|
138
|
+
#
|
|
139
|
+
# @param packet [Packet] Packet buffer to write
|
|
140
|
+
def write(packet)
|
|
141
|
+
if @write_dest_port
|
|
142
|
+
if connected?()
|
|
143
|
+
write_raw(packet.buffer)
|
|
144
|
+
else
|
|
145
|
+
raise "Interface not connected"
|
|
146
|
+
end
|
|
147
|
+
else
|
|
148
|
+
raise "Attempt to write to read only interface"
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# If the write_dest_port was given, the write_socket is written with the
|
|
153
|
+
# data. bytes_written and write_count are updated.
|
|
154
|
+
#
|
|
155
|
+
# @param data [String] Raw binary data to write
|
|
156
|
+
def write_raw(data)
|
|
157
|
+
if @write_dest_port
|
|
158
|
+
if connected?()
|
|
159
|
+
@write_socket.write(data, @write_timeout)
|
|
160
|
+
@bytes_written += data.length
|
|
161
|
+
@write_count += 1
|
|
162
|
+
@raw_logger_pair.write_logger.write(data) if @raw_logger_pair
|
|
163
|
+
else
|
|
164
|
+
raise "Interface not connected"
|
|
165
|
+
end
|
|
166
|
+
else
|
|
167
|
+
raise "Attempt to write to read only interface"
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
end # class UdpInterface
|
|
172
|
+
|
|
173
|
+
end # module Cosmos
|