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,539 +1,539 @@
|
|
|
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_config'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
class TableManagerCore
|
|
17
|
-
# the currently opened definition file
|
|
18
|
-
attr_reader :current_def
|
|
19
|
-
|
|
20
|
-
# the currently opened binary file
|
|
21
|
-
attr_reader :current_bin
|
|
22
|
-
|
|
23
|
-
# an instance of TableDefinition
|
|
24
|
-
attr_reader :table_def
|
|
25
|
-
|
|
26
|
-
def initialize
|
|
27
|
-
reset()
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def reset
|
|
31
|
-
@current_bin = nil
|
|
32
|
-
@current_def = nil
|
|
33
|
-
@table_def = nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def process_definition(filename)
|
|
37
|
-
@table_def = TableConfig.new()
|
|
38
|
-
@table_def.process(filename)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# INTERFACE METHODS
|
|
42
|
-
|
|
43
|
-
# Creates new binary files based on a list of definition files and an destination directory
|
|
44
|
-
def file_new(def_files, output_dir, bar = nil)
|
|
45
|
-
bin_files = []
|
|
46
|
-
begin
|
|
47
|
-
progress = 0.0
|
|
48
|
-
progress_increment = 100.0 / def_files.length.to_f / 4.0
|
|
49
|
-
|
|
50
|
-
def_files.each do |def_file|
|
|
51
|
-
@current_def = def_file
|
|
52
|
-
|
|
53
|
-
process_definition(def_file)
|
|
54
|
-
if bar
|
|
55
|
-
progress += progress_increment
|
|
56
|
-
bar.progress = progress.to_i
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Initialize all values to defaults
|
|
60
|
-
@table_def.get_all_tables.each do |table|
|
|
61
|
-
set_binary_data_to_default(table.name)
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
if bar
|
|
65
|
-
progress += progress_increment
|
|
66
|
-
bar.progress = progress.to_i
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# Now verify the tables makes sense as defined by the table definition.
|
|
70
|
-
# It's possible to have a definition file with default values outside
|
|
71
|
-
# the allowable range so we check for that here.
|
|
72
|
-
result = file_check()
|
|
73
|
-
unless result.empty?
|
|
74
|
-
reset()
|
|
75
|
-
raise "The table definition file has incompatibilities. Please fix the following errors:\n\n" << result
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
if bar
|
|
79
|
-
progress += progress_increment
|
|
80
|
-
bar.progress = progress.to_i
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
if File.basename(def_file) =~ /_def\.txt/
|
|
84
|
-
basename = File.basename(def_file)[0...-8] # Get the basename without the _def.txt
|
|
85
|
-
else
|
|
86
|
-
basename = File.basename(def_file).split('.')[0...-1].join('.') # Get the basename without the extension
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# Set the current_bin so the file_report function works correctly
|
|
90
|
-
@current_bin = File.join(output_dir, "#{basename}.dat")
|
|
91
|
-
file_save(@current_bin)
|
|
92
|
-
bin_files << @current_bin
|
|
93
|
-
if bar
|
|
94
|
-
progress += progress_increment
|
|
95
|
-
bar.progress = progress.to_i
|
|
96
|
-
end
|
|
97
|
-
file_report()
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
bar.progress = 100 if bar
|
|
101
|
-
sleep(0.5)
|
|
102
|
-
ensure
|
|
103
|
-
reset()
|
|
104
|
-
end
|
|
105
|
-
return bin_files
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Opens a specified binary file using a specified definition file as the interpreter
|
|
109
|
-
def file_open(def_file, bin_file)
|
|
110
|
-
@current_bin = bin_file
|
|
111
|
-
@current_def = def_file
|
|
112
|
-
process_definition(def_file)
|
|
113
|
-
open_and_load_binary_file(bin_file)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def file_save(filename = nil)
|
|
117
|
-
raise "Please open a table first." unless @table_def
|
|
118
|
-
@current_bin = filename if filename
|
|
119
|
-
|
|
120
|
-
result = file_check()
|
|
121
|
-
unless result.empty?
|
|
122
|
-
raise "Please fix the following errors before saving:\n\n" << result
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
# Call the user defined function on_save to allow additional processing
|
|
126
|
-
# before the file is written out
|
|
127
|
-
on_save()
|
|
128
|
-
|
|
129
|
-
File.open(@current_bin, "wb") do |file|
|
|
130
|
-
@table_def.get_all_tables.each do |table|
|
|
131
|
-
file.write(table.buffer)
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def file_check
|
|
137
|
-
raise "Please open a table first." unless @table_def
|
|
138
|
-
|
|
139
|
-
result = ""
|
|
140
|
-
@table_def.get_all_tables.each do |table|
|
|
141
|
-
table_result = table_check(table.name)
|
|
142
|
-
unless table_result.empty?
|
|
143
|
-
result << "Error(s) in #{table.name}:\n" + table_result
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
return result
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
def file_hex
|
|
151
|
-
raise "Please open a table first." unless @table_def
|
|
152
|
-
|
|
153
|
-
data = ""
|
|
154
|
-
# collect the data from each table
|
|
155
|
-
@table_def.get_all_tables.each do |table|
|
|
156
|
-
data << table.buffer
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
str, size = create_hex_string(data)
|
|
160
|
-
str << "\n\nTotal Bytes Read: %d" % size
|
|
161
|
-
|
|
162
|
-
return str
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
# Generate the RPT file for the currently opened file
|
|
166
|
-
def file_report
|
|
167
|
-
raise "Please open a table first." unless @table_def
|
|
168
|
-
|
|
169
|
-
result = file_check()
|
|
170
|
-
unless result.empty?
|
|
171
|
-
raise "Please fix the following errors before generating the report:\n\n" << result
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
filename = File.basename(@current_bin, ".dat")
|
|
175
|
-
File.open(File.join(File.dirname(@current_bin), "#{filename}.rpt"), 'w+') do |file|
|
|
176
|
-
file.write("File Definition: #{@current_def}\n")
|
|
177
|
-
file.write("File Binary: #{@current_bin}\n\n")
|
|
178
|
-
@table_def.get_all_tables.each do |table|
|
|
179
|
-
items = table.sorted_items
|
|
180
|
-
file.puts(table.name)
|
|
181
|
-
|
|
182
|
-
column_lengths = []
|
|
183
|
-
|
|
184
|
-
if table.type == :TWO_DIMENSIONAL
|
|
185
|
-
column_lengths[0] = "Item".length
|
|
186
|
-
else
|
|
187
|
-
column_lengths[0] = "Label".length
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
# Determine the maximum length of all the row header text in the table
|
|
191
|
-
# Basically we're treating the row headers as column 0 when we output
|
|
192
|
-
# the data which is why we set column_lengths[0] with the row text length
|
|
193
|
-
(0...table.num_rows).each do |r|
|
|
194
|
-
if table.type == :TWO_DIMENSIONAL
|
|
195
|
-
rowtext = "#{r+1}"
|
|
196
|
-
else
|
|
197
|
-
rowtext = items[r].name
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
if rowtext.length > column_lengths[0]
|
|
201
|
-
column_lengths[0] = rowtext.length
|
|
202
|
-
end
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
# Collect the column header text length in the table
|
|
206
|
-
# Since the row headers were column 0 that is why we increment the column
|
|
207
|
-
# header by 1 (column_lengths[c+1]) before setting the column text length
|
|
208
|
-
(0...table.num_columns).each do |c|
|
|
209
|
-
if table.type == :TWO_DIMENSIONAL
|
|
210
|
-
columntext = items[c].name[0...-1]
|
|
211
|
-
else
|
|
212
|
-
columntext = "Value"
|
|
213
|
-
end
|
|
214
|
-
column_lengths[c+1] = columntext.length
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
# Determine the maximum length item in each column of the table
|
|
218
|
-
# We can simply go throught the gui table by row and column looking for
|
|
219
|
-
# the widest value
|
|
220
|
-
(0...table.num_rows).each do |r|
|
|
221
|
-
(0...table.num_columns).each do |c|
|
|
222
|
-
if table.type == :TWO_DIMENSIONAL
|
|
223
|
-
item_def = items[c + r * table.num_columns]
|
|
224
|
-
else
|
|
225
|
-
item_def = items[r]
|
|
226
|
-
end
|
|
227
|
-
value = item_to_report_string(table, item_def)
|
|
228
|
-
|
|
229
|
-
if value.length > column_lengths[c+1]
|
|
230
|
-
column_lengths[c+1] = value.length
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
end
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# Write out the first column header depending on the table type
|
|
237
|
-
if table.type == :TWO_DIMENSIONAL
|
|
238
|
-
file.printf("%-#{column_lengths[0]}s ", "Item")
|
|
239
|
-
else
|
|
240
|
-
file.printf("%-#{column_lengths[0]}s ", "Label")
|
|
241
|
-
end
|
|
242
|
-
|
|
243
|
-
# Write out all the column header text
|
|
244
|
-
(0...table.num_columns).each do |c|
|
|
245
|
-
if table.type == :TWO_DIMENSIONAL
|
|
246
|
-
columntext = items[c].name[0...-1]
|
|
247
|
-
else
|
|
248
|
-
columntext = "Value"
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
file.printf("%-#{column_lengths[c+1]}s ", columntext)
|
|
252
|
-
end
|
|
253
|
-
file.write("\n")
|
|
254
|
-
|
|
255
|
-
# Write out the table items
|
|
256
|
-
(0...table.num_rows).each do |r|
|
|
257
|
-
if table.type == :TWO_DIMENSIONAL
|
|
258
|
-
rowtext = "#{r+1}"
|
|
259
|
-
else
|
|
260
|
-
rowtext = items[r].name
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
file.printf("%-#{column_lengths[0]}s ", rowtext)
|
|
264
|
-
(0...table.num_columns).each do |c|
|
|
265
|
-
if table.type == :TWO_DIMENSIONAL
|
|
266
|
-
item_def = items[c + r * table.num_columns]
|
|
267
|
-
else
|
|
268
|
-
item_def = items[r]
|
|
269
|
-
end
|
|
270
|
-
|
|
271
|
-
value = item_to_report_string(table, item_def)
|
|
272
|
-
|
|
273
|
-
file.printf("%-#{column_lengths[c+1]}s ", value)
|
|
274
|
-
|
|
275
|
-
end
|
|
276
|
-
file.write("\n") # newline after each row
|
|
277
|
-
end
|
|
278
|
-
file.write("\n") # newline after each table
|
|
279
|
-
end # end @table_def.get_all_tables.each do |table|
|
|
280
|
-
end
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
def table_check(table_name)
|
|
284
|
-
raise "Please open a table first." unless @table_def
|
|
285
|
-
|
|
286
|
-
table = @table_def.get_table(table_name)
|
|
287
|
-
raise "Please open a table first." unless table
|
|
288
|
-
|
|
289
|
-
result = ""
|
|
290
|
-
item_defs = table.sorted_items
|
|
291
|
-
|
|
292
|
-
# Check the ranges and constraints for each item in the table
|
|
293
|
-
# We go through it this way (by row and columns) so we can grab the actual
|
|
294
|
-
# user input when we display any errors found
|
|
295
|
-
(0...table.num_rows).each do |r|
|
|
296
|
-
(0...table.num_columns).each do |c|
|
|
297
|
-
# get the table item definition so we know how to save it
|
|
298
|
-
item_def = item_defs[r * table.num_columns + c]
|
|
299
|
-
|
|
300
|
-
# if a constraint was defined call it here
|
|
301
|
-
# this should set the underlying constraints
|
|
302
|
-
if (item_def.constraint != nil)
|
|
303
|
-
item_def.constraint.call(item_def, table, table.buffer)
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
x = table.read(item_def.name, :RAW)
|
|
307
|
-
unless item_def.range.nil?
|
|
308
|
-
if item_def.display_type == :STRING
|
|
309
|
-
if x.length > item_def.range.last || x.length < item_def.range.first
|
|
310
|
-
result << " #{item_def.name}: #{x} must be between #{item_def.range.first} and #{item_def.range.last} characters\n"
|
|
311
|
-
end
|
|
312
|
-
else
|
|
313
|
-
# check to see if the value lies within its valid range
|
|
314
|
-
if not item_def.range.include?(x)
|
|
315
|
-
# if the value is displayed as hex, display the range as hex
|
|
316
|
-
if item_def.display_type == :HEX
|
|
317
|
-
range_first = "0x%X" % item_def.range.first
|
|
318
|
-
range_last = "0x%X" % item_def.range.last
|
|
319
|
-
x = "0x%X" % x
|
|
320
|
-
else
|
|
321
|
-
range_first = item_def.range.first
|
|
322
|
-
range_last = item_def.range.last
|
|
323
|
-
x = table.read(item_def.name)
|
|
324
|
-
end
|
|
325
|
-
result << " #{item_def.name}: #{x} outside valid range of #{range_first}..#{range_last}\n"
|
|
326
|
-
end
|
|
327
|
-
end
|
|
328
|
-
end
|
|
329
|
-
end # end each column
|
|
330
|
-
end # end each row
|
|
331
|
-
return result
|
|
332
|
-
end
|
|
333
|
-
|
|
334
|
-
def table_default(table_name)
|
|
335
|
-
raise "Please open a table first." unless @table_def
|
|
336
|
-
set_binary_data_to_default(table_name)
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
# option to display a dialog containing a hex dump of the current table values
|
|
340
|
-
def table_hex(table_name)
|
|
341
|
-
raise "Please open a table first." unless @table_def
|
|
342
|
-
table = @table_def.get_table(table_name)
|
|
343
|
-
raise "Please open a table first." unless table
|
|
344
|
-
|
|
345
|
-
data = table.buffer
|
|
346
|
-
str, size = create_hex_string(data)
|
|
347
|
-
str << "\n\nTotal Bytes Read: %d" % size
|
|
348
|
-
|
|
349
|
-
return str
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
# option to save the currently displayed table as a stand alone binary file
|
|
353
|
-
def table_save(table_name, filename)
|
|
354
|
-
raise "Please open a table first." unless @table_def
|
|
355
|
-
|
|
356
|
-
result = table_check(table_name)
|
|
357
|
-
unless result.empty?
|
|
358
|
-
raise "Please fix the following errors before saving:\n\n" << result
|
|
359
|
-
end
|
|
360
|
-
|
|
361
|
-
File.open(filename, 'wb') do |datafile|
|
|
362
|
-
table = @table_def.get_table(table_name)
|
|
363
|
-
datafile.write(table.buffer)
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
|
|
367
|
-
# option to save the currently displayed table to an existing table binary file
|
|
368
|
-
# containing that table.
|
|
369
|
-
def table_commit(table_name, bin_file, def_file)
|
|
370
|
-
raise "Please open a table first." unless @table_def
|
|
371
|
-
save_table = @table_def.get_table(table_name)
|
|
372
|
-
raise "Please open a table first." unless save_table
|
|
373
|
-
|
|
374
|
-
result = file_check()
|
|
375
|
-
unless result.empty?
|
|
376
|
-
raise "Please fix the following errors before saving:\n\n" << result
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
@current_bin = bin_file
|
|
380
|
-
@current_def = def_file
|
|
381
|
-
|
|
382
|
-
parser = TableConfig.new
|
|
383
|
-
begin
|
|
384
|
-
parser.process(def_file)
|
|
385
|
-
rescue => err
|
|
386
|
-
raise "The table definition file:#{def_file} has the following errors:\n#{err}"
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
if !parser.get_table_names.include?(table_name)
|
|
390
|
-
raise "#{table_name} not found in #{def_file} table definition file."
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
@table_def = parser
|
|
394
|
-
open_and_load_binary_file(bin_file)
|
|
395
|
-
|
|
396
|
-
# Store the saved table data in the new table definition
|
|
397
|
-
table = @table_def.get_table(save_table.name)
|
|
398
|
-
table.buffer = save_table.buffer[0...table.length]
|
|
399
|
-
file_save(bin_file)
|
|
400
|
-
end
|
|
401
|
-
|
|
402
|
-
# Updates the definition file for a table.
|
|
403
|
-
def table_update_def(table_name)
|
|
404
|
-
raise "Please open a table first." unless @table_def
|
|
405
|
-
|
|
406
|
-
# Check to see that the table definition file is writeable
|
|
407
|
-
table = @table_def.get_table(table_name)
|
|
408
|
-
raise "Please open a table first." unless table
|
|
409
|
-
|
|
410
|
-
if !File.writable?(table.filename)
|
|
411
|
-
raise "#{table.filename} is not writeable."
|
|
412
|
-
end
|
|
413
|
-
|
|
414
|
-
# Check for errors in the table before updating the defaults
|
|
415
|
-
result = table_check(table_name)
|
|
416
|
-
unless result.empty?
|
|
417
|
-
raise "Please fix the following errors before updating the definition file:\n\n" << result
|
|
418
|
-
end
|
|
419
|
-
|
|
420
|
-
begin
|
|
421
|
-
@table_def.commit_default_values(table)
|
|
422
|
-
rescue => err
|
|
423
|
-
raise "The table definition file could not be written due to the following error(s):\n#{err}"
|
|
424
|
-
end
|
|
425
|
-
end
|
|
426
|
-
|
|
427
|
-
# Return a GenericTable given a String table name
|
|
428
|
-
def get_table(table_name)
|
|
429
|
-
@table_def.get_table(table_name)
|
|
430
|
-
end
|
|
431
|
-
|
|
432
|
-
# Retrieves a value from a table
|
|
433
|
-
def get_table_item(table_name, item_name)
|
|
434
|
-
@table_def.get_table(table_name).read(item_name)
|
|
435
|
-
end
|
|
436
|
-
|
|
437
|
-
# Updates a value in a table
|
|
438
|
-
def set_table_item(table_name, item_name, value)
|
|
439
|
-
@table_def.get_table(table_name).write(item_name, value)
|
|
440
|
-
end
|
|
441
|
-
|
|
442
|
-
# Override on_save to perform additional actions before the file is
|
|
443
|
-
# saved to disk.
|
|
444
|
-
def on_save
|
|
445
|
-
return
|
|
446
|
-
end
|
|
447
|
-
|
|
448
|
-
# Determines the string representation of an item as it should be printed in a RPT file
|
|
449
|
-
def item_to_report_string(table, item_def)
|
|
450
|
-
result = ""
|
|
451
|
-
case item_def.display_type
|
|
452
|
-
when :NONE
|
|
453
|
-
result = "\n#{table.read(item_def.name).formatted}"
|
|
454
|
-
when :STATE, :DEC, :STRING
|
|
455
|
-
result = table.read(item_def.name).to_s
|
|
456
|
-
when :CHECK
|
|
457
|
-
value = table.read(item_def.name)
|
|
458
|
-
if value == item_def.range.end
|
|
459
|
-
result = "X (#{item_def.range.end.to_s})"
|
|
460
|
-
else
|
|
461
|
-
result = "- (#{item_def.range.begin.to_s})"
|
|
462
|
-
end
|
|
463
|
-
when :HEX
|
|
464
|
-
result = @table_def.format_hex(table, item_def)
|
|
465
|
-
end
|
|
466
|
-
|
|
467
|
-
return result
|
|
468
|
-
end
|
|
469
|
-
|
|
470
|
-
# Create a hex string representation of the given binary data string
|
|
471
|
-
def create_hex_string(data)
|
|
472
|
-
index = 0
|
|
473
|
-
str = ""
|
|
474
|
-
while index < data.length
|
|
475
|
-
# after 16 bytes insert a newline in the display
|
|
476
|
-
if index % 16 == 0
|
|
477
|
-
# don't insert a newline the first time
|
|
478
|
-
if index != 0
|
|
479
|
-
str << "\n"
|
|
480
|
-
end
|
|
481
|
-
str << "0x%08X: " % index
|
|
482
|
-
# every 4 bytes insert a space for readability
|
|
483
|
-
elsif index % 4 == 0
|
|
484
|
-
str << " "
|
|
485
|
-
end
|
|
486
|
-
str << "%02X" % data.getbyte(index)
|
|
487
|
-
index += 1
|
|
488
|
-
end
|
|
489
|
-
return str, index
|
|
490
|
-
end
|
|
491
|
-
|
|
492
|
-
# Set all the binary data in the table definition to the default values
|
|
493
|
-
def set_binary_data_to_default(table_name)
|
|
494
|
-
table = @table_def.get_table(table_name)
|
|
495
|
-
|
|
496
|
-
# if we can't find the table do nothing
|
|
497
|
-
return unless table
|
|
498
|
-
|
|
499
|
-
table.sorted_items.each do |item_def|
|
|
500
|
-
if item_def.data_type == :BLOCK
|
|
501
|
-
table.write(item_def.name, item_def.default.hex_to_byte_string)
|
|
502
|
-
else
|
|
503
|
-
table.write(item_def.name, item_def.default)
|
|
504
|
-
end
|
|
505
|
-
end
|
|
506
|
-
end
|
|
507
|
-
|
|
508
|
-
# Opens the given binary file and populates the table definition.
|
|
509
|
-
# The filename parameter should be a properly formatted file path.
|
|
510
|
-
def open_and_load_binary_file(filename)
|
|
511
|
-
begin
|
|
512
|
-
data = nil
|
|
513
|
-
# read the binary file and store it into an array
|
|
514
|
-
File.open(filename, 'rb') do |file|
|
|
515
|
-
data = file.read
|
|
516
|
-
end
|
|
517
|
-
rescue => err
|
|
518
|
-
raise "Unable to open and load #{filename} due to #{err}."
|
|
519
|
-
end
|
|
520
|
-
|
|
521
|
-
binary_data_index = 0
|
|
522
|
-
total_table_length = 0
|
|
523
|
-
@table_def.get_all_tables.each {|table| total_table_length += table.length }
|
|
524
|
-
@table_def.get_all_tables.each do |table|
|
|
525
|
-
if binary_data_index + table.length > data.length
|
|
526
|
-
table.buffer = data[binary_data_index..-1]
|
|
527
|
-
raise "Binary size of #{data.length} not large enough to fully represent table definition of length #{total_table_length}. The remaining table definition (starting with byte #{data.length - binary_data_index} in #{table.name}) will be filled with 0."
|
|
528
|
-
end
|
|
529
|
-
table.buffer = data[binary_data_index...binary_data_index+table.length]
|
|
530
|
-
binary_data_index += table.length
|
|
531
|
-
end
|
|
532
|
-
if binary_data_index < data.length
|
|
533
|
-
raise "Binary size of #{data.length} larger than table definition of length #{total_table_length}. Discarding the remaing #{data.length - binary_data_index} bytes."
|
|
534
|
-
end
|
|
535
|
-
end
|
|
536
|
-
|
|
537
|
-
end
|
|
538
|
-
|
|
539
|
-
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_config'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
class TableManagerCore
|
|
17
|
+
# the currently opened definition file
|
|
18
|
+
attr_reader :current_def
|
|
19
|
+
|
|
20
|
+
# the currently opened binary file
|
|
21
|
+
attr_reader :current_bin
|
|
22
|
+
|
|
23
|
+
# an instance of TableDefinition
|
|
24
|
+
attr_reader :table_def
|
|
25
|
+
|
|
26
|
+
def initialize
|
|
27
|
+
reset()
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def reset
|
|
31
|
+
@current_bin = nil
|
|
32
|
+
@current_def = nil
|
|
33
|
+
@table_def = nil
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def process_definition(filename)
|
|
37
|
+
@table_def = TableConfig.new()
|
|
38
|
+
@table_def.process(filename)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# INTERFACE METHODS
|
|
42
|
+
|
|
43
|
+
# Creates new binary files based on a list of definition files and an destination directory
|
|
44
|
+
def file_new(def_files, output_dir, bar = nil)
|
|
45
|
+
bin_files = []
|
|
46
|
+
begin
|
|
47
|
+
progress = 0.0
|
|
48
|
+
progress_increment = 100.0 / def_files.length.to_f / 4.0
|
|
49
|
+
|
|
50
|
+
def_files.each do |def_file|
|
|
51
|
+
@current_def = def_file
|
|
52
|
+
|
|
53
|
+
process_definition(def_file)
|
|
54
|
+
if bar
|
|
55
|
+
progress += progress_increment
|
|
56
|
+
bar.progress = progress.to_i
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Initialize all values to defaults
|
|
60
|
+
@table_def.get_all_tables.each do |table|
|
|
61
|
+
set_binary_data_to_default(table.name)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
if bar
|
|
65
|
+
progress += progress_increment
|
|
66
|
+
bar.progress = progress.to_i
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Now verify the tables makes sense as defined by the table definition.
|
|
70
|
+
# It's possible to have a definition file with default values outside
|
|
71
|
+
# the allowable range so we check for that here.
|
|
72
|
+
result = file_check()
|
|
73
|
+
unless result.empty?
|
|
74
|
+
reset()
|
|
75
|
+
raise "The table definition file has incompatibilities. Please fix the following errors:\n\n" << result
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
if bar
|
|
79
|
+
progress += progress_increment
|
|
80
|
+
bar.progress = progress.to_i
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
if File.basename(def_file) =~ /_def\.txt/
|
|
84
|
+
basename = File.basename(def_file)[0...-8] # Get the basename without the _def.txt
|
|
85
|
+
else
|
|
86
|
+
basename = File.basename(def_file).split('.')[0...-1].join('.') # Get the basename without the extension
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Set the current_bin so the file_report function works correctly
|
|
90
|
+
@current_bin = File.join(output_dir, "#{basename}.dat")
|
|
91
|
+
file_save(@current_bin)
|
|
92
|
+
bin_files << @current_bin
|
|
93
|
+
if bar
|
|
94
|
+
progress += progress_increment
|
|
95
|
+
bar.progress = progress.to_i
|
|
96
|
+
end
|
|
97
|
+
file_report()
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
bar.progress = 100 if bar
|
|
101
|
+
sleep(0.5)
|
|
102
|
+
ensure
|
|
103
|
+
reset()
|
|
104
|
+
end
|
|
105
|
+
return bin_files
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Opens a specified binary file using a specified definition file as the interpreter
|
|
109
|
+
def file_open(def_file, bin_file)
|
|
110
|
+
@current_bin = bin_file
|
|
111
|
+
@current_def = def_file
|
|
112
|
+
process_definition(def_file)
|
|
113
|
+
open_and_load_binary_file(bin_file)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def file_save(filename = nil)
|
|
117
|
+
raise "Please open a table first." unless @table_def
|
|
118
|
+
@current_bin = filename if filename
|
|
119
|
+
|
|
120
|
+
result = file_check()
|
|
121
|
+
unless result.empty?
|
|
122
|
+
raise "Please fix the following errors before saving:\n\n" << result
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Call the user defined function on_save to allow additional processing
|
|
126
|
+
# before the file is written out
|
|
127
|
+
on_save()
|
|
128
|
+
|
|
129
|
+
File.open(@current_bin, "wb") do |file|
|
|
130
|
+
@table_def.get_all_tables.each do |table|
|
|
131
|
+
file.write(table.buffer)
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def file_check
|
|
137
|
+
raise "Please open a table first." unless @table_def
|
|
138
|
+
|
|
139
|
+
result = ""
|
|
140
|
+
@table_def.get_all_tables.each do |table|
|
|
141
|
+
table_result = table_check(table.name)
|
|
142
|
+
unless table_result.empty?
|
|
143
|
+
result << "Error(s) in #{table.name}:\n" + table_result
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
return result
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def file_hex
|
|
151
|
+
raise "Please open a table first." unless @table_def
|
|
152
|
+
|
|
153
|
+
data = ""
|
|
154
|
+
# collect the data from each table
|
|
155
|
+
@table_def.get_all_tables.each do |table|
|
|
156
|
+
data << table.buffer
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
str, size = create_hex_string(data)
|
|
160
|
+
str << "\n\nTotal Bytes Read: %d" % size
|
|
161
|
+
|
|
162
|
+
return str
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Generate the RPT file for the currently opened file
|
|
166
|
+
def file_report
|
|
167
|
+
raise "Please open a table first." unless @table_def
|
|
168
|
+
|
|
169
|
+
result = file_check()
|
|
170
|
+
unless result.empty?
|
|
171
|
+
raise "Please fix the following errors before generating the report:\n\n" << result
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
filename = File.basename(@current_bin, ".dat")
|
|
175
|
+
File.open(File.join(File.dirname(@current_bin), "#{filename}.rpt"), 'w+') do |file|
|
|
176
|
+
file.write("File Definition: #{@current_def}\n")
|
|
177
|
+
file.write("File Binary: #{@current_bin}\n\n")
|
|
178
|
+
@table_def.get_all_tables.each do |table|
|
|
179
|
+
items = table.sorted_items
|
|
180
|
+
file.puts(table.name)
|
|
181
|
+
|
|
182
|
+
column_lengths = []
|
|
183
|
+
|
|
184
|
+
if table.type == :TWO_DIMENSIONAL
|
|
185
|
+
column_lengths[0] = "Item".length
|
|
186
|
+
else
|
|
187
|
+
column_lengths[0] = "Label".length
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# Determine the maximum length of all the row header text in the table
|
|
191
|
+
# Basically we're treating the row headers as column 0 when we output
|
|
192
|
+
# the data which is why we set column_lengths[0] with the row text length
|
|
193
|
+
(0...table.num_rows).each do |r|
|
|
194
|
+
if table.type == :TWO_DIMENSIONAL
|
|
195
|
+
rowtext = "#{r+1}"
|
|
196
|
+
else
|
|
197
|
+
rowtext = items[r].name
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
if rowtext.length > column_lengths[0]
|
|
201
|
+
column_lengths[0] = rowtext.length
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# Collect the column header text length in the table
|
|
206
|
+
# Since the row headers were column 0 that is why we increment the column
|
|
207
|
+
# header by 1 (column_lengths[c+1]) before setting the column text length
|
|
208
|
+
(0...table.num_columns).each do |c|
|
|
209
|
+
if table.type == :TWO_DIMENSIONAL
|
|
210
|
+
columntext = items[c].name[0...-1]
|
|
211
|
+
else
|
|
212
|
+
columntext = "Value"
|
|
213
|
+
end
|
|
214
|
+
column_lengths[c+1] = columntext.length
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
# Determine the maximum length item in each column of the table
|
|
218
|
+
# We can simply go throught the gui table by row and column looking for
|
|
219
|
+
# the widest value
|
|
220
|
+
(0...table.num_rows).each do |r|
|
|
221
|
+
(0...table.num_columns).each do |c|
|
|
222
|
+
if table.type == :TWO_DIMENSIONAL
|
|
223
|
+
item_def = items[c + r * table.num_columns]
|
|
224
|
+
else
|
|
225
|
+
item_def = items[r]
|
|
226
|
+
end
|
|
227
|
+
value = item_to_report_string(table, item_def)
|
|
228
|
+
|
|
229
|
+
if value.length > column_lengths[c+1]
|
|
230
|
+
column_lengths[c+1] = value.length
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
# Write out the first column header depending on the table type
|
|
237
|
+
if table.type == :TWO_DIMENSIONAL
|
|
238
|
+
file.printf("%-#{column_lengths[0]}s ", "Item")
|
|
239
|
+
else
|
|
240
|
+
file.printf("%-#{column_lengths[0]}s ", "Label")
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# Write out all the column header text
|
|
244
|
+
(0...table.num_columns).each do |c|
|
|
245
|
+
if table.type == :TWO_DIMENSIONAL
|
|
246
|
+
columntext = items[c].name[0...-1]
|
|
247
|
+
else
|
|
248
|
+
columntext = "Value"
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
file.printf("%-#{column_lengths[c+1]}s ", columntext)
|
|
252
|
+
end
|
|
253
|
+
file.write("\n")
|
|
254
|
+
|
|
255
|
+
# Write out the table items
|
|
256
|
+
(0...table.num_rows).each do |r|
|
|
257
|
+
if table.type == :TWO_DIMENSIONAL
|
|
258
|
+
rowtext = "#{r+1}"
|
|
259
|
+
else
|
|
260
|
+
rowtext = items[r].name
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
file.printf("%-#{column_lengths[0]}s ", rowtext)
|
|
264
|
+
(0...table.num_columns).each do |c|
|
|
265
|
+
if table.type == :TWO_DIMENSIONAL
|
|
266
|
+
item_def = items[c + r * table.num_columns]
|
|
267
|
+
else
|
|
268
|
+
item_def = items[r]
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
value = item_to_report_string(table, item_def)
|
|
272
|
+
|
|
273
|
+
file.printf("%-#{column_lengths[c+1]}s ", value)
|
|
274
|
+
|
|
275
|
+
end
|
|
276
|
+
file.write("\n") # newline after each row
|
|
277
|
+
end
|
|
278
|
+
file.write("\n") # newline after each table
|
|
279
|
+
end # end @table_def.get_all_tables.each do |table|
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def table_check(table_name)
|
|
284
|
+
raise "Please open a table first." unless @table_def
|
|
285
|
+
|
|
286
|
+
table = @table_def.get_table(table_name)
|
|
287
|
+
raise "Please open a table first." unless table
|
|
288
|
+
|
|
289
|
+
result = ""
|
|
290
|
+
item_defs = table.sorted_items
|
|
291
|
+
|
|
292
|
+
# Check the ranges and constraints for each item in the table
|
|
293
|
+
# We go through it this way (by row and columns) so we can grab the actual
|
|
294
|
+
# user input when we display any errors found
|
|
295
|
+
(0...table.num_rows).each do |r|
|
|
296
|
+
(0...table.num_columns).each do |c|
|
|
297
|
+
# get the table item definition so we know how to save it
|
|
298
|
+
item_def = item_defs[r * table.num_columns + c]
|
|
299
|
+
|
|
300
|
+
# if a constraint was defined call it here
|
|
301
|
+
# this should set the underlying constraints
|
|
302
|
+
if (item_def.constraint != nil)
|
|
303
|
+
item_def.constraint.call(item_def, table, table.buffer)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
x = table.read(item_def.name, :RAW)
|
|
307
|
+
unless item_def.range.nil?
|
|
308
|
+
if item_def.display_type == :STRING
|
|
309
|
+
if x.length > item_def.range.last || x.length < item_def.range.first
|
|
310
|
+
result << " #{item_def.name}: #{x} must be between #{item_def.range.first} and #{item_def.range.last} characters\n"
|
|
311
|
+
end
|
|
312
|
+
else
|
|
313
|
+
# check to see if the value lies within its valid range
|
|
314
|
+
if not item_def.range.include?(x)
|
|
315
|
+
# if the value is displayed as hex, display the range as hex
|
|
316
|
+
if item_def.display_type == :HEX
|
|
317
|
+
range_first = "0x%X" % item_def.range.first
|
|
318
|
+
range_last = "0x%X" % item_def.range.last
|
|
319
|
+
x = "0x%X" % x
|
|
320
|
+
else
|
|
321
|
+
range_first = item_def.range.first
|
|
322
|
+
range_last = item_def.range.last
|
|
323
|
+
x = table.read(item_def.name)
|
|
324
|
+
end
|
|
325
|
+
result << " #{item_def.name}: #{x} outside valid range of #{range_first}..#{range_last}\n"
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
end # end each column
|
|
330
|
+
end # end each row
|
|
331
|
+
return result
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
def table_default(table_name)
|
|
335
|
+
raise "Please open a table first." unless @table_def
|
|
336
|
+
set_binary_data_to_default(table_name)
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
# option to display a dialog containing a hex dump of the current table values
|
|
340
|
+
def table_hex(table_name)
|
|
341
|
+
raise "Please open a table first." unless @table_def
|
|
342
|
+
table = @table_def.get_table(table_name)
|
|
343
|
+
raise "Please open a table first." unless table
|
|
344
|
+
|
|
345
|
+
data = table.buffer
|
|
346
|
+
str, size = create_hex_string(data)
|
|
347
|
+
str << "\n\nTotal Bytes Read: %d" % size
|
|
348
|
+
|
|
349
|
+
return str
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
# option to save the currently displayed table as a stand alone binary file
|
|
353
|
+
def table_save(table_name, filename)
|
|
354
|
+
raise "Please open a table first." unless @table_def
|
|
355
|
+
|
|
356
|
+
result = table_check(table_name)
|
|
357
|
+
unless result.empty?
|
|
358
|
+
raise "Please fix the following errors before saving:\n\n" << result
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
File.open(filename, 'wb') do |datafile|
|
|
362
|
+
table = @table_def.get_table(table_name)
|
|
363
|
+
datafile.write(table.buffer)
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
# option to save the currently displayed table to an existing table binary file
|
|
368
|
+
# containing that table.
|
|
369
|
+
def table_commit(table_name, bin_file, def_file)
|
|
370
|
+
raise "Please open a table first." unless @table_def
|
|
371
|
+
save_table = @table_def.get_table(table_name)
|
|
372
|
+
raise "Please open a table first." unless save_table
|
|
373
|
+
|
|
374
|
+
result = file_check()
|
|
375
|
+
unless result.empty?
|
|
376
|
+
raise "Please fix the following errors before saving:\n\n" << result
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
@current_bin = bin_file
|
|
380
|
+
@current_def = def_file
|
|
381
|
+
|
|
382
|
+
parser = TableConfig.new
|
|
383
|
+
begin
|
|
384
|
+
parser.process(def_file)
|
|
385
|
+
rescue => err
|
|
386
|
+
raise "The table definition file:#{def_file} has the following errors:\n#{err}"
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
if !parser.get_table_names.include?(table_name)
|
|
390
|
+
raise "#{table_name} not found in #{def_file} table definition file."
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
@table_def = parser
|
|
394
|
+
open_and_load_binary_file(bin_file)
|
|
395
|
+
|
|
396
|
+
# Store the saved table data in the new table definition
|
|
397
|
+
table = @table_def.get_table(save_table.name)
|
|
398
|
+
table.buffer = save_table.buffer[0...table.length]
|
|
399
|
+
file_save(bin_file)
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
# Updates the definition file for a table.
|
|
403
|
+
def table_update_def(table_name)
|
|
404
|
+
raise "Please open a table first." unless @table_def
|
|
405
|
+
|
|
406
|
+
# Check to see that the table definition file is writeable
|
|
407
|
+
table = @table_def.get_table(table_name)
|
|
408
|
+
raise "Please open a table first." unless table
|
|
409
|
+
|
|
410
|
+
if !File.writable?(table.filename)
|
|
411
|
+
raise "#{table.filename} is not writeable."
|
|
412
|
+
end
|
|
413
|
+
|
|
414
|
+
# Check for errors in the table before updating the defaults
|
|
415
|
+
result = table_check(table_name)
|
|
416
|
+
unless result.empty?
|
|
417
|
+
raise "Please fix the following errors before updating the definition file:\n\n" << result
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
begin
|
|
421
|
+
@table_def.commit_default_values(table)
|
|
422
|
+
rescue => err
|
|
423
|
+
raise "The table definition file could not be written due to the following error(s):\n#{err}"
|
|
424
|
+
end
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
# Return a GenericTable given a String table name
|
|
428
|
+
def get_table(table_name)
|
|
429
|
+
@table_def.get_table(table_name)
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
# Retrieves a value from a table
|
|
433
|
+
def get_table_item(table_name, item_name)
|
|
434
|
+
@table_def.get_table(table_name).read(item_name)
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
# Updates a value in a table
|
|
438
|
+
def set_table_item(table_name, item_name, value)
|
|
439
|
+
@table_def.get_table(table_name).write(item_name, value)
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
# Override on_save to perform additional actions before the file is
|
|
443
|
+
# saved to disk.
|
|
444
|
+
def on_save
|
|
445
|
+
return
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# Determines the string representation of an item as it should be printed in a RPT file
|
|
449
|
+
def item_to_report_string(table, item_def)
|
|
450
|
+
result = ""
|
|
451
|
+
case item_def.display_type
|
|
452
|
+
when :NONE
|
|
453
|
+
result = "\n#{table.read(item_def.name).formatted}"
|
|
454
|
+
when :STATE, :DEC, :STRING
|
|
455
|
+
result = table.read(item_def.name).to_s
|
|
456
|
+
when :CHECK
|
|
457
|
+
value = table.read(item_def.name)
|
|
458
|
+
if value == item_def.range.end
|
|
459
|
+
result = "X (#{item_def.range.end.to_s})"
|
|
460
|
+
else
|
|
461
|
+
result = "- (#{item_def.range.begin.to_s})"
|
|
462
|
+
end
|
|
463
|
+
when :HEX
|
|
464
|
+
result = @table_def.format_hex(table, item_def)
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
return result
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
# Create a hex string representation of the given binary data string
|
|
471
|
+
def create_hex_string(data)
|
|
472
|
+
index = 0
|
|
473
|
+
str = ""
|
|
474
|
+
while index < data.length
|
|
475
|
+
# after 16 bytes insert a newline in the display
|
|
476
|
+
if index % 16 == 0
|
|
477
|
+
# don't insert a newline the first time
|
|
478
|
+
if index != 0
|
|
479
|
+
str << "\n"
|
|
480
|
+
end
|
|
481
|
+
str << "0x%08X: " % index
|
|
482
|
+
# every 4 bytes insert a space for readability
|
|
483
|
+
elsif index % 4 == 0
|
|
484
|
+
str << " "
|
|
485
|
+
end
|
|
486
|
+
str << "%02X" % data.getbyte(index)
|
|
487
|
+
index += 1
|
|
488
|
+
end
|
|
489
|
+
return str, index
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
# Set all the binary data in the table definition to the default values
|
|
493
|
+
def set_binary_data_to_default(table_name)
|
|
494
|
+
table = @table_def.get_table(table_name)
|
|
495
|
+
|
|
496
|
+
# if we can't find the table do nothing
|
|
497
|
+
return unless table
|
|
498
|
+
|
|
499
|
+
table.sorted_items.each do |item_def|
|
|
500
|
+
if item_def.data_type == :BLOCK
|
|
501
|
+
table.write(item_def.name, item_def.default.hex_to_byte_string)
|
|
502
|
+
else
|
|
503
|
+
table.write(item_def.name, item_def.default)
|
|
504
|
+
end
|
|
505
|
+
end
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
# Opens the given binary file and populates the table definition.
|
|
509
|
+
# The filename parameter should be a properly formatted file path.
|
|
510
|
+
def open_and_load_binary_file(filename)
|
|
511
|
+
begin
|
|
512
|
+
data = nil
|
|
513
|
+
# read the binary file and store it into an array
|
|
514
|
+
File.open(filename, 'rb') do |file|
|
|
515
|
+
data = file.read
|
|
516
|
+
end
|
|
517
|
+
rescue => err
|
|
518
|
+
raise "Unable to open and load #{filename} due to #{err}."
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
binary_data_index = 0
|
|
522
|
+
total_table_length = 0
|
|
523
|
+
@table_def.get_all_tables.each {|table| total_table_length += table.length }
|
|
524
|
+
@table_def.get_all_tables.each do |table|
|
|
525
|
+
if binary_data_index + table.length > data.length
|
|
526
|
+
table.buffer = data[binary_data_index..-1]
|
|
527
|
+
raise "Binary size of #{data.length} not large enough to fully represent table definition of length #{total_table_length}. The remaining table definition (starting with byte #{data.length - binary_data_index} in #{table.name}) will be filled with 0."
|
|
528
|
+
end
|
|
529
|
+
table.buffer = data[binary_data_index...binary_data_index+table.length]
|
|
530
|
+
binary_data_index += table.length
|
|
531
|
+
end
|
|
532
|
+
if binary_data_index < data.length
|
|
533
|
+
raise "Binary size of #{data.length} larger than table definition of length #{total_table_length}. Discarding the remaing #{data.length - binary_data_index} bytes."
|
|
534
|
+
end
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
end # module Cosmos
|