cosmos 4.2.4-java → 4.5.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 (458) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  5. data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
  6. data/.gitignore +2 -0
  7. data/.travis.yml +6 -6
  8. data/Dockerfile +69 -0
  9. data/Gemfile +1 -1
  10. data/Manifest.txt +130 -46
  11. data/README.md +9 -0
  12. data/Rakefile +57 -0
  13. data/appveyor.yml +18 -7
  14. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  15. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  16. data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
  17. data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
  18. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  19. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  20. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  21. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  22. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  23. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  24. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  25. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  26. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  27. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  28. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
  29. data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
  30. data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
  31. data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
  32. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  33. data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
  34. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  35. data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
  36. data/autohotkey/procedures/collect.rb +2 -2
  37. data/autohotkey/procedures/collect_util.rb +1 -1
  38. data/autohotkey/procedures/script_test.rb +1 -1
  39. data/autohotkey/tools/CmdSenderAHK2 +18 -0
  40. data/autohotkey/tools/cmd_sender.ahk +34 -6
  41. data/autohotkey/tools/cmd_sender2.ahk +4 -0
  42. data/autohotkey/tools/cmd_sequence.ahk +36 -22
  43. data/autohotkey/tools/cmd_sequence2.ahk +1 -1
  44. data/autohotkey/tools/config_editor.ahk +5 -5
  45. data/autohotkey/tools/launcher.ahk +1 -0
  46. data/autohotkey/tools/limits_monitor.ahk +1 -1
  47. data/autohotkey/tools/packet_viewer.ahk +7 -6
  48. data/autohotkey/tools/script_runner.ahk +16 -4
  49. data/autohotkey/tools/test_runner.ahk +8 -8
  50. data/bin/cosmos +38 -1
  51. data/bin/cstol_converter +1 -1
  52. data/bin/dart_util +0 -0
  53. data/bin/rubysloc +73 -28
  54. data/bin/xtce_converter +1 -1
  55. data/cosmos.gemspec +7 -9
  56. data/data/config/_interfaces.yaml +4 -0
  57. data/data/config/cmd_sequence.yaml +14 -0
  58. data/data/config/command_modifiers.yaml +16 -1
  59. data/data/config/housekeeping_params.yaml +14 -0
  60. data/data/config/interface_modifiers.yaml +14 -2
  61. data/data/config/item_modifiers.yaml +11 -1
  62. data/data/config/launcher.yaml +12 -2
  63. data/data/config/param_item_modifiers.yaml +7 -2
  64. data/data/config/parameter_modifiers.yaml +20 -0
  65. data/data/config/screen.yaml +2 -0
  66. data/data/config/script_runner.yaml +9 -0
  67. data/data/config/system.yaml +152 -28
  68. data/data/config/table_manager.yaml +7 -0
  69. data/data/config/target.yaml +12 -0
  70. data/data/config/telemetry_modifiers.yaml +19 -2
  71. data/data/config/test_runner.yaml +10 -9
  72. data/data/config/widgets.yaml +174 -11
  73. data/data/crc.txt +428 -415
  74. data/demo/Gemfile +1 -1
  75. data/demo/Launcher.bat +1 -9
  76. data/demo/Launcher2.bat +1 -0
  77. data/demo/LauncherMini.bat +1 -0
  78. data/demo/Rakefile +2 -0
  79. data/demo/config/dart/Gemfile +2 -7
  80. data/demo/config/data/crc.txt +243 -219
  81. data/demo/config/system/system.txt +42 -3
  82. data/demo/config/system/system2.txt +34 -5
  83. data/demo/config/system/system_alt_ports.txt +80 -0
  84. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
  85. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +5 -4
  86. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +12 -7
  87. data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
  88. data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
  89. data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
  90. data/demo/config/targets/INST/screens/adcs.txt +2 -2
  91. data/demo/config/targets/INST/screens/block.txt +1 -1
  92. data/demo/config/targets/INST/screens/commanding.txt +1 -1
  93. data/demo/config/targets/INST/screens/ground.txt +27 -5
  94. data/demo/config/targets/INST/screens/ground_error.gif +0 -0
  95. data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
  96. data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
  97. data/demo/config/targets/INST/screens/limits.txt +69 -31
  98. data/demo/config/targets/INST/screens/other.txt +13 -3
  99. data/demo/config/targets/INST/screens/params.txt +54 -0
  100. data/demo/config/targets/INST/screens/satellite.gif +0 -0
  101. data/demo/config/targets/INST/target.txt +1 -0
  102. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
  103. data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
  104. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  105. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  106. data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  107. data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  108. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  109. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  110. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  111. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  112. data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  113. data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  114. data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  115. data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  116. data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  117. data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  118. data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  119. data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  120. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
  121. data/demo/config/tools/script_runner/script_runner.txt +1 -2
  122. data/demo/config/tools/test_runner/test_runner.txt +3 -1
  123. data/demo/lib/example_background_task.rb +1 -0
  124. data/demo/procedures/cosmos_api_test.rb +26 -22
  125. data/demo/procedures/interactive.rb +22 -0
  126. data/demo/procedures/local_screen_example.rb +51 -0
  127. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
  128. data/ext/cosmos/ext/packet/packet.c +6 -77
  129. data/ext/mkrf_conf.rb +2 -2
  130. data/extensions/vscode/.gitignore +4 -0
  131. data/extensions/vscode/.vscode/launch.json +32 -0
  132. data/extensions/vscode/.vscode/settings.json +13 -0
  133. data/extensions/vscode/.vscode/tasks.json +79 -0
  134. data/extensions/vscode/License.txt +879 -0
  135. data/extensions/vscode/README.md +9 -0
  136. data/extensions/vscode/client/License.txt +879 -0
  137. data/extensions/vscode/client/README.md +39 -0
  138. data/extensions/vscode/client/cosmos.configuration.json +23 -0
  139. data/extensions/vscode/client/images/icon.png +0 -0
  140. data/extensions/vscode/client/package-lock.json +414 -0
  141. data/extensions/vscode/client/package.json +105 -0
  142. data/extensions/vscode/client/src/extension.ts +132 -0
  143. data/extensions/vscode/client/src/screen_preview.rb +25 -0
  144. data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
  145. data/extensions/vscode/client/tsconfig.json +17 -0
  146. data/extensions/vscode/package-lock.json +26 -0
  147. data/extensions/vscode/package.json +35 -0
  148. data/extensions/vscode/server/License.txt +879 -0
  149. data/extensions/vscode/server/package-lock.json +236 -0
  150. data/extensions/vscode/server/package.json +29 -0
  151. data/extensions/vscode/server/src/server.ts +59 -0
  152. data/extensions/vscode/server/tsconfig.json +16 -0
  153. data/install/Gemfile +1 -1
  154. data/install/Launcher.bat +1 -9
  155. data/install/config/dart/Gemfile +3 -8
  156. data/install/config/data/crc.txt +148 -132
  157. data/install/config/system/system.txt +36 -3
  158. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  159. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  160. data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  161. data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  162. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  163. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  164. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  165. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  166. data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  167. data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  168. data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  169. data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  170. data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  171. data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  172. data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  173. data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  174. data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
  175. data/lib/cosmos/config/config_parser.rb +4 -5
  176. data/lib/cosmos/conversions.rb +2 -0
  177. data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
  178. data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
  179. data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
  180. data/lib/cosmos/core_ext/time.rb +3 -1
  181. data/lib/cosmos/dart/config/boot.rb +1 -1
  182. data/lib/cosmos/dart/config/database.yml +2 -0
  183. data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
  184. data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
  185. data/lib/cosmos/dart/lib/dart_common.rb +13 -6
  186. data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
  187. data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
  188. data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
  189. data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
  190. data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
  191. data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
  192. data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
  193. data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
  194. data/lib/cosmos/dart/processes/dart.rb +4 -2
  195. data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
  196. data/lib/cosmos/dart/processes/dart_ingester.rb +40 -1
  197. data/lib/cosmos/dart/processes/dart_master.rb +44 -0
  198. data/lib/cosmos/dart/processes/dart_util.rb +119 -4
  199. data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
  200. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
  201. data/lib/cosmos/gui/dialogs/details_dialog.rb +44 -29
  202. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
  203. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
  204. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
  205. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
  206. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +11 -10
  207. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
  208. data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
  209. data/lib/cosmos/gui/qt.rb +13 -2
  210. data/lib/cosmos/gui/qt_tool.rb +71 -43
  211. data/lib/cosmos/gui/text/ruby_editor.rb +91 -49
  212. data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
  213. data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
  214. data/lib/cosmos/gui/utilities/script_module_gui.rb +117 -91
  215. data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
  216. data/lib/cosmos/interfaces.rb +2 -0
  217. data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
  218. data/lib/cosmos/interfaces/interface.rb +9 -1
  219. data/lib/cosmos/interfaces/linc_interface.rb +3 -3
  220. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
  221. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
  222. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
  223. data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
  224. data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
  225. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
  226. data/lib/cosmos/interfaces/protocols/template_protocol.rb +9 -4
  227. data/lib/cosmos/interfaces/serial_interface.rb +7 -1
  228. data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
  229. data/lib/cosmos/interfaces/stream_interface.rb +1 -1
  230. data/lib/cosmos/interfaces/tcpip_server_interface.rb +13 -13
  231. data/lib/cosmos/io/json_drb.rb +16 -12
  232. data/lib/cosmos/io/json_drb_object.rb +7 -2
  233. data/lib/cosmos/io/json_drb_rack.rb +25 -5
  234. data/lib/cosmos/io/json_rpc.rb +1 -1
  235. data/lib/cosmos/io/posix_serial_driver.rb +60 -22
  236. data/lib/cosmos/io/serial_driver.rb +11 -8
  237. data/lib/cosmos/io/win32_serial_driver.rb +31 -3
  238. data/lib/cosmos/packet_logs/packet_log_reader.rb +71 -28
  239. data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
  240. data/lib/cosmos/packets/commands.rb +30 -9
  241. data/lib/cosmos/packets/packet.rb +105 -34
  242. data/lib/cosmos/packets/packet_config.rb +60 -10
  243. data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
  244. data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
  245. data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
  246. data/lib/cosmos/packets/parsers/xtce_parser.rb +5 -4
  247. data/lib/cosmos/packets/structure.rb +32 -4
  248. data/lib/cosmos/packets/structure_item.rb +5 -1
  249. data/lib/cosmos/packets/telemetry.rb +30 -4
  250. data/lib/cosmos/script/api_shared.rb +22 -10
  251. data/lib/cosmos/script/extract.rb +1 -1
  252. data/lib/cosmos/script/limits.rb +4 -0
  253. data/lib/cosmos/script/script.rb +29 -20
  254. data/lib/cosmos/script/scripting.rb +16 -14
  255. data/lib/cosmos/script/telemetry.rb +3 -1
  256. data/lib/cosmos/script/tools.rb +18 -8
  257. data/lib/cosmos/streams/serial_stream.rb +11 -6
  258. data/lib/cosmos/system/system.rb +214 -76
  259. data/lib/cosmos/system/target.rb +39 -9
  260. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +116 -55
  261. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
  262. data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
  263. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +54 -340
  264. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +74 -52
  265. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +40 -333
  266. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
  267. data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
  268. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
  269. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +44 -15
  270. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +8 -1
  271. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +18 -20
  272. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
  273. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
  274. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
  275. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +9 -6
  276. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
  277. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
  278. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
  279. data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
  280. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
  281. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
  282. data/lib/cosmos/tools/config_editor/config_editor.rb +181 -94
  283. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +10 -9
  284. data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
  285. data/lib/cosmos/tools/data_viewer/data_viewer.rb +57 -47
  286. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
  287. data/lib/cosmos/tools/data_viewer/dump_component.rb +3 -9
  288. data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
  289. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +68 -42
  290. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
  291. data/lib/cosmos/tools/launcher/launcher.rb +2 -1
  292. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +59 -41
  293. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
  294. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +64 -59
  295. data/lib/cosmos/tools/script_runner/script_runner.rb +198 -123
  296. data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
  297. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +87 -35
  298. data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
  299. data/lib/cosmos/tools/table_manager/table_manager.rb +48 -45
  300. data/lib/cosmos/tools/test_runner/test.rb +5 -2
  301. data/lib/cosmos/tools/test_runner/test_runner.rb +61 -38
  302. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +24 -12
  303. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +48 -48
  304. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +5 -8
  305. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
  306. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
  307. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
  308. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
  309. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
  310. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
  311. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
  312. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
  313. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
  314. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +94 -91
  315. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +27 -26
  316. data/lib/cosmos/tools/tlm_viewer/screen.rb +76 -14
  317. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +51 -34
  318. data/lib/cosmos/tools/tlm_viewer/widgets.rb +3 -0
  319. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
  320. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
  321. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
  322. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
  323. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
  324. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
  325. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
  326. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
  327. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
  328. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
  329. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
  330. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
  331. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
  332. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
  333. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
  334. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
  335. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
  336. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
  337. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
  338. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
  339. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
  340. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
  341. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
  342. data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
  343. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
  344. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
  345. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
  346. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
  347. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
  348. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
  349. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
  350. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
  351. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
  352. data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
  353. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
  354. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
  355. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
  356. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
  357. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
  358. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
  359. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
  360. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
  361. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
  362. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
  363. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
  364. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
  365. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
  366. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
  367. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
  368. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
  369. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
  370. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
  371. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
  372. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +3 -8
  373. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
  374. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
  375. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
  376. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
  377. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
  378. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
  379. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
  380. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
  381. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
  382. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
  383. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +60 -47
  384. data/lib/cosmos/top_level.rb +37 -13
  385. data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
  386. data/lib/cosmos/version.rb +5 -5
  387. data/lib/cosmos/win32/excel.rb +81 -24
  388. data/make_gems.sh +10 -0
  389. data/run_gui_tests.bat +1 -0
  390. data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
  391. data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
  392. data/spec/core_ext/socket_spec.rb +1 -1
  393. data/spec/core_ext/time_spec.rb +4 -0
  394. data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
  395. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  396. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  397. data/spec/install/yaml_docs_spec.rb +132 -0
  398. data/spec/interfaces/linc_interface_spec.rb +1 -1
  399. data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
  400. data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
  401. data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
  402. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
  403. data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
  404. data/spec/io/json_drb_rack_spec.rb +166 -0
  405. data/spec/io/json_drb_spec.rb +14 -0
  406. data/spec/io/json_rpc_spec.rb +4 -5
  407. data/spec/io/posix_serial_driver_spec.rb +81 -0
  408. data/spec/io/serial_driver_spec.rb +15 -13
  409. data/spec/io/win32_serial_driver_spec.rb +33 -3
  410. data/spec/packet_logs/packet_log_reader_spec.rb +106 -52
  411. data/spec/packets/commands_spec.rb +22 -0
  412. data/spec/packets/packet_config_spec.rb +29 -16
  413. data/spec/packets/packet_item_spec.rb +2 -2
  414. data/spec/packets/packet_spec.rb +39 -6
  415. data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
  416. data/spec/packets/parsers/macro_parser_spec.rb +36 -36
  417. data/spec/packets/parsers/state_parser_spec.rb +69 -11
  418. data/spec/packets/structure_spec.rb +93 -2
  419. data/spec/packets/telemetry_spec.rb +63 -10
  420. data/spec/script/extract_spec.rb +4 -1
  421. data/spec/script/script_spec.rb +2 -3
  422. data/spec/script/scripting_spec.rb +2 -1
  423. data/spec/script/tools_spec.rb +0 -1
  424. data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
  425. data/spec/system/system_spec.rb +187 -4
  426. data/spec/system/target_spec.rb +62 -1
  427. data/spec/tools/cmd_tlm_server/api_spec.rb +29 -21
  428. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
  429. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
  430. data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
  431. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
  432. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
  433. data/spec/top_level/top_level_spec.rb +29 -5
  434. data/spec/utilities/message_log_spec.rb +6 -3
  435. data/tasks/gemfile_stats.rake +38 -14
  436. data/test/performance/config/system/system.txt +0 -0
  437. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
  438. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  439. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  440. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  441. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  442. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  443. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  444. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  445. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  446. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  447. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  448. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  449. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  450. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  451. data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  452. data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  453. data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  454. data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
  455. data/test/performance/procedures/cosmos_api_test.rb +1 -1
  456. data/test/performance/tools/identify_performance.rb +82 -0
  457. metadata +146 -62
  458. data/lib/cosmos/dart/Gemfile +0 -69
