cosmos 3.9.2 → 4.0.0

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 (438) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +23 -0
  3. data/.travis.yml +1 -0
  4. data/.yardopts +3 -0
  5. data/Gemfile +1 -1
  6. data/Manifest.txt +137 -52
  7. data/Rakefile +50 -44
  8. data/autohotkey/config/system/system.txt +0 -5
  9. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
  10. data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
  11. data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
  12. data/autohotkey/config/targets/META/screens/data.txt +12 -0
  13. data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  14. data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  15. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  16. data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
  17. data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
  18. data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
  19. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
  20. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  21. data/autohotkey/tools/CmdSequence +14 -0
  22. data/autohotkey/tools/CmdSequenceAHK +23 -0
  23. data/autohotkey/tools/CmdSequenceAHK2 +16 -0
  24. data/autohotkey/tools/cmd_extractor.ahk +2 -2
  25. data/autohotkey/tools/cmd_sender.ahk +4 -6
  26. data/autohotkey/tools/cmd_sequence.ahk +215 -0
  27. data/autohotkey/tools/cmd_sequence2.ahk +23 -0
  28. data/autohotkey/tools/data_viewer.ahk +2 -3
  29. data/autohotkey/tools/limits_monitor.ahk +9 -11
  30. data/autohotkey/tools/open_gl_builder.ahk +1 -2
  31. data/autohotkey/tools/packet_viewer.ahk +51 -35
  32. data/autohotkey/tools/replay.ahk +1 -2
  33. data/autohotkey/tools/script_runner.ahk +1 -2
  34. data/autohotkey/tools/script_runner2.ahk +1 -2
  35. data/autohotkey/tools/test_runner2.ahk +1 -5
  36. data/autohotkey/tools/test_runner3.ahk +1 -3
  37. data/autohotkey/tools/tlm_grapher.ahk +1 -3
  38. data/autohotkey/tools/tlm_grapher3.ahk +1 -2
  39. data/autohotkey/tools/tlm_viewer.ahk +8 -3
  40. data/autohotkey/tools/tlm_viewer2.ahk +2 -3
  41. data/autohotkey/tools/tlm_viewer5.ahk +1 -2
  42. data/cosmos.gemspec +26 -20
  43. data/data/cmd_sequence.png +0 -0
  44. data/data/config/_array_params.yaml +23 -0
  45. data/data/config/_id_items.yaml +24 -0
  46. data/data/config/_id_params.yaml +58 -0
  47. data/data/config/_interfaces.yaml +206 -0
  48. data/data/config/_items.yaml +20 -0
  49. data/data/config/_params.yaml +58 -0
  50. data/data/config/cmd_tlm_server.yaml +110 -0
  51. data/data/config/command.yaml +38 -0
  52. data/data/config/command_modifiers.yaml +127 -0
  53. data/data/config/command_telemetry.yaml +3 -0
  54. data/data/config/data_viewer.yaml +43 -0
  55. data/data/config/handbook_creator.yaml +23 -0
  56. data/data/config/housekeeping_params.yaml +71 -0
  57. data/data/config/interface_modifiers.yaml +44 -0
  58. data/data/config/item_modifiers.yaml +172 -0
  59. data/data/config/launcher.yaml +117 -0
  60. data/data/config/limits_monitor.yaml +53 -0
  61. data/data/config/linegraph_params.yaml +30 -0
  62. data/data/config/linegraph_plot.yaml +106 -0
  63. data/data/config/page_modifiers.yaml +128 -0
  64. data/data/config/param_item_modifiers.yaml +41 -0
  65. data/data/config/parameter_modifiers.yaml +144 -0
  66. data/data/config/protocols.yaml +257 -0
  67. data/data/config/screen.yaml +151 -0
  68. data/data/config/script_runner.yaml +15 -0
  69. data/data/config/system.yaml +153 -0
  70. data/data/config/table_manager.yaml +76 -0
  71. data/data/config/table_parameter_modifiers.yaml +9 -0
  72. data/data/config/target.yaml +71 -0
  73. data/data/config/telemetry.yaml +73 -0
  74. data/data/config/telemetry_modifiers.yaml +129 -0
  75. data/data/config/test_runner.yaml +118 -0
  76. data/data/config/tlm_extractor.yaml +109 -0
  77. data/data/config/tlm_grapher.yaml +78 -0
  78. data/data/config/tlm_viewer.yaml +107 -0
  79. data/data/config/unknown.yaml +3 -0
  80. data/data/config/widgets.yaml +1339 -0
  81. data/data/config/xy_params.yaml +50 -0
  82. data/data/config/xy_plot.yaml +12 -0
  83. data/data/config_editor.png +0 -0
  84. data/data/crc.txt +172 -161
  85. data/data/delete.png +0 -0
  86. data/demo/config/data/crc.txt +56 -36
  87. data/demo/config/data/meta_init.txt +1 -4
  88. data/demo/config/system/system.txt +15 -3
  89. data/demo/config/system/system2.txt +13 -3
  90. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
  91. data/demo/config/targets/EXAMPLE/target.txt +3 -1
  92. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
  93. data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
  94. data/demo/config/targets/INST/screens/adcs.txt +39 -15
  95. data/demo/config/targets/INST/screens/commanding.txt +26 -19
  96. data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
  97. data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
  98. data/demo/config/targets/INST/screens/tabs.txt +0 -2
  99. data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
  100. data/demo/config/targets/INST/tables/EventAction.csv +9 -0
  101. data/demo/config/targets/INST/tables/EventAction.dat +0 -0
  102. data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
  103. data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
  104. data/demo/config/targets/INST/target.txt +4 -0
  105. data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
  106. data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
  107. data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
  108. data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
  109. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
  110. data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  111. data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  112. data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  113. data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
  114. data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
  115. data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
  116. data/demo/config/targets/SYSTEM/target.txt +12 -0
  117. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
  118. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
  119. data/demo/config/targets/TEMPLATED/target.txt +2 -0
  120. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
  121. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
  122. data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
  123. data/demo/config/tools/launcher/launcher.txt +9 -6
  124. data/demo/config/tools/launcher/launcher2.txt +16 -13
  125. data/demo/config/tools/launcher/launcher_mini.txt +45 -0
  126. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
  127. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
  128. data/demo/config/tools/test_runner/test_runner.txt +1 -1
  129. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
  130. data/demo/lib/example_background_task.rb +9 -5
  131. data/demo/lib/example_target.rb +5 -15
  132. data/demo/lib/scpi_target.rb +4 -10
  133. data/demo/procedures/cosmos_api_test.rb +17 -0
  134. data/demo/tools/CmdSequence +16 -0
  135. data/demo/tools/CmdSequence.bat +9 -0
  136. data/demo/tools/ConfigEditor +16 -0
  137. data/demo/tools/ConfigEditor.bat +9 -0
  138. data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  139. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  140. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  141. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  142. data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  143. data/ext/cosmos/ext/packet/packet.c +5 -5
  144. data/install/config/data/crc.txt +12 -8
  145. data/install/config/system/system.txt +13 -3
  146. data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
  147. data/install/config/targets/SYSTEM/target.txt +12 -0
  148. data/install/tools/CmdSequence +16 -0
  149. data/install/tools/CmdSequence.bat +9 -0
  150. data/install/tools/ConfigEditor +16 -0
  151. data/install/tools/ConfigEditor.bat +9 -0
  152. data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  153. data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  154. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  155. data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  156. data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  157. data/lib/cosmos.rb +1 -1
  158. data/lib/cosmos/config/config_parser.rb +147 -59
  159. data/lib/cosmos/config/meta_config_parser.rb +57 -0
  160. data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
  161. data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
  162. data/lib/cosmos/core_ext/array.rb +45 -5
  163. data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
  164. data/lib/cosmos/core_ext/file.rb +2 -2
  165. data/lib/cosmos/core_ext/kernel.rb +1 -6
  166. data/lib/cosmos/core_ext/objectspace.rb +0 -2
  167. data/lib/cosmos/core_ext/string.rb +27 -4
  168. data/lib/cosmos/core_ext/time.rb +39 -10
  169. data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
  170. data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
  171. data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
  172. data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
  173. data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
  174. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
  175. data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
  176. data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
  177. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
  178. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
  179. data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
  180. data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
  181. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
  182. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
  183. data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
  184. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
  185. data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
  186. data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
  187. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
  188. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
  189. data/lib/cosmos/gui/dialogs/splash.rb +1 -1
  190. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
  191. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
  192. data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
  193. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
  194. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
  195. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
  196. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
  197. data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
  198. data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
  199. data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
  200. data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
  201. data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
  202. data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
  203. data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
  204. data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
  205. data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
  206. data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
  207. data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
  208. data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
  209. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
  210. data/lib/cosmos/gui/qt.rb +1 -1
  211. data/lib/cosmos/gui/qt_tool.rb +21 -10
  212. data/lib/cosmos/gui/text/completion.rb +23 -2
  213. data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
  214. data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
  215. data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
  216. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
  217. data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
  218. data/lib/cosmos/interfaces.rb +10 -0
  219. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
  220. data/lib/cosmos/interfaces/interface.rb +240 -22
  221. data/lib/cosmos/interfaces/linc_interface.rb +3 -5
  222. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
  223. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
  224. data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
  225. data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
  226. data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
  227. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
  228. data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
  229. data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
  230. data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
  231. data/lib/cosmos/interfaces/serial_interface.rb +28 -23
  232. data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
  233. data/lib/cosmos/interfaces/stream_interface.rb +36 -108
  234. data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
  235. data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
  236. data/lib/cosmos/interfaces/udp_interface.rb +51 -83
  237. data/lib/cosmos/io/buffered_file.rb +92 -2
  238. data/lib/cosmos/io/json_drb.rb +2 -2
  239. data/lib/cosmos/io/posix_serial_driver.rb +3 -1
  240. data/lib/cosmos/io/raw_logger.rb +3 -3
  241. data/lib/cosmos/io/serial_driver.rb +14 -5
  242. data/lib/cosmos/io/win32_serial_driver.rb +16 -4
  243. data/lib/cosmos/packet_logs.rb +0 -1
  244. data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
  245. data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
  246. data/lib/cosmos/packets/binary_accessor.rb +599 -32
  247. data/lib/cosmos/packets/commands.rb +48 -24
  248. data/lib/cosmos/packets/packet.rb +140 -54
  249. data/lib/cosmos/packets/packet_config.rb +0 -2
  250. data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
  251. data/lib/cosmos/packets/structure.rb +81 -33
  252. data/lib/cosmos/packets/structure_item.rb +45 -5
  253. data/lib/cosmos/packets/telemetry.rb +149 -55
  254. data/lib/cosmos/script/api_shared.rb +1000 -0
  255. data/lib/cosmos/script/commands.rb +2 -2
  256. data/lib/cosmos/script/extract.rb +19 -4
  257. data/lib/cosmos/script/limits.rb +2 -0
  258. data/lib/cosmos/script/script.rb +1 -1
  259. data/lib/cosmos/script/scripting.rb +4 -784
  260. data/lib/cosmos/script/telemetry.rb +44 -23
  261. data/lib/cosmos/script/tools.rb +15 -69
  262. data/lib/cosmos/streams/serial_stream.rb +12 -19
  263. data/lib/cosmos/streams/stream.rb +2 -11
  264. data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
  265. data/lib/cosmos/system/system.rb +187 -31
  266. data/lib/cosmos/system/target.rb +11 -2
  267. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
  268. data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
  269. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
  270. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
  271. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
  272. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
  273. data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
  274. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
  275. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
  276. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
  277. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
  278. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
  279. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
  280. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
  281. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
  282. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
  283. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
  284. data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
  285. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
  286. data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
  287. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
  288. data/lib/cosmos/tools/launcher/launcher.rb +29 -12
  289. data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
  290. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
  291. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
  292. data/lib/cosmos/tools/replay/replay.rb +36 -20
  293. data/lib/cosmos/tools/replay/replay_server.rb +1 -1
  294. data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
  295. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
  296. data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
  297. data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
  298. data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
  299. data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
  300. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
  301. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
  302. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
  303. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
  304. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
  305. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
  306. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
  307. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
  308. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
  309. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
  310. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
  311. data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
  312. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
  313. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
  314. data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
  315. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
  316. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
  317. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
  318. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
  319. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
  320. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
  321. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
  322. data/lib/cosmos/top_level.rb +34 -24
  323. data/lib/cosmos/utilities/crc.rb +108 -6
  324. data/lib/cosmos/utilities/csv.rb +68 -14
  325. data/lib/cosmos/utilities/logger.rb +2 -2
  326. data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
  327. data/lib/cosmos/version.rb +6 -6
  328. data/lib/cosmos/win32/win32_main.rb +50 -46
  329. data/run_gui_tests.bat +3 -1
  330. data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
  331. data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
  332. data/spec/core_ext/file_spec.rb +1 -1
  333. data/spec/core_ext/objectspace_spec.rb +12 -9
  334. data/spec/core_ext/string_spec.rb +6 -0
  335. data/spec/core_ext/time_spec.rb +10 -0
  336. data/spec/gui/line_graph/line_clip_spec.rb +226 -224
  337. data/spec/gui/qt_spec.rb +81 -79
  338. data/spec/install/config/system/system.txt +0 -6
  339. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
  340. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
  341. data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  342. data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
  343. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  344. data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
  345. data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
  346. data/spec/install/config/targets/SYSTEM/target.txt +12 -0
  347. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
  348. data/spec/interfaces/interface_spec.rb +402 -18
  349. data/spec/interfaces/linc_interface_spec.rb +37 -39
  350. data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
  351. data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
  352. data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
  353. data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
  354. data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
  355. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
  356. data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
  357. data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
  358. data/spec/interfaces/serial_interface_spec.rb +35 -34
  359. data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
  360. data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
  361. data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
  362. data/spec/interfaces/udp_interface_spec.rb +120 -55
  363. data/spec/io/serial_driver_spec.rb +41 -39
  364. data/spec/io/udp_sockets_spec.rb +13 -8
  365. data/spec/io/win32_serial_driver_spec.rb +62 -59
  366. data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
  367. data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
  368. data/spec/packets/commands_spec.rb +5 -5
  369. data/spec/packets/packet_spec.rb +2 -14
  370. data/spec/script/extract_spec.rb +21 -7
  371. data/spec/script/scripting_spec.rb +261 -6
  372. data/spec/script/telemetry_spec.rb +17 -9
  373. data/spec/spec_helper.rb +26 -10
  374. data/spec/streams/serial_stream_spec.rb +87 -82
  375. data/spec/streams/tcpip_client_stream_spec.rb +12 -4
  376. data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
  377. data/spec/system/system_spec.rb +66 -50
  378. data/spec/system/target_spec.rb +33 -11
  379. data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
  380. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
  381. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
  382. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
  383. data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
  384. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
  385. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
  386. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
  387. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
  388. data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
  389. data/spec/top_level/top_level_spec.rb +39 -11
  390. data/spec/utilities/csv_spec.rb +62 -20
  391. data/tasks/gemfile_stats.rake +6 -3
  392. data/test/performance/config/system/system_packets.txt +0 -1
  393. data/test/performance/config/system/system_threads.txt +0 -1
  394. metadata +177 -92
  395. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  396. data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
  397. data/autohotkey/config/targets/COSMOS/target.txt +0 -5
  398. data/autohotkey/userpath.txt +0 -1
  399. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  400. data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
  401. data/demo/config/targets/COSMOS/screens/version.txt +0 -19
  402. data/demo/config/targets/COSMOS/target.txt +0 -11
  403. data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
  404. data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
  405. data/demo/userpath.txt +0 -1
  406. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  407. data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
  408. data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
  409. data/install/config/targets/COSMOS/screens/version.txt +0 -19
  410. data/install/config/targets/COSMOS/target.txt +0 -9
  411. data/install/config/targets/SYSTEM/README.txt +0 -1
  412. data/install/userpath.txt +0 -1
  413. data/lib/cosmos/io/tcpip_server.rb +0 -571
  414. data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
  415. data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
  416. data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
  417. data/lib/cosmos/streams/stream_protocol.rb +0 -373
  418. data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
  419. data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
  420. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
  421. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
  422. data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
  423. data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
  424. data/spec/install/config/targets/COSMOS/target.txt +0 -5
  425. data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
  426. data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
  427. data/spec/install/userpath.txt +0 -1
  428. data/spec/interfaces/stream_interface_spec.rb +0 -157
  429. data/spec/io/tcpip_server_spec.rb +0 -338
  430. data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
  431. data/spec/streams/burst_stream_protocol_spec.rb +0 -32
  432. data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
  433. data/spec/streams/length_stream_protocol_spec.rb +0 -300
  434. data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
  435. data/spec/streams/stream_protocol_spec.rb +0 -346
  436. data/spec/streams/template_stream_protocol_spec.rb +0 -156
  437. data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
  438. data/test/performance/userpath.txt +0 -1
