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,15 @@
1
+ ---
2
+ LINE_DELAY:
3
+ summary: Sets the amount of time in seconds before the next line of a script will be executed
4
+ parameters:
5
+ - name: Delay
6
+ required: true
7
+ description: Delay in seconds before the next line is executed. A value of
8
+ 0 means to execute the scripts as fast as possible.
9
+ values: '[0-9]*\.?[0-9]+'
10
+ MONITOR_LIMITS:
11
+ summary: Log limits events to the Script Runner log file while a script is running
12
+ description: Limits events are always logged by the Command and Telemetry Server
13
+ but are not put in the Script Runner log without this keyword.
14
+ PAUSE_ON_RED:
15
+ summary: Pause a running script if a red limit occurs
@@ -0,0 +1,153 @@
1
+ ---
2
+ AUTO_DECLARE_TARGETS:
3
+ summary: Automatically load all the target folders under config/targets into the system
4
+ description: When automatically discovering target folders the COSMOS naming convention
5
+ must be followed. Target folders must be uppercase and be named according to how
6
+ COSMOS will access them. For example, if you create a config/targets/INST directory,
7
+ COSMOS will create a target named 'INST' which is how it will be referenced.
8
+ This keyword is REQUIRED unless you individually declare your targets using the
9
+ DECLARE_TARGET keyword.
10
+ DECLARE_TARGET:
11
+ summary: Declare a COSMOS target and name it
12
+ description: Declare target is used in place of AUTO_DECLARE_TARGETS to give more
13
+ fine grained control over how the target folder is loaded and named within COSMOS.
14
+ This is required if AUTO_DECLARE_TARGET is not present.
15
+ parameters:
16
+ - name: Target Name
17
+ required: true
18
+ description: The directory name which contains the target information.
19
+ This must match a directory under config/targets.
20
+ values: <%= System.targets.keys %>
21
+ - name: Substitute Target Name
22
+ required: false
23
+ description: The target name in the COSMOS system. This is how the target
24
+ will be referred to in scripts. If this is not given (or given as nil)
25
+ the target name will be the directory name given above.
26
+ - name: Target Filename
27
+ required: false
28
+ description: The name of the file in the target directory which contains the
29
+ configuration information for the target. By default this is 'target.txt'
30
+ but if you want to rename this you need to set this parameter.
31
+ PORT:
32
+ summary: Set a Server Port
33
+ description: Port is used to set the default ports used by the Command and Telemetry Server.
34
+ It is not necessary to set this option unless you wish to override the defaults
35
+ (given in the example usage). Overriding ports is necessary if you want to run
36
+ two Command and Telemetry Servers on the same computer simultaneously.
37
+ parameters:
38
+ - name: Port Name
39
+ required: true
40
+ description: CTS_API - This port is what tools connect to to communicate with the COSMOS Scripting API.
41
+ TLMVIEWER_API - This port is used to remotely open and close telemetry screens in Telemetry Viewer.
42
+ CTS_PREIDENTIFIED - This port provides access to a preidentified stream of all telemetry packets
43
+ in the system. This is currently used by Telemetry Grapher and can be used to chain Command
44
+ and Telemetry Servers together.
45
+ values: <%= %w(CTS_API TLMVIEWER_API CTS_PREIDENTIFIED) %>
46
+ - name: Port Value
47
+ required: true
48
+ description: Port number to use for the specified port name
49
+ values: '\d{2,}'
50
+ PATH:
51
+ summary: Set a Server Path
52
+ description: Path is used to set the default paths used by the Command and Telemetry Server
53
+ to access or create files. It is not necessary to set this option unless you wish to
54
+ override the defaults (given in the example usage).
55
+ warning: The PROCEDURES path must be set for Script Runner and Test Runner to locate your
56
+ procedure files. You can add multiple 'PATH PROCEDURES' lines to your configuration file
57
+ to set multiple locations.
58
+ parameters:
59
+ - name: Path Name
60
+ required: true
61
+ description: Path name to set.
62
+ values: <%= %w(LOGS TMP SAVED_CONFIG TABLES PROCEDURES HANDBOOK) %>
63
+ - name: Path Value
64
+ required: true
65
+ description: File system path to use for the specified path name
66
+ values: .+
67
+ DEFAULT_PACKET_LOG_WRITER:
68
+ summary: Set the class used when creating binary packet log files
69
+ warning: Overriding the default log writer can break the ability to write log
70
+ files that COSMOS can interpret. Proceed with caution!
71
+ parameters:
72
+ - name: Filename
73
+ required: true
74
+ description: Ruby file to use when instantiating a new log writer
75
+ values: '.+\.rb'
76
+ - name: parameter
77
+ required: false
78
+ description: Parameters which are passed to the log read upon initialization
79
+ values: .*
80
+ since: 4.0.0
81
+ DEFAULT_PACKET_LOG_READER:
82
+ summary: Set the class used when reading binary packet log file
83
+ warning: Overriding the default log read can break the ability to read log
84
+ files. Proceed with caution!
85
+ parameters:
86
+ - name: Filename
87
+ required: true
88
+ description: Ruby file to use when instantiating a new log writer
89
+ values: '.+\.rb'
90
+ - name: parameter
91
+ required: false
92
+ description: Parameters which are passed to the log read upon initialization
93
+ values: .*
94
+ since: 4.0.0
95
+ STALENESS_SECONDS:
96
+ summary: Number of seconds before marking the packet stale
97
+ description: A stale packet is identified in telemetry screens by all the telemetry
98
+ items in the stale packet being colored purple..
99
+ parameters:
100
+ - name: Seconds
101
+ required: true
102
+ description: Integer number of seconds before packets are marked stale
103
+ values: '\d+'
104
+ ENABLE_DNS:
105
+ summary: Enable reverse DNS lookups for tools
106
+ description: Enables reverse DNS lookups when tools connect to the Command and
107
+ Telemetry Server's pre-identified socket or to any target using the TCPIP Server
108
+ Interface. As of COSMOS 3.5.0 the default is to not use DNS.
109
+ since: 3.5.0
110
+ DISABLE_DNS:
111
+ summary: Disable reverse DNS lookups for tools
112
+ description: Disable reverse DNS lookups when tools connect to the Command and
113
+ Telemetry Server's pre-identified socket or to any target using the TCPIP Server
114
+ Interface. This is useful when you are in an environment where DNS is not available.
115
+ As of COSMOS 3.5.0 the default is to not use DNS
116
+ ENABLE_SOUND:
117
+ summary: Enable audible sounds when popups occur
118
+ description: Enable sound makes any prompts that occur in ScriptRunner/TestRunner
119
+ make an audible sound when they popup to alert the operator of needed input.
120
+ since: 3.5.0
121
+ ALLOW_ACCESS:
122
+ summary: White list machines that are allowed to connect to the Server
123
+ parameters:
124
+ - name: Name or IP Address
125
+ required: true
126
+ description: Machine name to allow access or you can specify 'ALL' to allow
127
+ all machines access
128
+ values: .+
129
+ TIME_ZONE_UTC:
130
+ summary: Report all times as UTC
131
+ description: COSMOS will report all times as UTC time. If this keyword is not used,
132
+ COSMOS will report all times as local times, where the local time zone is determined
133
+ automatically by Ruby based upon the operating system time settings. This setting
134
+ affects packet receive times, timestamped log filenames, message logs,
135
+ Cmd/Tlm extractor time ranges, etc.
136
+ since: 3.10.0
137
+ ADD_MD5_FILE:
138
+ summary: Add a file to the MD5 sum calculation
139
+ description: Adds a file to the set of files used in marshal file MD5 sum calculation.
140
+ Upon startup, COSMOS calculates an MD5 sum over the command/telemetry definition files
141
+ for all targets. After the definitions have been processed, COSMOS saves the resulting
142
+ objects as marshal files in a folder with the MD5 sum as part of the name.
143
+ The next time COSMOS runs, if the MD5 checksum of the cmd/tlm definition files
144
+ has not changed, COSMOS can load the marshal files instead of re-processing the definitions.
145
+ If a file is specified with the ADD_MD5_FILE keyword, COSMOS will include it in the
146
+ MD5 sum calculation. This means that a change in the file will cause COSMOS to
147
+ re-process the cmd/tlm defintions and create a new set of marshal files.
148
+ since: 4.0.0
149
+ parameters:
150
+ - name: Filename
151
+ required: true
152
+ description: Filename, either fully qualified, or relative to Cosmos::USERPATH
153
+ values: '.+\.rb'
@@ -0,0 +1,76 @@
1
+ ---
2
+ TABLEFILE:
3
+ summary: Specify another file to open and process for table definitions
4
+ parameters:
5
+ - name: File Name
6
+ required: true
7
+ description: Name of the file. The file will be looked for in the directory
8
+ of the current definition file.
9
+ values: '.+\.txt'
10
+ TABLE:
11
+ modifiers:
12
+ PARAMETER:
13
+ modifiers:
14
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(8) %>
15
+ <%= MetaConfigParser.load('table_parameter_modifiers.yaml').to_meta_config_yaml(8) %>
16
+ summary: Defines a parameter in the current table
17
+ parameters:
18
+ - name: Name
19
+ required: true
20
+ description: Name of the parameter. Must be unique within the table.
21
+ values: '\D\S*'
22
+ - name: Bit Offset
23
+ required: true
24
+ description: Bit offset into the table of the Most Significant Bit of this parameter.
25
+ May be negative to indicate on offset from the end of the table.
26
+ Always use a bit offset of 0 for derived parameters.
27
+ values: '[-]?\d+'
28
+ <%= MetaConfigParser.load('_params.yaml').to_meta_config_yaml(8) %>
29
+ APPEND_PARAMETER:
30
+ modifiers:
31
+ <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(8) %>
32
+ <%= MetaConfigParser.load('table_parameter_modifiers.yaml').to_meta_config_yaml(8) %>
33
+ summary: Defines a parameter in the current table
34
+ parameters:
35
+ - name: Name
36
+ required: true
37
+ description: Name of the parameter. Must be unique within the table.
38
+ values: .+
39
+ <%= MetaConfigParser.load('_params.yaml').to_meta_config_yaml(8) %>
40
+ summary: Start a new table definition
41
+ parameters:
42
+ - name: Name
43
+ required: true
44
+ description: Name of the table in quotes. The name will appear on the GUI tab.
45
+ values: "['\"].*['\"]"
46
+ - name: Endianness
47
+ required: true
48
+ description: Indicates if the data in this table is in Big Endian or Little Endian format
49
+ values: ['BIG_ENDIAN', 'LITTLE_ENDIAN']
50
+ - name: Display
51
+ requires: true
52
+ description: Indicates the table is a ONE_DIMENSIONAL table which is a two
53
+ column table consisting of unique rows, or a TWO_DIMENSIONAL table with
54
+ multiple columns and identical rows with unique values
55
+ values:
56
+ ONE_DIMENSIONAL:
57
+ summary: Declare a key value two column table with unique rows
58
+ parameters:
59
+ - name: Description
60
+ requires: true
61
+ description: Description of the table in quotes. The description is
62
+ used in mouseover popups and status line information.
63
+ values: "['\"].*['\"]"
64
+ TWO_DIMENSIONAL:
65
+ summary: Declare a table with multiple columns and identical rows with
66
+ unique values
67
+ parameters:
68
+ - name: Rows
69
+ requires: true
70
+ description: The number of rows in the table
71
+ values: \d+
72
+ - name: Description
73
+ requires: true
74
+ description: Description of the table in quotes. The description is
75
+ used in mouseover popups and status line information.
76
+ values: "['\"].*['\"]"
@@ -0,0 +1,9 @@
1
+ ---
2
+ HIDDEN:
3
+ summary: Indicates that the parameter should not be shown to the user in the Table Manager GUI
4
+ description: Hidden parameters still exist and will be saved to the resulting
5
+ binary. This is useful for padding and other essential but non-user editable fields.
6
+ UNEDITABLE:
7
+ summary: Indicates that the parameter should be shown to the user but not editable.
8
+ description: Uneditable parameters are useful for control fields which the user
9
+ may be interested in but should not be able to edit.
@@ -0,0 +1,71 @@
1
+ ---
2
+ REQUIRE:
3
+ summary: Requires a Ruby file
4
+ description: Ruby files must be required to be available to call in other code.
5
+ Files are first required from the target's lib folder. If no file is found the
6
+ Ruby system path is checked which includes the base COSMOS/lib folder.
7
+ parameters:
8
+ - name: Filename
9
+ required: true
10
+ description: Filename to require. For files in the target's lib directory
11
+ simply supply the filename, e.g. "REQUIRE my_file". Files in the base COSMOS
12
+ lib directory also should just list the filename. If a file is in a folder
13
+ under the lib directory then you must specify the folder name, e.g. "REQUIRE
14
+ folder/my_file". The filename can also be an absolute path but this is not
15
+ common. Note the ".rb" extension is optional when specifying the filename.
16
+ values: .+
17
+ IGNORE_PARAMETER:
18
+ summary: Ignore the given command parameter
19
+ description: Hint to other COSMOS tools to hide or ignore this command parameter
20
+ when processing the command. For example, Command Sender and Command Sequence
21
+ will not display the parameter (by default) when showing the command and Script
22
+ Runner code completion will not display the parameter.
23
+ parameters:
24
+ - name: Parameter Name
25
+ required: true
26
+ description: The name of a command parameter. Note that this parameter will
27
+ be ignored in ALL the commands it appears in.
28
+ values: .+
29
+ IGNORE_ITEM:
30
+ summary: Ignore the given telemetry item
31
+ description: Hint to other COSMOS tools to hide or ignore this telemetry item
32
+ when processing the telemetry. For example, Packet Viewer will not display the
33
+ item (by default) when showing the packet.
34
+ parameters:
35
+ - name: Item name
36
+ required: true
37
+ description: The name of a telemetry item. Note that this item will be ignored
38
+ in ALL the telemetry it appears in.
39
+ values: .+
40
+ COMMANDS:
41
+ summary: Process the given command definition file
42
+ description: This keyword is used to explicitly add the command definition file
43
+ to the list of command and telemetry files to process.
44
+ warning: Usage of this keyword overrides automatic command and telemetry file
45
+ discovery. If this keyword is used, you must also use the TELEMETRY keyword
46
+ to specify the telemetry files to process.
47
+ parameters:
48
+ - name: Filename
49
+ required: true
50
+ description: Name of a command definition file in the target's cmd_tlm directory, e.g. "cmd.txt".
51
+ values: '.*\.txt'
52
+ TELEMETRY:
53
+ summary: Process the given telemetry definition file
54
+ description: This keyword is used to explicitly add the telemetry definition
55
+ file to the list of command and telemetry files to process.
56
+ warning: Usage of this keyword overrides automatic command and telemetry file
57
+ discovery. If this keyword is used, you must also use the COMMAND keyword to
58
+ specify the command files to process.
59
+ parameters:
60
+ - name: Filename
61
+ required: true
62
+ description: Name of a telemetry definition file in the target's cmd_tlm
63
+ directory, e.g. "tlm.txt".
64
+ values: '.*\.txt'
65
+ AUTO_SCREEN_SUBSTITUTE:
66
+ summary: Automatically substitute the target's name in screen definitions
67
+ description: Targets can be renamed when they are declared which would break
68
+ any screen definitions using the explicit target name. This keyword automatically
69
+ replaces the target name in the screen definitions with the actual target name.
70
+ warning: Replaces ALL target names in a screen definition file, so this is not
71
+ suitable for screens with multiple targets.
@@ -0,0 +1,73 @@
1
+ ---
2
+ TELEMETRY:
3
+ modifiers:
4
+ <%= MetaConfigParser.load('telemetry_modifiers.yaml').to_meta_config_yaml(4) %>
5
+ summary: Defines a new telemetry packet
6
+ parameters:
7
+ - name: Target
8
+ required: true
9
+ description: Name of the target this telemetry packet is associated with
10
+ values: <%= System.targets.keys %>
11
+ - name: Command
12
+ required: true
13
+ description: Name of this telemetry packet. Also referred to as its mnemonic.
14
+ Must be unique to telemetry packets in 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 packet is in Big Endian or Little Endian format
19
+ values: ['BIG_ENDIAN', 'LITTLE_ENDIAN']
20
+ - name: Description
21
+ required: false
22
+ description: Description of this telemetry packet which must be enclosed with quotes
23
+ values: "['\"].*['\"]"
24
+ SELECT_TELEMETRY:
25
+ modifiers:
26
+ <%= MetaConfigParser.load('telemetry_modifiers.yaml').to_meta_config_yaml(4) %>
27
+ summary: Selects an existing telemetry packet for editing
28
+ description: Typically used in a separate configuration file from where the original
29
+ telemetry is defined to override or add to the existing telemetry definition
30
+ parameters:
31
+ - name: Target Name
32
+ required: true
33
+ description: Name of the target this telemetry packet is associated with
34
+ values: <%= System.targets.keys %>
35
+ - name: Command Name
36
+ required: true
37
+ description: Name of the telemetry packet to select
38
+ values: .+
39
+ LIMITS_GROUP:
40
+ summary: Defines a group of related limits Items
41
+ description: Limits groups contain telemetry items that can be enabled and disabled together.
42
+ It can be used to group related limits as a subsystem that can be enabled or disabled
43
+ as that particular subsystem is powered (for example). To enable a group call the
44
+ enable_limits_group("NAME") method in Script Runner. To disable a group call the
45
+ disable_limits_group("NAME") in Script Runner. Items can belong to multiple groups
46
+ but the last enabled or disabled group "wins". For example, if an item belongs to
47
+ GROUP1 and GROUP2 and you first enable GROUP1 and then disable GROUP2 the item will
48
+ be disabled. If you then enable GROUP1 again it will be enabled.
49
+ parameters:
50
+ - name: Group Name
51
+ required: true
52
+ description: Name of the limits group
53
+ values: .+
54
+ LIMITS_GROUP_ITEM:
55
+ summary: Adds the specified telemetry item to the last defined LIMITS_GROUP
56
+ description: Limits group information is typically kept in a separate configuration
57
+ file in the config/TARGET/cmd_tlm folder named limits_groups.txt. If you want to
58
+ configure multiple target items in a particular group you should put this information
59
+ in the config/SYSTEM/cmd_tlm/limits_groups.txt file. The SYSTEM target is processed
60
+ last and contains information that crosses target boundaries.
61
+ parameters:
62
+ - name: Target Name
63
+ required: true
64
+ description: Name of the target
65
+ values: <%= System.targets.keys %>
66
+ - name: Packet Name
67
+ required: true
68
+ description: Name of the packet
69
+ values: .+
70
+ - name: Item Name
71
+ required: true
72
+ description: Name of the telemetry item to add to the group
73
+ values: .+
@@ -0,0 +1,129 @@
1
+ ---
2
+ ITEM:
3
+ modifiers:
4
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
5
+ summary: Defines a telemetry item in the current telemetry packet
6
+ parameters:
7
+ - name: Name
8
+ required: true
9
+ description: Name of the telemety item. Must be unique within the packet.
10
+ values: '\D\S*'
11
+ - name: Bit Offset
12
+ required: true
13
+ description: Bit offset into the telemetry packet of the Most Significant Bit of this item.
14
+ May be negative to indicate on offset from the end of the packet.
15
+ Always use a bit offset of 0 for derived item.
16
+ values: '[-]?\d+'
17
+ <%= MetaConfigParser.load('_items.yaml').to_meta_config_yaml(4) %>
18
+ APPEND_ITEM:
19
+ modifiers:
20
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
21
+ summary: Defines a telemetry item in the current telemetry packet
22
+ parameters:
23
+ - name: Name
24
+ required: true
25
+ description: Name of the telemety item. Must be unique within the packet.
26
+ values: \'
27
+ <%= MetaConfigParser.load('_items.yaml').to_meta_config_yaml(4) %>
28
+ ID_ITEM:
29
+ modifiers:
30
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
31
+ summary: Defines a telemetry item in the current telemetry packet
32
+ parameters:
33
+ - name: Name
34
+ required: true
35
+ description: Name of the telemety item. Must be unique within the packet.
36
+ values: '\D\S*'
37
+ - name: Bit Offset
38
+ required: true
39
+ description: Bit offset into the telemetry packet of the Most Significant Bit of this item.
40
+ May be negative to indicate on offset from the end of the packet.
41
+ Always use a bit offset of 0 for derived item.
42
+ values: '[-]?\d+'
43
+ <%= MetaConfigParser.load('_id_items.yaml').to_meta_config_yaml(4) %>
44
+ APPEND_ID_ITEM:
45
+ modifiers:
46
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
47
+ summary: Defines a telemetry item in the current telemetry packet
48
+ parameters:
49
+ - name: Name
50
+ required: true
51
+ description: Name of the telemety item. Must be unique within the packet.
52
+ values: \'
53
+ <%= MetaConfigParser.load('_id_items.yaml').to_meta_config_yaml(4) %>
54
+ ARRAY_ITEM:
55
+ modifiers:
56
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
57
+ summary: Defines a telemetry item in the current telemetry packet that is an array
58
+ parameters:
59
+ - name: Name
60
+ required: true
61
+ description: Name of the telemety item. Must be unique within the packet.
62
+ values: '\D\S*'
63
+ - name: Bit Offset
64
+ required: true
65
+ description: Bit offset into the telemetry packet of the Most Significant Bit of this item.
66
+ May be negative to indicate on offset from the end of the packet.
67
+ Always use a bit offset of 0 for derived item.
68
+ values: '[-]?\d+'
69
+ <%= MetaConfigParser.load('_array_params.yaml').to_meta_config_yaml(4) %>
70
+ APPEND_ARRAY_ITEM:
71
+ modifiers:
72
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
73
+ summary: Defines a telemetry item in the current telemetry packedt that is an array
74
+ parameters:
75
+ - name: Name
76
+ required: true
77
+ description: Name of the telemety item. Must be unique within the packet.
78
+ values: \'
79
+ <%= MetaConfigParser.load('_array_params.yaml').to_meta_config_yaml(4) %>
80
+ SELECT_ITEM:
81
+ modifiers:
82
+ <%= MetaConfigParser.load('item_modifiers.yaml').to_meta_config_yaml(4) %>
83
+ summary: Selects an existing telemetry item for editing
84
+ parameters:
85
+ - name: Item
86
+ required: true
87
+ description: Name of the item to select for modification
88
+ values: .+
89
+ META:
90
+ summary: Stores metadata for the current telemetry packet
91
+ description: Meta data is user specific data that can be used by custom tools
92
+ for various purposes. One example is to store additional information needed
93
+ to generate source code header files.
94
+ parameters:
95
+ - name: Meta Name
96
+ required: true
97
+ description: Name of the metadata to store
98
+ values: .*
99
+ - name: Meta Values
100
+ required: false
101
+ description: One or more values to be stored for this Meta Name
102
+ values: .*
103
+ PROCESSOR:
104
+ summary: Defines a processor class that executes code every time a packet is received
105
+ parameters:
106
+ - name: Processor Name
107
+ required: true
108
+ description: The name of the processor
109
+ values: .+
110
+ - name: Processor Class Filename
111
+ required: true
112
+ description: Name of the Ruby file which implements the processor.
113
+ This file should be in the config/TARGET/lib directory so it can be found by COSMOS.
114
+ values: '.+\.rb'
115
+ - name: Processor Specific Options
116
+ required: false
117
+ description: Variable length number of options that will be passed to the class constructor.
118
+ values: .+
119
+ ALLOW_SHORT:
120
+ summary: Process telemetry packets which are less than their defined length
121
+ description: Allows the telemetry packet to be received with a data portion that
122
+ is smaller than the defined size without warnings. Any extra space in the packet
123
+ will be filled in with zeros by COSMOS.
124
+ HIDDEN:
125
+ summary: Hides this telemetry packet from all the COSMOS tools
126
+ description: This packet will not appear in Packet Viewer, Telemetry Grapher and Handbook Creator.
127
+ It also hides this telemetry from appearing in the Script Runner popup helper
128
+ when writing scripts. The telemetry still exists in the system and can received
129
+ and checked by scripts.