cosmos 4.3.0-java → 4.4.0-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.
Files changed (288) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  4. data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
  5. data/.gitignore +1 -0
  6. data/.travis.yml +5 -5
  7. data/Manifest.txt +81 -44
  8. data/Rakefile +9 -0
  9. data/appveyor.yml +2 -1
  10. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  11. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  12. data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
  13. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  14. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  15. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  16. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  17. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  18. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  19. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  20. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  21. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  22. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  23. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
  24. data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
  25. data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
  26. data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
  27. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  28. data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
  29. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  30. data/autohotkey/tools/limits_monitor.ahk +1 -1
  31. data/autohotkey/tools/packet_viewer.ahk +1 -1
  32. data/autohotkey/tools/script_runner.ahk +16 -4
  33. data/bin/cosmos +1 -1
  34. data/bin/xtce_converter +1 -1
  35. data/cosmos.gemspec +5 -7
  36. data/data/config/_interfaces.yaml +4 -0
  37. data/data/config/cmd_sequence.yaml +14 -0
  38. data/data/config/housekeeping_params.yaml +14 -0
  39. data/data/config/interface_modifiers.yaml +11 -0
  40. data/data/config/item_modifiers.yaml +2 -1
  41. data/data/config/launcher.yaml +12 -2
  42. data/data/config/param_item_modifiers.yaml +2 -2
  43. data/data/config/parameter_modifiers.yaml +20 -0
  44. data/data/config/screen.yaml +2 -0
  45. data/data/config/script_runner.yaml +9 -0
  46. data/data/config/system.yaml +47 -10
  47. data/data/config/table_manager.yaml +7 -0
  48. data/data/config/target.yaml +12 -0
  49. data/data/config/telemetry_modifiers.yaml +3 -1
  50. data/data/config/test_runner.yaml +10 -9
  51. data/data/config/widgets.yaml +174 -11
  52. data/data/crc.txt +128 -125
  53. data/demo/Gemfile +1 -1
  54. data/demo/Launcher.bat +1 -9
  55. data/demo/Launcher2.bat +1 -0
  56. data/demo/LauncherMini.bat +1 -0
  57. data/demo/config/data/crc.txt +40 -20
  58. data/demo/config/system/system.txt +1 -1
  59. data/demo/config/system/system_alt_ports.txt +1 -1
  60. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
  61. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +2 -1
  62. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +7 -7
  63. data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
  64. data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
  65. data/demo/config/targets/INST/screens/adcs.txt +2 -2
  66. data/demo/config/targets/INST/screens/block.txt +1 -1
  67. data/demo/config/targets/INST/screens/commanding.txt +1 -1
  68. data/demo/config/targets/INST/screens/ground.txt +27 -5
  69. data/demo/config/targets/INST/screens/ground_error.gif +0 -0
  70. data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
  71. data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
  72. data/demo/config/targets/INST/screens/limits.txt +69 -31
  73. data/demo/config/targets/INST/screens/other.txt +13 -3
  74. data/demo/config/targets/INST/screens/params.txt +54 -0
  75. data/demo/config/targets/INST/screens/satellite.gif +0 -0
  76. data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
  77. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  78. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  79. data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  80. data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  81. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  82. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  83. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  84. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  85. data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  86. data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  87. data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  88. data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  89. data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  90. data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  91. data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  92. data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  93. data/demo/config/tools/script_runner/script_runner.txt +1 -2
  94. data/demo/config/tools/test_runner/test_runner.txt +3 -1
  95. data/demo/lib/example_background_task.rb +1 -0
  96. data/demo/procedures/cosmos_api_test.rb +1 -1
  97. data/demo/procedures/interactive.rb +22 -0
  98. data/ext/cosmos/ext/packet/packet.c +0 -77
  99. data/install/Gemfile +1 -1
  100. data/install/Launcher.bat +1 -9
  101. data/install/config/data/crc.txt +17 -1
  102. data/install/config/system/system.txt +1 -1
  103. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  104. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  105. data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  106. data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  107. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  108. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  109. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  110. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  111. data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  112. data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  113. data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  114. data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  115. data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  116. data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  117. data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  118. data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  119. data/lib/cosmos/config/config_parser.rb +4 -5
  120. data/lib/cosmos/dart/lib/dart_common.rb +1 -1
  121. data/lib/cosmos/gui/dialogs/details_dialog.rb +16 -1
  122. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -0
  123. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
  124. data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
  125. data/lib/cosmos/gui/qt.rb +3 -1
  126. data/lib/cosmos/gui/qt_tool.rb +46 -23
  127. data/lib/cosmos/gui/text/ruby_editor.rb +44 -41
  128. data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
  129. data/lib/cosmos/gui/utilities/script_module_gui.rb +92 -92
  130. data/lib/cosmos/interfaces.rb +1 -0
  131. data/lib/cosmos/interfaces/interface.rb +5 -1
  132. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
  133. data/lib/cosmos/interfaces/protocols/template_protocol.rb +6 -1
  134. data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
  135. data/lib/cosmos/io/json_drb.rb +11 -7
  136. data/lib/cosmos/packets/commands.rb +28 -11
  137. data/lib/cosmos/packets/packet.rb +69 -32
  138. data/lib/cosmos/packets/packet_config.rb +34 -1
  139. data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
  140. data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
  141. data/lib/cosmos/packets/parsers/xtce_parser.rb +4 -3
  142. data/lib/cosmos/packets/structure.rb +4 -2
  143. data/lib/cosmos/packets/telemetry.rb +19 -3
  144. data/lib/cosmos/script/api_shared.rb +12 -9
  145. data/lib/cosmos/script/scripting.rb +16 -14
  146. data/lib/cosmos/system/system.rb +39 -20
  147. data/lib/cosmos/system/target.rb +39 -9
  148. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +94 -35
  149. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +3 -0
  150. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +1 -1
  151. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
  152. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +30 -4
  153. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +1 -0
  154. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +9 -12
  155. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +5 -2
  156. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
  157. data/lib/cosmos/tools/config_editor/config_editor.rb +80 -24
  158. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +2 -0
  159. data/lib/cosmos/tools/data_viewer/data_viewer.rb +15 -9
  160. data/lib/cosmos/tools/data_viewer/dump_component.rb +2 -9
  161. data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
  162. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +64 -38
  163. data/lib/cosmos/tools/launcher/launcher.rb +1 -0
  164. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -17
  165. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +8 -6
  166. data/lib/cosmos/tools/script_runner/script_runner.rb +87 -29
  167. data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
  168. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +41 -7
  169. data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
  170. data/lib/cosmos/tools/table_manager/table_manager.rb +6 -3
  171. data/lib/cosmos/tools/test_runner/test_runner.rb +14 -9
  172. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +21 -9
  173. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  174. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
  175. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +11 -8
  176. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +9 -15
  177. data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -1
  178. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +19 -13
  179. data/lib/cosmos/tools/tlm_viewer/widgets.rb +2 -0
  180. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
  181. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
  182. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
  183. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
  184. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
  185. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
  186. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +1 -1
  187. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
  188. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
  189. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
  190. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
  191. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
  192. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
  193. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
  194. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
  195. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
  196. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
  197. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
  198. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
  199. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
  200. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
  201. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
  202. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
  203. data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
  204. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
  205. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
  206. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
  207. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
  208. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
  209. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
  210. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
  211. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
  212. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
  213. data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
  214. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
  215. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
  216. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
  217. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
  218. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
  219. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
  220. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
  221. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
  222. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
  223. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
  224. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
  225. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
  226. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
  227. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
  228. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
  229. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
  230. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
  231. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
  232. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
  233. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +2 -7
  234. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
  235. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
  236. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
  237. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
  238. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
  239. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
  240. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
  241. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
  242. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
  243. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
  244. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +54 -46
  245. data/lib/cosmos/top_level.rb +23 -12
  246. data/lib/cosmos/version.rb +4 -4
  247. data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
  248. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  249. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  250. data/spec/install/yaml_docs_spec.rb +112 -0
  251. data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
  252. data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
  253. data/spec/packets/commands_spec.rb +22 -0
  254. data/spec/packets/packet_config_spec.rb +24 -0
  255. data/spec/packets/packet_item_spec.rb +2 -2
  256. data/spec/packets/packet_spec.rb +39 -6
  257. data/spec/packets/parsers/state_parser_spec.rb +33 -11
  258. data/spec/packets/structure_spec.rb +41 -0
  259. data/spec/packets/telemetry_spec.rb +23 -0
  260. data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
  261. data/spec/system/system_spec.rb +77 -2
  262. data/spec/system/target_spec.rb +62 -1
  263. data/spec/tools/cmd_tlm_server/api_spec.rb +1 -1
  264. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
  265. data/spec/top_level/top_level_spec.rb +29 -5
  266. data/tasks/gemfile_stats.rake +28 -14
  267. data/test/performance/config/system/system.txt +0 -0
  268. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
  269. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  270. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  271. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  272. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  273. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  274. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  275. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  276. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  277. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  278. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  279. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  280. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  281. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  282. data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  283. data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  284. data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  285. data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
  286. data/test/performance/procedures/cosmos_api_test.rb +1 -1
  287. data/test/performance/tools/identify_performance.rb +82 -0
  288. metadata +92 -55
