cosmos 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -0
- data/.gitignore +48 -48
- data/.travis.yml +7 -7
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +6 -6
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1116 -1114
- data/README.md +109 -107
- data/Rakefile +214 -214
- data/autohotkey/config/data/diamond.STL +57 -57
- data/autohotkey/config/system/system.txt +34 -34
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/autohotkey/config/targets/COSMOS/target.txt +5 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -294
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
- data/autohotkey/config/targets/INST/screens/array.txt +7 -7
- data/autohotkey/config/targets/INST/screens/block.txt +8 -8
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
- data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
- data/autohotkey/config/targets/INST/screens/image.txt +21 -21
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
- data/autohotkey/config/targets/INST/screens/other.txt +25 -25
- data/autohotkey/config/targets/INST/screens/params.txt +25 -25
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
- data/autohotkey/config/targets/INST/target.txt +26 -26
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/autohotkey/config/tools/launcher/launcher.txt +38 -38
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
- data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
- data/autohotkey/lib/example_background_task.rb +42 -42
- data/autohotkey/lib/user_version.rb +3 -3
- data/autohotkey/procedures/clear_util.rb +7 -7
- data/autohotkey/procedures/collect.rb +18 -18
- data/autohotkey/procedures/collect_util.rb +14 -14
- data/autohotkey/procedures/example_test.rb +67 -67
- data/autohotkey/procedures/example_test2.rb +74 -74
- data/autohotkey/procedures/script_test.rb +17 -17
- data/autohotkey/procedures/syntax_error.rb +18 -18
- data/autohotkey/tools/CmdExtractorAHK +16 -16
- data/autohotkey/tools/CmdSender +14 -14
- data/autohotkey/tools/CmdSenderAHK +18 -18
- data/autohotkey/tools/CmdTlmServer +14 -14
- data/autohotkey/tools/CmdTlmServerAHK +28 -28
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
- data/autohotkey/tools/DataViewer +14 -14
- data/autohotkey/tools/DataViewerAHK +17 -17
- data/autohotkey/tools/HandbookCreatorAHK +20 -20
- data/autohotkey/tools/LauncherAHK +17 -17
- data/autohotkey/tools/LimitsMonitorAHK +20 -20
- data/autohotkey/tools/OpenGLBuilderAHK +20 -20
- data/autohotkey/tools/PacketViewer +14 -14
- data/autohotkey/tools/PacketViewerAHK +18 -18
- data/autohotkey/tools/PacketViewerAHK2 +17 -17
- data/autohotkey/tools/Replay +14 -14
- data/autohotkey/tools/Replay.bat +59 -59
- data/autohotkey/tools/ReplayAHK +17 -17
- data/autohotkey/tools/ScriptRunner +14 -14
- data/autohotkey/tools/ScriptRunnerAHK +20 -20
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
- data/autohotkey/tools/TableManager +14 -14
- data/autohotkey/tools/TableManagerAHK +30 -30
- data/autohotkey/tools/TestRunner +15 -15
- data/autohotkey/tools/TestRunnerAHK +17 -17
- data/autohotkey/tools/TestRunnerAHK2 +17 -17
- data/autohotkey/tools/TestRunnerAHK3 +17 -17
- data/autohotkey/tools/TestRunnerAHK4 +17 -17
- data/autohotkey/tools/TlmExtractor +15 -15
- data/autohotkey/tools/TlmExtractorAHK +19 -19
- data/autohotkey/tools/TlmExtractorAHK2 +16 -16
- data/autohotkey/tools/TlmExtractorAHK3 +16 -16
- data/autohotkey/tools/TlmGrapher +14 -14
- data/autohotkey/tools/TlmGrapherAHK +19 -19
- data/autohotkey/tools/TlmGrapherAHK2 +23 -23
- data/autohotkey/tools/TlmGrapherAHK3 +17 -17
- data/autohotkey/tools/TlmGrapherAHK4 +17 -17
- data/autohotkey/tools/TlmViewer +14 -14
- data/autohotkey/tools/TlmViewerAHK +28 -28
- data/autohotkey/tools/TlmViewerAHK2 +18 -18
- data/autohotkey/tools/TlmViewerAHK3 +18 -18
- data/autohotkey/tools/TlmViewerAHK4 +18 -18
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +27 -27
- data/autohotkey/tools/cmd_sender.ahk +182 -162
- data/autohotkey/tools/cmd_tlm_server.ahk +89 -89
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +135 -135
- data/autohotkey/tools/handbook_creator.ahk +23 -23
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +70 -70
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +143 -143
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +98 -98
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +34 -31
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -259
- data/autohotkey/tools/test_runner2.ahk +52 -52
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/tlm_extractor.ahk +272 -272
- data/autohotkey/tools/tlm_grapher.ahk +642 -642
- data/autohotkey/tools/tlm_grapher2.ahk +115 -115
- data/autohotkey/tools/tlm_grapher3.ahk +24 -24
- data/autohotkey/tools/tlm_viewer.ahk +133 -133
- data/autohotkey/tools/tlm_viewer2.ahk +50 -49
- data/autohotkey/tools/tlm_viewer4.ahk +4 -4
- data/autohotkey/tools/tlm_viewer5.ahk +20 -20
- data/bin/cosmos +96 -96
- data/bin/cstol_converter +1166 -1166
- data/bin/rubysloc +85 -85
- data/cosmos.gemspec +98 -97
- data/data/about.txt +4 -4
- data/data/crc.txt +306 -305
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +6 -6
- data/demo/Launcher +15 -15
- data/demo/Launcher.bat +59 -59
- data/demo/Rakefile +61 -61
- data/demo/config/data/crc.txt +222 -206
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +34 -34
- data/demo/config/system/system2.txt +33 -33
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/demo/config/targets/COSMOS/screens/version.txt +19 -19
- data/demo/config/targets/COSMOS/target.txt +11 -11
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -3
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
- data/demo/config/targets/EXAMPLE/target.txt +6 -6
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/demo/config/targets/INST/lib/sim_inst.rb +305 -294
- data/demo/config/targets/INST/screens/adcs.txt +46 -46
- data/demo/config/targets/INST/screens/array.txt +15 -15
- data/demo/config/targets/INST/screens/block.txt +8 -8
- data/demo/config/targets/INST/screens/commanding.txt +30 -30
- data/demo/config/targets/INST/screens/graphs.txt +14 -14
- data/demo/config/targets/INST/screens/ground.txt +25 -25
- data/demo/config/targets/INST/screens/hs.txt +44 -44
- data/demo/config/targets/INST/screens/latest.txt +23 -23
- data/demo/config/targets/INST/screens/other.txt +29 -29
- data/demo/config/targets/INST/screens/tabs.txt +70 -70
- data/demo/config/targets/INST/target.txt +33 -33
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +54 -48
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -33
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -29
- data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/demo/config/tools/launcher/launcher.txt +45 -45
- data/demo/config/tools/launcher/launcher2.txt +45 -45
- data/demo/config/tools/script_runner/script_runner.txt +3 -3
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/demo/config/tools/test_runner/test_runner.txt +17 -17
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
- data/demo/lib/example_background_task.rb +57 -52
- data/demo/lib/example_target.rb +113 -108
- data/demo/lib/scpi_target.rb +74 -74
- data/demo/lib/user_version.rb +3 -3
- data/demo/procedures/checks.rb +11 -11
- data/demo/procedures/clear_util.rb +7 -7
- data/demo/procedures/collect.rb +18 -18
- data/demo/procedures/collect_util.rb +14 -14
- data/demo/procedures/cosmos_api_test.rb +293 -293
- data/demo/procedures/disconnect.rb +29 -29
- data/demo/procedures/example_test.rb +182 -182
- data/demo/procedures/plot_test.rb +8 -8
- data/demo/procedures/run_example_test.rb +3 -3
- data/demo/procedures/test.rb +51 -51
- data/demo/tools/CmdExtractor +15 -15
- data/demo/tools/CmdExtractor.bat +59 -59
- data/demo/tools/CmdSender +15 -15
- data/demo/tools/CmdSender.bat +59 -59
- data/demo/tools/CmdTlmServer +15 -15
- data/demo/tools/CmdTlmServer.bat +59 -59
- data/demo/tools/DataViewer +15 -15
- data/demo/tools/DataViewer.bat +59 -59
- data/demo/tools/ExampleTarget +15 -15
- data/demo/tools/ExampleTarget.bat +59 -59
- data/demo/tools/HandbookCreator +15 -15
- data/demo/tools/HandbookCreator.bat +61 -61
- data/demo/tools/Launcher +15 -15
- data/demo/tools/Launcher.bat +59 -59
- data/demo/tools/LimitsMonitor +15 -15
- data/demo/tools/LimitsMonitor.bat +59 -59
- data/demo/tools/OpenGLBuilder +15 -15
- data/demo/tools/OpenGLBuilder.bat +59 -59
- data/demo/tools/PacketViewer +15 -15
- data/demo/tools/PacketViewer.bat +59 -59
- data/demo/tools/Replay +15 -15
- data/demo/tools/Replay.bat +59 -59
- data/demo/tools/ScpiTarget +15 -15
- data/demo/tools/ScpiTarget.bat +59 -59
- data/demo/tools/ScriptRunner +15 -15
- data/demo/tools/ScriptRunner.bat +59 -59
- data/demo/tools/TableManager +15 -15
- data/demo/tools/TableManager.bat +59 -59
- data/demo/tools/TestRunner +15 -15
- data/demo/tools/TestRunner.bat +59 -59
- data/demo/tools/TlmExtractor +15 -15
- data/demo/tools/TlmExtractor.bat +59 -59
- data/demo/tools/TlmGrapher +15 -15
- data/demo/tools/TlmGrapher.bat +59 -59
- data/demo/tools/TlmViewer +15 -15
- data/demo/tools/TlmViewer.bat +59 -59
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/ext/cosmos/ext/array/array.c +111 -111
- data/ext/cosmos/ext/array/extconf.rb +13 -13
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
- data/ext/cosmos/ext/crc/crc.c +341 -341
- data/ext/cosmos/ext/crc/extconf.rb +12 -12
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -261
- data/ext/cosmos/ext/packet/extconf.rb +13 -13
- data/ext/cosmos/ext/packet/packet.c +339 -339
- data/ext/cosmos/ext/platform/extconf.rb +13 -13
- data/ext/cosmos/ext/platform/platform.c +81 -81
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
- data/ext/cosmos/ext/string/extconf.rb +13 -13
- data/ext/cosmos/ext/string/string.c +49 -49
- data/ext/cosmos/ext/structure/structure.c +894 -894
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
- data/ext/cosmos/ext/telemetry/telemetry.c +306 -306
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +6 -6
- data/install/Launcher +14 -14
- data/install/Launcher.bat +59 -59
- data/install/Rakefile +61 -61
- data/install/config/data/crc.txt +134 -133
- data/install/config/system/system.txt +29 -29
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/install/config/targets/COSMOS/target.txt +8 -8
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/install/config/tools/data_viewer/data_viewer.txt +3 -3
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/install/config/tools/launcher/launcher.txt +39 -39
- data/install/config/tools/script_runner/script_runner.txt +3 -3
- data/install/config/tools/test_runner/test_runner.txt +8 -8
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/install/lib/user_version.rb +3 -3
- data/install/tools/CmdExtractor +15 -15
- data/install/tools/CmdExtractor.bat +59 -59
- data/install/tools/CmdSender +15 -15
- data/install/tools/CmdSender.bat +59 -59
- data/install/tools/CmdTlmServer +15 -15
- data/install/tools/CmdTlmServer.bat +59 -59
- data/install/tools/DataViewer +15 -15
- data/install/tools/DataViewer.bat +59 -59
- data/install/tools/HandbookCreator +15 -15
- data/install/tools/HandbookCreator.bat +61 -61
- data/install/tools/Launcher +15 -15
- data/install/tools/Launcher.bat +59 -59
- data/install/tools/LimitsMonitor +15 -15
- data/install/tools/LimitsMonitor.bat +59 -59
- data/install/tools/OpenGLBuilder +15 -15
- data/install/tools/OpenGLBuilder.bat +59 -59
- data/install/tools/PacketViewer +15 -15
- data/install/tools/PacketViewer.bat +59 -59
- data/install/tools/Replay +15 -15
- data/install/tools/Replay.bat +59 -59
- data/install/tools/ScriptRunner +15 -15
- data/install/tools/ScriptRunner.bat +59 -59
- data/install/tools/TableManager +15 -15
- data/install/tools/TableManager.bat +59 -59
- data/install/tools/TestRunner +15 -15
- data/install/tools/TestRunner.bat +59 -59
- data/install/tools/TlmExtractor +15 -15
- data/install/tools/TlmExtractor.bat +59 -59
- data/install/tools/TlmGrapher +15 -15
- data/install/tools/TlmGrapher.bat +59 -59
- data/install/tools/TlmViewer +15 -15
- data/install/tools/TlmViewer.bat +59 -59
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/lib/cosmos.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
- data/lib/cosmos/config/config_parser.rb +324 -324
- data/lib/cosmos/conversions.rb +13 -13
- data/lib/cosmos/conversions/conversion.rb +47 -47
- data/lib/cosmos/conversions/generic_conversion.rb +55 -55
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
- data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
- data/lib/cosmos/conversions/processor_conversion.rb +46 -46
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
- data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
- data/lib/cosmos/core_ext.rb +18 -18
- data/lib/cosmos/core_ext/array.rb +354 -354
- data/lib/cosmos/core_ext/class.rb +51 -51
- data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
- data/lib/cosmos/core_ext/exception.rb +52 -52
- data/lib/cosmos/core_ext/file.rb +75 -75
- data/lib/cosmos/core_ext/hash.rb +28 -28
- data/lib/cosmos/core_ext/io.rb +75 -75
- data/lib/cosmos/core_ext/kernel.rb +38 -38
- data/lib/cosmos/core_ext/math.rb +119 -119
- data/lib/cosmos/core_ext/matrix.rb +146 -146
- data/lib/cosmos/core_ext/objectspace.rb +29 -29
- data/lib/cosmos/core_ext/range.rb +22 -22
- data/lib/cosmos/core_ext/socket.rb +32 -32
- data/lib/cosmos/core_ext/string.rb +310 -310
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +446 -446
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
- data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
- data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
- data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
- data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -317
- data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -128
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
- data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -196
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -168
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +270 -262
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -161
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
- data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
- data/lib/cosmos/gui/dialogs/splash.rb +113 -113
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
- data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -494
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -460
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
- data/lib/cosmos/gui/line_graph/lines.rb +290 -290
- data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -459
- data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
- data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
- data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
- data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
- data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
- data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
- data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -712
- data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
- data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
- data/lib/cosmos/gui/opengl/opengl.rb +8 -8
- data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
- data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
- data/lib/cosmos/gui/qt.rb +813 -786
- data/lib/cosmos/gui/qt_tool.rb +378 -373
- data/lib/cosmos/gui/text/completion.rb +381 -381
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
- data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
- data/lib/cosmos/gui/text/ruby_editor.rb +395 -395
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -203
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
- data/lib/cosmos/interfaces.rb +11 -11
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -149
- data/lib/cosmos/interfaces/interface.rb +213 -213
- data/lib/cosmos/interfaces/linc_interface.rb +360 -360
- data/lib/cosmos/interfaces/serial_interface.rb +76 -76
- data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -128
- data/lib/cosmos/interfaces/stream_interface.rb +156 -156
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -154
- data/lib/cosmos/interfaces/udp_interface.rb +173 -173
- data/lib/cosmos/io/buffered_file.rb +11 -11
- data/lib/cosmos/io/cosmos_snmp.rb +50 -50
- data/lib/cosmos/io/io_multiplexer.rb +89 -89
- data/lib/cosmos/io/json_drb.rb +344 -320
- data/lib/cosmos/io/json_drb_object.rb +137 -137
- data/lib/cosmos/io/json_rpc.rb +365 -365
- data/lib/cosmos/io/posix_serial_driver.rb +145 -145
- data/lib/cosmos/io/raw_logger.rb +174 -174
- data/lib/cosmos/io/raw_logger_pair.rb +71 -71
- data/lib/cosmos/io/serial_driver.rb +85 -85
- data/lib/cosmos/io/stderr.rb +36 -36
- data/lib/cosmos/io/stdout.rb +36 -36
- data/lib/cosmos/io/tcpip_server.rb +583 -532
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +147 -147
- data/lib/cosmos/packet_logs.rb +6 -6
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +441 -439
- data/lib/cosmos/packet_logs/packet_log_writer.rb +321 -309
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +921 -921
- data/lib/cosmos/packets/commands.rb +291 -291
- data/lib/cosmos/packets/limits.rb +263 -263
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +714 -699
- data/lib/cosmos/packets/packet_config.rb +1034 -1034
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/structure.rb +421 -386
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +317 -317
- data/lib/cosmos/processors.rb +6 -6
- data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
- data/lib/cosmos/processors/processor.rb +71 -71
- data/lib/cosmos/processors/statistics_processor.rb +65 -65
- data/lib/cosmos/processors/watermark_processor.rb +44 -44
- data/lib/cosmos/script.rb +9 -9
- data/lib/cosmos/script/extract.rb +115 -115
- data/lib/cosmos/script/script.rb +1513 -1493
- data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
- data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
- data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
- data/lib/cosmos/streams/serial_stream.rb +152 -143
- data/lib/cosmos/streams/stream.rb +57 -57
- data/lib/cosmos/streams/stream_protocol.rb +369 -369
- data/lib/cosmos/streams/tcpip_client_stream.rb +77 -77
- data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -139
- data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
- data/lib/cosmos/system.rb +4 -4
- data/lib/cosmos/system/system.rb +558 -558
- data/lib/cosmos/system/target.rb +178 -178
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +254 -253
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -716
- data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +936 -940
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -63
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +511 -497
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -241
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1033 -1008
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +241 -221
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +628 -600
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -167
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -149
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -360
- data/lib/cosmos/tools/launcher/launcher.rb +184 -184
- data/lib/cosmos/tools/launcher/launcher_config.rb +175 -167
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -41
- data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -104
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +796 -768
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -525
- data/lib/cosmos/tools/replay/replay.rb +495 -488
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -139
- data/lib/cosmos/tools/script_runner/script_runner.rb +914 -914
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1892 -1859
- data/lib/cosmos/tools/table_manager/table.rb +70 -70
- data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
- data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
- data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
- data/lib/cosmos/tools/test_runner/test.rb +480 -480
- data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -1157
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -338
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -1008
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -94
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -180
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -173
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -177
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +412 -409
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -320
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -1278
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +111 -95
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +72 -66
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
- data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -458
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +563 -544
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -287
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -70
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -61
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
- data/lib/cosmos/top_level.rb +647 -596
- data/lib/cosmos/utilities.rb +11 -10
- data/lib/cosmos/utilities/crc.rb +166 -166
- data/lib/cosmos/utilities/csv.rb +83 -83
- data/lib/cosmos/utilities/logger.rb +137 -137
- data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
- data/lib/cosmos/utilities/message_log.rb +74 -74
- data/lib/cosmos/utilities/quaternion.rb +258 -258
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
- data/lib/cosmos/utilities/simulated_target.rb +99 -99
- data/lib/cosmos/utilities/sleeper.rb +44 -0
- data/lib/cosmos/version.rb +12 -12
- data/lib/cosmos/win32/excel.rb +66 -66
- data/lib/cosmos/win32/win32.rb +387 -387
- data/lib/cosmos/win32/win32_main.rb +311 -311
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +32 -32
- data/spec/ccsds/ccsds_packet_spec.rb +67 -67
- data/spec/ccsds/ccsds_parser_spec.rb +148 -148
- data/spec/config/config_parser_spec.rb +322 -322
- data/spec/conversions/conversion_spec.rb +31 -31
- data/spec/conversions/generic_conversion_spec.rb +45 -45
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
- data/spec/conversions/polynomial_conversion_spec.rb +40 -40
- data/spec/conversions/processor_conversion_spec.rb +45 -45
- data/spec/conversions/received_count_conversion_spec.rb +43 -43
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
- data/spec/core_ext/array_spec.rb +186 -186
- data/spec/core_ext/class_spec.rb +36 -36
- data/spec/core_ext/cosmos_io_spec.rb +77 -77
- data/spec/core_ext/exception_spec.rb +91 -91
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +24 -24
- data/spec/core_ext/io_spec.rb +46 -46
- data/spec/core_ext/kernel_spec.rb +54 -54
- data/spec/core_ext/math_spec.rb +116 -116
- data/spec/core_ext/matrix_spec.rb +66 -66
- data/spec/core_ext/objectspace_spec.rb +29 -29
- data/spec/core_ext/range_spec.rb +21 -21
- data/spec/core_ext/socket_spec.rb +32 -32
- data/spec/core_ext/string_spec.rb +223 -223
- data/spec/core_ext/stringio_spec.rb +21 -21
- data/spec/core_ext/time_spec.rb +151 -151
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/install/config/system/system.txt +33 -33
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/spec/install/config/targets/COSMOS/target.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -294
- data/spec/install/config/targets/INST/target.txt +10 -10
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
- data/spec/interfaces/interface_spec.rb +130 -131
- data/spec/interfaces/linc_interface_spec.rb +199 -199
- data/spec/interfaces/serial_interface_spec.rb +56 -56
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
- data/spec/interfaces/stream_interface_spec.rb +157 -157
- data/spec/interfaces/tcpip_client_interface_spec.rb +54 -54
- data/spec/interfaces/tcpip_server_interface_spec.rb +151 -151
- data/spec/interfaces/udp_interface_spec.rb +175 -177
- data/spec/io/buffered_file_spec.rb +113 -113
- data/spec/io/io_multiplexer_spec.rb +94 -94
- data/spec/io/json_drb_object_spec.rb +99 -99
- data/spec/io/json_drb_spec.rb +311 -311
- data/spec/io/json_rpc_spec.rb +264 -264
- data/spec/io/raw_logger_pair_spec.rb +76 -76
- data/spec/io/raw_logger_spec.rb +133 -133
- data/spec/io/serial_driver_spec.rb +61 -61
- data/spec/io/stderr_spec.rb +32 -32
- data/spec/io/stdout_spec.rb +32 -32
- data/spec/io/tcpip_server_spec.rb +338 -338
- data/spec/io/udp_sockets_spec.rb +94 -94
- data/spec/io/win32_serial_driver_spec.rb +88 -88
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
- data/spec/packet_logs/packet_log_reader_spec.rb +408 -408
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +223 -223
- data/spec/packets/binary_accessor_spec.rb +2073 -2073
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +326 -326
- data/spec/packets/packet_config_spec.rb +1620 -1620
- data/spec/packets/packet_item_limits_spec.rb +161 -161
- data/spec/packets/packet_item_spec.rb +386 -386
- data/spec/packets/packet_spec.rb +1057 -949
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +419 -419
- data/spec/packets/telemetry_spec.rb +535 -535
- data/spec/processors/new_packet_log_processor_spec.rb +39 -39
- data/spec/processors/processor_spec.rb +55 -55
- data/spec/processors/statistics_processor_spec.rb +60 -60
- data/spec/processors/watermark_processor_spec.rb +51 -51
- data/spec/script/script_spec.rb +654 -654
- data/spec/spec_helper.rb +154 -148
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +110 -110
- data/spec/streams/length_stream_protocol_spec.rb +297 -297
- data/spec/streams/preidentified_stream_protocol_spec.rb +118 -118
- data/spec/streams/serial_stream_spec.rb +105 -105
- data/spec/streams/stream_protocol_spec.rb +332 -332
- data/spec/streams/stream_spec.rb +29 -29
- data/spec/streams/tcpip_client_stream_spec.rb +54 -54
- data/spec/streams/tcpip_socket_stream_spec.rb +146 -146
- data/spec/streams/template_stream_protocol_spec.rb +151 -151
- data/spec/streams/terminated_stream_protocol_spec.rb +123 -123
- data/spec/system/system_spec.rb +645 -645
- data/spec/system/target_spec.rb +248 -248
- data/spec/tools/cmd_tlm_server/api_spec.rb +1087 -1113
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +411 -411
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -123
- data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -147
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -238
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +98 -101
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -208
- data/spec/top_level/top_level_spec.rb +334 -321
- data/spec/utilities/crc_spec.rb +45 -45
- data/spec/utilities/csv_spec.rb +97 -97
- data/spec/utilities/logger_spec.rb +102 -102
- data/spec/utilities/message_log_spec.rb +89 -89
- data/spec/utilities/quaternion_spec.rb +107 -107
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
- data/tasks/manifest.rake +22 -22
- data/tasks/spec.rake +23 -23
- metadata +18 -2
|
@@ -1,535 +1,535 @@
|
|
|
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/packets/telemetry'
|
|
14
|
-
require 'tempfile'
|
|
15
|
-
|
|
16
|
-
module Cosmos
|
|
17
|
-
|
|
18
|
-
describe Telemetry do
|
|
19
|
-
|
|
20
|
-
describe "initialize" do
|
|
21
|
-
it "should have no warnings" do
|
|
22
|
-
Telemetry.new(PacketConfig.new).warnings.should be_empty
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
before(:each) do
|
|
27
|
-
tf = Tempfile.new('unittest')
|
|
28
|
-
tf.puts '# This is a comment'
|
|
29
|
-
tf.puts '#'
|
|
30
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "TGT1 PKT1 Description"'
|
|
31
|
-
tf.puts ' APPEND_ID_ITEM item1 8 UINT 1 "Item1"'
|
|
32
|
-
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 4 5'
|
|
33
|
-
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
34
|
-
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 4 5'
|
|
35
|
-
tf.puts ' APPEND_ITEM item3 8 UINT "Item3"'
|
|
36
|
-
tf.puts ' POLY_READ_CONVERSION 0 2'
|
|
37
|
-
tf.puts ' APPEND_ITEM item4 8 UINT "Item4"'
|
|
38
|
-
tf.puts ' POLY_READ_CONVERSION 0 2'
|
|
39
|
-
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "TGT1 PKT2 Description"'
|
|
40
|
-
tf.puts ' APPEND_ID_ITEM item1 8 UINT 2 "Item1"'
|
|
41
|
-
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
42
|
-
tf.puts 'TELEMETRY tgt2 pkt1 LITTLE_ENDIAN "TGT2 PKT1 Description"'
|
|
43
|
-
tf.puts ' APPEND_ID_ITEM item1 8 UINT 3 "Item1"'
|
|
44
|
-
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
45
|
-
tf.close
|
|
46
|
-
|
|
47
|
-
pc = PacketConfig.new
|
|
48
|
-
pc.process_file(tf.path, "SYSTEM")
|
|
49
|
-
@tlm = Telemetry.new(pc)
|
|
50
|
-
tf.unlink
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
describe "target_names" do
|
|
54
|
-
it "should return an array with just UNKNOWN if no targets" do
|
|
55
|
-
Telemetry.new(PacketConfig.new).target_names.should eql ["UNKNOWN"]
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should return all target names" do
|
|
59
|
-
@tlm.target_names.should eql ["TGT1","TGT2","UNKNOWN"]
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
describe "packets" do
|
|
64
|
-
it "should complain about non-existant targets" do
|
|
65
|
-
expect { @tlm.packets("tgtX") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it "should return all packets target TGT1" do
|
|
69
|
-
pkts = @tlm.packets("TGT1")
|
|
70
|
-
pkts.length.should eql 2
|
|
71
|
-
pkts.keys.should include("PKT1")
|
|
72
|
-
pkts.keys.should include("PKT2")
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "should return all packets target TGT2" do
|
|
76
|
-
pkts = @tlm.packets("TGT2")
|
|
77
|
-
pkts.length.should eql 1
|
|
78
|
-
pkts.keys.should include("PKT1")
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
describe "packet" do
|
|
83
|
-
it "should complain about non-existant targets" do
|
|
84
|
-
expect { @tlm.packet("tgtX","pkt1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it "should complain about non-existant packets" do
|
|
88
|
-
expect { @tlm.packet("TGT1","PKTX") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
it "should complain about the 'LATEST' packet" do
|
|
92
|
-
expect { @tlm.packet("TGT1","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
it "should return the specified packet" do
|
|
96
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
97
|
-
pkt.target_name.should eql "TGT1"
|
|
98
|
-
pkt.packet_name.should eql "PKT1"
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
describe "items" do
|
|
103
|
-
it "should complain about non-existant targets" do
|
|
104
|
-
expect { @tlm.items("tgtX","pkt1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it "should complain about non-existant packets" do
|
|
108
|
-
expect { @tlm.items("TGT1","PKTX") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it "should complain about the 'LATEST' packet" do
|
|
112
|
-
expect { @tlm.items("TGT1","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it "should return all items from packet TGT1/PKT1" do
|
|
116
|
-
items = @tlm.items("TGT1","PKT1")
|
|
117
|
-
items.length.should eql 7
|
|
118
|
-
items[0].name.should eql "RECEIVED_TIMESECONDS"
|
|
119
|
-
items[1].name.should eql "RECEIVED_TIMEFORMATTED"
|
|
120
|
-
items[2].name.should eql "RECEIVED_COUNT"
|
|
121
|
-
items[3].name.should eql "ITEM1"
|
|
122
|
-
items[4].name.should eql "ITEM2"
|
|
123
|
-
items[5].name.should eql "ITEM3"
|
|
124
|
-
items[6].name.should eql "ITEM4"
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe "item_names" do
|
|
129
|
-
it "should return all the items for a given target and packet" do
|
|
130
|
-
items = @tlm.item_names("TGT1","PKT1")
|
|
131
|
-
expect(items).to contain_exactly('RECEIVED_TIMEFORMATTED','RECEIVED_TIMESECONDS','RECEIVED_COUNT','ITEM1','ITEM2','ITEM3','ITEM4')
|
|
132
|
-
|
|
133
|
-
items = @tlm.item_names("TGT1","LATEST")
|
|
134
|
-
expect(items).to contain_exactly('ITEM1','ITEM2','ITEM3','ITEM4')
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
describe "packet_and_item" do
|
|
139
|
-
it "should complain about non-existant targets" do
|
|
140
|
-
expect { @tlm.packet_and_item("tgtX","pkt1","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
it "should complain about non-existant packets" do
|
|
144
|
-
expect { @tlm.packet_and_item("TGT1","PKTX","ITEM1") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
it "should complain about non-existant items" do
|
|
148
|
-
expect { @tlm.packet_and_item("TGT1","PKT1","ITEMX") }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
it "should return the packet and item" do
|
|
152
|
-
pkt,item = @tlm.packet_and_item("TGT1","PKT1","ITEM1")
|
|
153
|
-
item.name.should eql "ITEM1"
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
it "should return the LATEST packet and item if it exists" do
|
|
157
|
-
pkt,item = @tlm.packet_and_item("TGT1","LATEST","ITEM1")
|
|
158
|
-
pkt.packet_name.should eql "PKT2"
|
|
159
|
-
item.name.should eql "ITEM1"
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
describe "latest_packets" do
|
|
164
|
-
it "should complain about non-existant targets" do
|
|
165
|
-
expect { @tlm.latest_packets("tgtX","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it "should complain about non-existant items" do
|
|
169
|
-
expect { @tlm.latest_packets("TGT1","ITEMX") }.to raise_error(RuntimeError, "Telemetry item 'TGT1 LATEST ITEMX' does not exist")
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
it "should return the packets that contain the item" do
|
|
173
|
-
pkts = @tlm.latest_packets("TGT1","ITEM1")
|
|
174
|
-
pkts.length.should eql 2
|
|
175
|
-
pkts[0].packet_name.should eql "PKT1"
|
|
176
|
-
pkts[1].packet_name.should eql "PKT2"
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
describe "newest_packet" do
|
|
181
|
-
it "should complain about non-existant targets" do
|
|
182
|
-
expect { @tlm.newest_packet("tgtX","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
it "should complain about non-existant items" do
|
|
186
|
-
expect { @tlm.newest_packet("TGT1","ITEMX") }.to raise_error(RuntimeError, "Telemetry item 'TGT1 LATEST ITEMX' does not exist")
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
context "with two valid timestamps" do
|
|
190
|
-
it "should return the latest packet (PKT1)" do
|
|
191
|
-
time = Time.now
|
|
192
|
-
@tlm.packet("TGT1","PKT1").received_time = time + 1
|
|
193
|
-
@tlm.packet("TGT1","PKT2").received_time = time
|
|
194
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
195
|
-
pkt.packet_name.should eql "PKT1"
|
|
196
|
-
pkt.received_time.should eql(time + 1)
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
it "should return the latest packet (PKT2)" do
|
|
200
|
-
time = Time.now
|
|
201
|
-
@tlm.packet("TGT1","PKT1").received_time = time
|
|
202
|
-
@tlm.packet("TGT1","PKT2").received_time = time + 1
|
|
203
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
204
|
-
pkt.packet_name.should eql "PKT2"
|
|
205
|
-
pkt.received_time.should eql(time + 1)
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
it "should return the last packet if timestamps are equal" do
|
|
209
|
-
time = Time.now
|
|
210
|
-
@tlm.packet("TGT1","PKT1").received_time = time
|
|
211
|
-
@tlm.packet("TGT1","PKT2").received_time = time
|
|
212
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
213
|
-
pkt.packet_name.should eql "PKT2"
|
|
214
|
-
pkt.received_time.should eql(time)
|
|
215
|
-
end
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
context "with one or more nil timestamps" do
|
|
219
|
-
it "should return the last packet if neither has a timestamp" do
|
|
220
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
221
|
-
pkt.packet_name.should eql "PKT2"
|
|
222
|
-
pkt.received_time.should be_nil
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
it "should return the packet with a timestamp (PKT1)" do
|
|
226
|
-
time = Time.now
|
|
227
|
-
@tlm.packet("TGT1","PKT1").received_time = time
|
|
228
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
229
|
-
pkt.packet_name.should eql "PKT1"
|
|
230
|
-
pkt.received_time.should eql time
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
it "should return the packet with a timestamp (PKT2)" do
|
|
234
|
-
time = Time.now
|
|
235
|
-
@tlm.packet("TGT1","PKT2").received_time = time
|
|
236
|
-
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
237
|
-
pkt.packet_name.should eql "PKT2"
|
|
238
|
-
pkt.received_time.should eql time
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
describe "identify!" do
|
|
244
|
-
it "should return nil with a nil buffer" do
|
|
245
|
-
@tlm.identify!(nil).should be_nil
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it "should only check the targets given" do
|
|
249
|
-
buffer = "\x01\x02\x03\x04"
|
|
250
|
-
@tlm.identify!(buffer,["TGT1"])
|
|
251
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
252
|
-
pkt.enable_method_missing
|
|
253
|
-
pkt.item1.should eql 1
|
|
254
|
-
pkt.item2.should eql 2
|
|
255
|
-
pkt.item3.should eql 6.0
|
|
256
|
-
pkt.item4.should eql 8.0
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
it "should return nil with unknown targets given" do
|
|
260
|
-
buffer = "\x01\x02\x03\x04"
|
|
261
|
-
@tlm.identify!(buffer,["TGTX"]).should be_nil
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
context "with an unknown buffer" do
|
|
265
|
-
it "should log an invalid sized buffer" do
|
|
266
|
-
capture_io do |stdout|
|
|
267
|
-
buffer = "\x01\x02\x03\x04\x05"
|
|
268
|
-
@tlm.identify!(buffer)
|
|
269
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
270
|
-
pkt.enable_method_missing
|
|
271
|
-
pkt.item1.should eql 1
|
|
272
|
-
pkt.item2.should eql 2
|
|
273
|
-
pkt.item3.should eql 6.0
|
|
274
|
-
pkt.item4.should eql 8.0
|
|
275
|
-
stdout.string.should match(/ERROR: TGT1 PKT1 received with actual packet length of 5 but defined length of 4/)
|
|
276
|
-
end
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
it "should identify TGT1 PKT1" do
|
|
280
|
-
buffer = "\x01\x02\x03\x04"
|
|
281
|
-
@tlm.identify!(buffer)
|
|
282
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
283
|
-
pkt.enable_method_missing
|
|
284
|
-
pkt.item1.should eql 1
|
|
285
|
-
pkt.item2.should eql 2
|
|
286
|
-
pkt.item3.should eql 6.0
|
|
287
|
-
pkt.item4.should eql 8.0
|
|
288
|
-
end
|
|
289
|
-
|
|
290
|
-
it "should identify TGT1 PKT2" do
|
|
291
|
-
buffer = "\x02\x02"
|
|
292
|
-
@tlm.identify!(buffer)
|
|
293
|
-
pkt = @tlm.packet("TGT1","PKT2")
|
|
294
|
-
pkt.enable_method_missing
|
|
295
|
-
pkt.item1.should eql 2
|
|
296
|
-
pkt.item2.should eql 2
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
it "should identify TGT2 PKT1" do
|
|
300
|
-
buffer = "\x03\x02"
|
|
301
|
-
@tlm.identify!(buffer)
|
|
302
|
-
pkt = @tlm.packet("TGT2","PKT1")
|
|
303
|
-
pkt.enable_method_missing
|
|
304
|
-
pkt.item1.should eql 3
|
|
305
|
-
pkt.item2.should eql 2
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
describe "update!" do
|
|
311
|
-
it "should complain about non-existant targets" do
|
|
312
|
-
expect { @tlm.update!("TGTX","PKT1","\x00") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
it "should complain about non-existant packets" do
|
|
316
|
-
expect { @tlm.update!("TGT1","PKTX","\x00") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
it "should complain about the 'LATEST' packet" do
|
|
320
|
-
expect { @tlm.update!("TGT1","LATEST","\x00") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
it "should complain with a nil buffer" do
|
|
324
|
-
expect { @tlm.update!("TGT1","PKT1",nil) }.to raise_error(ArgumentError, "Buffer class is NilClass but must be String")
|
|
325
|
-
end
|
|
326
|
-
|
|
327
|
-
it "should log an invalid sized buffer" do
|
|
328
|
-
capture_io do |stdout|
|
|
329
|
-
buffer = "\x01\x02\x03\x04\x05"
|
|
330
|
-
@tlm.update!("TGT1","PKT1",buffer)
|
|
331
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
332
|
-
pkt.enable_method_missing
|
|
333
|
-
pkt.item1.should eql 1
|
|
334
|
-
pkt.item2.should eql 2
|
|
335
|
-
pkt.item3.should eql 6.0
|
|
336
|
-
pkt.item4.should eql 8.0
|
|
337
|
-
stdout.string.should match(/ERROR: TGT1 PKT1 received with actual packet length of 5 but defined length of 4/)
|
|
338
|
-
end
|
|
339
|
-
end
|
|
340
|
-
|
|
341
|
-
it "should update a packet with the given data" do
|
|
342
|
-
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
343
|
-
pkt = @tlm.packet("TGT1","PKT1")
|
|
344
|
-
pkt.enable_method_missing
|
|
345
|
-
pkt.item1.should eql 1
|
|
346
|
-
pkt.item2.should eql 2
|
|
347
|
-
pkt.item3.should eql 6.0
|
|
348
|
-
pkt.item4.should eql 8.0
|
|
349
|
-
end
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
describe "limits_change_callback" do
|
|
353
|
-
it "should assign a callback to each packet" do
|
|
354
|
-
callback = Object.new
|
|
355
|
-
expect(callback).to receive(:call).twice
|
|
356
|
-
@tlm.limits_change_callback = callback
|
|
357
|
-
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
358
|
-
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
359
|
-
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
360
|
-
@tlm.packet("TGT1","PKT1").check_limits
|
|
361
|
-
@tlm.packet("TGT1","PKT2").check_limits
|
|
362
|
-
@tlm.packet("TGT2","PKT1").check_limits
|
|
363
|
-
end
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
describe "check_stale" do
|
|
367
|
-
it "should check each packet for staleness" do
|
|
368
|
-
@tlm.check_stale
|
|
369
|
-
@tlm.packet("TGT1","PKT1").stale.should be_truthy
|
|
370
|
-
@tlm.packet("TGT1","PKT2").stale.should be_truthy
|
|
371
|
-
@tlm.packet("TGT2","PKT1").stale.should be_truthy
|
|
372
|
-
|
|
373
|
-
@tlm.packet("TGT1","PKT1").check_limits
|
|
374
|
-
@tlm.packet("TGT1","PKT2").check_limits
|
|
375
|
-
@tlm.packet("TGT2","PKT1").check_limits
|
|
376
|
-
@tlm.check_stale
|
|
377
|
-
@tlm.packet("TGT1","PKT1").stale.should be_falsey
|
|
378
|
-
@tlm.packet("TGT1","PKT2").stale.should be_falsey
|
|
379
|
-
@tlm.packet("TGT2","PKT1").stale.should be_falsey
|
|
380
|
-
end
|
|
381
|
-
end
|
|
382
|
-
|
|
383
|
-
describe "clear_counters" do
|
|
384
|
-
it "should clear each packet's receive count " do
|
|
385
|
-
@tlm.packet("TGT1","PKT1").received_count = 1
|
|
386
|
-
@tlm.packet("TGT1","PKT2").received_count = 2
|
|
387
|
-
@tlm.packet("TGT2","PKT1").received_count = 3
|
|
388
|
-
@tlm.clear_counters
|
|
389
|
-
@tlm.packet("TGT1","PKT1").received_count.should eql 0
|
|
390
|
-
@tlm.packet("TGT1","PKT2").received_count.should eql 0
|
|
391
|
-
@tlm.packet("TGT2","PKT1").received_count.should eql 0
|
|
392
|
-
end
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
describe "value" do
|
|
396
|
-
it "should complain about non-existant targets" do
|
|
397
|
-
expect { @tlm.value("TGTX","PKT1","ITEM1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
398
|
-
end
|
|
399
|
-
|
|
400
|
-
it "should complain about non-existant packets" do
|
|
401
|
-
expect { @tlm.value("TGT1","PKTX","ITEM1") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
402
|
-
end
|
|
403
|
-
|
|
404
|
-
it "should complain about non-existant items" do
|
|
405
|
-
expect { @tlm.value("TGT1","PKT1","ITEMX") }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
it "should return the value" do
|
|
409
|
-
@tlm.value("TGT1","PKT1","ITEM1").should eql 0
|
|
410
|
-
end
|
|
411
|
-
|
|
412
|
-
it "should return the value using LATEST" do
|
|
413
|
-
@tlm.value("TGT1","LATEST","ITEM1").should eql 0
|
|
414
|
-
end
|
|
415
|
-
end
|
|
416
|
-
|
|
417
|
-
describe "set_tlm" do
|
|
418
|
-
it "should complain about non-existant targets" do
|
|
419
|
-
expect { @tlm.set_value("TGTX","PKT1","ITEM1", 1) }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
it "should complain about non-existant packets" do
|
|
423
|
-
expect { @tlm.set_value("TGT1","PKTX","ITEM1", 1) }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
424
|
-
end
|
|
425
|
-
|
|
426
|
-
it "should complain about non-existant items" do
|
|
427
|
-
expect { @tlm.set_value("TGT1","PKT1","ITEMX", 1) }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
it "should set the value" do
|
|
431
|
-
@tlm.set_value("TGT1","PKT1","ITEM1",1)
|
|
432
|
-
@tlm.value("TGT1","PKT1","ITEM1").should eql 1
|
|
433
|
-
end
|
|
434
|
-
|
|
435
|
-
it "should set the value using LATEST" do
|
|
436
|
-
@tlm.set_value("TGT1","LATEST","ITEM1",1)
|
|
437
|
-
@tlm.value("TGT1","PKT1","ITEM1").should eql 0
|
|
438
|
-
@tlm.value("TGT1","PKT2","ITEM1").should eql 1
|
|
439
|
-
end
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
describe "values_and_limits_states" do
|
|
443
|
-
it "should complain about non-existant targets" do
|
|
444
|
-
expect { @tlm.values_and_limits_states([["TGTX","PKT1","ITEM1"]]) }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
445
|
-
end
|
|
446
|
-
|
|
447
|
-
it "should complain about non-existant packets" do
|
|
448
|
-
expect { @tlm.values_and_limits_states([["TGT1","PKTX","ITEM1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
449
|
-
end
|
|
450
|
-
|
|
451
|
-
it "should complain about non-existant items" do
|
|
452
|
-
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEMX"]]) }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
it "should complain about non-existant value_types" do
|
|
456
|
-
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEM1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
457
|
-
end
|
|
458
|
-
|
|
459
|
-
it "should complain if passed a single array" do
|
|
460
|
-
expect { @tlm.values_and_limits_states(["TGT1","PKT1","ITEM1"]) }.to raise_error(ArgumentError, /item_array must be a nested array/)
|
|
461
|
-
end
|
|
462
|
-
|
|
463
|
-
it "should complain about the wrong number of parameters" do
|
|
464
|
-
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEM1"]],:RAW,:RAW) }.to raise_error(ArgumentError, /wrong number of arguments/)
|
|
465
|
-
end
|
|
466
|
-
|
|
467
|
-
it "should read all the specified values" do
|
|
468
|
-
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
469
|
-
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
470
|
-
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
471
|
-
@tlm.packet("TGT1","PKT1").check_limits
|
|
472
|
-
@tlm.packet("TGT1","PKT2").check_limits
|
|
473
|
-
@tlm.packet("TGT2","PKT1").check_limits
|
|
474
|
-
items = []
|
|
475
|
-
items << %w(TGT1 PKT1 ITEM1)
|
|
476
|
-
items << %w(TGT1 PKT2 ITEM2)
|
|
477
|
-
items << %w(TGT2 PKT1 ITEM1)
|
|
478
|
-
vals = @tlm.values_and_limits_states(items)
|
|
479
|
-
vals[0][0].should eql 1
|
|
480
|
-
vals[0][1].should eql 6
|
|
481
|
-
vals[0][2].should eql 7
|
|
482
|
-
vals[1][0].should eql :RED_LOW
|
|
483
|
-
vals[1][1].should be_nil
|
|
484
|
-
vals[1][2].should be_nil
|
|
485
|
-
vals[2][0].should eql [1.0, 2.0, 4.0, 5.0]
|
|
486
|
-
vals[2][1].should be_nil
|
|
487
|
-
vals[2][2].should be_nil
|
|
488
|
-
end
|
|
489
|
-
|
|
490
|
-
it "should read all the specified values with specified value_types" do
|
|
491
|
-
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
492
|
-
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
493
|
-
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
494
|
-
@tlm.packet("TGT1","PKT1").check_limits
|
|
495
|
-
@tlm.packet("TGT1","PKT2").check_limits
|
|
496
|
-
@tlm.packet("TGT2","PKT1").check_limits
|
|
497
|
-
items = []
|
|
498
|
-
items << %w(TGT1 PKT1 ITEM1)
|
|
499
|
-
items << %w(TGT1 PKT1 ITEM2)
|
|
500
|
-
items << %w(TGT1 PKT1 ITEM3)
|
|
501
|
-
items << %w(TGT1 PKT1 ITEM4)
|
|
502
|
-
items << %w(TGT1 PKT2 ITEM2)
|
|
503
|
-
items << %w(TGT2 PKT1 ITEM1)
|
|
504
|
-
formats = [:CONVERTED, :RAW, :CONVERTED, :RAW, :CONVERTED, :CONVERTED]
|
|
505
|
-
vals = @tlm.values_and_limits_states(items,formats)
|
|
506
|
-
vals[0][0].should eql 1
|
|
507
|
-
vals[0][1].should eql 2
|
|
508
|
-
vals[0][2].should eql 6.0
|
|
509
|
-
vals[0][3].should eql 4
|
|
510
|
-
vals[0][4].should eql 6
|
|
511
|
-
vals[0][5].should eql 7
|
|
512
|
-
vals[1][0].should eql :RED_LOW
|
|
513
|
-
vals[1][1].should eql :YELLOW_LOW
|
|
514
|
-
vals[1][2].should be_nil
|
|
515
|
-
vals[1][3].should be_nil
|
|
516
|
-
vals[1][4].should be_nil
|
|
517
|
-
vals[1][5].should be_nil
|
|
518
|
-
vals[2][0].should eql [1.0, 2.0, 4.0, 5.0]
|
|
519
|
-
vals[2][1].should eql [1.0, 2.0, 4.0, 5.0]
|
|
520
|
-
vals[2][2].should be_nil
|
|
521
|
-
vals[2][3].should be_nil
|
|
522
|
-
vals[2][4].should be_nil
|
|
523
|
-
vals[2][5].should be_nil
|
|
524
|
-
end
|
|
525
|
-
end
|
|
526
|
-
|
|
527
|
-
describe "all" do
|
|
528
|
-
it "should return all packets" do
|
|
529
|
-
@tlm.all.keys.should eql %w(UNKNOWN TGT1 TGT2)
|
|
530
|
-
end
|
|
531
|
-
end
|
|
532
|
-
|
|
533
|
-
end
|
|
534
|
-
end
|
|
535
|
-
|
|
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/packets/telemetry'
|
|
14
|
+
require 'tempfile'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
|
|
18
|
+
describe Telemetry do
|
|
19
|
+
|
|
20
|
+
describe "initialize" do
|
|
21
|
+
it "should have no warnings" do
|
|
22
|
+
Telemetry.new(PacketConfig.new).warnings.should be_empty
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
before(:each) do
|
|
27
|
+
tf = Tempfile.new('unittest')
|
|
28
|
+
tf.puts '# This is a comment'
|
|
29
|
+
tf.puts '#'
|
|
30
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "TGT1 PKT1 Description"'
|
|
31
|
+
tf.puts ' APPEND_ID_ITEM item1 8 UINT 1 "Item1"'
|
|
32
|
+
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 4 5'
|
|
33
|
+
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
34
|
+
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 4 5'
|
|
35
|
+
tf.puts ' APPEND_ITEM item3 8 UINT "Item3"'
|
|
36
|
+
tf.puts ' POLY_READ_CONVERSION 0 2'
|
|
37
|
+
tf.puts ' APPEND_ITEM item4 8 UINT "Item4"'
|
|
38
|
+
tf.puts ' POLY_READ_CONVERSION 0 2'
|
|
39
|
+
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "TGT1 PKT2 Description"'
|
|
40
|
+
tf.puts ' APPEND_ID_ITEM item1 8 UINT 2 "Item1"'
|
|
41
|
+
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
42
|
+
tf.puts 'TELEMETRY tgt2 pkt1 LITTLE_ENDIAN "TGT2 PKT1 Description"'
|
|
43
|
+
tf.puts ' APPEND_ID_ITEM item1 8 UINT 3 "Item1"'
|
|
44
|
+
tf.puts ' APPEND_ITEM item2 8 UINT "Item2"'
|
|
45
|
+
tf.close
|
|
46
|
+
|
|
47
|
+
pc = PacketConfig.new
|
|
48
|
+
pc.process_file(tf.path, "SYSTEM")
|
|
49
|
+
@tlm = Telemetry.new(pc)
|
|
50
|
+
tf.unlink
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "target_names" do
|
|
54
|
+
it "should return an array with just UNKNOWN if no targets" do
|
|
55
|
+
Telemetry.new(PacketConfig.new).target_names.should eql ["UNKNOWN"]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should return all target names" do
|
|
59
|
+
@tlm.target_names.should eql ["TGT1","TGT2","UNKNOWN"]
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "packets" do
|
|
64
|
+
it "should complain about non-existant targets" do
|
|
65
|
+
expect { @tlm.packets("tgtX") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should return all packets target TGT1" do
|
|
69
|
+
pkts = @tlm.packets("TGT1")
|
|
70
|
+
pkts.length.should eql 2
|
|
71
|
+
pkts.keys.should include("PKT1")
|
|
72
|
+
pkts.keys.should include("PKT2")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "should return all packets target TGT2" do
|
|
76
|
+
pkts = @tlm.packets("TGT2")
|
|
77
|
+
pkts.length.should eql 1
|
|
78
|
+
pkts.keys.should include("PKT1")
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe "packet" do
|
|
83
|
+
it "should complain about non-existant targets" do
|
|
84
|
+
expect { @tlm.packet("tgtX","pkt1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should complain about non-existant packets" do
|
|
88
|
+
expect { @tlm.packet("TGT1","PKTX") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "should complain about the 'LATEST' packet" do
|
|
92
|
+
expect { @tlm.packet("TGT1","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "should return the specified packet" do
|
|
96
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
97
|
+
pkt.target_name.should eql "TGT1"
|
|
98
|
+
pkt.packet_name.should eql "PKT1"
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe "items" do
|
|
103
|
+
it "should complain about non-existant targets" do
|
|
104
|
+
expect { @tlm.items("tgtX","pkt1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should complain about non-existant packets" do
|
|
108
|
+
expect { @tlm.items("TGT1","PKTX") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "should complain about the 'LATEST' packet" do
|
|
112
|
+
expect { @tlm.items("TGT1","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "should return all items from packet TGT1/PKT1" do
|
|
116
|
+
items = @tlm.items("TGT1","PKT1")
|
|
117
|
+
items.length.should eql 7
|
|
118
|
+
items[0].name.should eql "RECEIVED_TIMESECONDS"
|
|
119
|
+
items[1].name.should eql "RECEIVED_TIMEFORMATTED"
|
|
120
|
+
items[2].name.should eql "RECEIVED_COUNT"
|
|
121
|
+
items[3].name.should eql "ITEM1"
|
|
122
|
+
items[4].name.should eql "ITEM2"
|
|
123
|
+
items[5].name.should eql "ITEM3"
|
|
124
|
+
items[6].name.should eql "ITEM4"
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
describe "item_names" do
|
|
129
|
+
it "should return all the items for a given target and packet" do
|
|
130
|
+
items = @tlm.item_names("TGT1","PKT1")
|
|
131
|
+
expect(items).to contain_exactly('RECEIVED_TIMEFORMATTED','RECEIVED_TIMESECONDS','RECEIVED_COUNT','ITEM1','ITEM2','ITEM3','ITEM4')
|
|
132
|
+
|
|
133
|
+
items = @tlm.item_names("TGT1","LATEST")
|
|
134
|
+
expect(items).to contain_exactly('ITEM1','ITEM2','ITEM3','ITEM4')
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe "packet_and_item" do
|
|
139
|
+
it "should complain about non-existant targets" do
|
|
140
|
+
expect { @tlm.packet_and_item("tgtX","pkt1","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "should complain about non-existant packets" do
|
|
144
|
+
expect { @tlm.packet_and_item("TGT1","PKTX","ITEM1") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "should complain about non-existant items" do
|
|
148
|
+
expect { @tlm.packet_and_item("TGT1","PKT1","ITEMX") }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "should return the packet and item" do
|
|
152
|
+
pkt,item = @tlm.packet_and_item("TGT1","PKT1","ITEM1")
|
|
153
|
+
item.name.should eql "ITEM1"
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it "should return the LATEST packet and item if it exists" do
|
|
157
|
+
pkt,item = @tlm.packet_and_item("TGT1","LATEST","ITEM1")
|
|
158
|
+
pkt.packet_name.should eql "PKT2"
|
|
159
|
+
item.name.should eql "ITEM1"
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe "latest_packets" do
|
|
164
|
+
it "should complain about non-existant targets" do
|
|
165
|
+
expect { @tlm.latest_packets("tgtX","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "should complain about non-existant items" do
|
|
169
|
+
expect { @tlm.latest_packets("TGT1","ITEMX") }.to raise_error(RuntimeError, "Telemetry item 'TGT1 LATEST ITEMX' does not exist")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "should return the packets that contain the item" do
|
|
173
|
+
pkts = @tlm.latest_packets("TGT1","ITEM1")
|
|
174
|
+
pkts.length.should eql 2
|
|
175
|
+
pkts[0].packet_name.should eql "PKT1"
|
|
176
|
+
pkts[1].packet_name.should eql "PKT2"
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
describe "newest_packet" do
|
|
181
|
+
it "should complain about non-existant targets" do
|
|
182
|
+
expect { @tlm.newest_packet("tgtX","item1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it "should complain about non-existant items" do
|
|
186
|
+
expect { @tlm.newest_packet("TGT1","ITEMX") }.to raise_error(RuntimeError, "Telemetry item 'TGT1 LATEST ITEMX' does not exist")
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
context "with two valid timestamps" do
|
|
190
|
+
it "should return the latest packet (PKT1)" do
|
|
191
|
+
time = Time.now
|
|
192
|
+
@tlm.packet("TGT1","PKT1").received_time = time + 1
|
|
193
|
+
@tlm.packet("TGT1","PKT2").received_time = time
|
|
194
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
195
|
+
pkt.packet_name.should eql "PKT1"
|
|
196
|
+
pkt.received_time.should eql(time + 1)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it "should return the latest packet (PKT2)" do
|
|
200
|
+
time = Time.now
|
|
201
|
+
@tlm.packet("TGT1","PKT1").received_time = time
|
|
202
|
+
@tlm.packet("TGT1","PKT2").received_time = time + 1
|
|
203
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
204
|
+
pkt.packet_name.should eql "PKT2"
|
|
205
|
+
pkt.received_time.should eql(time + 1)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it "should return the last packet if timestamps are equal" do
|
|
209
|
+
time = Time.now
|
|
210
|
+
@tlm.packet("TGT1","PKT1").received_time = time
|
|
211
|
+
@tlm.packet("TGT1","PKT2").received_time = time
|
|
212
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
213
|
+
pkt.packet_name.should eql "PKT2"
|
|
214
|
+
pkt.received_time.should eql(time)
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
context "with one or more nil timestamps" do
|
|
219
|
+
it "should return the last packet if neither has a timestamp" do
|
|
220
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
221
|
+
pkt.packet_name.should eql "PKT2"
|
|
222
|
+
pkt.received_time.should be_nil
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
it "should return the packet with a timestamp (PKT1)" do
|
|
226
|
+
time = Time.now
|
|
227
|
+
@tlm.packet("TGT1","PKT1").received_time = time
|
|
228
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
229
|
+
pkt.packet_name.should eql "PKT1"
|
|
230
|
+
pkt.received_time.should eql time
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
it "should return the packet with a timestamp (PKT2)" do
|
|
234
|
+
time = Time.now
|
|
235
|
+
@tlm.packet("TGT1","PKT2").received_time = time
|
|
236
|
+
pkt = @tlm.newest_packet("TGT1","ITEM1")
|
|
237
|
+
pkt.packet_name.should eql "PKT2"
|
|
238
|
+
pkt.received_time.should eql time
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
describe "identify!" do
|
|
244
|
+
it "should return nil with a nil buffer" do
|
|
245
|
+
@tlm.identify!(nil).should be_nil
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "should only check the targets given" do
|
|
249
|
+
buffer = "\x01\x02\x03\x04"
|
|
250
|
+
@tlm.identify!(buffer,["TGT1"])
|
|
251
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
252
|
+
pkt.enable_method_missing
|
|
253
|
+
pkt.item1.should eql 1
|
|
254
|
+
pkt.item2.should eql 2
|
|
255
|
+
pkt.item3.should eql 6.0
|
|
256
|
+
pkt.item4.should eql 8.0
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
it "should return nil with unknown targets given" do
|
|
260
|
+
buffer = "\x01\x02\x03\x04"
|
|
261
|
+
@tlm.identify!(buffer,["TGTX"]).should be_nil
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
context "with an unknown buffer" do
|
|
265
|
+
it "should log an invalid sized buffer" do
|
|
266
|
+
capture_io do |stdout|
|
|
267
|
+
buffer = "\x01\x02\x03\x04\x05"
|
|
268
|
+
@tlm.identify!(buffer)
|
|
269
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
270
|
+
pkt.enable_method_missing
|
|
271
|
+
pkt.item1.should eql 1
|
|
272
|
+
pkt.item2.should eql 2
|
|
273
|
+
pkt.item3.should eql 6.0
|
|
274
|
+
pkt.item4.should eql 8.0
|
|
275
|
+
stdout.string.should match(/ERROR: TGT1 PKT1 received with actual packet length of 5 but defined length of 4/)
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
it "should identify TGT1 PKT1" do
|
|
280
|
+
buffer = "\x01\x02\x03\x04"
|
|
281
|
+
@tlm.identify!(buffer)
|
|
282
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
283
|
+
pkt.enable_method_missing
|
|
284
|
+
pkt.item1.should eql 1
|
|
285
|
+
pkt.item2.should eql 2
|
|
286
|
+
pkt.item3.should eql 6.0
|
|
287
|
+
pkt.item4.should eql 8.0
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
it "should identify TGT1 PKT2" do
|
|
291
|
+
buffer = "\x02\x02"
|
|
292
|
+
@tlm.identify!(buffer)
|
|
293
|
+
pkt = @tlm.packet("TGT1","PKT2")
|
|
294
|
+
pkt.enable_method_missing
|
|
295
|
+
pkt.item1.should eql 2
|
|
296
|
+
pkt.item2.should eql 2
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
it "should identify TGT2 PKT1" do
|
|
300
|
+
buffer = "\x03\x02"
|
|
301
|
+
@tlm.identify!(buffer)
|
|
302
|
+
pkt = @tlm.packet("TGT2","PKT1")
|
|
303
|
+
pkt.enable_method_missing
|
|
304
|
+
pkt.item1.should eql 3
|
|
305
|
+
pkt.item2.should eql 2
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
describe "update!" do
|
|
311
|
+
it "should complain about non-existant targets" do
|
|
312
|
+
expect { @tlm.update!("TGTX","PKT1","\x00") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
it "should complain about non-existant packets" do
|
|
316
|
+
expect { @tlm.update!("TGT1","PKTX","\x00") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
it "should complain about the 'LATEST' packet" do
|
|
320
|
+
expect { @tlm.update!("TGT1","LATEST","\x00") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 LATEST' does not exist")
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
it "should complain with a nil buffer" do
|
|
324
|
+
expect { @tlm.update!("TGT1","PKT1",nil) }.to raise_error(ArgumentError, "Buffer class is NilClass but must be String")
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
it "should log an invalid sized buffer" do
|
|
328
|
+
capture_io do |stdout|
|
|
329
|
+
buffer = "\x01\x02\x03\x04\x05"
|
|
330
|
+
@tlm.update!("TGT1","PKT1",buffer)
|
|
331
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
332
|
+
pkt.enable_method_missing
|
|
333
|
+
pkt.item1.should eql 1
|
|
334
|
+
pkt.item2.should eql 2
|
|
335
|
+
pkt.item3.should eql 6.0
|
|
336
|
+
pkt.item4.should eql 8.0
|
|
337
|
+
stdout.string.should match(/ERROR: TGT1 PKT1 received with actual packet length of 5 but defined length of 4/)
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
it "should update a packet with the given data" do
|
|
342
|
+
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
343
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
344
|
+
pkt.enable_method_missing
|
|
345
|
+
pkt.item1.should eql 1
|
|
346
|
+
pkt.item2.should eql 2
|
|
347
|
+
pkt.item3.should eql 6.0
|
|
348
|
+
pkt.item4.should eql 8.0
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
describe "limits_change_callback" do
|
|
353
|
+
it "should assign a callback to each packet" do
|
|
354
|
+
callback = Object.new
|
|
355
|
+
expect(callback).to receive(:call).twice
|
|
356
|
+
@tlm.limits_change_callback = callback
|
|
357
|
+
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
358
|
+
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
359
|
+
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
360
|
+
@tlm.packet("TGT1","PKT1").check_limits
|
|
361
|
+
@tlm.packet("TGT1","PKT2").check_limits
|
|
362
|
+
@tlm.packet("TGT2","PKT1").check_limits
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
describe "check_stale" do
|
|
367
|
+
it "should check each packet for staleness" do
|
|
368
|
+
@tlm.check_stale
|
|
369
|
+
@tlm.packet("TGT1","PKT1").stale.should be_truthy
|
|
370
|
+
@tlm.packet("TGT1","PKT2").stale.should be_truthy
|
|
371
|
+
@tlm.packet("TGT2","PKT1").stale.should be_truthy
|
|
372
|
+
|
|
373
|
+
@tlm.packet("TGT1","PKT1").check_limits
|
|
374
|
+
@tlm.packet("TGT1","PKT2").check_limits
|
|
375
|
+
@tlm.packet("TGT2","PKT1").check_limits
|
|
376
|
+
@tlm.check_stale
|
|
377
|
+
@tlm.packet("TGT1","PKT1").stale.should be_falsey
|
|
378
|
+
@tlm.packet("TGT1","PKT2").stale.should be_falsey
|
|
379
|
+
@tlm.packet("TGT2","PKT1").stale.should be_falsey
|
|
380
|
+
end
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
describe "clear_counters" do
|
|
384
|
+
it "should clear each packet's receive count " do
|
|
385
|
+
@tlm.packet("TGT1","PKT1").received_count = 1
|
|
386
|
+
@tlm.packet("TGT1","PKT2").received_count = 2
|
|
387
|
+
@tlm.packet("TGT2","PKT1").received_count = 3
|
|
388
|
+
@tlm.clear_counters
|
|
389
|
+
@tlm.packet("TGT1","PKT1").received_count.should eql 0
|
|
390
|
+
@tlm.packet("TGT1","PKT2").received_count.should eql 0
|
|
391
|
+
@tlm.packet("TGT2","PKT1").received_count.should eql 0
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
describe "value" do
|
|
396
|
+
it "should complain about non-existant targets" do
|
|
397
|
+
expect { @tlm.value("TGTX","PKT1","ITEM1") }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it "should complain about non-existant packets" do
|
|
401
|
+
expect { @tlm.value("TGT1","PKTX","ITEM1") }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
it "should complain about non-existant items" do
|
|
405
|
+
expect { @tlm.value("TGT1","PKT1","ITEMX") }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
it "should return the value" do
|
|
409
|
+
@tlm.value("TGT1","PKT1","ITEM1").should eql 0
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
it "should return the value using LATEST" do
|
|
413
|
+
@tlm.value("TGT1","LATEST","ITEM1").should eql 0
|
|
414
|
+
end
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
describe "set_tlm" do
|
|
418
|
+
it "should complain about non-existant targets" do
|
|
419
|
+
expect { @tlm.set_value("TGTX","PKT1","ITEM1", 1) }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
it "should complain about non-existant packets" do
|
|
423
|
+
expect { @tlm.set_value("TGT1","PKTX","ITEM1", 1) }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
it "should complain about non-existant items" do
|
|
427
|
+
expect { @tlm.set_value("TGT1","PKT1","ITEMX", 1) }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
it "should set the value" do
|
|
431
|
+
@tlm.set_value("TGT1","PKT1","ITEM1",1)
|
|
432
|
+
@tlm.value("TGT1","PKT1","ITEM1").should eql 1
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
it "should set the value using LATEST" do
|
|
436
|
+
@tlm.set_value("TGT1","LATEST","ITEM1",1)
|
|
437
|
+
@tlm.value("TGT1","PKT1","ITEM1").should eql 0
|
|
438
|
+
@tlm.value("TGT1","PKT2","ITEM1").should eql 1
|
|
439
|
+
end
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
describe "values_and_limits_states" do
|
|
443
|
+
it "should complain about non-existant targets" do
|
|
444
|
+
expect { @tlm.values_and_limits_states([["TGTX","PKT1","ITEM1"]]) }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
it "should complain about non-existant packets" do
|
|
448
|
+
expect { @tlm.values_and_limits_states([["TGT1","PKTX","ITEM1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'TGT1 PKTX' does not exist")
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
it "should complain about non-existant items" do
|
|
452
|
+
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEMX"]]) }.to raise_error(RuntimeError, "Packet item 'TGT1 PKT1 ITEMX' does not exist")
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it "should complain about non-existant value_types" do
|
|
456
|
+
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEM1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
it "should complain if passed a single array" do
|
|
460
|
+
expect { @tlm.values_and_limits_states(["TGT1","PKT1","ITEM1"]) }.to raise_error(ArgumentError, /item_array must be a nested array/)
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
it "should complain about the wrong number of parameters" do
|
|
464
|
+
expect { @tlm.values_and_limits_states([["TGT1","PKT1","ITEM1"]],:RAW,:RAW) }.to raise_error(ArgumentError, /wrong number of arguments/)
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
it "should read all the specified values" do
|
|
468
|
+
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
469
|
+
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
470
|
+
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
471
|
+
@tlm.packet("TGT1","PKT1").check_limits
|
|
472
|
+
@tlm.packet("TGT1","PKT2").check_limits
|
|
473
|
+
@tlm.packet("TGT2","PKT1").check_limits
|
|
474
|
+
items = []
|
|
475
|
+
items << %w(TGT1 PKT1 ITEM1)
|
|
476
|
+
items << %w(TGT1 PKT2 ITEM2)
|
|
477
|
+
items << %w(TGT2 PKT1 ITEM1)
|
|
478
|
+
vals = @tlm.values_and_limits_states(items)
|
|
479
|
+
vals[0][0].should eql 1
|
|
480
|
+
vals[0][1].should eql 6
|
|
481
|
+
vals[0][2].should eql 7
|
|
482
|
+
vals[1][0].should eql :RED_LOW
|
|
483
|
+
vals[1][1].should be_nil
|
|
484
|
+
vals[1][2].should be_nil
|
|
485
|
+
vals[2][0].should eql [1.0, 2.0, 4.0, 5.0]
|
|
486
|
+
vals[2][1].should be_nil
|
|
487
|
+
vals[2][2].should be_nil
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
it "should read all the specified values with specified value_types" do
|
|
491
|
+
@tlm.update!("TGT1","PKT1","\x01\x02\x03\x04")
|
|
492
|
+
@tlm.update!("TGT1","PKT2","\x05\x06")
|
|
493
|
+
@tlm.update!("TGT2","PKT1","\x07\x08")
|
|
494
|
+
@tlm.packet("TGT1","PKT1").check_limits
|
|
495
|
+
@tlm.packet("TGT1","PKT2").check_limits
|
|
496
|
+
@tlm.packet("TGT2","PKT1").check_limits
|
|
497
|
+
items = []
|
|
498
|
+
items << %w(TGT1 PKT1 ITEM1)
|
|
499
|
+
items << %w(TGT1 PKT1 ITEM2)
|
|
500
|
+
items << %w(TGT1 PKT1 ITEM3)
|
|
501
|
+
items << %w(TGT1 PKT1 ITEM4)
|
|
502
|
+
items << %w(TGT1 PKT2 ITEM2)
|
|
503
|
+
items << %w(TGT2 PKT1 ITEM1)
|
|
504
|
+
formats = [:CONVERTED, :RAW, :CONVERTED, :RAW, :CONVERTED, :CONVERTED]
|
|
505
|
+
vals = @tlm.values_and_limits_states(items,formats)
|
|
506
|
+
vals[0][0].should eql 1
|
|
507
|
+
vals[0][1].should eql 2
|
|
508
|
+
vals[0][2].should eql 6.0
|
|
509
|
+
vals[0][3].should eql 4
|
|
510
|
+
vals[0][4].should eql 6
|
|
511
|
+
vals[0][5].should eql 7
|
|
512
|
+
vals[1][0].should eql :RED_LOW
|
|
513
|
+
vals[1][1].should eql :YELLOW_LOW
|
|
514
|
+
vals[1][2].should be_nil
|
|
515
|
+
vals[1][3].should be_nil
|
|
516
|
+
vals[1][4].should be_nil
|
|
517
|
+
vals[1][5].should be_nil
|
|
518
|
+
vals[2][0].should eql [1.0, 2.0, 4.0, 5.0]
|
|
519
|
+
vals[2][1].should eql [1.0, 2.0, 4.0, 5.0]
|
|
520
|
+
vals[2][2].should be_nil
|
|
521
|
+
vals[2][3].should be_nil
|
|
522
|
+
vals[2][4].should be_nil
|
|
523
|
+
vals[2][5].should be_nil
|
|
524
|
+
end
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
describe "all" do
|
|
528
|
+
it "should return all packets" do
|
|
529
|
+
@tlm.all.keys.should eql %w(UNKNOWN TGT1 TGT2)
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
end
|
|
534
|
+
end
|
|
535
|
+
|