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,70 +1,70 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'cosmos'
|
|
12
|
-
require 'cosmos/tools/table_manager/table_item'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
# Table extends Packet by adding more attributes relative to
|
|
17
|
-
# displaying binary data in a gui.
|
|
18
|
-
class Table < Packet
|
|
19
|
-
attr_accessor :num_rows
|
|
20
|
-
attr_accessor :num_columns
|
|
21
|
-
attr_reader :name
|
|
22
|
-
attr_reader :type
|
|
23
|
-
attr_reader :table_id
|
|
24
|
-
attr_reader :filename
|
|
25
|
-
|
|
26
|
-
# Constructor for a TableDefinition
|
|
27
|
-
def initialize(name, description, type, endianness, table_id, filename)
|
|
28
|
-
super('TABLE', name, endianness, description, '', TableItem)
|
|
29
|
-
@name = name
|
|
30
|
-
@type = type
|
|
31
|
-
@table_id = table_id
|
|
32
|
-
@filename = filename
|
|
33
|
-
@num_columns = 0
|
|
34
|
-
@num_rows = 0
|
|
35
|
-
@num_columns = 1 if @type == :ONE_DIMENSIONAL
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Calls define_item in Packet but also incrememts @num_columns
|
|
39
|
-
# if this table is a REPEATING table.
|
|
40
|
-
def create_param(name, bit_offset, bit_size, type, description, range, default, display_type, editable)
|
|
41
|
-
@num_columns += 1 if @type == :TWO_DIMENSIONAL
|
|
42
|
-
item = define_item(name, bit_offset, bit_size, type)
|
|
43
|
-
item.description = description
|
|
44
|
-
item.range = range
|
|
45
|
-
item.default = default
|
|
46
|
-
item.display_type = display_type
|
|
47
|
-
item.editable = editable
|
|
48
|
-
item
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Calls define_packet_item in GenericPacket to duplicate the passed in packet
|
|
52
|
-
# item. name_extension is concatenated with the orignal item name to make it
|
|
53
|
-
# unique.
|
|
54
|
-
def duplicate_item(item, name_extension, bit_offset)
|
|
55
|
-
new_item = define_item("#{item.name[0...-1]}#{name_extension}",
|
|
56
|
-
bit_offset, item.bit_size, item.data_type, item.array_size,
|
|
57
|
-
item.endianness, item.overflow,
|
|
58
|
-
item.format_string, item.read_conversion,
|
|
59
|
-
item.write_conversion, item.id_value)
|
|
60
|
-
new_item.description = item.description
|
|
61
|
-
new_item.range = item.range
|
|
62
|
-
new_item.display_type = item.display_type
|
|
63
|
-
new_item.editable = item.editable
|
|
64
|
-
new_item.states = item.states
|
|
65
|
-
new_item.constraint = item.constraint
|
|
66
|
-
new_item
|
|
67
|
-
end
|
|
68
|
-
end # class Table
|
|
69
|
-
|
|
70
|
-
end # module Cosmos
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/tools/table_manager/table_item'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
# Table extends Packet by adding more attributes relative to
|
|
17
|
+
# displaying binary data in a gui.
|
|
18
|
+
class Table < Packet
|
|
19
|
+
attr_accessor :num_rows
|
|
20
|
+
attr_accessor :num_columns
|
|
21
|
+
attr_reader :name
|
|
22
|
+
attr_reader :type
|
|
23
|
+
attr_reader :table_id
|
|
24
|
+
attr_reader :filename
|
|
25
|
+
|
|
26
|
+
# Constructor for a TableDefinition
|
|
27
|
+
def initialize(name, description, type, endianness, table_id, filename)
|
|
28
|
+
super('TABLE', name, endianness, description, '', TableItem)
|
|
29
|
+
@name = name
|
|
30
|
+
@type = type
|
|
31
|
+
@table_id = table_id
|
|
32
|
+
@filename = filename
|
|
33
|
+
@num_columns = 0
|
|
34
|
+
@num_rows = 0
|
|
35
|
+
@num_columns = 1 if @type == :ONE_DIMENSIONAL
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Calls define_item in Packet but also incrememts @num_columns
|
|
39
|
+
# if this table is a REPEATING table.
|
|
40
|
+
def create_param(name, bit_offset, bit_size, type, description, range, default, display_type, editable)
|
|
41
|
+
@num_columns += 1 if @type == :TWO_DIMENSIONAL
|
|
42
|
+
item = define_item(name, bit_offset, bit_size, type)
|
|
43
|
+
item.description = description
|
|
44
|
+
item.range = range
|
|
45
|
+
item.default = default
|
|
46
|
+
item.display_type = display_type
|
|
47
|
+
item.editable = editable
|
|
48
|
+
item
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Calls define_packet_item in GenericPacket to duplicate the passed in packet
|
|
52
|
+
# item. name_extension is concatenated with the orignal item name to make it
|
|
53
|
+
# unique.
|
|
54
|
+
def duplicate_item(item, name_extension, bit_offset)
|
|
55
|
+
new_item = define_item("#{item.name[0...-1]}#{name_extension}",
|
|
56
|
+
bit_offset, item.bit_size, item.data_type, item.array_size,
|
|
57
|
+
item.endianness, item.overflow,
|
|
58
|
+
item.format_string, item.read_conversion,
|
|
59
|
+
item.write_conversion, item.id_value)
|
|
60
|
+
new_item.description = item.description
|
|
61
|
+
new_item.range = item.range
|
|
62
|
+
new_item.display_type = item.display_type
|
|
63
|
+
new_item.editable = item.editable
|
|
64
|
+
new_item.states = item.states
|
|
65
|
+
new_item.constraint = item.constraint
|
|
66
|
+
new_item
|
|
67
|
+
end
|
|
68
|
+
end # class Table
|
|
69
|
+
|
|
70
|
+
end # module Cosmos
|
|
@@ -1,764 +1,764 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'cosmos'
|
|
12
|
-
require 'cosmos/tools/table_manager/table'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
# TableConfig provides capabilities to read an ascii file that defines the
|
|
17
|
-
# table parameters in a system and create a set of Tables for each.
|
|
18
|
-
class TableConfig
|
|
19
|
-
|
|
20
|
-
# Constructor for a TableConfig
|
|
21
|
-
def initialize
|
|
22
|
-
@ordered_tables = nil
|
|
23
|
-
@tables = nil
|
|
24
|
-
@current_name = nil
|
|
25
|
-
@current_table = nil
|
|
26
|
-
@current_parameter = nil
|
|
27
|
-
@cur_bit_offset = 0
|
|
28
|
-
@default_count = 0
|
|
29
|
-
@item_definitions = nil
|
|
30
|
-
@table_names = nil
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Processes a file and adds in the tables defined in the file
|
|
34
|
-
def process(filename)
|
|
35
|
-
building_generic_conversion = false
|
|
36
|
-
converted_type = nil
|
|
37
|
-
converted_bit_size = nil
|
|
38
|
-
proc_text = ''
|
|
39
|
-
|
|
40
|
-
Logger.info "Processing table config in file '#{filename}'"
|
|
41
|
-
|
|
42
|
-
unless test ?f, filename
|
|
43
|
-
Logger.error "File does not exist"
|
|
44
|
-
raise "ERROR! Table config file #{filename} does not exist!"
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
parser = ConfigParser.new
|
|
48
|
-
parser.parse_file(filename) do |keyword, parameters|
|
|
49
|
-
next unless keyword
|
|
50
|
-
if building_generic_conversion
|
|
51
|
-
case keyword
|
|
52
|
-
# Complete a generic conversion
|
|
53
|
-
when 'GENERIC_READ_CONVERSION_END', 'GENERIC_WRITE_CONVERSION_END', 'CONSTRAINT_END'
|
|
54
|
-
parser.verify_num_parameters(0, 0, keyword)
|
|
55
|
-
@current_parameter.read_conversion =
|
|
56
|
-
GenericConversion.new(proc_text,
|
|
57
|
-
converted_type,
|
|
58
|
-
converted_bit_size) if keyword.include? "READ"
|
|
59
|
-
@current_parameter.write_conversion =
|
|
60
|
-
GenericConversion.new(proc_text,
|
|
61
|
-
converted_type,
|
|
62
|
-
converted_bit_size) if keyword.include? "WRITE"
|
|
63
|
-
@current_parameter.constraint =
|
|
64
|
-
GenericConversion.new(proc_text,
|
|
65
|
-
converted_type,
|
|
66
|
-
converted_bit_size) if keyword.include? "CONSTRAINT"
|
|
67
|
-
building_generic_conversion = false
|
|
68
|
-
# Add the current config.line to the conversion being built
|
|
69
|
-
else
|
|
70
|
-
proc_text << parser.line << "\n"
|
|
71
|
-
end # case keyword
|
|
72
|
-
|
|
73
|
-
else # not building generic conversion
|
|
74
|
-
|
|
75
|
-
case keyword
|
|
76
|
-
# Start the definition of a generic conversion.
|
|
77
|
-
# All config.lines following this config.line are considered part
|
|
78
|
-
# of the conversion until an end of conversion marker is found
|
|
79
|
-
when 'GENERIC_READ_CONVERSION_START', 'GENERIC_WRITE_CONVERSION_START', 'CONSTRAINT_START'
|
|
80
|
-
usage = "#{keyword} <Converted Type (optional)> <Converted Bit Size (optional)>"
|
|
81
|
-
parser.verify_num_parameters(0, 2, usage)
|
|
82
|
-
proc_text = ''
|
|
83
|
-
building_generic_conversion = true
|
|
84
|
-
converted_type = nil
|
|
85
|
-
converted_bit_size = nil
|
|
86
|
-
if parameters[0]
|
|
87
|
-
converted_type = parameters[0].upcase.intern
|
|
88
|
-
raise parser.error("Invalid converted_type: #{converted_type}.") unless [:INT, :UINT, :FLOAT, :STRING, :BLOCK].include? converted_type
|
|
89
|
-
end
|
|
90
|
-
converted_bit_size = Integer(parameters[1]) if parameters[1]
|
|
91
|
-
|
|
92
|
-
when 'TABLEFILE'
|
|
93
|
-
parser.verify_num_parameters(1, 1, "#{keyword} <File name>")
|
|
94
|
-
process(File.join(File.dirname(filename), parameters[0]))
|
|
95
|
-
|
|
96
|
-
when 'TABLE'
|
|
97
|
-
usage = "TABLE <Table Name> <Table Description> <ONE_DIMENSIONAL or TWO_DIMENSIONAL> <BIG_ENDIAN or LITTLE_ENDIAN> <Identifier>"
|
|
98
|
-
parser.verify_num_parameters(5, nil, usage)
|
|
99
|
-
begin
|
|
100
|
-
# locals declared for readability
|
|
101
|
-
name = parameters[0]
|
|
102
|
-
description = parameters[1]
|
|
103
|
-
type = read_table_type(parameters[2])
|
|
104
|
-
endianness = read_endianness(parameters[3])
|
|
105
|
-
if parameters[5].nil?
|
|
106
|
-
table_id = Integer(parameters[4])
|
|
107
|
-
else
|
|
108
|
-
table_id = []
|
|
109
|
-
parameters[4..-1].each {|parameter| table_id << Integer(parameter)}
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
start_new_table(name, description, type, endianness, table_id, filename)
|
|
113
|
-
rescue ArgumentError => err
|
|
114
|
-
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
when 'PARAMETER'
|
|
118
|
-
usage = "PARAMETER <Parameter Name> <Parameter Description> <Data Type> <Bit Size> <Display Type> <Minimum Value> <Maximum Value> <Default Value - Only in ONE_DIMENTIONAL>"
|
|
119
|
-
parser.verify_num_parameters(7, 8, usage)
|
|
120
|
-
finish_parameter()
|
|
121
|
-
if @current_table
|
|
122
|
-
@current_table.num_rows += 1
|
|
123
|
-
|
|
124
|
-
begin
|
|
125
|
-
if @current_table.type == :TWO_DIMENSIONAL
|
|
126
|
-
parameters[0] = "#{parameters[0]}0"
|
|
127
|
-
end
|
|
128
|
-
# locals declared for readability
|
|
129
|
-
name = parameters[0]
|
|
130
|
-
if @current_table.items[name.upcase]
|
|
131
|
-
raise ArgumentError, "The name \"#{name}\" was already defined"
|
|
132
|
-
end
|
|
133
|
-
description = parameters[1]
|
|
134
|
-
type = read_item_type(parameters[2])
|
|
135
|
-
bit_size = parameters[3].to_i
|
|
136
|
-
display_type, editable = read_display_type(parameters[4], type)
|
|
137
|
-
if type == :BLOCK
|
|
138
|
-
range = nil
|
|
139
|
-
elsif type == :STRING
|
|
140
|
-
range = convert_to_range(parameters[5], parameters[6], :UINT, 0)
|
|
141
|
-
else
|
|
142
|
-
range = convert_to_range(parameters[5], parameters[6], type, bit_size)
|
|
143
|
-
end
|
|
144
|
-
if @current_table.type == :ONE_DIMENSIONAL
|
|
145
|
-
default = convert_to_type(parameters[7], type)
|
|
146
|
-
else # TWO_DIMENSIONAL defaults are set by the DEFAULT keyword
|
|
147
|
-
default = 0
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
@current_parameter = @current_table.create_param(name, @cur_bit_offset,
|
|
151
|
-
bit_size, type, description, range, default, display_type, editable)
|
|
152
|
-
@cur_bit_offset += parameters[3].to_i
|
|
153
|
-
rescue ArgumentError => err
|
|
154
|
-
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
when 'STATE'
|
|
159
|
-
usage = "STATE <Key> <Value>"
|
|
160
|
-
parser.verify_num_parameters(2, 2, usage)
|
|
161
|
-
begin
|
|
162
|
-
# locals declared for readability
|
|
163
|
-
state_name = parameters[0]
|
|
164
|
-
state_value = convert_to_type(parameters[1], @current_parameter.data_type)
|
|
165
|
-
|
|
166
|
-
@current_parameter.states ||= {}
|
|
167
|
-
@current_parameter.states[state_name.upcase] = state_value
|
|
168
|
-
rescue ArgumentError => err
|
|
169
|
-
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
when 'DEFAULT'
|
|
173
|
-
usage = "DEFAULT <Value1> <Value2> ... <ValueN>"
|
|
174
|
-
# if this is our first default value for a TWO_DIMENSIONAL table
|
|
175
|
-
# then we redefine the default values
|
|
176
|
-
if @default_count == 0
|
|
177
|
-
@item_definitions = Array.new(@current_table.sorted_items)
|
|
178
|
-
index = 0
|
|
179
|
-
@item_definitions.each do |item_def|
|
|
180
|
-
set_item_default_value(item_def, parameters[index])
|
|
181
|
-
index += 1
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
@current_table.num_rows = 1
|
|
185
|
-
|
|
186
|
-
# more default values have been given so copy all the parameters from
|
|
187
|
-
# the first row and reset the defaults
|
|
188
|
-
else
|
|
189
|
-
index = 0
|
|
190
|
-
|
|
191
|
-
@item_definitions.each do |item_def|
|
|
192
|
-
new_item = @current_table.duplicate_item(item_def,
|
|
193
|
-
@default_count,
|
|
194
|
-
@cur_bit_offset)
|
|
195
|
-
@cur_bit_offset += item_def.bit_size
|
|
196
|
-
set_item_default_value(new_item, parameters[index])
|
|
197
|
-
index += 1
|
|
198
|
-
end
|
|
199
|
-
@current_table.num_rows += 1
|
|
200
|
-
end # end else for if @default_count == 1
|
|
201
|
-
|
|
202
|
-
@default_count += 1
|
|
203
|
-
|
|
204
|
-
when 'POLY_READ_CONVERSION'
|
|
205
|
-
parser.verify_num_parameters(2, nil, "#{keyword} <C0> ... <CX>")
|
|
206
|
-
@current_parameter.read_conversion = PolynomialConversion.new(parameters[0..-1])
|
|
207
|
-
|
|
208
|
-
when 'POLY_WRITE_CONVERSION'
|
|
209
|
-
parser.verify_num_parameters(2, nil, "#{keyword} <C0> ... <CX>")
|
|
210
|
-
@current_parameter.write_conversion = PolynomialConversion.new(parameters[0..-1])
|
|
211
|
-
|
|
212
|
-
else
|
|
213
|
-
unknown_keyword(parser, keyword, parameters)
|
|
214
|
-
end # end case parameters[0]
|
|
215
|
-
end # end else for generic conversion
|
|
216
|
-
end # end loop
|
|
217
|
-
|
|
218
|
-
# Handle last packet
|
|
219
|
-
finish_table()
|
|
220
|
-
|
|
221
|
-
ensure
|
|
222
|
-
file.close if defined? file and file
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
# Sets the given item definition's default parameter to the default value
|
|
226
|
-
# given. This function does conversions based on the display_type of the item.
|
|
227
|
-
def set_item_default_value(item_def, default = nil)
|
|
228
|
-
begin
|
|
229
|
-
# If no default was passed use the definition default
|
|
230
|
-
if default == nil
|
|
231
|
-
default = item_def.default
|
|
232
|
-
end
|
|
233
|
-
if item_def.display_type == :STATE
|
|
234
|
-
begin
|
|
235
|
-
val = item_def.states.key(Integer(default))
|
|
236
|
-
rescue
|
|
237
|
-
val = default
|
|
238
|
-
end
|
|
239
|
-
@current_table.write(item_def.name, val)
|
|
240
|
-
item_def.default = @current_table.read(item_def.name, :RAW)
|
|
241
|
-
else
|
|
242
|
-
item_def.default = convert_to_type(default, item_def.data_type)
|
|
243
|
-
end
|
|
244
|
-
rescue
|
|
245
|
-
Logger.error "Setting #{item_def.name} to #{default} failed! Using #{item_def.range.first} for the default value."
|
|
246
|
-
item_def.default = item_def.range.first
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
# Classes extending table_definition should override this function to add
|
|
251
|
-
# new keyword processing. Ensure super() is called after processing new
|
|
252
|
-
# keywords so the default behavior of raising an ArgumentError is maintained.
|
|
253
|
-
def unknown_keyword(parser, keyword, parameters)
|
|
254
|
-
raise parser.error("Unknown keyword '#{keyword}'.", nil) if keyword
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
# Returns a specific Table
|
|
258
|
-
def get_table(name)
|
|
259
|
-
@tables[name]
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
# Returns an array of all the Tables in the definition file
|
|
263
|
-
def get_all_tables
|
|
264
|
-
@ordered_tables
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
# Returns an array of all the table names in the definition file
|
|
268
|
-
def get_table_names
|
|
269
|
-
@table_names
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
# Returns a default-value representation of an item to be printed in a DEF file
|
|
273
|
-
def item_to_def_string(table, item_def)
|
|
274
|
-
result = ""
|
|
275
|
-
case item_def.display_type
|
|
276
|
-
when :STATE
|
|
277
|
-
if table.type == :ONE_DIMENSIONAL
|
|
278
|
-
result = table.read(item_def.name, :RAW).to_s
|
|
279
|
-
else
|
|
280
|
-
result = table.read(item_def.name).to_s
|
|
281
|
-
end
|
|
282
|
-
when :DEC, :STRING, :NONE
|
|
283
|
-
result = table.read(item_def.name).to_s
|
|
284
|
-
when :CHECK
|
|
285
|
-
result = table.read(item_def.name, :RAW).to_s
|
|
286
|
-
when :HEX
|
|
287
|
-
result = format_hex(table, item_def)
|
|
288
|
-
end
|
|
289
|
-
|
|
290
|
-
return result
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
# Update all default values in the definition file on disk with current values
|
|
294
|
-
def commit_default_values(table)
|
|
295
|
-
new_file_data = ""
|
|
296
|
-
table_found = false
|
|
297
|
-
default_count = 0
|
|
298
|
-
table_parameters = []
|
|
299
|
-
parser = ConfigParser.new
|
|
300
|
-
parser.parse_file(table.filename) do |keyword, parameters|
|
|
301
|
-
line = parser.line
|
|
302
|
-
|
|
303
|
-
case keyword
|
|
304
|
-
when 'TABLE'
|
|
305
|
-
name = parameters[0].remove_quotes
|
|
306
|
-
if name == table.name
|
|
307
|
-
table_found = true
|
|
308
|
-
else
|
|
309
|
-
table_found = false
|
|
310
|
-
end
|
|
311
|
-
|
|
312
|
-
when 'PARAMETER'
|
|
313
|
-
if table_found
|
|
314
|
-
name = parameters[0].remove_quotes
|
|
315
|
-
if table.type == :ONE_DIMENSIONAL
|
|
316
|
-
item = table.get_item(name)
|
|
317
|
-
|
|
318
|
-
# update the default value (in case the user tries to reset default values)
|
|
319
|
-
item.default = table.read(name, :RAW)
|
|
320
|
-
|
|
321
|
-
# determine what the new default value will look like as printed in the DEF file
|
|
322
|
-
new_default = item_to_def_string(table, item)
|
|
323
|
-
|
|
324
|
-
# scan to the beginning of the default value
|
|
325
|
-
line_index = line.index(keyword) # skip to start of keyword
|
|
326
|
-
line_index = line.index(parameters[0], line_index+keyword.length) # skip to start of first param
|
|
327
|
-
(1..7).each do |index|
|
|
328
|
-
line_index = line.index(parameters[index], line_index+parameters[index-1].length) # skip to start of next param
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
# rebuild the line in 3 parts:
|
|
332
|
-
# everything up to the old default value
|
|
333
|
-
# the new default value
|
|
334
|
-
# everything after the old default value
|
|
335
|
-
line = line[0...line_index] + new_default + line[(line_index+parameters[7].length)..-1]
|
|
336
|
-
else
|
|
337
|
-
table_parameters << name
|
|
338
|
-
end
|
|
339
|
-
end
|
|
340
|
-
|
|
341
|
-
when 'DEFAULT'
|
|
342
|
-
if table_found
|
|
343
|
-
line_index = line.index(keyword)
|
|
344
|
-
previous_word = keyword
|
|
345
|
-
table_parameters.each_with_index do |param_name, index|
|
|
346
|
-
item_name = "#{param_name}#{default_count}"
|
|
347
|
-
item = table.get_item(item_name)
|
|
348
|
-
|
|
349
|
-
# update the default value (in case the user tries to reset default values)
|
|
350
|
-
item.default = table.read(item_name, :RAW)
|
|
351
|
-
|
|
352
|
-
# determine what the new default value will look like as printed in the DEF file
|
|
353
|
-
new_default = item_to_def_string(table, item)
|
|
354
|
-
if new_default.index(" ")
|
|
355
|
-
new_default = '"' + new_default + '"'
|
|
356
|
-
end
|
|
357
|
-
|
|
358
|
-
# scan to the beginning of the default value
|
|
359
|
-
line_index = line.index(parameters[index], line_index+previous_word.length)
|
|
360
|
-
|
|
361
|
-
# rebuild the line in 3 parts:
|
|
362
|
-
# everything up to the old default value
|
|
363
|
-
# the new default value
|
|
364
|
-
# everything after the old default value
|
|
365
|
-
line = line[0...line_index] + new_default + line[(line_index+parameters[index].length)..-1]
|
|
366
|
-
|
|
367
|
-
# update previous_word so that we can find the next value
|
|
368
|
-
previous_word = new_default
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
# count the row so that we know what the item_name is next time we see DEFAULT
|
|
372
|
-
default_count += 1
|
|
373
|
-
end
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
new_file_data << (line + "\n")
|
|
377
|
-
|
|
378
|
-
end # end loop
|
|
379
|
-
|
|
380
|
-
# ok, now replace the old def file with the new one
|
|
381
|
-
File.open(table.filename, "w") do |file|
|
|
382
|
-
file.puts new_file_data
|
|
383
|
-
end
|
|
384
|
-
end
|
|
385
|
-
|
|
386
|
-
# # Return the entire table_definition file for the given table name as a string
|
|
387
|
-
# def print_table(name)
|
|
388
|
-
# tdef = @tables[name]
|
|
389
|
-
# tstr = ""
|
|
390
|
-
# if tdef.table_id.class != Array
|
|
391
|
-
# tstr << "TABLE \"#{tdef.name}\" \"#{tdef.description}\" #{convert_table_type(tdef.type)} #{convert_endianness(tdef.get_endianness)} #{tdef.table_id}\n"
|
|
392
|
-
# else
|
|
393
|
-
# tstr << "TABLE \"#{tdef.name}\" \"#{tdef.description}\" #{convert_table_type(tdef.type)} #{convert_endianness(tdef.get_endianness)} #{tdef.table_id.join(' ')}\n"
|
|
394
|
-
# end
|
|
395
|
-
# if tdef.type == :ONE_DIMENSIONAL
|
|
396
|
-
# tdef.sorted_items.each do |item|
|
|
397
|
-
# tstr << create_item_string(item, tdef.type)
|
|
398
|
-
# end
|
|
399
|
-
# else # TWO_DIMENSIONAL
|
|
400
|
-
# tdef.num_columns.times do |column|
|
|
401
|
-
# item_def = tdef.sorted_items[column]
|
|
402
|
-
# tstr << create_item_string(item_def, tdef.type)
|
|
403
|
-
# end
|
|
404
|
-
#
|
|
405
|
-
# index = 0
|
|
406
|
-
# tdef.sorted_items.each do |item|
|
|
407
|
-
# if index % tdef.num_columns == 0
|
|
408
|
-
# tstr << "\n DEFAULT "
|
|
409
|
-
# end
|
|
410
|
-
# case item.display_type
|
|
411
|
-
# when :DEC
|
|
412
|
-
# default = item.default
|
|
413
|
-
# when :STATE
|
|
414
|
-
# default = "\"#{item.default}\""
|
|
415
|
-
# when :HEX
|
|
416
|
-
# default = "0x#{item.default.to_s(16)}"
|
|
417
|
-
# end
|
|
418
|
-
# tstr << "#{default} "
|
|
419
|
-
# index += 1
|
|
420
|
-
# end
|
|
421
|
-
# end # end else # TWO_DIMENSIONAL
|
|
422
|
-
# tstr
|
|
423
|
-
# end # end print_table(name)
|
|
424
|
-
|
|
425
|
-
def format_hex(table, item_def)
|
|
426
|
-
case item_def.bit_size
|
|
427
|
-
when 8
|
|
428
|
-
x = sprintf("%02X", table.read(item_def.name).to_s)
|
|
429
|
-
# if the number was negative x will have .. and possibly another
|
|
430
|
-
# F in the string which we remove by taking the last 4 digits
|
|
431
|
-
x = /\w{2}$/.match(x)[0]
|
|
432
|
-
when 16
|
|
433
|
-
x = sprintf("%04X", table.read(item_def.name).to_s)
|
|
434
|
-
# if the number was negative x will have .. and possibly another
|
|
435
|
-
# F in the string which we remove by taking the last 4 digits
|
|
436
|
-
x = /\w{4}$/.match(x)[0]
|
|
437
|
-
else
|
|
438
|
-
x = sprintf("%08X", table.read(item_def.name).to_s)
|
|
439
|
-
# if the number was negative x will have .. and possibly another
|
|
440
|
-
# F in the string which we remove by taking the last 8 digits
|
|
441
|
-
x = /\w{8}$/.match(x)[0]
|
|
442
|
-
end
|
|
443
|
-
return "0x%X" % Integer("0x#{x}") # convert to Integer
|
|
444
|
-
end
|
|
445
|
-
|
|
446
|
-
#############################################################################
|
|
447
|
-
protected
|
|
448
|
-
#############################################################################
|
|
449
|
-
|
|
450
|
-
# # helper function to print_table to get states, constraint, read_conversion,
|
|
451
|
-
# # and write_conversion that may be associated with an item in the table
|
|
452
|
-
# def create_item_string(item, type)
|
|
453
|
-
# tstr = ""
|
|
454
|
-
# case item.display_type
|
|
455
|
-
# when :DEC
|
|
456
|
-
# min = item.range.first
|
|
457
|
-
# max = item.range.last
|
|
458
|
-
# default = item.default
|
|
459
|
-
# when :STATE
|
|
460
|
-
# min = item.range.first
|
|
461
|
-
# max = item.range.last
|
|
462
|
-
# default = item.states[item.default]
|
|
463
|
-
# when :HEX
|
|
464
|
-
# min = "0x#{item.range.first.to_s(16)}"
|
|
465
|
-
# max = "0x#{item.range.last.to_s(16)}"
|
|
466
|
-
# default = "0x#{item.default.to_s(16)}"
|
|
467
|
-
# end
|
|
468
|
-
#
|
|
469
|
-
# name = item.name
|
|
470
|
-
# display = convert_display_type(item.display_type, item.editable)
|
|
471
|
-
# tstr << " PARAMETER \"#{name}\" \"#{item.description}\" #{convert_item_type(item.data_type)} #{item.bit_size} #{display} #{min} #{max}"
|
|
472
|
-
# if type == :ONE_DIMENSIONAL
|
|
473
|
-
# tstr << " #{default}\n"
|
|
474
|
-
# else # TWO_DIMENSIONAL
|
|
475
|
-
# tstr << "\n"
|
|
476
|
-
# end
|
|
477
|
-
#
|
|
478
|
-
# if item.states
|
|
479
|
-
# item.states.each do |key, value|
|
|
480
|
-
# tstr << " STATE \"#{key}\" #{value}\n"
|
|
481
|
-
# end
|
|
482
|
-
# end
|
|
483
|
-
# if item.constraint
|
|
484
|
-
# tstr << " CONSTRAINT_START\n"
|
|
485
|
-
# tstr << item.constraint.code
|
|
486
|
-
# tstr << " CONSTRAINT_END\n"
|
|
487
|
-
# end
|
|
488
|
-
# if item.read_conversion
|
|
489
|
-
# if item.read_conversion.class == PolynomialConversion
|
|
490
|
-
# tstr << " POLY_READ_CONVERSION #{item.read_conversion.code}\n"
|
|
491
|
-
# else
|
|
492
|
-
# tstr << " GENERIC_READ_CONVERSION_START\n"
|
|
493
|
-
# tstr << item.read_conversion.code
|
|
494
|
-
# tstr << " GENERIC_READ_CONVERSION_END\n"
|
|
495
|
-
# end
|
|
496
|
-
# end
|
|
497
|
-
# if not item.write_conversion.nil?
|
|
498
|
-
# if item.write_conversion.class == PolynomialConversion
|
|
499
|
-
# tstr << " POLY_WRITE_CONVERSION #{item.write_conversion.code}\n"
|
|
500
|
-
# else
|
|
501
|
-
# tstr << " GENERIC_WRITE_CONVERSION_START\n"
|
|
502
|
-
# tstr << item.write_conversion.code
|
|
503
|
-
# tstr << " GENERIC_WRITE_CONVERSION_END\n"
|
|
504
|
-
# end
|
|
505
|
-
# end
|
|
506
|
-
# tstr
|
|
507
|
-
# end
|
|
508
|
-
|
|
509
|
-
# Finish Updating parameter in packet
|
|
510
|
-
def finish_parameter
|
|
511
|
-
unless @current_parameter.nil?
|
|
512
|
-
@current_table.set_item(@current_parameter)
|
|
513
|
-
end
|
|
514
|
-
end
|
|
515
|
-
|
|
516
|
-
# Start processing a new packet
|
|
517
|
-
def start_new_table(name, description, type, endianness, table_id, filename)
|
|
518
|
-
finish_table
|
|
519
|
-
@current_table = Table.new(name, description, type, endianness, table_id, filename)
|
|
520
|
-
@current_name = name
|
|
521
|
-
@default_count = 0
|
|
522
|
-
end
|
|
523
|
-
|
|
524
|
-
# Add current packet into hash if it exists
|
|
525
|
-
def finish_table
|
|
526
|
-
finish_parameter
|
|
527
|
-
if @current_table
|
|
528
|
-
Logger.info "finish_table #{@current_name}"
|
|
529
|
-
if @current_table.num_rows
|
|
530
|
-
if @tables.nil? or @table_names.nil? or @ordered_tables.nil?
|
|
531
|
-
@tables = {}
|
|
532
|
-
@table_names = []
|
|
533
|
-
@ordered_tables = []
|
|
534
|
-
end
|
|
535
|
-
@tables[@current_name] = @current_table
|
|
536
|
-
@table_names << @current_name
|
|
537
|
-
@ordered_tables << @current_table
|
|
538
|
-
end
|
|
539
|
-
@current_table = nil
|
|
540
|
-
@current_parameter = nil
|
|
541
|
-
@cur_bit_offset = 0
|
|
542
|
-
end
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
# Convert the table type string to a value
|
|
546
|
-
def read_table_type(str)
|
|
547
|
-
str.upcase!
|
|
548
|
-
case str
|
|
549
|
-
when 'ONE_DIMENSIONAL'
|
|
550
|
-
:ONE_DIMENSIONAL
|
|
551
|
-
when 'TWO_DIMENSIONAL'
|
|
552
|
-
:TWO_DIMENSIONAL
|
|
553
|
-
else
|
|
554
|
-
raise ArgumentError, "Unknown table type:#{str}! Must be ONE_DIMENSIONAL or TWO_DIMENSIONAL"
|
|
555
|
-
end
|
|
556
|
-
end
|
|
557
|
-
|
|
558
|
-
# Convert the table type value to a string
|
|
559
|
-
def convert_table_type(type)
|
|
560
|
-
case type
|
|
561
|
-
when :ONE_DIMENSIONAL
|
|
562
|
-
'ONE_DIMENSIONAL'
|
|
563
|
-
when :TWO_DIMENSIONAL
|
|
564
|
-
'TWO_DIMENSIONAL'
|
|
565
|
-
else
|
|
566
|
-
raise ArgumentError, "Unknown table type:#{type}!"
|
|
567
|
-
end
|
|
568
|
-
end
|
|
569
|
-
|
|
570
|
-
# Convert the endianness string to a value
|
|
571
|
-
def read_endianness(str)
|
|
572
|
-
str.upcase!
|
|
573
|
-
case str
|
|
574
|
-
when 'BIG_ENDIAN'
|
|
575
|
-
:BIG_ENDIAN
|
|
576
|
-
when 'LITTLE_ENDIAN'
|
|
577
|
-
:LITTLE_ENDIAN
|
|
578
|
-
else
|
|
579
|
-
raise ArgumentError, "Unknown endianness:#{str}! Must be BIG_ENDIAN or LITTLE_ENDIAN"
|
|
580
|
-
end
|
|
581
|
-
end
|
|
582
|
-
|
|
583
|
-
# Convert the endianness value to a string
|
|
584
|
-
def convert_endianness(endianness)
|
|
585
|
-
case endianness
|
|
586
|
-
when :BIG_ENDIAN
|
|
587
|
-
'BIG_ENDIAN'
|
|
588
|
-
when :LITTLE_ENDIAN
|
|
589
|
-
'LITTLE_ENDIAN'
|
|
590
|
-
else
|
|
591
|
-
raise ArgumentError, "Unknown endianness:#{endianness}!"
|
|
592
|
-
end
|
|
593
|
-
end
|
|
594
|
-
|
|
595
|
-
# Process a item type string into a value
|
|
596
|
-
def read_item_type(str)
|
|
597
|
-
str.upcase!
|
|
598
|
-
case str
|
|
599
|
-
when 'INT'
|
|
600
|
-
:INT
|
|
601
|
-
when 'UINT'
|
|
602
|
-
:UINT
|
|
603
|
-
when 'FLOAT'
|
|
604
|
-
:FLOAT
|
|
605
|
-
when 'STRING'
|
|
606
|
-
:STRING
|
|
607
|
-
when 'BLOCK'
|
|
608
|
-
:BLOCK
|
|
609
|
-
else
|
|
610
|
-
raise ArgumentError, "Unknown type:#{str}! Must be INT, UINT, FLOAT, STRING, or BLOCK"
|
|
611
|
-
end
|
|
612
|
-
end
|
|
613
|
-
|
|
614
|
-
# Process a item type value into a string
|
|
615
|
-
def convert_item_type(type)
|
|
616
|
-
case type
|
|
617
|
-
when :INT
|
|
618
|
-
'INT'
|
|
619
|
-
when :UINT
|
|
620
|
-
'UINT'
|
|
621
|
-
when :FLOAT
|
|
622
|
-
'FLOAT'
|
|
623
|
-
when :STRING
|
|
624
|
-
'STRING'
|
|
625
|
-
when :BLOCK
|
|
626
|
-
'BLOCK'
|
|
627
|
-
else
|
|
628
|
-
raise ArgumentError, "Unknown type:#{type}!"
|
|
629
|
-
end
|
|
630
|
-
end
|
|
631
|
-
|
|
632
|
-
# Convert a string to the correct item type
|
|
633
|
-
def convert_to_type(val, type)
|
|
634
|
-
raise ArgumentError, "Value is not defined" if val.nil?
|
|
635
|
-
begin
|
|
636
|
-
case type
|
|
637
|
-
when :INT, :UINT
|
|
638
|
-
val = Integer(val)
|
|
639
|
-
when :FLOAT
|
|
640
|
-
val = Float(val)
|
|
641
|
-
when :STRING, :BLOCK
|
|
642
|
-
val = val.to_s
|
|
643
|
-
end
|
|
644
|
-
rescue
|
|
645
|
-
begin
|
|
646
|
-
val = eval(val)
|
|
647
|
-
rescue
|
|
648
|
-
case type
|
|
649
|
-
when :INT
|
|
650
|
-
type_name = 'INT'
|
|
651
|
-
when :UINT
|
|
652
|
-
type_name = 'UINT'
|
|
653
|
-
when :FLOAT
|
|
654
|
-
type_name = 'FLOAT'
|
|
655
|
-
end
|
|
656
|
-
raise ArgumentError, "Error evaluating value:#{val} of type:#{type_name}"
|
|
657
|
-
end
|
|
658
|
-
end
|
|
659
|
-
val
|
|
660
|
-
end
|
|
661
|
-
|
|
662
|
-
# Convert the given minimum and maximum values of the given type and bit_size
|
|
663
|
-
# into a valid Ruby range: min..max. The function verifies the range is not
|
|
664
|
-
# backwards and that the minimum and maximum values make sense for the given
|
|
665
|
-
# type and bit_size. For example, a maximum of 256 doesn't make sense for a UINT8.
|
|
666
|
-
def convert_to_range(min, max, type, bit_size)
|
|
667
|
-
min = convert_to_type(min, type)
|
|
668
|
-
max = convert_to_type(max, type)
|
|
669
|
-
range = min..max
|
|
670
|
-
|
|
671
|
-
# First check for backwards ranges
|
|
672
|
-
if min > max
|
|
673
|
-
raise ArgumentError, "Min:#{min} can't be larger than max:#{max} in range"
|
|
674
|
-
end
|
|
675
|
-
|
|
676
|
-
case type
|
|
677
|
-
# No case for FLOAT because if the type is a float the range
|
|
678
|
-
# can be anything since you can't set a range wider than that allowed by a float
|
|
679
|
-
when :UINT
|
|
680
|
-
# First check for a negative range which doesn't make sense for UINT
|
|
681
|
-
if min < 0 or max < 0
|
|
682
|
-
raise ArgumentError, "Negative value in UINT range doesn't make sense"
|
|
683
|
-
end
|
|
684
|
-
if (bit_size == 8 and max > 255) or
|
|
685
|
-
(bit_size == 16 and max > 65535) or
|
|
686
|
-
(bit_size == 32 and max > 4294967295)
|
|
687
|
-
raise ArgumentError, "Max value of #{max} in UINT range doesn't make sense"
|
|
688
|
-
end
|
|
689
|
-
when :INT
|
|
690
|
-
if (bit_size == 8 and (min < -128 or max > 127)) or
|
|
691
|
-
(bit_size == 16 and (min < -32768 or max > 32767)) or
|
|
692
|
-
(bit_size == 32 and (min < -2147483648 or max > 2147483647))
|
|
693
|
-
raise ArgumentError, "Max value of #{max} in INT range doesn't make sense"
|
|
694
|
-
end
|
|
695
|
-
end
|
|
696
|
-
range
|
|
697
|
-
end
|
|
698
|
-
|
|
699
|
-
# Convert a display type string to the type value
|
|
700
|
-
def read_display_type(display_type, value_type)
|
|
701
|
-
editable = true
|
|
702
|
-
display_type.upcase!
|
|
703
|
-
|
|
704
|
-
if /-U/ =~ display_type
|
|
705
|
-
editable = false
|
|
706
|
-
display_type.sub!(/-U/,"")
|
|
707
|
-
end
|
|
708
|
-
|
|
709
|
-
case display_type
|
|
710
|
-
when 'DEC'
|
|
711
|
-
display_type = :DEC
|
|
712
|
-
when 'HEX'
|
|
713
|
-
display_type = :HEX
|
|
714
|
-
when 'STATE'
|
|
715
|
-
display_type = :STATE
|
|
716
|
-
when 'CHECK'
|
|
717
|
-
display_type = :CHECK
|
|
718
|
-
when 'STRING'
|
|
719
|
-
display_type = :STRING
|
|
720
|
-
when 'NONE'
|
|
721
|
-
display_type = :NONE
|
|
722
|
-
editable = false
|
|
723
|
-
else
|
|
724
|
-
raise ArgumentError, "Unknown display type:#{display_type}! Must be DEC, DEC-U, HEX, HEX-U, STATE, STATE-U, CHECK, CHECK-U, STRING or NONE"
|
|
725
|
-
end
|
|
726
|
-
|
|
727
|
-
if value_type ==:STRING && display_type != :STRING
|
|
728
|
-
raise ArgumentError, "STRING items must have a display type of STRING"
|
|
729
|
-
end
|
|
730
|
-
if value_type == :BLOCK && display_type != :NONE
|
|
731
|
-
raise ArgumentError, "BLOCK items must have a display type of NONE"
|
|
732
|
-
end
|
|
733
|
-
|
|
734
|
-
return display_type, editable
|
|
735
|
-
end
|
|
736
|
-
|
|
737
|
-
# Convert display type value to a display type string
|
|
738
|
-
def convert_display_type(type, editable)
|
|
739
|
-
display =
|
|
740
|
-
case type
|
|
741
|
-
when :DEC
|
|
742
|
-
'DEC'
|
|
743
|
-
when :HEX
|
|
744
|
-
'HEX'
|
|
745
|
-
when :STATE
|
|
746
|
-
'STATE'
|
|
747
|
-
when :CHECK
|
|
748
|
-
'CHECK'
|
|
749
|
-
when :STRING
|
|
750
|
-
'STRING'
|
|
751
|
-
when :NONE
|
|
752
|
-
'NONE'
|
|
753
|
-
else
|
|
754
|
-
raise ArgumentError, "Unkown display type:#{type}!"
|
|
755
|
-
end
|
|
756
|
-
if not editable
|
|
757
|
-
display << "-U"
|
|
758
|
-
end
|
|
759
|
-
display
|
|
760
|
-
end
|
|
761
|
-
|
|
762
|
-
end # class TableConfig
|
|
763
|
-
|
|
764
|
-
end # module Cosmos
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'cosmos'
|
|
12
|
+
require 'cosmos/tools/table_manager/table'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
# TableConfig provides capabilities to read an ascii file that defines the
|
|
17
|
+
# table parameters in a system and create a set of Tables for each.
|
|
18
|
+
class TableConfig
|
|
19
|
+
|
|
20
|
+
# Constructor for a TableConfig
|
|
21
|
+
def initialize
|
|
22
|
+
@ordered_tables = nil
|
|
23
|
+
@tables = nil
|
|
24
|
+
@current_name = nil
|
|
25
|
+
@current_table = nil
|
|
26
|
+
@current_parameter = nil
|
|
27
|
+
@cur_bit_offset = 0
|
|
28
|
+
@default_count = 0
|
|
29
|
+
@item_definitions = nil
|
|
30
|
+
@table_names = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Processes a file and adds in the tables defined in the file
|
|
34
|
+
def process(filename)
|
|
35
|
+
building_generic_conversion = false
|
|
36
|
+
converted_type = nil
|
|
37
|
+
converted_bit_size = nil
|
|
38
|
+
proc_text = ''
|
|
39
|
+
|
|
40
|
+
Logger.info "Processing table config in file '#{filename}'"
|
|
41
|
+
|
|
42
|
+
unless test ?f, filename
|
|
43
|
+
Logger.error "File does not exist"
|
|
44
|
+
raise "ERROR! Table config file #{filename} does not exist!"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
parser = ConfigParser.new
|
|
48
|
+
parser.parse_file(filename) do |keyword, parameters|
|
|
49
|
+
next unless keyword
|
|
50
|
+
if building_generic_conversion
|
|
51
|
+
case keyword
|
|
52
|
+
# Complete a generic conversion
|
|
53
|
+
when 'GENERIC_READ_CONVERSION_END', 'GENERIC_WRITE_CONVERSION_END', 'CONSTRAINT_END'
|
|
54
|
+
parser.verify_num_parameters(0, 0, keyword)
|
|
55
|
+
@current_parameter.read_conversion =
|
|
56
|
+
GenericConversion.new(proc_text,
|
|
57
|
+
converted_type,
|
|
58
|
+
converted_bit_size) if keyword.include? "READ"
|
|
59
|
+
@current_parameter.write_conversion =
|
|
60
|
+
GenericConversion.new(proc_text,
|
|
61
|
+
converted_type,
|
|
62
|
+
converted_bit_size) if keyword.include? "WRITE"
|
|
63
|
+
@current_parameter.constraint =
|
|
64
|
+
GenericConversion.new(proc_text,
|
|
65
|
+
converted_type,
|
|
66
|
+
converted_bit_size) if keyword.include? "CONSTRAINT"
|
|
67
|
+
building_generic_conversion = false
|
|
68
|
+
# Add the current config.line to the conversion being built
|
|
69
|
+
else
|
|
70
|
+
proc_text << parser.line << "\n"
|
|
71
|
+
end # case keyword
|
|
72
|
+
|
|
73
|
+
else # not building generic conversion
|
|
74
|
+
|
|
75
|
+
case keyword
|
|
76
|
+
# Start the definition of a generic conversion.
|
|
77
|
+
# All config.lines following this config.line are considered part
|
|
78
|
+
# of the conversion until an end of conversion marker is found
|
|
79
|
+
when 'GENERIC_READ_CONVERSION_START', 'GENERIC_WRITE_CONVERSION_START', 'CONSTRAINT_START'
|
|
80
|
+
usage = "#{keyword} <Converted Type (optional)> <Converted Bit Size (optional)>"
|
|
81
|
+
parser.verify_num_parameters(0, 2, usage)
|
|
82
|
+
proc_text = ''
|
|
83
|
+
building_generic_conversion = true
|
|
84
|
+
converted_type = nil
|
|
85
|
+
converted_bit_size = nil
|
|
86
|
+
if parameters[0]
|
|
87
|
+
converted_type = parameters[0].upcase.intern
|
|
88
|
+
raise parser.error("Invalid converted_type: #{converted_type}.") unless [:INT, :UINT, :FLOAT, :STRING, :BLOCK].include? converted_type
|
|
89
|
+
end
|
|
90
|
+
converted_bit_size = Integer(parameters[1]) if parameters[1]
|
|
91
|
+
|
|
92
|
+
when 'TABLEFILE'
|
|
93
|
+
parser.verify_num_parameters(1, 1, "#{keyword} <File name>")
|
|
94
|
+
process(File.join(File.dirname(filename), parameters[0]))
|
|
95
|
+
|
|
96
|
+
when 'TABLE'
|
|
97
|
+
usage = "TABLE <Table Name> <Table Description> <ONE_DIMENSIONAL or TWO_DIMENSIONAL> <BIG_ENDIAN or LITTLE_ENDIAN> <Identifier>"
|
|
98
|
+
parser.verify_num_parameters(5, nil, usage)
|
|
99
|
+
begin
|
|
100
|
+
# locals declared for readability
|
|
101
|
+
name = parameters[0]
|
|
102
|
+
description = parameters[1]
|
|
103
|
+
type = read_table_type(parameters[2])
|
|
104
|
+
endianness = read_endianness(parameters[3])
|
|
105
|
+
if parameters[5].nil?
|
|
106
|
+
table_id = Integer(parameters[4])
|
|
107
|
+
else
|
|
108
|
+
table_id = []
|
|
109
|
+
parameters[4..-1].each {|parameter| table_id << Integer(parameter)}
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
start_new_table(name, description, type, endianness, table_id, filename)
|
|
113
|
+
rescue ArgumentError => err
|
|
114
|
+
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
when 'PARAMETER'
|
|
118
|
+
usage = "PARAMETER <Parameter Name> <Parameter Description> <Data Type> <Bit Size> <Display Type> <Minimum Value> <Maximum Value> <Default Value - Only in ONE_DIMENTIONAL>"
|
|
119
|
+
parser.verify_num_parameters(7, 8, usage)
|
|
120
|
+
finish_parameter()
|
|
121
|
+
if @current_table
|
|
122
|
+
@current_table.num_rows += 1
|
|
123
|
+
|
|
124
|
+
begin
|
|
125
|
+
if @current_table.type == :TWO_DIMENSIONAL
|
|
126
|
+
parameters[0] = "#{parameters[0]}0"
|
|
127
|
+
end
|
|
128
|
+
# locals declared for readability
|
|
129
|
+
name = parameters[0]
|
|
130
|
+
if @current_table.items[name.upcase]
|
|
131
|
+
raise ArgumentError, "The name \"#{name}\" was already defined"
|
|
132
|
+
end
|
|
133
|
+
description = parameters[1]
|
|
134
|
+
type = read_item_type(parameters[2])
|
|
135
|
+
bit_size = parameters[3].to_i
|
|
136
|
+
display_type, editable = read_display_type(parameters[4], type)
|
|
137
|
+
if type == :BLOCK
|
|
138
|
+
range = nil
|
|
139
|
+
elsif type == :STRING
|
|
140
|
+
range = convert_to_range(parameters[5], parameters[6], :UINT, 0)
|
|
141
|
+
else
|
|
142
|
+
range = convert_to_range(parameters[5], parameters[6], type, bit_size)
|
|
143
|
+
end
|
|
144
|
+
if @current_table.type == :ONE_DIMENSIONAL
|
|
145
|
+
default = convert_to_type(parameters[7], type)
|
|
146
|
+
else # TWO_DIMENSIONAL defaults are set by the DEFAULT keyword
|
|
147
|
+
default = 0
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
@current_parameter = @current_table.create_param(name, @cur_bit_offset,
|
|
151
|
+
bit_size, type, description, range, default, display_type, editable)
|
|
152
|
+
@cur_bit_offset += parameters[3].to_i
|
|
153
|
+
rescue ArgumentError => err
|
|
154
|
+
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
when 'STATE'
|
|
159
|
+
usage = "STATE <Key> <Value>"
|
|
160
|
+
parser.verify_num_parameters(2, 2, usage)
|
|
161
|
+
begin
|
|
162
|
+
# locals declared for readability
|
|
163
|
+
state_name = parameters[0]
|
|
164
|
+
state_value = convert_to_type(parameters[1], @current_parameter.data_type)
|
|
165
|
+
|
|
166
|
+
@current_parameter.states ||= {}
|
|
167
|
+
@current_parameter.states[state_name.upcase] = state_value
|
|
168
|
+
rescue ArgumentError => err
|
|
169
|
+
raise parser.error("#{err.message} with #{keyword}.\nUSAGE: #{usage}")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
when 'DEFAULT'
|
|
173
|
+
usage = "DEFAULT <Value1> <Value2> ... <ValueN>"
|
|
174
|
+
# if this is our first default value for a TWO_DIMENSIONAL table
|
|
175
|
+
# then we redefine the default values
|
|
176
|
+
if @default_count == 0
|
|
177
|
+
@item_definitions = Array.new(@current_table.sorted_items)
|
|
178
|
+
index = 0
|
|
179
|
+
@item_definitions.each do |item_def|
|
|
180
|
+
set_item_default_value(item_def, parameters[index])
|
|
181
|
+
index += 1
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
@current_table.num_rows = 1
|
|
185
|
+
|
|
186
|
+
# more default values have been given so copy all the parameters from
|
|
187
|
+
# the first row and reset the defaults
|
|
188
|
+
else
|
|
189
|
+
index = 0
|
|
190
|
+
|
|
191
|
+
@item_definitions.each do |item_def|
|
|
192
|
+
new_item = @current_table.duplicate_item(item_def,
|
|
193
|
+
@default_count,
|
|
194
|
+
@cur_bit_offset)
|
|
195
|
+
@cur_bit_offset += item_def.bit_size
|
|
196
|
+
set_item_default_value(new_item, parameters[index])
|
|
197
|
+
index += 1
|
|
198
|
+
end
|
|
199
|
+
@current_table.num_rows += 1
|
|
200
|
+
end # end else for if @default_count == 1
|
|
201
|
+
|
|
202
|
+
@default_count += 1
|
|
203
|
+
|
|
204
|
+
when 'POLY_READ_CONVERSION'
|
|
205
|
+
parser.verify_num_parameters(2, nil, "#{keyword} <C0> ... <CX>")
|
|
206
|
+
@current_parameter.read_conversion = PolynomialConversion.new(parameters[0..-1])
|
|
207
|
+
|
|
208
|
+
when 'POLY_WRITE_CONVERSION'
|
|
209
|
+
parser.verify_num_parameters(2, nil, "#{keyword} <C0> ... <CX>")
|
|
210
|
+
@current_parameter.write_conversion = PolynomialConversion.new(parameters[0..-1])
|
|
211
|
+
|
|
212
|
+
else
|
|
213
|
+
unknown_keyword(parser, keyword, parameters)
|
|
214
|
+
end # end case parameters[0]
|
|
215
|
+
end # end else for generic conversion
|
|
216
|
+
end # end loop
|
|
217
|
+
|
|
218
|
+
# Handle last packet
|
|
219
|
+
finish_table()
|
|
220
|
+
|
|
221
|
+
ensure
|
|
222
|
+
file.close if defined? file and file
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
# Sets the given item definition's default parameter to the default value
|
|
226
|
+
# given. This function does conversions based on the display_type of the item.
|
|
227
|
+
def set_item_default_value(item_def, default = nil)
|
|
228
|
+
begin
|
|
229
|
+
# If no default was passed use the definition default
|
|
230
|
+
if default == nil
|
|
231
|
+
default = item_def.default
|
|
232
|
+
end
|
|
233
|
+
if item_def.display_type == :STATE
|
|
234
|
+
begin
|
|
235
|
+
val = item_def.states.key(Integer(default))
|
|
236
|
+
rescue
|
|
237
|
+
val = default
|
|
238
|
+
end
|
|
239
|
+
@current_table.write(item_def.name, val)
|
|
240
|
+
item_def.default = @current_table.read(item_def.name, :RAW)
|
|
241
|
+
else
|
|
242
|
+
item_def.default = convert_to_type(default, item_def.data_type)
|
|
243
|
+
end
|
|
244
|
+
rescue
|
|
245
|
+
Logger.error "Setting #{item_def.name} to #{default} failed! Using #{item_def.range.first} for the default value."
|
|
246
|
+
item_def.default = item_def.range.first
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
# Classes extending table_definition should override this function to add
|
|
251
|
+
# new keyword processing. Ensure super() is called after processing new
|
|
252
|
+
# keywords so the default behavior of raising an ArgumentError is maintained.
|
|
253
|
+
def unknown_keyword(parser, keyword, parameters)
|
|
254
|
+
raise parser.error("Unknown keyword '#{keyword}'.", nil) if keyword
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Returns a specific Table
|
|
258
|
+
def get_table(name)
|
|
259
|
+
@tables[name]
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# Returns an array of all the Tables in the definition file
|
|
263
|
+
def get_all_tables
|
|
264
|
+
@ordered_tables
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
# Returns an array of all the table names in the definition file
|
|
268
|
+
def get_table_names
|
|
269
|
+
@table_names
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
# Returns a default-value representation of an item to be printed in a DEF file
|
|
273
|
+
def item_to_def_string(table, item_def)
|
|
274
|
+
result = ""
|
|
275
|
+
case item_def.display_type
|
|
276
|
+
when :STATE
|
|
277
|
+
if table.type == :ONE_DIMENSIONAL
|
|
278
|
+
result = table.read(item_def.name, :RAW).to_s
|
|
279
|
+
else
|
|
280
|
+
result = table.read(item_def.name).to_s
|
|
281
|
+
end
|
|
282
|
+
when :DEC, :STRING, :NONE
|
|
283
|
+
result = table.read(item_def.name).to_s
|
|
284
|
+
when :CHECK
|
|
285
|
+
result = table.read(item_def.name, :RAW).to_s
|
|
286
|
+
when :HEX
|
|
287
|
+
result = format_hex(table, item_def)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
return result
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
# Update all default values in the definition file on disk with current values
|
|
294
|
+
def commit_default_values(table)
|
|
295
|
+
new_file_data = ""
|
|
296
|
+
table_found = false
|
|
297
|
+
default_count = 0
|
|
298
|
+
table_parameters = []
|
|
299
|
+
parser = ConfigParser.new
|
|
300
|
+
parser.parse_file(table.filename) do |keyword, parameters|
|
|
301
|
+
line = parser.line
|
|
302
|
+
|
|
303
|
+
case keyword
|
|
304
|
+
when 'TABLE'
|
|
305
|
+
name = parameters[0].remove_quotes
|
|
306
|
+
if name == table.name
|
|
307
|
+
table_found = true
|
|
308
|
+
else
|
|
309
|
+
table_found = false
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
when 'PARAMETER'
|
|
313
|
+
if table_found
|
|
314
|
+
name = parameters[0].remove_quotes
|
|
315
|
+
if table.type == :ONE_DIMENSIONAL
|
|
316
|
+
item = table.get_item(name)
|
|
317
|
+
|
|
318
|
+
# update the default value (in case the user tries to reset default values)
|
|
319
|
+
item.default = table.read(name, :RAW)
|
|
320
|
+
|
|
321
|
+
# determine what the new default value will look like as printed in the DEF file
|
|
322
|
+
new_default = item_to_def_string(table, item)
|
|
323
|
+
|
|
324
|
+
# scan to the beginning of the default value
|
|
325
|
+
line_index = line.index(keyword) # skip to start of keyword
|
|
326
|
+
line_index = line.index(parameters[0], line_index+keyword.length) # skip to start of first param
|
|
327
|
+
(1..7).each do |index|
|
|
328
|
+
line_index = line.index(parameters[index], line_index+parameters[index-1].length) # skip to start of next param
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
# rebuild the line in 3 parts:
|
|
332
|
+
# everything up to the old default value
|
|
333
|
+
# the new default value
|
|
334
|
+
# everything after the old default value
|
|
335
|
+
line = line[0...line_index] + new_default + line[(line_index+parameters[7].length)..-1]
|
|
336
|
+
else
|
|
337
|
+
table_parameters << name
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
when 'DEFAULT'
|
|
342
|
+
if table_found
|
|
343
|
+
line_index = line.index(keyword)
|
|
344
|
+
previous_word = keyword
|
|
345
|
+
table_parameters.each_with_index do |param_name, index|
|
|
346
|
+
item_name = "#{param_name}#{default_count}"
|
|
347
|
+
item = table.get_item(item_name)
|
|
348
|
+
|
|
349
|
+
# update the default value (in case the user tries to reset default values)
|
|
350
|
+
item.default = table.read(item_name, :RAW)
|
|
351
|
+
|
|
352
|
+
# determine what the new default value will look like as printed in the DEF file
|
|
353
|
+
new_default = item_to_def_string(table, item)
|
|
354
|
+
if new_default.index(" ")
|
|
355
|
+
new_default = '"' + new_default + '"'
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
# scan to the beginning of the default value
|
|
359
|
+
line_index = line.index(parameters[index], line_index+previous_word.length)
|
|
360
|
+
|
|
361
|
+
# rebuild the line in 3 parts:
|
|
362
|
+
# everything up to the old default value
|
|
363
|
+
# the new default value
|
|
364
|
+
# everything after the old default value
|
|
365
|
+
line = line[0...line_index] + new_default + line[(line_index+parameters[index].length)..-1]
|
|
366
|
+
|
|
367
|
+
# update previous_word so that we can find the next value
|
|
368
|
+
previous_word = new_default
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
# count the row so that we know what the item_name is next time we see DEFAULT
|
|
372
|
+
default_count += 1
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
new_file_data << (line + "\n")
|
|
377
|
+
|
|
378
|
+
end # end loop
|
|
379
|
+
|
|
380
|
+
# ok, now replace the old def file with the new one
|
|
381
|
+
File.open(table.filename, "w") do |file|
|
|
382
|
+
file.puts new_file_data
|
|
383
|
+
end
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
# # Return the entire table_definition file for the given table name as a string
|
|
387
|
+
# def print_table(name)
|
|
388
|
+
# tdef = @tables[name]
|
|
389
|
+
# tstr = ""
|
|
390
|
+
# if tdef.table_id.class != Array
|
|
391
|
+
# tstr << "TABLE \"#{tdef.name}\" \"#{tdef.description}\" #{convert_table_type(tdef.type)} #{convert_endianness(tdef.get_endianness)} #{tdef.table_id}\n"
|
|
392
|
+
# else
|
|
393
|
+
# tstr << "TABLE \"#{tdef.name}\" \"#{tdef.description}\" #{convert_table_type(tdef.type)} #{convert_endianness(tdef.get_endianness)} #{tdef.table_id.join(' ')}\n"
|
|
394
|
+
# end
|
|
395
|
+
# if tdef.type == :ONE_DIMENSIONAL
|
|
396
|
+
# tdef.sorted_items.each do |item|
|
|
397
|
+
# tstr << create_item_string(item, tdef.type)
|
|
398
|
+
# end
|
|
399
|
+
# else # TWO_DIMENSIONAL
|
|
400
|
+
# tdef.num_columns.times do |column|
|
|
401
|
+
# item_def = tdef.sorted_items[column]
|
|
402
|
+
# tstr << create_item_string(item_def, tdef.type)
|
|
403
|
+
# end
|
|
404
|
+
#
|
|
405
|
+
# index = 0
|
|
406
|
+
# tdef.sorted_items.each do |item|
|
|
407
|
+
# if index % tdef.num_columns == 0
|
|
408
|
+
# tstr << "\n DEFAULT "
|
|
409
|
+
# end
|
|
410
|
+
# case item.display_type
|
|
411
|
+
# when :DEC
|
|
412
|
+
# default = item.default
|
|
413
|
+
# when :STATE
|
|
414
|
+
# default = "\"#{item.default}\""
|
|
415
|
+
# when :HEX
|
|
416
|
+
# default = "0x#{item.default.to_s(16)}"
|
|
417
|
+
# end
|
|
418
|
+
# tstr << "#{default} "
|
|
419
|
+
# index += 1
|
|
420
|
+
# end
|
|
421
|
+
# end # end else # TWO_DIMENSIONAL
|
|
422
|
+
# tstr
|
|
423
|
+
# end # end print_table(name)
|
|
424
|
+
|
|
425
|
+
def format_hex(table, item_def)
|
|
426
|
+
case item_def.bit_size
|
|
427
|
+
when 8
|
|
428
|
+
x = sprintf("%02X", table.read(item_def.name).to_s)
|
|
429
|
+
# if the number was negative x will have .. and possibly another
|
|
430
|
+
# F in the string which we remove by taking the last 4 digits
|
|
431
|
+
x = /\w{2}$/.match(x)[0]
|
|
432
|
+
when 16
|
|
433
|
+
x = sprintf("%04X", table.read(item_def.name).to_s)
|
|
434
|
+
# if the number was negative x will have .. and possibly another
|
|
435
|
+
# F in the string which we remove by taking the last 4 digits
|
|
436
|
+
x = /\w{4}$/.match(x)[0]
|
|
437
|
+
else
|
|
438
|
+
x = sprintf("%08X", table.read(item_def.name).to_s)
|
|
439
|
+
# if the number was negative x will have .. and possibly another
|
|
440
|
+
# F in the string which we remove by taking the last 8 digits
|
|
441
|
+
x = /\w{8}$/.match(x)[0]
|
|
442
|
+
end
|
|
443
|
+
return "0x%X" % Integer("0x#{x}") # convert to Integer
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
#############################################################################
|
|
447
|
+
protected
|
|
448
|
+
#############################################################################
|
|
449
|
+
|
|
450
|
+
# # helper function to print_table to get states, constraint, read_conversion,
|
|
451
|
+
# # and write_conversion that may be associated with an item in the table
|
|
452
|
+
# def create_item_string(item, type)
|
|
453
|
+
# tstr = ""
|
|
454
|
+
# case item.display_type
|
|
455
|
+
# when :DEC
|
|
456
|
+
# min = item.range.first
|
|
457
|
+
# max = item.range.last
|
|
458
|
+
# default = item.default
|
|
459
|
+
# when :STATE
|
|
460
|
+
# min = item.range.first
|
|
461
|
+
# max = item.range.last
|
|
462
|
+
# default = item.states[item.default]
|
|
463
|
+
# when :HEX
|
|
464
|
+
# min = "0x#{item.range.first.to_s(16)}"
|
|
465
|
+
# max = "0x#{item.range.last.to_s(16)}"
|
|
466
|
+
# default = "0x#{item.default.to_s(16)}"
|
|
467
|
+
# end
|
|
468
|
+
#
|
|
469
|
+
# name = item.name
|
|
470
|
+
# display = convert_display_type(item.display_type, item.editable)
|
|
471
|
+
# tstr << " PARAMETER \"#{name}\" \"#{item.description}\" #{convert_item_type(item.data_type)} #{item.bit_size} #{display} #{min} #{max}"
|
|
472
|
+
# if type == :ONE_DIMENSIONAL
|
|
473
|
+
# tstr << " #{default}\n"
|
|
474
|
+
# else # TWO_DIMENSIONAL
|
|
475
|
+
# tstr << "\n"
|
|
476
|
+
# end
|
|
477
|
+
#
|
|
478
|
+
# if item.states
|
|
479
|
+
# item.states.each do |key, value|
|
|
480
|
+
# tstr << " STATE \"#{key}\" #{value}\n"
|
|
481
|
+
# end
|
|
482
|
+
# end
|
|
483
|
+
# if item.constraint
|
|
484
|
+
# tstr << " CONSTRAINT_START\n"
|
|
485
|
+
# tstr << item.constraint.code
|
|
486
|
+
# tstr << " CONSTRAINT_END\n"
|
|
487
|
+
# end
|
|
488
|
+
# if item.read_conversion
|
|
489
|
+
# if item.read_conversion.class == PolynomialConversion
|
|
490
|
+
# tstr << " POLY_READ_CONVERSION #{item.read_conversion.code}\n"
|
|
491
|
+
# else
|
|
492
|
+
# tstr << " GENERIC_READ_CONVERSION_START\n"
|
|
493
|
+
# tstr << item.read_conversion.code
|
|
494
|
+
# tstr << " GENERIC_READ_CONVERSION_END\n"
|
|
495
|
+
# end
|
|
496
|
+
# end
|
|
497
|
+
# if not item.write_conversion.nil?
|
|
498
|
+
# if item.write_conversion.class == PolynomialConversion
|
|
499
|
+
# tstr << " POLY_WRITE_CONVERSION #{item.write_conversion.code}\n"
|
|
500
|
+
# else
|
|
501
|
+
# tstr << " GENERIC_WRITE_CONVERSION_START\n"
|
|
502
|
+
# tstr << item.write_conversion.code
|
|
503
|
+
# tstr << " GENERIC_WRITE_CONVERSION_END\n"
|
|
504
|
+
# end
|
|
505
|
+
# end
|
|
506
|
+
# tstr
|
|
507
|
+
# end
|
|
508
|
+
|
|
509
|
+
# Finish Updating parameter in packet
|
|
510
|
+
def finish_parameter
|
|
511
|
+
unless @current_parameter.nil?
|
|
512
|
+
@current_table.set_item(@current_parameter)
|
|
513
|
+
end
|
|
514
|
+
end
|
|
515
|
+
|
|
516
|
+
# Start processing a new packet
|
|
517
|
+
def start_new_table(name, description, type, endianness, table_id, filename)
|
|
518
|
+
finish_table
|
|
519
|
+
@current_table = Table.new(name, description, type, endianness, table_id, filename)
|
|
520
|
+
@current_name = name
|
|
521
|
+
@default_count = 0
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
# Add current packet into hash if it exists
|
|
525
|
+
def finish_table
|
|
526
|
+
finish_parameter
|
|
527
|
+
if @current_table
|
|
528
|
+
Logger.info "finish_table #{@current_name}"
|
|
529
|
+
if @current_table.num_rows
|
|
530
|
+
if @tables.nil? or @table_names.nil? or @ordered_tables.nil?
|
|
531
|
+
@tables = {}
|
|
532
|
+
@table_names = []
|
|
533
|
+
@ordered_tables = []
|
|
534
|
+
end
|
|
535
|
+
@tables[@current_name] = @current_table
|
|
536
|
+
@table_names << @current_name
|
|
537
|
+
@ordered_tables << @current_table
|
|
538
|
+
end
|
|
539
|
+
@current_table = nil
|
|
540
|
+
@current_parameter = nil
|
|
541
|
+
@cur_bit_offset = 0
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
# Convert the table type string to a value
|
|
546
|
+
def read_table_type(str)
|
|
547
|
+
str.upcase!
|
|
548
|
+
case str
|
|
549
|
+
when 'ONE_DIMENSIONAL'
|
|
550
|
+
:ONE_DIMENSIONAL
|
|
551
|
+
when 'TWO_DIMENSIONAL'
|
|
552
|
+
:TWO_DIMENSIONAL
|
|
553
|
+
else
|
|
554
|
+
raise ArgumentError, "Unknown table type:#{str}! Must be ONE_DIMENSIONAL or TWO_DIMENSIONAL"
|
|
555
|
+
end
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
# Convert the table type value to a string
|
|
559
|
+
def convert_table_type(type)
|
|
560
|
+
case type
|
|
561
|
+
when :ONE_DIMENSIONAL
|
|
562
|
+
'ONE_DIMENSIONAL'
|
|
563
|
+
when :TWO_DIMENSIONAL
|
|
564
|
+
'TWO_DIMENSIONAL'
|
|
565
|
+
else
|
|
566
|
+
raise ArgumentError, "Unknown table type:#{type}!"
|
|
567
|
+
end
|
|
568
|
+
end
|
|
569
|
+
|
|
570
|
+
# Convert the endianness string to a value
|
|
571
|
+
def read_endianness(str)
|
|
572
|
+
str.upcase!
|
|
573
|
+
case str
|
|
574
|
+
when 'BIG_ENDIAN'
|
|
575
|
+
:BIG_ENDIAN
|
|
576
|
+
when 'LITTLE_ENDIAN'
|
|
577
|
+
:LITTLE_ENDIAN
|
|
578
|
+
else
|
|
579
|
+
raise ArgumentError, "Unknown endianness:#{str}! Must be BIG_ENDIAN or LITTLE_ENDIAN"
|
|
580
|
+
end
|
|
581
|
+
end
|
|
582
|
+
|
|
583
|
+
# Convert the endianness value to a string
|
|
584
|
+
def convert_endianness(endianness)
|
|
585
|
+
case endianness
|
|
586
|
+
when :BIG_ENDIAN
|
|
587
|
+
'BIG_ENDIAN'
|
|
588
|
+
when :LITTLE_ENDIAN
|
|
589
|
+
'LITTLE_ENDIAN'
|
|
590
|
+
else
|
|
591
|
+
raise ArgumentError, "Unknown endianness:#{endianness}!"
|
|
592
|
+
end
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
# Process a item type string into a value
|
|
596
|
+
def read_item_type(str)
|
|
597
|
+
str.upcase!
|
|
598
|
+
case str
|
|
599
|
+
when 'INT'
|
|
600
|
+
:INT
|
|
601
|
+
when 'UINT'
|
|
602
|
+
:UINT
|
|
603
|
+
when 'FLOAT'
|
|
604
|
+
:FLOAT
|
|
605
|
+
when 'STRING'
|
|
606
|
+
:STRING
|
|
607
|
+
when 'BLOCK'
|
|
608
|
+
:BLOCK
|
|
609
|
+
else
|
|
610
|
+
raise ArgumentError, "Unknown type:#{str}! Must be INT, UINT, FLOAT, STRING, or BLOCK"
|
|
611
|
+
end
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
# Process a item type value into a string
|
|
615
|
+
def convert_item_type(type)
|
|
616
|
+
case type
|
|
617
|
+
when :INT
|
|
618
|
+
'INT'
|
|
619
|
+
when :UINT
|
|
620
|
+
'UINT'
|
|
621
|
+
when :FLOAT
|
|
622
|
+
'FLOAT'
|
|
623
|
+
when :STRING
|
|
624
|
+
'STRING'
|
|
625
|
+
when :BLOCK
|
|
626
|
+
'BLOCK'
|
|
627
|
+
else
|
|
628
|
+
raise ArgumentError, "Unknown type:#{type}!"
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
# Convert a string to the correct item type
|
|
633
|
+
def convert_to_type(val, type)
|
|
634
|
+
raise ArgumentError, "Value is not defined" if val.nil?
|
|
635
|
+
begin
|
|
636
|
+
case type
|
|
637
|
+
when :INT, :UINT
|
|
638
|
+
val = Integer(val)
|
|
639
|
+
when :FLOAT
|
|
640
|
+
val = Float(val)
|
|
641
|
+
when :STRING, :BLOCK
|
|
642
|
+
val = val.to_s
|
|
643
|
+
end
|
|
644
|
+
rescue
|
|
645
|
+
begin
|
|
646
|
+
val = eval(val)
|
|
647
|
+
rescue
|
|
648
|
+
case type
|
|
649
|
+
when :INT
|
|
650
|
+
type_name = 'INT'
|
|
651
|
+
when :UINT
|
|
652
|
+
type_name = 'UINT'
|
|
653
|
+
when :FLOAT
|
|
654
|
+
type_name = 'FLOAT'
|
|
655
|
+
end
|
|
656
|
+
raise ArgumentError, "Error evaluating value:#{val} of type:#{type_name}"
|
|
657
|
+
end
|
|
658
|
+
end
|
|
659
|
+
val
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
# Convert the given minimum and maximum values of the given type and bit_size
|
|
663
|
+
# into a valid Ruby range: min..max. The function verifies the range is not
|
|
664
|
+
# backwards and that the minimum and maximum values make sense for the given
|
|
665
|
+
# type and bit_size. For example, a maximum of 256 doesn't make sense for a UINT8.
|
|
666
|
+
def convert_to_range(min, max, type, bit_size)
|
|
667
|
+
min = convert_to_type(min, type)
|
|
668
|
+
max = convert_to_type(max, type)
|
|
669
|
+
range = min..max
|
|
670
|
+
|
|
671
|
+
# First check for backwards ranges
|
|
672
|
+
if min > max
|
|
673
|
+
raise ArgumentError, "Min:#{min} can't be larger than max:#{max} in range"
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
case type
|
|
677
|
+
# No case for FLOAT because if the type is a float the range
|
|
678
|
+
# can be anything since you can't set a range wider than that allowed by a float
|
|
679
|
+
when :UINT
|
|
680
|
+
# First check for a negative range which doesn't make sense for UINT
|
|
681
|
+
if min < 0 or max < 0
|
|
682
|
+
raise ArgumentError, "Negative value in UINT range doesn't make sense"
|
|
683
|
+
end
|
|
684
|
+
if (bit_size == 8 and max > 255) or
|
|
685
|
+
(bit_size == 16 and max > 65535) or
|
|
686
|
+
(bit_size == 32 and max > 4294967295)
|
|
687
|
+
raise ArgumentError, "Max value of #{max} in UINT range doesn't make sense"
|
|
688
|
+
end
|
|
689
|
+
when :INT
|
|
690
|
+
if (bit_size == 8 and (min < -128 or max > 127)) or
|
|
691
|
+
(bit_size == 16 and (min < -32768 or max > 32767)) or
|
|
692
|
+
(bit_size == 32 and (min < -2147483648 or max > 2147483647))
|
|
693
|
+
raise ArgumentError, "Max value of #{max} in INT range doesn't make sense"
|
|
694
|
+
end
|
|
695
|
+
end
|
|
696
|
+
range
|
|
697
|
+
end
|
|
698
|
+
|
|
699
|
+
# Convert a display type string to the type value
|
|
700
|
+
def read_display_type(display_type, value_type)
|
|
701
|
+
editable = true
|
|
702
|
+
display_type.upcase!
|
|
703
|
+
|
|
704
|
+
if /-U/ =~ display_type
|
|
705
|
+
editable = false
|
|
706
|
+
display_type.sub!(/-U/,"")
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
case display_type
|
|
710
|
+
when 'DEC'
|
|
711
|
+
display_type = :DEC
|
|
712
|
+
when 'HEX'
|
|
713
|
+
display_type = :HEX
|
|
714
|
+
when 'STATE'
|
|
715
|
+
display_type = :STATE
|
|
716
|
+
when 'CHECK'
|
|
717
|
+
display_type = :CHECK
|
|
718
|
+
when 'STRING'
|
|
719
|
+
display_type = :STRING
|
|
720
|
+
when 'NONE'
|
|
721
|
+
display_type = :NONE
|
|
722
|
+
editable = false
|
|
723
|
+
else
|
|
724
|
+
raise ArgumentError, "Unknown display type:#{display_type}! Must be DEC, DEC-U, HEX, HEX-U, STATE, STATE-U, CHECK, CHECK-U, STRING or NONE"
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
if value_type ==:STRING && display_type != :STRING
|
|
728
|
+
raise ArgumentError, "STRING items must have a display type of STRING"
|
|
729
|
+
end
|
|
730
|
+
if value_type == :BLOCK && display_type != :NONE
|
|
731
|
+
raise ArgumentError, "BLOCK items must have a display type of NONE"
|
|
732
|
+
end
|
|
733
|
+
|
|
734
|
+
return display_type, editable
|
|
735
|
+
end
|
|
736
|
+
|
|
737
|
+
# Convert display type value to a display type string
|
|
738
|
+
def convert_display_type(type, editable)
|
|
739
|
+
display =
|
|
740
|
+
case type
|
|
741
|
+
when :DEC
|
|
742
|
+
'DEC'
|
|
743
|
+
when :HEX
|
|
744
|
+
'HEX'
|
|
745
|
+
when :STATE
|
|
746
|
+
'STATE'
|
|
747
|
+
when :CHECK
|
|
748
|
+
'CHECK'
|
|
749
|
+
when :STRING
|
|
750
|
+
'STRING'
|
|
751
|
+
when :NONE
|
|
752
|
+
'NONE'
|
|
753
|
+
else
|
|
754
|
+
raise ArgumentError, "Unkown display type:#{type}!"
|
|
755
|
+
end
|
|
756
|
+
if not editable
|
|
757
|
+
display << "-U"
|
|
758
|
+
end
|
|
759
|
+
display
|
|
760
|
+
end
|
|
761
|
+
|
|
762
|
+
end # class TableConfig
|
|
763
|
+
|
|
764
|
+
end # module Cosmos
|