@@ -21,6 +21,7 @@ require 'cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb'
21
21
  require 'cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb'
22
22
  require 'cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb'
23
23
  require 'cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb'
24
+ require 'cosmos/tools/tlm_viewer/widgets/labelled_widget.rb'
24
25
  require 'cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb'
25
26
  require 'cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb'
26
27
  require 'cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb'
@@ -31,6 +32,7 @@ require 'cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb'
31
32
  require 'cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb'
32
33
  require 'cosmos/tools/tlm_viewer/widgets/label_widget.rb'
33
34
  require 'cosmos/tools/tlm_viewer/widgets/layout_widget.rb'
35
+ require 'cosmos/tools/tlm_viewer/widgets/led_widget.rb'
34
36
  require 'cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb'
35
37
  require 'cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb'
36
38
  require 'cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb'
@@ -11,9 +11,10 @@
11
11
  require 'cosmos'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Implement aging in a telemetry widget. When values change they are
15
+ # displayed whith a white background. If the value doesn't change the
16
+ # text box background slowly fades to grey.
15
17
  module AgingWidget
16
-
17
18
  attr_accessor :coloring
18
19
 
19
20
  def setup_aging
@@ -104,7 +105,5 @@ module Cosmos
104
105
  end
105
106
  end
106
107
  end
