cosmos 3.5.1 → 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -1
- data/.gitattributes +3 -3
- data/.gitignore +48 -48
- data/.travis.yml +8 -8
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +10 -10
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1414 -1414
- data/README.md +111 -111
- data/Rakefile +218 -214
- data/autohotkey/config/data/diamond.STL +57 -57
- data/autohotkey/config/system/system.txt +34 -34
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/autohotkey/config/targets/COSMOS/target.txt +5 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -270
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -305
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
- data/autohotkey/config/targets/INST/screens/array.txt +7 -7
- data/autohotkey/config/targets/INST/screens/block.txt +8 -8
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
- data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
- data/autohotkey/config/targets/INST/screens/image.txt +21 -21
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
- data/autohotkey/config/targets/INST/screens/other.txt +25 -25
- data/autohotkey/config/targets/INST/screens/params.txt +25 -25
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
- data/autohotkey/config/targets/INST/target.txt +26 -26
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/autohotkey/config/tools/launcher/launcher.txt +38 -38
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
- data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
- data/autohotkey/lib/example_background_task.rb +42 -42
- data/autohotkey/lib/user_version.rb +3 -3
- data/autohotkey/procedures/clear_util.rb +7 -7
- data/autohotkey/procedures/collect_util.rb +14 -14
- data/autohotkey/procedures/example_test.rb +67 -67
- data/autohotkey/procedures/example_test2.rb +74 -74
- data/autohotkey/procedures/script_test.rb +17 -17
- data/autohotkey/procedures/syntax_error.rb +18 -18
- data/autohotkey/tools/CmdExtractorAHK +16 -16
- data/autohotkey/tools/CmdSender +14 -14
- data/autohotkey/tools/CmdSenderAHK +18 -18
- data/autohotkey/tools/CmdTlmServer +14 -14
- data/autohotkey/tools/CmdTlmServerAHK +28 -28
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
- data/autohotkey/tools/DataViewer +14 -14
- data/autohotkey/tools/DataViewerAHK +17 -17
- data/autohotkey/tools/HandbookCreatorAHK +20 -20
- data/autohotkey/tools/LauncherAHK +17 -17
- data/autohotkey/tools/LimitsMonitorAHK +20 -20
- data/autohotkey/tools/OpenGLBuilderAHK +24 -24
- data/autohotkey/tools/PacketViewer +14 -14
- data/autohotkey/tools/PacketViewerAHK +18 -18
- data/autohotkey/tools/PacketViewerAHK2 +17 -17
- data/autohotkey/tools/Replay +14 -14
- data/autohotkey/tools/ReplayAHK +17 -17
- data/autohotkey/tools/ScriptRunner +14 -14
- data/autohotkey/tools/ScriptRunnerAHK +20 -20
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
- data/autohotkey/tools/TableManager +14 -14
- data/autohotkey/tools/TableManagerAHK +30 -30
- data/autohotkey/tools/TestRunner +15 -15
- data/autohotkey/tools/TestRunnerAHK +17 -17
- data/autohotkey/tools/TestRunnerAHK2 +17 -17
- data/autohotkey/tools/TestRunnerAHK3 +17 -17
- data/autohotkey/tools/TestRunnerAHK4 +17 -17
- data/autohotkey/tools/TestRunnerAHK5 +17 -17
- data/autohotkey/tools/TestRunnerAHK6 +17 -17
- data/autohotkey/tools/TlmExtractor +15 -15
- data/autohotkey/tools/TlmExtractorAHK +19 -19
- data/autohotkey/tools/TlmExtractorAHK2 +16 -16
- data/autohotkey/tools/TlmExtractorAHK3 +16 -16
- data/autohotkey/tools/TlmGrapher +14 -14
- data/autohotkey/tools/TlmGrapherAHK +19 -19
- data/autohotkey/tools/TlmGrapherAHK2 +23 -23
- data/autohotkey/tools/TlmGrapherAHK3 +17 -17
- data/autohotkey/tools/TlmGrapherAHK4 +17 -17
- data/autohotkey/tools/TlmViewer +14 -14
- data/autohotkey/tools/TlmViewerAHK +28 -28
- data/autohotkey/tools/TlmViewerAHK2 +22 -22
- data/autohotkey/tools/TlmViewerAHK3 +23 -23
- data/autohotkey/tools/TlmViewerAHK4 +22 -22
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +33 -33
- data/autohotkey/tools/cmd_sender.ahk +182 -182
- data/autohotkey/tools/cmd_tlm_server.ahk +90 -90
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +141 -141
- data/autohotkey/tools/handbook_creator.ahk +32 -32
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +123 -123
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +196 -196
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +104 -104
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +38 -38
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -262
- data/autohotkey/tools/test_runner2.ahk +53 -53
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/test_runner5.ahk +8 -8
- data/autohotkey/tools/test_runner6.ahk +5 -5
- data/autohotkey/tools/tlm_extractor.ahk +296 -296
- data/autohotkey/tools/tlm_grapher.ahk +660 -660
- data/autohotkey/tools/tlm_grapher2.ahk +115 -115
- data/autohotkey/tools/tlm_grapher3.ahk +24 -24
- data/autohotkey/tools/tlm_viewer.ahk +133 -133
- data/autohotkey/tools/tlm_viewer2.ahk +50 -50
- data/autohotkey/tools/tlm_viewer4.ahk +4 -4
- data/autohotkey/tools/tlm_viewer5.ahk +20 -20
- data/bin/cosmos +96 -96
- data/bin/cstol_converter +1166 -1166
- data/bin/rubysloc +85 -85
- data/cosmos.gemspec +99 -99
- data/data/about.txt +4 -4
- data/data/crc.txt +326 -326
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +10 -10
- data/demo/Launcher +16 -16
- data/demo/Launcher.bat +0 -0
- data/demo/Rakefile +77 -77
- data/demo/config/data/crc.txt +224 -226
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +35 -35
- data/demo/config/system/system2.txt +33 -33
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/demo/config/targets/COSMOS/screens/version.txt +19 -19
- data/demo/config/targets/COSMOS/target.txt +11 -11
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -5
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
- data/demo/config/targets/EXAMPLE/target.txt +6 -6
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/demo/config/targets/INST/lib/sim_inst.rb +305 -305
- data/demo/config/targets/INST/screens/adcs.txt +46 -46
- data/demo/config/targets/INST/screens/array.txt +15 -15
- data/demo/config/targets/INST/screens/block.txt +8 -8
- data/demo/config/targets/INST/screens/commanding.txt +30 -30
- data/demo/config/targets/INST/screens/graphs.txt +14 -14
- data/demo/config/targets/INST/screens/ground.txt +25 -25
- data/demo/config/targets/INST/screens/hs.txt +44 -44
- data/demo/config/targets/INST/screens/latest.txt +23 -23
- data/demo/config/targets/INST/screens/other.txt +29 -29
- data/demo/config/targets/INST/screens/tabs.txt +70 -70
- data/demo/config/targets/INST/target.txt +33 -33
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -13
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +56 -56
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +39 -39
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +34 -34
- data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -88
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -82
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/demo/config/tools/launcher/launcher.txt +45 -45
- data/demo/config/tools/launcher/launcher2.txt +45 -45
- data/demo/config/tools/script_runner/script_runner.txt +3 -3
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/demo/config/tools/test_runner/test_runner.txt +17 -17
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
- data/demo/lib/example_background_task.rb +57 -57
- data/demo/lib/example_target.rb +113 -113
- data/demo/lib/scpi_target.rb +74 -74
- data/demo/lib/user_version.rb +3 -3
- data/demo/procedures/checks.rb +11 -11
- data/demo/procedures/clear_util.rb +7 -7
- data/demo/procedures/collect.rb +18 -18
- data/demo/procedures/collect_util.rb +14 -14
- data/demo/procedures/cosmos_api_test.rb +293 -293
- data/demo/procedures/disconnect.rb +29 -29
- data/demo/procedures/example_test.rb +183 -183
- data/demo/procedures/plot_test.rb +8 -8
- data/demo/procedures/run_example_test.rb +3 -3
- data/demo/procedures/test.rb +51 -51
- data/demo/tools/CmdExtractor +16 -16
- data/demo/tools/CmdExtractor.bat +0 -0
- data/demo/tools/CmdSender +16 -16
- data/demo/tools/CmdSender.bat +0 -0
- data/demo/tools/CmdTlmServer +16 -16
- data/demo/tools/CmdTlmServer.bat +0 -0
- data/demo/tools/DataViewer +16 -16
- data/demo/tools/DataViewer.bat +0 -0
- data/demo/tools/ExampleTarget +16 -16
- data/demo/tools/ExampleTarget.bat +0 -0
- data/demo/tools/HandbookCreator +16 -16
- data/demo/tools/HandbookCreator.bat +0 -0
- data/demo/tools/Launcher +16 -16
- data/demo/tools/Launcher.bat +0 -0
- data/demo/tools/LimitsMonitor +16 -16
- data/demo/tools/LimitsMonitor.bat +0 -0
- data/demo/tools/OpenGLBuilder +16 -16
- data/demo/tools/OpenGLBuilder.bat +0 -0
- data/demo/tools/PacketViewer +16 -16
- data/demo/tools/PacketViewer.bat +0 -0
- data/demo/tools/Replay +16 -16
- data/demo/tools/Replay.bat +0 -0
- data/demo/tools/ScpiTarget +16 -16
- data/demo/tools/ScpiTarget.bat +0 -0
- data/demo/tools/ScriptRunner +16 -16
- data/demo/tools/ScriptRunner.bat +0 -0
- data/demo/tools/TableManager +16 -16
- data/demo/tools/TableManager.bat +0 -0
- data/demo/tools/TestRunner +16 -16
- data/demo/tools/TestRunner.bat +0 -0
- data/demo/tools/TlmExtractor +16 -16
- data/demo/tools/TlmExtractor.bat +0 -0
- data/demo/tools/TlmGrapher +16 -16
- data/demo/tools/TlmGrapher.bat +0 -0
- data/demo/tools/TlmViewer +16 -16
- data/demo/tools/TlmViewer.bat +0 -0
- data/demo/tools/ToolLaunch.bat +14 -5
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/demo/tools/tool_launch.rb +38 -38
- data/ext/cosmos/ext/array/array.c +111 -111
- data/ext/cosmos/ext/array/extconf.rb +13 -13
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
- data/ext/cosmos/ext/crc/crc.c +341 -341
- data/ext/cosmos/ext/crc/extconf.rb +12 -12
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -265
- data/ext/cosmos/ext/packet/extconf.rb +13 -13
- data/ext/cosmos/ext/packet/packet.c +339 -339
- data/ext/cosmos/ext/platform/extconf.rb +13 -13
- data/ext/cosmos/ext/platform/platform.c +101 -101
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
- data/ext/cosmos/ext/string/extconf.rb +13 -13
- data/ext/cosmos/ext/string/string.c +49 -49
- data/ext/cosmos/ext/structure/structure.c +1428 -1428
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
- data/ext/cosmos/ext/telemetry/telemetry.c +307 -307
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +10 -10
- data/install/Launcher +16 -16
- data/install/Launcher.bat +0 -0
- data/install/Rakefile +77 -77
- data/install/config/data/crc.txt +151 -151
- data/install/config/system/system.txt +29 -29
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/install/config/targets/COSMOS/target.txt +8 -8
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/install/config/tools/data_viewer/data_viewer.txt +3 -3
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/install/config/tools/launcher/launcher.txt +40 -40
- data/install/config/tools/script_runner/script_runner.txt +3 -3
- data/install/config/tools/test_runner/test_runner.txt +8 -8
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/install/lib/user_version.rb +3 -3
- data/install/tools/CmdExtractor +16 -16
- data/install/tools/CmdExtractor.bat +0 -0
- data/install/tools/CmdSender +16 -16
- data/install/tools/CmdSender.bat +0 -0
- data/install/tools/CmdTlmServer +16 -16
- data/install/tools/CmdTlmServer.bat +0 -0
- data/install/tools/DataViewer +16 -16
- data/install/tools/DataViewer.bat +0 -0
- data/install/tools/HandbookCreator +16 -16
- data/install/tools/HandbookCreator.bat +0 -0
- data/install/tools/Launcher +16 -16
- data/install/tools/Launcher.bat +0 -0
- data/install/tools/LimitsMonitor +16 -16
- data/install/tools/LimitsMonitor.bat +0 -0
- data/install/tools/OpenGLBuilder +16 -16
- data/install/tools/OpenGLBuilder.bat +0 -0
- data/install/tools/PacketViewer +16 -16
- data/install/tools/PacketViewer.bat +0 -0
- data/install/tools/Replay +16 -16
- data/install/tools/Replay.bat +0 -0
- data/install/tools/ScriptRunner +16 -16
- data/install/tools/ScriptRunner.bat +0 -0
- data/install/tools/TableManager +16 -16
- data/install/tools/TableManager.bat +0 -0
- data/install/tools/TestRunner +16 -16
- data/install/tools/TestRunner.bat +0 -0
- data/install/tools/TlmExtractor +16 -16
- data/install/tools/TlmExtractor.bat +0 -0
- data/install/tools/TlmGrapher +16 -16
- data/install/tools/TlmGrapher.bat +0 -0
- data/install/tools/TlmViewer +16 -16
- data/install/tools/TlmViewer.bat +0 -0
- data/install/tools/ToolLaunch.bat +14 -5
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
- data/install/tools/tool_launch.rb +38 -38
- data/lib/cosmos.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
- data/lib/cosmos/config/config_parser.rb +324 -324
- data/lib/cosmos/conversions.rb +13 -13
- data/lib/cosmos/conversions/conversion.rb +47 -47
- data/lib/cosmos/conversions/generic_conversion.rb +55 -55
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
- data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
- data/lib/cosmos/conversions/processor_conversion.rb +46 -46
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
- data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
- data/lib/cosmos/core_ext.rb +18 -18
- data/lib/cosmos/core_ext/array.rb +354 -354
- data/lib/cosmos/core_ext/class.rb +51 -51
- data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
- data/lib/cosmos/core_ext/exception.rb +52 -52
- data/lib/cosmos/core_ext/file.rb +75 -75
- data/lib/cosmos/core_ext/hash.rb +28 -28
- data/lib/cosmos/core_ext/io.rb +75 -75
- data/lib/cosmos/core_ext/kernel.rb +38 -38
- data/lib/cosmos/core_ext/math.rb +119 -119
- data/lib/cosmos/core_ext/matrix.rb +146 -146
- data/lib/cosmos/core_ext/objectspace.rb +29 -29
- data/lib/cosmos/core_ext/range.rb +22 -22
- data/lib/cosmos/core_ext/socket.rb +32 -32
- data/lib/cosmos/core_ext/string.rb +311 -311
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +448 -448
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
- data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
- data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
- data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
- data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -326
- data/lib/cosmos/gui/dialogs/about_dialog.rb +137 -137
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
- data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +260 -260
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -169
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +276 -276
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -165
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
- data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
- data/lib/cosmos/gui/dialogs/splash.rb +135 -135
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
- data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +473 -473
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +451 -451
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
- data/lib/cosmos/gui/line_graph/lines.rb +290 -290
- data/lib/cosmos/gui/line_graph/overview_graph.rb +469 -469
- data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
- data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
- data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
- data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
- data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
- data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
- data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -724
- data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
- data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
- data/lib/cosmos/gui/opengl/opengl.rb +8 -8
- data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
- data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
- data/lib/cosmos/gui/qt.rb +860 -860
- data/lib/cosmos/gui/qt_tool.rb +380 -380
- data/lib/cosmos/gui/text/completion.rb +381 -381
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
- data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
- data/lib/cosmos/gui/text/ruby_editor.rb +415 -415
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +330 -330
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
- data/lib/cosmos/interfaces.rb +11 -11
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -153
- data/lib/cosmos/interfaces/interface.rb +225 -225
- data/lib/cosmos/interfaces/linc_interface.rb +360 -360
- data/lib/cosmos/interfaces/serial_interface.rb +76 -76
- data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -129
- data/lib/cosmos/interfaces/stream_interface.rb +136 -136
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +164 -164
- data/lib/cosmos/interfaces/udp_interface.rb +161 -161
- data/lib/cosmos/io/buffered_file.rb +11 -11
- data/lib/cosmos/io/cosmos_snmp.rb +50 -50
- data/lib/cosmos/io/io_multiplexer.rb +89 -89
- data/lib/cosmos/io/json_drb.rb +376 -376
- data/lib/cosmos/io/json_drb_object.rb +198 -198
- data/lib/cosmos/io/json_rpc.rb +365 -365
- data/lib/cosmos/io/posix_serial_driver.rb +145 -145
- data/lib/cosmos/io/raw_logger.rb +174 -174
- data/lib/cosmos/io/raw_logger_pair.rb +71 -71
- data/lib/cosmos/io/serial_driver.rb +85 -85
- data/lib/cosmos/io/stderr.rb +36 -36
- data/lib/cosmos/io/stdout.rb +36 -36
- data/lib/cosmos/io/tcpip_server.rb +571 -571
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +145 -145
- data/lib/cosmos/packet_logs.rb +7 -7
- data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -104
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +450 -450
- data/lib/cosmos/packet_logs/packet_log_writer.rb +323 -323
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +634 -634
- data/lib/cosmos/packets/commands.rb +293 -293
- data/lib/cosmos/packets/limits.rb +267 -267
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +786 -786
- data/lib/cosmos/packets/packet_config.rb +482 -482
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -58
- data/lib/cosmos/packets/parsers/limits_parser.rb +146 -146
- data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -52
- data/lib/cosmos/packets/parsers/macro_parser.rb +116 -116
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +215 -215
- data/lib/cosmos/packets/parsers/packet_parser.rb +123 -123
- data/lib/cosmos/packets/parsers/processor_parser.rb +63 -63
- data/lib/cosmos/packets/parsers/state_parser.rb +116 -116
- data/lib/cosmos/packets/structure.rb +458 -458
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +350 -350
- data/lib/cosmos/processors.rb +6 -6
- data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
- data/lib/cosmos/processors/processor.rb +71 -71
- data/lib/cosmos/processors/statistics_processor.rb +65 -65
- data/lib/cosmos/processors/watermark_processor.rb +44 -44
- data/lib/cosmos/script.rb +9 -9
- data/lib/cosmos/script/cmd_tlm_server.rb +110 -110
- data/lib/cosmos/script/commands.rb +184 -184
- data/lib/cosmos/script/extract.rb +123 -123
- data/lib/cosmos/script/limits.rb +114 -114
- data/lib/cosmos/script/script.rb +76 -76
- data/lib/cosmos/script/scripting.rb +897 -897
- data/lib/cosmos/script/telemetry.rb +174 -174
- data/lib/cosmos/script/tools.rb +138 -138
- data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
- data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
- data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
- data/lib/cosmos/streams/serial_stream.rb +157 -157
- data/lib/cosmos/streams/stream.rb +63 -63
- data/lib/cosmos/streams/stream_protocol.rb +373 -373
- data/lib/cosmos/streams/tcpip_client_stream.rb +113 -113
- data/lib/cosmos/streams/tcpip_socket_stream.rb +143 -143
- data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
- data/lib/cosmos/system.rb +4 -4
- data/lib/cosmos/system/system.rb +618 -618
- data/lib/cosmos/system/target.rb +197 -197
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +255 -255
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +717 -717
- data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +1034 -1034
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -67
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +515 -515
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +253 -253
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +408 -408
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -175
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +200 -200
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +150 -150
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +244 -244
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +90 -90
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +266 -266
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +621 -621
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +134 -134
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -156
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -382
- data/lib/cosmos/tools/launcher/launcher.rb +188 -188
- data/lib/cosmos/tools/launcher/launcher_config.rb +256 -256
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -40
- data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -116
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +837 -837
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +542 -542
- data/lib/cosmos/tools/replay/replay.rb +501 -501
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -147
- data/lib/cosmos/tools/script_runner/script_runner.rb +922 -922
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1798 -1798
- data/lib/cosmos/tools/table_manager/table.rb +70 -70
- data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
- data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
- data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
- data/lib/cosmos/tools/test_runner/test.rb +539 -539
- data/lib/cosmos/tools/test_runner/test_runner.rb +1189 -1189
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -341
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1016 -1016
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -95
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +174 -174
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -193
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +407 -407
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -323
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -1291
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -114
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +78 -78
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
- data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -486
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +561 -561
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +290 -290
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
- data/lib/cosmos/top_level.rb +759 -759
- data/lib/cosmos/utilities.rb +11 -11
- data/lib/cosmos/utilities/crc.rb +166 -166
- data/lib/cosmos/utilities/csv.rb +83 -83
- data/lib/cosmos/utilities/logger.rb +137 -137
- data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
- data/lib/cosmos/utilities/message_log.rb +79 -79
- data/lib/cosmos/utilities/quaternion.rb +258 -258
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
- data/lib/cosmos/utilities/simulated_target.rb +99 -99
- data/lib/cosmos/utilities/sleeper.rb +44 -44
- data/lib/cosmos/version.rb +12 -12
- data/lib/cosmos/win32/excel.rb +66 -66
- data/lib/cosmos/win32/win32.rb +387 -387
- data/lib/cosmos/win32/win32_main.rb +321 -321
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +0 -0
- data/spec/ccsds/ccsds_packet_spec.rb +67 -67
- data/spec/ccsds/ccsds_parser_spec.rb +148 -148
- data/spec/config/config_parser_spec.rb +322 -322
- data/spec/conversions/conversion_spec.rb +31 -31
- data/spec/conversions/generic_conversion_spec.rb +45 -45
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
- data/spec/conversions/polynomial_conversion_spec.rb +40 -40
- data/spec/conversions/processor_conversion_spec.rb +45 -45
- data/spec/conversions/received_count_conversion_spec.rb +43 -43
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
- data/spec/core_ext/array_spec.rb +186 -186
- data/spec/core_ext/class_spec.rb +36 -36
- data/spec/core_ext/cosmos_io_spec.rb +77 -77
- data/spec/core_ext/exception_spec.rb +91 -91
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +24 -24
- data/spec/core_ext/io_spec.rb +46 -46
- data/spec/core_ext/kernel_spec.rb +54 -54
- data/spec/core_ext/math_spec.rb +116 -116
- data/spec/core_ext/matrix_spec.rb +66 -66
- data/spec/core_ext/objectspace_spec.rb +29 -29
- data/spec/core_ext/range_spec.rb +21 -21
- data/spec/core_ext/socket_spec.rb +32 -32
- data/spec/core_ext/string_spec.rb +223 -223
- data/spec/core_ext/stringio_spec.rb +21 -21
- data/spec/core_ext/time_spec.rb +202 -202
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/gui/qt_spec.rb +102 -102
- data/spec/install/config/system/system.txt +33 -33
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/spec/install/config/targets/COSMOS/target.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -305
- data/spec/install/config/targets/INST/target.txt +10 -10
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
- data/spec/interfaces/interface_spec.rb +130 -130
- data/spec/interfaces/linc_interface_spec.rb +259 -259
- data/spec/interfaces/serial_interface_spec.rb +56 -56
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
- data/spec/interfaces/stream_interface_spec.rb +157 -157
- data/spec/interfaces/tcpip_client_interface_spec.rb +55 -55
- data/spec/interfaces/tcpip_server_interface_spec.rb +160 -160
- data/spec/interfaces/udp_interface_spec.rb +175 -175
- data/spec/io/buffered_file_spec.rb +113 -113
- data/spec/io/io_multiplexer_spec.rb +94 -94
- data/spec/io/json_drb_object_spec.rb +119 -119
- data/spec/io/json_drb_spec.rb +311 -311
- data/spec/io/json_rpc_spec.rb +264 -264
- data/spec/io/raw_logger_pair_spec.rb +76 -76
- data/spec/io/raw_logger_spec.rb +133 -133
- data/spec/io/serial_driver_spec.rb +60 -60
- data/spec/io/stderr_spec.rb +32 -32
- data/spec/io/stdout_spec.rb +32 -32
- data/spec/io/tcpip_server_spec.rb +338 -338
- data/spec/io/udp_sockets_spec.rb +94 -94
- data/spec/io/win32_serial_driver_spec.rb +88 -88
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
- data/spec/packet_logs/packet_log_reader_spec.rb +468 -468
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +225 -225
- data/spec/packets/binary_accessor_spec.rb +2326 -2326
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +344 -344
- data/spec/packets/packet_config_spec.rb +805 -805
- data/spec/packets/packet_item_limits_spec.rb +161 -161
- data/spec/packets/packet_item_spec.rb +386 -386
- data/spec/packets/packet_spec.rb +1317 -1317
- data/spec/packets/parsers/format_string_parser_spec.rb +122 -122
- data/spec/packets/parsers/limits_parser_spec.rb +282 -282
- data/spec/packets/parsers/limits_response_parser_spec.rb +149 -149
- data/spec/packets/parsers/macro_parser_spec.rb +212 -212
- data/spec/packets/parsers/packet_item_parser_spec.rb +306 -306
- data/spec/packets/parsers/packet_parser_spec.rb +99 -99
- data/spec/packets/parsers/processor_parser_spec.rb +114 -114
- data/spec/packets/parsers/state_parser_spec.rb +156 -156
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +565 -565
- data/spec/packets/telemetry_spec.rb +578 -578
- data/spec/processors/new_packet_log_processor_spec.rb +39 -39
- data/spec/processors/processor_spec.rb +55 -55
- data/spec/processors/statistics_processor_spec.rb +60 -60
- data/spec/processors/watermark_processor_spec.rb +51 -51
- data/spec/script/cmd_tlm_server_spec.rb +110 -110
- data/spec/script/commands_disconnect_spec.rb +270 -270
- data/spec/script/commands_spec.rb +302 -302
- data/spec/script/limits_spec.rb +153 -153
- data/spec/script/script_spec.rb +86 -86
- data/spec/script/scripting_spec.rb +440 -440
- data/spec/script/telemetry_spec.rb +165 -165
- data/spec/script/tools_spec.rb +117 -117
- data/spec/spec_helper.rb +190 -190
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +113 -113
- data/spec/streams/length_stream_protocol_spec.rb +300 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +121 -121
- data/spec/streams/serial_stream_spec.rb +117 -117
- data/spec/streams/stream_protocol_spec.rb +346 -346
- data/spec/streams/stream_spec.rb +30 -30
- data/spec/streams/tcpip_client_stream_spec.rb +57 -57
- data/spec/streams/tcpip_socket_stream_spec.rb +193 -193
- data/spec/streams/template_stream_protocol_spec.rb +156 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +127 -127
- data/spec/system/system_spec.rb +665 -665
- data/spec/system/target_spec.rb +250 -250
- data/spec/tools/cmd_tlm_server/api_spec.rb +1117 -1117
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +453 -453
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -235
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -252
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +151 -151
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -223
- data/spec/tools/launcher/launcher_config_spec.rb +464 -464
- data/spec/top_level/top_level_spec.rb +334 -334
- data/spec/utilities/crc_spec.rb +45 -45
- data/spec/utilities/csv_spec.rb +97 -97
- data/spec/utilities/logger_spec.rb +102 -102
- data/spec/utilities/message_log_spec.rb +89 -89
- data/spec/utilities/quaternion_spec.rb +107 -107
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
- data/tasks/manifest.rake +22 -22
- data/tasks/spec.rake +23 -23
- data/test/benchmarks/binary_accessor_benchmark.rb +14 -14
- data/test/benchmarks/gsub_benchmark.rb +152 -152
- data/test/benchmarks/is_a_benchmark.rb +34 -34
- data/test/performance/PACKETS.bat +0 -0
- data/test/performance/Rakefile +77 -77
- data/test/performance/THREADS.bat +0 -0
- data/test/performance/config/data/crc.txt +196 -196
- data/test/performance/config/data/diamond.STL +57 -57
- data/test/performance/config/data/meta_init.txt +4 -4
- data/test/performance/config/system/system_packets.txt +39 -39
- data/test/performance/config/system/system_threads.txt +59 -59
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -46
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/test/performance/config/targets/COSMOS/screens/version.txt +19 -19
- data/test/performance/config/targets/COSMOS/target.txt +11 -11
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -20
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -98
- data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -22
- data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -24
- data/test/performance/config/targets/PACKET/screens/status.txt +25 -25
- data/test/performance/config/targets/PACKET/target.txt +28 -28
- data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -12
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -17
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -18
- data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -6
- data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -22
- data/test/performance/config/targets/THREAD/screens/status.txt +25 -25
- data/test/performance/config/targets/THREAD/target.txt +6 -6
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -28
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -68
- data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -11
- data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/test/performance/config/tools/launcher/launcher_packets.txt +34 -34
- data/test/performance/config/tools/launcher/launcher_threads.txt +83 -83
- data/test/performance/config/tools/script_runner/script_runner.txt +3 -3
- data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/test/performance/config/tools/test_runner/test_runner.txt +17 -17
- data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -204
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -13
- data/test/performance/lib/packet_target.rb +126 -126
- data/test/performance/lib/thread_target.rb +120 -120
- data/test/performance/lib/user_version.rb +3 -3
- data/test/performance/procedures/checks.rb +11 -11
- data/test/performance/procedures/clear_util.rb +7 -7
- data/test/performance/procedures/collect.rb +18 -18
- data/test/performance/procedures/collect_util.rb +14 -14
- data/test/performance/procedures/cosmos_api_test.rb +293 -293
- data/test/performance/procedures/disconnect.rb +29 -29
- data/test/performance/procedures/example_test.rb +182 -182
- data/test/performance/procedures/plot_test.rb +8 -8
- data/test/performance/procedures/procedure.rb +2 -2
- data/test/performance/procedures/run_example_test.rb +3 -3
- data/test/performance/procedures/test.rb +51 -51
- data/test/performance/tools/CmdExtractor +14 -14
- data/test/performance/tools/CmdExtractor.bat +0 -0
- data/test/performance/tools/CmdSender +14 -14
- data/test/performance/tools/CmdSender.bat +0 -0
- data/test/performance/tools/CmdTlmServer +16 -16
- data/test/performance/tools/CmdTlmServer.bat +0 -0
- data/test/performance/tools/CmdTlmServerMemProf +20 -20
- data/test/performance/tools/CmdTlmServerMemProf.bat +0 -0
- data/test/performance/tools/DataViewer +14 -14
- data/test/performance/tools/DataViewer.bat +0 -0
- data/test/performance/tools/HandbookCreator +14 -14
- data/test/performance/tools/HandbookCreator.bat +0 -0
- data/test/performance/tools/Launcher +14 -14
- data/test/performance/tools/Launcher.bat +0 -0
- data/test/performance/tools/LimitsMonitor +14 -14
- data/test/performance/tools/LimitsMonitor.bat +0 -0
- data/test/performance/tools/OpenGLBuilder +14 -14
- data/test/performance/tools/OpenGLBuilder.bat +0 -0
- data/test/performance/tools/PacketTarget +14 -14
- data/test/performance/tools/PacketTarget.bat +0 -0
- data/test/performance/tools/PacketViewer +14 -14
- data/test/performance/tools/PacketViewer.bat +0 -0
- data/test/performance/tools/Replay +14 -14
- data/test/performance/tools/Replay.bat +0 -0
- data/test/performance/tools/ScpiTarget +14 -14
- data/test/performance/tools/ScpiTarget.bat +0 -0
- data/test/performance/tools/ScriptRunner +14 -14
- data/test/performance/tools/ScriptRunner.bat +0 -0
- data/test/performance/tools/TableManager +14 -14
- data/test/performance/tools/TableManager.bat +0 -0
- data/test/performance/tools/TestRunner +14 -14
- data/test/performance/tools/TestRunner.bat +0 -0
- data/test/performance/tools/ThreadTarget +14 -14
- data/test/performance/tools/ThreadTarget.bat +0 -0
- data/test/performance/tools/TlmExtractor +14 -14
- data/test/performance/tools/TlmExtractor.bat +0 -0
- data/test/performance/tools/TlmGrapher +14 -14
- data/test/performance/tools/TlmGrapher.bat +0 -0
- data/test/performance/tools/TlmGrapherMemProf +19 -19
- data/test/performance/tools/TlmGrapherMemProf.bat +0 -0
- data/test/performance/tools/TlmViewer +14 -14
- data/test/performance/tools/TlmViewer.bat +0 -0
- data/test/performance/tools/TlmViewerMemProf +19 -19
- data/test/performance/tools/TlmViewerMemProf.bat +0 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- metadata +3 -3
|
@@ -1,805 +1,805 @@
|
|
|
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/packet_config'
|
|
14
|
-
require 'tempfile'
|
|
15
|
-
|
|
16
|
-
module Cosmos
|
|
17
|
-
|
|
18
|
-
describe PacketConfig do
|
|
19
|
-
|
|
20
|
-
describe "process_file" do
|
|
21
|
-
before(:each) do
|
|
22
|
-
@pc = PacketConfig.new
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "complains about unknown keywords" do
|
|
26
|
-
tf = Tempfile.new('unittest')
|
|
27
|
-
tf.puts("BLAH")
|
|
28
|
-
tf.close
|
|
29
|
-
expect { @pc.process_file(tf.path, 'SYSTEM') }.to raise_error(ConfigParser::Error, "Unknown keyword 'BLAH'")
|
|
30
|
-
tf.unlink
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
context "with all telemetry keywords" do
|
|
34
|
-
before(:all) do
|
|
35
|
-
# top level keywords
|
|
36
|
-
@top_keywords = %w(SELECT_COMMAND SELECT_TELEMETRY LIMITS_GROUP LIMITS_GROUP_ITEM)
|
|
37
|
-
# Keywords that require a current packet from TELEMETRY keyword
|
|
38
|
-
@tlm_keywords = %w(SELECT_ITEM ITEM ID_ITEM ARRAY_ITEM APPEND_ITEM APPEND_ID_ITEM APPEND_ARRAY_ITEM PROCESSOR META)
|
|
39
|
-
# Keywords that require both a current packet and current item
|
|
40
|
-
@item_keywords = %w(STATE READ_CONVERSION WRITE_CONVERSION POLY_READ_CONVERSION POLY_WRITE_CONVERSION SEG_POLY_READ_CONVERSION SEG_POLY_WRITE_CONVERSION GENERIC_READ_CONVERSION_START GENERIC_WRITE_CONVERSION_START LIMITS LIMITS_RESPONSE UNITS FORMAT_STRING DESCRIPTION META)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "complains if a current packet is not defined" do
|
|
44
|
-
# Check for missing TELEMETRY line
|
|
45
|
-
@tlm_keywords.each do |keyword|
|
|
46
|
-
tf = Tempfile.new('unittest')
|
|
47
|
-
tf.puts(keyword)
|
|
48
|
-
tf.close
|
|
49
|
-
expect { @pc.process_file(tf.path, "SYSTEM") }.to raise_error(ConfigParser::Error, "No current packet for #{keyword}")
|
|
50
|
-
tf.unlink
|
|
51
|
-
end # end for each tlm_keywords
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it "complains if a current item is not defined" do
|
|
55
|
-
# Check for missing ITEM definitions
|
|
56
|
-
@item_keywords.each do |keyword|
|
|
57
|
-
next if %w(META).include? keyword
|
|
58
|
-
tf = Tempfile.new('unittest')
|
|
59
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
60
|
-
tf.puts keyword
|
|
61
|
-
tf.close
|
|
62
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "No current item for #{keyword}")
|
|
63
|
-
tf.unlink
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "complains if there are not enough parameters" do
|
|
68
|
-
@top_keywords.each do |keyword|
|
|
69
|
-
tf = Tempfile.new('unittest')
|
|
70
|
-
tf.puts(keyword)
|
|
71
|
-
tf.close
|
|
72
|
-
expect { @pc.process_file(tf.path, "SYSTEM") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
73
|
-
tf.unlink
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
@tlm_keywords.each do |keyword|
|
|
77
|
-
tf = Tempfile.new('unittest')
|
|
78
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
79
|
-
tf.puts keyword
|
|
80
|
-
tf.close
|
|
81
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
82
|
-
tf.unlink
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
@item_keywords.each do |keyword|
|
|
86
|
-
next if %w(GENERIC_READ_CONVERSION_START GENERIC_WRITE_CONVERSION_START).include? keyword
|
|
87
|
-
tf = Tempfile.new('unittest')
|
|
88
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
89
|
-
tf.puts 'ITEM myitem 0 8 UINT "Test Item"'
|
|
90
|
-
tf.puts keyword
|
|
91
|
-
tf.close
|
|
92
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
93
|
-
tf.unlink
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
it "complains if there are too many parameters" do
|
|
98
|
-
@top_keywords.each do |keyword|
|
|
99
|
-
tf = Tempfile.new('unittest')
|
|
100
|
-
case keyword
|
|
101
|
-
when "SELECT_COMMAND"
|
|
102
|
-
tf.puts 'SELECT_COMMAND tgt1 pkt1 extra'
|
|
103
|
-
when "SELECT_TELEMETRY"
|
|
104
|
-
tf.puts 'SELECT_TELEMETRY tgt1 pkt1 extra'
|
|
105
|
-
when 'LIMITS_GROUP'
|
|
106
|
-
tf.puts "LIMITS_GROUP name extra"
|
|
107
|
-
when 'LIMITS_GROUP_ITEM'
|
|
108
|
-
tf.puts "LIMITS_GROUP_ITEM target packet item extra"
|
|
109
|
-
end
|
|
110
|
-
tf.close
|
|
111
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
112
|
-
tf.unlink
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
@tlm_keywords.each do |keyword|
|
|
116
|
-
next if %w(PROCESSOR META).include? keyword
|
|
117
|
-
tf = Tempfile.new('unittest')
|
|
118
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
119
|
-
case keyword
|
|
120
|
-
when "ITEM"
|
|
121
|
-
tf.puts 'ITEM myitem 0 8 UINT "Test Item" BIG_ENDIAN extra'
|
|
122
|
-
when "APPEND_ITEM"
|
|
123
|
-
tf.puts 'APPEND_ITEM myitem 8 UINT "Test Item" BIG_ENDIAN extra'
|
|
124
|
-
when "ID_ITEM"
|
|
125
|
-
tf.puts 'ID_ITEM myitem 0 8 UINT 1 "Test Item id=1" LITTLE_ENDIAN extra'
|
|
126
|
-
when "APPEND_ID_ITEM"
|
|
127
|
-
tf.puts 'APPEND_ID_ITEM myitem 8 UINT 1 "Test Item id=1" BIG_ENDIAN extra'
|
|
128
|
-
when "ARRAY_ITEM"
|
|
129
|
-
tf.puts 'ARRAY_ITEM myitem 0 8 UINT 24 "Test Item array" LITTLE_ENDIAN extra'
|
|
130
|
-
when "APPEND_ARRAY_ITEM"
|
|
131
|
-
tf.puts 'APPEND_ARRAY_ITEM myitem 0 8 UINT 24 "Test Item array" BIG_ENDIAN extra'
|
|
132
|
-
when "SELECT_ITEM"
|
|
133
|
-
tf.puts 'ITEM myitem 0 8 UINT'
|
|
134
|
-
tf.puts 'SELECT_ITEM myitem extra'
|
|
135
|
-
end
|
|
136
|
-
tf.close
|
|
137
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
138
|
-
tf.unlink
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
@item_keywords.each do |keyword|
|
|
142
|
-
# The following can have an "unlimited" number of arguments
|
|
143
|
-
next if %w(POLY_READ_CONVERSION POLY_WRITE_CONVERSION READ_CONVERSION WRITE_CONVERSION SEG_POLY_READ_CONVERSION SEG_POLY_WRITE_CONVERSION LIMITS_RESPONSE META).include? keyword
|
|
144
|
-
tf = Tempfile.new('unittest')
|
|
145
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
146
|
-
tf.puts 'ITEM myitem 0 8 UINT "Test Item"'
|
|
147
|
-
case keyword
|
|
148
|
-
when "STATE"
|
|
149
|
-
tf.puts 'STATE mystate 0 RED extra'
|
|
150
|
-
when "GENERIC_READ_CONVERSION_START", "GENERIC_WRITE_CONVERSION_START"
|
|
151
|
-
tf.puts "#{keyword} FLOAT 64 extra"
|
|
152
|
-
when "LIMITS"
|
|
153
|
-
tf.puts 'LIMITS mylimits 1 ENABLED 0 10 20 30 12 18 20'
|
|
154
|
-
when "UNITS"
|
|
155
|
-
tf.puts 'UNITS degrees deg extra'
|
|
156
|
-
when "FORMAT_STRING", "DESCRIPTION"
|
|
157
|
-
tf.puts "#{keyword} 'string' extra"
|
|
158
|
-
end
|
|
159
|
-
tf.close
|
|
160
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
161
|
-
tf.unlink
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
context "with SELECT_COMMAND or SELECT_TELEMETRY" do
|
|
167
|
-
it "complains if the packet is not found" do
|
|
168
|
-
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
169
|
-
tf = Tempfile.new('unittest')
|
|
170
|
-
tf.puts keyword + ' tgt1 pkt1'
|
|
171
|
-
tf.puts 'SELECT_ITEM ITEM1'
|
|
172
|
-
tf.puts ' DESCRIPTION "New description"'
|
|
173
|
-
tf.close
|
|
174
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Packet not found/)
|
|
175
|
-
tf.unlink
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
it "selects a packet for modification" do
|
|
180
|
-
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
181
|
-
tf = Tempfile.new('unittest')
|
|
182
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
183
|
-
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 0 0 "Item"'
|
|
184
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
185
|
-
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
186
|
-
tf.close
|
|
187
|
-
@pc.process_file(tf.path, "TGT1")
|
|
188
|
-
pkt = @pc.commands["TGT1"]["PKT1"] if keyword =~ /COMMAND/
|
|
189
|
-
pkt = @pc.telemetry["TGT1"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
190
|
-
expect(pkt.get_item("ITEM1").description).to eql "Item"
|
|
191
|
-
tf.unlink
|
|
192
|
-
|
|
193
|
-
tf = Tempfile.new('unittest')
|
|
194
|
-
tf.puts keyword + ' tgt1 pkt1'
|
|
195
|
-
tf.puts 'SELECT_PARAMETER ITEM1' if keyword =~ /COMMAND/
|
|
196
|
-
tf.puts 'SELECT_ITEM ITEM1' if keyword =~ /TELEMETRY/
|
|
197
|
-
tf.puts ' DESCRIPTION "New description"'
|
|
198
|
-
tf.close
|
|
199
|
-
@pc.process_file(tf.path, "TGT1")
|
|
200
|
-
pkt = @pc.commands["TGT1"]["PKT1"] if keyword =~ /COMMAND/
|
|
201
|
-
pkt = @pc.telemetry["TGT1"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
202
|
-
expect(pkt.get_item("ITEM1").description).to eql "New description"
|
|
203
|
-
tf.unlink
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
it "substitutes the target name" do
|
|
208
|
-
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
209
|
-
tf = Tempfile.new('unittest')
|
|
210
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
211
|
-
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 0 0 "Item"'
|
|
212
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
213
|
-
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
214
|
-
tf.close
|
|
215
|
-
@pc.process_file(tf.path, "NEW")
|
|
216
|
-
pkt = @pc.commands["NEW"]["PKT1"] if keyword =~ /COMMAND/
|
|
217
|
-
pkt = @pc.telemetry["NEW"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
218
|
-
expect(pkt.get_item("ITEM1").description).to eql "Item"
|
|
219
|
-
tf.unlink
|
|
220
|
-
|
|
221
|
-
tf = Tempfile.new('unittest')
|
|
222
|
-
tf.puts keyword + ' tgt1 pkt1'
|
|
223
|
-
tf.puts 'SELECT_PARAMETER ITEM1' if keyword =~ /COMMAND/
|
|
224
|
-
tf.puts 'SELECT_ITEM ITEM1' if keyword =~ /TELEMETRY/
|
|
225
|
-
tf.puts ' DESCRIPTION "New description"'
|
|
226
|
-
tf.close
|
|
227
|
-
@pc.process_file(tf.path, "NEW")
|
|
228
|
-
pkt = @pc.commands["NEW"]["PKT1"] if keyword =~ /COMMAND/
|
|
229
|
-
pkt = @pc.telemetry["NEW"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
230
|
-
expect(pkt.get_item("ITEM1").description).to eql "New description"
|
|
231
|
-
tf.unlink
|
|
232
|
-
end
|
|
233
|
-
end
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
context "with SELECT_PARAMETER" do
|
|
237
|
-
it "complains if used with SELECT_TELEMETRY" do
|
|
238
|
-
tf = Tempfile.new('unittest')
|
|
239
|
-
tf.puts 'TELEMETRY TGT PKT LITTLE_ENDIAN "Packet"'
|
|
240
|
-
tf.puts ' APPEND_ITEM ITEM 16 UINT "Item"'
|
|
241
|
-
tf.puts 'SELECT_TELEMETRY TGT PKT'
|
|
242
|
-
tf.puts ' SELECT_PARAMETER ITEM'
|
|
243
|
-
tf.close
|
|
244
|
-
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "SELECT_PARAMETER only applies to command packets")
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
it "complains if the parameter is not found" do
|
|
248
|
-
tf = Tempfile.new('unittest')
|
|
249
|
-
tf.puts 'COMMAND TGT PKT LITTLE_ENDIAN "Packet"'
|
|
250
|
-
tf.puts ' APPEND_PARAMETER PARAM 16 UINT 0 0 0 "Param"'
|
|
251
|
-
tf.close
|
|
252
|
-
@pc.process_file(tf.path, "TGT")
|
|
253
|
-
pkt = @pc.commands["TGT"]["PKT"]
|
|
254
|
-
expect(pkt.get_item("PARAM").description).to eql "Param"
|
|
255
|
-
tf.unlink
|
|
256
|
-
|
|
257
|
-
tf = Tempfile.new('unittest')
|
|
258
|
-
tf.puts 'SELECT_COMMAND TGT PKT'
|
|
259
|
-
tf.puts ' SELECT_PARAMETER PARAMX'
|
|
260
|
-
tf.puts ' DESCRIPTION "New description"'
|
|
261
|
-
tf.close
|
|
262
|
-
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "PARAMX not found in command packet TGT PKT")
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
context "with SELECT_ITEM" do
|
|
267
|
-
it "complains if used with SELECT_COMMAND" do
|
|
268
|
-
tf = Tempfile.new('unittest')
|
|
269
|
-
tf.puts 'COMMAND TGT PKT LITTLE_ENDIAN "Packet"'
|
|
270
|
-
tf.puts ' APPEND_PARAMETER PARAM 16 UINT 0 0 0 "Param"'
|
|
271
|
-
tf.puts 'SELECT_COMMAND TGT PKT'
|
|
272
|
-
tf.puts ' SELECT_ITEM PARAM'
|
|
273
|
-
tf.close
|
|
274
|
-
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "SELECT_ITEM only applies to telemetry packets")
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
it "complains if the item is not found" do
|
|
278
|
-
tf = Tempfile.new('unittest')
|
|
279
|
-
tf.puts 'TELEMETRY TGT PKT LITTLE_ENDIAN "Packet"'
|
|
280
|
-
tf.puts ' APPEND_ITEM ITEM 16 UINT "Item"'
|
|
281
|
-
tf.close
|
|
282
|
-
@pc.process_file(tf.path, "TGT")
|
|
283
|
-
pkt = @pc.telemetry["TGT"]["PKT"]
|
|
284
|
-
expect(pkt.get_item("ITEM").description).to eql "Item"
|
|
285
|
-
tf.unlink
|
|
286
|
-
|
|
287
|
-
tf = Tempfile.new('unittest')
|
|
288
|
-
tf.puts 'SELECT_TELEMETRY TGT PKT'
|
|
289
|
-
tf.puts ' SELECT_ITEM ITEMX'
|
|
290
|
-
tf.puts ' DESCRIPTION "New description"'
|
|
291
|
-
tf.close
|
|
292
|
-
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "ITEMX not found in telemetry packet TGT PKT")
|
|
293
|
-
end
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
context "with MACRO_APPEND" do
|
|
297
|
-
it "creates a range of items" do
|
|
298
|
-
tf = Tempfile.new('unittest')
|
|
299
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
300
|
-
tf.puts 'MACRO_APPEND_START 1 3'
|
|
301
|
-
tf.puts ' APPEND_ITEM BYTE 8 UINT "Setting #x"'
|
|
302
|
-
tf.puts 'MACRO_APPEND_END'
|
|
303
|
-
tf.close
|
|
304
|
-
@pc.process_file(tf.path, "TGT1")
|
|
305
|
-
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
306
|
-
expect(pkt.items.length).to eql 6 # 3 plus the RECEIVED_XXX items
|
|
307
|
-
expect(pkt.items.keys).to include('BYTE1','BYTE2','BYTE3')
|
|
308
|
-
expect(pkt.sorted_items[3].name).to eql 'BYTE1'
|
|
309
|
-
expect(pkt.sorted_items[4].name).to eql 'BYTE2'
|
|
310
|
-
expect(pkt.sorted_items[5].name).to eql 'BYTE3'
|
|
311
|
-
tf.unlink
|
|
312
|
-
end
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
context "with LIMITS_GROUP" do
|
|
316
|
-
it "creates a new limits group" do
|
|
317
|
-
tf = Tempfile.new('unittest')
|
|
318
|
-
tf.puts 'LIMITS_GROUP TVAC'
|
|
319
|
-
tf.puts 'LIMITS_GROUP VIBE'
|
|
320
|
-
tf.close
|
|
321
|
-
expect(@pc.limits_groups).to be_empty
|
|
322
|
-
@pc.process_file(tf.path, "TGT1")
|
|
323
|
-
expect(@pc.limits_groups).to include('TVAC','VIBE')
|
|
324
|
-
tf.unlink
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
context "with LIMITS_ITEM" do
|
|
329
|
-
it "adds a new limits item to the group" do
|
|
330
|
-
tf = Tempfile.new('unittest')
|
|
331
|
-
tf.puts 'LIMITS_GROUP TVAC'
|
|
332
|
-
tf.puts 'LIMITS_GROUP_ITEM TGT1 PKT1 ITEM1'
|
|
333
|
-
tf.close
|
|
334
|
-
expect(@pc.limits_groups).to be_empty
|
|
335
|
-
@pc.process_file(tf.path, "TGT1")
|
|
336
|
-
expect(@pc.limits_groups["TVAC"]).to eql [%w(TGT1 PKT1 ITEM1)]
|
|
337
|
-
tf.unlink
|
|
338
|
-
|
|
339
|
-
# Show we can 're-open' the group and add items
|
|
340
|
-
tf = Tempfile.new('unittest')
|
|
341
|
-
tf.puts 'LIMITS_GROUP TVAC'
|
|
342
|
-
tf.puts 'LIMITS_GROUP_ITEM TGT1 PKT1 ITEM2'
|
|
343
|
-
tf.close
|
|
344
|
-
@pc.process_file(tf.path, "TGT1")
|
|
345
|
-
expect(@pc.limits_groups["TVAC"]).to eql [%w(TGT1 PKT1 ITEM1), %w(TGT1 PKT1 ITEM2)]
|
|
346
|
-
tf.unlink
|
|
347
|
-
end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
context "with ALLOW_SHORT" do
|
|
351
|
-
it "marks the packet as allowing short buffers" do
|
|
352
|
-
tf = Tempfile.new('unittest')
|
|
353
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
354
|
-
tf.puts 'ALLOW_SHORT'
|
|
355
|
-
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
356
|
-
tf.close
|
|
357
|
-
@pc.process_file(tf.path, "TGT1")
|
|
358
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].short_buffer_allowed).to be true
|
|
359
|
-
expect(@pc.telemetry["TGT1"]["PKT2"].short_buffer_allowed).to be false
|
|
360
|
-
tf.unlink
|
|
361
|
-
end
|
|
362
|
-
end
|
|
363
|
-
|
|
364
|
-
context "with META" do
|
|
365
|
-
it "saves metadata" do
|
|
366
|
-
tf = Tempfile.new('unittest')
|
|
367
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
368
|
-
tf.puts 'META TYPE "struct packet"'
|
|
369
|
-
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
370
|
-
tf.puts 'META TYPE "struct packet2"'
|
|
371
|
-
tf.close
|
|
372
|
-
@pc.process_file(tf.path, "TGT1")
|
|
373
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].meta['TYPE']).to eql ["struct packet"]
|
|
374
|
-
expect(@pc.telemetry["TGT1"]["PKT2"].meta['TYPE']).to eql ["struct packet2"]
|
|
375
|
-
tf.unlink
|
|
376
|
-
end
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
context "with DISABLE_MESSAGES" do
|
|
380
|
-
it "marks the packet as messages disabled" do
|
|
381
|
-
tf = Tempfile.new('unittest')
|
|
382
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
383
|
-
tf.puts 'DISABLE_MESSAGES'
|
|
384
|
-
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
385
|
-
tf.close
|
|
386
|
-
@pc.process_file(tf.path, "TGT1")
|
|
387
|
-
expect(@pc.commands["TGT1"]["PKT1"].messages_disabled).to be true
|
|
388
|
-
expect(@pc.commands["TGT1"]["PKT2"].messages_disabled).to be false
|
|
389
|
-
tf.unlink
|
|
390
|
-
end
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
context "with HIDDEN" do
|
|
394
|
-
it "marks the packet as hidden" do
|
|
395
|
-
tf = Tempfile.new('unittest')
|
|
396
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
397
|
-
tf.puts 'HIDDEN'
|
|
398
|
-
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
399
|
-
tf.close
|
|
400
|
-
@pc.process_file(tf.path, "TGT1")
|
|
401
|
-
expect(@pc.commands["TGT1"]["PKT1"].hidden).to be true
|
|
402
|
-
expect(@pc.commands["TGT1"]["PKT1"].disabled).to be false
|
|
403
|
-
expect(@pc.commands["TGT1"]["PKT2"].hidden).to be false
|
|
404
|
-
expect(@pc.commands["TGT1"]["PKT2"].disabled).to be false
|
|
405
|
-
tf.unlink
|
|
406
|
-
end
|
|
407
|
-
end
|
|
408
|
-
|
|
409
|
-
context "with DISABLED" do
|
|
410
|
-
it "marks the packet as disabled" do
|
|
411
|
-
tf = Tempfile.new('unittest')
|
|
412
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
413
|
-
tf.puts 'DISABLED'
|
|
414
|
-
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
415
|
-
tf.close
|
|
416
|
-
@pc.process_file(tf.path, "TGT1")
|
|
417
|
-
expect(@pc.commands["TGT1"]["PKT1"].hidden).to be true
|
|
418
|
-
expect(@pc.commands["TGT1"]["PKT1"].disabled).to be true
|
|
419
|
-
expect(@pc.commands["TGT1"]["PKT2"].hidden).to be false
|
|
420
|
-
expect(@pc.commands["TGT1"]["PKT2"].disabled).to be false
|
|
421
|
-
tf.unlink
|
|
422
|
-
end
|
|
423
|
-
end
|
|
424
|
-
|
|
425
|
-
context "with HAZARDOUS" do
|
|
426
|
-
it "marks the packet as hazardous" do
|
|
427
|
-
tf = Tempfile.new('unittest')
|
|
428
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
429
|
-
tf.puts 'HAZARDOUS'
|
|
430
|
-
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
431
|
-
tf.puts 'COMMAND tgt2 pkt1 LITTLE_ENDIAN "Description"'
|
|
432
|
-
tf.puts 'HAZARDOUS'
|
|
433
|
-
tf.puts 'COMMAND tgt2 pkt2 LITTLE_ENDIAN "Description"'
|
|
434
|
-
tf.close
|
|
435
|
-
@pc.process_file(tf.path, "SYSTEM")
|
|
436
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].hazardous).to be true
|
|
437
|
-
expect(@pc.telemetry["TGT1"]["PKT2"].hazardous).to be false
|
|
438
|
-
expect(@pc.commands["TGT2"]["PKT1"].hazardous).to be true
|
|
439
|
-
expect(@pc.commands["TGT2"]["PKT2"].hazardous).to be false
|
|
440
|
-
tf.unlink
|
|
441
|
-
end
|
|
442
|
-
|
|
443
|
-
it "takes a description" do
|
|
444
|
-
tf = Tempfile.new('unittest')
|
|
445
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
446
|
-
tf.puts 'HAZARDOUS "Hazardous description"'
|
|
447
|
-
tf.close
|
|
448
|
-
@pc.process_file(tf.path, "TGT1")
|
|
449
|
-
expect(@pc.commands["TGT1"]["PKT1"].hazardous).to be true
|
|
450
|
-
expect(@pc.commands["TGT1"]["PKT1"].hazardous_description).to eql "Hazardous description"
|
|
451
|
-
tf.unlink
|
|
452
|
-
end
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
context "with READ_CONVERSION and WRITE_CONVERSION" do
|
|
456
|
-
it "complains about missing conversion file" do
|
|
457
|
-
filename = File.join(File.dirname(__FILE__), "../test_only.rb")
|
|
458
|
-
File.delete(filename) if File.exist?(filename)
|
|
459
|
-
@pc = PacketConfig.new
|
|
460
|
-
|
|
461
|
-
tf = Tempfile.new('unittest')
|
|
462
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
463
|
-
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
464
|
-
tf.puts ' READ_CONVERSION test_only.rb'
|
|
465
|
-
tf.close
|
|
466
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /TestOnly class not found/)
|
|
467
|
-
tf.unlink
|
|
468
|
-
|
|
469
|
-
tf = Tempfile.new('unittest')
|
|
470
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
471
|
-
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
472
|
-
tf.puts ' WRITE_CONVERSION test_only.rb'
|
|
473
|
-
tf.close
|
|
474
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /TestOnly class not found/)
|
|
475
|
-
tf.unlink
|
|
476
|
-
end
|
|
477
|
-
|
|
478
|
-
it "complains about a non Cosmos::Conversion class" do
|
|
479
|
-
filename = File.join(File.dirname(__FILE__), "../conversion1.rb")
|
|
480
|
-
File.open(filename, 'w') do |file|
|
|
481
|
-
file.puts "class Conversion1"
|
|
482
|
-
file.puts " def call(value,packet,buffer)"
|
|
483
|
-
file.puts " end"
|
|
484
|
-
file.puts "end"
|
|
485
|
-
end
|
|
486
|
-
load 'conversion1.rb'
|
|
487
|
-
File.delete(filename) if File.exist?(filename)
|
|
488
|
-
|
|
489
|
-
tf = Tempfile.new('unittest')
|
|
490
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
491
|
-
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
492
|
-
tf.puts ' READ_CONVERSION conversion1.rb'
|
|
493
|
-
tf.close
|
|
494
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /read_conversion must be a Cosmos::Conversion but is a Conversion1/)
|
|
495
|
-
tf.unlink
|
|
496
|
-
|
|
497
|
-
tf = Tempfile.new('unittest')
|
|
498
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
499
|
-
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
500
|
-
tf.puts ' WRITE_CONVERSION conversion1.rb'
|
|
501
|
-
tf.close
|
|
502
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /write_conversion must be a Cosmos::Conversion but is a Conversion1/)
|
|
503
|
-
tf.unlink
|
|
504
|
-
end
|
|
505
|
-
|
|
506
|
-
it "parses the conversion" do
|
|
507
|
-
filename = File.join(File.dirname(__FILE__), "../conversion2.rb")
|
|
508
|
-
File.open(filename, 'w') do |file|
|
|
509
|
-
file.puts "require 'cosmos/conversions/conversion'"
|
|
510
|
-
file.puts "class Conversion2 < Cosmos::Conversion"
|
|
511
|
-
file.puts " def call(value,packet,buffer)"
|
|
512
|
-
file.puts " value * 2"
|
|
513
|
-
file.puts " end"
|
|
514
|
-
file.puts "end"
|
|
515
|
-
end
|
|
516
|
-
load 'conversion2.rb'
|
|
517
|
-
|
|
518
|
-
tf = Tempfile.new('unittest')
|
|
519
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
520
|
-
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
521
|
-
tf.puts ' READ_CONVERSION conversion2.rb'
|
|
522
|
-
tf.close
|
|
523
|
-
@pc.process_file(tf.path, "TGT1")
|
|
524
|
-
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
525
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 2
|
|
526
|
-
tf.unlink
|
|
527
|
-
|
|
528
|
-
tf = Tempfile.new('unittest')
|
|
529
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
530
|
-
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
531
|
-
tf.puts ' WRITE_CONVERSION conversion2.rb'
|
|
532
|
-
tf.close
|
|
533
|
-
@pc.process_file(tf.path, "TGT1")
|
|
534
|
-
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 3)
|
|
535
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 6
|
|
536
|
-
tf.unlink
|
|
537
|
-
|
|
538
|
-
File.delete(filename) if File.exist?(filename)
|
|
539
|
-
end
|
|
540
|
-
end
|
|
541
|
-
|
|
542
|
-
context "with POLY_READ_CONVERSION and POLY_WRITE_CONVERSION" do
|
|
543
|
-
it "performs a polynomial conversion" do
|
|
544
|
-
tf = Tempfile.new('unittest')
|
|
545
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
546
|
-
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
547
|
-
tf.puts ' POLY_READ_CONVERSION 5 2'
|
|
548
|
-
tf.close
|
|
549
|
-
@pc.process_file(tf.path, "TGT1")
|
|
550
|
-
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
551
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 7.0
|
|
552
|
-
tf.unlink
|
|
553
|
-
|
|
554
|
-
tf = Tempfile.new('unittest')
|
|
555
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
556
|
-
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
557
|
-
tf.puts ' POLY_WRITE_CONVERSION 5 2'
|
|
558
|
-
tf.close
|
|
559
|
-
@pc.process_file(tf.path, "TGT1")
|
|
560
|
-
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 3)
|
|
561
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 11
|
|
562
|
-
tf.unlink
|
|
563
|
-
end
|
|
564
|
-
end
|
|
565
|
-
|
|
566
|
-
context "with SEG_POLY_READ_CONVERSION and SEG_POLY_WRITE_CONVERSION" do
|
|
567
|
-
it "performs a segmented polynomial conversion" do
|
|
568
|
-
tf = Tempfile.new('unittest')
|
|
569
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
570
|
-
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
571
|
-
tf.puts ' SEG_POLY_READ_CONVERSION 0 1 2'
|
|
572
|
-
tf.puts ' SEG_POLY_READ_CONVERSION 5 2 3'
|
|
573
|
-
tf.close
|
|
574
|
-
@pc.process_file(tf.path, "TGT1")
|
|
575
|
-
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
576
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 3.0
|
|
577
|
-
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x05"
|
|
578
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 17.0
|
|
579
|
-
tf.unlink
|
|
580
|
-
|
|
581
|
-
tf = Tempfile.new('unittest')
|
|
582
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
583
|
-
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
584
|
-
tf.puts ' SEG_POLY_WRITE_CONVERSION 0 1 2'
|
|
585
|
-
tf.puts ' SEG_POLY_WRITE_CONVERSION 5 2 3'
|
|
586
|
-
tf.close
|
|
587
|
-
@pc.process_file(tf.path, "TGT1")
|
|
588
|
-
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 1)
|
|
589
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 3
|
|
590
|
-
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 5)
|
|
591
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 17
|
|
592
|
-
tf.unlink
|
|
593
|
-
end
|
|
594
|
-
end
|
|
595
|
-
|
|
596
|
-
context "with GENERIC_READ_CONVERSION and GENERIC_WRITE_CONVERSION" do
|
|
597
|
-
it "processes a generic conversion" do
|
|
598
|
-
tf = Tempfile.new('unittest')
|
|
599
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
600
|
-
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
601
|
-
tf.puts ' GENERIC_WRITE_CONVERSION_START'
|
|
602
|
-
tf.puts ' 2.0 * value'
|
|
603
|
-
tf.puts ' GENERIC_WRITE_CONVERSION_END'
|
|
604
|
-
tf.puts ' APPEND_ITEM item2 8 UINT "Item"'
|
|
605
|
-
tf.puts ' GENERIC_READ_CONVERSION_START'
|
|
606
|
-
tf.puts ' "Number #{value}"'
|
|
607
|
-
tf.puts ' GENERIC_READ_CONVERSION_END'
|
|
608
|
-
tf.close
|
|
609
|
-
@pc.process_file(tf.path, "TGT1")
|
|
610
|
-
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
611
|
-
pkt.enable_method_missing
|
|
612
|
-
pkt.item1 = 2
|
|
613
|
-
expect(pkt.item1).to eql 4
|
|
614
|
-
expect(pkt.item2).to eql "Number 0"
|
|
615
|
-
tf.unlink
|
|
616
|
-
end
|
|
617
|
-
|
|
618
|
-
it "processes a generic conversion with a defined type" do
|
|
619
|
-
tf = Tempfile.new('unittest')
|
|
620
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
621
|
-
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
622
|
-
tf.puts ' GENERIC_WRITE_CONVERSION_START UINT 8'
|
|
623
|
-
tf.puts ' 2.0 * value'
|
|
624
|
-
tf.puts ' GENERIC_WRITE_CONVERSION_END'
|
|
625
|
-
tf.puts ' APPEND_ITEM item2 64 FLOAT "Item"'
|
|
626
|
-
tf.puts ' GENERIC_READ_CONVERSION_START FLOAT 32'
|
|
627
|
-
tf.puts ' 2.0 * value'
|
|
628
|
-
tf.puts ' GENERIC_READ_CONVERSION_END'
|
|
629
|
-
tf.close
|
|
630
|
-
@pc.process_file(tf.path, "TGT1")
|
|
631
|
-
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
632
|
-
pkt.enable_method_missing
|
|
633
|
-
pkt.item1 = 400
|
|
634
|
-
expect(pkt.item1).to eql 800
|
|
635
|
-
pkt.item2 = 400
|
|
636
|
-
expect(pkt.item2).to eql 800.0
|
|
637
|
-
tf.unlink
|
|
638
|
-
end
|
|
639
|
-
end
|
|
640
|
-
|
|
641
|
-
context "with LIMITS" do
|
|
642
|
-
it "ensures limits sets have unique names" do
|
|
643
|
-
tf = Tempfile.new('unittest')
|
|
644
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
645
|
-
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
646
|
-
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 6 7'
|
|
647
|
-
tf.puts ' LIMITS TVAC 1 ENABLED 1 2 6 7'
|
|
648
|
-
tf.puts ' LIMITS DEFAULT 1 ENABLED 8 9 12 13'
|
|
649
|
-
tf.close
|
|
650
|
-
@pc.process_file(tf.path, "TGT1")
|
|
651
|
-
item = @pc.telemetry["TGT1"]["PKT1"].items["ITEM1"]
|
|
652
|
-
expect(item.limits.values.length).to eql 2
|
|
653
|
-
# Verify the last defined DEFAULT limits wins
|
|
654
|
-
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x04"
|
|
655
|
-
@pc.telemetry["TGT1"]["PKT1"].enable_limits("ITEM1")
|
|
656
|
-
@pc.telemetry["TGT1"]["PKT1"].check_limits
|
|
657
|
-
expect(item.limits.state).to eql :RED_LOW
|
|
658
|
-
tf.unlink
|
|
659
|
-
end
|
|
660
|
-
end
|
|
661
|
-
|
|
662
|
-
context "with UNITS" do
|
|
663
|
-
it "apply units when read :WITH_UNITS" do
|
|
664
|
-
tf = Tempfile.new('unittest')
|
|
665
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
666
|
-
tf.puts ' ITEM item1 0 8 UINT'
|
|
667
|
-
tf.puts ' UNITS Volts V'
|
|
668
|
-
tf.close
|
|
669
|
-
@pc.process_file(tf.path, "TGT1")
|
|
670
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1",:WITH_UNITS)).to eql "0 V"
|
|
671
|
-
tf.unlink
|
|
672
|
-
end
|
|
673
|
-
end
|
|
674
|
-
|
|
675
|
-
context "with META" do
|
|
676
|
-
it "saves metadata for items" do
|
|
677
|
-
tf = Tempfile.new('unittest')
|
|
678
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
679
|
-
tf.puts ' ITEM item1 0 8 UINT'
|
|
680
|
-
tf.puts ' META TYPE "unsigned int"'
|
|
681
|
-
tf.puts ' META OTHER'
|
|
682
|
-
tf.close
|
|
683
|
-
@pc.process_file(tf.path, "TGT1")
|
|
684
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').meta['TYPE']).to eql ['unsigned int']
|
|
685
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').meta['OTHER']).to eql []
|
|
686
|
-
tf.unlink
|
|
687
|
-
end
|
|
688
|
-
end
|
|
689
|
-
|
|
690
|
-
context "with OVERFLOW" do
|
|
691
|
-
it "sets the overflow type for items" do
|
|
692
|
-
tf = Tempfile.new('unittest')
|
|
693
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
694
|
-
tf.puts ' ITEM item1 0 8 UINT'
|
|
695
|
-
tf.puts ' OVERFLOW TRUNCATE'
|
|
696
|
-
tf.puts ' ITEM item2 8 8 UINT'
|
|
697
|
-
tf.puts ' OVERFLOW SATURATE'
|
|
698
|
-
tf.puts ' ITEM item3 16 8 UINT'
|
|
699
|
-
tf.puts ' OVERFLOW ERROR'
|
|
700
|
-
tf.puts ' ITEM item4 24 8 INT'
|
|
701
|
-
tf.puts ' OVERFLOW ERROR_ALLOW_HEX'
|
|
702
|
-
tf.close
|
|
703
|
-
@pc.process_file(tf.path, "TGT1")
|
|
704
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').overflow).to eql :TRUNCATE
|
|
705
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item2').overflow).to eql :SATURATE
|
|
706
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item3').overflow).to eql :ERROR
|
|
707
|
-
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item4').overflow).to eql :ERROR_ALLOW_HEX
|
|
708
|
-
tf.unlink
|
|
709
|
-
end
|
|
710
|
-
end
|
|
711
|
-
|
|
712
|
-
context "with REQUIRED" do
|
|
713
|
-
it "only applies to a command parameter" do
|
|
714
|
-
tf = Tempfile.new('unittest')
|
|
715
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
716
|
-
tf.puts ' ITEM item1 0 8 UINT'
|
|
717
|
-
tf.puts ' REQUIRED'
|
|
718
|
-
tf.close
|
|
719
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "REQUIRED only applies to command parameters")
|
|
720
|
-
tf.unlink
|
|
721
|
-
|
|
722
|
-
tf = Tempfile.new('unittest')
|
|
723
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
724
|
-
tf.puts ' REQUIRED'
|
|
725
|
-
tf.close
|
|
726
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "No current item for REQUIRED")
|
|
727
|
-
tf.unlink
|
|
728
|
-
end
|
|
729
|
-
|
|
730
|
-
it "marks a command parameter as required" do
|
|
731
|
-
tf = Tempfile.new('unittest')
|
|
732
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
733
|
-
tf.puts ' PARAMETER item1 0 8 UINT 0 1 1'
|
|
734
|
-
tf.puts ' REQUIRED'
|
|
735
|
-
tf.puts ' PARAMETER item2 0 8 UINT 0 1 1'
|
|
736
|
-
tf.close
|
|
737
|
-
@pc.process_file(tf.path, "TGT1")
|
|
738
|
-
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].required).to be true
|
|
739
|
-
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM2"].required).to be false
|
|
740
|
-
tf.unlink
|
|
741
|
-
end
|
|
742
|
-
end
|
|
743
|
-
|
|
744
|
-
context "with MINIMUM_VALUE, MAXIMUM_VALUE, DEFAULT_VALUE" do
|
|
745
|
-
it "complains if used on telemetry items" do
|
|
746
|
-
tf = Tempfile.new('unittest')
|
|
747
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
748
|
-
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
749
|
-
tf.puts ' MINIMUM_VALUE 1'
|
|
750
|
-
tf.close
|
|
751
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "MINIMUM_VALUE only applies to command parameters")
|
|
752
|
-
tf.unlink
|
|
753
|
-
|
|
754
|
-
tf = Tempfile.new('unittest')
|
|
755
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
756
|
-
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
757
|
-
tf.puts ' MAXIMUM_VALUE 3'
|
|
758
|
-
tf.close
|
|
759
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "MAXIMUM_VALUE only applies to command parameters")
|
|
760
|
-
tf.unlink
|
|
761
|
-
|
|
762
|
-
tf = Tempfile.new('unittest')
|
|
763
|
-
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
764
|
-
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
765
|
-
tf.puts ' DEFAULT_VALUE 2'
|
|
766
|
-
tf.close
|
|
767
|
-
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "DEFAULT_VALUE only applies to command parameters")
|
|
768
|
-
tf.unlink
|
|
769
|
-
end
|
|
770
|
-
|
|
771
|
-
it "allows overriding the defined value" do
|
|
772
|
-
tf = Tempfile.new('unittest')
|
|
773
|
-
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
774
|
-
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 1 1'
|
|
775
|
-
tf.puts ' APPEND_PARAMETER item2 16 STRING "HI"'
|
|
776
|
-
tf.close
|
|
777
|
-
@pc.process_file(tf.path, "TGT1")
|
|
778
|
-
@pc.commands["TGT1"]["PKT1"].restore_defaults
|
|
779
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 1
|
|
780
|
-
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].range).to eql (0..1)
|
|
781
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM2")).to eql "HI"
|
|
782
|
-
tf.unlink
|
|
783
|
-
|
|
784
|
-
# Now override the values from above
|
|
785
|
-
tf = Tempfile.new('unittest')
|
|
786
|
-
tf.puts 'SELECT_COMMAND tgt1 pkt1'
|
|
787
|
-
tf.puts 'SELECT_PARAMETER item1'
|
|
788
|
-
tf.puts ' MINIMUM_VALUE 1'
|
|
789
|
-
tf.puts ' MAXIMUM_VALUE 3'
|
|
790
|
-
tf.puts ' DEFAULT_VALUE 2'
|
|
791
|
-
tf.puts 'SELECT_PARAMETER item2'
|
|
792
|
-
tf.puts ' DEFAULT_VALUE "NO"'
|
|
793
|
-
tf.close
|
|
794
|
-
@pc.process_file(tf.path, "TGT1")
|
|
795
|
-
@pc.commands["TGT1"]["PKT1"].restore_defaults
|
|
796
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 2
|
|
797
|
-
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].range).to eql (1..3)
|
|
798
|
-
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM2")).to eql "NO"
|
|
799
|
-
tf.unlink
|
|
800
|
-
end
|
|
801
|
-
end
|
|
802
|
-
|
|
803
|
-
end # describe "process_file"
|
|
804
|
-
end
|
|
805
|
-
end
|
|
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/packet_config'
|
|
14
|
+
require 'tempfile'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
|
|
18
|
+
describe PacketConfig do
|
|
19
|
+
|
|
20
|
+
describe "process_file" do
|
|
21
|
+
before(:each) do
|
|
22
|
+
@pc = PacketConfig.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "complains about unknown keywords" do
|
|
26
|
+
tf = Tempfile.new('unittest')
|
|
27
|
+
tf.puts("BLAH")
|
|
28
|
+
tf.close
|
|
29
|
+
expect { @pc.process_file(tf.path, 'SYSTEM') }.to raise_error(ConfigParser::Error, "Unknown keyword 'BLAH'")
|
|
30
|
+
tf.unlink
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "with all telemetry keywords" do
|
|
34
|
+
before(:all) do
|
|
35
|
+
# top level keywords
|
|
36
|
+
@top_keywords = %w(SELECT_COMMAND SELECT_TELEMETRY LIMITS_GROUP LIMITS_GROUP_ITEM)
|
|
37
|
+
# Keywords that require a current packet from TELEMETRY keyword
|
|
38
|
+
@tlm_keywords = %w(SELECT_ITEM ITEM ID_ITEM ARRAY_ITEM APPEND_ITEM APPEND_ID_ITEM APPEND_ARRAY_ITEM PROCESSOR META)
|
|
39
|
+
# Keywords that require both a current packet and current item
|
|
40
|
+
@item_keywords = %w(STATE READ_CONVERSION WRITE_CONVERSION POLY_READ_CONVERSION POLY_WRITE_CONVERSION SEG_POLY_READ_CONVERSION SEG_POLY_WRITE_CONVERSION GENERIC_READ_CONVERSION_START GENERIC_WRITE_CONVERSION_START LIMITS LIMITS_RESPONSE UNITS FORMAT_STRING DESCRIPTION META)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "complains if a current packet is not defined" do
|
|
44
|
+
# Check for missing TELEMETRY line
|
|
45
|
+
@tlm_keywords.each do |keyword|
|
|
46
|
+
tf = Tempfile.new('unittest')
|
|
47
|
+
tf.puts(keyword)
|
|
48
|
+
tf.close
|
|
49
|
+
expect { @pc.process_file(tf.path, "SYSTEM") }.to raise_error(ConfigParser::Error, "No current packet for #{keyword}")
|
|
50
|
+
tf.unlink
|
|
51
|
+
end # end for each tlm_keywords
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "complains if a current item is not defined" do
|
|
55
|
+
# Check for missing ITEM definitions
|
|
56
|
+
@item_keywords.each do |keyword|
|
|
57
|
+
next if %w(META).include? keyword
|
|
58
|
+
tf = Tempfile.new('unittest')
|
|
59
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
60
|
+
tf.puts keyword
|
|
61
|
+
tf.close
|
|
62
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "No current item for #{keyword}")
|
|
63
|
+
tf.unlink
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "complains if there are not enough parameters" do
|
|
68
|
+
@top_keywords.each do |keyword|
|
|
69
|
+
tf = Tempfile.new('unittest')
|
|
70
|
+
tf.puts(keyword)
|
|
71
|
+
tf.close
|
|
72
|
+
expect { @pc.process_file(tf.path, "SYSTEM") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
73
|
+
tf.unlink
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
@tlm_keywords.each do |keyword|
|
|
77
|
+
tf = Tempfile.new('unittest')
|
|
78
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
79
|
+
tf.puts keyword
|
|
80
|
+
tf.close
|
|
81
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
82
|
+
tf.unlink
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
@item_keywords.each do |keyword|
|
|
86
|
+
next if %w(GENERIC_READ_CONVERSION_START GENERIC_WRITE_CONVERSION_START).include? keyword
|
|
87
|
+
tf = Tempfile.new('unittest')
|
|
88
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
89
|
+
tf.puts 'ITEM myitem 0 8 UINT "Test Item"'
|
|
90
|
+
tf.puts keyword
|
|
91
|
+
tf.close
|
|
92
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Not enough parameters for #{keyword}/)
|
|
93
|
+
tf.unlink
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "complains if there are too many parameters" do
|
|
98
|
+
@top_keywords.each do |keyword|
|
|
99
|
+
tf = Tempfile.new('unittest')
|
|
100
|
+
case keyword
|
|
101
|
+
when "SELECT_COMMAND"
|
|
102
|
+
tf.puts 'SELECT_COMMAND tgt1 pkt1 extra'
|
|
103
|
+
when "SELECT_TELEMETRY"
|
|
104
|
+
tf.puts 'SELECT_TELEMETRY tgt1 pkt1 extra'
|
|
105
|
+
when 'LIMITS_GROUP'
|
|
106
|
+
tf.puts "LIMITS_GROUP name extra"
|
|
107
|
+
when 'LIMITS_GROUP_ITEM'
|
|
108
|
+
tf.puts "LIMITS_GROUP_ITEM target packet item extra"
|
|
109
|
+
end
|
|
110
|
+
tf.close
|
|
111
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
112
|
+
tf.unlink
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
@tlm_keywords.each do |keyword|
|
|
116
|
+
next if %w(PROCESSOR META).include? keyword
|
|
117
|
+
tf = Tempfile.new('unittest')
|
|
118
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
119
|
+
case keyword
|
|
120
|
+
when "ITEM"
|
|
121
|
+
tf.puts 'ITEM myitem 0 8 UINT "Test Item" BIG_ENDIAN extra'
|
|
122
|
+
when "APPEND_ITEM"
|
|
123
|
+
tf.puts 'APPEND_ITEM myitem 8 UINT "Test Item" BIG_ENDIAN extra'
|
|
124
|
+
when "ID_ITEM"
|
|
125
|
+
tf.puts 'ID_ITEM myitem 0 8 UINT 1 "Test Item id=1" LITTLE_ENDIAN extra'
|
|
126
|
+
when "APPEND_ID_ITEM"
|
|
127
|
+
tf.puts 'APPEND_ID_ITEM myitem 8 UINT 1 "Test Item id=1" BIG_ENDIAN extra'
|
|
128
|
+
when "ARRAY_ITEM"
|
|
129
|
+
tf.puts 'ARRAY_ITEM myitem 0 8 UINT 24 "Test Item array" LITTLE_ENDIAN extra'
|
|
130
|
+
when "APPEND_ARRAY_ITEM"
|
|
131
|
+
tf.puts 'APPEND_ARRAY_ITEM myitem 0 8 UINT 24 "Test Item array" BIG_ENDIAN extra'
|
|
132
|
+
when "SELECT_ITEM"
|
|
133
|
+
tf.puts 'ITEM myitem 0 8 UINT'
|
|
134
|
+
tf.puts 'SELECT_ITEM myitem extra'
|
|
135
|
+
end
|
|
136
|
+
tf.close
|
|
137
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
138
|
+
tf.unlink
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
@item_keywords.each do |keyword|
|
|
142
|
+
# The following can have an "unlimited" number of arguments
|
|
143
|
+
next if %w(POLY_READ_CONVERSION POLY_WRITE_CONVERSION READ_CONVERSION WRITE_CONVERSION SEG_POLY_READ_CONVERSION SEG_POLY_WRITE_CONVERSION LIMITS_RESPONSE META).include? keyword
|
|
144
|
+
tf = Tempfile.new('unittest')
|
|
145
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
146
|
+
tf.puts 'ITEM myitem 0 8 UINT "Test Item"'
|
|
147
|
+
case keyword
|
|
148
|
+
when "STATE"
|
|
149
|
+
tf.puts 'STATE mystate 0 RED extra'
|
|
150
|
+
when "GENERIC_READ_CONVERSION_START", "GENERIC_WRITE_CONVERSION_START"
|
|
151
|
+
tf.puts "#{keyword} FLOAT 64 extra"
|
|
152
|
+
when "LIMITS"
|
|
153
|
+
tf.puts 'LIMITS mylimits 1 ENABLED 0 10 20 30 12 18 20'
|
|
154
|
+
when "UNITS"
|
|
155
|
+
tf.puts 'UNITS degrees deg extra'
|
|
156
|
+
when "FORMAT_STRING", "DESCRIPTION"
|
|
157
|
+
tf.puts "#{keyword} 'string' extra"
|
|
158
|
+
end
|
|
159
|
+
tf.close
|
|
160
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Too many parameters for #{keyword}/)
|
|
161
|
+
tf.unlink
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
context "with SELECT_COMMAND or SELECT_TELEMETRY" do
|
|
167
|
+
it "complains if the packet is not found" do
|
|
168
|
+
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
169
|
+
tf = Tempfile.new('unittest')
|
|
170
|
+
tf.puts keyword + ' tgt1 pkt1'
|
|
171
|
+
tf.puts 'SELECT_ITEM ITEM1'
|
|
172
|
+
tf.puts ' DESCRIPTION "New description"'
|
|
173
|
+
tf.close
|
|
174
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /Packet not found/)
|
|
175
|
+
tf.unlink
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "selects a packet for modification" do
|
|
180
|
+
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
181
|
+
tf = Tempfile.new('unittest')
|
|
182
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
183
|
+
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 0 0 "Item"'
|
|
184
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
185
|
+
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
186
|
+
tf.close
|
|
187
|
+
@pc.process_file(tf.path, "TGT1")
|
|
188
|
+
pkt = @pc.commands["TGT1"]["PKT1"] if keyword =~ /COMMAND/
|
|
189
|
+
pkt = @pc.telemetry["TGT1"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
190
|
+
expect(pkt.get_item("ITEM1").description).to eql "Item"
|
|
191
|
+
tf.unlink
|
|
192
|
+
|
|
193
|
+
tf = Tempfile.new('unittest')
|
|
194
|
+
tf.puts keyword + ' tgt1 pkt1'
|
|
195
|
+
tf.puts 'SELECT_PARAMETER ITEM1' if keyword =~ /COMMAND/
|
|
196
|
+
tf.puts 'SELECT_ITEM ITEM1' if keyword =~ /TELEMETRY/
|
|
197
|
+
tf.puts ' DESCRIPTION "New description"'
|
|
198
|
+
tf.close
|
|
199
|
+
@pc.process_file(tf.path, "TGT1")
|
|
200
|
+
pkt = @pc.commands["TGT1"]["PKT1"] if keyword =~ /COMMAND/
|
|
201
|
+
pkt = @pc.telemetry["TGT1"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
202
|
+
expect(pkt.get_item("ITEM1").description).to eql "New description"
|
|
203
|
+
tf.unlink
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it "substitutes the target name" do
|
|
208
|
+
%w(SELECT_COMMAND SELECT_TELEMETRY).each do |keyword|
|
|
209
|
+
tf = Tempfile.new('unittest')
|
|
210
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
211
|
+
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 0 0 "Item"'
|
|
212
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
213
|
+
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
214
|
+
tf.close
|
|
215
|
+
@pc.process_file(tf.path, "NEW")
|
|
216
|
+
pkt = @pc.commands["NEW"]["PKT1"] if keyword =~ /COMMAND/
|
|
217
|
+
pkt = @pc.telemetry["NEW"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
218
|
+
expect(pkt.get_item("ITEM1").description).to eql "Item"
|
|
219
|
+
tf.unlink
|
|
220
|
+
|
|
221
|
+
tf = Tempfile.new('unittest')
|
|
222
|
+
tf.puts keyword + ' tgt1 pkt1'
|
|
223
|
+
tf.puts 'SELECT_PARAMETER ITEM1' if keyword =~ /COMMAND/
|
|
224
|
+
tf.puts 'SELECT_ITEM ITEM1' if keyword =~ /TELEMETRY/
|
|
225
|
+
tf.puts ' DESCRIPTION "New description"'
|
|
226
|
+
tf.close
|
|
227
|
+
@pc.process_file(tf.path, "NEW")
|
|
228
|
+
pkt = @pc.commands["NEW"]["PKT1"] if keyword =~ /COMMAND/
|
|
229
|
+
pkt = @pc.telemetry["NEW"]["PKT1"] if keyword =~ /TELEMETRY/
|
|
230
|
+
expect(pkt.get_item("ITEM1").description).to eql "New description"
|
|
231
|
+
tf.unlink
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
context "with SELECT_PARAMETER" do
|
|
237
|
+
it "complains if used with SELECT_TELEMETRY" do
|
|
238
|
+
tf = Tempfile.new('unittest')
|
|
239
|
+
tf.puts 'TELEMETRY TGT PKT LITTLE_ENDIAN "Packet"'
|
|
240
|
+
tf.puts ' APPEND_ITEM ITEM 16 UINT "Item"'
|
|
241
|
+
tf.puts 'SELECT_TELEMETRY TGT PKT'
|
|
242
|
+
tf.puts ' SELECT_PARAMETER ITEM'
|
|
243
|
+
tf.close
|
|
244
|
+
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "SELECT_PARAMETER only applies to command packets")
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
it "complains if the parameter is not found" do
|
|
248
|
+
tf = Tempfile.new('unittest')
|
|
249
|
+
tf.puts 'COMMAND TGT PKT LITTLE_ENDIAN "Packet"'
|
|
250
|
+
tf.puts ' APPEND_PARAMETER PARAM 16 UINT 0 0 0 "Param"'
|
|
251
|
+
tf.close
|
|
252
|
+
@pc.process_file(tf.path, "TGT")
|
|
253
|
+
pkt = @pc.commands["TGT"]["PKT"]
|
|
254
|
+
expect(pkt.get_item("PARAM").description).to eql "Param"
|
|
255
|
+
tf.unlink
|
|
256
|
+
|
|
257
|
+
tf = Tempfile.new('unittest')
|
|
258
|
+
tf.puts 'SELECT_COMMAND TGT PKT'
|
|
259
|
+
tf.puts ' SELECT_PARAMETER PARAMX'
|
|
260
|
+
tf.puts ' DESCRIPTION "New description"'
|
|
261
|
+
tf.close
|
|
262
|
+
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "PARAMX not found in command packet TGT PKT")
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
context "with SELECT_ITEM" do
|
|
267
|
+
it "complains if used with SELECT_COMMAND" do
|
|
268
|
+
tf = Tempfile.new('unittest')
|
|
269
|
+
tf.puts 'COMMAND TGT PKT LITTLE_ENDIAN "Packet"'
|
|
270
|
+
tf.puts ' APPEND_PARAMETER PARAM 16 UINT 0 0 0 "Param"'
|
|
271
|
+
tf.puts 'SELECT_COMMAND TGT PKT'
|
|
272
|
+
tf.puts ' SELECT_ITEM PARAM'
|
|
273
|
+
tf.close
|
|
274
|
+
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "SELECT_ITEM only applies to telemetry packets")
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
it "complains if the item is not found" do
|
|
278
|
+
tf = Tempfile.new('unittest')
|
|
279
|
+
tf.puts 'TELEMETRY TGT PKT LITTLE_ENDIAN "Packet"'
|
|
280
|
+
tf.puts ' APPEND_ITEM ITEM 16 UINT "Item"'
|
|
281
|
+
tf.close
|
|
282
|
+
@pc.process_file(tf.path, "TGT")
|
|
283
|
+
pkt = @pc.telemetry["TGT"]["PKT"]
|
|
284
|
+
expect(pkt.get_item("ITEM").description).to eql "Item"
|
|
285
|
+
tf.unlink
|
|
286
|
+
|
|
287
|
+
tf = Tempfile.new('unittest')
|
|
288
|
+
tf.puts 'SELECT_TELEMETRY TGT PKT'
|
|
289
|
+
tf.puts ' SELECT_ITEM ITEMX'
|
|
290
|
+
tf.puts ' DESCRIPTION "New description"'
|
|
291
|
+
tf.close
|
|
292
|
+
expect { @pc.process_file(tf.path, "TGT") }.to raise_error(ConfigParser::Error, "ITEMX not found in telemetry packet TGT PKT")
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
context "with MACRO_APPEND" do
|
|
297
|
+
it "creates a range of items" do
|
|
298
|
+
tf = Tempfile.new('unittest')
|
|
299
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
300
|
+
tf.puts 'MACRO_APPEND_START 1 3'
|
|
301
|
+
tf.puts ' APPEND_ITEM BYTE 8 UINT "Setting #x"'
|
|
302
|
+
tf.puts 'MACRO_APPEND_END'
|
|
303
|
+
tf.close
|
|
304
|
+
@pc.process_file(tf.path, "TGT1")
|
|
305
|
+
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
306
|
+
expect(pkt.items.length).to eql 6 # 3 plus the RECEIVED_XXX items
|
|
307
|
+
expect(pkt.items.keys).to include('BYTE1','BYTE2','BYTE3')
|
|
308
|
+
expect(pkt.sorted_items[3].name).to eql 'BYTE1'
|
|
309
|
+
expect(pkt.sorted_items[4].name).to eql 'BYTE2'
|
|
310
|
+
expect(pkt.sorted_items[5].name).to eql 'BYTE3'
|
|
311
|
+
tf.unlink
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
context "with LIMITS_GROUP" do
|
|
316
|
+
it "creates a new limits group" do
|
|
317
|
+
tf = Tempfile.new('unittest')
|
|
318
|
+
tf.puts 'LIMITS_GROUP TVAC'
|
|
319
|
+
tf.puts 'LIMITS_GROUP VIBE'
|
|
320
|
+
tf.close
|
|
321
|
+
expect(@pc.limits_groups).to be_empty
|
|
322
|
+
@pc.process_file(tf.path, "TGT1")
|
|
323
|
+
expect(@pc.limits_groups).to include('TVAC','VIBE')
|
|
324
|
+
tf.unlink
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
context "with LIMITS_ITEM" do
|
|
329
|
+
it "adds a new limits item to the group" do
|
|
330
|
+
tf = Tempfile.new('unittest')
|
|
331
|
+
tf.puts 'LIMITS_GROUP TVAC'
|
|
332
|
+
tf.puts 'LIMITS_GROUP_ITEM TGT1 PKT1 ITEM1'
|
|
333
|
+
tf.close
|
|
334
|
+
expect(@pc.limits_groups).to be_empty
|
|
335
|
+
@pc.process_file(tf.path, "TGT1")
|
|
336
|
+
expect(@pc.limits_groups["TVAC"]).to eql [%w(TGT1 PKT1 ITEM1)]
|
|
337
|
+
tf.unlink
|
|
338
|
+
|
|
339
|
+
# Show we can 're-open' the group and add items
|
|
340
|
+
tf = Tempfile.new('unittest')
|
|
341
|
+
tf.puts 'LIMITS_GROUP TVAC'
|
|
342
|
+
tf.puts 'LIMITS_GROUP_ITEM TGT1 PKT1 ITEM2'
|
|
343
|
+
tf.close
|
|
344
|
+
@pc.process_file(tf.path, "TGT1")
|
|
345
|
+
expect(@pc.limits_groups["TVAC"]).to eql [%w(TGT1 PKT1 ITEM1), %w(TGT1 PKT1 ITEM2)]
|
|
346
|
+
tf.unlink
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
context "with ALLOW_SHORT" do
|
|
351
|
+
it "marks the packet as allowing short buffers" do
|
|
352
|
+
tf = Tempfile.new('unittest')
|
|
353
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
354
|
+
tf.puts 'ALLOW_SHORT'
|
|
355
|
+
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
356
|
+
tf.close
|
|
357
|
+
@pc.process_file(tf.path, "TGT1")
|
|
358
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].short_buffer_allowed).to be true
|
|
359
|
+
expect(@pc.telemetry["TGT1"]["PKT2"].short_buffer_allowed).to be false
|
|
360
|
+
tf.unlink
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
context "with META" do
|
|
365
|
+
it "saves metadata" do
|
|
366
|
+
tf = Tempfile.new('unittest')
|
|
367
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
368
|
+
tf.puts 'META TYPE "struct packet"'
|
|
369
|
+
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
370
|
+
tf.puts 'META TYPE "struct packet2"'
|
|
371
|
+
tf.close
|
|
372
|
+
@pc.process_file(tf.path, "TGT1")
|
|
373
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].meta['TYPE']).to eql ["struct packet"]
|
|
374
|
+
expect(@pc.telemetry["TGT1"]["PKT2"].meta['TYPE']).to eql ["struct packet2"]
|
|
375
|
+
tf.unlink
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
context "with DISABLE_MESSAGES" do
|
|
380
|
+
it "marks the packet as messages disabled" do
|
|
381
|
+
tf = Tempfile.new('unittest')
|
|
382
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
383
|
+
tf.puts 'DISABLE_MESSAGES'
|
|
384
|
+
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
385
|
+
tf.close
|
|
386
|
+
@pc.process_file(tf.path, "TGT1")
|
|
387
|
+
expect(@pc.commands["TGT1"]["PKT1"].messages_disabled).to be true
|
|
388
|
+
expect(@pc.commands["TGT1"]["PKT2"].messages_disabled).to be false
|
|
389
|
+
tf.unlink
|
|
390
|
+
end
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
context "with HIDDEN" do
|
|
394
|
+
it "marks the packet as hidden" do
|
|
395
|
+
tf = Tempfile.new('unittest')
|
|
396
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
397
|
+
tf.puts 'HIDDEN'
|
|
398
|
+
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
399
|
+
tf.close
|
|
400
|
+
@pc.process_file(tf.path, "TGT1")
|
|
401
|
+
expect(@pc.commands["TGT1"]["PKT1"].hidden).to be true
|
|
402
|
+
expect(@pc.commands["TGT1"]["PKT1"].disabled).to be false
|
|
403
|
+
expect(@pc.commands["TGT1"]["PKT2"].hidden).to be false
|
|
404
|
+
expect(@pc.commands["TGT1"]["PKT2"].disabled).to be false
|
|
405
|
+
tf.unlink
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
context "with DISABLED" do
|
|
410
|
+
it "marks the packet as disabled" do
|
|
411
|
+
tf = Tempfile.new('unittest')
|
|
412
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
413
|
+
tf.puts 'DISABLED'
|
|
414
|
+
tf.puts 'COMMAND tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
415
|
+
tf.close
|
|
416
|
+
@pc.process_file(tf.path, "TGT1")
|
|
417
|
+
expect(@pc.commands["TGT1"]["PKT1"].hidden).to be true
|
|
418
|
+
expect(@pc.commands["TGT1"]["PKT1"].disabled).to be true
|
|
419
|
+
expect(@pc.commands["TGT1"]["PKT2"].hidden).to be false
|
|
420
|
+
expect(@pc.commands["TGT1"]["PKT2"].disabled).to be false
|
|
421
|
+
tf.unlink
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
context "with HAZARDOUS" do
|
|
426
|
+
it "marks the packet as hazardous" do
|
|
427
|
+
tf = Tempfile.new('unittest')
|
|
428
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
429
|
+
tf.puts 'HAZARDOUS'
|
|
430
|
+
tf.puts 'TELEMETRY tgt1 pkt2 LITTLE_ENDIAN "Description"'
|
|
431
|
+
tf.puts 'COMMAND tgt2 pkt1 LITTLE_ENDIAN "Description"'
|
|
432
|
+
tf.puts 'HAZARDOUS'
|
|
433
|
+
tf.puts 'COMMAND tgt2 pkt2 LITTLE_ENDIAN "Description"'
|
|
434
|
+
tf.close
|
|
435
|
+
@pc.process_file(tf.path, "SYSTEM")
|
|
436
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].hazardous).to be true
|
|
437
|
+
expect(@pc.telemetry["TGT1"]["PKT2"].hazardous).to be false
|
|
438
|
+
expect(@pc.commands["TGT2"]["PKT1"].hazardous).to be true
|
|
439
|
+
expect(@pc.commands["TGT2"]["PKT2"].hazardous).to be false
|
|
440
|
+
tf.unlink
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
it "takes a description" do
|
|
444
|
+
tf = Tempfile.new('unittest')
|
|
445
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Description"'
|
|
446
|
+
tf.puts 'HAZARDOUS "Hazardous description"'
|
|
447
|
+
tf.close
|
|
448
|
+
@pc.process_file(tf.path, "TGT1")
|
|
449
|
+
expect(@pc.commands["TGT1"]["PKT1"].hazardous).to be true
|
|
450
|
+
expect(@pc.commands["TGT1"]["PKT1"].hazardous_description).to eql "Hazardous description"
|
|
451
|
+
tf.unlink
|
|
452
|
+
end
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
context "with READ_CONVERSION and WRITE_CONVERSION" do
|
|
456
|
+
it "complains about missing conversion file" do
|
|
457
|
+
filename = File.join(File.dirname(__FILE__), "../test_only.rb")
|
|
458
|
+
File.delete(filename) if File.exist?(filename)
|
|
459
|
+
@pc = PacketConfig.new
|
|
460
|
+
|
|
461
|
+
tf = Tempfile.new('unittest')
|
|
462
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
463
|
+
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
464
|
+
tf.puts ' READ_CONVERSION test_only.rb'
|
|
465
|
+
tf.close
|
|
466
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /TestOnly class not found/)
|
|
467
|
+
tf.unlink
|
|
468
|
+
|
|
469
|
+
tf = Tempfile.new('unittest')
|
|
470
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
471
|
+
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
472
|
+
tf.puts ' WRITE_CONVERSION test_only.rb'
|
|
473
|
+
tf.close
|
|
474
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /TestOnly class not found/)
|
|
475
|
+
tf.unlink
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
it "complains about a non Cosmos::Conversion class" do
|
|
479
|
+
filename = File.join(File.dirname(__FILE__), "../conversion1.rb")
|
|
480
|
+
File.open(filename, 'w') do |file|
|
|
481
|
+
file.puts "class Conversion1"
|
|
482
|
+
file.puts " def call(value,packet,buffer)"
|
|
483
|
+
file.puts " end"
|
|
484
|
+
file.puts "end"
|
|
485
|
+
end
|
|
486
|
+
load 'conversion1.rb'
|
|
487
|
+
File.delete(filename) if File.exist?(filename)
|
|
488
|
+
|
|
489
|
+
tf = Tempfile.new('unittest')
|
|
490
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
491
|
+
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
492
|
+
tf.puts ' READ_CONVERSION conversion1.rb'
|
|
493
|
+
tf.close
|
|
494
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /read_conversion must be a Cosmos::Conversion but is a Conversion1/)
|
|
495
|
+
tf.unlink
|
|
496
|
+
|
|
497
|
+
tf = Tempfile.new('unittest')
|
|
498
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
499
|
+
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
500
|
+
tf.puts ' WRITE_CONVERSION conversion1.rb'
|
|
501
|
+
tf.close
|
|
502
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, /write_conversion must be a Cosmos::Conversion but is a Conversion1/)
|
|
503
|
+
tf.unlink
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
it "parses the conversion" do
|
|
507
|
+
filename = File.join(File.dirname(__FILE__), "../conversion2.rb")
|
|
508
|
+
File.open(filename, 'w') do |file|
|
|
509
|
+
file.puts "require 'cosmos/conversions/conversion'"
|
|
510
|
+
file.puts "class Conversion2 < Cosmos::Conversion"
|
|
511
|
+
file.puts " def call(value,packet,buffer)"
|
|
512
|
+
file.puts " value * 2"
|
|
513
|
+
file.puts " end"
|
|
514
|
+
file.puts "end"
|
|
515
|
+
end
|
|
516
|
+
load 'conversion2.rb'
|
|
517
|
+
|
|
518
|
+
tf = Tempfile.new('unittest')
|
|
519
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
520
|
+
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
521
|
+
tf.puts ' READ_CONVERSION conversion2.rb'
|
|
522
|
+
tf.close
|
|
523
|
+
@pc.process_file(tf.path, "TGT1")
|
|
524
|
+
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
525
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 2
|
|
526
|
+
tf.unlink
|
|
527
|
+
|
|
528
|
+
tf = Tempfile.new('unittest')
|
|
529
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
530
|
+
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
531
|
+
tf.puts ' WRITE_CONVERSION conversion2.rb'
|
|
532
|
+
tf.close
|
|
533
|
+
@pc.process_file(tf.path, "TGT1")
|
|
534
|
+
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 3)
|
|
535
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 6
|
|
536
|
+
tf.unlink
|
|
537
|
+
|
|
538
|
+
File.delete(filename) if File.exist?(filename)
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
context "with POLY_READ_CONVERSION and POLY_WRITE_CONVERSION" do
|
|
543
|
+
it "performs a polynomial conversion" do
|
|
544
|
+
tf = Tempfile.new('unittest')
|
|
545
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
546
|
+
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
547
|
+
tf.puts ' POLY_READ_CONVERSION 5 2'
|
|
548
|
+
tf.close
|
|
549
|
+
@pc.process_file(tf.path, "TGT1")
|
|
550
|
+
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
551
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 7.0
|
|
552
|
+
tf.unlink
|
|
553
|
+
|
|
554
|
+
tf = Tempfile.new('unittest')
|
|
555
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
556
|
+
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
557
|
+
tf.puts ' POLY_WRITE_CONVERSION 5 2'
|
|
558
|
+
tf.close
|
|
559
|
+
@pc.process_file(tf.path, "TGT1")
|
|
560
|
+
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 3)
|
|
561
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 11
|
|
562
|
+
tf.unlink
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
context "with SEG_POLY_READ_CONVERSION and SEG_POLY_WRITE_CONVERSION" do
|
|
567
|
+
it "performs a segmented polynomial conversion" do
|
|
568
|
+
tf = Tempfile.new('unittest')
|
|
569
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
570
|
+
tf.puts ' ITEM item1 0 16 INT "Integer Item"'
|
|
571
|
+
tf.puts ' SEG_POLY_READ_CONVERSION 0 1 2'
|
|
572
|
+
tf.puts ' SEG_POLY_READ_CONVERSION 5 2 3'
|
|
573
|
+
tf.close
|
|
574
|
+
@pc.process_file(tf.path, "TGT1")
|
|
575
|
+
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x01"
|
|
576
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 3.0
|
|
577
|
+
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x05"
|
|
578
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1")).to eql 17.0
|
|
579
|
+
tf.unlink
|
|
580
|
+
|
|
581
|
+
tf = Tempfile.new('unittest')
|
|
582
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
583
|
+
tf.puts ' PARAMETER item1 0 16 INT 0 0 0'
|
|
584
|
+
tf.puts ' SEG_POLY_WRITE_CONVERSION 0 1 2'
|
|
585
|
+
tf.puts ' SEG_POLY_WRITE_CONVERSION 5 2 3'
|
|
586
|
+
tf.close
|
|
587
|
+
@pc.process_file(tf.path, "TGT1")
|
|
588
|
+
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 1)
|
|
589
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 3
|
|
590
|
+
@pc.commands["TGT1"]["PKT1"].write("ITEM1", 5)
|
|
591
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 17
|
|
592
|
+
tf.unlink
|
|
593
|
+
end
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
context "with GENERIC_READ_CONVERSION and GENERIC_WRITE_CONVERSION" do
|
|
597
|
+
it "processes a generic conversion" do
|
|
598
|
+
tf = Tempfile.new('unittest')
|
|
599
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
600
|
+
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
601
|
+
tf.puts ' GENERIC_WRITE_CONVERSION_START'
|
|
602
|
+
tf.puts ' 2.0 * value'
|
|
603
|
+
tf.puts ' GENERIC_WRITE_CONVERSION_END'
|
|
604
|
+
tf.puts ' APPEND_ITEM item2 8 UINT "Item"'
|
|
605
|
+
tf.puts ' GENERIC_READ_CONVERSION_START'
|
|
606
|
+
tf.puts ' "Number #{value}"'
|
|
607
|
+
tf.puts ' GENERIC_READ_CONVERSION_END'
|
|
608
|
+
tf.close
|
|
609
|
+
@pc.process_file(tf.path, "TGT1")
|
|
610
|
+
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
611
|
+
pkt.enable_method_missing
|
|
612
|
+
pkt.item1 = 2
|
|
613
|
+
expect(pkt.item1).to eql 4
|
|
614
|
+
expect(pkt.item2).to eql "Number 0"
|
|
615
|
+
tf.unlink
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
it "processes a generic conversion with a defined type" do
|
|
619
|
+
tf = Tempfile.new('unittest')
|
|
620
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
621
|
+
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
622
|
+
tf.puts ' GENERIC_WRITE_CONVERSION_START UINT 8'
|
|
623
|
+
tf.puts ' 2.0 * value'
|
|
624
|
+
tf.puts ' GENERIC_WRITE_CONVERSION_END'
|
|
625
|
+
tf.puts ' APPEND_ITEM item2 64 FLOAT "Item"'
|
|
626
|
+
tf.puts ' GENERIC_READ_CONVERSION_START FLOAT 32'
|
|
627
|
+
tf.puts ' 2.0 * value'
|
|
628
|
+
tf.puts ' GENERIC_READ_CONVERSION_END'
|
|
629
|
+
tf.close
|
|
630
|
+
@pc.process_file(tf.path, "TGT1")
|
|
631
|
+
pkt = @pc.telemetry["TGT1"]["PKT1"]
|
|
632
|
+
pkt.enable_method_missing
|
|
633
|
+
pkt.item1 = 400
|
|
634
|
+
expect(pkt.item1).to eql 800
|
|
635
|
+
pkt.item2 = 400
|
|
636
|
+
expect(pkt.item2).to eql 800.0
|
|
637
|
+
tf.unlink
|
|
638
|
+
end
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
context "with LIMITS" do
|
|
642
|
+
it "ensures limits sets have unique names" do
|
|
643
|
+
tf = Tempfile.new('unittest')
|
|
644
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
645
|
+
tf.puts ' APPEND_ITEM item1 16 UINT "Item"'
|
|
646
|
+
tf.puts ' LIMITS DEFAULT 1 ENABLED 1 2 6 7'
|
|
647
|
+
tf.puts ' LIMITS TVAC 1 ENABLED 1 2 6 7'
|
|
648
|
+
tf.puts ' LIMITS DEFAULT 1 ENABLED 8 9 12 13'
|
|
649
|
+
tf.close
|
|
650
|
+
@pc.process_file(tf.path, "TGT1")
|
|
651
|
+
item = @pc.telemetry["TGT1"]["PKT1"].items["ITEM1"]
|
|
652
|
+
expect(item.limits.values.length).to eql 2
|
|
653
|
+
# Verify the last defined DEFAULT limits wins
|
|
654
|
+
@pc.telemetry["TGT1"]["PKT1"].buffer = "\x04"
|
|
655
|
+
@pc.telemetry["TGT1"]["PKT1"].enable_limits("ITEM1")
|
|
656
|
+
@pc.telemetry["TGT1"]["PKT1"].check_limits
|
|
657
|
+
expect(item.limits.state).to eql :RED_LOW
|
|
658
|
+
tf.unlink
|
|
659
|
+
end
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
context "with UNITS" do
|
|
663
|
+
it "apply units when read :WITH_UNITS" do
|
|
664
|
+
tf = Tempfile.new('unittest')
|
|
665
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
666
|
+
tf.puts ' ITEM item1 0 8 UINT'
|
|
667
|
+
tf.puts ' UNITS Volts V'
|
|
668
|
+
tf.close
|
|
669
|
+
@pc.process_file(tf.path, "TGT1")
|
|
670
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].read("ITEM1",:WITH_UNITS)).to eql "0 V"
|
|
671
|
+
tf.unlink
|
|
672
|
+
end
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
context "with META" do
|
|
676
|
+
it "saves metadata for items" do
|
|
677
|
+
tf = Tempfile.new('unittest')
|
|
678
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
679
|
+
tf.puts ' ITEM item1 0 8 UINT'
|
|
680
|
+
tf.puts ' META TYPE "unsigned int"'
|
|
681
|
+
tf.puts ' META OTHER'
|
|
682
|
+
tf.close
|
|
683
|
+
@pc.process_file(tf.path, "TGT1")
|
|
684
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').meta['TYPE']).to eql ['unsigned int']
|
|
685
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').meta['OTHER']).to eql []
|
|
686
|
+
tf.unlink
|
|
687
|
+
end
|
|
688
|
+
end
|
|
689
|
+
|
|
690
|
+
context "with OVERFLOW" do
|
|
691
|
+
it "sets the overflow type for items" do
|
|
692
|
+
tf = Tempfile.new('unittest')
|
|
693
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
694
|
+
tf.puts ' ITEM item1 0 8 UINT'
|
|
695
|
+
tf.puts ' OVERFLOW TRUNCATE'
|
|
696
|
+
tf.puts ' ITEM item2 8 8 UINT'
|
|
697
|
+
tf.puts ' OVERFLOW SATURATE'
|
|
698
|
+
tf.puts ' ITEM item3 16 8 UINT'
|
|
699
|
+
tf.puts ' OVERFLOW ERROR'
|
|
700
|
+
tf.puts ' ITEM item4 24 8 INT'
|
|
701
|
+
tf.puts ' OVERFLOW ERROR_ALLOW_HEX'
|
|
702
|
+
tf.close
|
|
703
|
+
@pc.process_file(tf.path, "TGT1")
|
|
704
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item1').overflow).to eql :TRUNCATE
|
|
705
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item2').overflow).to eql :SATURATE
|
|
706
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item3').overflow).to eql :ERROR
|
|
707
|
+
expect(@pc.telemetry["TGT1"]["PKT1"].get_item('item4').overflow).to eql :ERROR_ALLOW_HEX
|
|
708
|
+
tf.unlink
|
|
709
|
+
end
|
|
710
|
+
end
|
|
711
|
+
|
|
712
|
+
context "with REQUIRED" do
|
|
713
|
+
it "only applies to a command parameter" do
|
|
714
|
+
tf = Tempfile.new('unittest')
|
|
715
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
716
|
+
tf.puts ' ITEM item1 0 8 UINT'
|
|
717
|
+
tf.puts ' REQUIRED'
|
|
718
|
+
tf.close
|
|
719
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "REQUIRED only applies to command parameters")
|
|
720
|
+
tf.unlink
|
|
721
|
+
|
|
722
|
+
tf = Tempfile.new('unittest')
|
|
723
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
724
|
+
tf.puts ' REQUIRED'
|
|
725
|
+
tf.close
|
|
726
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "No current item for REQUIRED")
|
|
727
|
+
tf.unlink
|
|
728
|
+
end
|
|
729
|
+
|
|
730
|
+
it "marks a command parameter as required" do
|
|
731
|
+
tf = Tempfile.new('unittest')
|
|
732
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
733
|
+
tf.puts ' PARAMETER item1 0 8 UINT 0 1 1'
|
|
734
|
+
tf.puts ' REQUIRED'
|
|
735
|
+
tf.puts ' PARAMETER item2 0 8 UINT 0 1 1'
|
|
736
|
+
tf.close
|
|
737
|
+
@pc.process_file(tf.path, "TGT1")
|
|
738
|
+
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].required).to be true
|
|
739
|
+
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM2"].required).to be false
|
|
740
|
+
tf.unlink
|
|
741
|
+
end
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
context "with MINIMUM_VALUE, MAXIMUM_VALUE, DEFAULT_VALUE" do
|
|
745
|
+
it "complains if used on telemetry items" do
|
|
746
|
+
tf = Tempfile.new('unittest')
|
|
747
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
748
|
+
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
749
|
+
tf.puts ' MINIMUM_VALUE 1'
|
|
750
|
+
tf.close
|
|
751
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "MINIMUM_VALUE only applies to command parameters")
|
|
752
|
+
tf.unlink
|
|
753
|
+
|
|
754
|
+
tf = Tempfile.new('unittest')
|
|
755
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
756
|
+
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
757
|
+
tf.puts ' MAXIMUM_VALUE 3'
|
|
758
|
+
tf.close
|
|
759
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "MAXIMUM_VALUE only applies to command parameters")
|
|
760
|
+
tf.unlink
|
|
761
|
+
|
|
762
|
+
tf = Tempfile.new('unittest')
|
|
763
|
+
tf.puts 'TELEMETRY tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
764
|
+
tf.puts ' APPEND_ITEM item1 16 UINT'
|
|
765
|
+
tf.puts ' DEFAULT_VALUE 2'
|
|
766
|
+
tf.close
|
|
767
|
+
expect { @pc.process_file(tf.path, "TGT1") }.to raise_error(ConfigParser::Error, "DEFAULT_VALUE only applies to command parameters")
|
|
768
|
+
tf.unlink
|
|
769
|
+
end
|
|
770
|
+
|
|
771
|
+
it "allows overriding the defined value" do
|
|
772
|
+
tf = Tempfile.new('unittest')
|
|
773
|
+
tf.puts 'COMMAND tgt1 pkt1 LITTLE_ENDIAN "Packet"'
|
|
774
|
+
tf.puts ' APPEND_PARAMETER item1 16 UINT 0 1 1'
|
|
775
|
+
tf.puts ' APPEND_PARAMETER item2 16 STRING "HI"'
|
|
776
|
+
tf.close
|
|
777
|
+
@pc.process_file(tf.path, "TGT1")
|
|
778
|
+
@pc.commands["TGT1"]["PKT1"].restore_defaults
|
|
779
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 1
|
|
780
|
+
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].range).to eql (0..1)
|
|
781
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM2")).to eql "HI"
|
|
782
|
+
tf.unlink
|
|
783
|
+
|
|
784
|
+
# Now override the values from above
|
|
785
|
+
tf = Tempfile.new('unittest')
|
|
786
|
+
tf.puts 'SELECT_COMMAND tgt1 pkt1'
|
|
787
|
+
tf.puts 'SELECT_PARAMETER item1'
|
|
788
|
+
tf.puts ' MINIMUM_VALUE 1'
|
|
789
|
+
tf.puts ' MAXIMUM_VALUE 3'
|
|
790
|
+
tf.puts ' DEFAULT_VALUE 2'
|
|
791
|
+
tf.puts 'SELECT_PARAMETER item2'
|
|
792
|
+
tf.puts ' DEFAULT_VALUE "NO"'
|
|
793
|
+
tf.close
|
|
794
|
+
@pc.process_file(tf.path, "TGT1")
|
|
795
|
+
@pc.commands["TGT1"]["PKT1"].restore_defaults
|
|
796
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM1")).to eql 2
|
|
797
|
+
expect(@pc.commands["TGT1"]["PKT1"].items["ITEM1"].range).to eql (1..3)
|
|
798
|
+
expect(@pc.commands["TGT1"]["PKT1"].read("ITEM2")).to eql "NO"
|
|
799
|
+
tf.unlink
|
|
800
|
+
end
|
|
801
|
+
end
|
|
802
|
+
|
|
803
|
+
end # describe "process_file"
|
|
804
|
+
end
|
|
805
|
+
end
|