@@ -12,7 +12,6 @@ require 'ostruct'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/widget'
13
13
 
14
14
  module Cosmos
15
-
16
15
  # This class is a common base class for LimitsbarWidget and
17
16
  # LimitscolumnWidget and should not be instantiated
18
17
  class LimitsWidget < Qt::Label
@@ -29,6 +28,8 @@ module Cosmos
29
28
  @bar_width = @width - (2 * @x_pad)
30
29
  @bar_height = @height - (2 * @y_pad)
31
30
  @painter = nil
31
+ @min_value = nil # no minimum
32
+ @max_value = nil # no maximum
32
33
  setFixedSize(width.to_i, height.to_i)
33
34
  parent_layout.addWidget(self) if parent_layout
34
35
  end
@@ -48,6 +49,18 @@ module Cosmos
48
49
  update()
49
50
  end
50
51
 
52
+ def process_settings
53
+ super
54
+ @settings.each do |setting_name, setting_values|
55
+ case setting_name
56
+ when 'MIN_VALUE'
57
+ @min_value = setting_values[0].to_f
58
+ when 'MAX_VALUE'
59
+ @max_value = setting_values[0].to_f
60
+ end
61
+ end
62
+ end
63
+
51
64
  def paintEvent(event)
52
65
  begin
53
66
  return if @painter