107
-
108
108
  end
109
-
110
- end # module Cosmos
109
+ end
@@ -13,7 +13,8 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
13
13
  require 'cosmos/tools/tlm_viewer/widgets/aging_widget'
14
14
 
15
15
  module Cosmos
16
-
16
+ # Displays an array of values in a text box. The values can be formatted
17
+ # and displayed in multiple rows.
17
18
  class ArrayWidget < Qt::TextEdit
18
19
  include Widget
19
20
  include AgingWidget
@@ -60,7 +61,5 @@ module Cosmos
60
61
  super
61
62
  process_aging_settings
62
63
  end
63
-
64
64
  end
65
-
66
- end # module Cosmos
65
+ end
@@ -15,10 +15,10 @@ require 'cosmos'
15
15
  require 'cosmos/tools/tlm_viewer/widgets/textbox_widget'
16
16
 
17
17
  module Cosmos
18
-
18
+ # Displays binary data in a large scrollable window with the data address
19
+ # (offset into the data) followed by the binary data.
19
20
  class BlockWidget < TextboxWidget
20
-
21
- def initialize (parent_layout, target_name, packet_name, item_name, width = 200, height = 100, format_string = "%02X", bytes_per_word = 4, words_per_row = 4, addr_format = nil, value_type = :RAW)
21
+ def initialize(parent_layout, target_name, packet_name, item_name, width = 200, height = 100, format_string = "%02X", bytes_per_word = 4, words_per_row = 4, addr_format = nil, value_type = :RAW)
22
22
  super(parent_layout, target_name, packet_name, item_name, width, height, value_type)
23
23
  @format_string = format_string.to_s
24
24
  @bytes_per_word = bytes_per_word.to_i
@@ -53,5 +53,4 @@ module Cosmos
53
53
  text
54
54
  end
55
55
  end
56
-
57
- end # module Cosmos
56
+ end
@@ -9,18 +9,32 @@
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
11
  module Cosmos
12
+ # Creates a clickable point on the canvas which opens another screen.
13
+ # Add to canvas by using the SCREEN setting. For example:
14
+ # SETTING SCREEN "INST HS" 100 100
12
15
  module CanvasClickable
13
16
  # Requires @x, @y, @x_end, and @y_end to be defined
14
17
  def on_click(event, x, y)
15
18
  return false unless @screen_settings
