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
@@ -1,140 +0,0 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'cosmos/config/config_parser'
12
- require 'cosmos/streams/stream_protocol'
13
- require 'cosmos/streams/terminated_stream_protocol'
14
- require 'thread' # For Queue
15
-
16
- module Cosmos
17
-
18
- class TemplateStreamProtocol < TerminatedStreamProtocol
19
- def initialize(write_termination_characters,
20
- read_termination_characters,
21
- ignore_lines = 0,
22
- initial_read_delay = nil,
23
- response_lines = 1,
24
- strip_read_termination = true,
25
- discard_leading_bytes = 0,
26
- sync_pattern = nil,
27
- fill_sync_pattern = false)
28
- super(write_termination_characters,
29
- read_termination_characters,
30
- strip_read_termination,
31
- discard_leading_bytes,
32
- sync_pattern,
33
- fill_sync_pattern)
34
- @response_template = nil
35
- @response_packet = nil
36
- @read_queue = Queue.new
37
- @ignore_lines = ignore_lines.to_i
38
- @response_lines = response_lines.to_i
39
- @initial_read_delay = ConfigParser.handle_nil(initial_read_delay)
40
- @initial_read_delay = @initial_read_delay.to_f if @initial_read_delay
41
- end
42
-
43
- def connect(stream)
44
- # Empty the read queue
45
- begin
46
- @read_queue.pop(true) while @read_queue.length > 0
47
- rescue
48
- end
49
-
50
- super(stream)
51
-
52
- if @initial_read_delay
53
- sleep(@initial_read_delay)
54
- loop do
55
- break if @stream.read_nonblock.length <= 0
56
- end
57
- end
58
- end
59
-
60
- def disconnect
61
- super()
62
- @read_queue << nil # Unblock the read queue in the interface thread
63
- end
64
-
65
- def read(use_queue = true)
66
- if use_queue
67
- return @read_queue.pop
68
- else
69
- return super()
70
- end
71
- end
72
-
73
- # See StreamProtocol#pre_write_packet
74
- def pre_write_packet(packet)
75
- # First grab the response template and response packet (if there is one)
76
- begin
77
- @response_template = packet.read("RSP_TEMPLATE").strip
78
- @response_packet = packet.read("RSP_PACKET").strip
79
- rescue
80
- # If there is no response template we set to nil
81
- @response_template = nil
82
- @response_packet = nil
83
- end
84
-
85
- # Grab the command template because that is all we eventually send
86
- template = packet.read("CMD_TEMPLATE")
87
- # Create a new empty packet to call super on
88
- raw_packet = Packet.new(nil, nil)
89
- raw_packet.buffer = template
90
- # Call super to allow the super classes to massage the packet data
91
- data = super(raw_packet)
92
- # Scan the template for variables in brackets <VARIABLE>
93
- # Read these values from the packet and substitute them in the template
94
- template.scan(/<(.*?)>/).each do |variable|
95
- data.gsub!("<#{variable[0]}>", packet.read(variable[0], :RAW).to_s)
96
- end
97
- data
98
- end
99
-
100
- def post_write_data(packet, data)
101
- if @response_template && @response_packet
102
- @ignore_lines.times do
103
- read(false)
104
- end
105
- response_string = ''
106
- @response_lines.times do
107
- response = read(false)
108
- raise "No response received" unless response
109
- response_string << response.buffer
110
- end
111
-
112
- # Grab the response packet specified in the command
113
- result_packet = System.telemetry.packet(@interface.target_names[0], @response_packet).clone
114
- result_packet.received_time = nil
115
-
116
- # Convert the response template into a Regexp
117
- response_item_names = []
118
- response_template = @response_template.clone
119
- response_template_items = @response_template.scan(/<.*?>/)
120
- response_template_items.each do |item|
121
- response_item_names << item[1..-2]
122
- response_template.gsub!(item, "(.*)")
123
- end
124
- response_regexp = Regexp.new(response_template)
125
-
126
- # Scan the response for the variables in brackets <VARIABLE>
127
- # Write the packet value with each of the values received
128
- response_values = response_string.scan(response_regexp)[0]
129
- raise "Unexpected response received: #{response_string}" if !response_values or (response_values.length != response_item_names.length)
130
- response_values.each_with_index do |value, i|
131
- result_packet.write(response_item_names[i], value)
132
- end
133
-
134
- @read_queue << result_packet
135
- end
136
- end
137
-
138
- end # class TemplateStreamProtocol
139
-
140
- end # module Cosmos
@@ -1,85 +0,0 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'cosmos/config/config_parser'
12
- require 'cosmos/streams/stream_protocol'
13
-
14
- module Cosmos
15
-
16
- # This StreamProtocol delineates packets using termination characters at
17
- # the end of the stream.
18
- class TerminatedStreamProtocol < StreamProtocol
19
-
20
- # @param write_termination_characters [String] The characters to write to
21
- # the stream after writing the Packet buffer. Must be given as a
22
- # hexadecimal string such as '0xABCD'.
23
- # @param read_termination_characters [String] The characters at the end of
24
- # the stream which delineate the end of a Packet. Must be given as a
25
- # hexadecimal string such as '0xABCD'.
26
- # @param strip_read_termination [Boolean] Whether to remove the
27
- # read_termination_characters before turning the stream data into a
28
- # Packet.
29
- # @param discard_leading_bytes (see StreamProtocol#initialize)
30
- # @param sync_pattern (see StreamProtocol#initialize)
31
- # @param fill_sync_pattern (see StreamProtocol#initialize)
32
- def initialize(write_termination_characters,
33
- read_termination_characters,
34
- strip_read_termination = true,
35
- discard_leading_bytes = 0,
36
- sync_pattern = nil,
37
- fill_sync_pattern = false)
38
- @write_termination_characters = write_termination_characters.hex_to_byte_string
39
- @read_termination_characters = read_termination_characters.hex_to_byte_string
40
- @strip_read_termination = ConfigParser.handle_true_false(strip_read_termination)
41
-
42
- super(discard_leading_bytes, sync_pattern, fill_sync_pattern)
43
- end
44
-
45
- # See StreamProtocol#pre_write_packet
46
- def pre_write_packet(packet)
47
- data = super(packet)
48
- raise "Packet contains termination characters!" if data.index(@write_termination_characters)
49
-
50
- data = data.clone # Don't want to modify the actual packet buffer with the termination characters
51
- @write_termination_characters.each_byte do |byte|
52
- data << byte
53
- end
54
- data
55
- end
56
-
57
- protected
58
-
59
- def reduce_to_single_packet
60
- while true
61
- index = @data.index(@read_termination_characters)
62
-
63
- # Reduce to packet data and setup current_data for next packet
64
- if index
65
- if index > 0
66
- if @strip_read_termination
67
- packet_data = @data[0..(index - 1)]
68
- else
69
- packet_data = @data[0..(index + @read_termination_characters.length - 1)]
70
- end
71
- else
72
- packet_data = ''
73
- end
74
- @data.replace(@data[(index + @read_termination_characters.length)..-1])
75
- return packet_data
76
- else
77
- read_and_handle_timeout()
78
- return nil if @data.length <= 0
79
- end
80
- end
81
- end
82
-
83
- end # class TerminatedStreamProtocol
84
-
85
- end # module Cosmos
@@ -1,41 +0,0 @@
1
- COMMAND COSMOS STARTLOGGING BIG_ENDIAN "Starts logging both commands and telemetry for an interface"
2
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
3
- APPEND_ID_PARAMETER OPCODE 32 UINT 2 2 2 "COSMOS Command Opcode"
4
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
5
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to start logging on - ALL starts logging on all interfaces"
6
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
7
-
8
- COMMAND COSMOS STARTCMDLOG BIG_ENDIAN "Starts logging commands for an interface"
9
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
10
- APPEND_ID_PARAMETER OPCODE 32 UINT 3 3 3 "COSMOS Command Opcode"
11
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
12
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to start logging on - ALL starts logging on all interfaces"
13
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
14
-
15
- COMMAND COSMOS STARTTLMLOG BIG_ENDIAN "Starts logging telemetry for an interface"
16
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
17
- APPEND_ID_PARAMETER OPCODE 32 UINT 4 4 4 "COSMOS Command Opcode"
18
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
19
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to start logging on - ALL starts logging on all interfaces"
20
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
21
-
22
- COMMAND COSMOS STOPLOGGING BIG_ENDIAN "Stops logging both commands and telemetry for an interface"
23
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
24
- APPEND_ID_PARAMETER OPCODE 32 UINT 5 5 5 "COSMOS Command Opcode"
25
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
26
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to stop logging on - ALL stops logging on all interfaces"
27
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
28
-
29
- COMMAND COSMOS STOPCMDLOG BIG_ENDIAN "Stops logging commands for an interface"
30
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
31
- APPEND_ID_PARAMETER OPCODE 32 UINT 6 6 6 "COSMOS Command Opcode"
32
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
33
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to stop logging on - ALL stops logging on all interfaces"
34
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
35
-
36
- COMMAND COSMOS STOPTLMLOG BIG_ENDIAN "Stops logging telemetry for an interface"
37
- APPEND_PARAMETER SYNC 32 UINT 0x1ACFFC1D 0x1ACFFC1D 0x1ACFFC1D "COSMOS Command Sync Pattern"
38
- APPEND_ID_PARAMETER OPCODE 32 UINT 7 7 7 "COSMOS Command Opcode"
39
- APPEND_PARAMETER LENGTH 32 UINT 0 65536 3 "COSMOS Command Length of Command Data in Bytes"
40
- APPEND_PARAMETER INTERFACE 256 STRING "ALL" "Interface to stop logging on - ALL stops logging on all interfaces"
41
- APPEND_PARAMETER LABEL 0 STRING "" "Optional label to place on log files"
@@ -1,15 +0,0 @@
1
- TELEMETRY COSMOS VERSION BIG_ENDIAN "COSMOS version information"
2
- APPEND_ID_ITEM PKT_ID 8 UINT 1 "Packet ID"
3
- APPEND_ITEM COSMOS 240 STRING "COSMOS version"
4
- APPEND_ITEM RUBY 240 STRING "Ruby version"
5
- APPEND_ITEM CTDB 240 STRING "Command Telemetry Database Version"
6
- APPEND_ITEM USER 240 STRING "User Version"
7
-
8
- TELEMETRY COSMOS LIMITS_CHANGE BIG_ENDIAN "COSMOS limits change"
9
- APPEND_ID_ITEM PKT_ID 8 UINT 2 "Packet ID"
10
- APPEND_ITEM TARGET 240 STRING "Target name"
11
- APPEND_ITEM PACKET 240 STRING "Packet name"
12
- APPEND_ITEM ITEM 240 STRING "Item that changed limits state"
13
- APPEND_ITEM OLD_STATE 240 STRING "The old limit state"
14
- APPEND_ITEM NEW_STATE 240 STRING "The new limit state"
15
-
@@ -1,20 +0,0 @@
1
- SCREEN AUTO AUTO 0.5
2
-
3
- VERTICAL
4
-
5
- TITLE "COSMOS Limits Change"
6
- SETTING BACKCOLOR 162 181 205
7
- SETTING TEXTCOLOR black
8
-
9
- LABELVALUE COSMOS LIMITS_CHANGE RECEIVED_TIMESECONDS WITH_UNITS 30
10
- LABELVALUE COSMOS LIMITS_CHANGE RECEIVED_TIMEFORMATTED WITH_UNITS 30
11
- LABELVALUE COSMOS LIMITS_CHANGE RECEIVED_COUNT WITH_UNITS 30
12
- LABELVALUE COSMOS LIMITS_CHANGE pkt_id WITH_UNITS 30
13
- LABELVALUE COSMOS LIMITS_CHANGE target WITH_UNITS 30
14
- LABELVALUE COSMOS limits_change PACKET WITH_UNITS 30
15
- LABELVALUE COSMOS limits_change ITEM WITH_UNITS 30
16
- LABELVALUE cosmos LIMITS_CHANGE OLD_STATE WITH_UNITS 30
17
- LABELVALUE cosmos LIMITS_CHANGE NEW_STATE WITH_UNITS 30
18
- END
19
-
20
-
@@ -1,19 +0,0 @@
1
- SCREEN AUTO AUTO 0.5
2
-
3
- VERTICAL
4
-
5
- TITLE "COSMOS Version"
6
- SETTING BACKCOLOR 162 181 205
7
- SETTING TEXTCOLOR black
8
-
9
- LABELVALUE COSMOS VERSION RECEIVED_TIMESECONDS WITH_UNITS 30
10
- LABELVALUE COSMOS VERSION RECEIVED_TIMEFORMATTED WITH_UNITS 30
11
- LABELVALUE COSMOS VERSION RECEIVED_COUNT WITH_UNITS 30
12
- LABELVALUE COSMOS VERSION PKT_ID WITH_UNITS 30
13
- LABELVALUE COSMOS VERSION COSMOS WITH_UNITS 30
14
- LABELVALUE COSMOS VERSION RUBY WITH_UNITS 30
15
- LABELVALUE COSMOS VERSION CTDB WITH_UNITS 30
16
- LABELVALUE COSMOS VERSION USER WITH_UNITS 30
17
- END
18
-
19
-
@@ -1,5 +0,0 @@
1
- # Ignored Parameters
2
- # IGNORE_PARAMETER parameter_name
3
- IGNORE_PARAMETER SYNC
4
- IGNORE_PARAMETER OPCODE
5
- IGNORE_PARAMETER LENGTH
@@ -1,4 +0,0 @@
1
- COMMAND META DATA BIG_ENDIAN "Metadata"
2
- APPEND_PARAMETER VERSION 1024 STRING '' "Version Metadata"
3
- APPEND_PARAMETER NUMBER 32 UINT 0 0 0 "Number Metadata"
4
- WRITE_CONVERSION new_packet_log_conversion.rb
@@ -1,4 +0,0 @@
1
- TELEMETRY META DATA BIG_ENDIAN "Metadata"
2
- APPEND_ITEM VERSION 1024 STRING "Version Metadata"
3
- APPEND_ITEM NUMBER 32 UINT "Number Metadata"
4
- WRITE_CONVERSION new_packet_log_conversion.rb
@@ -1 +0,0 @@
1
- DO NOT DELETE THIS FILE! It is used by cosmos.rb to build the ::Cosmos::USERPATH directory.
@@ -1,157 +0,0 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos/interfaces/stream_interface'
13
-
14
- module Cosmos
15
-
16
- describe StreamInterface do
17
- before(:each) do
18
- @file = File.join(File.dirname(__FILE__),'..','..','lib','test_stream_protocol.rb')
19
- end
20
-
21
- after(:each) do
22
- File.delete(@file) if File.exist?(@file)
23
- end
24
-
25
- describe "initialize" do
26
- it "complains if the stream protocol doesn't exist" do
27
- File.delete(@file) if File.exist?(@file)
28
- expect { StreamInterface.new("test") }.to raise_error(/Unable to require test_stream_protocol.rb/)
29
- expect { StreamInterface.new("test") }.to raise_error(/Ensure test_stream_protocol.rb is in the COSMOS lib directory./)
30
- end
31
-
32
- it "complains if the stream protocol has a bug" do
33
- File.open(@file, 'w') {|file| file.puts "blah" }
34
- expect { StreamInterface.new("test") }.to raise_error(/Unable to require test_stream_protocol.rb/)
35
- end
36
- end
37
-
38
- describe "connect" do
39
- it "raises an exception" do
40
- si = StreamInterface.new("burst")
41
- expect { si.connect }.to raise_error("Interface connect method not implemented")
42
- end
43
- end
44
-
45
- describe "connected?, disconnect, bytes_read, bytes_written" do
46
- it "defers to the stream protocol" do
47
- File.open(@file, 'w') do |file|
48
- file.puts "class TestStreamProtocol"
49
- file.puts "attr_accessor :bytes_read, :bytes_written"
50
- file.puts "def interface=(i); i; end"
51
- file.puts "def connected?; 1; end"
52
- file.puts "def disconnect; 2; end"
53
- file.puts "end"
54
- end
55
- # Ensure we reload since TestStreamProtocol is used throughout
56
- load @file
57
-
58
- si = StreamInterface.new("test")
59
- expect(si.connected?).to eql 1
60
- expect(si.disconnect).to eql 2
61
- si.bytes_read = 10
62
- expect(si.bytes_read).to eql 10
63
- si.bytes_written = 20
64
- expect(si.bytes_written).to eql 20
65
- end
66
- end
67
-
68
- describe "read" do
69
- it "reads from the stream interface and count the packet" do
70
- File.open(@file, 'w') do |file|
71
- file.puts "class TestStreamProtocol"
72
- file.puts "def interface=(i); i; end"
73
- file.puts "def read; 1; end"
74
- file.puts "end"
75
- end
76
- # Ensure we reload since TestStreamProtocol is used throughout
77
- load @file
78
-
79
- si = StreamInterface.new("test")
80
- expect(si.read).to eql 1
81
- expect(si.read_count).to eql 1
82
- end
83
- end
84
-
85
- describe "write, write_raw" do
86
- it "complains if the stream interface isn't connected" do
87
- File.open(@file, 'w') do |file|
88
- file.puts "class TestStreamProtocol"
89
- file.puts "def interface=(i); i; end"
90
- file.puts "def connected?; false; end"
91
- file.puts "end"
92
- end
93
- # Ensure we reload since TestStreamProtocol is used throughout
94
- load @file
95
-
96
- si = StreamInterface.new("test")
97
- expect { si.write(nil) }.to raise_error(/Interface not connected/)
98
- expect { si.write_raw(nil) }.to raise_error(/Interface not connected/)
99
- end
100
-
101
- it "disconnects after write errors" do
102
- $disconnect = false
103
- File.open(@file, 'w') do |file|
104
- file.puts "class TestStreamProtocol"
105
- file.puts "def interface=(i); i; end"
106
- file.puts "def connected?; true; end"
107
- file.puts "def disconnect; $disconnect = true; end"
108
- file.puts "def write(p); raise 'ERROR'; end"
109
- file.puts "def write_raw(p); raise 'ERROR'; end"
110
- file.puts "end"
111
- end
112
- # Ensure we reload since TestStreamProtocol is used throughout
113
- load @file
114
-
115
- expect($disconnect).to be false
116
- si = StreamInterface.new("test")
117
- begin
118
- si.write(nil)
119
- rescue
120
- end
121
- expect(si.write_count).to eql 0
122
- expect($disconnect).to be true
123
-
124
- $disconnect = false
125
- expect($disconnect).to be false
126
- si = StreamInterface.new("test")
127
- begin
128
- si.write_raw(nil)
129
- rescue
130
- end
131
- expect(si.write_count).to eql 0
132
- expect($disconnect).to be true
133
- end
134
-
135
- it "writes to the stream interface and count the packet" do
136
- File.open(@file, 'w') do |file|
137
- file.puts "class TestStreamProtocol"
138
- file.puts "def interface=(i); i; end"
139
- file.puts "def connected?; true; end"
140
- file.puts "def write(p); p; end"
141
- file.puts "def write_raw(p); p; end"
142
- file.puts "end"
143
- end
144
- # Ensure we reload since TestStreamProtocol is used throughout
145
- load @file
146
-
147
- si = StreamInterface.new("test")
148
- si.write(nil)
149
- expect(si.write_count).to eql 1
150
- si.write_raw(nil)
151
- expect(si.write_count).to eql 2
152
- end
153
- end
154
-
155
- end
156
- end
157
-