@@ -73,7 +86,7 @@ module Cosmos
73
86
  limits
74
87
  end
75
88
 
76
- def calculate_widths(limits, length)
89
+ def calculate_widths(limits, length, min_value = nil, max_value = nil)
77
90
  red_low = limits[0]
78
91
  yellow_low = limits[1]
79
92
  yellow_high = limits[2]
@@ -83,24 +96,62 @@ module Cosmos
83
96
 
84
97
  widths = OpenStruct.new
85
98
  # Calculate sizes of limits sections
99
+ # By default the red low and red high sections are each
100
+ # 10% of the total bar length. After the value goes beyond
101
+ # a certain point it just rails on the red section.
86
102
  widths.red_low = (0.1 * length).round
87
103
  widths.red_high = (0.1 * length).round
88
104
 
89
- inner_value_range = red_high - red_low
105
+ if min_value
106
+ # If the red low is less than the min value we don't display the red low box
107
+ if red_low <= min_value
108
+ red_low = min_value
109
+ widths.red_low = 0
110
+ end
111
+ # Determine if any other limits values need to change
112
+ yellow_low = min_value if yellow_low <= min_value
113
+ green_low = min_value if green_low && green_low <= min_value
114
+ green_high = min_value if green_high && green_high <= min_value
115
+ yellow_high = min_value if yellow_high <= min_value
116
+ red_high = min_value if red_high <= min_value
117
+ end
118
+ if max_value
119
+ # If the red high is greater than the max value we don't display the red high box
120
+ if red_high >= max_value
121
+ red_high = max_value
122
+ widths.red_high = 0
123
+ end
124
+ # Determine if any other limits values need to change
125
+ yellow_high = max_value if yellow_high >= max_value
126
+ green_high = max_value if green_high && green_high >= max_value
127
+ green_low = max_value if green_low && green_low >= max_value
128
+ yellow_low = max_value if yellow_low >= max_value
129
+ red_low = max_value if red_low >= max_value
130
+ end
90
131
 