16
19
  if (x < @x_end) && (x > @x) && (y < @y_end) && (y > @y)
17
20
  display(@screen_settings[0], @screen_settings[1].to_i, @screen_settings[2].to_i)
18
- true
21
+ true # We handled the click so return true
19
22
  else
20
- false
23
+ false # Allow other widgets to handle the on_click
21
24
  end
22
25
  end
23
26
 
27
+ # Requires @x, @y, @x_end, and @y_end to be defined
28
+ def on_move(event, x, y)
29
+ return false unless @screen_settings
30
+ if (x < @x_end) && (x > @x) && (y < @y_end) && (y > @y)
31
+ Qt::Application.setOverrideCursor(Cosmos.getCursor(Qt::PointingHandCursor))
32
+ else
33
+ Qt::Application.setOverrideCursor(Cosmos.getCursor(Qt::ArrowCursor))
34
+ end
35
+ false # Allow other widgets to handle on_move
36
+ end
37
+
24
38
  def set_setting(setting_name, setting_values)
25
39
  case setting_name.upcase
26
40
  when 'SCREEN'
@@ -8,7 +8,7 @@
8
8
  # as published by the Free Software Foundation; version 3 with
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
- # This file contains the implementation of the CanvasWidget class. This widget
11
+ # This file contains the implementation of the CanvasWidget class. This widget
12
12
  # represents a canvas where draw-able widgets (such as images and lines) can be
13
13
  # added.
14
14
 
@@ -17,20 +17,24 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
17
17
  require 'cosmos/tools/tlm_viewer/widgets/layout_widget'
18
18
 
19
19
  module Cosmos
20
+ # Create a blank widget which other widgets can draw on using the painter.
21
+ # Each subwidget should implement the paint(painter) method which will be
22
+ # called in the paintEvent of this widget.
20
23
  class CanvasWidget < Qt::Widget
21
24
  include Widget
22
25
  include LayoutWidget
23
26
 
24
27
  def initialize(parent_layout, width, height)
25
28
  super()
29
+ setMouseTracking(true) # for mouse move events
26
30
  @repaint_objects = []
27
31
  self.minimumWidth = width.to_i
28
32
  self.minimumHeight = height.to_i
29
33
  parent_layout.addWidget(self) if parent_layout
30
34
  end
31
35
 
32
- # add_repaint - Child widgets to the canvas must call add_repaint to register
33
- # itself with the canvas so that they are painted when the canvas is. Note,
36
+ # Child widgets to the canvas must call add_repaint to register
37
+ # itself with the canvas so that they are painted when the canvas is. Note,
34
38
  # the order in which child widgets are painted is the order in which they
35
39
  # are created.
36
40
  def add_repaint(obj)
@@ -63,6 +67,16 @@ module Cosmos
63
67
  end
64
68
  end
65
69
 
70
+ def mouseMoveEvent(event)
71
+ cur_x = mapFromGlobal(self.cursor.pos).x
72
+ cur_y = mapFromGlobal(self.cursor.pos).y
73
+ @repaint_objects.each do |obj|
74
+ if obj.respond_to?(:on_move)
75
+ break if obj.on_move(event, cur_x, cur_y)
76
+ end
77
+ end
78
+ end
79
+
66
80
  def update_widget
67
81
  self.update
68
82
  end
@@ -11,6 +11,7 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
+ # Display a circle on the canvas of specified color and width
14
15
  class CanvasdotWidget
15
16
  include Widget
16
17
 
@@ -29,8 +30,6 @@ module Cosmos
29
30
  end
30
31
 
31
32
  @point = Qt::Point.new(0, 0)
32
- update_point
33
-
34
33
  @width = width.to_i
35
34
  @color = Cosmos::getColor(color)
36
35
  parent_layout.add_repaint(self)
@@ -11,6 +11,7 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
+ # Display an ellipse on the canvas which can be filled or open
14
15
  class CanvasellipseWidget
15
16
  include Widget
16
17
 
@@ -35,6 +36,5 @@ module Cosmos
35
36
  painter.drawEllipse(@center_x, @center_y, @width, @height)
36
37
  painter.restore
37
38
  end
38
-
39
39
  end
40
40
  end
@@ -12,6 +12,8 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/canvas_clickable'
13
13
 
14
14
  module Cosmos
15
+ # Displays an image on a canvas. The image is loaded from file first by
16
+ # looking in the target's screens directory and then the COSMOS data path.
15
17
  class CanvasimageWidget