@@ -0,0 +1,38 @@
1
+ ---
2
+ COMMAND:
3
+ modifiers:
4
+ <%= MetaConfigParser.load('command_modifiers.yaml').to_meta_config_yaml(4) %>
5
+ summary: Defines a new command packet
6
+ parameters:
7
+ - name: Target
8
+ required: true
9
+ description: Name of the target this command is associated with
10
+ values: <%= System.targets.keys %>
11
+ - name: Command
12
+ required: true
13
+ description: Name of this command. Also referred to as its mnemonic.
14
+ Must be unique to commands to this target. Ideally will be as short and clear as possible.
15
+ values: \D\S*
16
+ - name: Endianness
17
+ required: true
18
+ description: Indicates if the data in this command is to be sent in Big Endian or Little Endian format
19
+ values: ['BIG_ENDIAN', 'LITTLE_ENDIAN']
20
+ - name: Description
21
+ required: false
22
+ description: Description of this command which must be enclosed with quotes
23
+ values: "['\"].*['\"]"
24
+ SELECT_COMMAND:
25
+ modifiers:
26
+ <%= MetaConfigParser.load('command_modifiers.yaml').to_meta_config_yaml(4) %>
27
+ summary: Selects an existing command packet for editing
28
+ description: Typically used in a separate configuration file from where the original
29
+ command is defined to override or add to the existing command definition
30
+ parameters:
31
+ - name: Target Name
32
+ required: true
33
+ description: Name of the target this command is associated with
34
+ values: <%= System.targets.keys %>
35
+ - name: Command Name
36
+ required: true
37
+ description: Name of the command to select
38
+ values: .*
@@ -0,0 +1,127 @@
1
+ ---
2
+ PARAMETER:
3
+ modifiers:
4
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
5
+ summary: Defines a command parameter in the current command packet
6
+ parameters:
7
+ - name: Name
8
+ required: true
9
+ description: Name of the parameter. Must be unique within the command.
10
+ values: '\D\S*'
11
+ - name: Bit Offset
12
+ required: true
13
+ description: Bit offset into the command packet of the Most Significant Bit of this parameter.
14
+ May be negative to indicate on offset from the end of the packet.
15
+ Always use a bit offset of 0 for derived parameters.
16
+ values: '[-]?\d+'
17
+ <%= MetaConfigParser.load('_params.yaml').to_meta_config_yaml(4) %>
18
+ APPEND_PARAMETER:
19
+ modifiers:
20
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
21
+ summary: Defines a command parameter in the current command packet
22
+ parameters:
23
+ - name: Name
24
+ required: true
25
+ description: Name of the parameter. Must be unique within the command.
26
+ values: .+
27
+ <%= MetaConfigParser.load('_params.yaml').to_meta_config_yaml(4) %>
28
+ ID_PARAMETER:
29
+ modifiers:
30
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
31
+ summary: Defines an identification command parameter in the current command packet
32
+ description: ID parameters are used to identify the binary block of data as a
33
+ particular command. A command packet may have one or more ID_PARAMETERs and all
34
+ must match the binary data for the command to be identified.
35
+ parameters:
36
+ - name: Name
37
+ required: true
38
+ description: Name of the parameter. Must be unique within the command.
39
+ values: .+
40
+ - name: Bit Offset
41
+ required: true
42
+ description: Bit offset into the command packet of the Most Significant Bit of this parameter.
43
+ May be negative to indicate on offset from the end of the packet.
44
+ Always use a bit offset of 0 for derived parameters.
45
+ values: '[-]?\d+'
46
+ <%= MetaConfigParser.load('_id_params.yaml').to_meta_config_yaml(4) %>
47
+ APPEND_ID_PARAMETER:
48
+ modifiers:
49
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
50
+ summary: Defines an identification command parameter in the current command packet
51
+ description: ID parameters are used to identify the binary block of data as a
52
+ particular command. A command packet may have one or more ID_PARAMETERs and all
53
+ must match the binary data for the command to be identified.
54
+ parameters:
55
+ - name: Name
56
+ required: true
57
+ description: Name of the parameter. Must be unique within the command.
58
+ values: .+
59
+ <%= MetaConfigParser.load('_id_params.yaml').to_meta_config_yaml(4) %>
60
+ ARRAY_PARAMETER:
61
+ modifiers:
62
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
63
+ summary: Defines a command parameter in the current command packet that is an array
64
+ parameters:
65
+ - name: Name
66
+ required: true
67
+ description: Name of the parameter. Must be unique within the command.
68
+ values: \'
69
+ - name: Bit Offset
70
+ required: true
71
+ description: Bit offset into the command packet of the Most Significant Bit of this parameter.
72
+ May be negative to indicate on offset from the end of the packet.
73
+ Always use a bit offset of 0 for derived parameters.
74
+ values: '[-]?\d+'
75
+ <%= MetaConfigParser.load('_array_params.yaml').to_meta_config_yaml(4) %>
76
+ APPEND_ARRAY_PARAMETER:
77
+ modifiers:
78
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
79
+ summary: Defines a command parameter in the current command packet that is an array
80
+ parameters:
81
+ - name: Name
82
+ required: true
83
+ description: Name of the parameter. Must be unique within the command.
84
+ values: '\D\S*'
85
+ <%= MetaConfigParser.load('_array_params.yaml').to_meta_config_yaml(4) %>
86
+ SELECT_PARAMETER:
87
+ modifiers:
88
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
89
+ summary: Selects an existing command parameter for editing
90
+ parameters:
91
+ - name: Parameter
92
+ required: true
93
+ description: Name of the parameter to select for modification
94
+ values: .+
95
+ HIDDEN:
96
+ summary: Hides this command from all COSMOS tools such as Command Sender and Handbook Creator
97
+ description: Hidden commands do not appear in the Script Runner popup helper when writing scripts.
98
+ The command still exists in the system and can be sent by scripts.
99
+ DISABLED:
100
+ summary: Disables this command from being sent
101
+ description: Hides the command and also disables it from being sent by scripts.
102
+ Attempts to send DISABLED commands result in an error message.
103
+ DISABLE_MESSAGES:
104
+ summary: Disable the Server from printing cmd(...) messages. Commands are still logged.
105
+ META:
106
+ summary: Stores metadata for the current command
107
+ description: Meta data is user specific data that can be used by custom tools
108
+ for various purposes. One example is to store additional information needed
109
+ to generate source code header files.
110
+ parameters:
111
+ - name: Meta Name
112
+ required: true
113
+ description: Name of the metadata to store
114
+ values: .*
115
+ - name: Meta Values
116
+ required: false
117
+ description: One or more values to be stored for this Meta Name
118
+ values: .*
119
+ HAZARDOUS:
120
+ summary: Designates the current command as hazardous
121
+ description: Sending a hazardous command causes a dialog asking for confirmation
122
+ before sending the command
123
+ parameters:
124
+ - name: Description
125
+ required: false
126
+ description: Description for why the command is hazardous which must be enclosed with quotes
127
+ values: "['\"].*['\"]"
@@ -0,0 +1,3 @@
1
+ ---
2
+ <%= MetaConfigParser.load('command.yaml').to_meta_config_yaml(0) %>
3
+ <%= MetaConfigParser.load('telemetry.yaml').to_meta_config_yaml(0) %>
@@ -0,0 +1,43 @@
1
+ ---
2
+ AUTO_START:
3
+ summary: Automatically start Data Viewer and connect to the Server
4
+ AUTO_TARGET_COMPONENTS:
5
+ summary: Automatically load all data_viewer.txt configuration files in each target
6
+ TARGET_COMPONENT:
7
+ summary: Load a Data Viewer configuration file in the specified target
8
+ parameters:
9
+ - name: Target
10
+ required: true
11
+ description: Name of the target
12
+ values: <%= System.targets.keys %>
13
+ - name: Filename
14
+ required: false
15
+ description: The Data Viewer configuration file name. Defaults to data_viewer.txt.
16
+ values: '(.+\.txt)?'
17
+ COMPONENT:
18
+ summary: Declare a Data Viewer component
19
+ parameters:
20
+ - name: Tab Name
21
+ required: true
22
+ description: Name of the component which shows up in the GUI tab
23
+ values: .+
24
+ - name: Filename
25
+ required: true
26
+ description: Name of the Ruby file which contains the component class
27
+ values: '.+\.rb'
28
+ - name: Options
29
+ required: false
30
+ description: Optional parameters that are sent to the component constructor
31
+ values: .*
32
+ modifiers:
33
+ PACKET:
34
+ summary: Declare a packet to process by the component
35
+ parameters:
36
+ - name: Target
37
+ required: true
38
+ description: Name of the target
39
+ values: <%= System.targets.keys %>
40
+ - name: Packet
41
+ required: true
42
+ description: Name of the packet
43
+ values: .+
@@ -0,0 +1,23 @@
1
+ ---
2
+ PAGE:
3
+ modifiers:
4
+ <%= MetaConfigParser.load('page_modifiers.yaml').to_meta_config_yaml(4) %>
5
+ summary: Create a new top level webpage
6
+ parameters:
7
+ - name: Filename
8
+ required: true
9
+ description: Name of the HTML file
10
+ values: '.*\.html'
11
+ TARGET_PAGES:
12
+ modifiers:
13
+ <%= MetaConfigParser.load('page_modifiers.yaml').to_meta_config_yaml(4) %>
14
+ summary: Create a new webpage for each of the defined TARGETS
15
+ description: The page will be generated for each target. A top level "Targets"
16
+ drop down will be created with links to all the generated target pages.
17
+ parameters:
18
+ - name: Filename Postfix
19
+ required: true
20
+ description: The postfix will be applied to each generated target file.
21
+ For example, a target named INST with a postfix of '_cmd_tlm.html' will
22
+ result in a file named 'inst_cmd_tlm.html'.
23
+ values: '.*\.html'
@@ -0,0 +1,71 @@
1
+ ---
2
+ # Require housekeeping_data_object for the ANALYSIS_TYPES
3
+ <% require 'cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb' %>
4
+ ITEM:
5
+ summary: Graph the specified item
6
+ parameters:
7
+ - name: Target Name
8
+ description: The target name
9
+ required: true
10
+ values: <%= System.targets.keys %>
11
+ - name: Packet Name
12
+ description: The packet name
13
+ required: true
14
+ values: .+
15
+ - name: Item Name
16
+ description: The item name
17
+ required: true
18
+ values: .+
19
+ ITEM_ARRAY_INDEX:
20
+ summary: If the ITEM is an ARRAY, this keyword specifies which array item to graph
21
+ parameters:
22
+ - name: Index
23
+ required: true
24
+ description: 0 based array Index
25
+ values: \d+
26
+ TIME_ITEM:
27
+ summary: Specify the item in the packet representing the time value
28
+ parameters:
29
+ - name: Time Item Name
30
+ description: The time item is typically RECEIVED_TIMESECONDS
31
+ required: true
32
+ values: .+
33
+ FORMATTED_TIME_ITEM:
34
+ summary: Specify the item in the packet representing the formatted time value
35
+ parameters:
36
+ - name: Time Item Name
37
+ description: The time item is typically RECEIVED_TIMEFORMATTED
38
+ required: true
39
+ values: .+
40
+ VALUE_TYPE:
41
+ summary: How the value should be displayed
42
+ parameters:
43
+ - name: Item Value Type
44
+ description: Should the value be used raw or converted
45
+ required: true
46
+ values: ['RAW','CONVERTED']
47
+ ANALYSIS:
48
+ summary: Apply an analysis to the given value
49
+ parameters:
50
+ - name: Analysis Type
51
+ description: The type of analysis to perform on the value before graphing
52
+ required: true
53
+ values: <%= HousekeepingDataObject::ANALYSIS_TYPES.collect {|type| type.to_s } %>
54
+ ANALYSIS_SAMPLES:
55
+ summary: The number of samples to use when performing analysis. Only valid with the
56
+ ANALYSIS keyword.
57
+ parameters:
58
+ - name: Samples
59
+ description: Number of samples
60
+ required: true
61
+ values: \d+
62
+ SHOW_LIMITS_LINES:
63
+ summary: Whether to show the limits line on the graph
64
+ description: The limits lines are horizontal lines which intercept the Y value at the
65
+ defined limits values. The red, yellow, and green limits are drawn with lines with the
66
+ respective colors.
67
+ parameters:
68
+ - name: Display
69
+ description: Whether to display the limits lines
70
+ required: true
71
+ values: ['TRUE','FALSE']
@@ -0,0 +1,44 @@
1
+ ---
2
+ TARGET:
3
+ summary: Maps a target name to an interface
4
+ parameters:
5
+ - name: Target Name
6
+ required: true
7
+ description: Target name to map to this interface
8
+ values: <%= System.targets.keys %>
9
+ DONT_CONNECT:
10
+ summary: Server will not automatically try to connect to the interface at startup
11
+ DONT_RECONNECT:
12
+ summary: Server will not try to reconnect to the interface if the connection is lost
13
+ RECONNECT_DELAY:
14
+ summary: Reconnect delay in seconds
15
+ description: If DONT_RECONNECT is not present the Server will try to reconnect to an
16
+ interface if the connection is lost. Reconnect delay sets the interval in seconds
17
+ between reconnect tries.
18
+ parameters:
19
+ - name: Delay
20
+ required: true
21
+ description: Delay in seconds between reconnect attempts. The default is 15 seconds.
22
+ values: ([0-9]*[.])?[0-9]+
23
+ DISABLE_DISCONNECT:
24
+ summary: Disable the Disconnect button on the Interfaces tab in the Server
25
+ description: Use this keyword to prevent the user from disconnecting from the interface.
26
+ This is typically used in a 'production' environment where you would not want
27
+ the user to inadvertantly disconnect from a target.
28
+ LOG:
29
+ summary: Enable logging on the interface by the specified log writer
30
+ description: LOG is only required if you want a log writer other than the default
31
+ to log commands and telemetry on this interface
32
+ warning: Choosing a custom log writer can prevent COSMOS from reading back your log files
33
+ parameters:
34
+ - name: Name
35
+ required: true
36
+ description: Log writer name as defined by PACKET_LOG_WRITER
37
+ values: \D\S*
38
+ DONT_LOG:
39
+ summary: Disable logging commands and telemetry on this interface
40
+ LOG_RAW:
41
+ summary: Log all data on the interface exactly as it is sent and received
42
+ description: LOG_RAW does not add any COSMOS headers and thus can not be read by COSMOS tools.
43
+ It is primarily useful for low level debugging of an interface. You will have to
44
+ manually parse these logs yourself using a hex editor or other application.
@@ -0,0 +1,172 @@
1
+ ---
2
+ <%= MetaConfigParser.load('param_item_modifiers.yaml').to_meta_config_yaml(0) %>
3
+ STATE:
4
+ summary: Defines a key/value pair for the current item
5
+ description: Key value pairs allow for user friendly strings. For example,
6
+ you might define states for ON = 1 and OFF = 0. This allows the word ON to be
7
+ used rather than the number 1 when sending the telemetry item and allows
8
+ for much greater clarity and less chance for user error.
9
+ parameters:
10
+ - name: Key
11
+ required: true
12
+ description: The string state name
13
+ values: .*
14
+ - name: Value
15
+ required: true
16
+ description: The numerical state value
17
+ values: .*
18
+ - name: Color
19
+ required: false
20
+ description: The color the state should be displayed as
21
+ values: ['GREEN', 'YELLOW', 'RED']
22
+ READ_CONVERSION:
23
+ summary: Applies a conversion to the current telemetry item
24
+ description: Conversions are implemented in a custom Ruby file which should be
25
+ located in the target's lib folder and required by the target's target.txt
26
+ file (see REQUIRE). The class must require 'cosmos/conversions/conversion'
27
+ and inherit from Conversion. It must implement the initialize method if it
28
+ takes extra parameters and must always implement the call method. The conversion
29
+ factor is applied to the raw value in the telemetry packet before it is displayed
30
+ to the user. The user still has the ability to see the raw unconverted value
31
+ in a details dialog.
32
+ parameters:
33
+ - name: Class File Name
34
+ required: true
35
+ description: The file name which contains the Ruby class. The file name must
36
+ be named after the class such that the class is a CamelCase version of the
37
+ underscored file name. For example, 'the_great_conversion.rb' should contain
38
+ 'class TheGreatConversion'.
39
+ values: .*\.rb
40
+ - name: Parameter
41
+ required: false
42
+ description: Additional parameter values for the conversion which are passed
43
+ to the class constructor.
44
+ values: .*
45
+ POLY_READ_CONVERSION:
46
+ summary: Adds a polynomial conversion factor to the current telemetry item
47
+ description: The conversion factor is applied to raw value in the telemetry
48
+ packet before it is displayed to the user. The user still has the ability
49
+ to see the raw unconverted value in a details dialog.
50
+ parameters:
51
+ - name: C0
52
+ required: true
53
+ description: Coefficient
54
+ values: .*
55
+ - name: Cx
56
+ required: false
57
+ description: Additional coefficient values for the conversion. Any order
58
+ polynomial conversion may be used so the value of 'x' will vary with the
59
+ order of the polynomial. Note that larger order polynomials take longer
60
+ to process than shorter order polynomials, but are sometimes more accurate.
61
+ values: .*
62
+ SEG_POLY_READ_CONVERSION:
63
+ summary: Adds a segmented polynomial conversion factor to the current telemetry item
64
+ description: This conversion factor is applied to the raw value in the telemetry packet
65
+ before it is displayed to the user. The user still has the ability to see the raw
66
+ unconverted value in a details dialog.
67
+ parameters:
68
+ - name: Lower Bound
69
+ required: true
70
+ description: Defines the lower bound of the range of values that this segmented
71
+ polynomial applies to. Is ignored for the segment with the smallest lower bound.
72
+ values: .*
73
+ - name: C0
74
+ required: true
75
+ description: Coefficient
76
+ values: .*
77
+ - name: Cx
78
+ required: false
79
+ description: Additional coefficient values for the conversion. Any order
80
+ polynomial conversion may be used so the value of 'x' will vary with the
81
+ order of the polynomial. Note that larger order polynomials take longer
82
+ to process than shorter order polynomials, but are sometimes more accurate.
83
+ values: .*
84
+ GENERIC_READ_CONVERSION_START:
85
+ summary: Start a generic write conversion
86
+ description: Adds a generic conversion function to the current telemetry item.
87
+ This conversion factor is applied to the raw value in the telemetry packet
88
+ before it is displayed to the user. The user still has the ability to see the
89
+ raw unconverted value in a details dialog. The conversion is specified as
90
+ ruby code that receives two implied parameters. 'value' which is the raw
91
+ value being written and 'packet' which is a reference to the telemetry packet
92
+ class (Note, referencing the packet as 'myself' is still supported for backwards
93
+ compatibility). The last line of ruby code given should return the converted
94
+ value. The GENERIC_READ_CONVERSION_END keyword specifies that all lines of
95
+ ruby code for the conversion have been given.
96
+ warning: Generic conversions are not a good long term solution. Consider creating
97
+ a conversion class and using READ_CONVERSION instead. READ_CONVERSION is easier
98
+ to debug and higher performance.
99
+ GENERIC_READ_CONVERSION_END:
100
+ summary: Complete a generic write conversion
101
+ LIMITS:
102
+ summary: Defines a set of limits for a telemetry item
103
+ description: If limits are violated a message is printed in the Command and Telemetry Server
104
+ to indicate an item went out of limits. Other tools also use this information
105
+ to update displays with different colored telemetry items or other useful information.
106
+ The concept of "limits sets" is defined to allow for different limits values
107
+ in different environments. For example, you might want tighter or looser limits
108
+ on telemetry if your environment changes such as during thermal vacuum testing.
109
+ parameters:
110
+ - name: Limits Set
111
+ required: true
112
+ description: Name of the limits set. If you have no unique limits sets use
113
+ the keyword DEFAULT.
114
+ values: .+
115
+ - name: Persistence
116
+ required: true
117
+ description: Number of consecutive times the telemetry item must be within
118
+ a different limits range before changing limits state.
119
+ values: \d+
120
+ - name: Initial State
121
+ required: true
122
+ description: Whether limits monitoring for this telemetry item is initially enabled or disabled
123
+ values: ['ENABLED', 'DISABLED']
124
+ - name: Red Low Limit
125
+ required: true
126
+ description: If the telemetry value is less than or equal to this value a
127
+ Red Low condition will be detected
128
+ values: .+
129
+ - name: Yellow Low Limit
130
+ required: true
131
+ description: If the telemetry value is less than or equal to this value,
132
+ but greater than the Red Low Limit, a Yellow Low condition will be detected
133
+ values: .+
134
+ - name: Yellow High Limit
135
+ required: true
136
+ description: If the telemetry value is greater than or equal to this value,
137
+ but less than the Red High Limit, a Yellow High condition will be detected
138
+ values: .+
139
+ - name: Red High Limit
140
+ required: true
141
+ description: If the telemetry value is greater than or equal to this value
142
+ a Red High condition will be detected
143
+ values: .+
144
+ - name: Green Low Limit
145
+ required: false
146
+ description: Setting the Green Low and Green High limits defines an
147
+ "operational limit" which is colored blue by COSMOS. This allows for a
148
+ distinct desired operational range which is narrower than the green safety limit.
149
+ If the telemetry value is greater than or equal to this value, but less
150
+ than the Green High Limit, a Blue operational condition will be detected.
151
+ values: .+
152
+ - name: Green High Limit
153
+ required: false
154
+ description: Setting the Green Low and Green High limits defines an
155
+ "operational limit" which is colored blue by COSMOS. This allows for a
156
+ distinct desired operational range which is narrower than the green safety limit.
157
+ If the telemetry value is less than or equal to this value, but greater
158
+ than the Green Low Limit, a Blue operational condition will be detected.
159
+ values: .+
160
+ LIMITS_RESPONSE:
161
+ summary: Defines a response class that is called when the limits state of the current item changes
162
+ parameters:
163
+ - name: Response Class Filename
164
+ required: true
165
+ description: Name of the Ruby file which implements the limits response.
166
+ This file should be in the config/TARGET/lib directory so it can be found by COSMOS.
167
+ values: .+
168
+ - name: Response Specific Options
169
+ required: false
170
+ description: Variable length number of options that will be passed to the
171
+ class constructor
172
+ values: .+