91
- widths.yellow_low = ((yellow_low - red_low) / inner_value_range * 0.8 * length).round
92
- widths.yellow_high = ((red_high - yellow_high) / inner_value_range * 0.8 * length).round
132
+ # If red == yellow it means there is no red width
133
+ widths.red_low = 0 if red_low == yellow_low
134
+ widths.red_high = 0 if red_high == yellow_high
135
+ # Start with a scale of 0.8 in case we display the red
136
+ scale = 0.8
137
+ # Move the scale up if we're not displaying red
138
+ scale += 0.1 if widths.red_low == 0
139
+ scale += 0.1 if widths.red_high == 0
140
+
141
+ inner_value_range = red_high - red_low
142
+ widths.yellow_low = ((yellow_low - red_low) / inner_value_range * scale * length).round
143
+ widths.yellow_high = ((red_high - yellow_high) / inner_value_range * scale * length).round
93
144
 
94
145
  if green_high
95
- widths.green_low = ((green_low - yellow_low) / inner_value_range * 0.8 * length).round
96
- widths.green_high = ((yellow_high - green_high) / inner_value_range * 0.8 * length).round
146
+ widths.green_low = ((green_low - yellow_low) / inner_value_range * scale * length).round
147
+ widths.green_high = ((yellow_high - green_high) / inner_value_range * scale * length).round
97
148
  widths.blue = length - widths.red_low - widths.yellow_low - widths.green_low -
