cosmos 3.5.1 → 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -1
- data/.gitattributes +3 -3
- data/.gitignore +48 -48
- data/.travis.yml +8 -8
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +10 -10
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1414 -1414
- data/README.md +111 -111
- data/Rakefile +218 -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 +270 -270
- 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 -305
- 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_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 +24 -24
- 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/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/TestRunnerAHK5 +17 -17
- data/autohotkey/tools/TestRunnerAHK6 +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 +22 -22
- data/autohotkey/tools/TlmViewerAHK3 +23 -23
- data/autohotkey/tools/TlmViewerAHK4 +22 -22
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +33 -33
- data/autohotkey/tools/cmd_sender.ahk +182 -182
- data/autohotkey/tools/cmd_tlm_server.ahk +90 -90
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +141 -141
- data/autohotkey/tools/handbook_creator.ahk +32 -32
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +123 -123
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +196 -196
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +104 -104
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +38 -38
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -262
- data/autohotkey/tools/test_runner2.ahk +53 -53
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/test_runner5.ahk +8 -8
- data/autohotkey/tools/test_runner6.ahk +5 -5
- data/autohotkey/tools/tlm_extractor.ahk +296 -296
- data/autohotkey/tools/tlm_grapher.ahk +660 -660
- 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 -50
- 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 +99 -99
- data/data/about.txt +4 -4
- data/data/crc.txt +326 -326
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +10 -10
- data/demo/Launcher +16 -16
- data/demo/Launcher.bat +0 -0
- data/demo/Rakefile +77 -77
- data/demo/config/data/crc.txt +224 -226
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +35 -35
- 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 +5 -5
- 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 -305
- 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 -13
- 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 +56 -56
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +39 -39
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +34 -34
- 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 +88 -88
- 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 +82 -82
- 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 -57
- data/demo/lib/example_target.rb +113 -113
- 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 +183 -183
- 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 +16 -16
- data/demo/tools/CmdExtractor.bat +0 -0
- data/demo/tools/CmdSender +16 -16
- data/demo/tools/CmdSender.bat +0 -0
- data/demo/tools/CmdTlmServer +16 -16
- data/demo/tools/CmdTlmServer.bat +0 -0
- data/demo/tools/DataViewer +16 -16
- data/demo/tools/DataViewer.bat +0 -0
- data/demo/tools/ExampleTarget +16 -16
- data/demo/tools/ExampleTarget.bat +0 -0
- data/demo/tools/HandbookCreator +16 -16
- data/demo/tools/HandbookCreator.bat +0 -0
- data/demo/tools/Launcher +16 -16
- data/demo/tools/Launcher.bat +0 -0
- data/demo/tools/LimitsMonitor +16 -16
- data/demo/tools/LimitsMonitor.bat +0 -0
- data/demo/tools/OpenGLBuilder +16 -16
- data/demo/tools/OpenGLBuilder.bat +0 -0
- data/demo/tools/PacketViewer +16 -16
- data/demo/tools/PacketViewer.bat +0 -0
- data/demo/tools/Replay +16 -16
- data/demo/tools/Replay.bat +0 -0
- data/demo/tools/ScpiTarget +16 -16
- data/demo/tools/ScpiTarget.bat +0 -0
- data/demo/tools/ScriptRunner +16 -16
- data/demo/tools/ScriptRunner.bat +0 -0
- data/demo/tools/TableManager +16 -16
- data/demo/tools/TableManager.bat +0 -0
- data/demo/tools/TestRunner +16 -16
- data/demo/tools/TestRunner.bat +0 -0
- data/demo/tools/TlmExtractor +16 -16
- data/demo/tools/TlmExtractor.bat +0 -0
- data/demo/tools/TlmGrapher +16 -16
- data/demo/tools/TlmGrapher.bat +0 -0
- data/demo/tools/TlmViewer +16 -16
- data/demo/tools/TlmViewer.bat +0 -0
- data/demo/tools/ToolLaunch.bat +14 -5
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/tool_launch.rb +38 -38
- 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 +265 -265
- 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 +101 -101
- 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 +1428 -1428
- 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 +307 -307
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +10 -10
- data/install/Launcher +16 -16
- data/install/Launcher.bat +0 -0
- data/install/Rakefile +77 -77
- data/install/config/data/crc.txt +151 -151
- 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 +40 -40
- 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 +16 -16
- data/install/tools/CmdExtractor.bat +0 -0
- data/install/tools/CmdSender +16 -16
- data/install/tools/CmdSender.bat +0 -0
- data/install/tools/CmdTlmServer +16 -16
- data/install/tools/CmdTlmServer.bat +0 -0
- data/install/tools/DataViewer +16 -16
- data/install/tools/DataViewer.bat +0 -0
- data/install/tools/HandbookCreator +16 -16
- data/install/tools/HandbookCreator.bat +0 -0
- data/install/tools/Launcher +16 -16
- data/install/tools/Launcher.bat +0 -0
- data/install/tools/LimitsMonitor +16 -16
- data/install/tools/LimitsMonitor.bat +0 -0
- data/install/tools/OpenGLBuilder +16 -16
- data/install/tools/OpenGLBuilder.bat +0 -0
- data/install/tools/PacketViewer +16 -16
- data/install/tools/PacketViewer.bat +0 -0
- data/install/tools/Replay +16 -16
- data/install/tools/Replay.bat +0 -0
- data/install/tools/ScriptRunner +16 -16
- data/install/tools/ScriptRunner.bat +0 -0
- data/install/tools/TableManager +16 -16
- data/install/tools/TableManager.bat +0 -0
- data/install/tools/TestRunner +16 -16
- data/install/tools/TestRunner.bat +0 -0
- data/install/tools/TlmExtractor +16 -16
- data/install/tools/TlmExtractor.bat +0 -0
- data/install/tools/TlmGrapher +16 -16
- data/install/tools/TlmGrapher.bat +0 -0
- data/install/tools/TlmViewer +16 -16
- data/install/tools/TlmViewer.bat +0 -0
- data/install/tools/ToolLaunch.bat +14 -5
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/tool_launch.rb +38 -38
- 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 +311 -311
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +448 -448
- 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 +326 -326
- data/lib/cosmos/gui/dialogs/about_dialog.rb +137 -137
- 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 +260 -260
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -169
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +276 -276
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -165
- 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 +135 -135
- 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 +473 -473
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +451 -451
- 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 +469 -469
- 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 -724
- 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 +860 -860
- data/lib/cosmos/gui/qt_tool.rb +380 -380
- 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 +415 -415
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +330 -330
- 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 -153
- data/lib/cosmos/interfaces/interface.rb +225 -225
- 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 -129
- data/lib/cosmos/interfaces/stream_interface.rb +136 -136
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +164 -164
- data/lib/cosmos/interfaces/udp_interface.rb +161 -161
- 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 +376 -376
- data/lib/cosmos/io/json_drb_object.rb +198 -198
- 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 +571 -571
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +145 -145
- data/lib/cosmos/packet_logs.rb +7 -7
- data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -104
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +450 -450
- data/lib/cosmos/packet_logs/packet_log_writer.rb +323 -323
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +634 -634
- data/lib/cosmos/packets/commands.rb +293 -293
- data/lib/cosmos/packets/limits.rb +267 -267
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +786 -786
- data/lib/cosmos/packets/packet_config.rb +482 -482
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -58
- data/lib/cosmos/packets/parsers/limits_parser.rb +146 -146
- data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -52
- data/lib/cosmos/packets/parsers/macro_parser.rb +116 -116
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +215 -215
- data/lib/cosmos/packets/parsers/packet_parser.rb +123 -123
- data/lib/cosmos/packets/parsers/processor_parser.rb +63 -63
- data/lib/cosmos/packets/parsers/state_parser.rb +116 -116
- data/lib/cosmos/packets/structure.rb +458 -458
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +350 -350
- 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/cmd_tlm_server.rb +110 -110
- data/lib/cosmos/script/commands.rb +184 -184
- data/lib/cosmos/script/extract.rb +123 -123
- data/lib/cosmos/script/limits.rb +114 -114
- data/lib/cosmos/script/script.rb +76 -76
- data/lib/cosmos/script/scripting.rb +897 -897
- data/lib/cosmos/script/telemetry.rb +174 -174
- data/lib/cosmos/script/tools.rb +138 -138
- 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 +157 -157
- data/lib/cosmos/streams/stream.rb +63 -63
- data/lib/cosmos/streams/stream_protocol.rb +373 -373
- data/lib/cosmos/streams/tcpip_client_stream.rb +113 -113
- data/lib/cosmos/streams/tcpip_socket_stream.rb +143 -143
- 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 +618 -618
- data/lib/cosmos/system/target.rb +197 -197
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +255 -255
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +717 -717
- 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 +1034 -1034
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -67
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +515 -515
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +253 -253
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +408 -408
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -175
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +200 -200
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +150 -150
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +244 -244
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +90 -90
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +266 -266
- 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 +621 -621
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +134 -134
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -156
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -382
- data/lib/cosmos/tools/launcher/launcher.rb +188 -188
- data/lib/cosmos/tools/launcher/launcher_config.rb +256 -256
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -40
- data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -116
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +837 -837
- 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 +542 -542
- data/lib/cosmos/tools/replay/replay.rb +501 -501
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -147
- data/lib/cosmos/tools/script_runner/script_runner.rb +922 -922
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1798 -1798
- 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 +539 -539
- data/lib/cosmos/tools/test_runner/test_runner.rb +1189 -1189
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -341
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1016 -1016
- 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 +95 -95
- 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 +181 -181
- 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 +174 -174
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -193
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +407 -407
- 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 -323
- 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 +1291 -1291
- 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 +114 -114
- 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 +78 -78
- 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 -486
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +561 -561
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +290 -290
- 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 +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -57
- 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 +759 -759
- data/lib/cosmos/utilities.rb +11 -11
- 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 +79 -79
- 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 -44
- 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 +321 -321
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +0 -0
- 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 +202 -202
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/gui/qt_spec.rb +102 -102
- 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 -305
- 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 -130
- data/spec/interfaces/linc_interface_spec.rb +259 -259
- 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 +55 -55
- data/spec/interfaces/tcpip_server_interface_spec.rb +160 -160
- data/spec/interfaces/udp_interface_spec.rb +175 -175
- 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 +119 -119
- 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 +60 -60
- 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 +468 -468
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +225 -225
- data/spec/packets/binary_accessor_spec.rb +2326 -2326
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +344 -344
- data/spec/packets/packet_config_spec.rb +805 -805
- 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 +1317 -1317
- data/spec/packets/parsers/format_string_parser_spec.rb +122 -122
- data/spec/packets/parsers/limits_parser_spec.rb +282 -282
- data/spec/packets/parsers/limits_response_parser_spec.rb +149 -149
- data/spec/packets/parsers/macro_parser_spec.rb +212 -212
- data/spec/packets/parsers/packet_item_parser_spec.rb +306 -306
- data/spec/packets/parsers/packet_parser_spec.rb +99 -99
- data/spec/packets/parsers/processor_parser_spec.rb +114 -114
- data/spec/packets/parsers/state_parser_spec.rb +156 -156
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +565 -565
- data/spec/packets/telemetry_spec.rb +578 -578
- 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/cmd_tlm_server_spec.rb +110 -110
- data/spec/script/commands_disconnect_spec.rb +270 -270
- data/spec/script/commands_spec.rb +302 -302
- data/spec/script/limits_spec.rb +153 -153
- data/spec/script/script_spec.rb +86 -86
- data/spec/script/scripting_spec.rb +440 -440
- data/spec/script/telemetry_spec.rb +165 -165
- data/spec/script/tools_spec.rb +117 -117
- data/spec/spec_helper.rb +190 -190
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +113 -113
- data/spec/streams/length_stream_protocol_spec.rb +300 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +121 -121
- data/spec/streams/serial_stream_spec.rb +117 -117
- data/spec/streams/stream_protocol_spec.rb +346 -346
- data/spec/streams/stream_spec.rb +30 -30
- data/spec/streams/tcpip_client_stream_spec.rb +57 -57
- data/spec/streams/tcpip_socket_stream_spec.rb +193 -193
- data/spec/streams/template_stream_protocol_spec.rb +156 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +127 -127
- data/spec/system/system_spec.rb +665 -665
- data/spec/system/target_spec.rb +250 -250
- data/spec/tools/cmd_tlm_server/api_spec.rb +1117 -1117
- 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 +453 -453
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -235
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -252
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -223
- data/spec/tools/launcher/launcher_config_spec.rb +464 -464
- data/spec/top_level/top_level_spec.rb +334 -334
- 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
- data/test/benchmarks/binary_accessor_benchmark.rb +14 -14
- data/test/benchmarks/gsub_benchmark.rb +152 -152
- data/test/benchmarks/is_a_benchmark.rb +34 -34
- data/test/performance/PACKETS.bat +0 -0
- data/test/performance/Rakefile +77 -77
- data/test/performance/THREADS.bat +0 -0
- data/test/performance/config/data/crc.txt +196 -196
- data/test/performance/config/data/diamond.STL +57 -57
- data/test/performance/config/data/meta_init.txt +4 -4
- data/test/performance/config/system/system_packets.txt +39 -39
- data/test/performance/config/system/system_threads.txt +59 -59
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -46
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/test/performance/config/targets/COSMOS/screens/version.txt +19 -19
- data/test/performance/config/targets/COSMOS/target.txt +11 -11
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -20
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -98
- data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -22
- data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -24
- data/test/performance/config/targets/PACKET/screens/status.txt +25 -25
- data/test/performance/config/targets/PACKET/target.txt +28 -28
- data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -12
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -17
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -18
- data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -22
- data/test/performance/config/targets/THREAD/screens/status.txt +25 -25
- data/test/performance/config/targets/THREAD/target.txt +6 -6
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -28
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -68
- data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -11
- data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/test/performance/config/tools/launcher/launcher_packets.txt +34 -34
- data/test/performance/config/tools/launcher/launcher_threads.txt +83 -83
- data/test/performance/config/tools/script_runner/script_runner.txt +3 -3
- data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/test/performance/config/tools/test_runner/test_runner.txt +17 -17
- data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -204
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -13
- data/test/performance/lib/packet_target.rb +126 -126
- data/test/performance/lib/thread_target.rb +120 -120
- data/test/performance/lib/user_version.rb +3 -3
- data/test/performance/procedures/checks.rb +11 -11
- data/test/performance/procedures/clear_util.rb +7 -7
- data/test/performance/procedures/collect.rb +18 -18
- data/test/performance/procedures/collect_util.rb +14 -14
- data/test/performance/procedures/cosmos_api_test.rb +293 -293
- data/test/performance/procedures/disconnect.rb +29 -29
- data/test/performance/procedures/example_test.rb +182 -182
- data/test/performance/procedures/plot_test.rb +8 -8
- data/test/performance/procedures/procedure.rb +2 -2
- data/test/performance/procedures/run_example_test.rb +3 -3
- data/test/performance/procedures/test.rb +51 -51
- data/test/performance/tools/CmdExtractor +14 -14
- data/test/performance/tools/CmdExtractor.bat +0 -0
- data/test/performance/tools/CmdSender +14 -14
- data/test/performance/tools/CmdSender.bat +0 -0
- data/test/performance/tools/CmdTlmServer +16 -16
- data/test/performance/tools/CmdTlmServer.bat +0 -0
- data/test/performance/tools/CmdTlmServerMemProf +20 -20
- data/test/performance/tools/CmdTlmServerMemProf.bat +0 -0
- data/test/performance/tools/DataViewer +14 -14
- data/test/performance/tools/DataViewer.bat +0 -0
- data/test/performance/tools/HandbookCreator +14 -14
- data/test/performance/tools/HandbookCreator.bat +0 -0
- data/test/performance/tools/Launcher +14 -14
- data/test/performance/tools/Launcher.bat +0 -0
- data/test/performance/tools/LimitsMonitor +14 -14
- data/test/performance/tools/LimitsMonitor.bat +0 -0
- data/test/performance/tools/OpenGLBuilder +14 -14
- data/test/performance/tools/OpenGLBuilder.bat +0 -0
- data/test/performance/tools/PacketTarget +14 -14
- data/test/performance/tools/PacketTarget.bat +0 -0
- data/test/performance/tools/PacketViewer +14 -14
- data/test/performance/tools/PacketViewer.bat +0 -0
- data/test/performance/tools/Replay +14 -14
- data/test/performance/tools/Replay.bat +0 -0
- data/test/performance/tools/ScpiTarget +14 -14
- data/test/performance/tools/ScpiTarget.bat +0 -0
- data/test/performance/tools/ScriptRunner +14 -14
- data/test/performance/tools/ScriptRunner.bat +0 -0
- data/test/performance/tools/TableManager +14 -14
- data/test/performance/tools/TableManager.bat +0 -0
- data/test/performance/tools/TestRunner +14 -14
- data/test/performance/tools/TestRunner.bat +0 -0
- data/test/performance/tools/ThreadTarget +14 -14
- data/test/performance/tools/ThreadTarget.bat +0 -0
- data/test/performance/tools/TlmExtractor +14 -14
- data/test/performance/tools/TlmExtractor.bat +0 -0
- data/test/performance/tools/TlmGrapher +14 -14
- data/test/performance/tools/TlmGrapher.bat +0 -0
- data/test/performance/tools/TlmGrapherMemProf +19 -19
- data/test/performance/tools/TlmGrapherMemProf.bat +0 -0
- data/test/performance/tools/TlmViewer +14 -14
- data/test/performance/tools/TlmViewer.bat +0 -0
- data/test/performance/tools/TlmViewerMemProf +19 -19
- data/test/performance/tools/TlmViewerMemProf.bat +0 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- metadata +3 -3
|
@@ -1,1117 +1,1117 @@
|
|
|
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 'spec_helper'
|
|
12
|
-
require 'cosmos'
|
|
13
|
-
require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
|
|
14
|
-
require 'cosmos/tools/cmd_tlm_server/api'
|
|
15
|
-
|
|
16
|
-
module Cosmos
|
|
17
|
-
|
|
18
|
-
describe Api do
|
|
19
|
-
|
|
20
|
-
before(:all) do
|
|
21
|
-
cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
22
|
-
FileUtils.mkdir_p(File.dirname(cts))
|
|
23
|
-
File.open(cts,'w') do |file|
|
|
24
|
-
file.puts 'INTERFACE INT interface.rb'
|
|
25
|
-
file.puts 'ROUTER ROUTE interface.rb'
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
after(:all) do
|
|
30
|
-
clean_config()
|
|
31
|
-
FileUtils.rm_rf File.join(Cosmos::USERPATH,'config','tools')
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
before(:each) do
|
|
35
|
-
allow_any_instance_of(Interface).to receive(:connected?)
|
|
36
|
-
allow_any_instance_of(Interface).to receive(:connect)
|
|
37
|
-
allow_any_instance_of(Interface).to receive(:disconnect)
|
|
38
|
-
allow_any_instance_of(Interface).to receive(:write_raw)
|
|
39
|
-
allow_any_instance_of(Interface).to receive(:read)
|
|
40
|
-
@api = CmdTlmServer.new
|
|
41
|
-
allow(@api.commanding).to receive(:send_command_to_target)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
after(:each) do
|
|
45
|
-
@api.stop
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_cmd_unknown(method)
|
|
49
|
-
expect { @api.send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
|
|
50
|
-
expect { @api.send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
|
|
51
|
-
expect { @api.send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
|
|
52
|
-
expect { @api.send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
53
|
-
expect { @api.send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
54
|
-
expect { @api.send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
describe "cmd" do
|
|
58
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
59
|
-
test_cmd_unknown(:cmd)
|
|
60
|
-
sleep(0.5)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "processes a string" do
|
|
64
|
-
target_name, cmd_name, params = @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
65
|
-
expect(target_name).to eql 'INST'
|
|
66
|
-
expect(cmd_name).to eql 'COLLECT'
|
|
67
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "complains if parameters are not separated by commas" do
|
|
71
|
-
expect { @api.cmd("INST COLLECT with TYPE NORMAL DURATION 5") }.to raise_error(/Missing comma/)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "complains if parameters don't have values" do
|
|
75
|
-
expect { @api.cmd("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "processes parameters" do
|
|
79
|
-
target_name, cmd_name, params = @api.cmd("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
80
|
-
expect(target_name).to eql 'INST'
|
|
81
|
-
expect(cmd_name).to eql 'COLLECT'
|
|
82
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "processes commands without parameters" do
|
|
86
|
-
target_name, cmd_name, params = @api.cmd("INST","ABORT")
|
|
87
|
-
expect(target_name).to eql 'INST'
|
|
88
|
-
expect(cmd_name).to eql 'ABORT'
|
|
89
|
-
expect(params).to be {}
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "complains about too many parameters" do
|
|
93
|
-
expect { @api.cmd("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "warns about required parameters" do
|
|
97
|
-
expect { @api.cmd("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "warns about out of range parameters" do
|
|
101
|
-
expect { @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "warns about hazardous parameters" do
|
|
105
|
-
expect { @api.cmd("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "warns about hazardous commands" do
|
|
109
|
-
expect { @api.cmd("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
describe "cmd_no_range_check" do
|
|
114
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
115
|
-
test_cmd_unknown(:cmd_no_range_check)
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
it "processes a string" do
|
|
119
|
-
target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
120
|
-
expect(target_name).to eql 'INST'
|
|
121
|
-
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
122
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
it "processes parameters" do
|
|
126
|
-
target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
127
|
-
expect(target_name).to eql 'INST'
|
|
128
|
-
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
129
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
it "warns about required parameters" do
|
|
133
|
-
expect { @api.cmd_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
it "does not warn about out of range parameters" do
|
|
137
|
-
expect { @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
it "warns about hazardous parameters" do
|
|
141
|
-
expect { @api.cmd_no_range_check("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
it "warns about hazardous commands" do
|
|
145
|
-
expect { @api.cmd_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
describe "cmd_no_hazardous_check" do
|
|
150
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
151
|
-
test_cmd_unknown(:cmd_no_hazardous_check)
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
it "processes a string" do
|
|
155
|
-
target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
156
|
-
expect(target_name).to eql 'INST'
|
|
157
|
-
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
158
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
it "processes parameters" do
|
|
162
|
-
target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
163
|
-
expect(target_name).to eql 'INST'
|
|
164
|
-
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
165
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it "processes parameters that are strings" do
|
|
169
|
-
target_name, cmd_name, params = @api.cmd_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
|
|
170
|
-
expect(target_name).to eql 'INST'
|
|
171
|
-
expect(cmd_name).to eql 'ASCIICMD'
|
|
172
|
-
expect(params).to include('STRING'=>'ARM LASER')
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
it "warns about required parameters" do
|
|
176
|
-
expect { @api.cmd_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
it "warns about out of range parameters" do
|
|
180
|
-
expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
it "does not warn about hazardous parameters" do
|
|
184
|
-
expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
it "does not warn about hazardous commands" do
|
|
188
|
-
expect { @api.cmd_no_hazardous_check("INST CLEAR") }.to_not raise_error
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
describe "cmd_no_checks" do
|
|
193
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
194
|
-
test_cmd_unknown(:cmd_no_checks)
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
it "processes a string" do
|
|
198
|
-
target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
199
|
-
expect(target_name).to eql 'INST'
|
|
200
|
-
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
201
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
it "processes parameters" do
|
|
205
|
-
target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
206
|
-
expect(target_name).to eql 'INST'
|
|
207
|
-
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
208
|
-
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
it "warns about required parameters" do
|
|
212
|
-
expect { @api.cmd_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
it "does not warn about out of range parameters" do
|
|
216
|
-
expect { @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
it "does not warn about hazardous parameters" do
|
|
220
|
-
expect { @api.cmd_no_checks("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
it "does not warn about hazardous commands" do
|
|
224
|
-
expect { @api.cmd_no_checks("INST CLEAR") }.to_not raise_error
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
describe "cmd_raw" do
|
|
229
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
230
|
-
test_cmd_unknown(:cmd_raw)
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
it "processes a string" do
|
|
234
|
-
target_name, cmd_name, params = @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 5")
|
|
235
|
-
expect(target_name).to eql 'INST'
|
|
236
|
-
expect(cmd_name).to eql 'COLLECT'
|
|
237
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
it "complains if parameters are not separated by commas" do
|
|
241
|
-
expect { @api.cmd_raw("INST COLLECT with TYPE 0 DURATION 5") }.to raise_error(/Missing comma/)
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
it "complains if parameters don't have values" do
|
|
245
|
-
expect { @api.cmd_raw("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it "processes parameters" do
|
|
249
|
-
target_name, cmd_name, params = @api.cmd_raw("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
250
|
-
expect(target_name).to eql 'INST'
|
|
251
|
-
expect(cmd_name).to eql 'COLLECT'
|
|
252
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
it "processes commands without parameters" do
|
|
256
|
-
target_name, cmd_name, params = @api.cmd_raw("INST","ABORT")
|
|
257
|
-
expect(target_name).to eql 'INST'
|
|
258
|
-
expect(cmd_name).to eql 'ABORT'
|
|
259
|
-
expect(params).to be {}
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
it "complains about too many parameters" do
|
|
263
|
-
expect { @api.cmd_raw("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
it "warns about required parameters" do
|
|
267
|
-
expect { @api.cmd_raw("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
it "warns about out of range parameters" do
|
|
271
|
-
expect { @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
it "warns about hazardous parameters" do
|
|
275
|
-
expect { @api.cmd_raw("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
it "warns about hazardous commands" do
|
|
279
|
-
expect { @api.cmd_raw("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
280
|
-
end
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
describe "cmd_no_range_check" do
|
|
284
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
285
|
-
test_cmd_unknown(:cmd_raw_no_range_check)
|
|
286
|
-
end
|
|
287
|
-
|
|
288
|
-
it "processes a string" do
|
|
289
|
-
target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 5")
|
|
290
|
-
expect(target_name).to eql 'INST'
|
|
291
|
-
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
292
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
it "processes parameters" do
|
|
296
|
-
target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
297
|
-
expect(target_name).to eql 'INST'
|
|
298
|
-
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
299
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
300
|
-
end
|
|
301
|
-
|
|
302
|
-
it "warns about required parameters" do
|
|
303
|
-
expect { @api.cmd_raw_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
it "does not warn about out of range parameters" do
|
|
307
|
-
expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
it "warns about hazardous parameters" do
|
|
311
|
-
expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
it "warns about hazardous commands" do
|
|
315
|
-
expect { @api.cmd_raw_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
316
|
-
end
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
describe "cmd_raw_no_hazardous_check" do
|
|
320
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
321
|
-
test_cmd_unknown(:cmd_raw_no_hazardous_check)
|
|
322
|
-
end
|
|
323
|
-
|
|
324
|
-
it "processes a string" do
|
|
325
|
-
target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 5")
|
|
326
|
-
expect(target_name).to eql 'INST'
|
|
327
|
-
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
328
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
it "processes parameters" do
|
|
332
|
-
target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
333
|
-
expect(target_name).to eql 'INST'
|
|
334
|
-
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
335
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
it "processes parameters that are strings" do
|
|
339
|
-
target_name, cmd_name, params = @api.cmd_raw_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
|
|
340
|
-
expect(target_name).to eql 'INST'
|
|
341
|
-
expect(cmd_name).to eql 'ASCIICMD'
|
|
342
|
-
expect(params).to include('STRING'=>'ARM LASER')
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
it "warns about required parameters" do
|
|
346
|
-
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
it "warns about out of range parameters" do
|
|
350
|
-
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
351
|
-
end
|
|
352
|
-
|
|
353
|
-
it "does not warn about hazardous parameters" do
|
|
354
|
-
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1") }.to_not raise_error
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
it "does not warn about hazardous commands" do
|
|
358
|
-
expect { @api.cmd_raw_no_hazardous_check("INST CLEAR") }.to_not raise_error
|
|
359
|
-
end
|
|
360
|
-
end
|
|
361
|
-
|
|
362
|
-
describe "cmd_raw_no_checks" do
|
|
363
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
364
|
-
test_cmd_unknown(:cmd_raw_no_checks)
|
|
365
|
-
end
|
|
366
|
-
|
|
367
|
-
it "processes a string" do
|
|
368
|
-
target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 5")
|
|
369
|
-
expect(target_name).to eql 'INST'
|
|
370
|
-
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
371
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
372
|
-
end
|
|
373
|
-
|
|
374
|
-
it "processes parameters" do
|
|
375
|
-
target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
376
|
-
expect(target_name).to eql 'INST'
|
|
377
|
-
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
378
|
-
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
379
|
-
end
|
|
380
|
-
|
|
381
|
-
it "warns about required parameters" do
|
|
382
|
-
expect { @api.cmd_raw_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
383
|
-
end
|
|
384
|
-
|
|
385
|
-
it "does not warn about out of range parameters" do
|
|
386
|
-
expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
it "does not warn about hazardous parameters" do
|
|
390
|
-
expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 1") }.to_not raise_error
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
it "does not warn about hazardous commands" do
|
|
394
|
-
expect { @api.cmd_raw_no_checks("INST CLEAR") }.to_not raise_error
|
|
395
|
-
end
|
|
396
|
-
end
|
|
397
|
-
|
|
398
|
-
describe "get_cmd_list" do
|
|
399
|
-
it "returns command names sorted" do
|
|
400
|
-
result = @api.get_cmd_list("INST")
|
|
401
|
-
expect(result.sort).to eql result
|
|
402
|
-
end
|
|
403
|
-
|
|
404
|
-
it "complains with a unknown target" do
|
|
405
|
-
expect { @api.get_cmd_list("BLAH") }.to raise_error(/does not exist/)
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
it "returns command names and descriptions for a given target" do
|
|
409
|
-
result = @api.get_cmd_list("INST")
|
|
410
|
-
expect(result[0][0]).to eql "ABORT"
|
|
411
|
-
# The second parameter is the description ... only test one
|
|
412
|
-
expect(result[0][1]).to eql "Aborts a collect on the instrument"
|
|
413
|
-
expect(result[1][0]).to eql "ARYCMD"
|
|
414
|
-
expect(result[2][0]).to eql "ASCIICMD"
|
|
415
|
-
expect(result[3][0]).to eql "CLEAR"
|
|
416
|
-
expect(result[4][0]).to eql "COLLECT"
|
|
417
|
-
expect(result[5][0]).to eql "COSMOS_ERROR_HANDLE"
|
|
418
|
-
expect(result[6][0]).to eql "COSMOS_ERROR_IGNORE"
|
|
419
|
-
expect(result[7][0]).to eql "COSMOS_HANDSHAKE_DS"
|
|
420
|
-
expect(result[8][0]).to eql "COSMOS_HANDSHAKE_EN"
|
|
421
|
-
expect(result[9][0]).to eql "FLTCMD"
|
|
422
|
-
expect(result[10][0]).to eql "LINC_COMMAND"
|
|
423
|
-
expect(result[11][0]).to eql "SETPARAMS"
|
|
424
|
-
expect(result[12][0]).to eql "SLRPNLDEPLOY"
|
|
425
|
-
expect(result[13][0]).to eql "SLRPNLRESET"
|
|
426
|
-
end
|
|
427
|
-
end
|
|
428
|
-
|
|
429
|
-
describe "get_cmd_param_list" do
|
|
430
|
-
it "returns parameters for the command" do
|
|
431
|
-
result = @api.get_cmd_param_list("INST","COLLECT")
|
|
432
|
-
# Each element in the results array contains:
|
|
433
|
-
# name, default, states, description, full units, units, required
|
|
434
|
-
expect(result).to include ['TYPE',0,{"NORMAL"=>0,"SPECIAL"=>1},'Collect type',nil,nil,true]
|
|
435
|
-
expect(result).to include ['TEMP',0.0,nil,'Collect temperature','Celcius','C',false]
|
|
436
|
-
end
|
|
437
|
-
|
|
438
|
-
it "returns array parameters for the command" do
|
|
439
|
-
result = @api.get_cmd_param_list("INST","ARYCMD")
|
|
440
|
-
# Each element in the results array contains:
|
|
441
|
-
# name, default, states, description, full units, units, required
|
|
442
|
-
expect(result).to include ['ARRAY',[],nil,'Array parameter',nil,nil,false]
|
|
443
|
-
end
|
|
444
|
-
end
|
|
445
|
-
|
|
446
|
-
describe "get_cmd_hazardous" do
|
|
447
|
-
it "returns whether the command with parameters is hazardous" do
|
|
448
|
-
expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"NORMAL"})).to be false
|
|
449
|
-
expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"SPECIAL"})).to be true
|
|
450
|
-
end
|
|
451
|
-
|
|
452
|
-
it "returns whether the command is hazardous" do
|
|
453
|
-
expect(@api.get_cmd_hazardous("INST","CLEAR")).to be true
|
|
454
|
-
end
|
|
455
|
-
end
|
|
456
|
-
|
|
457
|
-
describe "get_cmd_value" do
|
|
458
|
-
it "returns command values" do
|
|
459
|
-
time = Time.now
|
|
460
|
-
packet = System.commands.packet("INST", "COLLECT")
|
|
461
|
-
packet.received_time = time
|
|
462
|
-
packet.restore_defaults
|
|
463
|
-
packet.received_count = 5
|
|
464
|
-
expect(@api.get_cmd_value("INST", "COLLECT", "TYPE")).to eql 'NORMAL'
|
|
465
|
-
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMEFORMATTED")).to eql time.formatted
|
|
466
|
-
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMESECONDS")).to eql time.to_f
|
|
467
|
-
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_COUNT")).to eql 5
|
|
468
|
-
end
|
|
469
|
-
end
|
|
470
|
-
|
|
471
|
-
describe "get_cmd_time" do
|
|
472
|
-
it "returns command times" do
|
|
473
|
-
time = Time.now
|
|
474
|
-
time2 = Time.now + 2
|
|
475
|
-
packet = System.commands.packet("INST", "COLLECT")
|
|
476
|
-
packet.received_time = time
|
|
477
|
-
packet2 = System.commands.packet("COSMOS", "STARTLOGGING")
|
|
478
|
-
packet2.received_time = time2
|
|
479
|
-
expect(@api.get_cmd_time()).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
480
|
-
expect(@api.get_cmd_time('INST')).to eql ['INST', 'COLLECT', time.tv_sec, time.tv_usec]
|
|
481
|
-
expect(@api.get_cmd_time('COSMOS')).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
482
|
-
expect(@api.get_cmd_time('INST', 'COLLECT')).to eql ['INST', 'COLLECT', time.tv_sec, time.tv_usec]
|
|
483
|
-
expect(@api.get_cmd_time('COSMOS', 'STARTLOGGING')).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
484
|
-
end
|
|
485
|
-
end
|
|
486
|
-
|
|
487
|
-
def test_tlm_unknown(method)
|
|
488
|
-
expect { @api.send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
|
|
489
|
-
expect { @api.send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
|
|
490
|
-
expect { @api.send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
|
|
491
|
-
expect { @api.send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
|
|
492
|
-
expect { @api.send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
|
|
493
|
-
expect { @api.send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
|
|
494
|
-
end
|
|
495
|
-
|
|
496
|
-
describe "tlm" do
|
|
497
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
498
|
-
test_tlm_unknown(:tlm)
|
|
499
|
-
end
|
|
500
|
-
|
|
501
|
-
it "processes a string" do
|
|
502
|
-
value = @api.tlm("INST HEALTH_STATUS TEMP1")
|
|
503
|
-
expect(value).to eql -100.0
|
|
504
|
-
end
|
|
505
|
-
|
|
506
|
-
it "processes parameters" do
|
|
507
|
-
value = @api.tlm("INST","HEALTH_STATUS","TEMP1")
|
|
508
|
-
end
|
|
509
|
-
|
|
510
|
-
it "complains if too many parameters" do
|
|
511
|
-
expect { @api.tlm("INST","HEALTH_STATUS","TEMP1","TEMP2") }.to raise_error(/Invalid number of arguments/)
|
|
512
|
-
end
|
|
513
|
-
end
|
|
514
|
-
|
|
515
|
-
describe "tlm_raw" do
|
|
516
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
517
|
-
test_tlm_unknown(:tlm_raw)
|
|
518
|
-
end
|
|
519
|
-
|
|
520
|
-
it "processes a string" do
|
|
521
|
-
expect(@api.tlm_raw("INST HEALTH_STATUS TEMP1")).to eql 0
|
|
522
|
-
end
|
|
523
|
-
|
|
524
|
-
it "returns the value using LATEST" do
|
|
525
|
-
expect(@api.tlm_raw("INST LATEST TEMP1")).to eql 0
|
|
526
|
-
end
|
|
527
|
-
|
|
528
|
-
it "processes parameters" do
|
|
529
|
-
expect(@api.tlm_raw("INST","HEALTH_STATUS","TEMP1")).to eql 0
|
|
530
|
-
end
|
|
531
|
-
end
|
|
532
|
-
|
|
533
|
-
describe "tlm_formatted" do
|
|
534
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
535
|
-
test_tlm_unknown(:tlm_formatted)
|
|
536
|
-
end
|
|
537
|
-
|
|
538
|
-
it "processes a string" do
|
|
539
|
-
expect(@api.tlm_formatted("INST HEALTH_STATUS TEMP1")).to eql "-100.000"
|
|
540
|
-
end
|
|
541
|
-
|
|
542
|
-
it "returns the value using LATEST" do
|
|
543
|
-
expect(@api.tlm_formatted("INST LATEST TEMP1")).to eql "-100.000"
|
|
544
|
-
end
|
|
545
|
-
|
|
546
|
-
it "processes parameters" do
|
|
547
|
-
expect(@api.tlm_formatted("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000"
|
|
548
|
-
end
|
|
549
|
-
end
|
|
550
|
-
|
|
551
|
-
describe "tlm_with_units" do
|
|
552
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
553
|
-
test_tlm_unknown(:tlm_with_units)
|
|
554
|
-
end
|
|
555
|
-
|
|
556
|
-
it "processes a string" do
|
|
557
|
-
expect(@api.tlm_with_units("INST HEALTH_STATUS TEMP1")).to eql "-100.000 C"
|
|
558
|
-
end
|
|
559
|
-
|
|
560
|
-
it "returns the value using LATEST" do
|
|
561
|
-
expect(@api.tlm_with_units("INST LATEST TEMP1")).to eql "-100.000 C"
|
|
562
|
-
end
|
|
563
|
-
|
|
564
|
-
it "processes parameters" do
|
|
565
|
-
expect(@api.tlm_with_units("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000 C"
|
|
566
|
-
end
|
|
567
|
-
end
|
|
568
|
-
|
|
569
|
-
describe "tlm_variable" do
|
|
570
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
571
|
-
expect { @api.tlm_variable("BLAH HEALTH_STATUS COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
572
|
-
expect { @api.tlm_variable("INST UNKNOWN COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
573
|
-
expect { @api.tlm_variable("INST HEALTH_STATUS BLAH",:RAW) }.to raise_error(/does not exist/)
|
|
574
|
-
expect { @api.tlm_variable("BLAH","HEALTH_STATUS","COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
575
|
-
expect { @api.tlm_variable("INST","UNKNOWN","COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
576
|
-
expect { @api.tlm_variable("INST","HEALTH_STATUS","BLAH",:RAW) }.to raise_error(/does not exist/)
|
|
577
|
-
end
|
|
578
|
-
|
|
579
|
-
it "processes a string" do
|
|
580
|
-
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:CONVERTED)).to eql -100.0
|
|
581
|
-
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:RAW)).to eql 0
|
|
582
|
-
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:FORMATTED)).to eql "-100.000"
|
|
583
|
-
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
584
|
-
end
|
|
585
|
-
|
|
586
|
-
it "returns the value using LATEST" do
|
|
587
|
-
expect(@api.tlm_variable("INST LATEST TEMP1",:CONVERTED)).to eql -100.0
|
|
588
|
-
expect(@api.tlm_variable("INST LATEST TEMP1",:RAW)).to eql 0
|
|
589
|
-
expect(@api.tlm_variable("INST LATEST TEMP1",:FORMATTED)).to eql "-100.000"
|
|
590
|
-
expect(@api.tlm_variable("INST LATEST TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
591
|
-
end
|
|
592
|
-
|
|
593
|
-
it "processes parameters" do
|
|
594
|
-
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:CONVERTED)).to eql -100.0
|
|
595
|
-
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:RAW)).to eql 0
|
|
596
|
-
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:FORMATTED)).to eql "-100.000"
|
|
597
|
-
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
598
|
-
end
|
|
599
|
-
|
|
600
|
-
it "complains with too many parameters" do
|
|
601
|
-
expect { @api.tlm_variable("INST","HEALTH_STATUS","TEMP1","TEMP2",:CONVERTED) }.to raise_error(/Invalid number of arguments/)
|
|
602
|
-
end
|
|
603
|
-
end
|
|
604
|
-
|
|
605
|
-
describe "set_tlm" do
|
|
606
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
607
|
-
expect { @api.set_tlm("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
608
|
-
expect { @api.set_tlm("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
609
|
-
expect { @api.set_tlm("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
|
|
610
|
-
expect { @api.set_tlm("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
611
|
-
expect { @api.set_tlm("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
612
|
-
expect { @api.set_tlm("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
|
|
613
|
-
end
|
|
614
|
-
|
|
615
|
-
it "processes a string" do
|
|
616
|
-
@api.set_tlm("INST HEALTH_STATUS TEMP1 = 0.0")
|
|
617
|
-
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
|
|
618
|
-
end
|
|
619
|
-
|
|
620
|
-
it "processes parameters" do
|
|
621
|
-
@api.set_tlm("INST","HEALTH_STATUS","TEMP1", 0.0)
|
|
622
|
-
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
|
|
623
|
-
end
|
|
624
|
-
|
|
625
|
-
it "complains with too many parameters" do
|
|
626
|
-
expect { @api.set_tlm("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
|
|
627
|
-
end
|
|
628
|
-
end
|
|
629
|
-
|
|
630
|
-
describe "set_tlm_raw" do
|
|
631
|
-
it "complains about unknown targets, commands, and parameters" do
|
|
632
|
-
expect { @api.set_tlm_raw("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
633
|
-
expect { @api.set_tlm_raw("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
634
|
-
expect { @api.set_tlm_raw("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
|
|
635
|
-
expect { @api.set_tlm_raw("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
636
|
-
expect { @api.set_tlm_raw("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
637
|
-
expect { @api.set_tlm_raw("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
|
|
638
|
-
end
|
|
639
|
-
|
|
640
|
-
it "processes a string" do
|
|
641
|
-
@api.set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0.0")
|
|
642
|
-
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
|
|
643
|
-
end
|
|
644
|
-
|
|
645
|
-
it "processes parameters" do
|
|
646
|
-
@api.set_tlm_raw("INST","HEALTH_STATUS","TEMP1", 0.0)
|
|
647
|
-
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
|
|
648
|
-
end
|
|
649
|
-
end
|
|
650
|
-
|
|
651
|
-
describe "get_tlm_packet" do
|
|
652
|
-
it "complains about non-existant targets" do
|
|
653
|
-
expect { @api.get_tlm_packet("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
654
|
-
end
|
|
655
|
-
|
|
656
|
-
it "complains about non-existant packets" do
|
|
657
|
-
expect { @api.get_tlm_packet("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
658
|
-
end
|
|
659
|
-
|
|
660
|
-
it "complains using LATEST" do
|
|
661
|
-
expect { @api.get_tlm_packet("INST","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'INST LATEST' does not exist")
|
|
662
|
-
end
|
|
663
|
-
|
|
664
|
-
it "complains about non-existant value_types" do
|
|
665
|
-
expect { @api.get_tlm_packet("INST","HEALTH_STATUS",:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
666
|
-
end
|
|
667
|
-
|
|
668
|
-
it "reads all telemetry items with their limits states" do
|
|
669
|
-
vals = @api.get_tlm_packet("INST","HEALTH_STATUS")
|
|
670
|
-
expect(vals[0][0]).to eql "RECEIVED_TIMESECONDS"
|
|
671
|
-
expect(vals[0][1]).to eql 0.0
|
|
672
|
-
expect(vals[0][2]).to be_nil
|
|
673
|
-
expect(vals[1][0]).to eql "RECEIVED_TIMEFORMATTED"
|
|
674
|
-
expect(vals[1][1]).to eql "No Packet Received Time"
|
|
675
|
-
expect(vals[1][2]).to be_nil
|
|
676
|
-
expect(vals[2][0]).to eql "RECEIVED_COUNT"
|
|
677
|
-
expect(vals[2][1]).to eql 0
|
|
678
|
-
expect(vals[2][2]).to be_nil
|
|
679
|
-
# Spot check a few more
|
|
680
|
-
expect(vals[22][0]).to eql "TEMP1"
|
|
681
|
-
expect(vals[22][1]).to eql -100.0
|
|
682
|
-
expect(vals[22][2]).to eql :RED_LOW
|
|
683
|
-
expect(vals[23][0]).to eql "TEMP2"
|
|
684
|
-
expect(vals[23][1]).to eql -100.0
|
|
685
|
-
expect(vals[23][2]).to eql :RED_LOW
|
|
686
|
-
expect(vals[24][0]).to eql "TEMP3"
|
|
687
|
-
expect(vals[24][1]).to eql -100.0
|
|
688
|
-
expect(vals[24][2]).to eql :RED_LOW
|
|
689
|
-
expect(vals[25][0]).to eql "TEMP4"
|
|
690
|
-
expect(vals[25][1]).to eql -100.0
|
|
691
|
-
expect(vals[25][2]).to eql :RED_LOW
|
|
692
|
-
end
|
|
693
|
-
end
|
|
694
|
-
|
|
695
|
-
describe "get_tlm_values" do
|
|
696
|
-
it "handles an empty request" do
|
|
697
|
-
expect(@api.get_tlm_values([])).to eql [[], [], [], :DEFAULT]
|
|
698
|
-
end
|
|
699
|
-
|
|
700
|
-
it "complains about non-existant targets" do
|
|
701
|
-
expect { @api.get_tlm_values([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
702
|
-
end
|
|
703
|
-
|
|
704
|
-
it "complains about non-existant packets" do
|
|
705
|
-
expect { @api.get_tlm_values([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
706
|
-
end
|
|
707
|
-
|
|
708
|
-
it "complains about non-existant items" do
|
|
709
|
-
expect { @api.get_tlm_values([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
|
|
710
|
-
end
|
|
711
|
-
|
|
712
|
-
it "complains about non-existant value_types" do
|
|
713
|
-
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
714
|
-
end
|
|
715
|
-
|
|
716
|
-
it "complains about bad arguments" do
|
|
717
|
-
expect { @api.get_tlm_values("INST",:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
718
|
-
expect { @api.get_tlm_values(["INST","HEALTH_STATUS","TEMP1"],:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
719
|
-
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],10) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
|
|
720
|
-
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],[10]) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
|
|
721
|
-
end
|
|
722
|
-
|
|
723
|
-
it "reads all the specified items" do
|
|
724
|
-
items = []
|
|
725
|
-
items << %w(INST HEALTH_STATUS TEMP1)
|
|
726
|
-
items << %w(INST HEALTH_STATUS TEMP2)
|
|
727
|
-
items << %w(INST HEALTH_STATUS TEMP3)
|
|
728
|
-
items << %w(INST HEALTH_STATUS TEMP4)
|
|
729
|
-
vals = @api.get_tlm_values(items)
|
|
730
|
-
expect(vals[0][0]).to eql -100.0
|
|
731
|
-
expect(vals[0][1]).to eql -100.0
|
|
732
|
-
expect(vals[0][2]).to eql -100.0
|
|
733
|
-
expect(vals[0][3]).to eql -100.0
|
|
734
|
-
expect(vals[1][0]).to eql :RED_LOW
|
|
735
|
-
expect(vals[1][1]).to eql :RED_LOW
|
|
736
|
-
expect(vals[1][2]).to eql :RED_LOW
|
|
737
|
-
expect(vals[1][3]).to eql :RED_LOW
|
|
738
|
-
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
739
|
-
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
740
|
-
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
741
|
-
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
742
|
-
expect(vals[3]).to eql :DEFAULT
|
|
743
|
-
end
|
|
744
|
-
|
|
745
|
-
it "reads all the specified items with one conversion" do
|
|
746
|
-
items = []
|
|
747
|
-
items << %w(INST HEALTH_STATUS TEMP1)
|
|
748
|
-
items << %w(INST HEALTH_STATUS TEMP2)
|
|
749
|
-
items << %w(INST HEALTH_STATUS TEMP3)
|
|
750
|
-
items << %w(INST HEALTH_STATUS TEMP4)
|
|
751
|
-
vals = @api.get_tlm_values(items, :RAW)
|
|
752
|
-
expect(vals[0][0]).to eql 0
|
|
753
|
-
expect(vals[0][1]).to eql 0
|
|
754
|
-
expect(vals[0][2]).to eql 0
|
|
755
|
-
expect(vals[0][3]).to eql 0
|
|
756
|
-
expect(vals[1][0]).to eql :RED_LOW
|
|
757
|
-
expect(vals[1][1]).to eql :RED_LOW
|
|
758
|
-
expect(vals[1][2]).to eql :RED_LOW
|
|
759
|
-
expect(vals[1][3]).to eql :RED_LOW
|
|
760
|
-
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
761
|
-
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
762
|
-
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
763
|
-
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
764
|
-
expect(vals[3]).to eql :DEFAULT
|
|
765
|
-
end
|
|
766
|
-
|
|
767
|
-
it "reads all the specified items with different conversions" do
|
|
768
|
-
items = []
|
|
769
|
-
items << %w(INST HEALTH_STATUS TEMP1)
|
|
770
|
-
items << %w(INST HEALTH_STATUS TEMP2)
|
|
771
|
-
items << %w(INST HEALTH_STATUS TEMP3)
|
|
772
|
-
items << %w(INST HEALTH_STATUS TEMP4)
|
|
773
|
-
vals = @api.get_tlm_values(items, [:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS])
|
|
774
|
-
expect(vals[0][0]).to eql 0
|
|
775
|
-
expect(vals[0][1]).to eql -100.0
|
|
776
|
-
expect(vals[0][2]).to eql "-100.000"
|
|
777
|
-
expect(vals[0][3]).to eql "-100.000 C"
|
|
778
|
-
expect(vals[1][0]).to eql :RED_LOW
|
|
779
|
-
expect(vals[1][1]).to eql :RED_LOW
|
|
780
|
-
expect(vals[1][2]).to eql :RED_LOW
|
|
781
|
-
expect(vals[1][3]).to eql :RED_LOW
|
|
782
|
-
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
783
|
-
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
784
|
-
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
785
|
-
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
786
|
-
expect(vals[3]).to eql :DEFAULT
|
|
787
|
-
end
|
|
788
|
-
|
|
789
|
-
it "complains if items length != conversions length" do
|
|
790
|
-
items = []
|
|
791
|
-
items << %w(INST HEALTH_STATUS TEMP1)
|
|
792
|
-
items << %w(INST HEALTH_STATUS TEMP2)
|
|
793
|
-
items << %w(INST HEALTH_STATUS TEMP3)
|
|
794
|
-
items << %w(INST HEALTH_STATUS TEMP4)
|
|
795
|
-
expect { @api.get_tlm_values(items, [:RAW, :CONVERTED]) }.to raise_error(ArgumentError, "Passed 4 items but only 2 value types")
|
|
796
|
-
end
|
|
797
|
-
end
|
|
798
|
-
|
|
799
|
-
describe "get_tlm_list" do
|
|
800
|
-
it "complains about non-existant targets" do
|
|
801
|
-
expect { @api.get_tlm_list("BLAH") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
802
|
-
end
|
|
803
|
-
|
|
804
|
-
it "returns the sorted packet names for a target" do
|
|
805
|
-
pkts = @api.get_tlm_list("INST")
|
|
806
|
-
expect(pkts[0][0]).to eql "ADCS"
|
|
807
|
-
expect(pkts[1][0]).to eql "ERROR"
|
|
808
|
-
expect(pkts[2][0]).to eql "HANDSHAKE"
|
|
809
|
-
expect(pkts[3][0]).to eql "HEALTH_STATUS"
|
|
810
|
-
expect(pkts[4][0]).to eql "IMAGE"
|
|
811
|
-
expect(pkts[5][0]).to eql "MECH"
|
|
812
|
-
expect(pkts[6][0]).to eql "PARAMS"
|
|
813
|
-
end
|
|
814
|
-
end
|
|
815
|
-
|
|
816
|
-
describe "get_tlm_item_list" do
|
|
817
|
-
it "complains about non-existant targets" do
|
|
818
|
-
expect { @api.get_tlm_item_list("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
819
|
-
end
|
|
820
|
-
|
|
821
|
-
it "complains about non-existant packets" do
|
|
822
|
-
expect { @api.get_tlm_item_list("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
823
|
-
end
|
|
824
|
-
|
|
825
|
-
it "returns all the items for a target/packet" do
|
|
826
|
-
items = @api.get_tlm_item_list("INST","HEALTH_STATUS")
|
|
827
|
-
expect(items[0][0]).to eql "RECEIVED_TIMESECONDS"
|
|
828
|
-
expect(items[1][0]).to eql "RECEIVED_TIMEFORMATTED"
|
|
829
|
-
expect(items[2][0]).to eql "RECEIVED_COUNT"
|
|
830
|
-
# Spot check a few more
|
|
831
|
-
expect(items[22][0]).to eql "TEMP1"
|
|
832
|
-
expect(items[22][1]).to be_nil
|
|
833
|
-
expect(items[22][2]).to eql "Temperature #1"
|
|
834
|
-
expect(items[28][0]).to eql "COLLECT_TYPE"
|
|
835
|
-
expect(items[28][1]).to include("NORMAL"=>0, "SPECIAL"=>1)
|
|
836
|
-
expect(items[28][2]).to eql "Most recent collect type"
|
|
837
|
-
end
|
|
838
|
-
end
|
|
839
|
-
|
|
840
|
-
describe "get_tlm_details" do
|
|
841
|
-
it "complains about non-existant targets" do
|
|
842
|
-
expect { @api.get_tlm_details([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
843
|
-
end
|
|
844
|
-
|
|
845
|
-
it "complains about non-existant packets" do
|
|
846
|
-
expect { @api.get_tlm_details([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
847
|
-
end
|
|
848
|
-
|
|
849
|
-
it "complains about non-existant items" do
|
|
850
|
-
expect { @api.get_tlm_details([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
|
|
851
|
-
end
|
|
852
|
-
|
|
853
|
-
it "complains about bad parameters" do
|
|
854
|
-
expect { @api.get_tlm_details("INST") }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
855
|
-
expect { @api.get_tlm_details(["INST","LATEST","BLAH"]) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
856
|
-
end
|
|
857
|
-
|
|
858
|
-
it "reads all the specified items" do
|
|
859
|
-
items = []
|
|
860
|
-
items << %w(INST HEALTH_STATUS TEMP1)
|
|
861
|
-
items << %w(INST HEALTH_STATUS TEMP2)
|
|
862
|
-
items << %w(INST HEALTH_STATUS TEMP3)
|
|
863
|
-
items << %w(INST HEALTH_STATUS TEMP4)
|
|
864
|
-
details = @api.get_tlm_details(items)
|
|
865
|
-
expect(details.length).to eql 4
|
|
866
|
-
expect(details[0]["name"]).to eql "TEMP1"
|
|
867
|
-
expect(details[1]["name"]).to eql "TEMP2"
|
|
868
|
-
expect(details[2]["name"]).to eql "TEMP3"
|
|
869
|
-
expect(details[3]["name"]).to eql "TEMP4"
|
|
870
|
-
end
|
|
871
|
-
end
|
|
872
|
-
|
|
873
|
-
describe "get_out_of_limits" do
|
|
874
|
-
it "returns all out of limits items" do
|
|
875
|
-
items = @api.get_out_of_limits
|
|
876
|
-
(0..3).each do |i|
|
|
877
|
-
expect(items[i][0]).to eql "INST"
|
|
878
|
-
expect(items[i][1]).to eql "HEALTH_STATUS"
|
|
879
|
-
expect(items[i][2]).to eql "TEMP#{i+1}"
|
|
880
|
-
expect(items[i][3]).to eql :RED_LOW
|
|
881
|
-
end
|
|
882
|
-
end
|
|
883
|
-
end
|
|
884
|
-
|
|
885
|
-
describe "limits_enabled?" do
|
|
886
|
-
it "complains about non-existant targets" do
|
|
887
|
-
expect { @api.limits_enabled?("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
888
|
-
end
|
|
889
|
-
|
|
890
|
-
it "complains about non-existant packets" do
|
|
891
|
-
expect { @api.limits_enabled?("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
892
|
-
end
|
|
893
|
-
|
|
894
|
-
it "complains about non-existant items" do
|
|
895
|
-
expect { @api.limits_enabled?("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
896
|
-
end
|
|
897
|
-
|
|
898
|
-
it "returns whether limits are enable for an item" do
|
|
899
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
900
|
-
end
|
|
901
|
-
end
|
|
902
|
-
|
|
903
|
-
describe "enable_limits" do
|
|
904
|
-
it "complains about non-existant targets" do
|
|
905
|
-
expect { @api.enable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
906
|
-
end
|
|
907
|
-
|
|
908
|
-
it "complains about non-existant packets" do
|
|
909
|
-
expect { @api.enable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
910
|
-
end
|
|
911
|
-
|
|
912
|
-
it "complains about non-existant items" do
|
|
913
|
-
expect { @api.enable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
914
|
-
end
|
|
915
|
-
|
|
916
|
-
it "enables limits for an item" do
|
|
917
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
918
|
-
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
919
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
920
|
-
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
921
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
922
|
-
end
|
|
923
|
-
end
|
|
924
|
-
|
|
925
|
-
describe "disable_limits" do
|
|
926
|
-
it "complains about non-existant targets" do
|
|
927
|
-
expect { @api.disable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
928
|
-
end
|
|
929
|
-
|
|
930
|
-
it "complains about non-existant packets" do
|
|
931
|
-
expect { @api.disable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
932
|
-
end
|
|
933
|
-
|
|
934
|
-
it "complains about non-existant items" do
|
|
935
|
-
expect { @api.disable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
936
|
-
end
|
|
937
|
-
|
|
938
|
-
it "disables limits for an item" do
|
|
939
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
940
|
-
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
941
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
942
|
-
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
943
|
-
end
|
|
944
|
-
end
|
|
945
|
-
|
|
946
|
-
describe "get_limits" do
|
|
947
|
-
it "complains about non-existant targets" do
|
|
948
|
-
expect { @api.get_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
949
|
-
end
|
|
950
|
-
|
|
951
|
-
it "complains about non-existant packets" do
|
|
952
|
-
expect { @api.get_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
953
|
-
end
|
|
954
|
-
|
|
955
|
-
it "complains about non-existant items" do
|
|
956
|
-
expect { @api.get_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
957
|
-
end
|
|
958
|
-
|
|
959
|
-
it "gets limits for an item" do
|
|
960
|
-
expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1")).to eql([:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0])
|
|
961
|
-
expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1",:TVAC)).to eql([:TVAC, 1, true, -80.0, -30.0, 30.0, 80.0, nil, nil])
|
|
962
|
-
end
|
|
963
|
-
end
|
|
964
|
-
|
|
965
|
-
describe "set_limits" do
|
|
966
|
-
it "complains about non-existant targets" do
|
|
967
|
-
expect { @api.set_limits("BLAH","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
968
|
-
end
|
|
969
|
-
|
|
970
|
-
it "complains about non-existant packets" do
|
|
971
|
-
expect { @api.set_limits("INST","BLAH","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
972
|
-
end
|
|
973
|
-
|
|
974
|
-
it "complains about non-existant items" do
|
|
975
|
-
expect { @api.set_limits("INST","HEALTH_STATUS","BLAH",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
976
|
-
end
|
|
977
|
-
|
|
978
|
-
it "gets limits for an item" do
|
|
979
|
-
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, nil, nil])
|
|
980
|
-
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM2,2,false)).to eql([:CUSTOM2, 2, false, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
|
|
981
|
-
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM,1,true)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
|
|
982
|
-
end
|
|
983
|
-
end
|
|
984
|
-
|
|
985
|
-
describe "get_limits_groups" do
|
|
986
|
-
it "returns all the limits groups" do
|
|
987
|
-
expect(@api.get_limits_groups).to eql %w(FIRST SECOND)
|
|
988
|
-
end
|
|
989
|
-
end
|
|
990
|
-
|
|
991
|
-
describe "enable_limits_group" do
|
|
992
|
-
it "complains about undefined limits groups" do
|
|
993
|
-
expect { @api.enable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
|
|
994
|
-
end
|
|
995
|
-
|
|
996
|
-
it "enables limits for all items in the group" do
|
|
997
|
-
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
998
|
-
@api.disable_limits("INST","HEALTH_STATUS","TEMP3")
|
|
999
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
1000
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
|
|
1001
|
-
@api.enable_limits_group("FIRST")
|
|
1002
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
1003
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
|
|
1004
|
-
end
|
|
1005
|
-
end
|
|
1006
|
-
|
|
1007
|
-
describe "disable_limits_group" do
|
|
1008
|
-
it "complains about undefined limits groups" do
|
|
1009
|
-
expect { @api.disable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
|
|
1010
|
-
end
|
|
1011
|
-
|
|
1012
|
-
it "disables limits for all items in the group" do
|
|
1013
|
-
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
1014
|
-
@api.enable_limits("INST","HEALTH_STATUS","TEMP3")
|
|
1015
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
1016
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
|
|
1017
|
-
@api.disable_limits_group("FIRST")
|
|
1018
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
1019
|
-
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
|
|
1020
|
-
end
|
|
1021
|
-
end
|
|
1022
|
-
|
|
1023
|
-
describe "get_limits_sets, get_limits_set, set_limits_set" do
|
|
1024
|
-
it "gets and set the active limits set" do
|
|
1025
|
-
if @api.get_limits_sets.include?(:CUSTOM)
|
|
1026
|
-
expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC, :CUSTOM, :CUSTOM2]
|
|
1027
|
-
else
|
|
1028
|
-
expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC]
|
|
1029
|
-
end
|
|
1030
|
-
@api.set_limits_set("TVAC")
|
|
1031
|
-
expect(@api.get_limits_set).to eql "TVAC"
|
|
1032
|
-
@api.set_limits_set("DEFAULT")
|
|
1033
|
-
expect(@api.get_limits_set).to eql "DEFAULT"
|
|
1034
|
-
end
|
|
1035
|
-
end
|
|
1036
|
-
|
|
1037
|
-
describe "get_target_list" do
|
|
1038
|
-
it "returns all target names" do
|
|
1039
|
-
expect(@api.get_target_list).to eql %w(COSMOS INST META SYSTEM)
|
|
1040
|
-
end
|
|
1041
|
-
end
|
|
1042
|
-
|
|
1043
|
-
describe "subscribe_limits_events" do
|
|
1044
|
-
it "calls CmdTlmServer" do
|
|
1045
|
-
stub_const("Cosmos::CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE", 100)
|
|
1046
|
-
expect(CmdTlmServer).to receive(:subscribe_limits_events)
|
|
1047
|
-
@api.subscribe_limits_events
|
|
1048
|
-
end
|
|
1049
|
-
end
|
|
1050
|
-
|
|
1051
|
-
describe "unsubscribe_limits_events" do
|
|
1052
|
-
it "calls CmdTlmServer" do
|
|
1053
|
-
expect(CmdTlmServer).to receive(:unsubscribe_limits_events)
|
|
1054
|
-
@api.unsubscribe_limits_events(0)
|
|
1055
|
-
end
|
|
1056
|
-
end
|
|
1057
|
-
|
|
1058
|
-
describe "get_limits_event" do
|
|
1059
|
-
it "gets a limits event" do
|
|
1060
|
-
expect(CmdTlmServer).to receive(:get_limits_event)
|
|
1061
|
-
@api.get_limits_event(0)
|
|
1062
|
-
end
|
|
1063
|
-
end
|
|
1064
|
-
|
|
1065
|
-
describe "subscribe_packet_data" do
|
|
1066
|
-
it "calls CmdTlmServer" do
|
|
1067
|
-
stub_const("Cosmos::CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE", 100)
|
|
1068
|
-
expect(CmdTlmServer).to receive(:subscribe_packet_data)
|
|
1069
|
-
@api.subscribe_packet_data([["TGT","PKT1"],["TGT","PKT2"]])
|
|
1070
|
-
end
|
|
1071
|
-
end
|
|
1072
|
-
|
|
1073
|
-
describe "unsubscribe_packet_datas" do
|
|
1074
|
-
it "calls CmdTlmServer" do
|
|
1075
|
-
expect(CmdTlmServer).to receive(:unsubscribe_packet_data)
|
|
1076
|
-
@api.unsubscribe_packet_data(10)
|
|
1077
|
-
end
|
|
1078
|
-
end
|
|
1079
|
-
|
|
1080
|
-
describe "get_packet_data" do
|
|
1081
|
-
it "calls CmdTlmServer" do
|
|
1082
|
-
expect(CmdTlmServer).to receive(:get_packet_data)
|
|
1083
|
-
@api.get_packet_data(10)
|
|
1084
|
-
end
|
|
1085
|
-
end
|
|
1086
|
-
|
|
1087
|
-
# All these methods simply pass through directly to CmdTlmServer without
|
|
1088
|
-
# adding any functionality. Thus we just test that they are are received
|
|
1089
|
-
# by the CmdTlmServer.
|
|
1090
|
-
describe "CmdTlmServer pass-throughs" do
|
|
1091
|
-
it "calls through to the CmdTlmServer" do
|
|
1092
|
-
@api.get_interface_names
|
|
1093
|
-
@api.connect_interface("INT")
|
|
1094
|
-
@api.disconnect_interface("INT")
|
|
1095
|
-
@api.interface_state("INT")
|
|
1096
|
-
@api.map_target_to_interface("INST", "INT")
|
|
1097
|
-
@api.get_router_names
|
|
1098
|
-
@api.connect_router("ROUTE")
|
|
1099
|
-
@api.disconnect_router("ROUTE")
|
|
1100
|
-
@api.router_state("ROUTE")
|
|
1101
|
-
@api.send_raw("INT","\x00\x01")
|
|
1102
|
-
@api.get_cmd_log_filename('DEFAULT')
|
|
1103
|
-
@api.get_tlm_log_filename('DEFAULT')
|
|
1104
|
-
@api.start_logging('ALL')
|
|
1105
|
-
@api.stop_logging('ALL')
|
|
1106
|
-
@api.start_cmd_log('ALL')
|
|
1107
|
-
@api.start_tlm_log('ALL')
|
|
1108
|
-
@api.stop_cmd_log('ALL')
|
|
1109
|
-
@api.stop_tlm_log('ALL')
|
|
1110
|
-
@api.get_server_message_log_filename
|
|
1111
|
-
@api.start_new_server_message_log
|
|
1112
|
-
end
|
|
1113
|
-
end
|
|
1114
|
-
|
|
1115
|
-
end
|
|
1116
|
-
end
|
|
1117
|
-
|
|
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 'spec_helper'
|
|
12
|
+
require 'cosmos'
|
|
13
|
+
require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
|
|
14
|
+
require 'cosmos/tools/cmd_tlm_server/api'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
|
|
18
|
+
describe Api do
|
|
19
|
+
|
|
20
|
+
before(:all) do
|
|
21
|
+
cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
22
|
+
FileUtils.mkdir_p(File.dirname(cts))
|
|
23
|
+
File.open(cts,'w') do |file|
|
|
24
|
+
file.puts 'INTERFACE INT interface.rb'
|
|
25
|
+
file.puts 'ROUTER ROUTE interface.rb'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
after(:all) do
|
|
30
|
+
clean_config()
|
|
31
|
+
FileUtils.rm_rf File.join(Cosmos::USERPATH,'config','tools')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
before(:each) do
|
|
35
|
+
allow_any_instance_of(Interface).to receive(:connected?)
|
|
36
|
+
allow_any_instance_of(Interface).to receive(:connect)
|
|
37
|
+
allow_any_instance_of(Interface).to receive(:disconnect)
|
|
38
|
+
allow_any_instance_of(Interface).to receive(:write_raw)
|
|
39
|
+
allow_any_instance_of(Interface).to receive(:read)
|
|
40
|
+
@api = CmdTlmServer.new
|
|
41
|
+
allow(@api.commanding).to receive(:send_command_to_target)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
after(:each) do
|
|
45
|
+
@api.stop
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_cmd_unknown(method)
|
|
49
|
+
expect { @api.send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
|
|
50
|
+
expect { @api.send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
|
|
51
|
+
expect { @api.send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
|
|
52
|
+
expect { @api.send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
53
|
+
expect { @api.send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
54
|
+
expect { @api.send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe "cmd" do
|
|
58
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
59
|
+
test_cmd_unknown(:cmd)
|
|
60
|
+
sleep(0.5)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "processes a string" do
|
|
64
|
+
target_name, cmd_name, params = @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
65
|
+
expect(target_name).to eql 'INST'
|
|
66
|
+
expect(cmd_name).to eql 'COLLECT'
|
|
67
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "complains if parameters are not separated by commas" do
|
|
71
|
+
expect { @api.cmd("INST COLLECT with TYPE NORMAL DURATION 5") }.to raise_error(/Missing comma/)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "complains if parameters don't have values" do
|
|
75
|
+
expect { @api.cmd("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "processes parameters" do
|
|
79
|
+
target_name, cmd_name, params = @api.cmd("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
80
|
+
expect(target_name).to eql 'INST'
|
|
81
|
+
expect(cmd_name).to eql 'COLLECT'
|
|
82
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "processes commands without parameters" do
|
|
86
|
+
target_name, cmd_name, params = @api.cmd("INST","ABORT")
|
|
87
|
+
expect(target_name).to eql 'INST'
|
|
88
|
+
expect(cmd_name).to eql 'ABORT'
|
|
89
|
+
expect(params).to be {}
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "complains about too many parameters" do
|
|
93
|
+
expect { @api.cmd("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "warns about required parameters" do
|
|
97
|
+
expect { @api.cmd("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "warns about out of range parameters" do
|
|
101
|
+
expect { @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "warns about hazardous parameters" do
|
|
105
|
+
expect { @api.cmd("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "warns about hazardous commands" do
|
|
109
|
+
expect { @api.cmd("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
describe "cmd_no_range_check" do
|
|
114
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
115
|
+
test_cmd_unknown(:cmd_no_range_check)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "processes a string" do
|
|
119
|
+
target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
120
|
+
expect(target_name).to eql 'INST'
|
|
121
|
+
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
122
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "processes parameters" do
|
|
126
|
+
target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
127
|
+
expect(target_name).to eql 'INST'
|
|
128
|
+
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
129
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "warns about required parameters" do
|
|
133
|
+
expect { @api.cmd_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "does not warn about out of range parameters" do
|
|
137
|
+
expect { @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "warns about hazardous parameters" do
|
|
141
|
+
expect { @api.cmd_no_range_check("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "warns about hazardous commands" do
|
|
145
|
+
expect { @api.cmd_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
describe "cmd_no_hazardous_check" do
|
|
150
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
151
|
+
test_cmd_unknown(:cmd_no_hazardous_check)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it "processes a string" do
|
|
155
|
+
target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
156
|
+
expect(target_name).to eql 'INST'
|
|
157
|
+
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
158
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "processes parameters" do
|
|
162
|
+
target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
163
|
+
expect(target_name).to eql 'INST'
|
|
164
|
+
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
165
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "processes parameters that are strings" do
|
|
169
|
+
target_name, cmd_name, params = @api.cmd_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
|
|
170
|
+
expect(target_name).to eql 'INST'
|
|
171
|
+
expect(cmd_name).to eql 'ASCIICMD'
|
|
172
|
+
expect(params).to include('STRING'=>'ARM LASER')
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it "warns about required parameters" do
|
|
176
|
+
expect { @api.cmd_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "warns about out of range parameters" do
|
|
180
|
+
expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "does not warn about hazardous parameters" do
|
|
184
|
+
expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "does not warn about hazardous commands" do
|
|
188
|
+
expect { @api.cmd_no_hazardous_check("INST CLEAR") }.to_not raise_error
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe "cmd_no_checks" do
|
|
193
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
194
|
+
test_cmd_unknown(:cmd_no_checks)
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "processes a string" do
|
|
198
|
+
target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 5")
|
|
199
|
+
expect(target_name).to eql 'INST'
|
|
200
|
+
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
201
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "processes parameters" do
|
|
205
|
+
target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
|
|
206
|
+
expect(target_name).to eql 'INST'
|
|
207
|
+
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
208
|
+
expect(params).to include('TYPE'=>'NORMAL', 'DURATION'=>5)
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "warns about required parameters" do
|
|
212
|
+
expect { @api.cmd_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it "does not warn about out of range parameters" do
|
|
216
|
+
expect { @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
it "does not warn about hazardous parameters" do
|
|
220
|
+
expect { @api.cmd_no_checks("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it "does not warn about hazardous commands" do
|
|
224
|
+
expect { @api.cmd_no_checks("INST CLEAR") }.to_not raise_error
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
describe "cmd_raw" do
|
|
229
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
230
|
+
test_cmd_unknown(:cmd_raw)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
it "processes a string" do
|
|
234
|
+
target_name, cmd_name, params = @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 5")
|
|
235
|
+
expect(target_name).to eql 'INST'
|
|
236
|
+
expect(cmd_name).to eql 'COLLECT'
|
|
237
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
it "complains if parameters are not separated by commas" do
|
|
241
|
+
expect { @api.cmd_raw("INST COLLECT with TYPE 0 DURATION 5") }.to raise_error(/Missing comma/)
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
it "complains if parameters don't have values" do
|
|
245
|
+
expect { @api.cmd_raw("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "processes parameters" do
|
|
249
|
+
target_name, cmd_name, params = @api.cmd_raw("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
250
|
+
expect(target_name).to eql 'INST'
|
|
251
|
+
expect(cmd_name).to eql 'COLLECT'
|
|
252
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
it "processes commands without parameters" do
|
|
256
|
+
target_name, cmd_name, params = @api.cmd_raw("INST","ABORT")
|
|
257
|
+
expect(target_name).to eql 'INST'
|
|
258
|
+
expect(cmd_name).to eql 'ABORT'
|
|
259
|
+
expect(params).to be {}
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
it "complains about too many parameters" do
|
|
263
|
+
expect { @api.cmd_raw("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
it "warns about required parameters" do
|
|
267
|
+
expect { @api.cmd_raw("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
it "warns about out of range parameters" do
|
|
271
|
+
expect { @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
it "warns about hazardous parameters" do
|
|
275
|
+
expect { @api.cmd_raw("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
it "warns about hazardous commands" do
|
|
279
|
+
expect { @api.cmd_raw("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
describe "cmd_no_range_check" do
|
|
284
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
285
|
+
test_cmd_unknown(:cmd_raw_no_range_check)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
it "processes a string" do
|
|
289
|
+
target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 5")
|
|
290
|
+
expect(target_name).to eql 'INST'
|
|
291
|
+
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
292
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it "processes parameters" do
|
|
296
|
+
target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
297
|
+
expect(target_name).to eql 'INST'
|
|
298
|
+
expect(cmd_no_range_check_name).to eql 'COLLECT'
|
|
299
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
it "warns about required parameters" do
|
|
303
|
+
expect { @api.cmd_raw_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
it "does not warn about out of range parameters" do
|
|
307
|
+
expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
it "warns about hazardous parameters" do
|
|
311
|
+
expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
it "warns about hazardous commands" do
|
|
315
|
+
expect { @api.cmd_raw_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
describe "cmd_raw_no_hazardous_check" do
|
|
320
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
321
|
+
test_cmd_unknown(:cmd_raw_no_hazardous_check)
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
it "processes a string" do
|
|
325
|
+
target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 5")
|
|
326
|
+
expect(target_name).to eql 'INST'
|
|
327
|
+
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
328
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
it "processes parameters" do
|
|
332
|
+
target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
333
|
+
expect(target_name).to eql 'INST'
|
|
334
|
+
expect(cmd_no_hazardous_check_name).to eql 'COLLECT'
|
|
335
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
it "processes parameters that are strings" do
|
|
339
|
+
target_name, cmd_name, params = @api.cmd_raw_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
|
|
340
|
+
expect(target_name).to eql 'INST'
|
|
341
|
+
expect(cmd_name).to eql 'ASCIICMD'
|
|
342
|
+
expect(params).to include('STRING'=>'ARM LASER')
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
it "warns about required parameters" do
|
|
346
|
+
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
it "warns about out of range parameters" do
|
|
350
|
+
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
it "does not warn about hazardous parameters" do
|
|
354
|
+
expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1") }.to_not raise_error
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
it "does not warn about hazardous commands" do
|
|
358
|
+
expect { @api.cmd_raw_no_hazardous_check("INST CLEAR") }.to_not raise_error
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
describe "cmd_raw_no_checks" do
|
|
363
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
364
|
+
test_cmd_unknown(:cmd_raw_no_checks)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
it "processes a string" do
|
|
368
|
+
target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 5")
|
|
369
|
+
expect(target_name).to eql 'INST'
|
|
370
|
+
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
371
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
it "processes parameters" do
|
|
375
|
+
target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
|
|
376
|
+
expect(target_name).to eql 'INST'
|
|
377
|
+
expect(cmd_no_checks_name).to eql 'COLLECT'
|
|
378
|
+
expect(params).to include('TYPE'=>0, 'DURATION'=>5)
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
it "warns about required parameters" do
|
|
382
|
+
expect { @api.cmd_raw_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
it "does not warn about out of range parameters" do
|
|
386
|
+
expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
it "does not warn about hazardous parameters" do
|
|
390
|
+
expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 1") }.to_not raise_error
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
it "does not warn about hazardous commands" do
|
|
394
|
+
expect { @api.cmd_raw_no_checks("INST CLEAR") }.to_not raise_error
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
describe "get_cmd_list" do
|
|
399
|
+
it "returns command names sorted" do
|
|
400
|
+
result = @api.get_cmd_list("INST")
|
|
401
|
+
expect(result.sort).to eql result
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
it "complains with a unknown target" do
|
|
405
|
+
expect { @api.get_cmd_list("BLAH") }.to raise_error(/does not exist/)
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
it "returns command names and descriptions for a given target" do
|
|
409
|
+
result = @api.get_cmd_list("INST")
|
|
410
|
+
expect(result[0][0]).to eql "ABORT"
|
|
411
|
+
# The second parameter is the description ... only test one
|
|
412
|
+
expect(result[0][1]).to eql "Aborts a collect on the instrument"
|
|
413
|
+
expect(result[1][0]).to eql "ARYCMD"
|
|
414
|
+
expect(result[2][0]).to eql "ASCIICMD"
|
|
415
|
+
expect(result[3][0]).to eql "CLEAR"
|
|
416
|
+
expect(result[4][0]).to eql "COLLECT"
|
|
417
|
+
expect(result[5][0]).to eql "COSMOS_ERROR_HANDLE"
|
|
418
|
+
expect(result[6][0]).to eql "COSMOS_ERROR_IGNORE"
|
|
419
|
+
expect(result[7][0]).to eql "COSMOS_HANDSHAKE_DS"
|
|
420
|
+
expect(result[8][0]).to eql "COSMOS_HANDSHAKE_EN"
|
|
421
|
+
expect(result[9][0]).to eql "FLTCMD"
|
|
422
|
+
expect(result[10][0]).to eql "LINC_COMMAND"
|
|
423
|
+
expect(result[11][0]).to eql "SETPARAMS"
|
|
424
|
+
expect(result[12][0]).to eql "SLRPNLDEPLOY"
|
|
425
|
+
expect(result[13][0]).to eql "SLRPNLRESET"
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
describe "get_cmd_param_list" do
|
|
430
|
+
it "returns parameters for the command" do
|
|
431
|
+
result = @api.get_cmd_param_list("INST","COLLECT")
|
|
432
|
+
# Each element in the results array contains:
|
|
433
|
+
# name, default, states, description, full units, units, required
|
|
434
|
+
expect(result).to include ['TYPE',0,{"NORMAL"=>0,"SPECIAL"=>1},'Collect type',nil,nil,true]
|
|
435
|
+
expect(result).to include ['TEMP',0.0,nil,'Collect temperature','Celcius','C',false]
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
it "returns array parameters for the command" do
|
|
439
|
+
result = @api.get_cmd_param_list("INST","ARYCMD")
|
|
440
|
+
# Each element in the results array contains:
|
|
441
|
+
# name, default, states, description, full units, units, required
|
|
442
|
+
expect(result).to include ['ARRAY',[],nil,'Array parameter',nil,nil,false]
|
|
443
|
+
end
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
describe "get_cmd_hazardous" do
|
|
447
|
+
it "returns whether the command with parameters is hazardous" do
|
|
448
|
+
expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"NORMAL"})).to be false
|
|
449
|
+
expect(@api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"SPECIAL"})).to be true
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
it "returns whether the command is hazardous" do
|
|
453
|
+
expect(@api.get_cmd_hazardous("INST","CLEAR")).to be true
|
|
454
|
+
end
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
describe "get_cmd_value" do
|
|
458
|
+
it "returns command values" do
|
|
459
|
+
time = Time.now
|
|
460
|
+
packet = System.commands.packet("INST", "COLLECT")
|
|
461
|
+
packet.received_time = time
|
|
462
|
+
packet.restore_defaults
|
|
463
|
+
packet.received_count = 5
|
|
464
|
+
expect(@api.get_cmd_value("INST", "COLLECT", "TYPE")).to eql 'NORMAL'
|
|
465
|
+
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMEFORMATTED")).to eql time.formatted
|
|
466
|
+
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_TIMESECONDS")).to eql time.to_f
|
|
467
|
+
expect(@api.get_cmd_value("INST", "COLLECT", "RECEIVED_COUNT")).to eql 5
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
describe "get_cmd_time" do
|
|
472
|
+
it "returns command times" do
|
|
473
|
+
time = Time.now
|
|
474
|
+
time2 = Time.now + 2
|
|
475
|
+
packet = System.commands.packet("INST", "COLLECT")
|
|
476
|
+
packet.received_time = time
|
|
477
|
+
packet2 = System.commands.packet("COSMOS", "STARTLOGGING")
|
|
478
|
+
packet2.received_time = time2
|
|
479
|
+
expect(@api.get_cmd_time()).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
480
|
+
expect(@api.get_cmd_time('INST')).to eql ['INST', 'COLLECT', time.tv_sec, time.tv_usec]
|
|
481
|
+
expect(@api.get_cmd_time('COSMOS')).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
482
|
+
expect(@api.get_cmd_time('INST', 'COLLECT')).to eql ['INST', 'COLLECT', time.tv_sec, time.tv_usec]
|
|
483
|
+
expect(@api.get_cmd_time('COSMOS', 'STARTLOGGING')).to eql ['COSMOS', 'STARTLOGGING', time2.tv_sec, time2.tv_usec]
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
def test_tlm_unknown(method)
|
|
488
|
+
expect { @api.send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
|
|
489
|
+
expect { @api.send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
|
|
490
|
+
expect { @api.send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
|
|
491
|
+
expect { @api.send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
|
|
492
|
+
expect { @api.send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
|
|
493
|
+
expect { @api.send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
describe "tlm" do
|
|
497
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
498
|
+
test_tlm_unknown(:tlm)
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
it "processes a string" do
|
|
502
|
+
value = @api.tlm("INST HEALTH_STATUS TEMP1")
|
|
503
|
+
expect(value).to eql -100.0
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
it "processes parameters" do
|
|
507
|
+
value = @api.tlm("INST","HEALTH_STATUS","TEMP1")
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
it "complains if too many parameters" do
|
|
511
|
+
expect { @api.tlm("INST","HEALTH_STATUS","TEMP1","TEMP2") }.to raise_error(/Invalid number of arguments/)
|
|
512
|
+
end
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
describe "tlm_raw" do
|
|
516
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
517
|
+
test_tlm_unknown(:tlm_raw)
|
|
518
|
+
end
|
|
519
|
+
|
|
520
|
+
it "processes a string" do
|
|
521
|
+
expect(@api.tlm_raw("INST HEALTH_STATUS TEMP1")).to eql 0
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
it "returns the value using LATEST" do
|
|
525
|
+
expect(@api.tlm_raw("INST LATEST TEMP1")).to eql 0
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
it "processes parameters" do
|
|
529
|
+
expect(@api.tlm_raw("INST","HEALTH_STATUS","TEMP1")).to eql 0
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
describe "tlm_formatted" do
|
|
534
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
535
|
+
test_tlm_unknown(:tlm_formatted)
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
it "processes a string" do
|
|
539
|
+
expect(@api.tlm_formatted("INST HEALTH_STATUS TEMP1")).to eql "-100.000"
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
it "returns the value using LATEST" do
|
|
543
|
+
expect(@api.tlm_formatted("INST LATEST TEMP1")).to eql "-100.000"
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
it "processes parameters" do
|
|
547
|
+
expect(@api.tlm_formatted("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000"
|
|
548
|
+
end
|
|
549
|
+
end
|
|
550
|
+
|
|
551
|
+
describe "tlm_with_units" do
|
|
552
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
553
|
+
test_tlm_unknown(:tlm_with_units)
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
it "processes a string" do
|
|
557
|
+
expect(@api.tlm_with_units("INST HEALTH_STATUS TEMP1")).to eql "-100.000 C"
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
it "returns the value using LATEST" do
|
|
561
|
+
expect(@api.tlm_with_units("INST LATEST TEMP1")).to eql "-100.000 C"
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
it "processes parameters" do
|
|
565
|
+
expect(@api.tlm_with_units("INST","HEALTH_STATUS","TEMP1")).to eql "-100.000 C"
|
|
566
|
+
end
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
describe "tlm_variable" do
|
|
570
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
571
|
+
expect { @api.tlm_variable("BLAH HEALTH_STATUS COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
572
|
+
expect { @api.tlm_variable("INST UNKNOWN COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
573
|
+
expect { @api.tlm_variable("INST HEALTH_STATUS BLAH",:RAW) }.to raise_error(/does not exist/)
|
|
574
|
+
expect { @api.tlm_variable("BLAH","HEALTH_STATUS","COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
575
|
+
expect { @api.tlm_variable("INST","UNKNOWN","COLLECTS",:RAW) }.to raise_error(/does not exist/)
|
|
576
|
+
expect { @api.tlm_variable("INST","HEALTH_STATUS","BLAH",:RAW) }.to raise_error(/does not exist/)
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
it "processes a string" do
|
|
580
|
+
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:CONVERTED)).to eql -100.0
|
|
581
|
+
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:RAW)).to eql 0
|
|
582
|
+
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:FORMATTED)).to eql "-100.000"
|
|
583
|
+
expect(@api.tlm_variable("INST HEALTH_STATUS TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
it "returns the value using LATEST" do
|
|
587
|
+
expect(@api.tlm_variable("INST LATEST TEMP1",:CONVERTED)).to eql -100.0
|
|
588
|
+
expect(@api.tlm_variable("INST LATEST TEMP1",:RAW)).to eql 0
|
|
589
|
+
expect(@api.tlm_variable("INST LATEST TEMP1",:FORMATTED)).to eql "-100.000"
|
|
590
|
+
expect(@api.tlm_variable("INST LATEST TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
it "processes parameters" do
|
|
594
|
+
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:CONVERTED)).to eql -100.0
|
|
595
|
+
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:RAW)).to eql 0
|
|
596
|
+
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:FORMATTED)).to eql "-100.000"
|
|
597
|
+
expect(@api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:WITH_UNITS)).to eql "-100.000 C"
|
|
598
|
+
end
|
|
599
|
+
|
|
600
|
+
it "complains with too many parameters" do
|
|
601
|
+
expect { @api.tlm_variable("INST","HEALTH_STATUS","TEMP1","TEMP2",:CONVERTED) }.to raise_error(/Invalid number of arguments/)
|
|
602
|
+
end
|
|
603
|
+
end
|
|
604
|
+
|
|
605
|
+
describe "set_tlm" do
|
|
606
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
607
|
+
expect { @api.set_tlm("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
608
|
+
expect { @api.set_tlm("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
609
|
+
expect { @api.set_tlm("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
|
|
610
|
+
expect { @api.set_tlm("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
611
|
+
expect { @api.set_tlm("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
612
|
+
expect { @api.set_tlm("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
|
|
613
|
+
end
|
|
614
|
+
|
|
615
|
+
it "processes a string" do
|
|
616
|
+
@api.set_tlm("INST HEALTH_STATUS TEMP1 = 0.0")
|
|
617
|
+
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
|
|
618
|
+
end
|
|
619
|
+
|
|
620
|
+
it "processes parameters" do
|
|
621
|
+
@api.set_tlm("INST","HEALTH_STATUS","TEMP1", 0.0)
|
|
622
|
+
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to be_within(0.00001).of(-0.05759)
|
|
623
|
+
end
|
|
624
|
+
|
|
625
|
+
it "complains with too many parameters" do
|
|
626
|
+
expect { @api.set_tlm("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
|
|
630
|
+
describe "set_tlm_raw" do
|
|
631
|
+
it "complains about unknown targets, commands, and parameters" do
|
|
632
|
+
expect { @api.set_tlm_raw("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
633
|
+
expect { @api.set_tlm_raw("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
|
|
634
|
+
expect { @api.set_tlm_raw("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
|
|
635
|
+
expect { @api.set_tlm_raw("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
636
|
+
expect { @api.set_tlm_raw("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
|
|
637
|
+
expect { @api.set_tlm_raw("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
|
|
638
|
+
end
|
|
639
|
+
|
|
640
|
+
it "processes a string" do
|
|
641
|
+
@api.set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0.0")
|
|
642
|
+
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
|
|
643
|
+
end
|
|
644
|
+
|
|
645
|
+
it "processes parameters" do
|
|
646
|
+
@api.set_tlm_raw("INST","HEALTH_STATUS","TEMP1", 0.0)
|
|
647
|
+
expect(@api.tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
|
|
648
|
+
end
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
describe "get_tlm_packet" do
|
|
652
|
+
it "complains about non-existant targets" do
|
|
653
|
+
expect { @api.get_tlm_packet("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
it "complains about non-existant packets" do
|
|
657
|
+
expect { @api.get_tlm_packet("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
658
|
+
end
|
|
659
|
+
|
|
660
|
+
it "complains using LATEST" do
|
|
661
|
+
expect { @api.get_tlm_packet("INST","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'INST LATEST' does not exist")
|
|
662
|
+
end
|
|
663
|
+
|
|
664
|
+
it "complains about non-existant value_types" do
|
|
665
|
+
expect { @api.get_tlm_packet("INST","HEALTH_STATUS",:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
666
|
+
end
|
|
667
|
+
|
|
668
|
+
it "reads all telemetry items with their limits states" do
|
|
669
|
+
vals = @api.get_tlm_packet("INST","HEALTH_STATUS")
|
|
670
|
+
expect(vals[0][0]).to eql "RECEIVED_TIMESECONDS"
|
|
671
|
+
expect(vals[0][1]).to eql 0.0
|
|
672
|
+
expect(vals[0][2]).to be_nil
|
|
673
|
+
expect(vals[1][0]).to eql "RECEIVED_TIMEFORMATTED"
|
|
674
|
+
expect(vals[1][1]).to eql "No Packet Received Time"
|
|
675
|
+
expect(vals[1][2]).to be_nil
|
|
676
|
+
expect(vals[2][0]).to eql "RECEIVED_COUNT"
|
|
677
|
+
expect(vals[2][1]).to eql 0
|
|
678
|
+
expect(vals[2][2]).to be_nil
|
|
679
|
+
# Spot check a few more
|
|
680
|
+
expect(vals[22][0]).to eql "TEMP1"
|
|
681
|
+
expect(vals[22][1]).to eql -100.0
|
|
682
|
+
expect(vals[22][2]).to eql :RED_LOW
|
|
683
|
+
expect(vals[23][0]).to eql "TEMP2"
|
|
684
|
+
expect(vals[23][1]).to eql -100.0
|
|
685
|
+
expect(vals[23][2]).to eql :RED_LOW
|
|
686
|
+
expect(vals[24][0]).to eql "TEMP3"
|
|
687
|
+
expect(vals[24][1]).to eql -100.0
|
|
688
|
+
expect(vals[24][2]).to eql :RED_LOW
|
|
689
|
+
expect(vals[25][0]).to eql "TEMP4"
|
|
690
|
+
expect(vals[25][1]).to eql -100.0
|
|
691
|
+
expect(vals[25][2]).to eql :RED_LOW
|
|
692
|
+
end
|
|
693
|
+
end
|
|
694
|
+
|
|
695
|
+
describe "get_tlm_values" do
|
|
696
|
+
it "handles an empty request" do
|
|
697
|
+
expect(@api.get_tlm_values([])).to eql [[], [], [], :DEFAULT]
|
|
698
|
+
end
|
|
699
|
+
|
|
700
|
+
it "complains about non-existant targets" do
|
|
701
|
+
expect { @api.get_tlm_values([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
it "complains about non-existant packets" do
|
|
705
|
+
expect { @api.get_tlm_values([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
706
|
+
end
|
|
707
|
+
|
|
708
|
+
it "complains about non-existant items" do
|
|
709
|
+
expect { @api.get_tlm_values([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
|
|
710
|
+
end
|
|
711
|
+
|
|
712
|
+
it "complains about non-existant value_types" do
|
|
713
|
+
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
714
|
+
end
|
|
715
|
+
|
|
716
|
+
it "complains about bad arguments" do
|
|
717
|
+
expect { @api.get_tlm_values("INST",:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
718
|
+
expect { @api.get_tlm_values(["INST","HEALTH_STATUS","TEMP1"],:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
719
|
+
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],10) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
|
|
720
|
+
expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],[10]) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
|
|
721
|
+
end
|
|
722
|
+
|
|
723
|
+
it "reads all the specified items" do
|
|
724
|
+
items = []
|
|
725
|
+
items << %w(INST HEALTH_STATUS TEMP1)
|
|
726
|
+
items << %w(INST HEALTH_STATUS TEMP2)
|
|
727
|
+
items << %w(INST HEALTH_STATUS TEMP3)
|
|
728
|
+
items << %w(INST HEALTH_STATUS TEMP4)
|
|
729
|
+
vals = @api.get_tlm_values(items)
|
|
730
|
+
expect(vals[0][0]).to eql -100.0
|
|
731
|
+
expect(vals[0][1]).to eql -100.0
|
|
732
|
+
expect(vals[0][2]).to eql -100.0
|
|
733
|
+
expect(vals[0][3]).to eql -100.0
|
|
734
|
+
expect(vals[1][0]).to eql :RED_LOW
|
|
735
|
+
expect(vals[1][1]).to eql :RED_LOW
|
|
736
|
+
expect(vals[1][2]).to eql :RED_LOW
|
|
737
|
+
expect(vals[1][3]).to eql :RED_LOW
|
|
738
|
+
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
739
|
+
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
740
|
+
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
741
|
+
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
742
|
+
expect(vals[3]).to eql :DEFAULT
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
it "reads all the specified items with one conversion" do
|
|
746
|
+
items = []
|
|
747
|
+
items << %w(INST HEALTH_STATUS TEMP1)
|
|
748
|
+
items << %w(INST HEALTH_STATUS TEMP2)
|
|
749
|
+
items << %w(INST HEALTH_STATUS TEMP3)
|
|
750
|
+
items << %w(INST HEALTH_STATUS TEMP4)
|
|
751
|
+
vals = @api.get_tlm_values(items, :RAW)
|
|
752
|
+
expect(vals[0][0]).to eql 0
|
|
753
|
+
expect(vals[0][1]).to eql 0
|
|
754
|
+
expect(vals[0][2]).to eql 0
|
|
755
|
+
expect(vals[0][3]).to eql 0
|
|
756
|
+
expect(vals[1][0]).to eql :RED_LOW
|
|
757
|
+
expect(vals[1][1]).to eql :RED_LOW
|
|
758
|
+
expect(vals[1][2]).to eql :RED_LOW
|
|
759
|
+
expect(vals[1][3]).to eql :RED_LOW
|
|
760
|
+
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
761
|
+
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
762
|
+
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
763
|
+
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
764
|
+
expect(vals[3]).to eql :DEFAULT
|
|
765
|
+
end
|
|
766
|
+
|
|
767
|
+
it "reads all the specified items with different conversions" do
|
|
768
|
+
items = []
|
|
769
|
+
items << %w(INST HEALTH_STATUS TEMP1)
|
|
770
|
+
items << %w(INST HEALTH_STATUS TEMP2)
|
|
771
|
+
items << %w(INST HEALTH_STATUS TEMP3)
|
|
772
|
+
items << %w(INST HEALTH_STATUS TEMP4)
|
|
773
|
+
vals = @api.get_tlm_values(items, [:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS])
|
|
774
|
+
expect(vals[0][0]).to eql 0
|
|
775
|
+
expect(vals[0][1]).to eql -100.0
|
|
776
|
+
expect(vals[0][2]).to eql "-100.000"
|
|
777
|
+
expect(vals[0][3]).to eql "-100.000 C"
|
|
778
|
+
expect(vals[1][0]).to eql :RED_LOW
|
|
779
|
+
expect(vals[1][1]).to eql :RED_LOW
|
|
780
|
+
expect(vals[1][2]).to eql :RED_LOW
|
|
781
|
+
expect(vals[1][3]).to eql :RED_LOW
|
|
782
|
+
expect(vals[2][0]).to eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
783
|
+
expect(vals[2][1]).to eql [-60.0, -55.0, 30.0, 35.0]
|
|
784
|
+
expect(vals[2][2]).to eql [-25.0, -10.0, 50.0, 55.0]
|
|
785
|
+
expect(vals[2][3]).to eql [-80.0, -70.0, 60.0, 80.0]
|
|
786
|
+
expect(vals[3]).to eql :DEFAULT
|
|
787
|
+
end
|
|
788
|
+
|
|
789
|
+
it "complains if items length != conversions length" do
|
|
790
|
+
items = []
|
|
791
|
+
items << %w(INST HEALTH_STATUS TEMP1)
|
|
792
|
+
items << %w(INST HEALTH_STATUS TEMP2)
|
|
793
|
+
items << %w(INST HEALTH_STATUS TEMP3)
|
|
794
|
+
items << %w(INST HEALTH_STATUS TEMP4)
|
|
795
|
+
expect { @api.get_tlm_values(items, [:RAW, :CONVERTED]) }.to raise_error(ArgumentError, "Passed 4 items but only 2 value types")
|
|
796
|
+
end
|
|
797
|
+
end
|
|
798
|
+
|
|
799
|
+
describe "get_tlm_list" do
|
|
800
|
+
it "complains about non-existant targets" do
|
|
801
|
+
expect { @api.get_tlm_list("BLAH") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
it "returns the sorted packet names for a target" do
|
|
805
|
+
pkts = @api.get_tlm_list("INST")
|
|
806
|
+
expect(pkts[0][0]).to eql "ADCS"
|
|
807
|
+
expect(pkts[1][0]).to eql "ERROR"
|
|
808
|
+
expect(pkts[2][0]).to eql "HANDSHAKE"
|
|
809
|
+
expect(pkts[3][0]).to eql "HEALTH_STATUS"
|
|
810
|
+
expect(pkts[4][0]).to eql "IMAGE"
|
|
811
|
+
expect(pkts[5][0]).to eql "MECH"
|
|
812
|
+
expect(pkts[6][0]).to eql "PARAMS"
|
|
813
|
+
end
|
|
814
|
+
end
|
|
815
|
+
|
|
816
|
+
describe "get_tlm_item_list" do
|
|
817
|
+
it "complains about non-existant targets" do
|
|
818
|
+
expect { @api.get_tlm_item_list("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
819
|
+
end
|
|
820
|
+
|
|
821
|
+
it "complains about non-existant packets" do
|
|
822
|
+
expect { @api.get_tlm_item_list("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
823
|
+
end
|
|
824
|
+
|
|
825
|
+
it "returns all the items for a target/packet" do
|
|
826
|
+
items = @api.get_tlm_item_list("INST","HEALTH_STATUS")
|
|
827
|
+
expect(items[0][0]).to eql "RECEIVED_TIMESECONDS"
|
|
828
|
+
expect(items[1][0]).to eql "RECEIVED_TIMEFORMATTED"
|
|
829
|
+
expect(items[2][0]).to eql "RECEIVED_COUNT"
|
|
830
|
+
# Spot check a few more
|
|
831
|
+
expect(items[22][0]).to eql "TEMP1"
|
|
832
|
+
expect(items[22][1]).to be_nil
|
|
833
|
+
expect(items[22][2]).to eql "Temperature #1"
|
|
834
|
+
expect(items[28][0]).to eql "COLLECT_TYPE"
|
|
835
|
+
expect(items[28][1]).to include("NORMAL"=>0, "SPECIAL"=>1)
|
|
836
|
+
expect(items[28][2]).to eql "Most recent collect type"
|
|
837
|
+
end
|
|
838
|
+
end
|
|
839
|
+
|
|
840
|
+
describe "get_tlm_details" do
|
|
841
|
+
it "complains about non-existant targets" do
|
|
842
|
+
expect { @api.get_tlm_details([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
843
|
+
end
|
|
844
|
+
|
|
845
|
+
it "complains about non-existant packets" do
|
|
846
|
+
expect { @api.get_tlm_details([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
847
|
+
end
|
|
848
|
+
|
|
849
|
+
it "complains about non-existant items" do
|
|
850
|
+
expect { @api.get_tlm_details([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
|
|
851
|
+
end
|
|
852
|
+
|
|
853
|
+
it "complains about bad parameters" do
|
|
854
|
+
expect { @api.get_tlm_details("INST") }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
855
|
+
expect { @api.get_tlm_details(["INST","LATEST","BLAH"]) }.to raise_error(ArgumentError, /item_array must be nested array/)
|
|
856
|
+
end
|
|
857
|
+
|
|
858
|
+
it "reads all the specified items" do
|
|
859
|
+
items = []
|
|
860
|
+
items << %w(INST HEALTH_STATUS TEMP1)
|
|
861
|
+
items << %w(INST HEALTH_STATUS TEMP2)
|
|
862
|
+
items << %w(INST HEALTH_STATUS TEMP3)
|
|
863
|
+
items << %w(INST HEALTH_STATUS TEMP4)
|
|
864
|
+
details = @api.get_tlm_details(items)
|
|
865
|
+
expect(details.length).to eql 4
|
|
866
|
+
expect(details[0]["name"]).to eql "TEMP1"
|
|
867
|
+
expect(details[1]["name"]).to eql "TEMP2"
|
|
868
|
+
expect(details[2]["name"]).to eql "TEMP3"
|
|
869
|
+
expect(details[3]["name"]).to eql "TEMP4"
|
|
870
|
+
end
|
|
871
|
+
end
|
|
872
|
+
|
|
873
|
+
describe "get_out_of_limits" do
|
|
874
|
+
it "returns all out of limits items" do
|
|
875
|
+
items = @api.get_out_of_limits
|
|
876
|
+
(0..3).each do |i|
|
|
877
|
+
expect(items[i][0]).to eql "INST"
|
|
878
|
+
expect(items[i][1]).to eql "HEALTH_STATUS"
|
|
879
|
+
expect(items[i][2]).to eql "TEMP#{i+1}"
|
|
880
|
+
expect(items[i][3]).to eql :RED_LOW
|
|
881
|
+
end
|
|
882
|
+
end
|
|
883
|
+
end
|
|
884
|
+
|
|
885
|
+
describe "limits_enabled?" do
|
|
886
|
+
it "complains about non-existant targets" do
|
|
887
|
+
expect { @api.limits_enabled?("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
888
|
+
end
|
|
889
|
+
|
|
890
|
+
it "complains about non-existant packets" do
|
|
891
|
+
expect { @api.limits_enabled?("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
892
|
+
end
|
|
893
|
+
|
|
894
|
+
it "complains about non-existant items" do
|
|
895
|
+
expect { @api.limits_enabled?("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
896
|
+
end
|
|
897
|
+
|
|
898
|
+
it "returns whether limits are enable for an item" do
|
|
899
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
900
|
+
end
|
|
901
|
+
end
|
|
902
|
+
|
|
903
|
+
describe "enable_limits" do
|
|
904
|
+
it "complains about non-existant targets" do
|
|
905
|
+
expect { @api.enable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
906
|
+
end
|
|
907
|
+
|
|
908
|
+
it "complains about non-existant packets" do
|
|
909
|
+
expect { @api.enable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
910
|
+
end
|
|
911
|
+
|
|
912
|
+
it "complains about non-existant items" do
|
|
913
|
+
expect { @api.enable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
914
|
+
end
|
|
915
|
+
|
|
916
|
+
it "enables limits for an item" do
|
|
917
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
918
|
+
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
919
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
920
|
+
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
921
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
922
|
+
end
|
|
923
|
+
end
|
|
924
|
+
|
|
925
|
+
describe "disable_limits" do
|
|
926
|
+
it "complains about non-existant targets" do
|
|
927
|
+
expect { @api.disable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
928
|
+
end
|
|
929
|
+
|
|
930
|
+
it "complains about non-existant packets" do
|
|
931
|
+
expect { @api.disable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
932
|
+
end
|
|
933
|
+
|
|
934
|
+
it "complains about non-existant items" do
|
|
935
|
+
expect { @api.disable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
936
|
+
end
|
|
937
|
+
|
|
938
|
+
it "disables limits for an item" do
|
|
939
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
940
|
+
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
941
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
942
|
+
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
943
|
+
end
|
|
944
|
+
end
|
|
945
|
+
|
|
946
|
+
describe "get_limits" do
|
|
947
|
+
it "complains about non-existant targets" do
|
|
948
|
+
expect { @api.get_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
949
|
+
end
|
|
950
|
+
|
|
951
|
+
it "complains about non-existant packets" do
|
|
952
|
+
expect { @api.get_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
953
|
+
end
|
|
954
|
+
|
|
955
|
+
it "complains about non-existant items" do
|
|
956
|
+
expect { @api.get_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
957
|
+
end
|
|
958
|
+
|
|
959
|
+
it "gets limits for an item" do
|
|
960
|
+
expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1")).to eql([:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0])
|
|
961
|
+
expect(@api.get_limits("INST","HEALTH_STATUS","TEMP1",:TVAC)).to eql([:TVAC, 1, true, -80.0, -30.0, 30.0, 80.0, nil, nil])
|
|
962
|
+
end
|
|
963
|
+
end
|
|
964
|
+
|
|
965
|
+
describe "set_limits" do
|
|
966
|
+
it "complains about non-existant targets" do
|
|
967
|
+
expect { @api.set_limits("BLAH","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
|
|
968
|
+
end
|
|
969
|
+
|
|
970
|
+
it "complains about non-existant packets" do
|
|
971
|
+
expect { @api.set_limits("INST","BLAH","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
|
|
972
|
+
end
|
|
973
|
+
|
|
974
|
+
it "complains about non-existant items" do
|
|
975
|
+
expect { @api.set_limits("INST","HEALTH_STATUS","BLAH",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
|
|
976
|
+
end
|
|
977
|
+
|
|
978
|
+
it "gets limits for an item" do
|
|
979
|
+
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, nil, nil])
|
|
980
|
+
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM2,2,false)).to eql([:CUSTOM2, 2, false, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
|
|
981
|
+
expect(@api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM,1,true)).to eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
|
|
982
|
+
end
|
|
983
|
+
end
|
|
984
|
+
|
|
985
|
+
describe "get_limits_groups" do
|
|
986
|
+
it "returns all the limits groups" do
|
|
987
|
+
expect(@api.get_limits_groups).to eql %w(FIRST SECOND)
|
|
988
|
+
end
|
|
989
|
+
end
|
|
990
|
+
|
|
991
|
+
describe "enable_limits_group" do
|
|
992
|
+
it "complains about undefined limits groups" do
|
|
993
|
+
expect { @api.enable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
|
|
994
|
+
end
|
|
995
|
+
|
|
996
|
+
it "enables limits for all items in the group" do
|
|
997
|
+
@api.disable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
998
|
+
@api.disable_limits("INST","HEALTH_STATUS","TEMP3")
|
|
999
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
1000
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
|
|
1001
|
+
@api.enable_limits_group("FIRST")
|
|
1002
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
1003
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
|
|
1004
|
+
end
|
|
1005
|
+
end
|
|
1006
|
+
|
|
1007
|
+
describe "disable_limits_group" do
|
|
1008
|
+
it "complains about undefined limits groups" do
|
|
1009
|
+
expect { @api.disable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
|
|
1010
|
+
end
|
|
1011
|
+
|
|
1012
|
+
it "disables limits for all items in the group" do
|
|
1013
|
+
@api.enable_limits("INST","HEALTH_STATUS","TEMP1")
|
|
1014
|
+
@api.enable_limits("INST","HEALTH_STATUS","TEMP3")
|
|
1015
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be true
|
|
1016
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be true
|
|
1017
|
+
@api.disable_limits_group("FIRST")
|
|
1018
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP1")).to be false
|
|
1019
|
+
expect(@api.limits_enabled?("INST","HEALTH_STATUS","TEMP3")).to be false
|
|
1020
|
+
end
|
|
1021
|
+
end
|
|
1022
|
+
|
|
1023
|
+
describe "get_limits_sets, get_limits_set, set_limits_set" do
|
|
1024
|
+
it "gets and set the active limits set" do
|
|
1025
|
+
if @api.get_limits_sets.include?(:CUSTOM)
|
|
1026
|
+
expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC, :CUSTOM, :CUSTOM2]
|
|
1027
|
+
else
|
|
1028
|
+
expect(@api.get_limits_sets).to eql [:DEFAULT,:TVAC]
|
|
1029
|
+
end
|
|
1030
|
+
@api.set_limits_set("TVAC")
|
|
1031
|
+
expect(@api.get_limits_set).to eql "TVAC"
|
|
1032
|
+
@api.set_limits_set("DEFAULT")
|
|
1033
|
+
expect(@api.get_limits_set).to eql "DEFAULT"
|
|
1034
|
+
end
|
|
1035
|
+
end
|
|
1036
|
+
|
|
1037
|
+
describe "get_target_list" do
|
|
1038
|
+
it "returns all target names" do
|
|
1039
|
+
expect(@api.get_target_list).to eql %w(COSMOS INST META SYSTEM)
|
|
1040
|
+
end
|
|
1041
|
+
end
|
|
1042
|
+
|
|
1043
|
+
describe "subscribe_limits_events" do
|
|
1044
|
+
it "calls CmdTlmServer" do
|
|
1045
|
+
stub_const("Cosmos::CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE", 100)
|
|
1046
|
+
expect(CmdTlmServer).to receive(:subscribe_limits_events)
|
|
1047
|
+
@api.subscribe_limits_events
|
|
1048
|
+
end
|
|
1049
|
+
end
|
|
1050
|
+
|
|
1051
|
+
describe "unsubscribe_limits_events" do
|
|
1052
|
+
it "calls CmdTlmServer" do
|
|
1053
|
+
expect(CmdTlmServer).to receive(:unsubscribe_limits_events)
|
|
1054
|
+
@api.unsubscribe_limits_events(0)
|
|
1055
|
+
end
|
|
1056
|
+
end
|
|
1057
|
+
|
|
1058
|
+
describe "get_limits_event" do
|
|
1059
|
+
it "gets a limits event" do
|
|
1060
|
+
expect(CmdTlmServer).to receive(:get_limits_event)
|
|
1061
|
+
@api.get_limits_event(0)
|
|
1062
|
+
end
|
|
1063
|
+
end
|
|
1064
|
+
|
|
1065
|
+
describe "subscribe_packet_data" do
|
|
1066
|
+
it "calls CmdTlmServer" do
|
|
1067
|
+
stub_const("Cosmos::CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE", 100)
|
|
1068
|
+
expect(CmdTlmServer).to receive(:subscribe_packet_data)
|
|
1069
|
+
@api.subscribe_packet_data([["TGT","PKT1"],["TGT","PKT2"]])
|
|
1070
|
+
end
|
|
1071
|
+
end
|
|
1072
|
+
|
|
1073
|
+
describe "unsubscribe_packet_datas" do
|
|
1074
|
+
it "calls CmdTlmServer" do
|
|
1075
|
+
expect(CmdTlmServer).to receive(:unsubscribe_packet_data)
|
|
1076
|
+
@api.unsubscribe_packet_data(10)
|
|
1077
|
+
end
|
|
1078
|
+
end
|
|
1079
|
+
|
|
1080
|
+
describe "get_packet_data" do
|
|
1081
|
+
it "calls CmdTlmServer" do
|
|
1082
|
+
expect(CmdTlmServer).to receive(:get_packet_data)
|
|
1083
|
+
@api.get_packet_data(10)
|
|
1084
|
+
end
|
|
1085
|
+
end
|
|
1086
|
+
|
|
1087
|
+
# All these methods simply pass through directly to CmdTlmServer without
|
|
1088
|
+
# adding any functionality. Thus we just test that they are are received
|
|
1089
|
+
# by the CmdTlmServer.
|
|
1090
|
+
describe "CmdTlmServer pass-throughs" do
|
|
1091
|
+
it "calls through to the CmdTlmServer" do
|
|
1092
|
+
@api.get_interface_names
|
|
1093
|
+
@api.connect_interface("INT")
|
|
1094
|
+
@api.disconnect_interface("INT")
|
|
1095
|
+
@api.interface_state("INT")
|
|
1096
|
+
@api.map_target_to_interface("INST", "INT")
|
|
1097
|
+
@api.get_router_names
|
|
1098
|
+
@api.connect_router("ROUTE")
|
|
1099
|
+
@api.disconnect_router("ROUTE")
|
|
1100
|
+
@api.router_state("ROUTE")
|
|
1101
|
+
@api.send_raw("INT","\x00\x01")
|
|
1102
|
+
@api.get_cmd_log_filename('DEFAULT')
|
|
1103
|
+
@api.get_tlm_log_filename('DEFAULT')
|
|
1104
|
+
@api.start_logging('ALL')
|
|
1105
|
+
@api.stop_logging('ALL')
|
|
1106
|
+
@api.start_cmd_log('ALL')
|
|
1107
|
+
@api.start_tlm_log('ALL')
|
|
1108
|
+
@api.stop_cmd_log('ALL')
|
|
1109
|
+
@api.stop_tlm_log('ALL')
|
|
1110
|
+
@api.get_server_message_log_filename
|
|
1111
|
+
@api.start_new_server_message_log
|
|
1112
|
+
end
|
|
1113
|
+
end
|
|
1114
|
+
|
|
1115
|
+
end
|
|
1116
|
+
end
|
|
1117
|
+
|