cosmos 4.0.3-java
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitattributes +3 -0
- data/.gitignore +48 -0
- data/.rubocop.yml +23 -0
- data/.travis.yml +10 -0
- data/.yardopts +3 -0
- data/CONTRIBUTING.txt +50 -0
- data/Gemfile +10 -0
- data/Guardfile +27 -0
- data/LICENSE.txt +879 -0
- data/Manifest.txt +1549 -0
- data/README.md +111 -0
- data/Rakefile +264 -0
- data/autohotkey/config/data/attitude.bin +0 -0
- data/autohotkey/config/data/diamond.STL +58 -0
- data/autohotkey/config/data/groundoff.gif +0 -0
- data/autohotkey/config/data/groundon.gif +0 -0
- data/autohotkey/config/data/position.bin +0 -0
- data/autohotkey/config/data/satellite.gif +0 -0
- data/autohotkey/config/data/tada.wav +0 -0
- data/autohotkey/config/system/system.txt +29 -0
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +126 -0
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -0
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -0
- data/autohotkey/config/targets/INST/doc/README.txt +1 -0
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -0
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -0
- data/autohotkey/config/targets/INST/screens/_footer.txt +4 -0
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -0
- data/autohotkey/config/targets/INST/screens/array.txt +7 -0
- data/autohotkey/config/targets/INST/screens/block.txt +8 -0
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -0
- data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -0
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -0
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -0
- data/autohotkey/config/targets/INST/screens/hs.txt +46 -0
- data/autohotkey/config/targets/INST/screens/image.txt +21 -0
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -0
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -0
- data/autohotkey/config/targets/INST/screens/other.txt +25 -0
- data/autohotkey/config/targets/INST/screens/params.txt +25 -0
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -0
- data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
- data/autohotkey/config/targets/INST/target.txt +27 -0
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -0
- data/autohotkey/config/targets/META/screens/data.txt +12 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -0
- data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
- data/autohotkey/config/tools/cmd_sender/cmd_sender.txt +1 -0
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -0
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -0
- data/autohotkey/config/tools/handbook_creator/default_toc.xsl +59 -0
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -0
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -0
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -0
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -0
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -0
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -0
- data/autohotkey/config/tools/launcher/launcher.txt +38 -0
- data/autohotkey/config/tools/limits_monitor/README.txt +1 -0
- data/autohotkey/config/tools/opengl_builder/error.txt +1 -0
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -0
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -0
- data/autohotkey/config/tools/table_manager/OldOneDimensionalTable_def.txt +19 -0
- data/autohotkey/config/tools/table_manager/OldTwoDimensionalTable_def.txt +248 -0
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +31 -0
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +28 -0
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -0
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -0
- data/autohotkey/config/tools/test_runner/test_runner3.txt +7 -0
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -0
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +14 -0
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -0
- data/autohotkey/config/tools/tlm_grapher/README.txt +1 -0
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -0
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -0
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -0
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -0
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -0
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -0
- data/autohotkey/lib/example_background_task.rb +42 -0
- data/autohotkey/lib/user_version.rb +3 -0
- data/autohotkey/procedures/clear_util.rb +7 -0
- data/autohotkey/procedures/collect.rb +18 -0
- data/autohotkey/procedures/collect_util.rb +14 -0
- data/autohotkey/procedures/example_test.rb +71 -0
- data/autohotkey/procedures/example_test2.rb +74 -0
- data/autohotkey/procedures/script_test.rb +21 -0
- data/autohotkey/procedures/syntax_error.rb +18 -0
- data/autohotkey/tools/CmdExtractorAHK +16 -0
- data/autohotkey/tools/CmdSender +14 -0
- data/autohotkey/tools/CmdSenderAHK +18 -0
- data/autohotkey/tools/CmdSequence +14 -0
- data/autohotkey/tools/CmdSequenceAHK +23 -0
- data/autohotkey/tools/CmdSequenceAHK2 +16 -0
- data/autohotkey/tools/CmdTlmServer +14 -0
- data/autohotkey/tools/CmdTlmServerAHK +28 -0
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -0
- data/autohotkey/tools/ConfigEditor +16 -0
- data/autohotkey/tools/DataViewer +14 -0
- data/autohotkey/tools/DataViewerAHK +17 -0
- data/autohotkey/tools/HandbookCreatorAHK +20 -0
- data/autohotkey/tools/LauncherAHK +17 -0
- data/autohotkey/tools/LimitsMonitorAHK +20 -0
- data/autohotkey/tools/OpenGLBuilderAHK +24 -0
- data/autohotkey/tools/PacketViewer +14 -0
- data/autohotkey/tools/PacketViewerAHK +18 -0
- data/autohotkey/tools/PacketViewerAHK2 +17 -0
- data/autohotkey/tools/Replay +14 -0
- data/autohotkey/tools/ReplayAHK +17 -0
- data/autohotkey/tools/ScriptRunner +14 -0
- data/autohotkey/tools/ScriptRunnerAHK +20 -0
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -0
- data/autohotkey/tools/TableManager +14 -0
- data/autohotkey/tools/TableManagerAHK +25 -0
- data/autohotkey/tools/TableManagerAHK2 +18 -0
- data/autohotkey/tools/TableManagerAHK3 +18 -0
- data/autohotkey/tools/TableManagerAHK4 +24 -0
- data/autohotkey/tools/TestRunner +15 -0
- data/autohotkey/tools/TestRunnerAHK +17 -0
- data/autohotkey/tools/TestRunnerAHK2 +17 -0
- data/autohotkey/tools/TestRunnerAHK3 +17 -0
- data/autohotkey/tools/TestRunnerAHK4 +17 -0
- data/autohotkey/tools/TestRunnerAHK5 +17 -0
- data/autohotkey/tools/TestRunnerAHK6 +17 -0
- data/autohotkey/tools/TlmExtractor +15 -0
- data/autohotkey/tools/TlmExtractorAHK +19 -0
- data/autohotkey/tools/TlmExtractorAHK2 +16 -0
- data/autohotkey/tools/TlmExtractorAHK3 +16 -0
- data/autohotkey/tools/TlmGrapher +14 -0
- data/autohotkey/tools/TlmGrapherAHK +19 -0
- data/autohotkey/tools/TlmGrapherAHK2 +23 -0
- data/autohotkey/tools/TlmGrapherAHK3 +17 -0
- data/autohotkey/tools/TlmGrapherAHK4 +17 -0
- data/autohotkey/tools/TlmViewer +14 -0
- data/autohotkey/tools/TlmViewerAHK +28 -0
- data/autohotkey/tools/TlmViewerAHK2 +22 -0
- data/autohotkey/tools/TlmViewerAHK3 +23 -0
- data/autohotkey/tools/TlmViewerAHK4 +22 -0
- data/autohotkey/tools/TlmViewerAHK5 +18 -0
- data/autohotkey/tools/autohotkey.rb +38 -0
- data/autohotkey/tools/cmd_extractor.ahk +50 -0
- data/autohotkey/tools/cmd_sender.ahk +180 -0
- data/autohotkey/tools/cmd_sequence.ahk +215 -0
- data/autohotkey/tools/cmd_sequence2.ahk +23 -0
- data/autohotkey/tools/cmd_tlm_server.ahk +90 -0
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -0
- data/autohotkey/tools/data_viewer.ahk +140 -0
- data/autohotkey/tools/handbook_creator.ahk +32 -0
- data/autohotkey/tools/launcher.ahk +41 -0
- data/autohotkey/tools/limits_monitor.ahk +121 -0
- data/autohotkey/tools/open_gl_builder.ahk +133 -0
- data/autohotkey/tools/packet_viewer.ahk +217 -0
- data/autohotkey/tools/packet_viewer2.ahk +9 -0
- data/autohotkey/tools/replay.ahk +103 -0
- data/autohotkey/tools/script_runner.ahk +588 -0
- data/autohotkey/tools/script_runner2.ahk +50 -0
- data/autohotkey/tools/table_manager.ahk +291 -0
- data/autohotkey/tools/test_runner.ahk +262 -0
- data/autohotkey/tools/test_runner2.ahk +49 -0
- data/autohotkey/tools/test_runner3.ahk +11 -0
- data/autohotkey/tools/test_runner5.ahk +8 -0
- data/autohotkey/tools/test_runner6.ahk +5 -0
- data/autohotkey/tools/tlm_extractor.ahk +357 -0
- data/autohotkey/tools/tlm_grapher.ahk +658 -0
- data/autohotkey/tools/tlm_grapher2.ahk +115 -0
- data/autohotkey/tools/tlm_grapher3.ahk +23 -0
- data/autohotkey/tools/tlm_viewer.ahk +140 -0
- data/autohotkey/tools/tlm_viewer2.ahk +49 -0
- data/autohotkey/tools/tlm_viewer4.ahk +4 -0
- data/autohotkey/tools/tlm_viewer5.ahk +19 -0
- data/autohotkey/tools/tool_launch.rb +38 -0
- data/bin/cosmos +266 -0
- data/bin/cstol_converter +1166 -0
- data/bin/exchndl20-x64.dll +0 -0
- data/bin/exchndl20.dll +0 -0
- data/bin/exchndl21-x64.dll +0 -0
- data/bin/exchndl21.dll +0 -0
- data/bin/exchndl22-x64.dll +0 -0
- data/bin/exchndl22.dll +0 -0
- data/bin/mgwhelp-x64.dll +0 -0
- data/bin/mgwhelp.dll +0 -0
- data/bin/rubysloc +85 -0
- data/bin/xtce_converter +83 -0
- data/cosmos.gemspec +109 -0
- data/data/COSMOS_64x64.bmp +0 -0
- data/data/COSMOS_64x64.ico +0 -0
- data/data/COSMOS_64x64.png +0 -0
- data/data/COSMOS_Architecture.png +0 -0
- data/data/CheckBoxCheck.gif +0 -0
- data/data/CheckBoxEmpty.gif +0 -0
- data/data/Earthmap1024x512.gif +0 -0
- data/data/about.txt +4 -0
- data/data/add_database.png +0 -0
- data/data/add_plot.png +0 -0
- data/data/add_tab.png +0 -0
- data/data/blank.png +0 -0
- data/data/bug.png +0 -0
- data/data/checkmark.png +0 -0
- data/data/close.png +0 -0
- data/data/cmd_extractor.png +0 -0
- data/data/cmd_sender.png +0 -0
- data/data/cmd_sequence.png +0 -0
- data/data/config/_array_params.yaml +23 -0
- data/data/config/_id_items.yaml +24 -0
- data/data/config/_id_params.yaml +58 -0
- data/data/config/_interfaces.yaml +206 -0
- data/data/config/_items.yaml +20 -0
- data/data/config/_params.yaml +58 -0
- data/data/config/cmd_tlm_server.yaml +124 -0
- data/data/config/command.yaml +40 -0
- data/data/config/command_modifiers.yaml +145 -0
- data/data/config/command_telemetry.yaml +3 -0
- data/data/config/data_viewer.yaml +43 -0
- data/data/config/handbook_creator.yaml +23 -0
- data/data/config/housekeeping_params.yaml +71 -0
- data/data/config/interface_modifiers.yaml +44 -0
- data/data/config/item_modifiers.yaml +211 -0
- data/data/config/launcher.yaml +117 -0
- data/data/config/limits_monitor.yaml +53 -0
- data/data/config/linegraph_params.yaml +30 -0
- data/data/config/linegraph_plot.yaml +106 -0
- data/data/config/page_modifiers.yaml +128 -0
- data/data/config/param_item_modifiers.yaml +46 -0
- data/data/config/parameter_modifiers.yaml +180 -0
- data/data/config/protocols.yaml +273 -0
- data/data/config/screen.yaml +151 -0
- data/data/config/script_runner.yaml +15 -0
- data/data/config/system.yaml +247 -0
- data/data/config/table_manager.yaml +76 -0
- data/data/config/table_parameter_modifiers.yaml +9 -0
- data/data/config/target.yaml +80 -0
- data/data/config/telemetry.yaml +80 -0
- data/data/config/telemetry_modifiers.yaml +142 -0
- data/data/config/test_runner.yaml +118 -0
- data/data/config/tlm_extractor.yaml +109 -0
- data/data/config/tlm_grapher.yaml +78 -0
- data/data/config/tlm_viewer.yaml +112 -0
- data/data/config/unknown.yaml +3 -0
- data/data/config/widgets.yaml +1339 -0
- data/data/config/xy_params.yaml +50 -0
- data/data/config/xy_plot.yaml +12 -0
- data/data/config_editor.png +0 -0
- data/data/copy.png +0 -0
- data/data/cosmos.xcf +0 -0
- data/data/cosmos_word.gif +0 -0
- data/data/crc.txt +351 -0
- data/data/critical.wav +0 -0
- data/data/cts.png +0 -0
- data/data/cut.png +0 -0
- data/data/data_viewer.png +0 -0
- data/data/delete.png +0 -0
- data/data/delete_database.png +0 -0
- data/data/delete_plot.png +0 -0
- data/data/delete_tab.png +0 -0
- data/data/diamond.STL +58 -0
- data/data/disconnected.png +0 -0
- data/data/edit.png +0 -0
- data/data/edit_database.png +0 -0
- data/data/edit_plot.png +0 -0
- data/data/edit_tab.png +0 -0
- data/data/end-26.png +0 -0
- data/data/fast_forward-26.png +0 -0
- data/data/file.png +0 -0
- data/data/handbook_creator.png +0 -0
- data/data/help.png +0 -0
- data/data/html-32.png +0 -0
- data/data/information.wav +0 -0
- data/data/input.wav +0 -0
- data/data/launcher.png +0 -0
- data/data/legal.gif +0 -0
- data/data/legal.txt +8 -0
- data/data/limits_monitor.png +0 -0
- data/data/message.wav +0 -0
- data/data/moonmap1k.gif +0 -0
- data/data/multi.png +0 -0
- data/data/open.png +0 -0
- data/data/open_in_browser-32.png +0 -0
- data/data/opengl_builder.png +0 -0
- data/data/packet_viewer.png +0 -0
- data/data/pdf-32.png +0 -0
- data/data/play-26.png +0 -0
- data/data/question.wav +0 -0
- data/data/redo.png +0 -0
- data/data/replay.png +0 -0
- data/data/reverse-play-26.png +0 -0
- data/data/rewind-26.png +0 -0
- data/data/running.png +0 -0
- data/data/save.png +0 -0
- data/data/save_as.png +0 -0
- data/data/screenshot.png +0 -0
- data/data/script_runner.png +0 -0
- data/data/search-14.png +0 -0
- data/data/search.png +0 -0
- data/data/send_file.png +0 -0
- data/data/skip_to_start-26.png +0 -0
- data/data/spinner.gif +0 -0
- data/data/splash.gif +0 -0
- data/data/stop-26.png +0 -0
- data/data/table_manager.png +0 -0
- data/data/test_runner.png +0 -0
- data/data/tlm_extractor.png +0 -0
- data/data/tlm_grapher.png +0 -0
- data/data/tlm_viewer.png +0 -0
- data/data/undo.png +0 -0
- data/data/warning.wav +0 -0
- data/demo/Gemfile +10 -0
- data/demo/Launcher +16 -0
- data/demo/Launcher.bat +9 -0
- data/demo/Rakefile +77 -0
- data/demo/config/data/attitude.bin +0 -0
- data/demo/config/data/crc.txt +258 -0
- data/demo/config/data/diamond.STL +58 -0
- data/demo/config/data/groundoff.gif +0 -0
- data/demo/config/data/groundon.gif +0 -0
- data/demo/config/data/hselectoff.gif +0 -0
- data/demo/config/data/hselecton.gif +0 -0
- data/demo/config/data/hswitchoff.gif +0 -0
- data/demo/config/data/hswitchon.gif +0 -0
- data/demo/config/data/meta_init.txt +1 -0
- data/demo/config/data/position.bin +0 -0
- data/demo/config/data/poweroff.gif +0 -0
- data/demo/config/data/poweron.gif +0 -0
- data/demo/config/data/satellite.gif +0 -0
- data/demo/config/data/tada.wav +0 -0
- data/demo/config/data/vswitchoff.gif +0 -0
- data/demo/config/data/vswitchon.gif +0 -0
- data/demo/config/system/system.txt +47 -0
- data/demo/config/system/system2.txt +43 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -0
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +18 -0
- data/demo/config/targets/EXAMPLE/target.txt +9 -0
- data/demo/config/targets/INST/cmd_tlm/_ccsds_cmd.txt +9 -0
- data/demo/config/targets/INST/cmd_tlm/_ccsds_tlm.txt +19 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +57 -0
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +164 -0
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -0
- data/demo/config/targets/INST/doc/README.txt +1 -0
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -0
- data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
- data/demo/config/targets/INST/lib/sim_inst.rb +321 -0
- data/demo/config/targets/INST/procedures/checks.rb +11 -0
- data/demo/config/targets/INST/procedures/collect.rb +18 -0
- data/demo/config/targets/INST/procedures/disconnect.rb +29 -0
- data/demo/config/targets/INST/procedures/utilities/clear.rb +7 -0
- data/demo/config/targets/INST/procedures/utilities/collect.rb +14 -0
- data/demo/config/targets/INST/screens/_footer.txt +4 -0
- data/demo/config/targets/INST/screens/adcs.txt +70 -0
- data/demo/config/targets/INST/screens/array.txt +15 -0
- data/demo/config/targets/INST/screens/block.txt +8 -0
- data/demo/config/targets/INST/screens/commanding.txt +37 -0
- data/demo/config/targets/INST/screens/graphs.txt +14 -0
- data/demo/config/targets/INST/screens/ground.txt +25 -0
- data/demo/config/targets/INST/screens/hs.txt +42 -0
- data/demo/config/targets/INST/screens/latest.txt +23 -0
- data/demo/config/targets/INST/screens/limits.txt +43 -0
- data/demo/config/targets/INST/screens/other.txt +24 -0
- data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
- data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
- data/demo/config/targets/INST/screens/tabs.txt +68 -0
- data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
- data/demo/config/targets/INST/tables/EventAction.csv +9 -0
- data/demo/config/targets/INST/tables/EventAction.dat +0 -0
- data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
- data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
- data/demo/config/targets/INST/target.txt +37 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
- data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
- data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +6 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/demo/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
- data/demo/config/targets/SYSTEM/lib/limits_groups.rb +55 -0
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -0
- data/demo/config/targets/SYSTEM/target.txt +12 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -0
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +59 -0
- data/demo/config/targets/TEMPLATED/target.txt +8 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +49 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +42 -0
- data/demo/config/tools/data_viewer/data_viewer.txt +20 -0
- data/demo/config/tools/example_application.css +58 -0
- data/demo/config/tools/handbook_creator/default_toc.xsl +59 -0
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -0
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -0
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -0
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -0
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -0
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -0
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -0
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -0
- data/demo/config/tools/launcher/launcher.css +7 -0
- data/demo/config/tools/launcher/launcher.txt +48 -0
- data/demo/config/tools/launcher/launcher2.css +10 -0
- data/demo/config/tools/launcher/launcher2.txt +48 -0
- data/demo/config/tools/launcher/launcher_mini.txt +45 -0
- data/demo/config/tools/limits_monitor/README.txt +1 -0
- data/demo/config/tools/opengl_builder/README.txt +1 -0
- data/demo/config/tools/script_runner/script_runner.txt +3 -0
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -0
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +37 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +34 -0
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +9 -0
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +31 -0
- data/demo/config/tools/test_runner/test_runner.css +45 -0
- data/demo/config/tools/test_runner/test_runner.txt +17 -0
- data/demo/config/tools/tlm_extractor/_adcs_time.txt +2 -0
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
- data/demo/config/tools/tlm_grapher/README.txt +1 -0
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
- data/demo/lib/example_background_task.rb +55 -0
- data/demo/lib/example_target.rb +103 -0
- data/demo/lib/scpi_target.rb +68 -0
- data/demo/lib/user_version.rb +3 -0
- data/demo/procedures/cosmos_api_test.rb +310 -0
- data/demo/procedures/example_test.rb +192 -0
- data/demo/procedures/plot_test.rb +8 -0
- data/demo/procedures/run_example_test.rb +3 -0
- data/demo/procedures/test.rb +51 -0
- data/demo/tools/CmdExtractor +16 -0
- data/demo/tools/CmdExtractor.bat +9 -0
- data/demo/tools/CmdSender +16 -0
- data/demo/tools/CmdSender.bat +9 -0
- data/demo/tools/CmdSequence +16 -0
- data/demo/tools/CmdSequence.bat +9 -0
- data/demo/tools/CmdTlmServer +16 -0
- data/demo/tools/CmdTlmServer.bat +9 -0
- data/demo/tools/ConfigEditor +16 -0
- data/demo/tools/ConfigEditor.bat +9 -0
- data/demo/tools/DataViewer +16 -0
- data/demo/tools/DataViewer.bat +9 -0
- data/demo/tools/ExampleTarget +16 -0
- data/demo/tools/ExampleTarget.bat +9 -0
- data/demo/tools/HandbookCreator +16 -0
- data/demo/tools/HandbookCreator.bat +9 -0
- data/demo/tools/Launcher +16 -0
- data/demo/tools/Launcher.bat +9 -0
- data/demo/tools/LimitsMonitor +16 -0
- data/demo/tools/LimitsMonitor.bat +9 -0
- data/demo/tools/OpenGLBuilder +16 -0
- data/demo/tools/OpenGLBuilder.bat +9 -0
- data/demo/tools/PacketViewer +16 -0
- data/demo/tools/PacketViewer.bat +9 -0
- data/demo/tools/Replay +16 -0
- data/demo/tools/Replay.bat +9 -0
- data/demo/tools/ScpiTarget +16 -0
- data/demo/tools/ScpiTarget.bat +9 -0
- data/demo/tools/ScriptRunner +16 -0
- data/demo/tools/ScriptRunner.bat +9 -0
- data/demo/tools/TableManager +16 -0
- data/demo/tools/TableManager.bat +9 -0
- data/demo/tools/TestRunner +16 -0
- data/demo/tools/TestRunner.bat +9 -0
- data/demo/tools/TlmExtractor +16 -0
- data/demo/tools/TlmExtractor.bat +9 -0
- data/demo/tools/TlmGrapher +16 -0
- data/demo/tools/TlmGrapher.bat +9 -0
- data/demo/tools/TlmViewer +16 -0
- data/demo/tools/TlmViewer.bat +9 -0
- data/demo/tools/ToolLaunch.bat +72 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/demo/tools/tool_launch.rb +38 -0
- data/ext/cosmos/ext/array/array.c +111 -0
- data/ext/cosmos/ext/array/extconf.rb +13 -0
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -0
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -0
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -0
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -0
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -0
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -0
- data/ext/cosmos/ext/crc/crc.c +341 -0
- data/ext/cosmos/ext/crc/extconf.rb +13 -0
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -0
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -0
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +13 -0
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -0
- data/ext/cosmos/ext/packet/extconf.rb +13 -0
- data/ext/cosmos/ext/packet/packet.c +350 -0
- data/ext/cosmos/ext/platform/extconf.rb +13 -0
- data/ext/cosmos/ext/platform/platform.c +101 -0
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -0
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -0
- data/ext/cosmos/ext/string/extconf.rb +13 -0
- data/ext/cosmos/ext/string/string.c +49 -0
- data/ext/cosmos/ext/structure/structure.c +1433 -0
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -0
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -0
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -0
- data/ext/cosmos/ext/telemetry/telemetry.c +307 -0
- data/ext/mkrf_conf.rb +40 -0
- data/install/Gemfile +10 -0
- data/install/Launcher +16 -0
- data/install/Launcher.bat +9 -0
- data/install/Rakefile +77 -0
- data/install/config/data/README.txt +1 -0
- data/install/config/data/crc.txt +160 -0
- data/install/config/system/system.txt +39 -0
- data/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +9 -0
- data/install/config/targets/SYSTEM/target.txt +12 -0
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -0
- data/install/config/tools/data_viewer/data_viewer.txt +4 -0
- data/install/config/tools/handbook_creator/default_toc.xsl +59 -0
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -0
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -0
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -0
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -0
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -0
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -0
- data/install/config/tools/launcher/launcher.txt +40 -0
- data/install/config/tools/limits_monitor/README.txt +1 -0
- data/install/config/tools/opengl_builder/README.txt +1 -0
- data/install/config/tools/script_runner/script_runner.txt +3 -0
- data/install/config/tools/table_manager/README.txt +1 -0
- data/install/config/tools/test_runner/test_runner.txt +8 -0
- data/install/config/tools/tlm_extractor/README.txt +1 -0
- data/install/config/tools/tlm_grapher/README.txt +1 -0
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -0
- data/install/lib/user_version.rb +3 -0
- data/install/procedures/README.txt +1 -0
- data/install/tools/CmdExtractor +16 -0
- data/install/tools/CmdExtractor.bat +9 -0
- data/install/tools/CmdSender +16 -0
- data/install/tools/CmdSender.bat +9 -0
- data/install/tools/CmdSequence +16 -0
- data/install/tools/CmdSequence.bat +9 -0
- data/install/tools/CmdTlmServer +16 -0
- data/install/tools/CmdTlmServer.bat +9 -0
- data/install/tools/ConfigEditor +16 -0
- data/install/tools/ConfigEditor.bat +9 -0
- data/install/tools/DataViewer +16 -0
- data/install/tools/DataViewer.bat +9 -0
- data/install/tools/HandbookCreator +16 -0
- data/install/tools/HandbookCreator.bat +9 -0
- data/install/tools/Launcher +16 -0
- data/install/tools/Launcher.bat +9 -0
- data/install/tools/LimitsMonitor +16 -0
- data/install/tools/LimitsMonitor.bat +9 -0
- data/install/tools/OpenGLBuilder +16 -0
- data/install/tools/OpenGLBuilder.bat +9 -0
- data/install/tools/PacketViewer +16 -0
- data/install/tools/PacketViewer.bat +9 -0
- data/install/tools/Replay +16 -0
- data/install/tools/Replay.bat +9 -0
- data/install/tools/ScriptRunner +16 -0
- data/install/tools/ScriptRunner.bat +9 -0
- data/install/tools/TableManager +16 -0
- data/install/tools/TableManager.bat +9 -0
- data/install/tools/TestRunner +16 -0
- data/install/tools/TestRunner.bat +9 -0
- data/install/tools/TlmExtractor +16 -0
- data/install/tools/TlmExtractor.bat +9 -0
- data/install/tools/TlmGrapher +16 -0
- data/install/tools/TlmGrapher.bat +9 -0
- data/install/tools/TlmViewer +16 -0
- data/install/tools/TlmViewer.bat +9 -0
- data/install/tools/ToolLaunch.bat +72 -0
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -0
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -0
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -0
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/install/tools/tool_launch.rb +38 -0
- data/lib/cosmos.rb +63 -0
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -0
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -0
- data/lib/cosmos/config/config_parser.rb +508 -0
- data/lib/cosmos/config/meta_config_parser.rb +57 -0
- data/lib/cosmos/conversions.rb +13 -0
- data/lib/cosmos/conversions/conversion.rb +52 -0
- data/lib/cosmos/conversions/generic_conversion.rb +67 -0
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +52 -0
- data/lib/cosmos/conversions/polynomial_conversion.rb +79 -0
- data/lib/cosmos/conversions/processor_conversion.rb +56 -0
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -0
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -0
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -0
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +139 -0
- data/lib/cosmos/conversions/unix_time_conversion.rb +57 -0
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -0
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -0
- data/lib/cosmos/core_ext.rb +18 -0
- data/lib/cosmos/core_ext/array.rb +397 -0
- data/lib/cosmos/core_ext/class.rb +53 -0
- data/lib/cosmos/core_ext/cosmos_io.rb +45 -0
- data/lib/cosmos/core_ext/exception.rb +52 -0
- data/lib/cosmos/core_ext/file.rb +76 -0
- data/lib/cosmos/core_ext/hash.rb +28 -0
- data/lib/cosmos/core_ext/io.rb +93 -0
- data/lib/cosmos/core_ext/kernel.rb +33 -0
- data/lib/cosmos/core_ext/math.rb +119 -0
- data/lib/cosmos/core_ext/matrix.rb +149 -0
- data/lib/cosmos/core_ext/objectspace.rb +27 -0
- data/lib/cosmos/core_ext/range.rb +18 -0
- data/lib/cosmos/core_ext/socket.rb +32 -0
- data/lib/cosmos/core_ext/string.rb +351 -0
- data/lib/cosmos/core_ext/stringio.rb +24 -0
- data/lib/cosmos/core_ext/time.rb +481 -0
- data/lib/cosmos/ext/.keep +0 -0
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +141 -0
- data/lib/cosmos/gui/choosers/file_chooser.rb +85 -0
- data/lib/cosmos/gui/choosers/float_chooser.rb +67 -0
- data/lib/cosmos/gui/choosers/integer_chooser.rb +69 -0
- data/lib/cosmos/gui/choosers/string_chooser.rb +35 -0
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -0
- data/lib/cosmos/gui/choosers/value_chooser.rb +67 -0
- data/lib/cosmos/gui/dialogs/about_dialog.rb +166 -0
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +140 -0
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +51 -0
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +163 -0
- data/lib/cosmos/gui/dialogs/details_dialog.rb +190 -0
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +106 -0
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +60 -0
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +272 -0
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +183 -0
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +97 -0
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +313 -0
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +169 -0
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +51 -0
- data/lib/cosmos/gui/dialogs/select_dialog.rb +59 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +159 -0
- data/lib/cosmos/gui/dialogs/splash.rb +145 -0
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +201 -0
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +79 -0
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +108 -0
- data/lib/cosmos/gui/line_graph/line_graph.rb +482 -0
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +36 -0
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +521 -0
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +112 -0
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +452 -0
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +81 -0
- data/lib/cosmos/gui/line_graph/lines.rb +304 -0
- data/lib/cosmos/gui/line_graph/overview_graph.rb +474 -0
- data/lib/cosmos/gui/opengl/earth_model.rb +25 -0
- data/lib/cosmos/gui/opengl/gl_bounds.rb +55 -0
- data/lib/cosmos/gui/opengl/gl_light.rb +38 -0
- data/lib/cosmos/gui/opengl/gl_material.rb +28 -0
- data/lib/cosmos/gui/opengl/gl_scene.rb +78 -0
- data/lib/cosmos/gui/opengl/gl_shape.rb +150 -0
- data/lib/cosmos/gui/opengl/gl_viewer.rb +712 -0
- data/lib/cosmos/gui/opengl/gl_viewport.rb +34 -0
- data/lib/cosmos/gui/opengl/moon_model.rb +25 -0
- data/lib/cosmos/gui/opengl/opengl.rb +8 -0
- data/lib/cosmos/gui/opengl/stl_reader.rb +210 -0
- data/lib/cosmos/gui/opengl/stl_shape.rb +127 -0
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -0
- data/lib/cosmos/gui/qt.rb +841 -0
- data/lib/cosmos/gui/qt_tool.rb +489 -0
- data/lib/cosmos/gui/text/completion.rb +402 -0
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -0
- data/lib/cosmos/gui/text/completion_text_edit.rb +194 -0
- data/lib/cosmos/gui/text/ruby_editor.rb +463 -0
- data/lib/cosmos/gui/utilities/analyze_log.rb +153 -0
- data/lib/cosmos/gui/utilities/screenshot.rb +33 -0
- data/lib/cosmos/gui/utilities/script_module_gui.rb +364 -0
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +171 -0
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +344 -0
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -0
- data/lib/cosmos/interfaces.rb +21 -0
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +134 -0
- data/lib/cosmos/interfaces/interface.rb +449 -0
- data/lib/cosmos/interfaces/linc_interface.rb +459 -0
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +114 -0
- data/lib/cosmos/interfaces/protocols/length_protocol.rb +147 -0
- data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +240 -0
- data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
- data/lib/cosmos/interfaces/serial_interface.rb +81 -0
- data/lib/cosmos/interfaces/simulated_target_interface.rb +140 -0
- data/lib/cosmos/interfaces/stream_interface.rb +64 -0
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -0
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +625 -0
- data/lib/cosmos/interfaces/udp_interface.rb +141 -0
- data/lib/cosmos/io/buffered_file.rb +101 -0
- data/lib/cosmos/io/cosmos_snmp.rb +50 -0
- data/lib/cosmos/io/io_multiplexer.rb +71 -0
- data/lib/cosmos/io/json_drb.rb +386 -0
- data/lib/cosmos/io/json_drb_object.rb +201 -0
- data/lib/cosmos/io/json_rpc.rb +365 -0
- data/lib/cosmos/io/posix_serial_driver.rb +147 -0
- data/lib/cosmos/io/raw_logger.rb +170 -0
- data/lib/cosmos/io/raw_logger_pair.rb +71 -0
- data/lib/cosmos/io/serial_driver.rb +94 -0
- data/lib/cosmos/io/stderr.rb +36 -0
- data/lib/cosmos/io/stdout.rb +36 -0
- data/lib/cosmos/io/udp_sockets.rb +152 -0
- data/lib/cosmos/io/win32_serial_driver.rb +165 -0
- data/lib/cosmos/packet_logs.rb +6 -0
- data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -0
- data/lib/cosmos/packet_logs/packet_log_reader.rb +461 -0
- data/lib/cosmos/packet_logs/packet_log_writer.rb +341 -0
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -0
- data/lib/cosmos/packets/binary_accessor.rb +1201 -0
- data/lib/cosmos/packets/commands.rb +318 -0
- data/lib/cosmos/packets/limits.rb +264 -0
- data/lib/cosmos/packets/limits_response.rb +42 -0
- data/lib/cosmos/packets/packet.rb +994 -0
- data/lib/cosmos/packets/packet_config.rb +1393 -0
- data/lib/cosmos/packets/packet_item.rb +585 -0
- data/lib/cosmos/packets/packet_item_limits.rb +140 -0
- data/lib/cosmos/packets/parsers/format_string_parser.rb +59 -0
- data/lib/cosmos/packets/parsers/limits_parser.rb +147 -0
- data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -0
- data/lib/cosmos/packets/parsers/macro_parser.rb +118 -0
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +234 -0
- data/lib/cosmos/packets/parsers/packet_parser.rb +131 -0
- data/lib/cosmos/packets/parsers/processor_parser.rb +63 -0
- data/lib/cosmos/packets/parsers/state_parser.rb +119 -0
- data/lib/cosmos/packets/structure.rb +508 -0
- data/lib/cosmos/packets/structure_item.rb +292 -0
- data/lib/cosmos/packets/telemetry.rb +444 -0
- data/lib/cosmos/processors.rb +6 -0
- data/lib/cosmos/processors/new_packet_log_processor.rb +39 -0
- data/lib/cosmos/processors/processor.rb +76 -0
- data/lib/cosmos/processors/statistics_processor.rb +70 -0
- data/lib/cosmos/processors/watermark_processor.rb +49 -0
- data/lib/cosmos/script.rb +9 -0
- data/lib/cosmos/script/api_shared.rb +972 -0
- data/lib/cosmos/script/cmd_tlm_server.rb +138 -0
- data/lib/cosmos/script/commands.rb +189 -0
- data/lib/cosmos/script/extract.rb +139 -0
- data/lib/cosmos/script/limits.rb +116 -0
- data/lib/cosmos/script/script.rb +76 -0
- data/lib/cosmos/script/scripting.rb +144 -0
- data/lib/cosmos/script/telemetry.rb +216 -0
- data/lib/cosmos/script/tools.rb +97 -0
- data/lib/cosmos/streams/serial_stream.rb +150 -0
- data/lib/cosmos/streams/stream.rb +54 -0
- data/lib/cosmos/streams/tcpip_client_stream.rb +113 -0
- data/lib/cosmos/streams/tcpip_socket_stream.rb +186 -0
- data/lib/cosmos/system.rb +4 -0
- data/lib/cosmos/system/system.rb +778 -0
- data/lib/cosmos/system/target.rb +228 -0
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +268 -0
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +78 -0
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +773 -0
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -0
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +1337 -0
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +54 -0
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +77 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +537 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +274 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +480 -0
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +121 -0
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -0
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +213 -0
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -0
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +151 -0
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +255 -0
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +85 -0
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +274 -0
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +153 -0
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +122 -0
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +161 -0
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +134 -0
- data/lib/cosmos/tools/config_editor/config_editor.rb +728 -0
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +690 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +633 -0
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +120 -0
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -0
- data/lib/cosmos/tools/launcher/launcher.rb +194 -0
- data/lib/cosmos/tools/launcher/launcher_config.rb +256 -0
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -0
- data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +972 -0
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -0
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -0
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +608 -0
- data/lib/cosmos/tools/replay/replay.rb +517 -0
- data/lib/cosmos/tools/replay/replay_server.rb +91 -0
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -0
- data/lib/cosmos/tools/script_runner/script_runner.rb +979 -0
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -0
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1838 -0
- data/lib/cosmos/tools/table_manager/table.rb +61 -0
- data/lib/cosmos/tools/table_manager/table_config.rb +189 -0
- data/lib/cosmos/tools/table_manager/table_item.rb +58 -0
- data/lib/cosmos/tools/table_manager/table_item_parser.rb +46 -0
- data/lib/cosmos/tools/table_manager/table_manager.rb +1152 -0
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +321 -0
- data/lib/cosmos/tools/table_manager/table_parser.rb +75 -0
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -0
- data/lib/cosmos/tools/test_runner/test.rb +539 -0
- data/lib/cosmos/tools/test_runner/test_runner.rb +1271 -0
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -0
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -0
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1152 -0
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +441 -0
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +92 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +222 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +174 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +422 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +325 -0
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +191 -0
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -0
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -0
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -0
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +173 -0
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -0
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -0
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +209 -0
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -0
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -0
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +451 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +78 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -0
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +103 -0
- data/lib/cosmos/tools/tlm_viewer/screen.rb +502 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +571 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +293 -0
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +61 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +66 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +33 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +70 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +77 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +43 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +59 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +44 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +54 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +53 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +63 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +123 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +31 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +57 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +39 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +113 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +116 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +102 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +116 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +63 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +58 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +65 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +65 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +91 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +37 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +36 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +38 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -0
- data/lib/cosmos/top_level.rb +790 -0
- data/lib/cosmos/utilities.rb +11 -0
- data/lib/cosmos/utilities/crc.rb +268 -0
- data/lib/cosmos/utilities/csv.rb +137 -0
- data/lib/cosmos/utilities/logger.rb +137 -0
- data/lib/cosmos/utilities/low_fragmentation_array.rb +19 -0
- data/lib/cosmos/utilities/message_log.rb +79 -0
- data/lib/cosmos/utilities/quaternion.rb +258 -0
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -0
- data/lib/cosmos/utilities/simulated_target.rb +100 -0
- data/lib/cosmos/utilities/sleeper.rb +44 -0
- data/lib/cosmos/version.rb +12 -0
- data/lib/cosmos/win32/excel.rb +66 -0
- data/lib/cosmos/win32/win32.rb +387 -0
- data/lib/cosmos/win32/win32_main.rb +325 -0
- data/roodi.yml +24 -0
- data/run_gui_tests.bat +44 -0
- data/spec/ccsds/ccsds_packet_spec.rb +67 -0
- data/spec/ccsds/ccsds_parser_spec.rb +148 -0
- data/spec/config/config_parser_spec.rb +353 -0
- data/spec/conversions/conversion_spec.rb +31 -0
- data/spec/conversions/generic_conversion_spec.rb +45 -0
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -0
- data/spec/conversions/polynomial_conversion_spec.rb +40 -0
- data/spec/conversions/processor_conversion_spec.rb +45 -0
- data/spec/conversions/received_count_conversion_spec.rb +43 -0
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -0
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -0
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -0
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -0
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -0
- data/spec/core_ext/array_spec.rb +247 -0
- data/spec/core_ext/class_spec.rb +36 -0
- data/spec/core_ext/cosmos_io_spec.rb +77 -0
- data/spec/core_ext/exception_spec.rb +91 -0
- data/spec/core_ext/file_spec.rb +72 -0
- data/spec/core_ext/hash_spec.rb +24 -0
- data/spec/core_ext/io_spec.rb +46 -0
- data/spec/core_ext/kernel_spec.rb +54 -0
- data/spec/core_ext/math_spec.rb +116 -0
- data/spec/core_ext/matrix_spec.rb +127 -0
- data/spec/core_ext/objectspace_spec.rb +32 -0
- data/spec/core_ext/range_spec.rb +21 -0
- data/spec/core_ext/socket_spec.rb +32 -0
- data/spec/core_ext/string_spec.rb +239 -0
- data/spec/core_ext/stringio_spec.rb +21 -0
- data/spec/core_ext/time_spec.rb +220 -0
- data/spec/gui/line_graph/line_clip_spec.rb +324 -0
- data/spec/gui/qt_spec.rb +104 -0
- data/spec/install/config/system/system.txt +27 -0
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -0
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -0
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -0
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -0
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -0
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -0
- data/spec/install/config/targets/INST/target.txt +10 -0
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/spec/install/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
- data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
- data/spec/install/config/targets/SYSTEM/target.txt +12 -0
- data/spec/install/lib/README.txt +1 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +146 -0
- data/spec/interfaces/interface_spec.rb +514 -0
- data/spec/interfaces/linc_interface_spec.rb +248 -0
- data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
- data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
- data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
- data/spec/interfaces/protocols/template_protocol_spec.rb +322 -0
- data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
- data/spec/interfaces/serial_interface_spec.rb +57 -0
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -0
- data/spec/interfaces/tcpip_client_interface_spec.rb +60 -0
- data/spec/interfaces/tcpip_server_interface_spec.rb +157 -0
- data/spec/interfaces/udp_interface_spec.rb +246 -0
- data/spec/io/buffered_file_spec.rb +113 -0
- data/spec/io/io_multiplexer_spec.rb +102 -0
- data/spec/io/json_drb_object_spec.rb +119 -0
- data/spec/io/json_drb_spec.rb +297 -0
- data/spec/io/json_rpc_spec.rb +264 -0
- data/spec/io/raw_logger_pair_spec.rb +76 -0
- data/spec/io/raw_logger_spec.rb +137 -0
- data/spec/io/serial_driver_spec.rb +62 -0
- data/spec/io/stderr_spec.rb +32 -0
- data/spec/io/stdout_spec.rb +32 -0
- data/spec/io/udp_sockets_spec.rb +99 -0
- data/spec/io/win32_serial_driver_spec.rb +91 -0
- data/spec/packet_logs/packet_log_reader_spec.rb +553 -0
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -0
- data/spec/packet_logs/packet_log_writer_spec.rb +227 -0
- data/spec/packets/binary_accessor_spec.rb +2326 -0
- data/spec/packets/commands_spec.rb +379 -0
- data/spec/packets/limits_response_spec.rb +25 -0
- data/spec/packets/limits_spec.rb +344 -0
- data/spec/packets/packet_config_spec.rb +960 -0
- data/spec/packets/packet_item_limits_spec.rb +188 -0
- data/spec/packets/packet_item_spec.rb +386 -0
- data/spec/packets/packet_spec.rb +1456 -0
- data/spec/packets/parsers/format_string_parser_spec.rb +133 -0
- data/spec/packets/parsers/limits_parser_spec.rb +293 -0
- data/spec/packets/parsers/limits_response_parser_spec.rb +149 -0
- data/spec/packets/parsers/macro_parser_spec.rb +220 -0
- data/spec/packets/parsers/packet_item_parser_spec.rb +366 -0
- data/spec/packets/parsers/packet_parser_spec.rb +99 -0
- data/spec/packets/parsers/processor_parser_spec.rb +114 -0
- data/spec/packets/parsers/state_parser_spec.rb +189 -0
- data/spec/packets/structure_item_spec.rb +213 -0
- data/spec/packets/structure_spec.rb +565 -0
- data/spec/packets/telemetry_spec.rb +578 -0
- data/spec/processors/new_packet_log_processor_spec.rb +39 -0
- data/spec/processors/processor_spec.rb +55 -0
- data/spec/processors/statistics_processor_spec.rb +60 -0
- data/spec/processors/watermark_processor_spec.rb +51 -0
- data/spec/script/cmd_tlm_server_spec.rb +176 -0
- data/spec/script/commands_disconnect_spec.rb +270 -0
- data/spec/script/commands_spec.rb +303 -0
- data/spec/script/extract_spec.rb +158 -0
- data/spec/script/limits_spec.rb +153 -0
- data/spec/script/script_spec.rb +90 -0
- data/spec/script/scripting_spec.rb +745 -0
- data/spec/script/telemetry_spec.rb +176 -0
- data/spec/script/tools_spec.rb +134 -0
- data/spec/spec_helper.rb +225 -0
- data/spec/streams/serial_stream_spec.rb +122 -0
- data/spec/streams/stream_spec.rb +30 -0
- data/spec/streams/tcpip_client_stream_spec.rb +65 -0
- data/spec/streams/tcpip_socket_stream_spec.rb +226 -0
- data/spec/system/system_spec.rb +891 -0
- data/spec/system/target_spec.rb +304 -0
- data/spec/tools/cmd_tlm_server/api_spec.rb +1123 -0
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +44 -0
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +227 -0
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +610 -0
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +431 -0
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -0
- data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -0
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +401 -0
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -0
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +191 -0
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -0
- data/spec/tools/launcher/launcher_config_spec.rb +474 -0
- data/spec/tools/table_manager/table_config_spec.rb +226 -0
- data/spec/tools/table_manager/table_item_parser_spec.rb +61 -0
- data/spec/tools/table_manager/table_item_spec.rb +57 -0
- data/spec/tools/table_manager/table_parser_spec.rb +96 -0
- data/spec/tools/table_manager/table_spec.rb +90 -0
- data/spec/tools/table_manager/tablemanager_core_spec.rb +556 -0
- data/spec/top_level/top_level_spec.rb +373 -0
- data/spec/utilities/crc_spec.rb +45 -0
- data/spec/utilities/csv_spec.rb +139 -0
- data/spec/utilities/logger_spec.rb +102 -0
- data/spec/utilities/message_log_spec.rb +89 -0
- data/spec/utilities/quaternion_spec.rb +107 -0
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -0
- data/tasks/gemfile_stats.rake +79 -0
- data/tasks/manifest.rake +22 -0
- data/tasks/spec.rake +23 -0
- data/test/benchmarks/binary_accessor_benchmark.rb +14 -0
- data/test/benchmarks/gsub_benchmark.rb +152 -0
- data/test/benchmarks/is_a_benchmark.rb +34 -0
- data/test/performance/PACKETS.bat +1 -0
- data/test/performance/Rakefile +77 -0
- data/test/performance/THREADS.bat +1 -0
- data/test/performance/config/data/attitude.bin +0 -0
- data/test/performance/config/data/crc.txt +196 -0
- data/test/performance/config/data/diamond.STL +58 -0
- data/test/performance/config/data/groundoff.gif +0 -0
- data/test/performance/config/data/groundon.gif +0 -0
- data/test/performance/config/data/hselectoff.gif +0 -0
- data/test/performance/config/data/hselecton.gif +0 -0
- data/test/performance/config/data/hswitchoff.gif +0 -0
- data/test/performance/config/data/hswitchon.gif +0 -0
- data/test/performance/config/data/meta_init.txt +4 -0
- data/test/performance/config/data/position.bin +0 -0
- data/test/performance/config/data/poweroff.gif +0 -0
- data/test/performance/config/data/poweron.gif +0 -0
- data/test/performance/config/data/satellite.gif +0 -0
- data/test/performance/config/data/tada.wav +0 -0
- data/test/performance/config/data/vswitchoff.gif +0 -0
- data/test/performance/config/data/vswitchon.gif +0 -0
- data/test/performance/config/system/system_packets.txt +38 -0
- data/test/performance/config/system/system_threads.txt +58 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
- data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -0
- data/test/performance/config/targets/COSMOS/screens/version.txt +19 -0
- data/test/performance/config/targets/COSMOS/target.txt +11 -0
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -0
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -0
- data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -0
- data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -0
- data/test/performance/config/targets/PACKET/screens/status.txt +25 -0
- data/test/performance/config/targets/PACKET/target.txt +28 -0
- data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -0
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -0
- data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -0
- data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -0
- data/test/performance/config/targets/THREAD/screens/status.txt +25 -0
- data/test/performance/config/targets/THREAD/target.txt +7 -0
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -0
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -0
- data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -0
- data/test/performance/config/tools/handbook_creator/default_toc.xsl +59 -0
- data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -0
- data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
- data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
- data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -0
- data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -0
- data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
- data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -0
- data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
- data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
- data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
- data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
- data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -0
- data/test/performance/config/tools/launcher/launcher_packets.txt +34 -0
- data/test/performance/config/tools/launcher/launcher_threads.txt +83 -0
- data/test/performance/config/tools/limits_monitor/README.txt +1 -0
- data/test/performance/config/tools/opengl_builder/README.txt +1 -0
- data/test/performance/config/tools/script_runner/script_runner.txt +3 -0
- data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -0
- data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
- data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
- data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
- data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
- data/test/performance/config/tools/test_runner/test_runner.txt +17 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
- data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
- data/test/performance/config/tools/tlm_grapher/README.txt +1 -0
- data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -0
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -0
- data/test/performance/lib/packet_target.rb +126 -0
- data/test/performance/lib/thread_target.rb +120 -0
- data/test/performance/lib/user_version.rb +3 -0
- data/test/performance/outputs/handbooks/README.txt +1 -0
- data/test/performance/outputs/logs/README.txt +1 -0
- data/test/performance/outputs/saved_config/README.txt +1 -0
- data/test/performance/outputs/tables/README.txt +1 -0
- data/test/performance/outputs/tmp/README.txt +1 -0
- data/test/performance/procedures/checks.rb +11 -0
- data/test/performance/procedures/clear_util.rb +7 -0
- data/test/performance/procedures/collect.rb +18 -0
- data/test/performance/procedures/collect_util.rb +14 -0
- data/test/performance/procedures/cosmos_api_test.rb +293 -0
- data/test/performance/procedures/disconnect.rb +29 -0
- data/test/performance/procedures/example_test.rb +182 -0
- data/test/performance/procedures/plot_test.rb +8 -0
- data/test/performance/procedures/procedure.rb +3 -0
- data/test/performance/procedures/run_example_test.rb +3 -0
- data/test/performance/procedures/test.rb +51 -0
- data/test/performance/tools/CmdExtractor +14 -0
- data/test/performance/tools/CmdExtractor.bat +59 -0
- data/test/performance/tools/CmdSender +14 -0
- data/test/performance/tools/CmdSender.bat +59 -0
- data/test/performance/tools/CmdTlmServer +16 -0
- data/test/performance/tools/CmdTlmServer.bat +59 -0
- data/test/performance/tools/CmdTlmServerMemProf +20 -0
- data/test/performance/tools/CmdTlmServerMemProf.bat +59 -0
- data/test/performance/tools/DataViewer +14 -0
- data/test/performance/tools/DataViewer.bat +59 -0
- data/test/performance/tools/HandbookCreator +14 -0
- data/test/performance/tools/HandbookCreator.bat +61 -0
- data/test/performance/tools/Launcher +14 -0
- data/test/performance/tools/Launcher.bat +59 -0
- data/test/performance/tools/LimitsMonitor +14 -0
- data/test/performance/tools/LimitsMonitor.bat +59 -0
- data/test/performance/tools/OpenGLBuilder +14 -0
- data/test/performance/tools/OpenGLBuilder.bat +59 -0
- data/test/performance/tools/PacketTarget +14 -0
- data/test/performance/tools/PacketTarget.bat +59 -0
- data/test/performance/tools/PacketViewer +14 -0
- data/test/performance/tools/PacketViewer.bat +59 -0
- data/test/performance/tools/Replay +14 -0
- data/test/performance/tools/Replay.bat +59 -0
- data/test/performance/tools/ScpiTarget +14 -0
- data/test/performance/tools/ScpiTarget.bat +59 -0
- data/test/performance/tools/ScriptRunner +14 -0
- data/test/performance/tools/ScriptRunner.bat +59 -0
- data/test/performance/tools/TableManager +14 -0
- data/test/performance/tools/TableManager.bat +59 -0
- data/test/performance/tools/TestRunner +14 -0
- data/test/performance/tools/TestRunner.bat +59 -0
- data/test/performance/tools/ThreadTarget +14 -0
- data/test/performance/tools/ThreadTarget.bat +59 -0
- data/test/performance/tools/TlmExtractor +14 -0
- data/test/performance/tools/TlmExtractor.bat +59 -0
- data/test/performance/tools/TlmGrapher +14 -0
- data/test/performance/tools/TlmGrapher.bat +59 -0
- data/test/performance/tools/TlmGrapherMemProf +19 -0
- data/test/performance/tools/TlmGrapherMemProf.bat +59 -0
- data/test/performance/tools/TlmViewer +14 -0
- data/test/performance/tools/TlmViewer.bat +59 -0
- data/test/performance/tools/TlmViewerMemProf +19 -0
- data/test/performance/tools/TlmViewerMemProf.bat +59 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
- data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
- data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
- data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
- data/test/performance/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
- metadata +1964 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
4
|
+
# All Rights Reserved.
|
5
|
+
#
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
7
|
+
# under the terms of the GNU General Public License
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
10
|
+
|
11
|
+
require 'cosmos'
|
12
|
+
require 'cosmos/tools/table_manager/table_item'
|
13
|
+
|
14
|
+
module Cosmos
|
15
|
+
# Table extends Packet by adding more attributes relative to
|
16
|
+
# displaying binary data in a gui.
|
17
|
+
class Table < Packet
|
18
|
+
# Define the target for tables as 'TABLE' since there is no target
|
19
|
+
TARGET = 'TABLE'
|
20
|
+
# @return [Symbol] Either :ONE_DIMENSIONAL or :TWO_DIMENSIONAL
|
21
|
+
attr_reader :type
|
22
|
+
# @return [String] File which contains the table definition
|
23
|
+
attr_reader :filename
|
24
|
+
# @return [Integer] Number of columns in the table
|
25
|
+
attr_accessor :num_columns
|
26
|
+
|
27
|
+
alias table_name packet_name
|
28
|
+
|
29
|
+
# Constructor for a TableDefinition
|
30
|
+
def initialize(name, endianness, type, description, filename)
|
31
|
+
super(TARGET, name, endianness, description, '', TableItem)
|
32
|
+
if type != :ONE_DIMENSIONAL && type != :TWO_DIMENSIONAL
|
33
|
+
raise ArgumentError, "Invalid type '#{type}' for table '#{name}'. Must be ONE_DIMENSIONAL or TWO_DIMENSIONAL"
|
34
|
+
end
|
35
|
+
@type = type
|
36
|
+
@filename = filename
|
37
|
+
@num_rows = 0
|
38
|
+
@num_columns = (@type == :ONE_DIMENSIONAL) ? 1 : 0
|
39
|
+
end
|
40
|
+
|
41
|
+
# @param num_rows [Integer] Set the number of rows in a TWO_DIMENSIONAL table
|
42
|
+
def num_rows=(num_rows)
|
43
|
+
case @type
|
44
|
+
when :ONE_DIMENSIONAL
|
45
|
+
raise "Rows are fixed in a ONE_DIMENSIONAL table"
|
46
|
+
when :TWO_DIMENSIONAL
|
47
|
+
@num_rows = num_rows
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [Integer] Number of rows in the table
|
52
|
+
def num_rows
|
53
|
+
case @type
|
54
|
+
when :ONE_DIMENSIONAL
|
55
|
+
@sorted_items.count {|item| !item.hidden }
|
56
|
+
when :TWO_DIMENSIONAL
|
57
|
+
@num_rows
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,189 @@
|
|
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/config/config_parser'
|
12
|
+
require 'cosmos/packets/packet_config'
|
13
|
+
require 'cosmos/tools/table_manager/table'
|
14
|
+
require 'cosmos/tools/table_manager/table_parser'
|
15
|
+
require 'cosmos/tools/table_manager/table_item_parser'
|
16
|
+
|
17
|
+
module Cosmos
|
18
|
+
# Processes the Table Manager configuration files which define tables. Since
|
19
|
+
# this class inherits from {PacketConfig} it only needs to implement Table
|
20
|
+
# Manager specific keywords. All tables are accessed through the table
|
21
|
+
# and tables methods.
|
22
|
+
class TableConfig < PacketConfig
|
23
|
+
# @return [String] Table configuration filename
|
24
|
+
attr_reader :filename
|
25
|
+
|
26
|
+
# Create the table configuration
|
27
|
+
def initialize
|
28
|
+
super
|
29
|
+
# Override commands with the Table::TARGET name to store tables
|
30
|
+
@commands[Table::TARGET] = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [Array<Table>] All tables defined in the configuration file
|
34
|
+
def tables
|
35
|
+
@commands[Table::TARGET]
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Array<String>] All the table names
|
39
|
+
def table_names
|
40
|
+
tables.keys
|
41
|
+
end
|
42
|
+
|
43
|
+
# @param table_name [String] Table name to return
|
44
|
+
# @return [Table]
|
45
|
+
def table(table_name)
|
46
|
+
tables[table_name.upcase]
|
47
|
+
end
|
48
|
+
|
49
|
+
# Processes a COSMOS table configuration file and uses the keywords to build up
|
50
|
+
# knowledge of the tables.
|
51
|
+
#
|
52
|
+
# @param filename [String] The name of the configuration file
|
53
|
+
def process_file(filename)
|
54
|
+
# Partial files are included into another file and thus aren't directly processed
|
55
|
+
return if File.basename(filename)[0] == '_' # Partials start with underscore
|
56
|
+
@filename = filename
|
57
|
+
@converted_type = nil
|
58
|
+
@converted_bit_size = nil
|
59
|
+
@proc_text = ''
|
60
|
+
@building_generic_conversion = false
|
61
|
+
|
62
|
+
parser = ConfigParser.new("http://cosmosrb.com/docs/tools/#table-manager-configuration-cosmos--39")
|
63
|
+
parser.parse_file(filename) do |keyword, params|
|
64
|
+
if @building_generic_conversion
|
65
|
+
case keyword
|
66
|
+
# Complete a generic conversion
|
67
|
+
when 'GENERIC_READ_CONVERSION_END', 'GENERIC_WRITE_CONVERSION_END'
|
68
|
+
parser.verify_num_parameters(0, 0, keyword)
|
69
|
+
@current_item.read_conversion =
|
70
|
+
GenericConversion.new(@proc_text,
|
71
|
+
@converted_type,
|
72
|
+
@converted_bit_size) if keyword.include? "READ"
|
73
|
+
@current_item.write_conversion =
|
74
|
+
GenericConversion.new(@proc_text,
|
75
|
+
@converted_type,
|
76
|
+
@converted_bit_size) if keyword.include? "WRITE"
|
77
|
+
@building_generic_conversion = false
|
78
|
+
# Add the current config.line to the conversion being built
|
79
|
+
else
|
80
|
+
@proc_text << parser.line << "\n"
|
81
|
+
end # case keyword
|
82
|
+
|
83
|
+
else # not building generic conversion
|
84
|
+
case keyword
|
85
|
+
when 'TABLEFILE'
|
86
|
+
usage = "#{keyword} <File name>"
|
87
|
+
parser.verify_num_parameters(1, 1, usage)
|
88
|
+
filename = File.join(File.dirname(filename), params[0])
|
89
|
+
raise parser.error("Table file #{filename} not found", usage) unless File.exist?(filename)
|
90
|
+
process_file(filename)
|
91
|
+
|
92
|
+
when 'TABLE'
|
93
|
+
finish_packet()
|
94
|
+
@current_packet = TableParser.parse_table(parser, @commands, @warnings)
|
95
|
+
@current_cmd_or_tlm = COMMAND
|
96
|
+
|
97
|
+
# Select an existing table for editing
|
98
|
+
when 'SELECT_TABLE'
|
99
|
+
usage = "#{keyword} <TABLE NAME>"
|
100
|
+
finish_packet()
|
101
|
+
parser.verify_num_parameters(1, 1, usage)
|
102
|
+
table_name = params[0].upcase
|
103
|
+
@current_packet = table(table_name)
|
104
|
+
raise parser.error("Table #{table_name} not found", usage) unless @current_packet
|
105
|
+
|
106
|
+
#######################################################################
|
107
|
+
# All the following keywords must have a current packet defined
|
108
|
+
#######################################################################
|
109
|
+
when 'SELECT_PARAMETER', 'PARAMETER', 'ID_PARAMETER', 'ARRAY_PARAMETER',
|
110
|
+
'APPEND_PARAMETER', 'APPEND_ID_PARAMETER', 'APPEND_ARRAY_PARAMETER',
|
111
|
+
'ALLOW_SHORT', 'HAZARDOUS', 'PROCESSOR', 'META', 'DISABLE_MESSAGES', 'DISABLED'
|
112
|
+
raise parser.error("No current packet for #{keyword}") unless @current_packet
|
113
|
+
process_current_packet(parser, keyword, params)
|
114
|
+
|
115
|
+
#######################################################################
|
116
|
+
# All the following keywords must have a current item defined
|
117
|
+
#######################################################################
|
118
|
+
when 'STATE', 'READ_CONVERSION', 'WRITE_CONVERSION', 'POLY_READ_CONVERSION',
|
119
|
+
'POLY_WRITE_CONVERSION', 'SEG_POLY_READ_CONVERSION', 'SEG_POLY_WRITE_CONVERSION',
|
120
|
+
'GENERIC_READ_CONVERSION_START', 'GENERIC_WRITE_CONVERSION_START', 'REQUIRED',
|
121
|
+
'LIMITS', 'LIMITS_RESPONSE', 'UNITS', 'FORMAT_STRING', 'DESCRIPTION', 'HIDDEN',
|
122
|
+
'MINIMUM_VALUE', 'MAXIMUM_VALUE', 'DEFAULT_VALUE', 'OVERFLOW', 'UNEDITABLE'
|
123
|
+
raise parser.error("No current item for #{keyword}") unless @current_item
|
124
|
+
process_current_item(parser, keyword, params)
|
125
|
+
|
126
|
+
else
|
127
|
+
# blank config.lines will have a nil keyword and should not raise an exception
|
128
|
+
raise parser.error("Unknown keyword '#{keyword}'") if keyword
|
129
|
+
end # case keyword
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# Complete the last defined packet
|
134
|
+
finish_packet()
|
135
|
+
end
|
136
|
+
|
137
|
+
# (see PacketConfig#process_current_packet)
|
138
|
+
def process_current_packet(parser, keyword, params)
|
139
|
+
super(parser, keyword, params)
|
140
|
+
rescue => err
|
141
|
+
if err.message.include?("not found")
|
142
|
+
raise parser.error("#{params[0]} not found in table #{@current_packet.table_name}", "SELECT_PARAMETER <PARAMETER NAME>")
|
143
|
+
else
|
144
|
+
raise err
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# Overridden method to handle the unique table item parameters: UNEDITABLE
|
149
|
+
# and HIDDEN.
|
150
|
+
# (see PacketConfig#process_current_item)
|
151
|
+
def process_current_item(parser, keyword, params)
|
152
|
+
super(parser, keyword, params)
|
153
|
+
case keyword
|
154
|
+
when 'UNEDITABLE'
|
155
|
+
usage = "#{keyword}"
|
156
|
+
parser.verify_num_parameters(0, 0, usage)
|
157
|
+
@current_item.editable = false
|
158
|
+
when 'HIDDEN'
|
159
|
+
usage = "#{keyword}"
|
160
|
+
parser.verify_num_parameters(0, 0, usage)
|
161
|
+
@current_item.hidden = true
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
# (see PacketConfig#start_item)
|
166
|
+
def start_item(parser)
|
167
|
+
finish_item()
|
168
|
+
@current_item = TableItemParser.parse(parser, @current_packet)
|
169
|
+
end
|
170
|
+
|
171
|
+
# If the table is TWO_DIMENSIONAL all currently defined items are
|
172
|
+
# duplicated until the specified number of rows are created.
|
173
|
+
def finish_packet
|
174
|
+
if @current_packet
|
175
|
+
if @current_packet.type == :TWO_DIMENSIONAL
|
176
|
+
items = @current_packet.sorted_items.clone
|
177
|
+
(@current_packet.num_rows - 1).times do |row|
|
178
|
+
items.each do |item|
|
179
|
+
new_item = item.clone
|
180
|
+
new_item.name = "#{new_item.name[0...-1]}#{row + 1}"
|
181
|
+
@current_packet.append(new_item)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
super()
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,58 @@
|
|
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
|
+
|
13
|
+
module Cosmos
|
14
|
+
# Implements the attributes that are unique to a TableItem such as editable
|
15
|
+
# and hidden. All other functionality is inherited from {PacketItem}.
|
16
|
+
class TableItem < PacketItem
|
17
|
+
# @return [Boolean] Whether this item is editable
|
18
|
+
attr_reader :editable
|
19
|
+
# @return [Boolean] Whether this item is hidden (not displayed)
|
20
|
+
attr_reader :hidden
|
21
|
+
|
22
|
+
# (see PacketItem#initialize)
|
23
|
+
def initialize(name, bit_offset, bit_size, data_type, endianness, array_size = nil, overflow = :ERROR)
|
24
|
+
super(name, bit_offset, bit_size, data_type, endianness, array_size, overflow)
|
25
|
+
@display_type = nil
|
26
|
+
@editable = true
|
27
|
+
@hidden = false
|
28
|
+
end
|
29
|
+
|
30
|
+
# @param editable [Boolean] Whether this item can be edited
|
31
|
+
def editable=(editable)
|
32
|
+
raise ArgumentError, "#{@name}: editable must be a boolean but is a #{editable.class}" unless !!editable == editable
|
33
|
+
@editable = editable
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param hidden [Boolean] Whether this item should be hidden
|
37
|
+
def hidden=(hidden)
|
38
|
+
raise ArgumentError, "#{@name}: hidden must be a boolean but is a #{hidden.class}" unless !!hidden == hidden
|
39
|
+
@hidden = hidden
|
40
|
+
end
|
41
|
+
|
42
|
+
# Make a light weight clone of this item
|
43
|
+
def clone
|
44
|
+
item = super()
|
45
|
+
item.editable = self.editable
|
46
|
+
item
|
47
|
+
end
|
48
|
+
alias dup clone
|
49
|
+
|
50
|
+
# Create a hash of this item's attributes
|
51
|
+
def to_hash
|
52
|
+
hash = super()
|
53
|
+
hash['editable'] = self.editable
|
54
|
+
hash['hidden'] = self.hidden
|
55
|
+
hash
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,46 @@
|
|
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/packets/packet_config'
|
12
|
+
require 'cosmos/packets/packet_item'
|
13
|
+
|
14
|
+
module Cosmos
|
15
|
+
class TableItemParser < PacketItemParser
|
16
|
+
# @param parser [ConfigParser] Configuration parser
|
17
|
+
# @param table [Table] Table all parsed items should be added to
|
18
|
+
def self.parse(parser, table)
|
19
|
+
parser = TableItemParser.new(parser)
|
20
|
+
parser.verify_parameters(PacketConfig::COMMAND)
|
21
|
+
parser.create_table_item(table)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param table [Table] Table created items are added to
|
25
|
+
def create_table_item(table)
|
26
|
+
name = @parser.parameters[0]
|
27
|
+
if table.type == :TWO_DIMENSIONAL
|
28
|
+
name = "#{name}0"
|
29
|
+
table.num_columns += 1
|
30
|
+
end
|
31
|
+
item = TableItem.new(name, get_bit_offset(), get_bit_size(), get_data_type(),
|
32
|
+
get_endianness(table), get_array_size(), :ERROR) # overflow
|
33
|
+
item.range = get_range()
|
34
|
+
item.default = get_default()
|
35
|
+
item.description = get_description()
|
36
|
+
if append?
|
37
|
+
item = table.append(item)
|
38
|
+
else
|
39
|
+
item = table.define(item)
|
40
|
+
end
|
41
|
+
item
|
42
|
+
rescue => err
|
43
|
+
raise @parser.error(err, @usage)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,1152 @@
|
|
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
|
+
Cosmos.catch_fatal_exception do
|
13
|
+
require 'cosmos/gui/qt_tool'
|
14
|
+
require 'cosmos/gui/dialogs/progress_dialog'
|
15
|
+
require 'cosmos/tools/table_manager/table_config'
|
16
|
+
require 'cosmos/tools/table_manager/table_manager_core'
|
17
|
+
require 'cosmos/gui/dialogs/tlm_details_dialog'
|
18
|
+
end
|
19
|
+
|
20
|
+
class Qt::ComboBox
|
21
|
+
def wheelEvent(param)
|
22
|
+
self.nativeParentWidget.wheelEvent(param)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Override the default COSMOS setting which makes table cells read only
|
27
|
+
Cosmos.disable_warnings do
|
28
|
+
class Qt::TableWidgetItem
|
29
|
+
def initialize(string = "")
|
30
|
+
super(string)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module Cosmos
|
36
|
+
# This class applies to all items in the table but its only purpose is to
|
37
|
+
# determine if table cells should be rendered as comboboxes. Any table items
|
38
|
+
# with states are rendered as comboboxes.
|
39
|
+
class ComboBoxItemDelegate < Qt::StyledItemDelegate
|
40
|
+
# Create the combobox widget to display the values
|
41
|
+
# @param parent [Qt::Widget] Parent to created widget
|
42
|
+
# @param option [Qt::StyleOptionViewItem] Style options (not used)
|
43
|
+
# @param index [Qt::ModelIndex] Indicates which table item is active
|
44
|
+
def createEditor(parent, option, index)
|
45
|
+
table = TableManager.instance.core.config.table(TableManager.instance.current_table_name)
|
46
|
+
gui_table = TableManager.instance.tabbook.tab(TableManager.instance.current_table_name)
|
47
|
+
if table.type == :TWO_DIMENSIONAL
|
48
|
+
item_name = gui_table.horizontalHeaderItem(index.column).text + index.row.to_s
|
49
|
+
item = table.get_item(item_name)
|
50
|
+
else
|
51
|
+
item_name = gui_table.verticalHeaderItem(index.row).text
|
52
|
+
item = table.get_item(item_name)
|
53
|
+
end
|
54
|
+
if item.states && item.editable
|
55
|
+
combo = Qt::ComboBox.new(parent)
|
56
|
+
combo.addItems(item.states.keys.sort)
|
57
|
+
combo.setCurrentText(table.read(item.name).to_s)
|
58
|
+
connect(combo, SIGNAL('activated(int)')) do
|
59
|
+
emit commitData(combo)
|
60
|
+
gui_table.closeEditor(combo, 0)
|
61
|
+
end
|
62
|
+
return combo
|
63
|
+
else
|
64
|
+
return super(parent, option, index)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Gets the current item from the combobox if it exists and writes it back
|
69
|
+
# to the model.
|
70
|
+
# @param editor [Qt::Widget] Editor widget
|
71
|
+
# @param model [Qt::AbstractItemModel] Model to write the gui data to
|
72
|
+
# @param index [Qt::ModelIndex] Where in the model to update the data
|
73
|
+
def setModelData(editor, model, index)
|
74
|
+
if Qt::ComboBox === editor
|
75
|
+
model.setData(index, Qt::Variant.new(editor.currentText), Qt::EditRole)
|
76
|
+
else
|
77
|
+
super(editor, model, index)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
# Sets the current item in the combobox based on the model data
|
82
|
+
# @param editor [Qt::Widget] Editor widget
|
83
|
+
# @param index [Qt::ModelIndex] Where in the model to grab the data
|
84
|
+
def setEditorData(editor, index)
|
85
|
+
if Qt::ComboBox === editor
|
86
|
+
v = index.data(Qt::EditRole)
|
87
|
+
combo_index = editor.findText(v.toString)
|
88
|
+
if combo_index >= 0
|
89
|
+
editor.setCurrentIndex(combo_index)
|
90
|
+
else
|
91
|
+
editor.setCurrentIndex(0)
|
92
|
+
end
|
93
|
+
else
|
94
|
+
super(editor, index)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# A dialog box containing a text field and ok button
|
100
|
+
class HexDumpDialog < Qt::Dialog
|
101
|
+
# @param parent [Qt::Widget] Dialog parent
|
102
|
+
def initialize(parent)
|
103
|
+
super(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
104
|
+
setWindowTitle("Hex Dump")
|
105
|
+
|
106
|
+
@text = Qt::PlainTextEdit.new
|
107
|
+
@text.setWordWrapMode(Qt::TextOption::NoWrap)
|
108
|
+
if Kernel.is_windows?
|
109
|
+
@text.setFont(Cosmos.getFont('courier', 10))
|
110
|
+
else
|
111
|
+
@text.setFont(Cosmos.getFont('courier', 14))
|
112
|
+
end
|
113
|
+
@text.setReadOnly(true)
|
114
|
+
|
115
|
+
layout = Qt::VBoxLayout.new
|
116
|
+
layout.addWidget(@text)
|
117
|
+
|
118
|
+
button_layout = Qt::HBoxLayout.new
|
119
|
+
ok_button = Qt::PushButton.new('OK')
|
120
|
+
ok_button.connect(SIGNAL('clicked()')) { self.accept }
|
121
|
+
button_layout.addStretch
|
122
|
+
button_layout.addWidget(ok_button)
|
123
|
+
button_layout.addStretch
|
124
|
+
|
125
|
+
layout.addLayout(button_layout)
|
126
|
+
setLayout(layout)
|
127
|
+
resize(650, 250)
|
128
|
+
end
|
129
|
+
|
130
|
+
# @param title [String] Dialog title
|
131
|
+
# @param text [String] Dialog text box is overwritten with this string
|
132
|
+
def set_title_and_text(title, text)
|
133
|
+
self.setWindowTitle(title)
|
134
|
+
@text.setPlainText(text)
|
135
|
+
end
|
136
|
+
|
137
|
+
# @param width [Integer]
|
138
|
+
# @param height [Integer]
|
139
|
+
def set_size(width, height)
|
140
|
+
resize(width, height)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
class ProgressDialog
|
145
|
+
def progress=(increment)
|
146
|
+
set_overall_progress(increment / 100.0)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# TableManager uses text based configuration files (see TableConfig) to define
|
151
|
+
# both the structure of the binary file and how it should be displayed. It
|
152
|
+
# takes this this configuration information to dynamically build a tabbed GUI
|
153
|
+
# containing the visual representation of the binary data.
|
154
|
+
# In addition to displaying binary data it can also create the binary
|
155
|
+
# representation given the text configuration file. It can display the binary
|
156
|
+
# data as a hex dump and creates human readable reports of the given data.
|
157
|
+
class TableManager < QtTool
|
158
|
+
# Error raised when there is a problem saving a table
|
159
|
+
class SaveError < StandardError; end
|
160
|
+
# Error raised when there is a problem displaying a table
|
161
|
+
class DisplayError < StandardError; end
|
162
|
+
|
163
|
+
# @return [TableManagerCore] TableManagerCore instance
|
164
|
+
attr_reader :core
|
165
|
+
# @return [Qt::TabWidget] TabWidget which holds the table tabs
|
166
|
+
attr_reader :tabbook
|
167
|
+
|
168
|
+
# @return [TableManager] Instance of the TableManager class
|
169
|
+
def self.instance
|
170
|
+
@@instance
|
171
|
+
end
|
172
|
+
|
173
|
+
# Entry point into the application
|
174
|
+
#
|
175
|
+
# @param option_parser [OptionParser] Parses the command line options
|
176
|
+
# @param options [OpenStruct] Contains all the parsed options
|
177
|
+
def self.run(option_parser = nil, options = nil)
|
178
|
+
Cosmos.catch_fatal_exception do
|
179
|
+
unless option_parser && options
|
180
|
+
option_parser, options = create_default_options()
|
181
|
+
options.width = 800
|
182
|
+
options.height = 600
|
183
|
+
options.title = "Table Manager"
|
184
|
+
options.auto_size = false
|
185
|
+
options.no_tables = false
|
186
|
+
option_parser.separator "Table Manager Specific Options:"
|
187
|
+
option_parser.on("-n", "--notables", "Do not include table file editing options. This will remove the 'Table' menu.") do
|
188
|
+
options.no_tables = true
|
189
|
+
end
|
190
|
+
option_parser.on("-c", "--create FILE", "Use the specified definition file to create the table") do |arg|
|
191
|
+
options.create = arg
|
192
|
+
end
|
193
|
+
option_parser.on("-o", "--output DIRECTORY", "Create files in the specified directory") do |arg|
|
194
|
+
options.output_dir = File.expand_path(arg)
|
195
|
+
end
|
196
|
+
option_parser.on("--convert FILE", "Convert the specified configuration file to the new format") do |arg|
|
197
|
+
options.convert = arg
|
198
|
+
end
|
199
|
+
end
|
200
|
+
super(option_parser, options)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
# Called after parsing all the command line options passed to the
|
205
|
+
# application. Returns false to operate without a GUI when certain command
|
206
|
+
# line options are specified.
|
207
|
+
#
|
208
|
+
# @param options [OpenStruct] The application options as configured in the
|
209
|
+
# command line
|
210
|
+
# @return [Boolean] Whether to contine running the application
|
211
|
+
def self.post_options_parsed_hook(options)
|
212
|
+
if options.create
|
213
|
+
core = TableManagerCore.new
|
214
|
+
core.file_new(options.create, options.output_dir)
|
215
|
+
return false
|
216
|
+
end
|
217
|
+
if options.convert
|
218
|
+
if options.convert.include?("/")
|
219
|
+
parts = options.convert.split("/")
|
220
|
+
else
|
221
|
+
parts = options.convert.split("\\")
|
222
|
+
end
|
223
|
+
parts[-1] = "converted_#{parts[-1]}"
|
224
|
+
filename = parts.join(File::SEPARATOR)
|
225
|
+
File.open(filename, 'w') do |out|
|
226
|
+
config = File.read(options.convert).split("\n")
|
227
|
+
config.each do |line|
|
228
|
+
/TABLE\s+(\".*\")\s+(\".*\")\s+(ONE_DIMENSIONAL)\s+(.*_ENDIAN)/.match(line) do |m|
|
229
|
+
out.puts "TABLE #{m[1]} #{m[4]} #{m[3]} #{m[2]}"
|
230
|
+
end
|
231
|
+
/TABLE\s+(\".*\")\s+(\".*\")\s+(TWO_DIMENSIONAL)\s+(.*_ENDIAN)/.match(line) do |m|
|
232
|
+
rows = config.select {|item| item.strip =~ /^DEFAULT/ }.length
|
233
|
+
out.puts "TABLE #{m[1]} #{m[4]} #{m[3]} #{rows} #{m[2]}"
|
234
|
+
end
|
235
|
+
/PARAMETER\s+(\".*\")\s+(\".*\")\s+(.*)\s+(\d+)\s+(.*)\s+(.*)\s+(.*)\s+(.*)\s?/.match(line) do |m|
|
236
|
+
out.puts " APPEND_PARAMETER #{m[1]} #{m[4]} #{m[3]} #{m[6]} #{m[7]} #{m[8]} #{m[2]}"
|
237
|
+
if m[5].include?('CHECK')
|
238
|
+
out.puts " STATE UNCHECKED #{m[6]}"
|
239
|
+
out.puts " STATE CHECKED #{m[7]}"
|
240
|
+
end
|
241
|
+
if m[5].include?('HEX')
|
242
|
+
out.puts ' FORMAT_STRING "0x%0X"'
|
243
|
+
end
|
244
|
+
if m[5].include?('-U')
|
245
|
+
out.puts ' UNEDITABLE'
|
246
|
+
end
|
247
|
+
end
|
248
|
+
if line.strip !~ /^(TABLE|PARAMETER|DEFAULT)/
|
249
|
+
out.puts line
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
puts "Created #{filename}"
|
254
|
+
return false
|
255
|
+
end
|
256
|
+
true
|
257
|
+
end
|
258
|
+
|
259
|
+
# Create a TableManager instance by initializing the globals,
|
260
|
+
# setting the program icon, creating the menu, and laying out the GUI elements.
|
261
|
+
def initialize(options)
|
262
|
+
super(options) # MUST BE FIRST - All code before super is executed twice in RubyQt Based classes
|
263
|
+
@app_title = options.title
|
264
|
+
@app_icon_filename = 'table_manager.png'
|
265
|
+
Cosmos.load_cosmos_icon(@app_icon_filename)
|
266
|
+
|
267
|
+
@system_def_path = File.join(::Cosmos::USERPATH, %w(config tools table_manager))
|
268
|
+
@system_bin_path = System.paths['TABLES']
|
269
|
+
@def_path = @system_def_path
|
270
|
+
@bin_path = @system_bin_path
|
271
|
+
@core = TableManagerCore.new
|
272
|
+
@@instance = self
|
273
|
+
|
274
|
+
initialize_actions(options.no_tables)
|
275
|
+
initialize_menus(options.no_tables)
|
276
|
+
initialize_central_widget()
|
277
|
+
complete_initialize()
|
278
|
+
setMinimumSize(400, 250)
|
279
|
+
|
280
|
+
statusBar.showMessage(tr("Ready")) # Show message to initialize status bar
|
281
|
+
end
|
282
|
+
|
283
|
+
def initialize_actions(no_tables = false)
|
284
|
+
super()
|
285
|
+
|
286
|
+
# File Menu Actions
|
287
|
+
new_action = Qt::Action.new(self)
|
288
|
+
new_action.shortcut = Qt::KeySequence.new(Qt::KeySequence::New)
|
289
|
+
new_action.connect(SIGNAL('triggered()')) { file_new(@def_path) }
|
290
|
+
self.addAction(new_action) # Add it to the application
|
291
|
+
|
292
|
+
open_action = Qt::Action.new(self)
|
293
|
+
open_action.shortcut = Qt::KeySequence.new(Qt::KeySequence::Open)
|
294
|
+
open_action.connect(SIGNAL('triggered()')) { file_open(@bin_path) }
|
295
|
+
self.addAction(open_action) # Add it to the application
|
296
|
+
|
297
|
+
@file_open_both = Qt::Action.new(Cosmos.get_icon('open.png'), tr('Open &Both'), self)
|
298
|
+
@file_open_both.statusTip = tr('Specify both the binary file and the definition file to open')
|
299
|
+
@file_open_both.connect(SIGNAL('triggered()')) { file_open_both() }
|
300
|
+
|
301
|
+
@file_save = Qt::Action.new(Cosmos.get_icon('save.png'), tr('&Save File'), self)
|
302
|
+
@file_save_keyseq = Qt::KeySequence.new(Qt::KeySequence::Save)
|
303
|
+
@file_save.shortcut = @file_save_keyseq
|
304
|
+
@file_save.statusTip = tr('Save the displayed data back to the binary file')
|
305
|
+
@file_save.connect(SIGNAL('triggered()')) { file_save() }
|
306
|
+
|
307
|
+
@file_save_as = Qt::Action.new(Cosmos.get_icon('save_as.png'), tr('Save File &As'), self)
|
308
|
+
@file_save_as_keyseq = Qt::KeySequence.new(Qt::KeySequence::SaveAs)
|
309
|
+
@file_save_as.shortcut = @file_save_as_keyseq
|
310
|
+
@file_save_as.statusTip = tr('Save the displayed data to a new binary file')
|
311
|
+
@file_save_as.connect(SIGNAL('triggered()')) { file_save(true) }
|
312
|
+
|
313
|
+
@file_close = Qt::Action.new(Cosmos.get_icon('close.png'), tr('&Close File'), self)
|
314
|
+
@file_close_keyseq = Qt::KeySequence.new(tr("Ctrl+W")) # Qt::KeySequence::Close is Alt-F4 on Windows
|
315
|
+
@file_close.shortcut = @file_close_keyseq
|
316
|
+
@file_close.statusTip = tr('Close the current file')
|
317
|
+
@file_close.connect(SIGNAL('triggered()')) { file_close() }
|
318
|
+
|
319
|
+
@file_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'), tr('&Check All'), self)
|
320
|
+
@file_check_keyseq = Qt::KeySequence.new(tr('Ctrl+K'))
|
321
|
+
@file_check.shortcut = @file_check_keyseq
|
322
|
+
@file_check.statusTip = tr('Check each data value against verification criteria')
|
323
|
+
@file_check.connect(SIGNAL('triggered()')) { file_check() }
|
324
|
+
|
325
|
+
@file_hex = Qt::Action.new(tr('&Hex Dump'), self)
|
326
|
+
@file_hex_keyseq = Qt::KeySequence.new(tr('Ctrl+H'))
|
327
|
+
@file_hex.shortcut = @file_hex_keyseq
|
328
|
+
@file_hex.statusTip = tr('Display a hex representation of the binary file')
|
329
|
+
@file_hex.connect(SIGNAL('triggered()')) { display_hex(:file) }
|
330
|
+
|
331
|
+
@file_report = Qt::Action.new(tr('Create &Report'), self)
|
332
|
+
@file_report_keyseq = Qt::KeySequence.new(tr('Ctrl+R'))
|
333
|
+
@file_report.shortcut = @file_report_keyseq
|
334
|
+
@file_report.statusTip = tr('Create a text file report describing the binary data')
|
335
|
+
@file_report.connect(SIGNAL('triggered()')) { file_report() }
|
336
|
+
|
337
|
+
unless no_tables
|
338
|
+
# Table Menu Actions
|
339
|
+
@table_check = Qt::Action.new(Cosmos.get_icon('checkmark.png'), tr('&Check'), self)
|
340
|
+
@table_check.statusTip = tr('Check each data value against verification criteria')
|
341
|
+
@table_check.connect(SIGNAL('triggered()')) { table_check() }
|
342
|
+
|
343
|
+
@table_default = Qt::Action.new(tr('&Default'), self)
|
344
|
+
@table_default_keyseq = Qt::KeySequence.new(tr('Ctrl+D'))
|
345
|
+
@table_default.shortcut = @table_default_keyseq
|
346
|
+
@table_default.statusTip = tr('Revert all data values to their defaults')
|
347
|
+
@table_default.connect(SIGNAL('triggered()')) { table_default() }
|
348
|
+
|
349
|
+
@table_hex = Qt::Action.new(tr('&Hex Dump'), self)
|
350
|
+
@table_hex.statusTip = tr('Display a hex representation of the table')
|
351
|
+
@table_hex.connect(SIGNAL('triggered()')) { display_hex(:table) }
|
352
|
+
|
353
|
+
@table_save = Qt::Action.new(tr('&Save Table Binary'), self)
|
354
|
+
@table_save.statusTip = tr('Save the current table to a stand alone binary file')
|
355
|
+
@table_save.connect(SIGNAL('triggered()')) { table_save() }
|
356
|
+
|
357
|
+
@table_commit = Qt::Action.new(tr('Commit to Existing &File'), self)
|
358
|
+
@table_commit.statusTip = tr('Incorporate the current table data into a binary file which already contains the table')
|
359
|
+
@table_commit.connect(SIGNAL('triggered()')) { table_commit() }
|
360
|
+
|
361
|
+
#@table_update = Qt::Action.new(tr('&Update Definition'), self)
|
362
|
+
#@table_update.statusTip = tr('Change the defaults in the definition file to the displayed table data')
|
363
|
+
#@table_update.connect(SIGNAL('triggered()')) { table_update() }
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
def initialize_menus(no_tables = false)
|
368
|
+
file_menu = menuBar.addMenu(tr('&File'))
|
369
|
+
|
370
|
+
file_new = file_menu.addMenu(Cosmos.get_icon('file.png'), tr("&New File")) # \tCtrl-N displays shortcut
|
371
|
+
target_dirs_action(file_new, @system_def_path, 'tools/table_manager', method(:file_new))
|
372
|
+
|
373
|
+
file_open = file_menu.addMenu(Cosmos.get_icon('open.png'), tr("&Open")) # \tCtrl-O displays shortcut
|
374
|
+
target_dirs_action(file_open, @system_bin_path, 'tables', method(:file_open))
|
375
|
+
|
376
|
+
file_menu.addAction(@file_open_both)
|
377
|
+
file_menu.addAction(@file_close)
|
378
|
+
file_menu.addAction(@file_save)
|
379
|
+
file_menu.addAction(@file_save_as)
|
380
|
+
file_menu.addSeparator()
|
381
|
+
file_menu.addAction(@file_check)
|
382
|
+
file_menu.addAction(@file_hex)
|
383
|
+
file_menu.addAction(@file_report)
|
384
|
+
file_menu.addSeparator()
|
385
|
+
file_menu.addAction(@exit_action)
|
386
|
+
|
387
|
+
unless no_tables
|
388
|
+
table_menu = menuBar.addMenu(tr('&Table'))
|
389
|
+
table_menu.addAction(@table_check)
|
390
|
+
table_menu.addAction(@table_default)
|
391
|
+
table_menu.addAction(@table_hex)
|
392
|
+
table_menu.addSeparator()
|
393
|
+
table_menu.addAction(@table_save)
|
394
|
+
table_menu.addAction(@table_commit)
|
395
|
+
#table_menu.addAction(@table_update)
|
396
|
+
end
|
397
|
+
|
398
|
+
# Help Menu
|
399
|
+
@about_string = "TableManager is a generic binary file editor. "
|
400
|
+
@about_string << "It features a text file driven interface to define binary files and their preferred display type. "
|
401
|
+
@about_string << "This text file is then used to dynamically construct a spreadsheet type interface to "
|
402
|
+
@about_string << "allow easy editing of the underlying binary structure."
|
403
|
+
|
404
|
+
initialize_help_menu()
|
405
|
+
end
|
406
|
+
|
407
|
+
def initialize_central_widget
|
408
|
+
central_widget = Qt::Widget.new
|
409
|
+
setCentralWidget(central_widget)
|
410
|
+
top_layout = Qt::VBoxLayout.new(central_widget)
|
411
|
+
|
412
|
+
# Create the information pane with the filenames
|
413
|
+
filename_layout = Qt::FormLayout.new
|
414
|
+
@table_def_label = Qt::Label.new("")
|
415
|
+
filename_layout.addRow(tr("Definition File:"), @table_def_label)
|
416
|
+
@table_bin_label = Qt::Label.new("")
|
417
|
+
filename_layout.addRow(tr("Binary File:"), @table_bin_label)
|
418
|
+
top_layout.addLayout(filename_layout)
|
419
|
+
|
420
|
+
# Separator before editor
|
421
|
+
sep1 = Qt::Frame.new(central_widget)
|
422
|
+
sep1.setFrameStyle(Qt::Frame::HLine | Qt::Frame::Sunken)
|
423
|
+
top_layout.addWidget(sep1)
|
424
|
+
|
425
|
+
@tabbook = Qt::TabWidget.new
|
426
|
+
top_layout.addWidget(@tabbook)
|
427
|
+
|
428
|
+
@check_icons = []
|
429
|
+
@check_icons << Cosmos.get_icon("CheckBoxEmpty.gif")
|
430
|
+
@check_icons << Cosmos.get_icon("CheckBoxCheck.gif")
|
431
|
+
end
|
432
|
+
|
433
|
+
# Menu option to create a new table binary file based on a table definition file.
|
434
|
+
#
|
435
|
+
# @param def_path [String] Path to a directory containing definition files
|
436
|
+
def file_new(def_path)
|
437
|
+
return if abort_on_modified()
|
438
|
+
|
439
|
+
filenames = Qt::FileDialog.getOpenFileNames(self, "Open Binary Definition Text File(s)",
|
440
|
+
def_path, "Config File (*.txt)\nAll Files (*)")
|
441
|
+
return if filenames.length == 0 # User cancelled dialog
|
442
|
+
|
443
|
+
bin_path = bin_path_from_def_path(File.dirname(filenames[0]))
|
444
|
+
output_path = Qt::FileDialog.getExistingDirectory(self, "Select Output Directory", bin_path)
|
445
|
+
return unless output_path # User cancelled dialog
|
446
|
+
|
447
|
+
return if abort_on_check_for_existing(filenames, output_path)
|
448
|
+
|
449
|
+
success = false
|
450
|
+
bin_files = []
|
451
|
+
ProgressDialog.execute(self, 'Create New Files', 500, 50, true, false, false, false, false) do |dialog|
|
452
|
+
begin
|
453
|
+
filenames.each do |filename|
|
454
|
+
bin_files << @core.file_new(filename, output_path) do |progress|
|
455
|
+
dialog.set_overall_progress(progress)
|
456
|
+
end
|
457
|
+
end
|
458
|
+
success = true
|
459
|
+
dialog.close_done
|
460
|
+
rescue => err
|
461
|
+
Qt.execute_in_main_thread(true) {|| ExceptionDialog.new(self, err, "File New Errors", false)}
|
462
|
+
dialog.close_done
|
463
|
+
end
|
464
|
+
end
|
465
|
+
if success
|
466
|
+
file_close()
|
467
|
+
file_open(bin_files[0], filenames[0])
|
468
|
+
end
|
469
|
+
rescue TableManagerCore::CoreError => err
|
470
|
+
Qt::MessageBox.warning(self, "File New Errors", err.message)
|
471
|
+
rescue => err
|
472
|
+
ExceptionDialog.new(self, err, "File New Errors", false)
|
473
|
+
end
|
474
|
+
|
475
|
+
# Menu option that opens a binary file (and it's associated definition
|
476
|
+
# file) for display in the GUI.
|
477
|
+
#
|
478
|
+
# @param bin_path [String] Path to the binary file or a directory
|
479
|
+
# containing binary files
|
480
|
+
# @param def_path [String] Path to the definition file. If nil, the
|
481
|
+
# definition file will be looked up automatically.
|
482
|
+
# @param user_select_definition [Boolean] If true, the user will be
|
483
|
+
# required to select the definition file. It will not be automatically
|
484
|
+
# looked up.
|
485
|
+
def file_open(bin_path, def_path = nil, user_select_definition = false)
|
486
|
+
return if abort_on_modified()
|
487
|
+
|
488
|
+
if File.directory?(bin_path)
|
489
|
+
bin_path = Qt::FileDialog.getOpenFileName(self, "Open Binary", bin_path,
|
490
|
+
"Binary File (*.bin *.dat);;All Files (*)")
|
491
|
+
return unless bin_path
|
492
|
+
end
|
493
|
+
|
494
|
+
unless def_path
|
495
|
+
def_path = def_path_from_bin_path(bin_path)
|
496
|
+
def_path = get_best_def_path(def_path, bin_path) unless user_select_definition
|
497
|
+
end
|
498
|
+
if !def_path || !File.file?(def_path)
|
499
|
+
def_path = Qt::FileDialog.getOpenFileName(self, "Open Definition File", def_path,
|
500
|
+
"Definition File (*.txt);;All Files (*)")
|
501
|
+
end
|
502
|
+
return unless def_path
|
503
|
+
|
504
|
+
Qt::Application.setOverrideCursor(Qt::Cursor.new(Qt::WaitCursor))
|
505
|
+
begin
|
506
|
+
@core.file_open(bin_path, def_path)
|
507
|
+
rescue TableManagerCore::MismatchError => err
|
508
|
+
# Mismatch errors are recoverable so just warn the user
|
509
|
+
Qt::MessageBox.information(self, "Table Open Error", err.message)
|
510
|
+
end
|
511
|
+
@def_path = File.dirname(def_path)
|
512
|
+
@bin_path = File.dirname(bin_path)
|
513
|
+
display_all_gui_data()
|
514
|
+
@table_bin_label.text = bin_path
|
515
|
+
@table_def_label.text = def_path
|
516
|
+
Qt::Application.restoreOverrideCursor()
|
517
|
+
rescue TableManagerCore::CoreError => err
|
518
|
+
Qt::Application.restoreOverrideCursor()
|
519
|
+
Qt::MessageBox.warning(self, "File Open Errors", err.message)
|
520
|
+
rescue => err
|
521
|
+
Qt::Application.restoreOverrideCursor()
|
522
|
+
ExceptionDialog.new(self, err, "File Open Errors", false)
|
523
|
+
end
|
524
|
+
|
525
|
+
# Menu option to require the user to specify both the binary and the
|
526
|
+
# definition file to parse it
|
527
|
+
def file_open_both
|
528
|
+
file_open(@bin_path, nil, true)
|
529
|
+
end
|
530
|
+
|
531
|
+
# Menu option to close the open table
|
532
|
+
def file_close
|
533
|
+
return if abort_on_modified()
|
534
|
+
@core.reset
|
535
|
+
@table_bin_label.text = ''
|
536
|
+
@table_def_label.text = ''
|
537
|
+
reset_gui()
|
538
|
+
rescue TableManagerCore::CoreError => err
|
539
|
+
Qt::MessageBox.warning(self, "File Close Errors", err.message)
|
540
|
+
rescue => err
|
541
|
+
ExceptionDialog.new(self, err, "File Close Errors", false)
|
542
|
+
end
|
543
|
+
|
544
|
+
# Menu option to save the binary data to a file.
|
545
|
+
# It first commits the GUI data to the internal data structures and checks
|
546
|
+
# for errors. If none are found, it saves the data to the table binary file.
|
547
|
+
def file_save(save_as = false)
|
548
|
+
return unless file_check(false)
|
549
|
+
filename = @table_bin_label.text
|
550
|
+
if save_as
|
551
|
+
filename = Qt::FileDialog.getSaveFileName(self, "File Save", @table_bin_label.text,
|
552
|
+
"Binary File (*.bin *.dat);;All Files (*)")
|
553
|
+
return unless filename
|
554
|
+
@table_bin_label.text = filename
|
555
|
+
end
|
556
|
+
|
557
|
+
@core.file_save(filename)
|
558
|
+
@bin_path = File.dirname(filename)
|
559
|
+
|
560
|
+
display_all_gui_data()
|
561
|
+
@table_bin_label.text = filename
|
562
|
+
statusBar.showMessage(tr("File Saved Successfully"))
|
563
|
+
rescue TableManagerCore::CoreError, SaveError => err
|
564
|
+
Qt::MessageBox.warning(self, "File Save Errors", err.message)
|
565
|
+
rescue => err
|
566
|
+
ExceptionDialog.new(self, err, "File Save Errors", false)
|
567
|
+
end
|
568
|
+
|
569
|
+
# Menu option to check every table's values against their allowable ranges
|
570
|
+
#
|
571
|
+
# @param success_dialog [Boolean] Whether to display a dialog indicating
|
572
|
+
# success. If false simply return true.
|
573
|
+
# @return [Boolean] Whether the file check was successful
|
574
|
+
def file_check(success_dialog = true)
|
575
|
+
return false if abort_on_no_current_table()
|
576
|
+
save_all_gui_data()
|
577
|
+
Qt::MessageBox.information(self, "File Check", @core.file_check()) if success_dialog
|
578
|
+
true
|
579
|
+
rescue TableManagerCore::CoreError, SaveError => err
|
580
|
+
Qt::MessageBox.warning(self, "File Check Errors", err.message)
|
581
|
+
false
|
582
|
+
rescue => err
|
583
|
+
ExceptionDialog.new(self, err, "Unknown File Check Errors", false)
|
584
|
+
false
|
585
|
+
end
|
586
|
+
|
587
|
+
# Menu option to create a text file report of all the table data
|
588
|
+
def file_report
|
589
|
+
return unless file_check(false)
|
590
|
+
report_path = @core.file_report(@table_bin_label.text, @table_def_label.text)
|
591
|
+
|
592
|
+
dialog = Qt::Dialog.new(self, Qt::WindowTitleHint | Qt::WindowSystemMenuHint)
|
593
|
+
dialog.setWindowTitle("File Report")
|
594
|
+
dialog_layout = Qt::VBoxLayout.new
|
595
|
+
dialog_layout.addWidget(Qt::Label.new("Report file created: #{report_path}"))
|
596
|
+
button_layout = Qt::HBoxLayout.new
|
597
|
+
ok_button = Qt::PushButton.new('&Ok')
|
598
|
+
ok_button.connect(SIGNAL('clicked()')) { dialog.accept }
|
599
|
+
ok_button.setEnabled(true)
|
600
|
+
button_layout.addWidget(ok_button)
|
601
|
+
button_layout.addStretch(1)
|
602
|
+
open_button = Qt::PushButton.new('Open in &Editor')
|
603
|
+
open_button.connect(SIGNAL('clicked()')) { Cosmos.open_in_text_editor(report_path) }
|
604
|
+
button_layout.addWidget(open_button)
|
605
|
+
if Kernel.is_windows?
|
606
|
+
open_excel_button = Qt::PushButton.new('Open in E&xcel')
|
607
|
+
open_excel_button.connect(SIGNAL('clicked()')) { system("start Excel.exe \"#{report_path}\"") }
|
608
|
+
button_layout.addWidget(open_excel_button)
|
609
|
+
end
|
610
|
+
dialog_layout.addLayout(button_layout)
|
611
|
+
dialog.setLayout(dialog_layout)
|
612
|
+
dialog.exec
|
613
|
+
rescue TableManagerCore::CoreError, SaveError => err
|
614
|
+
Qt::MessageBox.warning(self, "File Report Errors", err.message)
|
615
|
+
rescue => err
|
616
|
+
ExceptionDialog.new(self, err, "File Report Errors", false)
|
617
|
+
end
|
618
|
+
|
619
|
+
# Menu option to display a dialog containing a hex dump of all table values
|
620
|
+
def display_hex(type)
|
621
|
+
return if abort_on_no_current_table()
|
622
|
+
dialog = HexDumpDialog.new(self)
|
623
|
+
if type == :file
|
624
|
+
str = @core.file_hex()
|
625
|
+
title = File.basename(@table_bin_label.text)
|
626
|
+
else # :table
|
627
|
+
str = @core.table_hex(current_table_name)
|
628
|
+
title = current_table_name
|
629
|
+
end
|
630
|
+
dialog.set_title_and_text("#{title} Hex Dump", str)
|
631
|
+
dialog.exec
|
632
|
+
dialog.dispose
|
633
|
+
rescue TableManagerCore::CoreError => err
|
634
|
+
Qt::MessageBox.warning(self, "Display Hex Errors", err.message)
|
635
|
+
rescue => err
|
636
|
+
ExceptionDialog.new(self, err, "Display Hex Errors", false)
|
637
|
+
end
|
638
|
+
|
639
|
+
# Menu option to check the table values against their allowable ranges
|
640
|
+
def table_check
|
641
|
+
return if abort_on_no_current_table()
|
642
|
+
save_gui_data(current_table_name)
|
643
|
+
result = @core.table_check(current_table_name)
|
644
|
+
if result.empty?
|
645
|
+
result = "All parameters are within their constraints."
|
646
|
+
end
|
647
|
+
Qt::MessageBox.information(self, "Table Check", result)
|
648
|
+
rescue TableManagerCore::CoreError, SaveError => err
|
649
|
+
Qt::MessageBox.warning(self, "Table Check Errors", err.message)
|
650
|
+
rescue => err
|
651
|
+
ExceptionDialog.new(self, err, "Table Check Errors", false)
|
652
|
+
end
|
653
|
+
|
654
|
+
# Menu option to set all the table items to their default values
|
655
|
+
def table_default
|
656
|
+
return if abort_on_no_current_table()
|
657
|
+
@core.table_default(current_table_name)
|
658
|
+
set_table_modified(true)
|
659
|
+
display_gui_data(current_table_name)
|
660
|
+
rescue TableManagerCore::CoreError, DisplayError => err
|
661
|
+
Qt::MessageBox.warning(self, "Table Default Errors", err.message)
|
662
|
+
rescue => err
|
663
|
+
ExceptionDialog.new(self, err, "Table Default Errors", false)
|
664
|
+
end
|
665
|
+
|
666
|
+
# Menu option to save the currently displayed table as a stand alone binary file
|
667
|
+
def table_save
|
668
|
+
return if abort_on_no_current_table()
|
669
|
+
save_gui_data(current_table_name)
|
670
|
+
filename = File.join(@bin_path, "#{current_table_name.split.collect(&:capitalize).join}Table.dat")
|
671
|
+
filename = Qt::FileDialog.getSaveFileName(self, "File Save", filename,
|
672
|
+
"Binary File (*.bin *.dat);;All Files (*)")
|
673
|
+
return unless filename
|
674
|
+
@core.table_save(current_table_name, filename)
|
675
|
+
rescue TableManagerCore::CoreError, SaveError => err
|
676
|
+
Qt::MessageBox.warning(self, "Table Save Errors", err.message)
|
677
|
+
rescue => err
|
678
|
+
ExceptionDialog.new(self, err, "Table Save Errors", false)
|
679
|
+
end
|
680
|
+
|
681
|
+
# Menu option to save the currently displayed table to an existing table binary file
|
682
|
+
# containing that table.
|
683
|
+
def table_commit
|
684
|
+
return if abort_on_no_current_table()
|
685
|
+
return if abort_on_modified()
|
686
|
+
save_gui_data(current_table_name)
|
687
|
+
|
688
|
+
bin_path = Qt::FileDialog.getOpenFileName(self, "Open Binary", @bin_path,
|
689
|
+
"Binary File (*.bin *.dat);;All Files (*)")
|
690
|
+
return unless bin_path
|
691
|
+
def_path = def_path_from_bin_path(bin_path)
|
692
|
+
def_path = get_best_def_path(def_path, bin_path)
|
693
|
+
if !def_path || !File.file?(def_path)
|
694
|
+
def_path = Qt::FileDialog.getOpenFileName(self, "Open Definition File", def_path,
|
695
|
+
"Definition File (*.txt);;All Files (*)")
|
696
|
+
end
|
697
|
+
return unless def_path
|
698
|
+
|
699
|
+
@core.table_commit(current_table_name, bin_path, def_path)
|
700
|
+
rescue TableManagerCore::CoreError, SaveError, DisplayError => err
|
701
|
+
Qt::MessageBox.warning(self, "Table Commit Errors", err.message)
|
702
|
+
rescue => err
|
703
|
+
ExceptionDialog.new(self, err, "Table Commit Errors", false)
|
704
|
+
end
|
705
|
+
|
706
|
+
def current_table_name
|
707
|
+
@tabbook.current_name
|
708
|
+
end
|
709
|
+
|
710
|
+
# Saves all the information in the given gui table name to the underlying
|
711
|
+
# binary structure (although it does not commit it to disk).
|
712
|
+
def save_gui_data(name)
|
713
|
+
table = @core.config.table(name)
|
714
|
+
gui_table = @tabbook.tab(name)
|
715
|
+
return unless table && gui_table
|
716
|
+
|
717
|
+
result = ""
|
718
|
+
|
719
|
+
# First go through the gui and set the underlying data to what is displayed
|
720
|
+
(0...table.num_rows).each do |r|
|
721
|
+
(0...table.num_columns).each do |c|
|
722
|
+
if table.type == :TWO_DIMENSIONAL
|
723
|
+
item = table.get_item("#{gui_table.horizontalHeaderItem(c).text}#{r}")
|
724
|
+
else # table is ONE_DIMENSIONAL
|
725
|
+
item = table.get_item(gui_table.verticalHeaderItem(r).text)
|
726
|
+
end
|
727
|
+
next if item.hidden
|
728
|
+
|
729
|
+
begin
|
730
|
+
value = get_item_value(item, gui_table.item(r, c))
|
731
|
+
|
732
|
+
# If there is a read conversion we first read the converted value before writing.
|
733
|
+
# This is to prevent writing the displayed value (which has the conversion applied)
|
734
|
+
# back to the binary data if they are already equal.
|
735
|
+
if item.read_conversion
|
736
|
+
converted = table.read(item.name, :CONVERTED)
|
737
|
+
table.write(item.name, value) if converted != value
|
738
|
+
else
|
739
|
+
table.write(item.name, value)
|
740
|
+
end
|
741
|
+
if item.range && !item.range.include?(table.read(item.name, :RAW))
|
742
|
+
if gui_table.item(r, c).text.upcase.start_with?("0X") # display as hex
|
743
|
+
min = "0x#{item.range.min.to_s(16).upcase}"
|
744
|
+
max = "0x#{item.range.max.to_s(16).upcase}"
|
745
|
+
else
|
746
|
+
min = item.range.min
|
747
|
+
max = item.range.max
|
748
|
+
end
|
749
|
+
raise "out of range. Minimum is #{min}. Maximum is #{max}"
|
750
|
+
end
|
751
|
+
|
752
|
+
# if we have a problem casting the value it probably means the user put in garbage
|
753
|
+
# in this case force the range check to fail
|
754
|
+
rescue => error
|
755
|
+
text = gui_table.item(r, c).text
|
756
|
+
if text.upcase.start_with?("0X") # display as hex
|
757
|
+
default = "0x#{item.default.to_s(16).upcase}"
|
758
|
+
else
|
759
|
+
default = item.default
|
760
|
+
end
|
761
|
+
result << "Error saving #{item.name} value of #{text} due to #{error.message}. Default value is #{default}.\n\n"
|
762
|
+
end
|
763
|
+
end # end each table column
|
764
|
+
end # end each table row
|
765
|
+
raise SaveError, result unless result.empty?
|
766
|
+
end
|
767
|
+
|
768
|
+
def closeEvent(event)
|
769
|
+
if abort_on_modified()
|
770
|
+
event.ignore()
|
771
|
+
else
|
772
|
+
super(event)
|
773
|
+
end
|
774
|
+
end
|
775
|
+
|
776
|
+
protected
|
777
|
+
|
778
|
+
# Determine the binary directory path given the definition directory path
|
779
|
+
#
|
780
|
+
# @param def_path [String] Path to the definition directory
|
781
|
+
def bin_path_from_def_path(def_path)
|
782
|
+
if def_path.include?('targets') # target directory path
|
783
|
+
bin_path = File.expand_path(File.join(def_path, '..', '..', 'tables'))
|
784
|
+
else
|
785
|
+
bin_path = @system_bin_path
|
786
|
+
end
|
787
|
+
end
|
788
|
+
|
789
|
+
# Determine the definition directory path given the binary directory path
|
790
|
+
#
|
791
|
+
# @param bin_path [String] Path to the binary directory
|
792
|
+
def def_path_from_bin_path(bin_path)
|
793
|
+
if bin_path.include?('targets') # target directory path
|
794
|
+
def_path = File.expand_path(File.join(File.dirname(bin_path), '..', 'tools', 'table_manager'))
|
795
|
+
else
|
796
|
+
def_path = @system_def_path
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
800
|
+
# Looks in a directory for a definition file for the given binary file.
|
801
|
+
# The definition file name up to the _def.txt must be fully contained in
|
802
|
+
# the given binary file. For example: XXX_YYY1_def.txt will be returned for
|
803
|
+
# a binary file name of XXX_YYY1_Extra.bin. A binary file of XXX_YYY2.bin
|
804
|
+
# will not match.
|
805
|
+
#
|
806
|
+
# @param def_path [String] Path to the definition files
|
807
|
+
# @param bin_path [String] Path to the binary file
|
808
|
+
# @return [String|nil] Path to the best definition file or nil
|
809
|
+
def get_best_def_path(def_path, bin_path)
|
810
|
+
return nil unless (File.exist?(def_path) && File.exist?(bin_path))
|
811
|
+
bin_path = File.basename(bin_path).split('.')[0]
|
812
|
+
def_file = nil
|
813
|
+
|
814
|
+
Dir.foreach(def_path) do |possible_def_file|
|
815
|
+
# only bother checking definition files
|
816
|
+
index = possible_def_file.index('_def.txt')
|
817
|
+
next unless index
|
818
|
+
|
819
|
+
base_name = possible_def_file[0...index]
|
820
|
+
if bin_path.index(base_name)
|
821
|
+
# If we've already found a def_file and now found another match we
|
822
|
+
# clear the first and stop the search. Force the user to decide.
|
823
|
+
if def_file
|
824
|
+
def_file = nil
|
825
|
+
break
|
826
|
+
end
|
827
|
+
def_file = File.join(def_path, possible_def_file)
|
828
|
+
end
|
829
|
+
end
|
830
|
+
# Return the original path if we couldn't find anything
|
831
|
+
def_file = def_path unless def_file
|
832
|
+
def_file
|
833
|
+
end
|
834
|
+
|
835
|
+
def abort_on_check_for_existing(filenames, output_path)
|
836
|
+
user_abort = false
|
837
|
+
filenames.each do |def_file|
|
838
|
+
if File.basename(def_file) =~ /_def\.txt/
|
839
|
+
basename = File.basename(def_file)[0...-8] # Get the basename without the _def.txt
|
840
|
+
else
|
841
|
+
basename = File.basename(def_file).split('.')[0...-1].join('.') # Get the basename without the extension
|
842
|
+
end
|
843
|
+
|
844
|
+
output_filename = File.join(output_path, "#{basename}.dat")
|
845
|
+
if abort_on_existing_file(output_filename)
|
846
|
+
user_abort = true
|
847
|
+
break # No need to continue processing
|
848
|
+
end
|
849
|
+
end
|
850
|
+
user_abort
|
851
|
+
end
|
852
|
+
|
853
|
+
def abort_on_existing_file(filename)
|
854
|
+
user_abort = false
|
855
|
+
if File.exist?(filename)
|
856
|
+
result = Qt::MessageBox.question(self, "File New",
|
857
|
+
"#{filename} already exists. Overwrite?",
|
858
|
+
Qt::MessageBox::Yes | Qt::MessageBox::No, Qt::MessageBox::Yes)
|
859
|
+
if result != Qt::MessageBox::Yes
|
860
|
+
user_abort = true
|
861
|
+
end
|
862
|
+
end
|
863
|
+
user_abort
|
864
|
+
end
|
865
|
+
|
866
|
+
def abort_on_modified
|
867
|
+
user_abort = false
|
868
|
+
if self.windowTitle.include?("*")
|
869
|
+
result = Qt::MessageBox.warning(self, "Table Modified",
|
870
|
+
"Table has been modified. Continue and discard all changes?",
|
871
|
+
Qt::MessageBox::Yes | Qt::MessageBox::No, Qt::MessageBox::No)
|
872
|
+
if result != Qt::MessageBox::Yes
|
873
|
+
user_abort = true
|
874
|
+
end
|
875
|
+
end
|
876
|
+
user_abort
|
877
|
+
end
|
878
|
+
|
879
|
+
def abort_on_no_current_table
|
880
|
+
user_abort = false
|
881
|
+
unless current_table_name
|
882
|
+
Qt::MessageBox.information(self, "No current table", "Please open a table.")
|
883
|
+
user_abort = true
|
884
|
+
end
|
885
|
+
user_abort
|
886
|
+
end
|
887
|
+
|
888
|
+
# Delete all the tabs in the table manager gui and initialize globals to
|
889
|
+
# prepare for the next table to load.
|
890
|
+
def reset_gui
|
891
|
+
set_table_modified(false)
|
892
|
+
@tabbook.tabs.each_with_index do |tab, index|
|
893
|
+
tab.dispose
|
894
|
+
@tabbook.removeTab(index)
|
895
|
+
end
|
896
|
+
end
|
897
|
+
|
898
|
+
def save_all_gui_data
|
899
|
+
result = ''
|
900
|
+
@core.config.tables.each do |table_name, table|
|
901
|
+
begin
|
902
|
+
save_gui_data(table_name)
|
903
|
+
rescue SaveError => err
|
904
|
+
result << "\nErrors in #{table_name}:\n#{err.message}"
|
905
|
+
end
|
906
|
+
end
|
907
|
+
raise SaveError, result.lstrip unless result.empty?
|
908
|
+
end
|
909
|
+
|
910
|
+
def display_all_gui_data
|
911
|
+
reset_gui()
|
912
|
+
@core.config.tables.each do |table_name, table|
|
913
|
+
create_table_tab(table)
|
914
|
+
display_gui_data(table_name)
|
915
|
+
end
|
916
|
+
end
|
917
|
+
|
918
|
+
def display_gui_data(table_name)
|
919
|
+
table = @core.config.table(table_name)
|
920
|
+
gui_table = @tabbook.tab(table_name)
|
921
|
+
return unless table && gui_table
|
922
|
+
|
923
|
+
gui_table.blockSignals(true) # block signals while we programatically update it
|
924
|
+
# Cancel any table selections so the text will be visible when it is refreshed
|
925
|
+
gui_table.clearSelection
|
926
|
+
|
927
|
+
set_table_headers(table, gui_table)
|
928
|
+
|
929
|
+
row = 0
|
930
|
+
column = 0
|
931
|
+
table.sorted_items.each do |item|
|
932
|
+
next if item.hidden
|
933
|
+
update_gui_item(table_name, table, gui_table, item, row, column)
|
934
|
+
|
935
|
+
if table.type == :TWO_DIMENSIONAL
|
936
|
+
# only increment our row when we've processed all the columns
|
937
|
+
if column == table.num_columns - 1
|
938
|
+
row += 1
|
939
|
+
column = 0
|
940
|
+
else
|
941
|
+
column += 1
|
942
|
+
end
|
943
|
+
else
|
944
|
+
row += 1
|
945
|
+
end
|
946
|
+
end
|
947
|
+
|
948
|
+
gui_table.resizeColumnsToContents()
|
949
|
+
gui_table.resizeRowsToContents()
|
950
|
+
gui_table.blockSignals(false)
|
951
|
+
end
|
952
|
+
|
953
|
+
# Updates the table by setting the value in the table to the properly formatted value.
|
954
|
+
def update_gui_item(table_name, table, gui_table, item, row, column)
|
955
|
+
value = table.read(item.name, :FORMATTED)
|
956
|
+
# Handle binary strings
|
957
|
+
value = "0x" + value.simple_formatted unless value.is_printable?
|
958
|
+
|
959
|
+
if item.states && item.states.keys.sort == %w(CHECKED UNCHECKED)
|
960
|
+
table_item = create_checkable_table_item(item, value)
|
961
|
+
else
|
962
|
+
table_item = create_table_item(item, value)
|
963
|
+
end
|
964
|
+
gui_table.setItem(row, column, table_item)
|
965
|
+
end
|
966
|
+
|
967
|
+
def get_item_value(item, gui_item)
|
968
|
+
value = nil
|
969
|
+
if (gui_item.flags & Qt::ItemIsUserCheckable) != 0
|
970
|
+
check_state = gui_item.checkState
|
971
|
+
case check_state
|
972
|
+
when Qt::Checked
|
973
|
+
value = item.states["CHECKED"]
|
974
|
+
when Qt::Unchecked
|
975
|
+
value = item.states["UNCHECKED"]
|
976
|
+
when Qt::PartiallyChecked
|
977
|
+
value = gui_item.text # convert_to_value?
|
978
|
+
end
|
979
|
+
else
|
980
|
+
if (item.data_type == :STRING || item.data_type == :BLOCK) && gui_item.text.upcase.start_with?("0X")
|
981
|
+
value = gui_item.text.hex_to_byte_string
|
982
|
+
else
|
983
|
+
text = gui_item.text
|
984
|
+
quotes_removed = text.remove_quotes
|
985
|
+
if text == quotes_removed
|
986
|
+
value = text.convert_to_value
|
987
|
+
else
|
988
|
+
value = quotes_removed
|
989
|
+
end
|
990
|
+
end
|
991
|
+
end
|
992
|
+
value
|
993
|
+
end
|
994
|
+
|
995
|
+
def set_table_modified(modified)
|
996
|
+
title = modified ? "#{@app_title} *" : @app_title
|
997
|
+
self.setWindowTitle(title)
|
998
|
+
end
|
999
|
+
|
1000
|
+
def table_item_changed(table_item)
|
1001
|
+
set_table_modified(true)
|
1002
|
+
# If there is a checkbox value that contains a value that doesn't map to
|
1003
|
+
# the checked or unchecked state, that value is displayed next to the
|
1004
|
+
# "PartiallyChecked" checkbox. Once the user clicks to check or uncheck,
|
1005
|
+
# the original value will disappear due to the following code:
|
1006
|
+
table = @core.config.table(current_table_name)
|
1007
|
+
gui_table = @tabbook.tab(current_table_name)
|
1008
|
+
if table.type == :TWO_DIMENSIONAL
|
1009
|
+
item_name = gui_table.horizontalHeaderItem(table_item.column).text + table_item.row.to_s
|
1010
|
+
else
|
1011
|
+
item_name = gui_table.verticalHeaderItem(table_item.row).text
|
1012
|
+
end
|
1013
|
+
item = table.get_item(item_name)
|
1014
|
+
if item.states && item.states.keys.sort == %w(CHECKED UNCHECKED)
|
1015
|
+
table_item.setText('')
|
1016
|
+
end
|
1017
|
+
end
|
1018
|
+
|
1019
|
+
def set_table_headers(table, gui_table)
|
1020
|
+
items = table.sorted_items
|
1021
|
+
if table.type == :TWO_DIMENSIONAL
|
1022
|
+
row_headers = []
|
1023
|
+
(0...table.num_rows).each {|i| row_headers << "#{i + 1}" }
|
1024
|
+
gui_table.setVerticalHeaderLabels(row_headers)
|
1025
|
+
|
1026
|
+
column_headers = []
|
1027
|
+
(0...table.num_columns).each {|i| column_headers << items[i].name[0...-1] unless items[i].hidden }
|
1028
|
+
gui_table.setHorizontalHeaderLabels(column_headers)
|
1029
|
+
else
|
1030
|
+
row_headers = []
|
1031
|
+
items.each {|item| row_headers << item.name unless item.hidden }
|
1032
|
+
gui_table.setVerticalHeaderLabels(row_headers)
|
1033
|
+
gui_table.setHorizontalHeaderLabels(["Value"])
|
1034
|
+
end
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
def create_checkable_table_item(item, value)
|
1038
|
+
table_item = Qt::TableWidgetItem.new()
|
1039
|
+
if item.editable
|
1040
|
+
table_item.setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable | Qt::ItemIsTristate)
|
1041
|
+
else
|
1042
|
+
table_item.setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsTristate)
|
1043
|
+
end
|
1044
|
+
if value == "CHECKED"
|
1045
|
+
table_item.setCheckState(Qt::Checked)
|
1046
|
+
elsif value == "UNCHECKED"
|
1047
|
+
table_item.setCheckState(Qt::Unchecked)
|
1048
|
+
else # The value doesn't match our defined states
|
1049
|
+
table_item.setText(value) # Display the actual value
|
1050
|
+
table_item.setCheckState(Qt::PartiallyChecked) # Mark it partial since we can't tell
|
1051
|
+
end
|
1052
|
+
table_item
|
1053
|
+
end
|
1054
|
+
|
1055
|
+
def create_table_item(item, value)
|
1056
|
+
table_item = Qt::TableWidgetItem.new(value)
|
1057
|
+
if item.editable
|
1058
|
+
table_item.setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable)
|
1059
|
+
else
|
1060
|
+
table_item.setFlags(Qt::NoItemFlags)
|
1061
|
+
end
|
1062
|
+
table_item
|
1063
|
+
end
|
1064
|
+
|
1065
|
+
def context_menu(point)
|
1066
|
+
begin
|
1067
|
+
table = @core.config.table(current_table_name)
|
1068
|
+
gui_table = @tabbook.tab(current_table_name)
|
1069
|
+
if table && gui_table
|
1070
|
+
table_item = gui_table.itemAt(point)
|
1071
|
+
if table_item
|
1072
|
+
menu = Qt::Menu.new()
|
1073
|
+
|
1074
|
+
if table.type == :TWO_DIMENSIONAL
|
1075
|
+
item_name = gui_table.horizontalHeaderItem(table_item.column).text + table_item.row.to_s
|
1076
|
+
else
|
1077
|
+
item_name = gui_table.verticalHeaderItem(table_item.row).text
|
1078
|
+
end
|
1079
|
+
details_action = Qt::Action.new(tr("Details"), self)
|
1080
|
+
details_action.statusTip = tr("Popup details about #{current_table_name} #{item_name}")
|
1081
|
+
details_action.connect(SIGNAL('triggered()')) do
|
1082
|
+
TlmDetailsDialog.new(nil,
|
1083
|
+
'TABLE',
|
1084
|
+
current_table_name.upcase,
|
1085
|
+
item_name,
|
1086
|
+
table)
|
1087
|
+
end
|
1088
|
+
menu.addAction(details_action)
|
1089
|
+
|
1090
|
+
default_action = Qt::Action.new(tr("Default"), self)
|
1091
|
+
default_action.statusTip = tr("Set item to default value")
|
1092
|
+
default_action.connect(SIGNAL('triggered()')) do
|
1093
|
+
item = table.get_item(item_name)
|
1094
|
+
table.write(item.name, item.default)
|
1095
|
+
update_gui_item(current_table_name, table, gui_table, item, table_item.row, table_item.column)
|
1096
|
+
end
|
1097
|
+
menu.addAction(default_action)
|
1098
|
+
|
1099
|
+
global_point = gui_table.mapToGlobal(point)
|
1100
|
+
global_point.x += gui_table.verticalHeader.width
|
1101
|
+
menu.exec(global_point)
|
1102
|
+
menu.dispose
|
1103
|
+
end
|
1104
|
+
end
|
1105
|
+
rescue => err
|
1106
|
+
ExceptionDialog.new(self, err, "context_menu Errors", false)
|
1107
|
+
end
|
1108
|
+
end
|
1109
|
+
|
1110
|
+
# Creates a tab in the table manager gui
|
1111
|
+
#
|
1112
|
+
# @param table [Table] Table to display
|
1113
|
+
def create_table_tab(table)
|
1114
|
+
@table = Qt::TableWidget.new(self)
|
1115
|
+
delegate = ComboBoxItemDelegate.new(@table)
|
1116
|
+
@table.setItemDelegate(delegate)
|
1117
|
+
@table.setEditTriggers(Qt::AbstractItemView::AllEditTriggers)
|
1118
|
+
@table.setSelectionMode(Qt::AbstractItemView::NoSelection)
|
1119
|
+
#@table.setAlternatingRowColors(true)
|
1120
|
+
@tabbook.addTab(@table, table.table_name)
|
1121
|
+
|
1122
|
+
@table.setRowCount(table.num_rows)
|
1123
|
+
@table.setColumnCount(table.num_columns)
|
1124
|
+
@table.setMouseTracking(true)
|
1125
|
+
@table.connect(SIGNAL('cellEntered(int, int)')) {|row, col| mouse_over(row, col) }
|
1126
|
+
@table.connect(SIGNAL('itemChanged(QTableWidgetItem*)')) {|item| table_item_changed(item) }
|
1127
|
+
@table.setContextMenuPolicy(Qt::CustomContextMenu)
|
1128
|
+
@table.connect(SIGNAL('customContextMenuRequested(const QPoint&)')) {|point| context_menu(point) }
|
1129
|
+
rescue => err
|
1130
|
+
ExceptionDialog.new(self, err, "Create New Table Tab Errors", false)
|
1131
|
+
end
|
1132
|
+
|
1133
|
+
def mouse_over(row, col)
|
1134
|
+
return unless current_table_name
|
1135
|
+
table = @core.config.table(current_table_name)
|
1136
|
+
gui_table = @tabbook.tab(current_table_name)
|
1137
|
+
if table && gui_table
|
1138
|
+
if table.type == :TWO_DIMENSIONAL
|
1139
|
+
item_name = gui_table.horizontalHeaderItem(col).text + row.to_s
|
1140
|
+
item = table.get_item(item_name)
|
1141
|
+
statusBar.showMessage(item.description)
|
1142
|
+
else
|
1143
|
+
item_name = gui_table.verticalHeaderItem(row).text
|
1144
|
+
item = table.get_item(item_name)
|
1145
|
+
statusBar.showMessage(item.description)
|
1146
|
+
end
|
1147
|
+
end
|
1148
|
+
rescue
|
1149
|
+
statusBar.showMessage('')
|
1150
|
+
end
|
1151
|
+
end
|
1152
|
+
end
|