98
149
  widths.green_high - widths.yellow_high - widths.red_high
99
150
  else
100
151
  widths.green = length - widths.red_low - widths.yellow_low -
101
152
  widths.yellow_high - widths.red_high
102
153
  end
103
- widths
154
+ return [red_low, yellow_low, yellow_high, red_high, green_low, green_high], widths
104
155
  end
105
156
 
106
157
  protected
@@ -109,5 +160,4 @@ module Cosmos
109
160
  # Do nothing
110
161
  end
111
162
  end
112
-
113
- end # module Cosmos
163
+ end
@@ -11,9 +11,10 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/limits_widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Draw a bar which consists of the red low, yellow low, green with potentially
15
+ # a blue operational limits inside it, yellow high, and red high. Then draw a
16
+ # vertical black bar with a little black triangle at the current value location.
15
17
  class LimitsbarWidget < LimitsWidget
16
-
17
18
  def initialize(parent_layout, target_name, packet_name, item_name, value_type = :CONVERTED, width = 160, height = 25)
18
19
  super(parent_layout, target_name, packet_name, item_name, value_type, width, height)
19
20
  end
@@ -26,7 +27,7 @@ module Cosmos
26
27
  limits = get_limits()
27
28
  return unless limits
28
29
 
29
- widths = calculate_widths(limits, @bar_width)
30
+ limits, widths = calculate_widths(limits, @bar_width, @min_value, @max_value)
30
31
 