16
18
  include Widget
17
19
  include CanvasClickable
@@ -20,15 +22,9 @@ module Cosmos
20
22
  super()
21
23
  @x = x.to_i
22
24
  @y = y.to_i
25
+ @filename = filename
23
26
  @image = nil
24
- filename = File.join(::Cosmos::USERPATH, 'config', 'data', filename)
25
- unless File.exist?(filename)
26
- raise "Can't find the file #{filename} in #{::Cosmos::USERPATH}/config/data"
27
- end
28
- @image = Qt::Image.new(filename)
29
27
  parent_layout.add_repaint(self)
30
- @x_end = @x + @image.width
31
- @y_end = @y + @image.height
32
28
  end
33
29
 
34
30
  def paint(painter)
@@ -39,5 +35,14 @@ module Cosmos
39
35
  super()
40
36
  @image.dispose
41
37
  end
38
+
39
+ def process_settings
40
+ super
41
+ # We wait until here to find the image because we need @screen to be set
42
+ # to determine the target name to look in the target's screens directory
43
+ @image = get_image(@filename)
44
+ @x_end = @x + @image.width
45
+ @y_end = @y + @image.height
46
+ end
42
47
  end
43
48
  end
@@ -8,52 +8,102 @@
8
8
  # as published by the Free Software Foundation; version 3 with
9
9
  # attribution addendums as found in the LICENSE.txt
10
10
 
11
- # This file contains the implementation of the CanvasimagevalueWidget class. This
12
- # widget displays one of two images within a CanvasWidget. The image displayed
13
- # is either '[filename]on.gif' or '[filename]off.gif' depending on the
14
- # telemetry point value of 1 or 0 respectively.
11
+ # This file contains the implementation of the CanvasimagevalueWidget class.
12
+ # The widget displays a default image but users should use the SETTING IMAGE
13
+ # option to set the images to display for a given value.
15
14
 
16
15
  require 'cosmos/tools/tlm_viewer/widgets/canvasvalue_widget'
17
16
  require 'cosmos/tools/tlm_viewer/widgets/canvas_clickable'
18
17
 
19
18
  module Cosmos
19
+ # Displays an image on a canvas based on a telemetry value. Multiple images
20
+ # can be set to display by using the IMAGE setting. For example:
21
+ # CANVASIMAGEVALUE TGT PKT ITEM CONVERTED "ground_error.gif" 400 100
22
+ # SETTING IMAGE CONNECTED "ground_on.gif" 400 100
23
+ # SETTING IMAGE UNAVAILABLE "ground_off.gif" 400 100
24
+ # The default image to display is error.gif. If the converted value from
25
+ # the telemetry point named TGT PKT ITEM has a converted value of
26
+ # 'CONNECTED' the ground_on.gif image is displayed and if the value is
27
+ # 'UNAVAILABLE' the ground_off.git image is displayed.
20
28
  class CanvasimagevalueWidget < CanvasvalueWidget
21
29
  include CanvasClickable
22
-
23
- def initialize(parent_layout, target_name, packet_name, item_name, filename, x, y, value_type = :RAW)
24
- super(parent_layout, target_name, packet_name, item_name, value_type)
25
- @x = x.to_i
26
- @y = y.to_i
27
- @image_on = nil
28
- @image_off = nil
29
-
30
- filenameOn = Dir[File.join(::Cosmos::USERPATH, 'config', 'data', filename + 'on.*')][0]
31
- unless File.exist?(filenameOn)
32
- raise "Can't find the file #{filenameOn} in #{::Cosmos::USERPATH}/config/data"
33
- end
34
- @image_on = Qt::Image.new(filenameOn)
35
30
 
36
- filenameOff = Dir[File.join(::Cosmos::USERPATH, 'config', 'data', filename + 'off.*')][0]
37
- unless File.exist?(filenameOff)
38
- raise "Can't find the file #{filenameOff} in #{::Cosmos::USERPATH}/config/data"
31
+ def initialize(parent_layout, target_name, packet_name, item_name, value_type = :RAW, default_image = nil, x = nil, y = nil)
32
+ super(parent_layout, target_name, packet_name, item_name, value_type)
33
+ @images = []
34
+ if default_image
35
+ @default_image_name = default_image
36
+ @default_x = Integer(x)
37
+ @default_y = Integer(y)
39
38
  end
