cosmos 3.0.1 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,77 +1,77 @@
|
|
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
|
-
module Cosmos
|
12
|
-
|
13
|
-
class CmdSenderItemDelegate < Qt::StyledItemDelegate
|
14
|
-
def initialize(parent)
|
15
|
-
@table = parent
|
16
|
-
super(parent)
|
17
|
-
end
|
18
|
-
|
19
|
-
def createEditor(parent, option, index)
|
20
|
-
packet_item, _, _ = CmdSender.param_widgets[index.row]
|
21
|
-
if index.column == 1 and packet_item and packet_item.states
|
22
|
-
combo = Qt::ComboBox.new(parent)
|
23
|
-
sorted_states = packet_item.states.sort {|a, b| a[1] <=> b[1]}
|
24
|
-
items = sorted_states.map {|state_name, state_value| state_name}
|
25
|
-
items << CmdSender::MANUALLY
|
26
|
-
combo.addItems(items)
|
27
|
-
combo.setCurrentText(@table.item(index.row, index.column).text.to_s)
|
28
|
-
combo.setMaxVisibleItems(6)
|
29
|
-
connect(combo, SIGNAL('activated(int)')) do
|
30
|
-
emit commitData(combo)
|
31
|
-
CmdSender.table.closeEditor(combo, 0)
|
32
|
-
end
|
33
|
-
return combo
|
34
|
-
else
|
35
|
-
return super(parent, option, index)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def paint(painter, option, index)
|
40
|
-
packet_item, _, _ = CmdSender.param_widgets[index.row]
|
41
|
-
if index.column == 1 and packet_item and packet_item.states
|
42
|
-
# This code simply draws the current combo box text inside a button to
|
43
|
-
# give the user an idea that they have to click it to activate it
|
44
|
-
opt = Qt::StyleOptionButton.new
|
45
|
-
opt.rect = option.rect
|
46
|
-
opt.text = @table.item(index.row, index.column).text.to_s
|
47
|
-
Qt::Application.style.drawControl(Qt::Style::CE_PushButton, opt, painter)
|
48
|
-
opt.dispose
|
49
|
-
else
|
50
|
-
super(painter, option, index)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def setModelData(editor, model, index)
|
55
|
-
if Qt::ComboBox === editor
|
56
|
-
model.setData(index, Qt::Variant.new(editor.currentText), Qt::EditRole)
|
57
|
-
else
|
58
|
-
super(editor, model, index)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def setEditorData(editor, index)
|
63
|
-
if Qt::ComboBox === editor
|
64
|
-
v = index.data(Qt::EditRole)
|
65
|
-
combo_index = editor.findText(v.toString)
|
66
|
-
if combo_index >= 0
|
67
|
-
editor.setCurrentIndex(combo_index)
|
68
|
-
else
|
69
|
-
editor.setCurrentIndex(0)
|
70
|
-
end
|
71
|
-
else
|
72
|
-
super(editor, index)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
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
|
+
module Cosmos
|
12
|
+
|
13
|
+
class CmdSenderItemDelegate < Qt::StyledItemDelegate
|
14
|
+
def initialize(parent)
|
15
|
+
@table = parent
|
16
|
+
super(parent)
|
17
|
+
end
|
18
|
+
|
19
|
+
def createEditor(parent, option, index)
|
20
|
+
packet_item, _, _ = CmdSender.param_widgets[index.row]
|
21
|
+
if index.column == 1 and packet_item and packet_item.states
|
22
|
+
combo = Qt::ComboBox.new(parent)
|
23
|
+
sorted_states = packet_item.states.sort {|a, b| a[1] <=> b[1]}
|
24
|
+
items = sorted_states.map {|state_name, state_value| state_name}
|
25
|
+
items << CmdSender::MANUALLY
|
26
|
+
combo.addItems(items)
|
27
|
+
combo.setCurrentText(@table.item(index.row, index.column).text.to_s)
|
28
|
+
combo.setMaxVisibleItems(6)
|
29
|
+
connect(combo, SIGNAL('activated(int)')) do
|
30
|
+
emit commitData(combo)
|
31
|
+
CmdSender.table.closeEditor(combo, 0)
|
32
|
+
end
|
33
|
+
return combo
|
34
|
+
else
|
35
|
+
return super(parent, option, index)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def paint(painter, option, index)
|
40
|
+
packet_item, _, _ = CmdSender.param_widgets[index.row]
|
41
|
+
if index.column == 1 and packet_item and packet_item.states
|
42
|
+
# This code simply draws the current combo box text inside a button to
|
43
|
+
# give the user an idea that they have to click it to activate it
|
44
|
+
opt = Qt::StyleOptionButton.new
|
45
|
+
opt.rect = option.rect
|
46
|
+
opt.text = @table.item(index.row, index.column).text.to_s
|
47
|
+
Qt::Application.style.drawControl(Qt::Style::CE_PushButton, opt, painter)
|
48
|
+
opt.dispose
|
49
|
+
else
|
50
|
+
super(painter, option, index)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def setModelData(editor, model, index)
|
55
|
+
if Qt::ComboBox === editor
|
56
|
+
model.setData(index, Qt::Variant.new(editor.currentText), Qt::EditRole)
|
57
|
+
else
|
58
|
+
super(editor, model, index)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def setEditorData(editor, index)
|
63
|
+
if Qt::ComboBox === editor
|
64
|
+
v = index.data(Qt::EditRole)
|
65
|
+
combo_index = editor.findText(v.toString)
|
66
|
+
if combo_index >= 0
|
67
|
+
editor.setCurrentIndex(combo_index)
|
68
|
+
else
|
69
|
+
editor.setCurrentIndex(0)
|
70
|
+
end
|
71
|
+
else
|
72
|
+
super(editor, index)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end # module Cosmos
|
@@ -1,70 +1,70 @@
|
|
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
|
-
module Cosmos
|
12
|
-
# CmdSenderTextEdit is a subclass of TextEdit that creates a CosmosCompletion class to
|
13
|
-
# allow for code completion when creating new commands in the command history
|
14
|
-
# window. It also monitors for the Enter key to allow for commands in the
|
15
|
-
# command history to be executed.
|
16
|
-
class CmdSenderTextEdit < Qt::TextEdit
|
17
|
-
def initialize(status_bar)
|
18
|
-
super()
|
19
|
-
@status_bar = status_bar
|
20
|
-
@c = Completion.new(self)
|
21
|
-
end
|
22
|
-
|
23
|
-
def keyPressEvent(event)
|
24
|
-
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
25
|
-
if (@c and @c.popup.isVisible)
|
26
|
-
case event.key
|
27
|
-
when Qt::Key_Return, Qt::Key_Enter
|
28
|
-
event.ignore
|
29
|
-
return
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
case event.key
|
34
|
-
# The return key means we need to execute the current line
|
35
|
-
when Qt::Key_Return, Qt::Key_Enter
|
36
|
-
# If the cursor is at the beginning of the line allow the newline
|
37
|
-
if textCursor.atBlockStart
|
38
|
-
super(event)
|
39
|
-
# If the line isn't blank then execute it
|
40
|
-
elsif textCursor.block.text.strip != ""
|
41
|
-
begin
|
42
|
-
eval(textCursor.block.text, $eval_binding)
|
43
|
-
CmdSender.send_count += 1
|
44
|
-
@status_bar.showMessage("#{textCursor.block.text} sent. (#{CmdSender.send_count})")
|
45
|
-
rescue Exception => error
|
46
|
-
if error.class == DRb::DRbConnError
|
47
|
-
message = "Error Connecting to Command and Telemetry Server"
|
48
|
-
else
|
49
|
-
message = "Error sending command due to #{error}"
|
50
|
-
end
|
51
|
-
@status_bar.showMessage(message)
|
52
|
-
Qt::MessageBox.critical(self, 'Error', message)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
# Handle Key_Down to automatically create a newline if they Key_Down at
|
56
|
-
# the bottom of the document
|
57
|
-
when Qt::Key_Down
|
58
|
-
# If the number of lines equals the current line (plus one since it is 0
|
59
|
-
# based) then we append a newline to allow the Key_Down to go to a new line
|
60
|
-
if self.toPlainText.split("\n").length == (textCursor.block.blockNumber + 1)
|
61
|
-
self.append("")
|
62
|
-
end
|
63
|
-
super(event)
|
64
|
-
else # All other keys are handled by this widget as well as being passed to the completion handler
|
65
|
-
super(event)
|
66
|
-
@c.handle_keypress(event)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
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
|
+
module Cosmos
|
12
|
+
# CmdSenderTextEdit is a subclass of TextEdit that creates a CosmosCompletion class to
|
13
|
+
# allow for code completion when creating new commands in the command history
|
14
|
+
# window. It also monitors for the Enter key to allow for commands in the
|
15
|
+
# command history to be executed.
|
16
|
+
class CmdSenderTextEdit < Qt::TextEdit
|
17
|
+
def initialize(status_bar)
|
18
|
+
super()
|
19
|
+
@status_bar = status_bar
|
20
|
+
@c = Completion.new(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
def keyPressEvent(event)
|
24
|
+
# If the completion popup is visible then ignore the event and allow the popup to handle it
|
25
|
+
if (@c and @c.popup.isVisible)
|
26
|
+
case event.key
|
27
|
+
when Qt::Key_Return, Qt::Key_Enter
|
28
|
+
event.ignore
|
29
|
+
return
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
case event.key
|
34
|
+
# The return key means we need to execute the current line
|
35
|
+
when Qt::Key_Return, Qt::Key_Enter
|
36
|
+
# If the cursor is at the beginning of the line allow the newline
|
37
|
+
if textCursor.atBlockStart
|
38
|
+
super(event)
|
39
|
+
# If the line isn't blank then execute it
|
40
|
+
elsif textCursor.block.text.strip != ""
|
41
|
+
begin
|
42
|
+
eval(textCursor.block.text, $eval_binding)
|
43
|
+
CmdSender.send_count += 1
|
44
|
+
@status_bar.showMessage("#{textCursor.block.text} sent. (#{CmdSender.send_count})")
|
45
|
+
rescue Exception => error
|
46
|
+
if error.class == DRb::DRbConnError
|
47
|
+
message = "Error Connecting to Command and Telemetry Server"
|
48
|
+
else
|
49
|
+
message = "Error sending command due to #{error}"
|
50
|
+
end
|
51
|
+
@status_bar.showMessage(message)
|
52
|
+
Qt::MessageBox.critical(self, 'Error', message)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
# Handle Key_Down to automatically create a newline if they Key_Down at
|
56
|
+
# the bottom of the document
|
57
|
+
when Qt::Key_Down
|
58
|
+
# If the number of lines equals the current line (plus one since it is 0
|
59
|
+
# based) then we append a newline to allow the Key_Down to go to a new line
|
60
|
+
if self.toPlainText.split("\n").length == (textCursor.block.blockNumber + 1)
|
61
|
+
self.append("")
|
62
|
+
end
|
63
|
+
super(event)
|
64
|
+
else # All other keys are handled by this widget as well as being passed to the completion handler
|
65
|
+
super(event)
|
66
|
+
@c.handle_keypress(event)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end # module Cosmos
|
@@ -1,940 +1,936 @@
|
|
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/script/extract'
|
12
|
-
|
13
|
-
module Cosmos
|
14
|
-
|
15
|
-
module Api
|
16
|
-
include Extract
|
17
|
-
|
18
|
-
# Sets api_requests to 0 and initializes the whitelist of allowable API
|
19
|
-
# method calls
|
20
|
-
def initialize
|
21
|
-
@api_whitelist = [
|
22
|
-
'cmd',
|
23
|
-
'cmd_no_range_check',
|
24
|
-
'cmd_no_hazardous_check',
|
25
|
-
'cmd_no_checks',
|
26
|
-
'cmd_raw',
|
27
|
-
'cmd_raw_no_range_check',
|
28
|
-
'cmd_raw_no_hazardous_check',
|
29
|
-
'cmd_raw_no_checks',
|
30
|
-
'send_raw',
|
31
|
-
'get_cmd_list',
|
32
|
-
'get_cmd_param_list',
|
33
|
-
'get_cmd_hazardous',
|
34
|
-
'tlm',
|
35
|
-
'tlm_raw',
|
36
|
-
'tlm_formatted',
|
37
|
-
'tlm_with_units',
|
38
|
-
'tlm_variable',
|
39
|
-
'set_tlm',
|
40
|
-
'set_tlm_raw',
|
41
|
-
'get_tlm_packet',
|
42
|
-
'get_tlm_values',
|
43
|
-
'get_tlm_list',
|
44
|
-
'get_tlm_item_list',
|
45
|
-
'get_tlm_details',
|
46
|
-
'get_out_of_limits',
|
47
|
-
'get_overall_limits_state',
|
48
|
-
'limits_enabled?',
|
49
|
-
'enable_limits',
|
50
|
-
'disable_limits',
|
51
|
-
'get_limits',
|
52
|
-
'set_limits',
|
53
|
-
'get_limits_groups',
|
54
|
-
'enable_limits_group',
|
55
|
-
'disable_limits_group',
|
56
|
-
'get_limits_sets',
|
57
|
-
'set_limits_set',
|
58
|
-
'get_limits_set',
|
59
|
-
'get_target_list',
|
60
|
-
'subscribe_limits_events',
|
61
|
-
'unsubscribe_limits_events',
|
62
|
-
'get_limits_event',
|
63
|
-
'subscribe_packet_data',
|
64
|
-
'unsubscribe_packet_data',
|
65
|
-
'get_packet_data',
|
66
|
-
'get_interface_names',
|
67
|
-
'connect_interface',
|
68
|
-
'disconnect_interface',
|
69
|
-
'interface_state',
|
70
|
-
'map_target_to_interface',
|
71
|
-
'get_router_names',
|
72
|
-
'connect_router',
|
73
|
-
'disconnect_router',
|
74
|
-
'router_state',
|
75
|
-
'get_cmd_log_filename',
|
76
|
-
'get_tlm_log_filename',
|
77
|
-
'start_logging',
|
78
|
-
'stop_logging',
|
79
|
-
'start_cmd_log',
|
80
|
-
'start_tlm_log',
|
81
|
-
'stop_cmd_log',
|
82
|
-
'stop_tlm_log',
|
83
|
-
'start_raw_logging_interface',
|
84
|
-
'stop_raw_logging_interface',
|
85
|
-
'start_raw_logging_router',
|
86
|
-
'stop_raw_logging_router',
|
87
|
-
'get_server_message_log_filename',
|
88
|
-
'start_new_server_message_log']
|
89
|
-
end
|
90
|
-
|
91
|
-
############################################################################
|
92
|
-
# Methods Used by cosmos/script
|
93
|
-
############################################################################
|
94
|
-
|
95
|
-
# Send a command packet to a target.
|
96
|
-
#
|
97
|
-
# Accepts two different calling styles:
|
98
|
-
# cmd("TGT CMD with PARAM1 val, PARAM2 val")
|
99
|
-
# cmd('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
100
|
-
#
|
101
|
-
# Favor the first syntax where possible as it is more succinct.
|
102
|
-
#
|
103
|
-
# @param args [String|Array<String>] See the description for calling style
|
104
|
-
# @return [Array<String, String, Hash>] target_name, command_name, parameters
|
105
|
-
def cmd(*args)
|
106
|
-
cmd_implementation(true, true, false, 'cmd', *args)
|
107
|
-
end
|
108
|
-
|
109
|
-
# Send a command packet to a target without performing any value range
|
110
|
-
# checks on the parameters. Useful for testing to allow sending command
|
111
|
-
# parameters outside the allowable range as defined in the configuration.
|
112
|
-
#
|
113
|
-
# Accepts two different calling styles:
|
114
|
-
# cmd_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
|
115
|
-
# cmd_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
116
|
-
#
|
117
|
-
# Favor the first syntax where possible as it is more succinct.
|
118
|
-
#
|
119
|
-
# @param (see #cmd)
|
120
|
-
# @return (see #cmd)
|
121
|
-
def cmd_no_range_check(*args)
|
122
|
-
cmd_implementation(false, true, false, 'cmd_no_range_check', *args)
|
123
|
-
end
|
124
|
-
|
125
|
-
# Send a command packet to a target without performing any hazardous checks
|
126
|
-
# both on the command itself and its parameters. Useful in scripts to
|
127
|
-
# prevent popping up warnings to the user.
|
128
|
-
#
|
129
|
-
# Accepts two different calling styles:
|
130
|
-
# cmd_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
|
131
|
-
# cmd_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
132
|
-
#
|
133
|
-
# Favor the first syntax where possible as it is more succinct.
|
134
|
-
#
|
135
|
-
# @param (see #cmd)
|
136
|
-
# @return (see #cmd)
|
137
|
-
def cmd_no_hazardous_check(*args)
|
138
|
-
cmd_implementation(true, false, false, 'cmd_no_hazardous_check', *args)
|
139
|
-
end
|
140
|
-
|
141
|
-
# Send a command packet to a target without performing any value range
|
142
|
-
# checks or hazardous checks both on the command itself and its parameters.
|
143
|
-
#
|
144
|
-
# Accepts two different calling styles:
|
145
|
-
# cmd_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
|
146
|
-
# cmd_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
147
|
-
#
|
148
|
-
# Favor the first syntax where possible as it is more succinct.
|
149
|
-
#
|
150
|
-
# @param (see #cmd)
|
151
|
-
# @return (see #cmd)
|
152
|
-
def cmd_no_checks(*args)
|
153
|
-
cmd_implementation(false, false, false, 'cmd_no_checks', *args)
|
154
|
-
end
|
155
|
-
|
156
|
-
# Send a command packet to a target without running conversions.
|
157
|
-
#
|
158
|
-
# Accepts two different calling styles:
|
159
|
-
# cmd_raw("TGT CMD with PARAM1 val, PARAM2 val")
|
160
|
-
# cmd_raw('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
161
|
-
#
|
162
|
-
# Favor the first syntax where possible as it is more succinct.
|
163
|
-
#
|
164
|
-
# @param args [String|Array<String>] See the description for calling style
|
165
|
-
# @return [Array<String, String, Hash>] target_name, command_name, parameters
|
166
|
-
def cmd_raw(*args)
|
167
|
-
cmd_implementation(true, true, true, 'cmd_raw', *args)
|
168
|
-
end
|
169
|
-
|
170
|
-
# Send a command packet to a target without performing any value range
|
171
|
-
# checks on the parameters or running conversions. Useful for testing to allow sending command
|
172
|
-
# parameters outside the allowable range as defined in the configuration.
|
173
|
-
#
|
174
|
-
# Accepts two different calling styles:
|
175
|
-
# cmd_raw_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
|
176
|
-
# cmd_raw_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
177
|
-
#
|
178
|
-
# Favor the first syntax where possible as it is more succinct.
|
179
|
-
#
|
180
|
-
# @param (see #cmd)
|
181
|
-
# @return (see #cmd)
|
182
|
-
def cmd_raw_no_range_check(*args)
|
183
|
-
cmd_implementation(false, true, true, 'cmd_raw_no_range_check', *args)
|
184
|
-
end
|
185
|
-
|
186
|
-
# Send a command packet to a target without running conversions or performing any hazardous checks
|
187
|
-
# both on the command itself and its parameters. Useful in scripts to
|
188
|
-
# prevent popping up warnings to the user.
|
189
|
-
#
|
190
|
-
# Accepts two different calling styles:
|
191
|
-
# cmd_raw_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
|
192
|
-
# cmd_raw_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
193
|
-
#
|
194
|
-
# Favor the first syntax where possible as it is more succinct.
|
195
|
-
#
|
196
|
-
# @param (see #cmd)
|
197
|
-
# @return (see #cmd)
|
198
|
-
def cmd_raw_no_hazardous_check(*args)
|
199
|
-
cmd_implementation(true, false, true, 'cmd_raw_no_hazardous_check', *args)
|
200
|
-
end
|
201
|
-
|
202
|
-
# Send a command packet to a target without running conversions or performing any value range
|
203
|
-
# checks or hazardous checks both on the command itself and its parameters.
|
204
|
-
#
|
205
|
-
# Accepts two different calling styles:
|
206
|
-
# cmd_raw_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
|
207
|
-
# cmd_raw_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
208
|
-
#
|
209
|
-
# Favor the first syntax where possible as it is more succinct.
|
210
|
-
#
|
211
|
-
# @param (see #cmd)
|
212
|
-
# @return (see #cmd)
|
213
|
-
def cmd_raw_no_checks(*args)
|
214
|
-
cmd_implementation(false, false, true, 'cmd_raw_no_checks', *args)
|
215
|
-
end
|
216
|
-
|
217
|
-
# Send a raw binary string to the specified interface.
|
218
|
-
#
|
219
|
-
# @param interface_name [String] The interface to send the raw binary
|
220
|
-
# @param data [String] The raw binary data
|
221
|
-
def send_raw(interface_name, data)
|
222
|
-
CmdTlmServer.commanding.send_raw(interface_name, data)
|
223
|
-
nil
|
224
|
-
end
|
225
|
-
|
226
|
-
# Returns the list of all the command names and their descriptions from the
|
227
|
-
# given target.
|
228
|
-
#
|
229
|
-
# @param target_name [String] Name of the target
|
230
|
-
# @return [Array<Array<String, String>>] Array containing \[command name,
|
231
|
-
# command description] for all commands in the target
|
232
|
-
def get_cmd_list(target_name)
|
233
|
-
list = []
|
234
|
-
System.commands.packets(target_name).each do |name, command|
|
235
|
-
list << [name, command.description]
|
236
|
-
end
|
237
|
-
return list.sort
|
238
|
-
end
|
239
|
-
|
240
|
-
# Returns the list of all the parameters for the given command.
|
241
|
-
#
|
242
|
-
# @param target_name (see #get_cmd_list)
|
243
|
-
# @param command_name [String] Name of the command
|
244
|
-
# @return [Array<Array<String, Object, nil|Array, nil|String, nil|String,
|
245
|
-
# nil|String, Boolean>] Array containing \[name, default, states,
|
246
|
-
# description, units_full, units, required] for all parameters in the
|
247
|
-
# command
|
248
|
-
def get_cmd_param_list(target_name, command_name)
|
249
|
-
list = []
|
250
|
-
System.commands.params(target_name, command_name).each do |parameter|
|
251
|
-
if parameter.format_string
|
252
|
-
unless parameter.default.kind_of?(Array)
|
253
|
-
list << [parameter.name, sprintf(parameter.format_string, parameter.default), parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
254
|
-
else
|
255
|
-
list << [parameter.name, "[]", parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
256
|
-
end
|
257
|
-
else
|
258
|
-
list << [parameter.name, parameter.default, parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
259
|
-
end
|
260
|
-
end
|
261
|
-
return list
|
262
|
-
end
|
263
|
-
|
264
|
-
# Returns whether the specified command is hazardous
|
265
|
-
#
|
266
|
-
# @param target_name (see #get_cmd_param_list)
|
267
|
-
# @param command_name (see #get_cmd_param_list)
|
268
|
-
# @param params [Hash] Command parameter hash to test whether a particular
|
269
|
-
# parameter setting makes the command hazardous
|
270
|
-
# @return [Boolean] Whether the command is hazardous
|
271
|
-
def get_cmd_hazardous(target_name, command_name, params = {})
|
272
|
-
hazardous, _ = System.commands.cmd_hazardous?(target_name, command_name, params)
|
273
|
-
return hazardous
|
274
|
-
end
|
275
|
-
|
276
|
-
# Request a converted telemetry item from a packet.
|
277
|
-
#
|
278
|
-
# Accepts two different calling styles:
|
279
|
-
# tlm("TGT PKT ITEM")
|
280
|
-
# tlm('TGT','PKT','ITEM')
|
281
|
-
#
|
282
|
-
# Favor the first syntax where possible as it is more succinct.
|
283
|
-
#
|
284
|
-
# @param args [String|Array<String>] See the description for calling style
|
285
|
-
# @return [Numeric] The converted telemetry value without formatting or
|
286
|
-
# units
|
287
|
-
def tlm(*args)
|
288
|
-
target_name, packet_name, item_name = tlm_process_args(args, 'tlm')
|
289
|
-
System.telemetry.value(target_name, packet_name, item_name, :CONVERTED)
|
290
|
-
end
|
291
|
-
|
292
|
-
# Request a raw telemetry item from a packet.
|
293
|
-
#
|
294
|
-
# Accepts two different calling styles:
|
295
|
-
# tlm_raw("TGT PKT ITEM")
|
296
|
-
# tlm_raw('TGT','PKT','ITEM')
|
297
|
-
#
|
298
|
-
# Favor the first syntax where possible as it is more succinct.
|
299
|
-
#
|
300
|
-
# @param args (see #tlm)
|
301
|
-
# @return [Numeric] The unconverted telemetry value without formatting or
|
302
|
-
# units
|
303
|
-
def tlm_raw(*args)
|
304
|
-
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_raw')
|
305
|
-
System.telemetry.value(target_name, packet_name, item_name, :RAW)
|
306
|
-
end
|
307
|
-
|
308
|
-
# Request a formatted telemetry item from a packet.
|
309
|
-
#
|
310
|
-
# Accepts two different calling styles:
|
311
|
-
# tlm_formatted("TGT PKT ITEM")
|
312
|
-
# tlm_formatted('TGT','PKT','ITEM')
|
313
|
-
#
|
314
|
-
# Favor the first syntax where possible as it is more succinct.
|
315
|
-
#
|
316
|
-
# @param args (see #tlm)
|
317
|
-
# @return [String] The converted telemetry value with formatting but
|
318
|
-
# without units
|
319
|
-
def tlm_formatted(*args)
|
320
|
-
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_formatted')
|
321
|
-
System.telemetry.value(target_name, packet_name, item_name, :FORMATTED)
|
322
|
-
end
|
323
|
-
|
324
|
-
# Request a telemetry item with units from a packet.
|
325
|
-
#
|
326
|
-
# Accepts two different calling styles:
|
327
|
-
# tlm_with_units("TGT PKT ITEM")
|
328
|
-
# tlm_with_units('TGT','PKT','ITEM')
|
329
|
-
#
|
330
|
-
# Favor the first syntax where possible as it is more succinct.
|
331
|
-
#
|
332
|
-
# @param args (see #tlm)
|
333
|
-
# @return [String] The converted, formatted telemetry value with units
|
334
|
-
def tlm_with_units(*args)
|
335
|
-
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_with_units')
|
336
|
-
System.telemetry.value(target_name, packet_name, item_name, :WITH_UNITS)
|
337
|
-
end
|
338
|
-
|
339
|
-
# Request a telemetry item from a packet with the specified conversion
|
340
|
-
# applied. This method is equivalent to calling the other tlm_xxx methods.
|
341
|
-
#
|
342
|
-
# Accepts two different calling styles:
|
343
|
-
# tlm_variable("TGT PKT ITEM", :RAW)
|
344
|
-
# tlm_variable('TGT','PKT','ITEM', :RAW)
|
345
|
-
#
|
346
|
-
# Favor the first syntax where possible as it is more succinct.
|
347
|
-
#
|
348
|
-
# @param args The args must either be a string followed by a symbol or
|
349
|
-
# three strings followed by a symbol (see the calling style in the
|
350
|
-
# description). The symbol must be one of {Packet::VALUE_TYPES}.
|
351
|
-
# @return [Object] The converted telemetry value
|
352
|
-
def tlm_variable(*args)
|
353
|
-
target_name, packet_name, item_name, value_type = tlm_variable_process_args(args, 'tlm_variable')
|
354
|
-
System.telemetry.value(target_name, packet_name, item_name, value_type)
|
355
|
-
end
|
356
|
-
|
357
|
-
# Set a telemetry item in a packet to a particular value and then verifies
|
358
|
-
# the value is within the acceptable limits. This method uses any
|
359
|
-
# conversions that apply to the item when setting the value.
|
360
|
-
#
|
361
|
-
# Note: If this is done while COSMOS is currently receiving telemetry,
|
362
|
-
# this value could get overwritten at any time. Thus this capability is
|
363
|
-
# best used for testing or for telemetry items that are not received
|
364
|
-
# regularly through the target interface.
|
365
|
-
#
|
366
|
-
# Accepts two different calling styles:
|
367
|
-
# set_tlm("TGT PKT ITEM = 1.0")
|
368
|
-
# set_tlm('TGT','PKT','ITEM', 10.0)
|
369
|
-
#
|
370
|
-
# Favor the first syntax where possible as it is more succinct.
|
371
|
-
#
|
372
|
-
# @param args The args must either be a string followed by a value or
|
373
|
-
# three strings followed by a value (see the calling style in the
|
374
|
-
# description).
|
375
|
-
def set_tlm(*args)
|
376
|
-
target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm')
|
377
|
-
System.telemetry.set_value(target_name, packet_name, item_name, value, :CONVERTED)
|
378
|
-
System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
|
379
|
-
nil
|
380
|
-
end
|
381
|
-
|
382
|
-
# Set a telemetry item in a packet to a particular value and then verifies
|
383
|
-
# the value is within the acceptable limits. No conversions are applied.
|
384
|
-
#
|
385
|
-
# Note: If this is done while COSMOS is currently receiving telemetry,
|
386
|
-
# this value could get overwritten at any time. Thus this capability is
|
387
|
-
# best used for testing or for telemetry items that are not received
|
388
|
-
# regularly through the target interface.
|
389
|
-
#
|
390
|
-
# Accepts two different calling styles:
|
391
|
-
# set_tlm_raw("TGT PKT ITEM = 1.0")
|
392
|
-
# set_tlm_raw('TGT','PKT','ITEM', 10.0)
|
393
|
-
#
|
394
|
-
# Favor the first syntax where possible as it is more succinct.
|
395
|
-
#
|
396
|
-
# @param args The args must either be a string followed by a value or
|
397
|
-
# three strings followed by a value (see the calling style in the
|
398
|
-
# description).
|
399
|
-
def set_tlm_raw(*args)
|
400
|
-
target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm_raw')
|
401
|
-
System.telemetry.set_value(target_name, packet_name, item_name, value, :RAW)
|
402
|
-
System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
|
403
|
-
nil
|
404
|
-
end
|
405
|
-
|
406
|
-
# Returns all the values (along with their limits state) for a packet.
|
407
|
-
#
|
408
|
-
# @param target_name [String] Name of the target
|
409
|
-
# @param packet_name [String] Name of the packet
|
410
|
-
# @param value_type [Symbol] How the values should be converted. Must be
|
411
|
-
# one of {Packet::VALUE_TYPES}
|
412
|
-
# @return (see Cosmos::Packet#read_all_with_limits_states)
|
413
|
-
def get_tlm_packet(target_name, packet_name, value_type = :CONVERTED)
|
414
|
-
packet = System.telemetry.packet(target_name, packet_name)
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
#
|
423
|
-
#
|
424
|
-
#
|
425
|
-
#
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
if
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
#
|
451
|
-
#
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
#
|
466
|
-
#
|
467
|
-
#
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
list
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
#
|
481
|
-
#
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
#
|
509
|
-
#
|
510
|
-
#
|
511
|
-
#
|
512
|
-
#
|
513
|
-
#
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
#
|
524
|
-
#
|
525
|
-
#
|
526
|
-
#
|
527
|
-
#
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
#
|
539
|
-
#
|
540
|
-
#
|
541
|
-
#
|
542
|
-
#
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
#
|
608
|
-
#
|
609
|
-
#
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
#
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
#
|
661
|
-
#
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
#
|
687
|
-
#
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
#
|
703
|
-
#
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
#
|
743
|
-
#
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
#
|
763
|
-
#
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
#
|
774
|
-
#
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
error =
|
868
|
-
error
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
end
|
938
|
-
|
939
|
-
end # module Api
|
940
|
-
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/script/extract'
|
12
|
+
|
13
|
+
module Cosmos
|
14
|
+
|
15
|
+
module Api
|
16
|
+
include Extract
|
17
|
+
|
18
|
+
# Sets api_requests to 0 and initializes the whitelist of allowable API
|
19
|
+
# method calls
|
20
|
+
def initialize
|
21
|
+
@api_whitelist = [
|
22
|
+
'cmd',
|
23
|
+
'cmd_no_range_check',
|
24
|
+
'cmd_no_hazardous_check',
|
25
|
+
'cmd_no_checks',
|
26
|
+
'cmd_raw',
|
27
|
+
'cmd_raw_no_range_check',
|
28
|
+
'cmd_raw_no_hazardous_check',
|
29
|
+
'cmd_raw_no_checks',
|
30
|
+
'send_raw',
|
31
|
+
'get_cmd_list',
|
32
|
+
'get_cmd_param_list',
|
33
|
+
'get_cmd_hazardous',
|
34
|
+
'tlm',
|
35
|
+
'tlm_raw',
|
36
|
+
'tlm_formatted',
|
37
|
+
'tlm_with_units',
|
38
|
+
'tlm_variable',
|
39
|
+
'set_tlm',
|
40
|
+
'set_tlm_raw',
|
41
|
+
'get_tlm_packet',
|
42
|
+
'get_tlm_values',
|
43
|
+
'get_tlm_list',
|
44
|
+
'get_tlm_item_list',
|
45
|
+
'get_tlm_details',
|
46
|
+
'get_out_of_limits',
|
47
|
+
'get_overall_limits_state',
|
48
|
+
'limits_enabled?',
|
49
|
+
'enable_limits',
|
50
|
+
'disable_limits',
|
51
|
+
'get_limits',
|
52
|
+
'set_limits',
|
53
|
+
'get_limits_groups',
|
54
|
+
'enable_limits_group',
|
55
|
+
'disable_limits_group',
|
56
|
+
'get_limits_sets',
|
57
|
+
'set_limits_set',
|
58
|
+
'get_limits_set',
|
59
|
+
'get_target_list',
|
60
|
+
'subscribe_limits_events',
|
61
|
+
'unsubscribe_limits_events',
|
62
|
+
'get_limits_event',
|
63
|
+
'subscribe_packet_data',
|
64
|
+
'unsubscribe_packet_data',
|
65
|
+
'get_packet_data',
|
66
|
+
'get_interface_names',
|
67
|
+
'connect_interface',
|
68
|
+
'disconnect_interface',
|
69
|
+
'interface_state',
|
70
|
+
'map_target_to_interface',
|
71
|
+
'get_router_names',
|
72
|
+
'connect_router',
|
73
|
+
'disconnect_router',
|
74
|
+
'router_state',
|
75
|
+
'get_cmd_log_filename',
|
76
|
+
'get_tlm_log_filename',
|
77
|
+
'start_logging',
|
78
|
+
'stop_logging',
|
79
|
+
'start_cmd_log',
|
80
|
+
'start_tlm_log',
|
81
|
+
'stop_cmd_log',
|
82
|
+
'stop_tlm_log',
|
83
|
+
'start_raw_logging_interface',
|
84
|
+
'stop_raw_logging_interface',
|
85
|
+
'start_raw_logging_router',
|
86
|
+
'stop_raw_logging_router',
|
87
|
+
'get_server_message_log_filename',
|
88
|
+
'start_new_server_message_log']
|
89
|
+
end
|
90
|
+
|
91
|
+
############################################################################
|
92
|
+
# Methods Used by cosmos/script
|
93
|
+
############################################################################
|
94
|
+
|
95
|
+
# Send a command packet to a target.
|
96
|
+
#
|
97
|
+
# Accepts two different calling styles:
|
98
|
+
# cmd("TGT CMD with PARAM1 val, PARAM2 val")
|
99
|
+
# cmd('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
100
|
+
#
|
101
|
+
# Favor the first syntax where possible as it is more succinct.
|
102
|
+
#
|
103
|
+
# @param args [String|Array<String>] See the description for calling style
|
104
|
+
# @return [Array<String, String, Hash>] target_name, command_name, parameters
|
105
|
+
def cmd(*args)
|
106
|
+
cmd_implementation(true, true, false, 'cmd', *args)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Send a command packet to a target without performing any value range
|
110
|
+
# checks on the parameters. Useful for testing to allow sending command
|
111
|
+
# parameters outside the allowable range as defined in the configuration.
|
112
|
+
#
|
113
|
+
# Accepts two different calling styles:
|
114
|
+
# cmd_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
|
115
|
+
# cmd_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
116
|
+
#
|
117
|
+
# Favor the first syntax where possible as it is more succinct.
|
118
|
+
#
|
119
|
+
# @param (see #cmd)
|
120
|
+
# @return (see #cmd)
|
121
|
+
def cmd_no_range_check(*args)
|
122
|
+
cmd_implementation(false, true, false, 'cmd_no_range_check', *args)
|
123
|
+
end
|
124
|
+
|
125
|
+
# Send a command packet to a target without performing any hazardous checks
|
126
|
+
# both on the command itself and its parameters. Useful in scripts to
|
127
|
+
# prevent popping up warnings to the user.
|
128
|
+
#
|
129
|
+
# Accepts two different calling styles:
|
130
|
+
# cmd_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
|
131
|
+
# cmd_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
132
|
+
#
|
133
|
+
# Favor the first syntax where possible as it is more succinct.
|
134
|
+
#
|
135
|
+
# @param (see #cmd)
|
136
|
+
# @return (see #cmd)
|
137
|
+
def cmd_no_hazardous_check(*args)
|
138
|
+
cmd_implementation(true, false, false, 'cmd_no_hazardous_check', *args)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Send a command packet to a target without performing any value range
|
142
|
+
# checks or hazardous checks both on the command itself and its parameters.
|
143
|
+
#
|
144
|
+
# Accepts two different calling styles:
|
145
|
+
# cmd_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
|
146
|
+
# cmd_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
147
|
+
#
|
148
|
+
# Favor the first syntax where possible as it is more succinct.
|
149
|
+
#
|
150
|
+
# @param (see #cmd)
|
151
|
+
# @return (see #cmd)
|
152
|
+
def cmd_no_checks(*args)
|
153
|
+
cmd_implementation(false, false, false, 'cmd_no_checks', *args)
|
154
|
+
end
|
155
|
+
|
156
|
+
# Send a command packet to a target without running conversions.
|
157
|
+
#
|
158
|
+
# Accepts two different calling styles:
|
159
|
+
# cmd_raw("TGT CMD with PARAM1 val, PARAM2 val")
|
160
|
+
# cmd_raw('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
161
|
+
#
|
162
|
+
# Favor the first syntax where possible as it is more succinct.
|
163
|
+
#
|
164
|
+
# @param args [String|Array<String>] See the description for calling style
|
165
|
+
# @return [Array<String, String, Hash>] target_name, command_name, parameters
|
166
|
+
def cmd_raw(*args)
|
167
|
+
cmd_implementation(true, true, true, 'cmd_raw', *args)
|
168
|
+
end
|
169
|
+
|
170
|
+
# Send a command packet to a target without performing any value range
|
171
|
+
# checks on the parameters or running conversions. Useful for testing to allow sending command
|
172
|
+
# parameters outside the allowable range as defined in the configuration.
|
173
|
+
#
|
174
|
+
# Accepts two different calling styles:
|
175
|
+
# cmd_raw_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
|
176
|
+
# cmd_raw_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
177
|
+
#
|
178
|
+
# Favor the first syntax where possible as it is more succinct.
|
179
|
+
#
|
180
|
+
# @param (see #cmd)
|
181
|
+
# @return (see #cmd)
|
182
|
+
def cmd_raw_no_range_check(*args)
|
183
|
+
cmd_implementation(false, true, true, 'cmd_raw_no_range_check', *args)
|
184
|
+
end
|
185
|
+
|
186
|
+
# Send a command packet to a target without running conversions or performing any hazardous checks
|
187
|
+
# both on the command itself and its parameters. Useful in scripts to
|
188
|
+
# prevent popping up warnings to the user.
|
189
|
+
#
|
190
|
+
# Accepts two different calling styles:
|
191
|
+
# cmd_raw_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
|
192
|
+
# cmd_raw_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
193
|
+
#
|
194
|
+
# Favor the first syntax where possible as it is more succinct.
|
195
|
+
#
|
196
|
+
# @param (see #cmd)
|
197
|
+
# @return (see #cmd)
|
198
|
+
def cmd_raw_no_hazardous_check(*args)
|
199
|
+
cmd_implementation(true, false, true, 'cmd_raw_no_hazardous_check', *args)
|
200
|
+
end
|
201
|
+
|
202
|
+
# Send a command packet to a target without running conversions or performing any value range
|
203
|
+
# checks or hazardous checks both on the command itself and its parameters.
|
204
|
+
#
|
205
|
+
# Accepts two different calling styles:
|
206
|
+
# cmd_raw_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
|
207
|
+
# cmd_raw_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
|
208
|
+
#
|
209
|
+
# Favor the first syntax where possible as it is more succinct.
|
210
|
+
#
|
211
|
+
# @param (see #cmd)
|
212
|
+
# @return (see #cmd)
|
213
|
+
def cmd_raw_no_checks(*args)
|
214
|
+
cmd_implementation(false, false, true, 'cmd_raw_no_checks', *args)
|
215
|
+
end
|
216
|
+
|
217
|
+
# Send a raw binary string to the specified interface.
|
218
|
+
#
|
219
|
+
# @param interface_name [String] The interface to send the raw binary
|
220
|
+
# @param data [String] The raw binary data
|
221
|
+
def send_raw(interface_name, data)
|
222
|
+
CmdTlmServer.commanding.send_raw(interface_name, data)
|
223
|
+
nil
|
224
|
+
end
|
225
|
+
|
226
|
+
# Returns the list of all the command names and their descriptions from the
|
227
|
+
# given target.
|
228
|
+
#
|
229
|
+
# @param target_name [String] Name of the target
|
230
|
+
# @return [Array<Array<String, String>>] Array containing \[command name,
|
231
|
+
# command description] for all commands in the target
|
232
|
+
def get_cmd_list(target_name)
|
233
|
+
list = []
|
234
|
+
System.commands.packets(target_name).each do |name, command|
|
235
|
+
list << [name, command.description]
|
236
|
+
end
|
237
|
+
return list.sort
|
238
|
+
end
|
239
|
+
|
240
|
+
# Returns the list of all the parameters for the given command.
|
241
|
+
#
|
242
|
+
# @param target_name (see #get_cmd_list)
|
243
|
+
# @param command_name [String] Name of the command
|
244
|
+
# @return [Array<Array<String, Object, nil|Array, nil|String, nil|String,
|
245
|
+
# nil|String, Boolean>] Array containing \[name, default, states,
|
246
|
+
# description, units_full, units, required] for all parameters in the
|
247
|
+
# command
|
248
|
+
def get_cmd_param_list(target_name, command_name)
|
249
|
+
list = []
|
250
|
+
System.commands.params(target_name, command_name).each do |parameter|
|
251
|
+
if parameter.format_string
|
252
|
+
unless parameter.default.kind_of?(Array)
|
253
|
+
list << [parameter.name, sprintf(parameter.format_string, parameter.default), parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
254
|
+
else
|
255
|
+
list << [parameter.name, "[]", parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
256
|
+
end
|
257
|
+
else
|
258
|
+
list << [parameter.name, parameter.default, parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
|
259
|
+
end
|
260
|
+
end
|
261
|
+
return list
|
262
|
+
end
|
263
|
+
|
264
|
+
# Returns whether the specified command is hazardous
|
265
|
+
#
|
266
|
+
# @param target_name (see #get_cmd_param_list)
|
267
|
+
# @param command_name (see #get_cmd_param_list)
|
268
|
+
# @param params [Hash] Command parameter hash to test whether a particular
|
269
|
+
# parameter setting makes the command hazardous
|
270
|
+
# @return [Boolean] Whether the command is hazardous
|
271
|
+
def get_cmd_hazardous(target_name, command_name, params = {})
|
272
|
+
hazardous, _ = System.commands.cmd_hazardous?(target_name, command_name, params)
|
273
|
+
return hazardous
|
274
|
+
end
|
275
|
+
|
276
|
+
# Request a converted telemetry item from a packet.
|
277
|
+
#
|
278
|
+
# Accepts two different calling styles:
|
279
|
+
# tlm("TGT PKT ITEM")
|
280
|
+
# tlm('TGT','PKT','ITEM')
|
281
|
+
#
|
282
|
+
# Favor the first syntax where possible as it is more succinct.
|
283
|
+
#
|
284
|
+
# @param args [String|Array<String>] See the description for calling style
|
285
|
+
# @return [Numeric] The converted telemetry value without formatting or
|
286
|
+
# units
|
287
|
+
def tlm(*args)
|
288
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'tlm')
|
289
|
+
System.telemetry.value(target_name, packet_name, item_name, :CONVERTED)
|
290
|
+
end
|
291
|
+
|
292
|
+
# Request a raw telemetry item from a packet.
|
293
|
+
#
|
294
|
+
# Accepts two different calling styles:
|
295
|
+
# tlm_raw("TGT PKT ITEM")
|
296
|
+
# tlm_raw('TGT','PKT','ITEM')
|
297
|
+
#
|
298
|
+
# Favor the first syntax where possible as it is more succinct.
|
299
|
+
#
|
300
|
+
# @param args (see #tlm)
|
301
|
+
# @return [Numeric] The unconverted telemetry value without formatting or
|
302
|
+
# units
|
303
|
+
def tlm_raw(*args)
|
304
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_raw')
|
305
|
+
System.telemetry.value(target_name, packet_name, item_name, :RAW)
|
306
|
+
end
|
307
|
+
|
308
|
+
# Request a formatted telemetry item from a packet.
|
309
|
+
#
|
310
|
+
# Accepts two different calling styles:
|
311
|
+
# tlm_formatted("TGT PKT ITEM")
|
312
|
+
# tlm_formatted('TGT','PKT','ITEM')
|
313
|
+
#
|
314
|
+
# Favor the first syntax where possible as it is more succinct.
|
315
|
+
#
|
316
|
+
# @param args (see #tlm)
|
317
|
+
# @return [String] The converted telemetry value with formatting but
|
318
|
+
# without units
|
319
|
+
def tlm_formatted(*args)
|
320
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_formatted')
|
321
|
+
System.telemetry.value(target_name, packet_name, item_name, :FORMATTED)
|
322
|
+
end
|
323
|
+
|
324
|
+
# Request a telemetry item with units from a packet.
|
325
|
+
#
|
326
|
+
# Accepts two different calling styles:
|
327
|
+
# tlm_with_units("TGT PKT ITEM")
|
328
|
+
# tlm_with_units('TGT','PKT','ITEM')
|
329
|
+
#
|
330
|
+
# Favor the first syntax where possible as it is more succinct.
|
331
|
+
#
|
332
|
+
# @param args (see #tlm)
|
333
|
+
# @return [String] The converted, formatted telemetry value with units
|
334
|
+
def tlm_with_units(*args)
|
335
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'tlm_with_units')
|
336
|
+
System.telemetry.value(target_name, packet_name, item_name, :WITH_UNITS)
|
337
|
+
end
|
338
|
+
|
339
|
+
# Request a telemetry item from a packet with the specified conversion
|
340
|
+
# applied. This method is equivalent to calling the other tlm_xxx methods.
|
341
|
+
#
|
342
|
+
# Accepts two different calling styles:
|
343
|
+
# tlm_variable("TGT PKT ITEM", :RAW)
|
344
|
+
# tlm_variable('TGT','PKT','ITEM', :RAW)
|
345
|
+
#
|
346
|
+
# Favor the first syntax where possible as it is more succinct.
|
347
|
+
#
|
348
|
+
# @param args The args must either be a string followed by a symbol or
|
349
|
+
# three strings followed by a symbol (see the calling style in the
|
350
|
+
# description). The symbol must be one of {Packet::VALUE_TYPES}.
|
351
|
+
# @return [Object] The converted telemetry value
|
352
|
+
def tlm_variable(*args)
|
353
|
+
target_name, packet_name, item_name, value_type = tlm_variable_process_args(args, 'tlm_variable')
|
354
|
+
System.telemetry.value(target_name, packet_name, item_name, value_type)
|
355
|
+
end
|
356
|
+
|
357
|
+
# Set a telemetry item in a packet to a particular value and then verifies
|
358
|
+
# the value is within the acceptable limits. This method uses any
|
359
|
+
# conversions that apply to the item when setting the value.
|
360
|
+
#
|
361
|
+
# Note: If this is done while COSMOS is currently receiving telemetry,
|
362
|
+
# this value could get overwritten at any time. Thus this capability is
|
363
|
+
# best used for testing or for telemetry items that are not received
|
364
|
+
# regularly through the target interface.
|
365
|
+
#
|
366
|
+
# Accepts two different calling styles:
|
367
|
+
# set_tlm("TGT PKT ITEM = 1.0")
|
368
|
+
# set_tlm('TGT','PKT','ITEM', 10.0)
|
369
|
+
#
|
370
|
+
# Favor the first syntax where possible as it is more succinct.
|
371
|
+
#
|
372
|
+
# @param args The args must either be a string followed by a value or
|
373
|
+
# three strings followed by a value (see the calling style in the
|
374
|
+
# description).
|
375
|
+
def set_tlm(*args)
|
376
|
+
target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm')
|
377
|
+
System.telemetry.set_value(target_name, packet_name, item_name, value, :CONVERTED)
|
378
|
+
System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
|
379
|
+
nil
|
380
|
+
end
|
381
|
+
|
382
|
+
# Set a telemetry item in a packet to a particular value and then verifies
|
383
|
+
# the value is within the acceptable limits. No conversions are applied.
|
384
|
+
#
|
385
|
+
# Note: If this is done while COSMOS is currently receiving telemetry,
|
386
|
+
# this value could get overwritten at any time. Thus this capability is
|
387
|
+
# best used for testing or for telemetry items that are not received
|
388
|
+
# regularly through the target interface.
|
389
|
+
#
|
390
|
+
# Accepts two different calling styles:
|
391
|
+
# set_tlm_raw("TGT PKT ITEM = 1.0")
|
392
|
+
# set_tlm_raw('TGT','PKT','ITEM', 10.0)
|
393
|
+
#
|
394
|
+
# Favor the first syntax where possible as it is more succinct.
|
395
|
+
#
|
396
|
+
# @param args The args must either be a string followed by a value or
|
397
|
+
# three strings followed by a value (see the calling style in the
|
398
|
+
# description).
|
399
|
+
def set_tlm_raw(*args)
|
400
|
+
target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm_raw')
|
401
|
+
System.telemetry.set_value(target_name, packet_name, item_name, value, :RAW)
|
402
|
+
System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
|
403
|
+
nil
|
404
|
+
end
|
405
|
+
|
406
|
+
# Returns all the values (along with their limits state) for a packet.
|
407
|
+
#
|
408
|
+
# @param target_name [String] Name of the target
|
409
|
+
# @param packet_name [String] Name of the packet
|
410
|
+
# @param value_type [Symbol] How the values should be converted. Must be
|
411
|
+
# one of {Packet::VALUE_TYPES}
|
412
|
+
# @return (see Cosmos::Packet#read_all_with_limits_states)
|
413
|
+
def get_tlm_packet(target_name, packet_name, value_type = :CONVERTED)
|
414
|
+
packet = System.telemetry.packet(target_name, packet_name)
|
415
|
+
return packet.read_all_with_limits_states(value_type.to_s.intern)
|
416
|
+
end
|
417
|
+
|
418
|
+
# Returns all the item values (along with their limits state). The items
|
419
|
+
# can be from any target and packet and thus must be fully qualified with
|
420
|
+
# their target and packet names.
|
421
|
+
#
|
422
|
+
# @param (see Cosmos::Telemetry#values_and_limits_states)
|
423
|
+
# @return [Array<String, Object, Array, Symbol|nil>] Array consisting of
|
424
|
+
# \[item name, item value, item limits settings, item limits state] where the item limits
|
425
|
+
# state can be one of {Cosmos::Limits::LIMITS_STATES}
|
426
|
+
def get_tlm_values(item_array, value_types = :CONVERTED)
|
427
|
+
if !item_array.is_a?(Array) || (!item_array[0].is_a?(Array) and !item_array.empty?)
|
428
|
+
raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
|
429
|
+
end
|
430
|
+
return [[], [], [], System.limits_set] if item_array.empty?
|
431
|
+
if value_types.is_a?(Array)
|
432
|
+
elem = value_types[0]
|
433
|
+
else
|
434
|
+
elem = value_types
|
435
|
+
end
|
436
|
+
# Due to JSON round tripping from scripts, value_types can be a String
|
437
|
+
# so we must check for both Symbol and String
|
438
|
+
if !elem.is_a?(Symbol) && !elem.is_a?(String)
|
439
|
+
raise ArgumentError, "value_types must be a single symbol or array of symbols specifying the conversion method (:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS)"
|
440
|
+
end
|
441
|
+
array = System.telemetry.values_and_limits_states(item_array, value_types)
|
442
|
+
array << System.limits_set
|
443
|
+
return array
|
444
|
+
end
|
445
|
+
|
446
|
+
# Returns the sorted packet names and their descriptions for a particular
|
447
|
+
# target.
|
448
|
+
#
|
449
|
+
# @param target_name (see #get_tlm_packet)
|
450
|
+
# @return [Array<String, String>] Array of \[packet name, packet
|
451
|
+
# description] sorted by packet name
|
452
|
+
def get_tlm_list(target_name)
|
453
|
+
list = []
|
454
|
+
packets = System.telemetry.packets(target_name)
|
455
|
+
packets.each do |packet_name, packet|
|
456
|
+
list << [packet_name, packet.description]
|
457
|
+
end
|
458
|
+
list.sort
|
459
|
+
end
|
460
|
+
|
461
|
+
# Returns the item names and their states and descriptions for a particular
|
462
|
+
# packet.
|
463
|
+
#
|
464
|
+
# @param target_name (see #get_tlm_packet)
|
465
|
+
# @param packet_name (see #get_tlm_packet)
|
466
|
+
# @return [Array<String, Hash, String>] Array of \[item name, item states,
|
467
|
+
# item description]
|
468
|
+
def get_tlm_item_list(target_name, packet_name)
|
469
|
+
list = []
|
470
|
+
System.telemetry.items(target_name, packet_name).each do |item|
|
471
|
+
list << [item.name, item.states, item.description]
|
472
|
+
end
|
473
|
+
list
|
474
|
+
end
|
475
|
+
|
476
|
+
# Returns an array of Hashes with all the attributes of the item.
|
477
|
+
#
|
478
|
+
# @param (see Cosmos::Telemetry#values_and_limits_states)
|
479
|
+
# @return [Array<Hash>] Array of hashes describing the items. All the
|
480
|
+
# attributes in {Cosmos::PacketItem} and {Cosmos::StructItem} are
|
481
|
+
# present in the Hash.
|
482
|
+
def get_tlm_details(item_array)
|
483
|
+
if !item_array.is_a?(Array) || !item_array[0].is_a?(Array)
|
484
|
+
raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
|
485
|
+
end
|
486
|
+
details = []
|
487
|
+
item_array.each do |target_name, packet_name, item_name|
|
488
|
+
_, item = System.telemetry.packet_and_item(target_name, packet_name, item_name)
|
489
|
+
details << item.to_hash
|
490
|
+
end
|
491
|
+
details
|
492
|
+
end
|
493
|
+
|
494
|
+
# (see Cosmos::Limits#out_of_limits)
|
495
|
+
def get_out_of_limits
|
496
|
+
return System.limits.out_of_limits
|
497
|
+
end
|
498
|
+
|
499
|
+
# (see Cosmos::Limits#overall_limits_state)
|
500
|
+
def get_overall_limits_state (ignored_items = nil)
|
501
|
+
return System.limits.overall_limits_state(ignored_items)
|
502
|
+
end
|
503
|
+
|
504
|
+
# Whether the limits are enabled for the given item
|
505
|
+
#
|
506
|
+
# Accepts two different calling styles:
|
507
|
+
# limits_enabled?("TGT PKT ITEM")
|
508
|
+
# limits_enabled?('TGT','PKT','ITEM')
|
509
|
+
#
|
510
|
+
# Favor the first syntax where possible as it is more succinct.
|
511
|
+
#
|
512
|
+
# @param args [String|Array<String>] See the description for calling style
|
513
|
+
# @return [Boolean] Whether limits are enable for the itme
|
514
|
+
def limits_enabled?(*args)
|
515
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'limits_enabled?')
|
516
|
+
return System.limits.enabled?(target_name, packet_name, item_name)
|
517
|
+
end
|
518
|
+
|
519
|
+
# Enable limits checking for a telemetry item
|
520
|
+
#
|
521
|
+
# Accepts two different calling styles:
|
522
|
+
# enable_limits("TGT PKT ITEM")
|
523
|
+
# enable_limits('TGT','PKT','ITEM')
|
524
|
+
#
|
525
|
+
# Favor the first syntax where possible as it is more succinct.
|
526
|
+
#
|
527
|
+
# @param args [String|Array<String>] See the description for calling style
|
528
|
+
def enable_limits(*args)
|
529
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'enable_limits')
|
530
|
+
System.limits.enable(target_name, packet_name, item_name)
|
531
|
+
nil
|
532
|
+
end
|
533
|
+
|
534
|
+
# Disable limit checking for a telemetry item
|
535
|
+
#
|
536
|
+
# Accepts two different calling styles:
|
537
|
+
# disable_limits("TGT PKT ITEM")
|
538
|
+
# disable_limits('TGT','PKT','ITEM')
|
539
|
+
#
|
540
|
+
# Favor the first syntax where possible as it is more succinct.
|
541
|
+
#
|
542
|
+
# @param args [String|Array<String>] See the description for calling style
|
543
|
+
def disable_limits(*args)
|
544
|
+
target_name, packet_name, item_name = tlm_process_args(args, 'disable_limits')
|
545
|
+
System.limits.disable(target_name, packet_name, item_name)
|
546
|
+
nil
|
547
|
+
end
|
548
|
+
|
549
|
+
# (see Cosmos::Limits#get)
|
550
|
+
def get_limits(target_name, packet_name, item_name, limits_set = nil)
|
551
|
+
System.limits.get(target_name, packet_name, item_name, limits_set)
|
552
|
+
end
|
553
|
+
|
554
|
+
# (see Cosmos::Limits#set)
|
555
|
+
def set_limits(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true)
|
556
|
+
result = System.limits.set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low, green_high, limits_set, persistence, enabled)
|
557
|
+
if result[0] != nil
|
558
|
+
limits_settings = [target_name, packet_name, item_name].concat(result)
|
559
|
+
CmdTlmServer.instance.post_limits_event(:LIMITS_SETTINGS, limits_settings)
|
560
|
+
Logger.info("Limits Settings Changed: #{limits_settings}")
|
561
|
+
end
|
562
|
+
result
|
563
|
+
end
|
564
|
+
|
565
|
+
# (see Cosmos::Limits#groups)
|
566
|
+
def get_limits_groups
|
567
|
+
return System.limits.groups.keys
|
568
|
+
end
|
569
|
+
|
570
|
+
# (see Cosmos::Limits#enable_group)
|
571
|
+
def enable_limits_group(group_name)
|
572
|
+
System.limits.enable_group(group_name)
|
573
|
+
nil
|
574
|
+
end
|
575
|
+
|
576
|
+
# (see Cosmos::Limits#disable_group)
|
577
|
+
def disable_limits_group(group_name)
|
578
|
+
System.limits.disable_group(group_name)
|
579
|
+
nil
|
580
|
+
end
|
581
|
+
|
582
|
+
# Returns all defined limits sets
|
583
|
+
#
|
584
|
+
# @return [Array<Symbol>] All defined limits sets
|
585
|
+
def get_limits_sets
|
586
|
+
return System.limits.sets
|
587
|
+
end
|
588
|
+
|
589
|
+
# Changes the active limits set that applies to all telemetry
|
590
|
+
#
|
591
|
+
# @param limits_set [String] The name of the limits set
|
592
|
+
def set_limits_set(limits_set)
|
593
|
+
System.limits_set = limits_set if System.limits_set != limits_set.to_s.upcase.intern
|
594
|
+
end
|
595
|
+
|
596
|
+
# Returns the active limits set that applies to all telemetry
|
597
|
+
#
|
598
|
+
# @return [String] The current limits set
|
599
|
+
def get_limits_set
|
600
|
+
return System.limits_set.to_s
|
601
|
+
end
|
602
|
+
|
603
|
+
#
|
604
|
+
# General Purpose Methods
|
605
|
+
#
|
606
|
+
|
607
|
+
# Returns the list of all target names
|
608
|
+
#
|
609
|
+
# @return [Array<String>] All target names
|
610
|
+
def get_target_list
|
611
|
+
list = []
|
612
|
+
System.targets.each_key {|target_name| list << target_name }
|
613
|
+
return list.sort
|
614
|
+
end
|
615
|
+
|
616
|
+
# @see CmdTlmServer.subscribe_limits_events
|
617
|
+
def subscribe_limits_events(queue_size = CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE)
|
618
|
+
CmdTlmServer.subscribe_limits_events(queue_size)
|
619
|
+
end
|
620
|
+
|
621
|
+
# @see CmdTlmServer.unsubscribe_limits_events
|
622
|
+
def unsubscribe_limits_events(id)
|
623
|
+
CmdTlmServer.unsubscribe_limits_events(id)
|
624
|
+
end
|
625
|
+
|
626
|
+
# @see CmdTlmServer.get_limits_event
|
627
|
+
def get_limits_event(id, non_block = false)
|
628
|
+
CmdTlmServer.get_limits_event(id, non_block)
|
629
|
+
end
|
630
|
+
|
631
|
+
# @see CmdTlmServer.subscribe_packet_data
|
632
|
+
def subscribe_packet_data(packets,
|
633
|
+
queue_size = CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE)
|
634
|
+
CmdTlmServer.subscribe_packet_data(packets, queue_size)
|
635
|
+
end
|
636
|
+
|
637
|
+
# @see CmdTlmServer.unsubscribe_packet_data
|
638
|
+
def unsubscribe_packet_data(id)
|
639
|
+
CmdTlmServer.unsubscribe_packet_data(id)
|
640
|
+
end
|
641
|
+
|
642
|
+
# @see CmdTlmServer.get_packet_data
|
643
|
+
def get_packet_data(id, non_block = false)
|
644
|
+
CmdTlmServer.get_packet_data(id, non_block)
|
645
|
+
end
|
646
|
+
|
647
|
+
#
|
648
|
+
# Methods for scripting
|
649
|
+
#
|
650
|
+
|
651
|
+
# @return [Array<String>] All the interface names
|
652
|
+
def get_interface_names
|
653
|
+
CmdTlmServer.interfaces.names
|
654
|
+
end
|
655
|
+
|
656
|
+
# Connects to an interface and starts its telemetry gathering thread. If
|
657
|
+
# optional parameters are given, the interface is recreated with new
|
658
|
+
# parameters.
|
659
|
+
#
|
660
|
+
# @param interface_name [String] The name of the interface
|
661
|
+
# @param params [Array] Parameters to pass to the interface.
|
662
|
+
def connect_interface(interface_name, *params)
|
663
|
+
CmdTlmServer.interfaces.connect(interface_name, *params)
|
664
|
+
nil
|
665
|
+
end
|
666
|
+
|
667
|
+
# Disconnects from an interface and kills its telemetry gathering thread
|
668
|
+
#
|
669
|
+
# @param interface_name (see #connect_interface)
|
670
|
+
def disconnect_interface(interface_name)
|
671
|
+
CmdTlmServer.interfaces.disconnect(interface_name)
|
672
|
+
nil
|
673
|
+
end
|
674
|
+
|
675
|
+
# @param interface_name (see #connect_interface)
|
676
|
+
# @return [String] The state of the interface which is one of 'CONNECTED',
|
677
|
+
# 'ATTEMPTING' or 'DISCONNECTED'.
|
678
|
+
def interface_state(interface_name)
|
679
|
+
CmdTlmServer.interfaces.state(interface_name)
|
680
|
+
end
|
681
|
+
|
682
|
+
# Associates a target and all its commands and telemetry with a particular
|
683
|
+
# interface. All the commands will go out over and telemetry be received
|
684
|
+
# from that interface.
|
685
|
+
#
|
686
|
+
# @param target_name [String] The name of the target
|
687
|
+
# @param interface_name (see #connect_interface)
|
688
|
+
def map_target_to_interface(target_name, interface_name)
|
689
|
+
CmdTlmServer.interfaces.map_target(target_name, interface_name)
|
690
|
+
nil
|
691
|
+
end
|
692
|
+
|
693
|
+
# @return [Array<String>] All the router names
|
694
|
+
def get_router_names
|
695
|
+
CmdTlmServer.routers.names
|
696
|
+
end
|
697
|
+
|
698
|
+
# Connects a router and starts its command gathering thread. If
|
699
|
+
# optional parameters are given, the router is recreated with new
|
700
|
+
# parameters.
|
701
|
+
#
|
702
|
+
# @param router_name [String] The name of the router
|
703
|
+
# @param params [Array] Parameters to pass to the router.
|
704
|
+
def connect_router(router_name, *params)
|
705
|
+
CmdTlmServer.routers.connect(router_name, *params)
|
706
|
+
nil
|
707
|
+
end
|
708
|
+
|
709
|
+
# Disconnects a router and kills its command gathering thread
|
710
|
+
#
|
711
|
+
# @param router_name (see #connect_router)
|
712
|
+
def disconnect_router(router_name)
|
713
|
+
CmdTlmServer.routers.disconnect(router_name)
|
714
|
+
nil
|
715
|
+
end
|
716
|
+
|
717
|
+
# @param router_name (see #connect_router)
|
718
|
+
# @return [String] The state of the router which is one of 'CONNECTED',
|
719
|
+
# 'ATTEMPTING' or 'DISCONNECTED'.
|
720
|
+
def router_state(router_name)
|
721
|
+
CmdTlmServer.routers.state(router_name)
|
722
|
+
end
|
723
|
+
|
724
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
725
|
+
# is writing the command packet log
|
726
|
+
# @return [String] The command packet log filename
|
727
|
+
def get_cmd_log_filename(packet_log_writer_name = 'DEFAULT')
|
728
|
+
CmdTlmServer.packet_logging.cmd_filename(packet_log_writer_name)
|
729
|
+
end
|
730
|
+
|
731
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
732
|
+
# is writing the telemetry packet log
|
733
|
+
# @return [String] The telemetry packet log filename
|
734
|
+
def get_tlm_log_filename(packet_log_writer_name = 'DEFAULT')
|
735
|
+
CmdTlmServer.packet_logging.tlm_filename(packet_log_writer_name)
|
736
|
+
end
|
737
|
+
|
738
|
+
# Start both command and telemetry packet logging.
|
739
|
+
#
|
740
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
741
|
+
# is writing both the command and telemetry logs
|
742
|
+
# @param label [String] Optional label to apply to both the command and
|
743
|
+
# telemetry packet log filename
|
744
|
+
def start_logging(packet_log_writer_name = 'ALL', label = nil)
|
745
|
+
CmdTlmServer.packet_logging.start(packet_log_writer_name, label)
|
746
|
+
nil
|
747
|
+
end
|
748
|
+
|
749
|
+
# Stop both command and telemetry packet logging.
|
750
|
+
#
|
751
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
752
|
+
# is writing both the command and telemetry logs
|
753
|
+
def stop_logging(packet_log_writer_name = 'ALL')
|
754
|
+
CmdTlmServer.packet_logging.stop(packet_log_writer_name)
|
755
|
+
nil
|
756
|
+
end
|
757
|
+
|
758
|
+
# Start command packet logging.
|
759
|
+
#
|
760
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
761
|
+
# is writing the command logs
|
762
|
+
# @param label [String] Optional label to apply to the command packet log
|
763
|
+
# filename
|
764
|
+
def start_cmd_log(packet_log_writer_name = 'ALL', label = nil)
|
765
|
+
CmdTlmServer.packet_logging.start_cmd(packet_log_writer_name, label)
|
766
|
+
nil
|
767
|
+
end
|
768
|
+
|
769
|
+
# Start telemetry packet logging.
|
770
|
+
#
|
771
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
772
|
+
# is writing the telemetry logs
|
773
|
+
# @param label [String] Optional label to apply to the telemetry packet log
|
774
|
+
# filename
|
775
|
+
def start_tlm_log(packet_log_writer_name = 'ALL', label = nil)
|
776
|
+
CmdTlmServer.packet_logging.start_tlm(packet_log_writer_name, label)
|
777
|
+
nil
|
778
|
+
end
|
779
|
+
|
780
|
+
# Stop command packet logging.
|
781
|
+
#
|
782
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
783
|
+
# is writing the command log
|
784
|
+
def stop_cmd_log(packet_log_writer_name = 'ALL')
|
785
|
+
CmdTlmServer.packet_logging.stop_cmd(packet_log_writer_name)
|
786
|
+
nil
|
787
|
+
end
|
788
|
+
|
789
|
+
# Stop telemetry packet logging.
|
790
|
+
#
|
791
|
+
# @param packet_log_writer_name [String] The name of the packet log writer which
|
792
|
+
# is writing the telemetry log
|
793
|
+
def stop_tlm_log(packet_log_writer_name = 'ALL')
|
794
|
+
CmdTlmServer.packet_logging.stop_tlm(packet_log_writer_name)
|
795
|
+
nil
|
796
|
+
end
|
797
|
+
|
798
|
+
# Starts raw logging for an interface
|
799
|
+
#
|
800
|
+
# @param interface_name [String] The name of the interface
|
801
|
+
def start_raw_logging_interface(interface_name = 'ALL')
|
802
|
+
CmdTlmServer.interfaces.start_raw_logging(interface_name)
|
803
|
+
nil
|
804
|
+
end
|
805
|
+
|
806
|
+
# Stop raw logging for an interface
|
807
|
+
#
|
808
|
+
# @param interface_name [String] The name of the interface
|
809
|
+
def stop_raw_logging_interface(interface_name = 'ALL')
|
810
|
+
CmdTlmServer.interfaces.stop_raw_logging(interface_name)
|
811
|
+
nil
|
812
|
+
end
|
813
|
+
|
814
|
+
# Starts raw logging for a router
|
815
|
+
#
|
816
|
+
# @param router_name [String] The name of the router
|
817
|
+
def start_raw_logging_router(router_name = 'ALL')
|
818
|
+
CmdTlmServer.routers.start_raw_logging(router_name)
|
819
|
+
nil
|
820
|
+
end
|
821
|
+
|
822
|
+
# Stops raw logging for a router
|
823
|
+
#
|
824
|
+
# @param router_name [String] The name of the router
|
825
|
+
def stop_raw_logging_router(router_name = 'ALL')
|
826
|
+
CmdTlmServer.routers.stop_raw_logging(router_name)
|
827
|
+
nil
|
828
|
+
end
|
829
|
+
|
830
|
+
# @return [String] The server message log filename
|
831
|
+
def get_server_message_log_filename
|
832
|
+
CmdTlmServer.message_log.filename
|
833
|
+
end
|
834
|
+
|
835
|
+
# Starts a new server message log
|
836
|
+
def start_new_server_message_log
|
837
|
+
CmdTlmServer.message_log.start
|
838
|
+
nil
|
839
|
+
end
|
840
|
+
|
841
|
+
private
|
842
|
+
|
843
|
+
def cmd_implementation(range_check, hazardous_check, raw, method_name, *args)
|
844
|
+
case args.length
|
845
|
+
when 1
|
846
|
+
target_name, cmd_name, cmd_params = extract_fields_from_cmd_text(args[0])
|
847
|
+
when 2, 3
|
848
|
+
target_name = args[0]
|
849
|
+
cmd_name = args[1]
|
850
|
+
if args.length == 2
|
851
|
+
cmd_params = {}
|
852
|
+
else
|
853
|
+
cmd_params = args[2]
|
854
|
+
end
|
855
|
+
else
|
856
|
+
# Invalid number of arguments
|
857
|
+
raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{method_name}()"
|
858
|
+
end
|
859
|
+
|
860
|
+
if hazardous_check
|
861
|
+
hazardous, hazardous_description = System.commands.cmd_hazardous?(target_name, cmd_name, cmd_params)
|
862
|
+
if hazardous
|
863
|
+
error = HazardousError.new
|
864
|
+
error.target_name = target_name
|
865
|
+
error.cmd_name = cmd_name
|
866
|
+
error.cmd_params = cmd_params
|
867
|
+
error.hazardous_description = hazardous_description
|
868
|
+
raise error
|
869
|
+
end
|
870
|
+
end
|
871
|
+
|
872
|
+
# Build the command
|
873
|
+
begin
|
874
|
+
command = System.commands.build_cmd(target_name, cmd_name, cmd_params, range_check, raw)
|
875
|
+
rescue Exception => e
|
876
|
+
Logger.error e.message
|
877
|
+
raise e
|
878
|
+
end
|
879
|
+
|
880
|
+
# Send the command
|
881
|
+
@disconnect = false unless defined? @disconnect
|
882
|
+
CmdTlmServer.commanding.send_command_to_target(target_name, command) unless @disconnect
|
883
|
+
|
884
|
+
[target_name, cmd_name, cmd_params]
|
885
|
+
end
|
886
|
+
|
887
|
+
def tlm_process_args(args, function_name)
|
888
|
+
case args.length
|
889
|
+
when 1
|
890
|
+
target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
|
891
|
+
when 3
|
892
|
+
target_name = args[0]
|
893
|
+
packet_name = args[1]
|
894
|
+
item_name = args[2]
|
895
|
+
else
|
896
|
+
# Invalid number of arguments
|
897
|
+
raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
|
898
|
+
end
|
899
|
+
return [target_name, packet_name, item_name]
|
900
|
+
end
|
901
|
+
|
902
|
+
def tlm_variable_process_args(args, function_name)
|
903
|
+
case args.length
|
904
|
+
when 2
|
905
|
+
target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
|
906
|
+
value_type = args[1].to_s.intern
|
907
|
+
when 4
|
908
|
+
target_name = args[0]
|
909
|
+
packet_name = args[1]
|
910
|
+
item_name = args[2]
|
911
|
+
value_type = args[3].to_s.intern
|
912
|
+
else
|
913
|
+
# Invalid number of arguments
|
914
|
+
raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
|
915
|
+
end
|
916
|
+
return [target_name, packet_name, item_name, value_type]
|
917
|
+
end
|
918
|
+
|
919
|
+
def set_tlm_process_args(args, function_name)
|
920
|
+
case args.length
|
921
|
+
when 1
|
922
|
+
target_name, packet_name, item_name, value = extract_fields_from_set_tlm_text(args[0])
|
923
|
+
when 4
|
924
|
+
target_name = args[0]
|
925
|
+
packet_name = args[1]
|
926
|
+
item_name = args[2]
|
927
|
+
value = args[3]
|
928
|
+
else
|
929
|
+
# Invalid number of arguments
|
930
|
+
raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
|
931
|
+
end
|
932
|
+
return [target_name, packet_name, item_name, value]
|
933
|
+
end
|
934
|
+
|
935
|
+
end # module Api
|
936
|
+
end # module Cosmos
|