31
32
  # Set starting points
32
33
  x_pos = @x_pad
@@ -77,9 +78,23 @@ module Cosmos
77
78
  # Draw line at current value
78
79
  red_low = limits[0]
79
80
  red_high = limits[3]
80
- @bar_scale = (red_high - red_low) / 0.8
81
- @low_value = red_low - 0.1 * @bar_scale
82
- @high_value = red_high + 0.1 * @bar_scale
81
+ # Start with a diviser of 0.8 assuming we'll draw red limits
82
+ diviser = 0.8
83
+ # If there is a min or max value equal to the min or or max red limit
84
+ # it means we're not drawing red bar and the diviser increases
85
+ diviser += 0.1 if @min_value && limits[0] == @min_value
86
+ diviser += 0.1 if @max_value && limits[3] == @max_value
87
+ @bar_scale = (red_high - red_low) / diviser
88
+ if @min_value && @min_value >= red_low
89
+ @low_value = @min_value
90
+ else
91
+ @low_value = red_low - 0.1 * @bar_scale
92
+ end
93
+ if @max_value && @max_value <= red_high
94
+ @high_value = @max_value
95
+ else
96
+ @high_value = red_high + 0.1 * @bar_scale
97
+ end
83
98
 
84
99
  if @value.is_a?(Float) && (@value.infinite? || @value.nan?)
85
100
  if @value.infinite? == 1
@@ -112,5 +127,4 @@ module Cosmos
112
127
  additional_drawing(dc)
113
128
  end
114
129
  end
115
-
116
- end # module Cosmos
130
+ end
@@ -11,25 +11,31 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Displays a circle indicating the given telemetry point's limit state
15
+ # (red, yellow, green, blue). The circle is followed by the telemetry
16
+ # item name unless nil is passed to the full_label_display.
15
17
  class LimitscolorWidget < Qt::Label
16
18
  include Widget
17
19
 
18
- def initialize(parent_layout, target_name, packet_name, item_name, value_type = :CONVERTED, radius = 10, use_full_item_name = false)
20
+ def initialize(parent_layout, target_name, packet_name, item_name, value_type = :CONVERTED, radius = 10, full_label_display = false)
19
21
  super(target_name, packet_name, item_name, value_type)
20
22
  @value_type = :CONVERTED if @value_type == :WITH_UNITS
21
- use_full_item_name = ConfigParser::handle_true_false(use_full_item_name)
23
+ full_label_display = ConfigParser::handle_true_false_nil(full_label_display)
22
24
  @painter = nil
23
25
  @foreground = Cosmos::BLACK
24
26
  parent_layout.addWidget(self) if parent_layout
25
27
  @font = font()
26
28
  metrics = Cosmos.getFontMetrics(@font)
27
- if use_full_item_name
29
+ if full_label_display
28
30
  @item_text = "#{@target_name} #{@packet_name} #{@item_name}"
29
- else
31
+ text_width = metrics.width(@item_text)
32
+ elsif full_label_display == false
30
33
  @item_text = @item_name
34
+ text_width = metrics.width(@item_text)
35
+ else # no label
36
+ @item_text = nil
37
+ text_width = 0
31
38
  end
32
- text_width = metrics.width(@item_text)
33
39
  @radius = radius.to_i
34
40
  @diameter = @radius * 2
35
41
  @text_height = @font.pointSize
@@ -85,18 +91,18 @@ module Cosmos
85
91
  def paint_implementation(dc)
86
92
  dc.setBrush(Cosmos.getBrush(@foreground))
87
93
  dc.drawEllipse(0, 0, @diameter, @diameter)
88
- dc.setBrush(Cosmos.getBrush(Cosmos::BLACK))
89
- dc.drawText(@left_offset, @text_baseline, @item_text)
90
-
91
- #Additional drawing for subclasses
94
+ if @item_text
95
+ dc.setBrush(Cosmos.getBrush(Cosmos::BLACK))
96
+ dc.drawText(@left_offset, @text_baseline, @item_text)
97
+ end
98
+ # Additional drawing for subclasses
92
99
  additional_drawing(dc)
93
100
  end
94
101
 
95
102
  protected
96
103
 