40
- @image_off = Qt::Image.new(filenameOff)
41
- @x_end = @x + [@image_on.width, @image_off.width].max
42
- @y_end = @y + [@image_on.height, @image_off.height].max
43
39
  end
44
40
 
45
- def draw_widget(painter, on_value)
46
- if on_value
47
- painter.drawImage(@x, @y, @image_on) if @image_on
41
+ def paint(painter)
42
+ if @values.length > 1
43
+ eval_string = "1"
44
+ # This code uses the booleans set by the process_settings function and evaluates it to logically determine
45
+ # if the item should be drawn on the canvas as "on" or "off".
46
+ @item_settings.each_with_index do |item, index|
47
+ next if @values[index].to_f.nan? || @values[index].to_f.infinite?
48
+ eval_string << " " << item[0].to_s << " (" << @values[index].to_s << " " << item[1].to_s << " " << item[2].to_s << ")"
49
+ end
50
+ @value = eval(eval_string)
48
51
  else
49
- painter.drawImage(@x, @y, @image_off) if @image_off
52
+ @value = @values[0]
50
53
  end
54
+ eval(@eval)
51
55
  end
52
56
 
53
57
  def dispose
54
58
  super()
55
- @image_on.dispose
56
- @image_off.dispose
59
+ @images.each {|image| image.dispose }
60
+ @default_image.dispose if @default_image
61
+ end
62
+
63
+ def set_setting(setting_name, setting_values)
64
+ # Allow for multiple IMAGE settings by deconflicting the hash key by appending the value
65
+ if setting_name.upcase == 'IMAGE'
66
+ @settings["#{setting_name.to_s.upcase}_#{setting_values[0]}"] = setting_values
67
+ else
68
+ super(setting_name, setting_values)
69
+ end
70
+ end
71
+
72
+ def process_settings
73
+ super
74
+ @eval = 'case @value;'
75
+ @settings.each do |setting_name, setting_values|
76
+ case setting_name
77
+ when /IMAGE/
78
+ value_string = setting_values[0]
79
+ @images << get_image(setting_values[1])
80
+ x = setting_values[2]
81
+ y = setting_values[3]
82
+
83
+ case value_string.upcase
84
+ when 'TRUE'
85
+ value = true
86
+ when 'FALSE'
87
+ value = false
88
+ when /\d\.\.\d/ # Range
89
+ value = Range.new(*value_string.split("..").map(&:to_i))
90
+ else
91
+ begin
92
+ value = Float(value_string)
93
+ rescue
94
+ value = "'#{value_string}'"
95
+ end
96
+ end
97
+ @eval << "when #{value} then painter.drawImage(#{x}, #{y}, @images[#{@images.length-1}]);"
98
+ @eval << "@x=#{x};@y=#{y};@x_end=@x+@images[#{@images.length-1}].width;@y_end=@y+@images[#{@images.length-1}].height;"
99
+ end
100
+ end
101
+ if @default_image_name
102
+ @default_image = get_image(@default_image_name)
103
+ @eval << "else painter.drawImage(@default_x, @default_y, @default_image);"
104
+ @eval << "@x=@default_x;@y=@default_y;@x_end=@x+@default_image.width;@y_end=@y+@default_image.height;"
105
+ end
106
+ @eval << "end"
57
107
  end
58
108
  end
59
109
  end
@@ -12,6 +12,7 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/canvas_clickable'
13
13
 
14
14
  module Cosmos
15
+ # Display text on the canvas of a given size and color
15
16
  class CanvaslabelWidget
16
17
  include Widget
17
18
  include CanvasClickable
@@ -12,7 +12,8 @@ require 'cosmos'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/canvasvalue_widget'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Displays a label and value for the given telemetry point. By default
16
+ # the telemetry value is drawn inside a rectangular box.
16
17
  class CanvaslabelvalueWidget < CanvasvalueWidget
17
18
  def initialize(parent_layout, target_name, packet_name, item_name, x1, y1, font_size = 12, color = 'black', frame = true, frame_width = 3, value_type = :CONVERTED)
18
19
  super(parent_layout, target_name, packet_name, item_name, value_type)
@@ -11,6 +11,8 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
+ # Draws a line on the canvas with an optional 'connector' (circle) on
15
+ # the end of the line
14
16
  class CanvaslineWidget
15
17
  include Widget
16
18
 
@@ -15,6 +15,10 @@
15
15
  require 'cosmos/tools/tlm_viewer/widgets/canvasvalue_widget'
16
16
 
17
17
  module Cosmos
18
+ # Draws a line on the canvas that changes color based on the value of the
19
+ # given telemetry point. Typically used to either show to hide the line
20
+ # by drawing it as the same color as the canvas. For example:
21
+ # CANVASLINEVALUE INST HEALTH_STATUS GROUND1STATUS 420 135 240 330 green white 3
18
22
  class CanvaslinevalueWidget < CanvasvalueWidget
19
23
  def initialize(parent_layout, target_name, packet_name, item_name, x1, y1, x2, y2, color_on = 'green', color_off = 'blue', width = 3, connector = 'NO_CONNECTOR', value_type = :RAW)
20
24
  super(parent_layout, target_name, packet_name, item_name, value_type)
@@ -11,6 +11,10 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
+ # Abstract class which provides helper methods to draw a telemetry point
15
+ # on a canvas. Has the ability to AND or OR together additional telemetry
16
+ # points to determine whether the value is "on" or not. Subclasses must
17
+ # implement draw_widget(draw_context, on_state).
14
18
  class CanvasvalueWidget
15
19
  include Widget
16
20
 
@@ -68,34 +72,38 @@ module Cosmos
68
72
  raise 'Override draw_widget to make this class work!'
69
73
  end
70
74
 
75
+ def set_setting(setting_name, setting_values)
76
+ if setting_name =~ /^TLM_/
77
+ @settings["#{setting_name.to_s.upcase}_#{setting_values.join('_')}"] = setting_values
78
+ else
79
+ super(setting_name, setting_values)
80
+ end
81
+ end
82
+
71
83
  def process_settings
72
84
  super
73
85
  @settings.each do |setting_name, setting_values|
74
- begin
75
- case setting_name
76
- when 'VALUE_EQ'
77
- @item_settings[0] = ['and', '==', setting_values[0]]
78
- when 'VALUE_GT'
79
- @item_settings[0] = ['and', '>', setting_values[0]]
80
- when 'VALUE_GTEQ'
81
- @item_settings[0] = ['and', '>=', setting_values[0]]
82
- when 'VALUE_LT'
83
- @item_settings[0] = ['and', '<', setting_values[0]]
84
- when 'VALUE_LTEQ'
85
- @item_settings[0] = ['and', '<=', setting_values[0]]
86
- # TLM_AND allows a telemetry item to be dependant on another item for its state
87
- when 'TLM_AND'
88
- @items << [setting_values[0], setting_values[1], setting_values[2]]
89
- @values << 0
90
- set_item_settings('and', setting_values[3], setting_values[4])
91
- # TLM_OR allows a telemetry item to be dependant on another item for its state
92
- when 'TLM_OR'
93
- @items << [setting_values[0], setting_values[1], setting_values[2]]
94
- @values << 0
95
- set_item_settings('or', setting_values[3], setting_values[4])
96
- end
97
- rescue => err
98
- puts "Error Processing Settings!: #{err}"
86
+ case setting_name
87
+ when 'VALUE_EQ'
88
+ @item_settings[0] = ['and', '==', setting_values[0]]
89
+ when 'VALUE_GT'
90
+ @item_settings[0] = ['and', '>', setting_values[0]]
91
+ when 'VALUE_GTEQ'
92
+ @item_settings[0] = ['and', '>=', setting_values[0]]
93
+ when 'VALUE_LT'
94
+ @item_settings[0] = ['and', '<', setting_values[0]]
95
+ when 'VALUE_LTEQ'
96
+ @item_settings[0] = ['and', '<=', setting_values[0]]
97
+ # TLM_AND allows a telemetry item to be dependant on another item for its state
98
+ when /^TLM_AND/
99
+ @items << [setting_values[0], setting_values[1], setting_values[2]]
100
+ @values << 0
101
+ set_item_settings('and', setting_values[3], setting_values[4])
102
+ # TLM_OR allows a telemetry item to be dependant on another item for its state
103
+ when /^TLM_OR/
104
+ @items << [setting_values[0], setting_values[1], setting_values[2]]
105
+ @values << 0
106
+ set_item_settings('or', setting_values[3], setting_values[4])
99
107
  end
100
108
  end
101
109
  end