97
- def additional_drawing (dc)
104
+ def additional_drawing(dc)
98
105
  # Do nothing
99
106
  end
100
107
  end
101
-
102
- end # module Cosmos
108
+ end
@@ -11,9 +11,10 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/limits_widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Draw a column which consists of the red low, yellow low, green with potentially
15
+ # a blue operational limits inside it, yellow high, and red high. Then draw a
16
+ # horizontal black bar with a little black triangle at the current value location.
15
17
  class LimitscolumnWidget < LimitsWidget
16
-
17
18
  def initialize(parent_layout, target_name, packet_name, item_name, value_type = :CONVERTED, width = 30, height = 100)
18
19
  super(parent_layout, target_name, packet_name, item_name, value_type, width, height)
19
20
  end
@@ -26,7 +27,7 @@ module Cosmos
26
27
  limits = get_limits()
27
28
  return unless limits
28
29
 
29
- widths = calculate_widths(limits, @bar_height)
30
+ limits, widths = calculate_widths(limits, @bar_height, @min_value, @max_value)
30
31
 
31
32
  # Set starting points
32
33
  x_pos = @x_pad
@@ -77,9 +78,23 @@ module Cosmos
77
78
  # Draw line at current value
78
79
  red_low = limits[0]
79
80
  red_high = limits[3]
80
- @bar_scale = (red_high - red_low) / 0.8
81
- @low_value = red_low - 0.1 * @bar_scale
82
- @high_value = red_high + 0.1 * @bar_scale
81
+ # Start with a diviser of 0.8 assuming we'll draw red limits
82
+ diviser = 0.8
83
+ # If there is a min or max value equal to the min or or max red limit
84
+ # it means we're not drawing red bar and the diviser increases
85
+ diviser += 0.1 if @min_value && limits[0] == @min_value
86
+ diviser += 0.1 if @max_value && limits[3] == @max_value
87
+ @bar_scale = (red_high - red_low) / diviser
88
+ if @min_value && @min_value >= red_low
89
+ @low_value = @min_value
90
+ else
91
+ @low_value = red_low - 0.1 * @bar_scale
92
+ end
93
+ if @max_value && @max_value <= red_high
94
+ @high_value = @max_value
95
+ else
96
+ @high_value = red_high + 0.1 * @bar_scale
97
+ end
83
98
 
84
99
  if @value.is_a?(Float) && (@value.infinite? || @value.nan?)
85
100
  if @value.infinite? == 1
@@ -112,5 +127,4 @@ module Cosmos
112
127
  additional_drawing(dc)
113
128
  end
114
129
  end
115
-
116
- end # module Cosmos
130
+ end
@@ -13,7 +13,7 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
13
13
  require 'cosmos/gui/line_graph/line_graph'
14
14
 
15
15
  module Cosmos
16
-
16
+ # Displays a graph of the given telemetry item
17
17
  class LinegraphWidget < LineGraph
18
18
  include Widget
19
19
 
@@ -59,5 +59,4 @@ module Cosmos
59
59
  def get_tooltip_text
60
60
  return nil
61
61
  end
62
-
63
- end # module Cosmos
62
+ end
@@ -12,7 +12,9 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/layout_widget'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Layout widget which creates a grid of the specified number of columns.
16
+ # A new row is created as widgets are added to the grid and exceed the
17
+ # specified number of columns.
16
18
  class MatrixbycolumnsWidget < Qt::GridLayout
17
19
  include Widget
18
20
  include LayoutWidget
@@ -54,5 +56,4 @@ module Cosmos
54
56
  end
55
57
  end
56
58
  end
57
-
58
- end # module Cosmos
59
+ end
@@ -11,7 +11,6 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
-
15
14
  # The MultiWidget module must be included after the Widget module by all widget
16
15
  # classes that consist of multiple other COSMOS widgets. It overrides methods
17
16
  # in the Widget module to support setting all the subwidgets that comprise
@@ -112,5 +111,4 @@ module Cosmos
112
111
  end
113
112
  end
114
113
  end
115
-
116
- end # module Cosmos
114
+ end
@@ -11,24 +11,29 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Displays a progress bar based on the given telemetry item. The item should
15
+ # return a value between 0 and 100 which will be used to update the progress.
16
+ # You can also set a scale factor to multiply the telemetry item by before
17
+ # setting the progress.
15
18
  class ProgressbarWidget < Qt::ProgressBar
16
19
  include Widget
17
20
 
18
21
  def initialize(parent_layout, target_name, packet_name, item_name, scale_factor = 1.0, width = 80, value_type = :CONVERTED)
19
22
  super(target_name, packet_name, item_name, value_type)
20
23
  @scale_factor = scale_factor.to_f
21
- self.setFixedWidth(width.to_i)
24
+ setFixedWidth(width.to_i)
22
25
  parent_layout.addWidget(self) if parent_layout
23
26
  end
24
27
 
25
28
  def value=(value)
26
- setValue((value.to_f * @scale_factor).to_i)
29
+ value = (value.to_f * @scale_factor).to_i
30
+ # Truncate to 100 because otherwise it will not display
31
+ value = 100 if value > 100
32
+ setValue(value)
27
33
  end
28
34
 
29
35
  def ProgressbarWidget.takes_value?
30
36
  return true
31
37
  end
32
38
  end
33
-
34
- end # module Cosmos
39
+ end
@@ -12,8 +12,12 @@ require 'cosmos'
12
12
  require 'cosmos/tools/tlm_viewer/widgets/widget'
13
13
 
14
14
  module Cosmos
15
-
16
- class RadiobuttonWidget < Qt::RadioButton
15
+ # Create a radio button. Typically used as a NAMED_WIDGET which is then
16
+ # referenced by a BUTTON to perform an action. For example:
17
+ # NAMED_WIDGET ABORT RADIOBUTTON 'Abort' CHECKED
18
+ # NAMED_WIDGET CLEAR RADIOBUTTON 'Clear' UNCHECKED
19
+ # BUTTON 'Send' 'if get_named_widget("ABORT").checked? then cmd("INST ABORT") else cmd("INST CLEAR") end'
20
+ class RadiobuttonWidget < Qt::RadioButton
17
21
  include Widget
18
22
 
19
23
  def initialize(parent_layout, radiobutton_text, checked = 'UNCHECKED')
@@ -34,5 +38,4 @@ module Cosmos
34
38
  self.isChecked()
35
39
  end
36
40
  end
37
-
38
- end # module Cosmos
41
+ end
@@ -11,10 +11,10 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/limitsbar_widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Display a bar with a vertical current value indicator which moves based
15
+ # on the value of the given telemetry item
15
16
  class RangebarWidget < LimitsbarWidget
16
-
17
- def initialize (parent_layout, target_name, packet_name, item_name, low_value, high_value, value_type = :CONVERTED, width = 160, height = 25)
17
+ def initialize(parent_layout, target_name, packet_name, item_name, low_value, high_value, value_type = :CONVERTED, width = 160, height = 25)
18
18
  super(parent_layout, target_name, packet_name, item_name, value_type, width, height)
19
19
  @low_value = low_value.to_s.convert_to_value
20
20
  @high_value = high_value.to_s.convert_to_value
@@ -59,7 +59,5 @@ module Cosmos
59
59
  #Additional drawing for subclasses
60
60
  additional_drawing(dc)
61
61
  end
62
-
63
62
  end
64
-
65
- end # module Cosmos
63
+ end
@@ -11,9 +11,9 @@
11
11
  require 'cosmos/tools/tlm_viewer/widgets/limitscolumn_widget'
12
12
 
13
13
  module Cosmos
14
-
14
+ # Display a column with a horizontal current value indicator which moves based
15
+ # on the value of the given telemetry item
15
16
  class RangecolumnWidget < LimitscolumnWidget
16
-
17
17
  def initialize(parent_layout, target_name, packet_name, item_name, low_value, high_value, value_type = :CONVERTED, width = 30, height = 100)
18
18
  super(parent_layout, target_name, packet_name, item_name, value_type, width, height)
19
19
  @low_value = low_value.to_s.convert_to_value
@@ -59,7 +59,5 @@ module Cosmos
59
59
  #Additional drawing for subclasses
60
60
  additional_drawing(dc)
61
61
  end
62
-
63
62
  end
64
-
65
- end # module Cosmos
63
+ end
@@ -12,7 +12,9 @@ require 'cosmos/tools/tlm_viewer/widgets/widget'
12
12
  require 'cosmos/gui/utilities/screenshot'
13
13
 
14
14
  module Cosmos
15
-
15
+ # Creates a button that takes a screenshot of the screen it is on.
16
+ # The output file location can be specified or by default it goes to
17
+ # the system LOGS directory (output/logs)
16
18
  class ScreenshotbuttonWidget < Qt::PushButton
17
19
  include Widget
18
20
 
@@ -30,5 +32,4 @@ module Cosmos
30
32
  end
31
33
  end
32
34
  end
33
-
34
- end # module Cosmos
35
+ end