cosmos 4.0.3-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1491) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitattributes +3 -0
  4. data/.gitignore +48 -0
  5. data/.rubocop.yml +23 -0
  6. data/.travis.yml +10 -0
  7. data/.yardopts +3 -0
  8. data/CONTRIBUTING.txt +50 -0
  9. data/Gemfile +10 -0
  10. data/Guardfile +27 -0
  11. data/LICENSE.txt +879 -0
  12. data/Manifest.txt +1549 -0
  13. data/README.md +111 -0
  14. data/Rakefile +264 -0
  15. data/autohotkey/config/data/attitude.bin +0 -0
  16. data/autohotkey/config/data/diamond.STL +58 -0
  17. data/autohotkey/config/data/groundoff.gif +0 -0
  18. data/autohotkey/config/data/groundon.gif +0 -0
  19. data/autohotkey/config/data/position.bin +0 -0
  20. data/autohotkey/config/data/satellite.gif +0 -0
  21. data/autohotkey/config/data/tada.wav +0 -0
  22. data/autohotkey/config/system/system.txt +29 -0
  23. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +126 -0
  24. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -0
  25. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -0
  26. data/autohotkey/config/targets/INST/doc/README.txt +1 -0
  27. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -0
  28. data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -0
  29. data/autohotkey/config/targets/INST/screens/_footer.txt +4 -0
  30. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -0
  31. data/autohotkey/config/targets/INST/screens/array.txt +7 -0
  32. data/autohotkey/config/targets/INST/screens/block.txt +8 -0
  33. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -0
  34. data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
  35. data/autohotkey/config/targets/INST/screens/graphs.txt +14 -0
  36. data/autohotkey/config/targets/INST/screens/ground.txt +25 -0
  37. data/autohotkey/config/targets/INST/screens/health_status.txt +33 -0
  38. data/autohotkey/config/targets/INST/screens/hs.txt +46 -0
  39. data/autohotkey/config/targets/INST/screens/image.txt +21 -0
  40. data/autohotkey/config/targets/INST/screens/latest.txt +23 -0
  41. data/autohotkey/config/targets/INST/screens/mech.txt +25 -0
  42. data/autohotkey/config/targets/INST/screens/other.txt +25 -0
  43. data/autohotkey/config/targets/INST/screens/params.txt +25 -0
  44. data/autohotkey/config/targets/INST/screens/tabs.txt +68 -0
  45. data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
  46. data/autohotkey/config/targets/INST/target.txt +27 -0
  47. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
  48. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -0
  49. data/autohotkey/config/targets/META/screens/data.txt +12 -0
  50. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  51. data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
  52. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  53. data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  54. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -0
  55. data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
  56. data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
  57. data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
  58. data/autohotkey/config/tools/cmd_sender/cmd_sender.txt +1 -0
  59. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -0
  60. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -0
  61. data/autohotkey/config/tools/handbook_creator/default_toc.xsl +59 -0
  62. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -0
  63. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  64. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  65. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  66. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -0
  67. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  68. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  69. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  70. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  71. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  72. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  73. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  74. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  75. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -0
  76. data/autohotkey/config/tools/launcher/launcher.txt +38 -0
  77. data/autohotkey/config/tools/limits_monitor/README.txt +1 -0
  78. data/autohotkey/config/tools/opengl_builder/error.txt +1 -0
  79. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -0
  80. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -0
  81. data/autohotkey/config/tools/table_manager/OldOneDimensionalTable_def.txt +19 -0
  82. data/autohotkey/config/tools/table_manager/OldTwoDimensionalTable_def.txt +248 -0
  83. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +31 -0
  84. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +28 -0
  85. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -0
  86. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -0
  87. data/autohotkey/config/tools/test_runner/test_runner3.txt +7 -0
  88. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -0
  89. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +14 -0
  90. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -0
  91. data/autohotkey/config/tools/tlm_grapher/README.txt +1 -0
  92. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -0
  93. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -0
  94. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -0
  95. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -0
  96. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -0
  97. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -0
  98. data/autohotkey/lib/example_background_task.rb +42 -0
  99. data/autohotkey/lib/user_version.rb +3 -0
  100. data/autohotkey/procedures/clear_util.rb +7 -0
  101. data/autohotkey/procedures/collect.rb +18 -0
  102. data/autohotkey/procedures/collect_util.rb +14 -0
  103. data/autohotkey/procedures/example_test.rb +71 -0
  104. data/autohotkey/procedures/example_test2.rb +74 -0
  105. data/autohotkey/procedures/script_test.rb +21 -0
  106. data/autohotkey/procedures/syntax_error.rb +18 -0
  107. data/autohotkey/tools/CmdExtractorAHK +16 -0
  108. data/autohotkey/tools/CmdSender +14 -0
  109. data/autohotkey/tools/CmdSenderAHK +18 -0
  110. data/autohotkey/tools/CmdSequence +14 -0
  111. data/autohotkey/tools/CmdSequenceAHK +23 -0
  112. data/autohotkey/tools/CmdSequenceAHK2 +16 -0
  113. data/autohotkey/tools/CmdTlmServer +14 -0
  114. data/autohotkey/tools/CmdTlmServerAHK +28 -0
  115. data/autohotkey/tools/CmdTlmServerAHK2 +17 -0
  116. data/autohotkey/tools/ConfigEditor +16 -0
  117. data/autohotkey/tools/DataViewer +14 -0
  118. data/autohotkey/tools/DataViewerAHK +17 -0
  119. data/autohotkey/tools/HandbookCreatorAHK +20 -0
  120. data/autohotkey/tools/LauncherAHK +17 -0
  121. data/autohotkey/tools/LimitsMonitorAHK +20 -0
  122. data/autohotkey/tools/OpenGLBuilderAHK +24 -0
  123. data/autohotkey/tools/PacketViewer +14 -0
  124. data/autohotkey/tools/PacketViewerAHK +18 -0
  125. data/autohotkey/tools/PacketViewerAHK2 +17 -0
  126. data/autohotkey/tools/Replay +14 -0
  127. data/autohotkey/tools/ReplayAHK +17 -0
  128. data/autohotkey/tools/ScriptRunner +14 -0
  129. data/autohotkey/tools/ScriptRunnerAHK +20 -0
  130. data/autohotkey/tools/ScriptRunnerAHK2 +17 -0
  131. data/autohotkey/tools/TableManager +14 -0
  132. data/autohotkey/tools/TableManagerAHK +25 -0
  133. data/autohotkey/tools/TableManagerAHK2 +18 -0
  134. data/autohotkey/tools/TableManagerAHK3 +18 -0
  135. data/autohotkey/tools/TableManagerAHK4 +24 -0
  136. data/autohotkey/tools/TestRunner +15 -0
  137. data/autohotkey/tools/TestRunnerAHK +17 -0
  138. data/autohotkey/tools/TestRunnerAHK2 +17 -0
  139. data/autohotkey/tools/TestRunnerAHK3 +17 -0
  140. data/autohotkey/tools/TestRunnerAHK4 +17 -0
  141. data/autohotkey/tools/TestRunnerAHK5 +17 -0
  142. data/autohotkey/tools/TestRunnerAHK6 +17 -0
  143. data/autohotkey/tools/TlmExtractor +15 -0
  144. data/autohotkey/tools/TlmExtractorAHK +19 -0
  145. data/autohotkey/tools/TlmExtractorAHK2 +16 -0
  146. data/autohotkey/tools/TlmExtractorAHK3 +16 -0
  147. data/autohotkey/tools/TlmGrapher +14 -0
  148. data/autohotkey/tools/TlmGrapherAHK +19 -0
  149. data/autohotkey/tools/TlmGrapherAHK2 +23 -0
  150. data/autohotkey/tools/TlmGrapherAHK3 +17 -0
  151. data/autohotkey/tools/TlmGrapherAHK4 +17 -0
  152. data/autohotkey/tools/TlmViewer +14 -0
  153. data/autohotkey/tools/TlmViewerAHK +28 -0
  154. data/autohotkey/tools/TlmViewerAHK2 +22 -0
  155. data/autohotkey/tools/TlmViewerAHK3 +23 -0
  156. data/autohotkey/tools/TlmViewerAHK4 +22 -0
  157. data/autohotkey/tools/TlmViewerAHK5 +18 -0
  158. data/autohotkey/tools/autohotkey.rb +38 -0
  159. data/autohotkey/tools/cmd_extractor.ahk +50 -0
  160. data/autohotkey/tools/cmd_sender.ahk +180 -0
  161. data/autohotkey/tools/cmd_sequence.ahk +215 -0
  162. data/autohotkey/tools/cmd_sequence2.ahk +23 -0
  163. data/autohotkey/tools/cmd_tlm_server.ahk +90 -0
  164. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -0
  165. data/autohotkey/tools/data_viewer.ahk +140 -0
  166. data/autohotkey/tools/handbook_creator.ahk +32 -0
  167. data/autohotkey/tools/launcher.ahk +41 -0
  168. data/autohotkey/tools/limits_monitor.ahk +121 -0
  169. data/autohotkey/tools/open_gl_builder.ahk +133 -0
  170. data/autohotkey/tools/packet_viewer.ahk +217 -0
  171. data/autohotkey/tools/packet_viewer2.ahk +9 -0
  172. data/autohotkey/tools/replay.ahk +103 -0
  173. data/autohotkey/tools/script_runner.ahk +588 -0
  174. data/autohotkey/tools/script_runner2.ahk +50 -0
  175. data/autohotkey/tools/table_manager.ahk +291 -0
  176. data/autohotkey/tools/test_runner.ahk +262 -0
  177. data/autohotkey/tools/test_runner2.ahk +49 -0
  178. data/autohotkey/tools/test_runner3.ahk +11 -0
  179. data/autohotkey/tools/test_runner5.ahk +8 -0
  180. data/autohotkey/tools/test_runner6.ahk +5 -0
  181. data/autohotkey/tools/tlm_extractor.ahk +357 -0
  182. data/autohotkey/tools/tlm_grapher.ahk +658 -0
  183. data/autohotkey/tools/tlm_grapher2.ahk +115 -0
  184. data/autohotkey/tools/tlm_grapher3.ahk +23 -0
  185. data/autohotkey/tools/tlm_viewer.ahk +140 -0
  186. data/autohotkey/tools/tlm_viewer2.ahk +49 -0
  187. data/autohotkey/tools/tlm_viewer4.ahk +4 -0
  188. data/autohotkey/tools/tlm_viewer5.ahk +19 -0
  189. data/autohotkey/tools/tool_launch.rb +38 -0
  190. data/bin/cosmos +266 -0
  191. data/bin/cstol_converter +1166 -0
  192. data/bin/exchndl20-x64.dll +0 -0
  193. data/bin/exchndl20.dll +0 -0
  194. data/bin/exchndl21-x64.dll +0 -0
  195. data/bin/exchndl21.dll +0 -0
  196. data/bin/exchndl22-x64.dll +0 -0
  197. data/bin/exchndl22.dll +0 -0
  198. data/bin/mgwhelp-x64.dll +0 -0
  199. data/bin/mgwhelp.dll +0 -0
  200. data/bin/rubysloc +85 -0
  201. data/bin/xtce_converter +83 -0
  202. data/cosmos.gemspec +109 -0
  203. data/data/COSMOS_64x64.bmp +0 -0
  204. data/data/COSMOS_64x64.ico +0 -0
  205. data/data/COSMOS_64x64.png +0 -0
  206. data/data/COSMOS_Architecture.png +0 -0
  207. data/data/CheckBoxCheck.gif +0 -0
  208. data/data/CheckBoxEmpty.gif +0 -0
  209. data/data/Earthmap1024x512.gif +0 -0
  210. data/data/about.txt +4 -0
  211. data/data/add_database.png +0 -0
  212. data/data/add_plot.png +0 -0
  213. data/data/add_tab.png +0 -0
  214. data/data/blank.png +0 -0
  215. data/data/bug.png +0 -0
  216. data/data/checkmark.png +0 -0
  217. data/data/close.png +0 -0
  218. data/data/cmd_extractor.png +0 -0
  219. data/data/cmd_sender.png +0 -0
  220. data/data/cmd_sequence.png +0 -0
  221. data/data/config/_array_params.yaml +23 -0
  222. data/data/config/_id_items.yaml +24 -0
  223. data/data/config/_id_params.yaml +58 -0
  224. data/data/config/_interfaces.yaml +206 -0
  225. data/data/config/_items.yaml +20 -0
  226. data/data/config/_params.yaml +58 -0
  227. data/data/config/cmd_tlm_server.yaml +124 -0
  228. data/data/config/command.yaml +40 -0
  229. data/data/config/command_modifiers.yaml +145 -0
  230. data/data/config/command_telemetry.yaml +3 -0
  231. data/data/config/data_viewer.yaml +43 -0
  232. data/data/config/handbook_creator.yaml +23 -0
  233. data/data/config/housekeeping_params.yaml +71 -0
  234. data/data/config/interface_modifiers.yaml +44 -0
  235. data/data/config/item_modifiers.yaml +211 -0
  236. data/data/config/launcher.yaml +117 -0
  237. data/data/config/limits_monitor.yaml +53 -0
  238. data/data/config/linegraph_params.yaml +30 -0
  239. data/data/config/linegraph_plot.yaml +106 -0
  240. data/data/config/page_modifiers.yaml +128 -0
  241. data/data/config/param_item_modifiers.yaml +46 -0
  242. data/data/config/parameter_modifiers.yaml +180 -0
  243. data/data/config/protocols.yaml +273 -0
  244. data/data/config/screen.yaml +151 -0
  245. data/data/config/script_runner.yaml +15 -0
  246. data/data/config/system.yaml +247 -0
  247. data/data/config/table_manager.yaml +76 -0
  248. data/data/config/table_parameter_modifiers.yaml +9 -0
  249. data/data/config/target.yaml +80 -0
  250. data/data/config/telemetry.yaml +80 -0
  251. data/data/config/telemetry_modifiers.yaml +142 -0
  252. data/data/config/test_runner.yaml +118 -0
  253. data/data/config/tlm_extractor.yaml +109 -0
  254. data/data/config/tlm_grapher.yaml +78 -0
  255. data/data/config/tlm_viewer.yaml +112 -0
  256. data/data/config/unknown.yaml +3 -0
  257. data/data/config/widgets.yaml +1339 -0
  258. data/data/config/xy_params.yaml +50 -0
  259. data/data/config/xy_plot.yaml +12 -0
  260. data/data/config_editor.png +0 -0
  261. data/data/copy.png +0 -0
  262. data/data/cosmos.xcf +0 -0
  263. data/data/cosmos_word.gif +0 -0
  264. data/data/crc.txt +351 -0
  265. data/data/critical.wav +0 -0
  266. data/data/cts.png +0 -0
  267. data/data/cut.png +0 -0
  268. data/data/data_viewer.png +0 -0
  269. data/data/delete.png +0 -0
  270. data/data/delete_database.png +0 -0
  271. data/data/delete_plot.png +0 -0
  272. data/data/delete_tab.png +0 -0
  273. data/data/diamond.STL +58 -0
  274. data/data/disconnected.png +0 -0
  275. data/data/edit.png +0 -0
  276. data/data/edit_database.png +0 -0
  277. data/data/edit_plot.png +0 -0
  278. data/data/edit_tab.png +0 -0
  279. data/data/end-26.png +0 -0
  280. data/data/fast_forward-26.png +0 -0
  281. data/data/file.png +0 -0
  282. data/data/handbook_creator.png +0 -0
  283. data/data/help.png +0 -0
  284. data/data/html-32.png +0 -0
  285. data/data/information.wav +0 -0
  286. data/data/input.wav +0 -0
  287. data/data/launcher.png +0 -0
  288. data/data/legal.gif +0 -0
  289. data/data/legal.txt +8 -0
  290. data/data/limits_monitor.png +0 -0
  291. data/data/message.wav +0 -0
  292. data/data/moonmap1k.gif +0 -0
  293. data/data/multi.png +0 -0
  294. data/data/open.png +0 -0
  295. data/data/open_in_browser-32.png +0 -0
  296. data/data/opengl_builder.png +0 -0
  297. data/data/packet_viewer.png +0 -0
  298. data/data/pdf-32.png +0 -0
  299. data/data/play-26.png +0 -0
  300. data/data/question.wav +0 -0
  301. data/data/redo.png +0 -0
  302. data/data/replay.png +0 -0
  303. data/data/reverse-play-26.png +0 -0
  304. data/data/rewind-26.png +0 -0
  305. data/data/running.png +0 -0
  306. data/data/save.png +0 -0
  307. data/data/save_as.png +0 -0
  308. data/data/screenshot.png +0 -0
  309. data/data/script_runner.png +0 -0
  310. data/data/search-14.png +0 -0
  311. data/data/search.png +0 -0
  312. data/data/send_file.png +0 -0
  313. data/data/skip_to_start-26.png +0 -0
  314. data/data/spinner.gif +0 -0
  315. data/data/splash.gif +0 -0
  316. data/data/stop-26.png +0 -0
  317. data/data/table_manager.png +0 -0
  318. data/data/test_runner.png +0 -0
  319. data/data/tlm_extractor.png +0 -0
  320. data/data/tlm_grapher.png +0 -0
  321. data/data/tlm_viewer.png +0 -0
  322. data/data/undo.png +0 -0
  323. data/data/warning.wav +0 -0
  324. data/demo/Gemfile +10 -0
  325. data/demo/Launcher +16 -0
  326. data/demo/Launcher.bat +9 -0
  327. data/demo/Rakefile +77 -0
  328. data/demo/config/data/attitude.bin +0 -0
  329. data/demo/config/data/crc.txt +258 -0
  330. data/demo/config/data/diamond.STL +58 -0
  331. data/demo/config/data/groundoff.gif +0 -0
  332. data/demo/config/data/groundon.gif +0 -0
  333. data/demo/config/data/hselectoff.gif +0 -0
  334. data/demo/config/data/hselecton.gif +0 -0
  335. data/demo/config/data/hswitchoff.gif +0 -0
  336. data/demo/config/data/hswitchon.gif +0 -0
  337. data/demo/config/data/meta_init.txt +1 -0
  338. data/demo/config/data/position.bin +0 -0
  339. data/demo/config/data/poweroff.gif +0 -0
  340. data/demo/config/data/poweron.gif +0 -0
  341. data/demo/config/data/satellite.gif +0 -0
  342. data/demo/config/data/tada.wav +0 -0
  343. data/demo/config/data/vswitchoff.gif +0 -0
  344. data/demo/config/data/vswitchon.gif +0 -0
  345. data/demo/config/system/system.txt +47 -0
  346. data/demo/config/system/system2.txt +43 -0
  347. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -0
  348. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -0
  349. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -0
  350. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +18 -0
  351. data/demo/config/targets/EXAMPLE/target.txt +9 -0
  352. data/demo/config/targets/INST/cmd_tlm/_ccsds_cmd.txt +9 -0
  353. data/demo/config/targets/INST/cmd_tlm/_ccsds_tlm.txt +19 -0
  354. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +57 -0
  355. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +164 -0
  356. data/demo/config/targets/INST/cmd_tlm_server.txt +5 -0
  357. data/demo/config/targets/INST/doc/README.txt +1 -0
  358. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -0
  359. data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
  360. data/demo/config/targets/INST/lib/sim_inst.rb +321 -0
  361. data/demo/config/targets/INST/procedures/checks.rb +11 -0
  362. data/demo/config/targets/INST/procedures/collect.rb +18 -0
  363. data/demo/config/targets/INST/procedures/disconnect.rb +29 -0
  364. data/demo/config/targets/INST/procedures/utilities/clear.rb +7 -0
  365. data/demo/config/targets/INST/procedures/utilities/collect.rb +14 -0
  366. data/demo/config/targets/INST/screens/_footer.txt +4 -0
  367. data/demo/config/targets/INST/screens/adcs.txt +70 -0
  368. data/demo/config/targets/INST/screens/array.txt +15 -0
  369. data/demo/config/targets/INST/screens/block.txt +8 -0
  370. data/demo/config/targets/INST/screens/commanding.txt +37 -0
  371. data/demo/config/targets/INST/screens/graphs.txt +14 -0
  372. data/demo/config/targets/INST/screens/ground.txt +25 -0
  373. data/demo/config/targets/INST/screens/hs.txt +42 -0
  374. data/demo/config/targets/INST/screens/latest.txt +23 -0
  375. data/demo/config/targets/INST/screens/limits.txt +43 -0
  376. data/demo/config/targets/INST/screens/other.txt +24 -0
  377. data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
  378. data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
  379. data/demo/config/targets/INST/screens/tabs.txt +68 -0
  380. data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
  381. data/demo/config/targets/INST/tables/EventAction.csv +9 -0
  382. data/demo/config/targets/INST/tables/EventAction.dat +0 -0
  383. data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
  384. data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
  385. data/demo/config/targets/INST/target.txt +37 -0
  386. data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
  387. data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
  388. data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
  389. data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
  390. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +6 -0
  391. data/demo/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  392. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -0
  393. data/demo/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  394. data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  395. data/demo/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  396. data/demo/config/targets/SYSTEM/lib/limits_groups.rb +55 -0
  397. data/demo/config/targets/SYSTEM/screens/status.txt +12 -0
  398. data/demo/config/targets/SYSTEM/target.txt +12 -0
  399. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -0
  400. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -0
  401. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -0
  402. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +59 -0
  403. data/demo/config/targets/TEMPLATED/target.txt +8 -0
  404. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +49 -0
  405. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +42 -0
  406. data/demo/config/tools/data_viewer/data_viewer.txt +20 -0
  407. data/demo/config/tools/example_application.css +58 -0
  408. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -0
  409. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -0
  410. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -0
  411. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  412. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  413. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -0
  414. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  415. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  416. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  417. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  418. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  419. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  420. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -0
  421. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  422. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -0
  423. data/demo/config/tools/launcher/launcher.css +7 -0
  424. data/demo/config/tools/launcher/launcher.txt +48 -0
  425. data/demo/config/tools/launcher/launcher2.css +10 -0
  426. data/demo/config/tools/launcher/launcher2.txt +48 -0
  427. data/demo/config/tools/launcher/launcher_mini.txt +45 -0
  428. data/demo/config/tools/limits_monitor/README.txt +1 -0
  429. data/demo/config/tools/opengl_builder/README.txt +1 -0
  430. data/demo/config/tools/script_runner/script_runner.txt +3 -0
  431. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -0
  432. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  433. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +37 -0
  434. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +34 -0
  435. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +9 -0
  436. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +31 -0
  437. data/demo/config/tools/test_runner/test_runner.css +45 -0
  438. data/demo/config/tools/test_runner/test_runner.txt +17 -0
  439. data/demo/config/tools/tlm_extractor/_adcs_time.txt +2 -0
  440. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  441. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  442. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  443. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  444. data/demo/config/tools/tlm_grapher/README.txt +1 -0
  445. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
  446. data/demo/lib/example_background_task.rb +55 -0
  447. data/demo/lib/example_target.rb +103 -0
  448. data/demo/lib/scpi_target.rb +68 -0
  449. data/demo/lib/user_version.rb +3 -0
  450. data/demo/procedures/cosmos_api_test.rb +310 -0
  451. data/demo/procedures/example_test.rb +192 -0
  452. data/demo/procedures/plot_test.rb +8 -0
  453. data/demo/procedures/run_example_test.rb +3 -0
  454. data/demo/procedures/test.rb +51 -0
  455. data/demo/tools/CmdExtractor +16 -0
  456. data/demo/tools/CmdExtractor.bat +9 -0
  457. data/demo/tools/CmdSender +16 -0
  458. data/demo/tools/CmdSender.bat +9 -0
  459. data/demo/tools/CmdSequence +16 -0
  460. data/demo/tools/CmdSequence.bat +9 -0
  461. data/demo/tools/CmdTlmServer +16 -0
  462. data/demo/tools/CmdTlmServer.bat +9 -0
  463. data/demo/tools/ConfigEditor +16 -0
  464. data/demo/tools/ConfigEditor.bat +9 -0
  465. data/demo/tools/DataViewer +16 -0
  466. data/demo/tools/DataViewer.bat +9 -0
  467. data/demo/tools/ExampleTarget +16 -0
  468. data/demo/tools/ExampleTarget.bat +9 -0
  469. data/demo/tools/HandbookCreator +16 -0
  470. data/demo/tools/HandbookCreator.bat +9 -0
  471. data/demo/tools/Launcher +16 -0
  472. data/demo/tools/Launcher.bat +9 -0
  473. data/demo/tools/LimitsMonitor +16 -0
  474. data/demo/tools/LimitsMonitor.bat +9 -0
  475. data/demo/tools/OpenGLBuilder +16 -0
  476. data/demo/tools/OpenGLBuilder.bat +9 -0
  477. data/demo/tools/PacketViewer +16 -0
  478. data/demo/tools/PacketViewer.bat +9 -0
  479. data/demo/tools/Replay +16 -0
  480. data/demo/tools/Replay.bat +9 -0
  481. data/demo/tools/ScpiTarget +16 -0
  482. data/demo/tools/ScpiTarget.bat +9 -0
  483. data/demo/tools/ScriptRunner +16 -0
  484. data/demo/tools/ScriptRunner.bat +9 -0
  485. data/demo/tools/TableManager +16 -0
  486. data/demo/tools/TableManager.bat +9 -0
  487. data/demo/tools/TestRunner +16 -0
  488. data/demo/tools/TestRunner.bat +9 -0
  489. data/demo/tools/TlmExtractor +16 -0
  490. data/demo/tools/TlmExtractor.bat +9 -0
  491. data/demo/tools/TlmGrapher +16 -0
  492. data/demo/tools/TlmGrapher.bat +9 -0
  493. data/demo/tools/TlmViewer +16 -0
  494. data/demo/tools/TlmViewer.bat +9 -0
  495. data/demo/tools/ToolLaunch.bat +72 -0
  496. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  497. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  498. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  499. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  500. data/demo/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  501. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  502. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  503. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  504. data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  505. data/demo/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  506. data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  507. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  508. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  509. data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  510. data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  511. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  512. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  513. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  514. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  515. data/demo/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  516. data/demo/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  517. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  518. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  519. data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  520. data/demo/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  521. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  522. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  523. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  524. data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  525. data/demo/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  526. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  527. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  528. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  529. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  530. data/demo/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  531. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  532. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  533. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  534. data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  535. data/demo/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  536. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  537. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  538. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  539. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  540. data/demo/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  541. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  542. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  543. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  544. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  545. data/demo/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  546. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  547. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  548. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  549. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  550. data/demo/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  551. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -0
  552. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  553. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  554. data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  555. data/demo/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  556. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  557. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  558. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  559. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  560. data/demo/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  561. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  562. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  563. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  564. data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  565. data/demo/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  566. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  567. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  568. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  569. data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  570. data/demo/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  571. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  572. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  573. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  574. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  575. data/demo/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  576. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  577. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  578. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  579. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  580. data/demo/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  581. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  582. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  583. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  584. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  585. data/demo/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  586. data/demo/tools/tool_launch.rb +38 -0
  587. data/ext/cosmos/ext/array/array.c +111 -0
  588. data/ext/cosmos/ext/array/extconf.rb +13 -0
  589. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -0
  590. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -0
  591. data/ext/cosmos/ext/config_parser/config_parser.c +237 -0
  592. data/ext/cosmos/ext/config_parser/extconf.rb +13 -0
  593. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -0
  594. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -0
  595. data/ext/cosmos/ext/crc/crc.c +341 -0
  596. data/ext/cosmos/ext/crc/extconf.rb +13 -0
  597. data/ext/cosmos/ext/line_graph/extconf.rb +13 -0
  598. data/ext/cosmos/ext/line_graph/line_graph.c +501 -0
  599. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +13 -0
  600. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -0
  601. data/ext/cosmos/ext/packet/extconf.rb +13 -0
  602. data/ext/cosmos/ext/packet/packet.c +350 -0
  603. data/ext/cosmos/ext/platform/extconf.rb +13 -0
  604. data/ext/cosmos/ext/platform/platform.c +101 -0
  605. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -0
  606. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -0
  607. data/ext/cosmos/ext/string/extconf.rb +13 -0
  608. data/ext/cosmos/ext/string/string.c +49 -0
  609. data/ext/cosmos/ext/structure/structure.c +1433 -0
  610. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -0
  611. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -0
  612. data/ext/cosmos/ext/telemetry/extconf.rb +13 -0
  613. data/ext/cosmos/ext/telemetry/telemetry.c +307 -0
  614. data/ext/mkrf_conf.rb +40 -0
  615. data/install/Gemfile +10 -0
  616. data/install/Launcher +16 -0
  617. data/install/Launcher.bat +9 -0
  618. data/install/Rakefile +77 -0
  619. data/install/config/data/README.txt +1 -0
  620. data/install/config/data/crc.txt +160 -0
  621. data/install/config/system/system.txt +39 -0
  622. data/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +9 -0
  623. data/install/config/targets/SYSTEM/target.txt +12 -0
  624. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -0
  625. data/install/config/tools/data_viewer/data_viewer.txt +4 -0
  626. data/install/config/tools/handbook_creator/default_toc.xsl +59 -0
  627. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -0
  628. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  629. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  630. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  631. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -0
  632. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  633. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  634. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  635. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  636. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  637. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  638. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  639. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  640. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -0
  641. data/install/config/tools/launcher/launcher.txt +40 -0
  642. data/install/config/tools/limits_monitor/README.txt +1 -0
  643. data/install/config/tools/opengl_builder/README.txt +1 -0
  644. data/install/config/tools/script_runner/script_runner.txt +3 -0
  645. data/install/config/tools/table_manager/README.txt +1 -0
  646. data/install/config/tools/test_runner/test_runner.txt +8 -0
  647. data/install/config/tools/tlm_extractor/README.txt +1 -0
  648. data/install/config/tools/tlm_grapher/README.txt +1 -0
  649. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -0
  650. data/install/lib/user_version.rb +3 -0
  651. data/install/procedures/README.txt +1 -0
  652. data/install/tools/CmdExtractor +16 -0
  653. data/install/tools/CmdExtractor.bat +9 -0
  654. data/install/tools/CmdSender +16 -0
  655. data/install/tools/CmdSender.bat +9 -0
  656. data/install/tools/CmdSequence +16 -0
  657. data/install/tools/CmdSequence.bat +9 -0
  658. data/install/tools/CmdTlmServer +16 -0
  659. data/install/tools/CmdTlmServer.bat +9 -0
  660. data/install/tools/ConfigEditor +16 -0
  661. data/install/tools/ConfigEditor.bat +9 -0
  662. data/install/tools/DataViewer +16 -0
  663. data/install/tools/DataViewer.bat +9 -0
  664. data/install/tools/HandbookCreator +16 -0
  665. data/install/tools/HandbookCreator.bat +9 -0
  666. data/install/tools/Launcher +16 -0
  667. data/install/tools/Launcher.bat +9 -0
  668. data/install/tools/LimitsMonitor +16 -0
  669. data/install/tools/LimitsMonitor.bat +9 -0
  670. data/install/tools/OpenGLBuilder +16 -0
  671. data/install/tools/OpenGLBuilder.bat +9 -0
  672. data/install/tools/PacketViewer +16 -0
  673. data/install/tools/PacketViewer.bat +9 -0
  674. data/install/tools/Replay +16 -0
  675. data/install/tools/Replay.bat +9 -0
  676. data/install/tools/ScriptRunner +16 -0
  677. data/install/tools/ScriptRunner.bat +9 -0
  678. data/install/tools/TableManager +16 -0
  679. data/install/tools/TableManager.bat +9 -0
  680. data/install/tools/TestRunner +16 -0
  681. data/install/tools/TestRunner.bat +9 -0
  682. data/install/tools/TlmExtractor +16 -0
  683. data/install/tools/TlmExtractor.bat +9 -0
  684. data/install/tools/TlmGrapher +16 -0
  685. data/install/tools/TlmGrapher.bat +9 -0
  686. data/install/tools/TlmViewer +16 -0
  687. data/install/tools/TlmViewer.bat +9 -0
  688. data/install/tools/ToolLaunch.bat +72 -0
  689. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  690. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -0
  691. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -0
  692. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  693. data/install/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  694. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  695. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -0
  696. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -0
  697. data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
  698. data/install/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  699. data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
  700. data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
  701. data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
  702. data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
  703. data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
  704. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  705. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -0
  706. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -0
  707. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
  708. data/install/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  709. data/install/tools/mac/ConfigEditor.app/Contents/Info.plist +38 -0
  710. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/ConfigEditor.rb +16 -0
  711. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +10 -0
  712. data/install/tools/mac/ConfigEditor.app/Contents/MacOS/tool_launch.rb +38 -0
  713. data/install/tools/mac/ConfigEditor.app/Contents/Resources/appIcon.icns +0 -0
  714. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  715. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -0
  716. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -0
  717. data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  718. data/install/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  719. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  720. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -0
  721. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -0
  722. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
  723. data/install/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  724. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  725. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -0
  726. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -0
  727. data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
  728. data/install/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  729. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  730. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -0
  731. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -0
  732. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
  733. data/install/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  734. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  735. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -0
  736. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -0
  737. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
  738. data/install/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  739. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  740. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -0
  741. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -0
  742. data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  743. data/install/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  744. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -0
  745. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -0
  746. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -0
  747. data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
  748. data/install/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  749. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  750. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -0
  751. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -0
  752. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  753. data/install/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  754. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  755. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -0
  756. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -0
  757. data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
  758. data/install/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  759. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  760. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -0
  761. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -0
  762. data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
  763. data/install/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  764. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  765. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -0
  766. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -0
  767. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
  768. data/install/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  769. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  770. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -0
  771. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -0
  772. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
  773. data/install/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  774. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  775. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -0
  776. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -0
  777. data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
  778. data/install/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  779. data/install/tools/tool_launch.rb +38 -0
  780. data/lib/cosmos.rb +63 -0
  781. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -0
  782. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -0
  783. data/lib/cosmos/config/config_parser.rb +508 -0
  784. data/lib/cosmos/config/meta_config_parser.rb +57 -0
  785. data/lib/cosmos/conversions.rb +13 -0
  786. data/lib/cosmos/conversions/conversion.rb +52 -0
  787. data/lib/cosmos/conversions/generic_conversion.rb +67 -0
  788. data/lib/cosmos/conversions/new_packet_log_conversion.rb +52 -0
  789. data/lib/cosmos/conversions/polynomial_conversion.rb +79 -0
  790. data/lib/cosmos/conversions/processor_conversion.rb +56 -0
  791. data/lib/cosmos/conversions/received_count_conversion.rb +33 -0
  792. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -0
  793. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -0
  794. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +139 -0
  795. data/lib/cosmos/conversions/unix_time_conversion.rb +57 -0
  796. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -0
  797. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -0
  798. data/lib/cosmos/core_ext.rb +18 -0
  799. data/lib/cosmos/core_ext/array.rb +397 -0
  800. data/lib/cosmos/core_ext/class.rb +53 -0
  801. data/lib/cosmos/core_ext/cosmos_io.rb +45 -0
  802. data/lib/cosmos/core_ext/exception.rb +52 -0
  803. data/lib/cosmos/core_ext/file.rb +76 -0
  804. data/lib/cosmos/core_ext/hash.rb +28 -0
  805. data/lib/cosmos/core_ext/io.rb +93 -0
  806. data/lib/cosmos/core_ext/kernel.rb +33 -0
  807. data/lib/cosmos/core_ext/math.rb +119 -0
  808. data/lib/cosmos/core_ext/matrix.rb +149 -0
  809. data/lib/cosmos/core_ext/objectspace.rb +27 -0
  810. data/lib/cosmos/core_ext/range.rb +18 -0
  811. data/lib/cosmos/core_ext/socket.rb +32 -0
  812. data/lib/cosmos/core_ext/string.rb +351 -0
  813. data/lib/cosmos/core_ext/stringio.rb +24 -0
  814. data/lib/cosmos/core_ext/time.rb +481 -0
  815. data/lib/cosmos/ext/.keep +0 -0
  816. data/lib/cosmos/gui/choosers/combobox_chooser.rb +141 -0
  817. data/lib/cosmos/gui/choosers/file_chooser.rb +85 -0
  818. data/lib/cosmos/gui/choosers/float_chooser.rb +67 -0
  819. data/lib/cosmos/gui/choosers/integer_chooser.rb +69 -0
  820. data/lib/cosmos/gui/choosers/string_chooser.rb +35 -0
  821. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -0
  822. data/lib/cosmos/gui/choosers/value_chooser.rb +67 -0
  823. data/lib/cosmos/gui/dialogs/about_dialog.rb +166 -0
  824. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +140 -0
  825. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +51 -0
  826. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +163 -0
  827. data/lib/cosmos/gui/dialogs/details_dialog.rb +190 -0
  828. data/lib/cosmos/gui/dialogs/exception_dialog.rb +106 -0
  829. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +60 -0
  830. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +272 -0
  831. data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
  832. data/lib/cosmos/gui/dialogs/legal_dialog.rb +183 -0
  833. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +97 -0
  834. data/lib/cosmos/gui/dialogs/progress_dialog.rb +313 -0
  835. data/lib/cosmos/gui/dialogs/pry_dialog.rb +169 -0
  836. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +51 -0
  837. data/lib/cosmos/gui/dialogs/select_dialog.rb +59 -0
  838. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +159 -0
  839. data/lib/cosmos/gui/dialogs/splash.rb +145 -0
  840. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +201 -0
  841. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +79 -0
  842. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +108 -0
  843. data/lib/cosmos/gui/line_graph/line_graph.rb +482 -0
  844. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +36 -0
  845. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +521 -0
  846. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +112 -0
  847. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +452 -0
  848. data/lib/cosmos/gui/line_graph/line_graph_script.rb +81 -0
  849. data/lib/cosmos/gui/line_graph/lines.rb +304 -0
  850. data/lib/cosmos/gui/line_graph/overview_graph.rb +474 -0
  851. data/lib/cosmos/gui/opengl/earth_model.rb +25 -0
  852. data/lib/cosmos/gui/opengl/gl_bounds.rb +55 -0
  853. data/lib/cosmos/gui/opengl/gl_light.rb +38 -0
  854. data/lib/cosmos/gui/opengl/gl_material.rb +28 -0
  855. data/lib/cosmos/gui/opengl/gl_scene.rb +78 -0
  856. data/lib/cosmos/gui/opengl/gl_shape.rb +150 -0
  857. data/lib/cosmos/gui/opengl/gl_viewer.rb +712 -0
  858. data/lib/cosmos/gui/opengl/gl_viewport.rb +34 -0
  859. data/lib/cosmos/gui/opengl/moon_model.rb +25 -0
  860. data/lib/cosmos/gui/opengl/opengl.rb +8 -0
  861. data/lib/cosmos/gui/opengl/stl_reader.rb +210 -0
  862. data/lib/cosmos/gui/opengl/stl_shape.rb +127 -0
  863. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -0
  864. data/lib/cosmos/gui/qt.rb +841 -0
  865. data/lib/cosmos/gui/qt_tool.rb +489 -0
  866. data/lib/cosmos/gui/text/completion.rb +402 -0
  867. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -0
  868. data/lib/cosmos/gui/text/completion_text_edit.rb +194 -0
  869. data/lib/cosmos/gui/text/ruby_editor.rb +463 -0
  870. data/lib/cosmos/gui/utilities/analyze_log.rb +153 -0
  871. data/lib/cosmos/gui/utilities/screenshot.rb +33 -0
  872. data/lib/cosmos/gui/utilities/script_module_gui.rb +364 -0
  873. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +171 -0
  874. data/lib/cosmos/gui/widgets/packet_log_frame.rb +344 -0
  875. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -0
  876. data/lib/cosmos/interfaces.rb +21 -0
  877. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +134 -0
  878. data/lib/cosmos/interfaces/interface.rb +449 -0
  879. data/lib/cosmos/interfaces/linc_interface.rb +459 -0
  880. data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
  881. data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
  882. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +114 -0
  883. data/lib/cosmos/interfaces/protocols/length_protocol.rb +147 -0
  884. data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
  885. data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
  886. data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
  887. data/lib/cosmos/interfaces/protocols/template_protocol.rb +240 -0
  888. data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
  889. data/lib/cosmos/interfaces/serial_interface.rb +81 -0
  890. data/lib/cosmos/interfaces/simulated_target_interface.rb +140 -0
  891. data/lib/cosmos/interfaces/stream_interface.rb +64 -0
  892. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -0
  893. data/lib/cosmos/interfaces/tcpip_server_interface.rb +625 -0
  894. data/lib/cosmos/interfaces/udp_interface.rb +141 -0
  895. data/lib/cosmos/io/buffered_file.rb +101 -0
  896. data/lib/cosmos/io/cosmos_snmp.rb +50 -0
  897. data/lib/cosmos/io/io_multiplexer.rb +71 -0
  898. data/lib/cosmos/io/json_drb.rb +386 -0
  899. data/lib/cosmos/io/json_drb_object.rb +201 -0
  900. data/lib/cosmos/io/json_rpc.rb +365 -0
  901. data/lib/cosmos/io/posix_serial_driver.rb +147 -0
  902. data/lib/cosmos/io/raw_logger.rb +170 -0
  903. data/lib/cosmos/io/raw_logger_pair.rb +71 -0
  904. data/lib/cosmos/io/serial_driver.rb +94 -0
  905. data/lib/cosmos/io/stderr.rb +36 -0
  906. data/lib/cosmos/io/stdout.rb +36 -0
  907. data/lib/cosmos/io/udp_sockets.rb +152 -0
  908. data/lib/cosmos/io/win32_serial_driver.rb +165 -0
  909. data/lib/cosmos/packet_logs.rb +6 -0
  910. data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -0
  911. data/lib/cosmos/packet_logs/packet_log_reader.rb +461 -0
  912. data/lib/cosmos/packet_logs/packet_log_writer.rb +341 -0
  913. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -0
  914. data/lib/cosmos/packets/binary_accessor.rb +1201 -0
  915. data/lib/cosmos/packets/commands.rb +318 -0
  916. data/lib/cosmos/packets/limits.rb +264 -0
  917. data/lib/cosmos/packets/limits_response.rb +42 -0
  918. data/lib/cosmos/packets/packet.rb +994 -0
  919. data/lib/cosmos/packets/packet_config.rb +1393 -0
  920. data/lib/cosmos/packets/packet_item.rb +585 -0
  921. data/lib/cosmos/packets/packet_item_limits.rb +140 -0
  922. data/lib/cosmos/packets/parsers/format_string_parser.rb +59 -0
  923. data/lib/cosmos/packets/parsers/limits_parser.rb +147 -0
  924. data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -0
  925. data/lib/cosmos/packets/parsers/macro_parser.rb +118 -0
  926. data/lib/cosmos/packets/parsers/packet_item_parser.rb +234 -0
  927. data/lib/cosmos/packets/parsers/packet_parser.rb +131 -0
  928. data/lib/cosmos/packets/parsers/processor_parser.rb +63 -0
  929. data/lib/cosmos/packets/parsers/state_parser.rb +119 -0
  930. data/lib/cosmos/packets/structure.rb +508 -0
  931. data/lib/cosmos/packets/structure_item.rb +292 -0
  932. data/lib/cosmos/packets/telemetry.rb +444 -0
  933. data/lib/cosmos/processors.rb +6 -0
  934. data/lib/cosmos/processors/new_packet_log_processor.rb +39 -0
  935. data/lib/cosmos/processors/processor.rb +76 -0
  936. data/lib/cosmos/processors/statistics_processor.rb +70 -0
  937. data/lib/cosmos/processors/watermark_processor.rb +49 -0
  938. data/lib/cosmos/script.rb +9 -0
  939. data/lib/cosmos/script/api_shared.rb +972 -0
  940. data/lib/cosmos/script/cmd_tlm_server.rb +138 -0
  941. data/lib/cosmos/script/commands.rb +189 -0
  942. data/lib/cosmos/script/extract.rb +139 -0
  943. data/lib/cosmos/script/limits.rb +116 -0
  944. data/lib/cosmos/script/script.rb +76 -0
  945. data/lib/cosmos/script/scripting.rb +144 -0
  946. data/lib/cosmos/script/telemetry.rb +216 -0
  947. data/lib/cosmos/script/tools.rb +97 -0
  948. data/lib/cosmos/streams/serial_stream.rb +150 -0
  949. data/lib/cosmos/streams/stream.rb +54 -0
  950. data/lib/cosmos/streams/tcpip_client_stream.rb +113 -0
  951. data/lib/cosmos/streams/tcpip_socket_stream.rb +186 -0
  952. data/lib/cosmos/system.rb +4 -0
  953. data/lib/cosmos/system/system.rb +778 -0
  954. data/lib/cosmos/system/target.rb +228 -0
  955. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +268 -0
  956. data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +78 -0
  957. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +773 -0
  958. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -0
  959. data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
  960. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
  961. data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
  962. data/lib/cosmos/tools/cmd_tlm_server/api.rb +1337 -0
  963. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +54 -0
  964. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +77 -0
  965. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +537 -0
  966. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +274 -0
  967. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +480 -0
  968. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +121 -0
  969. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -0
  970. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +213 -0
  971. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -0
  972. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +151 -0
  973. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +255 -0
  974. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +85 -0
  975. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +274 -0
  976. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +153 -0
  977. data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +122 -0
  978. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +161 -0
  979. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -0
  980. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +134 -0
  981. data/lib/cosmos/tools/config_editor/config_editor.rb +728 -0
  982. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +690 -0
  983. data/lib/cosmos/tools/data_viewer/data_viewer.rb +633 -0
  984. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +120 -0
  985. data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -0
  986. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -0
  987. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -0
  988. data/lib/cosmos/tools/launcher/launcher.rb +194 -0
  989. data/lib/cosmos/tools/launcher/launcher_config.rb +256 -0
  990. data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -0
  991. data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -0
  992. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +972 -0
  993. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -0
  994. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -0
  995. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +608 -0
  996. data/lib/cosmos/tools/replay/replay.rb +517 -0
  997. data/lib/cosmos/tools/replay/replay_server.rb +91 -0
  998. data/lib/cosmos/tools/script_runner/script_audit.rb +147 -0
  999. data/lib/cosmos/tools/script_runner/script_runner.rb +979 -0
  1000. data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -0
  1001. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1838 -0
  1002. data/lib/cosmos/tools/table_manager/table.rb +61 -0
  1003. data/lib/cosmos/tools/table_manager/table_config.rb +189 -0
  1004. data/lib/cosmos/tools/table_manager/table_item.rb +58 -0
  1005. data/lib/cosmos/tools/table_manager/table_item_parser.rb +46 -0
  1006. data/lib/cosmos/tools/table_manager/table_manager.rb +1152 -0
  1007. data/lib/cosmos/tools/table_manager/table_manager_core.rb +321 -0
  1008. data/lib/cosmos/tools/table_manager/table_parser.rb +75 -0
  1009. data/lib/cosmos/tools/test_runner/results_writer.rb +283 -0
  1010. data/lib/cosmos/tools/test_runner/test.rb +539 -0
  1011. data/lib/cosmos/tools/test_runner/test_runner.rb +1271 -0
  1012. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -0
  1013. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -0
  1014. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1152 -0
  1015. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +441 -0
  1016. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -0
  1017. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +92 -0
  1018. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -0
  1019. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -0
  1020. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -0
  1021. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +222 -0
  1022. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -0
  1023. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -0
  1024. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +174 -0
  1025. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -0
  1026. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +422 -0
  1027. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -0
  1028. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -0
  1029. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +325 -0
  1030. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +191 -0
  1031. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -0
  1032. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -0
  1033. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -0
  1034. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +173 -0
  1035. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -0
  1036. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -0
  1037. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +209 -0
  1038. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -0
  1039. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -0
  1040. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -0
  1041. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -0
  1042. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +451 -0
  1043. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -0
  1044. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -0
  1045. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -0
  1046. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +78 -0
  1047. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -0
  1048. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -0
  1049. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +103 -0
  1050. data/lib/cosmos/tools/tlm_viewer/screen.rb +502 -0
  1051. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +571 -0
  1052. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +293 -0
  1053. data/lib/cosmos/tools/tlm_viewer/widgets.rb +61 -0
  1054. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -0
  1055. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +66 -0
  1056. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -0
  1057. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -0
  1058. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +33 -0
  1059. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +70 -0
  1060. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +77 -0
  1061. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +43 -0
  1062. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +59 -0
  1063. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +44 -0
  1064. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +54 -0
  1065. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +53 -0
  1066. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +63 -0
  1067. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +123 -0
  1068. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +38 -0
  1069. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -0
  1070. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +31 -0
  1071. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -0
  1072. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -0
  1073. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -0
  1074. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -0
  1075. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -0
  1076. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -0
  1077. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -0
  1078. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -0
  1079. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +57 -0
  1080. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -0
  1081. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -0
  1082. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +38 -0
  1083. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -0
  1084. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +39 -0
  1085. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -0
  1086. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +113 -0
  1087. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +116 -0
  1088. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +102 -0
  1089. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +116 -0
  1090. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +63 -0
  1091. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +58 -0
  1092. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -0
  1093. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -0
  1094. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +38 -0
  1095. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +65 -0
  1096. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +65 -0
  1097. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -0
  1098. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -0
  1099. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -0
  1100. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
  1101. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -0
  1102. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -0
  1103. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -0
  1104. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -0
  1105. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +91 -0
  1106. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -0
  1107. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -0
  1108. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -0
  1109. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -0
  1110. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -0
  1111. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +37 -0
  1112. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -0
  1113. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +37 -0
  1114. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +36 -0
  1115. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +38 -0
  1116. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -0
  1117. data/lib/cosmos/top_level.rb +790 -0
  1118. data/lib/cosmos/utilities.rb +11 -0
  1119. data/lib/cosmos/utilities/crc.rb +268 -0
  1120. data/lib/cosmos/utilities/csv.rb +137 -0
  1121. data/lib/cosmos/utilities/logger.rb +137 -0
  1122. data/lib/cosmos/utilities/low_fragmentation_array.rb +19 -0
  1123. data/lib/cosmos/utilities/message_log.rb +79 -0
  1124. data/lib/cosmos/utilities/quaternion.rb +258 -0
  1125. data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -0
  1126. data/lib/cosmos/utilities/simulated_target.rb +100 -0
  1127. data/lib/cosmos/utilities/sleeper.rb +44 -0
  1128. data/lib/cosmos/version.rb +12 -0
  1129. data/lib/cosmos/win32/excel.rb +66 -0
  1130. data/lib/cosmos/win32/win32.rb +387 -0
  1131. data/lib/cosmos/win32/win32_main.rb +325 -0
  1132. data/roodi.yml +24 -0
  1133. data/run_gui_tests.bat +44 -0
  1134. data/spec/ccsds/ccsds_packet_spec.rb +67 -0
  1135. data/spec/ccsds/ccsds_parser_spec.rb +148 -0
  1136. data/spec/config/config_parser_spec.rb +353 -0
  1137. data/spec/conversions/conversion_spec.rb +31 -0
  1138. data/spec/conversions/generic_conversion_spec.rb +45 -0
  1139. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -0
  1140. data/spec/conversions/polynomial_conversion_spec.rb +40 -0
  1141. data/spec/conversions/processor_conversion_spec.rb +45 -0
  1142. data/spec/conversions/received_count_conversion_spec.rb +43 -0
  1143. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -0
  1144. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -0
  1145. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -0
  1146. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -0
  1147. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -0
  1148. data/spec/core_ext/array_spec.rb +247 -0
  1149. data/spec/core_ext/class_spec.rb +36 -0
  1150. data/spec/core_ext/cosmos_io_spec.rb +77 -0
  1151. data/spec/core_ext/exception_spec.rb +91 -0
  1152. data/spec/core_ext/file_spec.rb +72 -0
  1153. data/spec/core_ext/hash_spec.rb +24 -0
  1154. data/spec/core_ext/io_spec.rb +46 -0
  1155. data/spec/core_ext/kernel_spec.rb +54 -0
  1156. data/spec/core_ext/math_spec.rb +116 -0
  1157. data/spec/core_ext/matrix_spec.rb +127 -0
  1158. data/spec/core_ext/objectspace_spec.rb +32 -0
  1159. data/spec/core_ext/range_spec.rb +21 -0
  1160. data/spec/core_ext/socket_spec.rb +32 -0
  1161. data/spec/core_ext/string_spec.rb +239 -0
  1162. data/spec/core_ext/stringio_spec.rb +21 -0
  1163. data/spec/core_ext/time_spec.rb +220 -0
  1164. data/spec/gui/line_graph/line_clip_spec.rb +324 -0
  1165. data/spec/gui/qt_spec.rb +104 -0
  1166. data/spec/install/config/system/system.txt +27 -0
  1167. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -0
  1168. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -0
  1169. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -0
  1170. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -0
  1171. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -0
  1172. data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -0
  1173. data/spec/install/config/targets/INST/target.txt +10 -0
  1174. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  1175. data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_tlm.txt +10 -0
  1176. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt +41 -0
  1177. data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
  1178. data/spec/install/config/targets/SYSTEM/cmd_tlm_server.txt +6 -0
  1179. data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
  1180. data/spec/install/config/targets/SYSTEM/target.txt +12 -0
  1181. data/spec/install/lib/README.txt +1 -0
  1182. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +146 -0
  1183. data/spec/interfaces/interface_spec.rb +514 -0
  1184. data/spec/interfaces/linc_interface_spec.rb +248 -0
  1185. data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
  1186. data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
  1187. data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
  1188. data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
  1189. data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
  1190. data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
  1191. data/spec/interfaces/protocols/template_protocol_spec.rb +322 -0
  1192. data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
  1193. data/spec/interfaces/serial_interface_spec.rb +57 -0
  1194. data/spec/interfaces/simulated_target_interface_spec.rb +128 -0
  1195. data/spec/interfaces/tcpip_client_interface_spec.rb +60 -0
  1196. data/spec/interfaces/tcpip_server_interface_spec.rb +157 -0
  1197. data/spec/interfaces/udp_interface_spec.rb +246 -0
  1198. data/spec/io/buffered_file_spec.rb +113 -0
  1199. data/spec/io/io_multiplexer_spec.rb +102 -0
  1200. data/spec/io/json_drb_object_spec.rb +119 -0
  1201. data/spec/io/json_drb_spec.rb +297 -0
  1202. data/spec/io/json_rpc_spec.rb +264 -0
  1203. data/spec/io/raw_logger_pair_spec.rb +76 -0
  1204. data/spec/io/raw_logger_spec.rb +137 -0
  1205. data/spec/io/serial_driver_spec.rb +62 -0
  1206. data/spec/io/stderr_spec.rb +32 -0
  1207. data/spec/io/stdout_spec.rb +32 -0
  1208. data/spec/io/udp_sockets_spec.rb +99 -0
  1209. data/spec/io/win32_serial_driver_spec.rb +91 -0
  1210. data/spec/packet_logs/packet_log_reader_spec.rb +553 -0
  1211. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -0
  1212. data/spec/packet_logs/packet_log_writer_spec.rb +227 -0
  1213. data/spec/packets/binary_accessor_spec.rb +2326 -0
  1214. data/spec/packets/commands_spec.rb +379 -0
  1215. data/spec/packets/limits_response_spec.rb +25 -0
  1216. data/spec/packets/limits_spec.rb +344 -0
  1217. data/spec/packets/packet_config_spec.rb +960 -0
  1218. data/spec/packets/packet_item_limits_spec.rb +188 -0
  1219. data/spec/packets/packet_item_spec.rb +386 -0
  1220. data/spec/packets/packet_spec.rb +1456 -0
  1221. data/spec/packets/parsers/format_string_parser_spec.rb +133 -0
  1222. data/spec/packets/parsers/limits_parser_spec.rb +293 -0
  1223. data/spec/packets/parsers/limits_response_parser_spec.rb +149 -0
  1224. data/spec/packets/parsers/macro_parser_spec.rb +220 -0
  1225. data/spec/packets/parsers/packet_item_parser_spec.rb +366 -0
  1226. data/spec/packets/parsers/packet_parser_spec.rb +99 -0
  1227. data/spec/packets/parsers/processor_parser_spec.rb +114 -0
  1228. data/spec/packets/parsers/state_parser_spec.rb +189 -0
  1229. data/spec/packets/structure_item_spec.rb +213 -0
  1230. data/spec/packets/structure_spec.rb +565 -0
  1231. data/spec/packets/telemetry_spec.rb +578 -0
  1232. data/spec/processors/new_packet_log_processor_spec.rb +39 -0
  1233. data/spec/processors/processor_spec.rb +55 -0
  1234. data/spec/processors/statistics_processor_spec.rb +60 -0
  1235. data/spec/processors/watermark_processor_spec.rb +51 -0
  1236. data/spec/script/cmd_tlm_server_spec.rb +176 -0
  1237. data/spec/script/commands_disconnect_spec.rb +270 -0
  1238. data/spec/script/commands_spec.rb +303 -0
  1239. data/spec/script/extract_spec.rb +158 -0
  1240. data/spec/script/limits_spec.rb +153 -0
  1241. data/spec/script/script_spec.rb +90 -0
  1242. data/spec/script/scripting_spec.rb +745 -0
  1243. data/spec/script/telemetry_spec.rb +176 -0
  1244. data/spec/script/tools_spec.rb +134 -0
  1245. data/spec/spec_helper.rb +225 -0
  1246. data/spec/streams/serial_stream_spec.rb +122 -0
  1247. data/spec/streams/stream_spec.rb +30 -0
  1248. data/spec/streams/tcpip_client_stream_spec.rb +65 -0
  1249. data/spec/streams/tcpip_socket_stream_spec.rb +226 -0
  1250. data/spec/system/system_spec.rb +891 -0
  1251. data/spec/system/target_spec.rb +304 -0
  1252. data/spec/tools/cmd_tlm_server/api_spec.rb +1123 -0
  1253. data/spec/tools/cmd_tlm_server/background_task_spec.rb +44 -0
  1254. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +227 -0
  1255. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +610 -0
  1256. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +431 -0
  1257. data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -0
  1258. data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -0
  1259. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +401 -0
  1260. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -0
  1261. data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
  1262. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -0
  1263. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +191 -0
  1264. data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -0
  1265. data/spec/tools/launcher/launcher_config_spec.rb +474 -0
  1266. data/spec/tools/table_manager/table_config_spec.rb +226 -0
  1267. data/spec/tools/table_manager/table_item_parser_spec.rb +61 -0
  1268. data/spec/tools/table_manager/table_item_spec.rb +57 -0
  1269. data/spec/tools/table_manager/table_parser_spec.rb +96 -0
  1270. data/spec/tools/table_manager/table_spec.rb +90 -0
  1271. data/spec/tools/table_manager/tablemanager_core_spec.rb +556 -0
  1272. data/spec/top_level/top_level_spec.rb +373 -0
  1273. data/spec/utilities/crc_spec.rb +45 -0
  1274. data/spec/utilities/csv_spec.rb +139 -0
  1275. data/spec/utilities/logger_spec.rb +102 -0
  1276. data/spec/utilities/message_log_spec.rb +89 -0
  1277. data/spec/utilities/quaternion_spec.rb +107 -0
  1278. data/spec/utilities/ruby_lex_utils_spec.rb +86 -0
  1279. data/tasks/gemfile_stats.rake +79 -0
  1280. data/tasks/manifest.rake +22 -0
  1281. data/tasks/spec.rake +23 -0
  1282. data/test/benchmarks/binary_accessor_benchmark.rb +14 -0
  1283. data/test/benchmarks/gsub_benchmark.rb +152 -0
  1284. data/test/benchmarks/is_a_benchmark.rb +34 -0
  1285. data/test/performance/PACKETS.bat +1 -0
  1286. data/test/performance/Rakefile +77 -0
  1287. data/test/performance/THREADS.bat +1 -0
  1288. data/test/performance/config/data/attitude.bin +0 -0
  1289. data/test/performance/config/data/crc.txt +196 -0
  1290. data/test/performance/config/data/diamond.STL +58 -0
  1291. data/test/performance/config/data/groundoff.gif +0 -0
  1292. data/test/performance/config/data/groundon.gif +0 -0
  1293. data/test/performance/config/data/hselectoff.gif +0 -0
  1294. data/test/performance/config/data/hselecton.gif +0 -0
  1295. data/test/performance/config/data/hswitchoff.gif +0 -0
  1296. data/test/performance/config/data/hswitchon.gif +0 -0
  1297. data/test/performance/config/data/meta_init.txt +4 -0
  1298. data/test/performance/config/data/position.bin +0 -0
  1299. data/test/performance/config/data/poweroff.gif +0 -0
  1300. data/test/performance/config/data/poweron.gif +0 -0
  1301. data/test/performance/config/data/satellite.gif +0 -0
  1302. data/test/performance/config/data/tada.wav +0 -0
  1303. data/test/performance/config/data/vswitchoff.gif +0 -0
  1304. data/test/performance/config/data/vswitchon.gif +0 -0
  1305. data/test/performance/config/system/system_packets.txt +38 -0
  1306. data/test/performance/config/system/system_threads.txt +58 -0
  1307. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -0
  1308. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  1309. data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  1310. data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -0
  1311. data/test/performance/config/targets/COSMOS/screens/version.txt +19 -0
  1312. data/test/performance/config/targets/COSMOS/target.txt +11 -0
  1313. data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -0
  1314. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -0
  1315. data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -0
  1316. data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -0
  1317. data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -0
  1318. data/test/performance/config/targets/PACKET/screens/status.txt +25 -0
  1319. data/test/performance/config/targets/PACKET/target.txt +28 -0
  1320. data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -0
  1321. data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -0
  1322. data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -0
  1323. data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -0
  1324. data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -0
  1325. data/test/performance/config/targets/THREAD/screens/status.txt +25 -0
  1326. data/test/performance/config/targets/THREAD/target.txt +7 -0
  1327. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -0
  1328. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -0
  1329. data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -0
  1330. data/test/performance/config/tools/handbook_creator/default_toc.xsl +59 -0
  1331. data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -0
  1332. data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  1333. data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  1334. data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  1335. data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -0
  1336. data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  1337. data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  1338. data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  1339. data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  1340. data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  1341. data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  1342. data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  1343. data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  1344. data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -0
  1345. data/test/performance/config/tools/launcher/launcher_packets.txt +34 -0
  1346. data/test/performance/config/tools/launcher/launcher_threads.txt +83 -0
  1347. data/test/performance/config/tools/limits_monitor/README.txt +1 -0
  1348. data/test/performance/config/tools/opengl_builder/README.txt +1 -0
  1349. data/test/performance/config/tools/script_runner/script_runner.txt +3 -0
  1350. data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -0
  1351. data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  1352. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
  1353. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
  1354. data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
  1355. data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
  1356. data/test/performance/config/tools/test_runner/test_runner.txt +17 -0
  1357. data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  1358. data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  1359. data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  1360. data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  1361. data/test/performance/config/tools/tlm_grapher/README.txt +1 -0
  1362. data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -0
  1363. data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -0
  1364. data/test/performance/lib/packet_target.rb +126 -0
  1365. data/test/performance/lib/thread_target.rb +120 -0
  1366. data/test/performance/lib/user_version.rb +3 -0
  1367. data/test/performance/outputs/handbooks/README.txt +1 -0
  1368. data/test/performance/outputs/logs/README.txt +1 -0
  1369. data/test/performance/outputs/saved_config/README.txt +1 -0
  1370. data/test/performance/outputs/tables/README.txt +1 -0
  1371. data/test/performance/outputs/tmp/README.txt +1 -0
  1372. data/test/performance/procedures/checks.rb +11 -0
  1373. data/test/performance/procedures/clear_util.rb +7 -0
  1374. data/test/performance/procedures/collect.rb +18 -0
  1375. data/test/performance/procedures/collect_util.rb +14 -0
  1376. data/test/performance/procedures/cosmos_api_test.rb +293 -0
  1377. data/test/performance/procedures/disconnect.rb +29 -0
  1378. data/test/performance/procedures/example_test.rb +182 -0
  1379. data/test/performance/procedures/plot_test.rb +8 -0
  1380. data/test/performance/procedures/procedure.rb +3 -0
  1381. data/test/performance/procedures/run_example_test.rb +3 -0
  1382. data/test/performance/procedures/test.rb +51 -0
  1383. data/test/performance/tools/CmdExtractor +14 -0
  1384. data/test/performance/tools/CmdExtractor.bat +59 -0
  1385. data/test/performance/tools/CmdSender +14 -0
  1386. data/test/performance/tools/CmdSender.bat +59 -0
  1387. data/test/performance/tools/CmdTlmServer +16 -0
  1388. data/test/performance/tools/CmdTlmServer.bat +59 -0
  1389. data/test/performance/tools/CmdTlmServerMemProf +20 -0
  1390. data/test/performance/tools/CmdTlmServerMemProf.bat +59 -0
  1391. data/test/performance/tools/DataViewer +14 -0
  1392. data/test/performance/tools/DataViewer.bat +59 -0
  1393. data/test/performance/tools/HandbookCreator +14 -0
  1394. data/test/performance/tools/HandbookCreator.bat +61 -0
  1395. data/test/performance/tools/Launcher +14 -0
  1396. data/test/performance/tools/Launcher.bat +59 -0
  1397. data/test/performance/tools/LimitsMonitor +14 -0
  1398. data/test/performance/tools/LimitsMonitor.bat +59 -0
  1399. data/test/performance/tools/OpenGLBuilder +14 -0
  1400. data/test/performance/tools/OpenGLBuilder.bat +59 -0
  1401. data/test/performance/tools/PacketTarget +14 -0
  1402. data/test/performance/tools/PacketTarget.bat +59 -0
  1403. data/test/performance/tools/PacketViewer +14 -0
  1404. data/test/performance/tools/PacketViewer.bat +59 -0
  1405. data/test/performance/tools/Replay +14 -0
  1406. data/test/performance/tools/Replay.bat +59 -0
  1407. data/test/performance/tools/ScpiTarget +14 -0
  1408. data/test/performance/tools/ScpiTarget.bat +59 -0
  1409. data/test/performance/tools/ScriptRunner +14 -0
  1410. data/test/performance/tools/ScriptRunner.bat +59 -0
  1411. data/test/performance/tools/TableManager +14 -0
  1412. data/test/performance/tools/TableManager.bat +59 -0
  1413. data/test/performance/tools/TestRunner +14 -0
  1414. data/test/performance/tools/TestRunner.bat +59 -0
  1415. data/test/performance/tools/ThreadTarget +14 -0
  1416. data/test/performance/tools/ThreadTarget.bat +59 -0
  1417. data/test/performance/tools/TlmExtractor +14 -0
  1418. data/test/performance/tools/TlmExtractor.bat +59 -0
  1419. data/test/performance/tools/TlmGrapher +14 -0
  1420. data/test/performance/tools/TlmGrapher.bat +59 -0
  1421. data/test/performance/tools/TlmGrapherMemProf +19 -0
  1422. data/test/performance/tools/TlmGrapherMemProf.bat +59 -0
  1423. data/test/performance/tools/TlmViewer +14 -0
  1424. data/test/performance/tools/TlmViewer.bat +59 -0
  1425. data/test/performance/tools/TlmViewerMemProf +19 -0
  1426. data/test/performance/tools/TlmViewerMemProf.bat +59 -0
  1427. data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  1428. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
  1429. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
  1430. data/test/performance/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1431. data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  1432. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
  1433. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
  1434. data/test/performance/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  1435. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  1436. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
  1437. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
  1438. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  1439. data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  1440. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
  1441. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
  1442. data/test/performance/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  1443. data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  1444. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
  1445. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
  1446. data/test/performance/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  1447. data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  1448. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
  1449. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
  1450. data/test/performance/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  1451. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  1452. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
  1453. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
  1454. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  1455. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  1456. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
  1457. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
  1458. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  1459. data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  1460. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
  1461. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
  1462. data/test/performance/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  1463. data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -0
  1464. data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
  1465. data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
  1466. data/test/performance/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  1467. data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  1468. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
  1469. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
  1470. data/test/performance/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  1471. data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  1472. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
  1473. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
  1474. data/test/performance/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  1475. data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  1476. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
  1477. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
  1478. data/test/performance/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  1479. data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  1480. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
  1481. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
  1482. data/test/performance/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  1483. data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  1484. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
  1485. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
  1486. data/test/performance/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  1487. data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  1488. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
  1489. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
  1490. data/test/performance/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  1491. metadata +1964 -0
@@ -0,0 +1,194 @@
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'
12
+ require 'cosmos/tools/cmd_sequence/sequence_item'
13
+
14
+ module Cosmos
15
+ # Widget which displays a list of SequenceItems
16
+ class SequenceList < Qt::Widget
17
+ include Enumerable
18
+ # Emit modified whenever any of the underlying SequenceItems change
19
+ signals 'modified()'
20
+
21
+ # Create the SequenceList
22
+ def initialize
23
+ super()
24
+ @modified = false
25
+ layout = Qt::VBoxLayout.new()
26
+ layout.setContentsMargins(0, 0, 0, 0)
27
+ layout.setSpacing(0)
28
+ setLayout(layout)
29
+ setSizePolicy(1, 0)
30
+ layout.addWidget(create_header())
31
+ end
32
+
33
+ # Opens a sequence definition file and populates the sequence.
34
+ # Exceptions are re-raised with filename and line number information
35
+ # and must be handled by the higher level application.
36
+ #
37
+ # @param filename [String] File containing a sequence definition
38
+ def open(filename)
39
+ clear()
40
+
41
+ parser = ConfigParser.new("http://cosmosrb.com/docs/tools/#command-sequence-configuration")
42
+ parser.parse_file(filename) do |keyword, params|
43
+ case keyword
44
+ when 'COMMAND'
45
+ usage = "#{keyword} <Delay Time> <Command>"
46
+ parser.verify_num_parameters(2, 2, usage)
47
+ begin
48
+ item = SequenceItem.parse(params[0], params[1])
49
+ # Connect the SequenceItems modified signal to propagate it
50
+ # forward by emitting our own modified signal
51
+ item.connect(SIGNAL("modified()")) do
52
+ @modified = true
53
+ emit modified()
54
+ end
55
+ layout.addWidget(item)
56
+ rescue => error
57
+ Kernel.raise parser.error("#{usage} passed '#{params[0]} #{params[1]}'\n#{error.message}")
58
+ end
59
+ else
60
+ Kernel.raise parser.error("Unknown keyword '#{keyword}'.") if keyword
61
+ end
62
+ end
63
+ @modified = false # Initially we're not modified
64
+ end
65
+
66
+ # Add a new SequenceItem to the list.
67
+ # @param command [Packet] Command packet to base the SequenceItem on
68
+ # @return [SequenceItem] The item added
69
+ def add(command)
70
+ @modified = true
71
+ item = SequenceItem.new(command)
72
+ # Connect the SequenceItems modified signal to propagate it
73
+ # forward by emitting our own modified signal
74
+ item.connect(SIGNAL("modified()")) do
75
+ @modified = true
76
+ emit modified()
77
+ end
78
+ layout.addWidget(item)
79
+ emit modified()
80
+ item
81
+ end
82
+
83
+ # Clear the list by removing all SequenceItems and disposing them
84
+ def clear
85
+ @modified = false
86
+ (1...layout.count).each do |index|
87
+ item = layout.takeAt(1)
88
+ item.widget.dispose
89
+ end
90
+ emit modified()
91
+ end
92
+
93
+ # @return [Boolean] Whether the list is modified
94
+ def modified?
95
+ @modified
96
+ end
97
+
98
+ # Yield each SequenceItem to enable the included Enumerable module
99
+ def each
100
+ total_items = 1
101
+ Qt.execute_in_main_thread { total_items = layout.count }
102
+ (1...total_items).each do |index|
103
+ item = nil
104
+ Qt.execute_in_main_thread { item = layout.itemAt(index).widget }
105
+ yield item
106
+ end
107
+ end
108
+
109
+ # Calls save on all individual SequenceItems and writes out the result
110
+ # to the given filename. Exceptions must be handled by the higher level
111
+ # application.
112
+ # @param filename [String] Filename to open and write the sequence
113
+ def save(filename)
114
+ @modified = false
115
+ File.open(filename, "w") do |file|
116
+ # Each SequenceItem's save method returns the save string
117
+ file.write(collect {|item| item.save }.join("\n"))
118
+ file.write("\n") # final newline
119
+ end
120
+ end
121
+
122
+ protected
123
+
124
+ # Create a header item in the SequenceList to describe the SequenceItems
125
+ def create_header
126
+ header = Qt::Widget.new
127
+ header_layout = Qt::HBoxLayout.new
128
+ header_layout.setContentsMargins(5, 5, 5, 5)
129
+ header.setLayout(header_layout)
130
+ time = Qt::Label.new("Time (Delay or Absolute)")
131
+ time.setFixedWidth(130)
132
+ header_layout.addWidget(time)
133
+ command = Qt::Label.new("Command")
134
+ header_layout.addWidget(command)
135
+ header_layout.addStretch()
136
+ header
137
+ end
138
+
139
+ # TODO: The following are various methods that could be used in future
140
+ # drag and drop support.
141
+ #
142
+ # def swap(index1, index2)
143
+ # STDOUT.puts "swap:#{index1}, #{index2} count:#{layout.count}"
144
+ # widget1 = layout.takeAt(index1).widget
145
+ # index1 = widget1.index
146
+ # widget2 = layout.takeAt(index2).widget
147
+ # index2 = widget2.index
148
+ # widget2.index = index1
149
+ # widget1.index = index2
150
+ # layout.insertWidget(index1, widget2)
151
+ # layout.insertWidget(index2, widget1)
152
+ # end
153
+ #
154
+ # def mousePressEvent(event)
155
+ # super(event)
156
+ # if event.button == Qt::LeftButton
157
+ # @dragStartPosition = event.pos
158
+ # end
159
+ # @expanded = !@expanded
160
+ # if @expanded
161
+ # @parameters.show
162
+ # else
163
+ # @parameters.hide
164
+ # end
165
+ # end
166
+ #
167
+ # def mouseMoveEvent(event)
168
+ # super(event)
169
+ # return unless (event.buttons & Qt::LeftButton)
170
+ # return if (event.pos - @dragStartPosition).manhattanLength() < Qt::Application::startDragDistance()
171
+ #
172
+ # mime = Qt::MimeData.new()
173
+ # mime.setText(@index.to_s)
174
+ # drag = Qt::Drag.new(self)
175
+ # drag.setMimeData(mime)
176
+ # drop = drag.exec(Qt::MoveAction)
177
+ # end
178
+ #
179
+ # def dragEnterEvent(event)
180
+ # if event.mimeData.text != @text.to_s
181
+ # event.acceptProposedAction
182
+ # setStyleSheet("background-color:grey")
183
+ # end
184
+ # end
185
+ #
186
+ # def dragLeaveEvent(event)
187
+ # setStyleSheet("background-color:")
188
+ # end
189
+ #
190
+ # def dropEvent(event)
191
+ # setStyleSheet("background-color:white")
192
+ # end
193
+ end
194
+ end
@@ -0,0 +1,1337 @@
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/script/extract'
12
+ require 'cosmos/script/api_shared'
13
+
14
+ module Cosmos
15
+
16
+ module Api
17
+ include Extract
18
+ include ApiShared
19
+
20
+ # Sets api_requests to 0 and initializes the whitelist of allowable API
21
+ # method calls
22
+ def initialize
23
+ @api_whitelist = [
24
+ 'cmd',
25
+ 'cmd_no_range_check',
26
+ 'cmd_no_hazardous_check',
27
+ 'cmd_no_checks',
28
+ 'cmd_raw',
29
+ 'cmd_raw_no_range_check',
30
+ 'cmd_raw_no_hazardous_check',
31
+ 'cmd_raw_no_checks',
32
+ 'send_raw',
33
+ 'get_cmd_buffer',
34
+ 'get_cmd_list',
35
+ 'get_cmd_param_list',
36
+ 'get_cmd_hazardous',
37
+ 'get_cmd_value',
38
+ 'get_cmd_time',
39
+ 'tlm',
40
+ 'tlm_raw',
41
+ 'tlm_formatted',
42
+ 'tlm_with_units',
43
+ 'tlm_variable',
44
+ 'set_tlm',
45
+ 'set_tlm_raw',
46
+ 'inject_tlm',
47
+ 'override_tlm',
48
+ 'override_tlm_raw',
49
+ 'normalize_tlm',
50
+ 'get_tlm_buffer',
51
+ 'get_tlm_packet',
52
+ 'get_tlm_values',
53
+ 'get_tlm_list',
54
+ 'get_tlm_item_list',
55
+ 'get_tlm_details',
56
+ 'get_out_of_limits',
57
+ 'get_overall_limits_state',
58
+ 'limits_enabled?',
59
+ 'enable_limits',
60
+ 'disable_limits',
61
+ 'get_stale',
62
+ 'get_limits',
63
+ 'set_limits',
64
+ 'get_limits_groups',
65
+ 'enable_limits_group',
66
+ 'disable_limits_group',
67
+ 'get_limits_sets',
68
+ 'set_limits_set',
69
+ 'get_limits_set',
70
+ 'get_target_list',
71
+ 'subscribe_limits_events',
72
+ 'unsubscribe_limits_events',
73
+ 'get_limits_event',
74
+ 'subscribe_packet_data',
75
+ 'unsubscribe_packet_data',
76
+ 'get_packet_data',
77
+ 'get_interface_targets',
78
+ 'get_interface_names',
79
+ 'connect_interface',
80
+ 'disconnect_interface',
81
+ 'interface_state',
82
+ 'map_target_to_interface',
83
+ 'get_router_names',
84
+ 'connect_router',
85
+ 'disconnect_router',
86
+ 'router_state',
87
+ 'get_target_info',
88
+ 'get_interface_info',
89
+ 'get_router_info',
90
+ 'get_cmd_cnt',
91
+ 'get_tlm_cnt',
92
+ 'get_packet_logger_info',
93
+ 'get_cmd_log_filename',
94
+ 'get_tlm_log_filename',
95
+ 'start_logging',
96
+ 'stop_logging',
97
+ 'start_cmd_log',
98
+ 'start_tlm_log',
99
+ 'stop_cmd_log',
100
+ 'stop_tlm_log',
101
+ 'start_raw_logging_interface',
102
+ 'stop_raw_logging_interface',
103
+ 'start_raw_logging_router',
104
+ 'stop_raw_logging_router',
105
+ 'get_server_message_log_filename',
106
+ 'start_new_server_message_log']
107
+ end
108
+
109
+ ############################################################################
110
+ # Methods Used by cosmos/script
111
+ ############################################################################
112
+
113
+ # Send a command packet to a target.
114
+ #
115
+ # Accepts two different calling styles:
116
+ # cmd("TGT CMD with PARAM1 val, PARAM2 val")
117
+ # cmd('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
118
+ #
119
+ # Favor the first syntax where possible as it is more succinct.
120
+ #
121
+ # @param args [String|Array<String>] See the description for calling style
122
+ # @return [Array<String, String, Hash>] target_name, command_name, parameters
123
+ def cmd(*args)
124
+ cmd_implementation(true, true, false, 'cmd', *args)
125
+ end
126
+
127
+ # Send a command packet to a target without performing any value range
128
+ # checks on the parameters. Useful for testing to allow sending command
129
+ # parameters outside the allowable range as defined in the configuration.
130
+ #
131
+ # Accepts two different calling styles:
132
+ # cmd_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
133
+ # cmd_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
134
+ #
135
+ # Favor the first syntax where possible as it is more succinct.
136
+ #
137
+ # @param (see #cmd)
138
+ # @return (see #cmd)
139
+ def cmd_no_range_check(*args)
140
+ cmd_implementation(false, true, false, 'cmd_no_range_check', *args)
141
+ end
142
+
143
+ # Send a command packet to a target without performing any hazardous checks
144
+ # both on the command itself and its parameters. Useful in scripts to
145
+ # prevent popping up warnings to the user.
146
+ #
147
+ # Accepts two different calling styles:
148
+ # cmd_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
149
+ # cmd_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
150
+ #
151
+ # Favor the first syntax where possible as it is more succinct.
152
+ #
153
+ # @param (see #cmd)
154
+ # @return (see #cmd)
155
+ def cmd_no_hazardous_check(*args)
156
+ cmd_implementation(true, false, false, 'cmd_no_hazardous_check', *args)
157
+ end
158
+
159
+ # Send a command packet to a target without performing any value range
160
+ # checks or hazardous checks both on the command itself and its parameters.
161
+ #
162
+ # Accepts two different calling styles:
163
+ # cmd_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
164
+ # cmd_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
165
+ #
166
+ # Favor the first syntax where possible as it is more succinct.
167
+ #
168
+ # @param (see #cmd)
169
+ # @return (see #cmd)
170
+ def cmd_no_checks(*args)
171
+ cmd_implementation(false, false, false, 'cmd_no_checks', *args)
172
+ end
173
+
174
+ # Send a command packet to a target without running conversions.
175
+ #
176
+ # Accepts two different calling styles:
177
+ # cmd_raw("TGT CMD with PARAM1 val, PARAM2 val")
178
+ # cmd_raw('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
179
+ #
180
+ # Favor the first syntax where possible as it is more succinct.
181
+ #
182
+ # @param args [String|Array<String>] See the description for calling style
183
+ # @return [Array<String, String, Hash>] target_name, command_name, parameters
184
+ def cmd_raw(*args)
185
+ cmd_implementation(true, true, true, 'cmd_raw', *args)
186
+ end
187
+
188
+ # Send a command packet to a target without performing any value range
189
+ # checks on the parameters or running conversions. Useful for testing to allow sending command
190
+ # parameters outside the allowable range as defined in the configuration.
191
+ #
192
+ # Accepts two different calling styles:
193
+ # cmd_raw_no_range_check("TGT CMD with PARAM1 val, PARAM2 val")
194
+ # cmd_raw_no_range_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
195
+ #
196
+ # Favor the first syntax where possible as it is more succinct.
197
+ #
198
+ # @param (see #cmd)
199
+ # @return (see #cmd)
200
+ def cmd_raw_no_range_check(*args)
201
+ cmd_implementation(false, true, true, 'cmd_raw_no_range_check', *args)
202
+ end
203
+
204
+ # Send a command packet to a target without running conversions or performing any hazardous checks
205
+ # both on the command itself and its parameters. Useful in scripts to
206
+ # prevent popping up warnings to the user.
207
+ #
208
+ # Accepts two different calling styles:
209
+ # cmd_raw_no_hazardous_check("TGT CMD with PARAM1 val, PARAM2 val")
210
+ # cmd_raw_no_hazardous_check('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
211
+ #
212
+ # Favor the first syntax where possible as it is more succinct.
213
+ #
214
+ # @param (see #cmd)
215
+ # @return (see #cmd)
216
+ def cmd_raw_no_hazardous_check(*args)
217
+ cmd_implementation(true, false, true, 'cmd_raw_no_hazardous_check', *args)
218
+ end
219
+
220
+ # Send a command packet to a target without running conversions or performing any value range
221
+ # checks or hazardous checks both on the command itself and its parameters.
222
+ #
223
+ # Accepts two different calling styles:
224
+ # cmd_raw_no_checks("TGT CMD with PARAM1 val, PARAM2 val")
225
+ # cmd_raw_no_checks('TGT','CMD','PARAM1'=>val,'PARAM2'=>val)
226
+ #
227
+ # Favor the first syntax where possible as it is more succinct.
228
+ #
229
+ # @param (see #cmd)
230
+ # @return (see #cmd)
231
+ def cmd_raw_no_checks(*args)
232
+ cmd_implementation(false, false, true, 'cmd_raw_no_checks', *args)
233
+ end
234
+
235
+ # Send a raw binary string to the specified interface.
236
+ #
237
+ # @param interface_name [String] The interface to send the raw binary
238
+ # @param data [String] The raw binary data
239
+ def send_raw(interface_name, data)
240
+ CmdTlmServer.commanding.send_raw(interface_name, data)
241
+ nil
242
+ end
243
+
244
+ # Returns the raw buffer from the most recent specified command packet.
245
+ #
246
+ # @param target_name [String] Target name of the command
247
+ # @param command_name [String] Packet name of the command
248
+ # @return [String] last command buffer packet
249
+ def get_cmd_buffer(target_name, command_name)
250
+ packet = System.commands.packet(target_name, command_name)
251
+ return packet.buffer
252
+ end
253
+
254
+ # Returns the list of all the command names and their descriptions from the
255
+ # given target.
256
+ #
257
+ # @param target_name [String] Name of the target
258
+ # @return [Array<Array<String, String>>] Array containing \[command name,
259
+ # command description] for all commands in the target
260
+ def get_cmd_list(target_name)
261
+ list = []
262
+ System.commands.packets(target_name).each do |name, command|
263
+ list << [name, command.description]
264
+ end
265
+ return list.sort
266
+ end
267
+
268
+ # Returns the list of all the parameters for the given command.
269
+ #
270
+ # @param target_name (see #get_cmd_list)
271
+ # @param command_name [String] Name of the command
272
+ # @return [Array<Array<String, Object, nil|Array, nil|String, nil|String,
273
+ # nil|String, Boolean>] Array containing \[name, default, states,
274
+ # description, units_full, units, required] for all parameters in the
275
+ # command
276
+ def get_cmd_param_list(target_name, command_name)
277
+ list = []
278
+ System.commands.params(target_name, command_name).each do |parameter|
279
+ if parameter.format_string
280
+ unless parameter.default.kind_of?(Array)
281
+ list << [parameter.name, sprintf(parameter.format_string, parameter.default), parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
282
+ else
283
+ list << [parameter.name, "[]", parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
284
+ end
285
+ else
286
+ list << [parameter.name, parameter.default, parameter.states, parameter.description, parameter.units_full, parameter.units, parameter.required]
287
+ end
288
+ end
289
+ return list
290
+ end
291
+
292
+ # Returns whether the specified command is hazardous
293
+ #
294
+ # @param target_name (see #get_cmd_param_list)
295
+ # @param command_name (see #get_cmd_param_list)
296
+ # @param params [Hash] Command parameter hash to test whether a particular
297
+ # parameter setting makes the command hazardous
298
+ # @return [Boolean] Whether the command is hazardous
299
+ def get_cmd_hazardous(target_name, command_name, params = {})
300
+ hazardous, _ = System.commands.cmd_hazardous?(target_name, command_name, params)
301
+ return hazardous
302
+ end
303
+
304
+ # Returns a value from the specified command
305
+ #
306
+ # @param target_name [String] Target name of the command
307
+ # @param command_name [String] Packet name of the command
308
+ # @param parameter_name [String] Parameter name in the command
309
+ # @param value_type [Symbol] How the values should be converted. Must be
310
+ # one of {Packet::VALUE_TYPES}
311
+ # @return [Varies] value
312
+ def get_cmd_value(target_name, command_name, parameter_name, value_type = :CONVERTED)
313
+ packet = System.commands.packet(target_name, command_name)
314
+ # Virtually support RECEIVED_TIMEFORMATTED, RECEIVED_TIMESECONDS, RECEIVED_COUNT
315
+ case parameter_name.to_s.upcase
316
+ when 'RECEIVED_TIMEFORMATTED'
317
+ if packet.received_time
318
+ return packet.received_time.formatted
319
+ else
320
+ return 'No Packet Received Time'
321
+ end
322
+ when 'RECEIVED_TIMESECONDS'
323
+ if packet.received_time
324
+ return packet.received_time.to_f
325
+ else
326
+ return 0.0
327
+ end
328
+ when 'RECEIVED_COUNT'
329
+ return packet.received_count
330
+ else
331
+ return packet.read(parameter_name, value_type.intern)
332
+ end
333
+ end
334
+
335
+ # Returns the time the most recent command was sent
336
+ #
337
+ # @param target_name [String] Target name of the command. If not given then
338
+ # the most recent time from all commands will be returned
339
+ # @param command_name [String] Packet name of the command. If not given then
340
+ # then most recent time from the given target will be returned.
341
+ # @return [Array<Target Name, Command Name, Time Seconds, Time Microseconds>]
342
+ def get_cmd_time(target_name = nil, command_name = nil)
343
+ last_command = nil
344
+ if target_name
345
+ if command_name
346
+ last_command = System.commands.packet(target_name, command_name)
347
+ else
348
+ System.commands.packets(target_name).each do |packet_name, command|
349
+ last_command = command if !last_command and command.received_time
350
+ if command.received_time and command.received_time > last_command.received_time
351
+ last_command = command
352
+ end
353
+ end
354
+ end
355
+ else
356
+ commands = System.commands.all
357
+ commands.each do |target_name, target_commands|
358
+ target_commands.each do |packet_name, command|
359
+ last_command = command if !last_command and command.received_time
360
+ if command.received_time and command.received_time > last_command.received_time
361
+ last_command = command
362
+ end
363
+ end
364
+ end
365
+ end
366
+
367
+ if last_command
368
+ if last_command.received_time
369
+ return [last_command.target_name, last_command.packet_name, last_command.received_time.tv_sec, last_command.received_time.tv_usec]
370
+ else
371
+ return [last_command.target_name, last_command.packet_name, nil, nil]
372
+ end
373
+ else
374
+ return [nil, nil, nil, nil]
375
+ end
376
+ end
377
+
378
+ # Request a converted telemetry item from a packet.
379
+ #
380
+ # Accepts two different calling styles:
381
+ # tlm("TGT PKT ITEM")
382
+ # tlm('TGT','PKT','ITEM')
383
+ #
384
+ # Favor the first syntax where possible as it is more succinct.
385
+ #
386
+ # @param args [String|Array<String>] See the description for calling style
387
+ # @return [Numeric] The converted telemetry value without formatting or
388
+ # units
389
+ def tlm(*args)
390
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm')
391
+ System.telemetry.value(target_name, packet_name, item_name, :CONVERTED)
392
+ end
393
+
394
+ # Request a raw telemetry item from a packet.
395
+ #
396
+ # Accepts two different calling styles:
397
+ # tlm_raw("TGT PKT ITEM")
398
+ # tlm_raw('TGT','PKT','ITEM')
399
+ #
400
+ # Favor the first syntax where possible as it is more succinct.
401
+ #
402
+ # @param args (see #tlm)
403
+ # @return [Numeric] The unconverted telemetry value without formatting or
404
+ # units
405
+ def tlm_raw(*args)
406
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_raw')
407
+ System.telemetry.value(target_name, packet_name, item_name, :RAW)
408
+ end
409
+
410
+ # Request a formatted telemetry item from a packet.
411
+ #
412
+ # Accepts two different calling styles:
413
+ # tlm_formatted("TGT PKT ITEM")
414
+ # tlm_formatted('TGT','PKT','ITEM')
415
+ #
416
+ # Favor the first syntax where possible as it is more succinct.
417
+ #
418
+ # @param args (see #tlm)
419
+ # @return [String] The converted telemetry value with formatting but
420
+ # without units
421
+ def tlm_formatted(*args)
422
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_formatted')
423
+ System.telemetry.value(target_name, packet_name, item_name, :FORMATTED)
424
+ end
425
+
426
+ # Request a telemetry item with units from a packet.
427
+ #
428
+ # Accepts two different calling styles:
429
+ # tlm_with_units("TGT PKT ITEM")
430
+ # tlm_with_units('TGT','PKT','ITEM')
431
+ #
432
+ # Favor the first syntax where possible as it is more succinct.
433
+ #
434
+ # @param args (see #tlm)
435
+ # @return [String] The converted, formatted telemetry value with units
436
+ def tlm_with_units(*args)
437
+ target_name, packet_name, item_name = tlm_process_args(args, 'tlm_with_units')
438
+ System.telemetry.value(target_name, packet_name, item_name, :WITH_UNITS)
439
+ end
440
+
441
+ # Request a telemetry item from a packet with the specified conversion
442
+ # applied. This method is equivalent to calling the other tlm_xxx methods.
443
+ #
444
+ # Accepts two different calling styles:
445
+ # tlm_variable("TGT PKT ITEM", :RAW)
446
+ # tlm_variable('TGT','PKT','ITEM', :RAW)
447
+ #
448
+ # Favor the first syntax where possible as it is more succinct.
449
+ #
450
+ # @param args The args must either be a string followed by a symbol or
451
+ # three strings followed by a symbol (see the calling style in the
452
+ # description). The symbol must be one of {Packet::VALUE_TYPES}.
453
+ # @return [Object] The converted telemetry value
454
+ def tlm_variable(*args)
455
+ target_name, packet_name, item_name, value_type = tlm_variable_process_args(args, 'tlm_variable')
456
+ System.telemetry.value(target_name, packet_name, item_name, value_type)
457
+ end
458
+
459
+ # Set a telemetry item in a packet to a particular value and then verifies
460
+ # the value is within the acceptable limits. This method uses any
461
+ # conversions that apply to the item when setting the value.
462
+ #
463
+ # Note: If this is done while COSMOS is currently receiving telemetry,
464
+ # this value could get overwritten at any time. Thus this capability is
465
+ # best used for testing or for telemetry items that are not received
466
+ # regularly through the target interface.
467
+ #
468
+ # Accepts two different calling styles:
469
+ # set_tlm("TGT PKT ITEM = 1.0")
470
+ # set_tlm('TGT','PKT','ITEM', 10.0)
471
+ #
472
+ # Favor the first syntax where possible as it is more succinct.
473
+ #
474
+ # @param args The args must either be a string followed by a value or
475
+ # three strings followed by a value (see the calling style in the
476
+ # description).
477
+ def set_tlm(*args)
478
+ target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm')
479
+ if target_name == 'SYSTEM'.freeze and packet_name == 'META'.freeze
480
+ raise "set_tlm not allowed on #{target_name} #{packet_name} #{item_name}" if ['PKTID', 'CONFIG'].include?(item_name)
481
+ end
482
+ System.telemetry.set_value(target_name, packet_name, item_name, value, :CONVERTED)
483
+ if target_name == 'SYSTEM'.freeze and packet_name == 'META'.freeze
484
+ tlm_packet = System.telemetry.packet('SYSTEM', 'META')
485
+ cmd_packet = System.commands.packet('SYSTEM', 'META')
486
+ cmd_packet.buffer = tlm_packet.buffer
487
+ end
488
+ System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
489
+ nil
490
+ end
491
+
492
+ # Set a telemetry item in a packet to a particular value and then verifies
493
+ # the value is within the acceptable limits. No conversions are applied.
494
+ #
495
+ # Note: If this is done while COSMOS is currently receiving telemetry,
496
+ # this value could get overwritten at any time. Thus this capability is
497
+ # best used for testing or for telemetry items that are not received
498
+ # regularly through the target interface.
499
+ #
500
+ # Accepts two different calling styles:
501
+ # set_tlm_raw("TGT PKT ITEM = 1.0")
502
+ # set_tlm_raw('TGT','PKT','ITEM', 10.0)
503
+ #
504
+ # Favor the first syntax where possible as it is more succinct.
505
+ #
506
+ # @param args The args must either be a string followed by a value or
507
+ # three strings followed by a value (see the calling style in the
508
+ # description).
509
+ def set_tlm_raw(*args)
510
+ target_name, packet_name, item_name, value = set_tlm_process_args(args, 'set_tlm_raw')
511
+ System.telemetry.set_value(target_name, packet_name, item_name, value, :RAW)
512
+ System.telemetry.packet(target_name, packet_name).check_limits(System.limits_set, true)
513
+ nil
514
+ end
515
+
516
+ # Injects a packet into the system as if it was received from an interface
517
+ #
518
+ # @param target_name[String] Target name of the packet
519
+ # @param packet_name[String] Packet name of the packet
520
+ # @param item_hash[Hash] Hash of item_name and value for each item you want to change from the current value table
521
+ # @param value_type[Symbol/String] Type of the values in the item_hash (RAW or CONVERTED)
522
+ # @param send_routers[Boolean] Whether or not to send to routers for the target's interface
523
+ # @param send_packet_log_writers[Boolean] Whether or not to send to the packet log writers for the target's interface
524
+ # @param create_new_logs[Boolean] Whether or not to create new log files before writing this packet to logs
525
+ def inject_tlm(target_name, packet_name, item_hash = nil, value_type = :CONVERTED, send_routers = true, send_packet_log_writers = true, create_new_logs = false)
526
+ received_time = Time.now
527
+ target = System.targets[target_name.upcase]
528
+ raise "Unknown target: #{target_name}" unless target
529
+
530
+ # Find and clone the telemetry packet
531
+ cvt_packet = System.telemetry.packet(target_name, packet_name)
532
+ packet = cvt_packet.clone
533
+ packet.received_time = received_time
534
+
535
+ if item_hash
536
+ # Update the packet with item_hash
537
+ value_type = value_type.to_s.intern
538
+ item_hash.each do |item_name, item_value|
539
+ packet.write(item_name, item_value, value_type)
540
+ end
541
+ end
542
+
543
+ # Update current value table
544
+ cvt_packet.buffer = packet.buffer(false)
545
+ cvt_packet.received_time = received_time
546
+
547
+ # The interface does the following line, but I don't think inject_tlm should because it could confuse the interface
548
+ target.tlm_cnt += 1
549
+ packet.received_count += 1
550
+ cvt_packet.received_count += 1
551
+ CmdTlmServer.instance.identified_packet_callback(packet)
552
+
553
+ # Find the interface for this target
554
+ interface = target.interface
555
+
556
+ if interface
557
+ # Write to routers
558
+ if send_routers
559
+ interface.routers.each do |router|
560
+ begin
561
+ router.write(packet) if router.write_allowed? and router.connected?
562
+ rescue => err
563
+ Logger.error "Problem writing to router #{router.name} - #{err.class}:#{err.message}"
564
+ end
565
+ end
566
+ end
567
+
568
+ # Write to packet log writers
569
+ if create_new_logs or send_packet_log_writers
570
+ interface.packet_log_writer_pairs.each do |packet_log_writer_pair|
571
+ # Optionally create new log files
572
+ packet_log_writer_pair.tlm_log_writer.start if create_new_logs
573
+
574
+ # Optionally write to packet logs - Write errors are handled by the log writer
575
+ packet_log_writer_pair.tlm_log_writer.write(packet) if send_packet_log_writers
576
+ end
577
+ end
578
+ else
579
+ # Some packets don't have an interface - Can still write to standard routers and packet logs
580
+
581
+ # Write to routers
582
+ if send_routers
583
+ router = CmdTlmServer.instance.routers.all['PREIDENTIFIED_ROUTER']
584
+ begin
585
+ router.write(packet) if router.write_allowed? and router.connected?
586
+ rescue => err
587
+ Logger.error "Problem writing to router #{router.name} - #{err.class}:#{err.message}"
588
+ end
589
+ end
590
+
591
+ if create_new_logs or send_packet_log_writers
592
+ # Handle packet logging
593
+ packet_log_writer_pair = CmdTlmServer.instance.packet_logging.all['DEFAULT']
594
+
595
+ # Optionally create new logs
596
+ packet_log_writer_pair.tlm_log_writer.start if create_new_logs
597
+
598
+ # Optionally write to packet logs - Write errors are handled by the log writer
599
+ packet_log_writer_pair.tlm_log_writer.write(packet) if send_packet_log_writers
600
+ end
601
+ end
602
+
603
+ nil
604
+ end
605
+
606
+ # Override a telemetry item in a packet to a particular value such that it
607
+ # is always returned even when new telemetry packets are received from the
608
+ # target.
609
+ #
610
+ # Accepts two different calling styles:
611
+ # override_tlm("TGT PKT ITEM = 1.0")
612
+ # override_tlm('TGT','PKT','ITEM', 10.0)
613
+ #
614
+ # Favor the first syntax where possible as it is more succinct.
615
+ #
616
+ # @param args The args must either be a string followed by a value or
617
+ # three strings followed by a value (see the calling style in the
618
+ # description).
619
+ def override_tlm(*args)
620
+ _override(__method__, set_tlm_process_args(args, __method__))
621
+ end
622
+
623
+ # Override a telemetry item in a packet to a particular value such that it
624
+ # is always returned even when new telemetry packets are received from the
625
+ # target. This only accepts RAW data items and any conversions are applied
626
+ # to the raw data when the packet is read.
627
+ #
628
+ # Accepts two different calling styles:
629
+ # override_tlm_raw("TGT PKT ITEM = 1.0")
630
+ # override_tlm_raw('TGT','PKT','ITEM', 10.0)
631
+ #
632
+ # Favor the first syntax where possible as it is more succinct.
633
+ #
634
+ # @param args The args must either be a string followed by a value or
635
+ # three strings followed by a value (see the calling style in the
636
+ # description).
637
+ def override_tlm_raw(*args)
638
+ _override(__method__, set_tlm_process_args(args, __method__))
639
+ end
640
+
641
+ # Normalize a telemetry item in a packet to its default behavior. Called
642
+ # after override_tlm and override_tlm_raw to restore standard processing.
643
+ #
644
+ # Accepts two different calling styles:
645
+ # normalize_tlm("TGT PKT ITEM")
646
+ # normalize_tlm('TGT','PKT','ITEM')
647
+ #
648
+ # Favor the first syntax where possible as it is more succinct.
649
+ #
650
+ # @param args The args must either be a string or three strings
651
+ # (see the calling style in the description).
652
+ def normalize_tlm(*args)
653
+ _override(__method__, tlm_process_args(args, __method__))
654
+ end
655
+
656
+ private
657
+
658
+ def _override(method, tgt_pkt_item)
659
+ interface = System.targets[tgt_pkt_item[0]].interface
660
+ found = false
661
+ interface.read_protocols.each do |protocol|
662
+ found = true if protocol.kind_of? OverrideProtocol
663
+ end
664
+ if found
665
+ # Test to see if this telemetry item exists
666
+ System.telemetry.value(tgt_pkt_item[0], tgt_pkt_item[1], tgt_pkt_item[2], :RAW)
667
+ interface.public_send("_#{method}", *tgt_pkt_item)
668
+ else
669
+ raise "Interface #{interface.name} does not have override ability. Is 'PROTOCOL OverrideProtocol' under the interface definition?"
670
+ end
671
+ nil
672
+ end
673
+
674
+ public
675
+
676
+ # Returns the raw buffer for a telemetry packet.
677
+ #
678
+ # @param target_name [String] Name of the target
679
+ # @param packet_name [String] Name of the packet
680
+ # @return [String] last telemetry packet buffer
681
+ def get_tlm_buffer(target_name, packet_name)
682
+ packet = System.telemetry.packet(target_name, packet_name)
683
+ return packet.buffer
684
+ end
685
+
686
+ # Returns all the values (along with their limits state) for a packet.
687
+ #
688
+ # @param target_name [String] Name of the target
689
+ # @param packet_name [String] Name of the packet
690
+ # @param value_type [Symbol] How the values should be converted. Must be
691
+ # one of {Packet::VALUE_TYPES}
692
+ # @return (see Cosmos::Packet#read_all_with_limits_states)
693
+ def get_tlm_packet(target_name, packet_name, value_type = :CONVERTED)
694
+ packet = System.telemetry.packet(target_name, packet_name)
695
+ return packet.read_all_with_limits_states(value_type.to_s.intern)
696
+ end
697
+
698
+ # Returns all the item values (along with their limits state). The items
699
+ # can be from any target and packet and thus must be fully qualified with
700
+ # their target and packet names.
701
+ #
702
+ # @param (see Cosmos::Telemetry#values_and_limits_states)
703
+ # @return [Array< Array<Object>, Array<Symbol>, Array<Array<Numeric>>, String>]
704
+ # Array consisting of an Array of item values, an Array of item limits state
705
+ # given as symbols such as :RED, :YELLOW, :STALE, an Array of Arrays including
706
+ # the limits setting such as red low, yellow low, yellow high, red high and
707
+ # optionally green low and high, and the overall limits state which is
708
+ # one of {Cosmos::Limits::LIMITS_STATES}.
709
+ def get_tlm_values(item_array, value_types = :CONVERTED)
710
+ if !item_array.is_a?(Array) || (!item_array[0].is_a?(Array) and !item_array.empty?)
711
+ raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
712
+ end
713
+ return [[], [], [], System.limits_set] if item_array.empty?
714
+ if value_types.is_a?(Array)
715
+ elem = value_types[0]
716
+ else
717
+ elem = value_types
718
+ end
719
+ # Due to JSON round tripping from scripts, value_types can be a String
720
+ # so we must check for both Symbol and String
721
+ if !elem.is_a?(Symbol) && !elem.is_a?(String)
722
+ raise ArgumentError, "value_types must be a single symbol or array of symbols specifying the conversion method (:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS)"
723
+ end
724
+ array = System.telemetry.values_and_limits_states(item_array, value_types)
725
+ array << System.limits_set
726
+ return array
727
+ end
728
+
729
+ # Returns the sorted packet names and their descriptions for a particular
730
+ # target.
731
+ #
732
+ # @param target_name (see #get_tlm_packet)
733
+ # @return [Array<String, String>] Array of \[packet name, packet
734
+ # description] sorted by packet name
735
+ def get_tlm_list(target_name)
736
+ list = []
737
+ packets = System.telemetry.packets(target_name)
738
+ packets.each do |packet_name, packet|
739
+ list << [packet_name, packet.description]
740
+ end
741
+ list.sort
742
+ end
743
+
744
+ # Returns the item names and their states and descriptions for a particular
745
+ # packet.
746
+ #
747
+ # @param target_name (see #get_tlm_packet)
748
+ # @param packet_name (see #get_tlm_packet)
749
+ # @return [Array<String, Hash, String>] Array of \[item name, item states,
750
+ # item description]
751
+ def get_tlm_item_list(target_name, packet_name)
752
+ list = []
753
+ System.telemetry.items(target_name, packet_name).each do |item|
754
+ list << [item.name, item.states, item.description]
755
+ end
756
+ list
757
+ end
758
+
759
+ # Returns an array of Hashes with all the attributes of the item.
760
+ #
761
+ # @param (see Cosmos::Telemetry#values_and_limits_states)
762
+ # @return [Array<Hash>] Array of hashes describing the items. All the
763
+ # attributes in {Cosmos::PacketItem} and {Cosmos::StructItem} are
764
+ # present in the Hash.
765
+ def get_tlm_details(item_array)
766
+ if !item_array.is_a?(Array) || !item_array[0].is_a?(Array)
767
+ raise ArgumentError, "item_array must be nested array: [['TGT','PKT','ITEM'],...]"
768
+ end
769
+ details = []
770
+ item_array.each do |target_name, packet_name, item_name|
771
+ _, item = System.telemetry.packet_and_item(target_name, packet_name, item_name)
772
+ details << item.to_hash
773
+ end
774
+ details
775
+ end
776
+
777
+ # (see Cosmos::Limits#out_of_limits)
778
+ def get_out_of_limits
779
+ return System.limits.out_of_limits
780
+ end
781
+
782
+ # (see Cosmos::Limits#overall_limits_state)
783
+ def get_overall_limits_state (ignored_items = nil)
784
+ return System.limits.overall_limits_state(ignored_items)
785
+ end
786
+
787
+ # Whether the limits are enabled for the given item
788
+ #
789
+ # Accepts two different calling styles:
790
+ # limits_enabled?("TGT PKT ITEM")
791
+ # limits_enabled?('TGT','PKT','ITEM')
792
+ #
793
+ # Favor the first syntax where possible as it is more succinct.
794
+ #
795
+ # @param args [String|Array<String>] See the description for calling style
796
+ # @return [Boolean] Whether limits are enable for the itme
797
+ def limits_enabled?(*args)
798
+ target_name, packet_name, item_name = tlm_process_args(args, 'limits_enabled?')
799
+ return System.limits.enabled?(target_name, packet_name, item_name)
800
+ end
801
+
802
+ # Enable limits checking for a telemetry item
803
+ #
804
+ # Accepts two different calling styles:
805
+ # enable_limits("TGT PKT ITEM")
806
+ # enable_limits('TGT','PKT','ITEM')
807
+ #
808
+ # Favor the first syntax where possible as it is more succinct.
809
+ #
810
+ # @param args [String|Array<String>] See the description for calling style
811
+ def enable_limits(*args)
812
+ target_name, packet_name, item_name = tlm_process_args(args, 'enable_limits')
813
+ System.limits.enable(target_name, packet_name, item_name)
814
+ nil
815
+ end
816
+
817
+ # Disable limit checking for a telemetry item
818
+ #
819
+ # Accepts two different calling styles:
820
+ # disable_limits("TGT PKT ITEM")
821
+ # disable_limits('TGT','PKT','ITEM')
822
+ #
823
+ # Favor the first syntax where possible as it is more succinct.
824
+ #
825
+ # @param args [String|Array<String>] See the description for calling style
826
+ def disable_limits(*args)
827
+ target_name, packet_name, item_name = tlm_process_args(args, 'disable_limits')
828
+ System.limits.disable(target_name, packet_name, item_name)
829
+ nil
830
+ end
831
+
832
+ # Get the list of stale packets for a specific target or pass nil to list
833
+ # all stale packets
834
+ #
835
+ # @param with_limits_only [Boolean] Return only the stale packets
836
+ # that have limits items and thus affect the overall limits
837
+ # state of the system
838
+ # @param target [String] The target to find stale packets for or nil to list
839
+ # all stale packets in the system
840
+ # @return [Array<Array<String, String>>] Array of arrays listing the target
841
+ # name and packet name
842
+ def get_stale(with_limits_only = false, target = nil)
843
+ stale = []
844
+ System.telemetry.stale(with_limits_only, target).each do |packet|
845
+ stale << [packet.target_name, packet.packet_name]
846
+ end
847
+ stale
848
+ end
849
+
850
+ # (see Cosmos::Limits#get)
851
+ def get_limits(target_name, packet_name, item_name, limits_set = nil)
852
+ System.limits.get(target_name, packet_name, item_name, limits_set)
853
+ end
854
+
855
+ # (see Cosmos::Limits#set)
856
+ def set_limits(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low = nil, green_high = nil, limits_set = :CUSTOM, persistence = nil, enabled = true)
857
+ result = System.limits.set(target_name, packet_name, item_name, red_low, yellow_low, yellow_high, red_high, green_low, green_high, limits_set, persistence, enabled)
858
+ if result[0] != nil
859
+ limits_settings = [target_name, packet_name, item_name].concat(result)
860
+ CmdTlmServer.instance.post_limits_event(:LIMITS_SETTINGS, limits_settings)
861
+ Logger.info("Limits Settings Changed: #{limits_settings}")
862
+ end
863
+ result
864
+ end
865
+
866
+ # (see Cosmos::Limits#groups)
867
+ def get_limits_groups
868
+ return System.limits.groups.keys
869
+ end
870
+
871
+ # (see Cosmos::Limits#enable_group)
872
+ def enable_limits_group(group_name)
873
+ Logger.info("Enabling Limits Group: #{group_name.upcase}")
874
+ System.limits.enable_group(group_name)
875
+ nil
876
+ end
877
+
878
+ # (see Cosmos::Limits#disable_group)
879
+ def disable_limits_group(group_name)
880
+ Logger.info("Disabling Limits Group: #{group_name.upcase}")
881
+ System.limits.disable_group(group_name)
882
+ nil
883
+ end
884
+
885
+ # Returns all defined limits sets
886
+ #
887
+ # @return [Array<Symbol>] All defined limits sets
888
+ def get_limits_sets
889
+ return System.limits.sets
890
+ end
891
+
892
+ # Changes the active limits set that applies to all telemetry
893
+ #
894
+ # @param limits_set [String] The name of the limits set
895
+ def set_limits_set(limits_set)
896
+ System.limits_set = limits_set if System.limits_set != limits_set.to_s.upcase.intern
897
+ end
898
+
899
+ # Returns the active limits set that applies to all telemetry
900
+ #
901
+ # @return [String] The current limits set
902
+ def get_limits_set
903
+ return System.limits_set.to_s
904
+ end
905
+
906
+ #
907
+ # General Purpose Methods
908
+ #
909
+
910
+ # Returns the list of all target names
911
+ #
912
+ # @return [Array<String>] All target names
913
+ def get_target_list
914
+ list = []
915
+ System.targets.each_key {|target_name| list << target_name }
916
+ return list.sort
917
+ end
918
+
919
+ # @see CmdTlmServer.subscribe_limits_events
920
+ def subscribe_limits_events(queue_size = CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE)
921
+ CmdTlmServer.subscribe_limits_events(queue_size)
922
+ end
923
+
924
+ # @see CmdTlmServer.unsubscribe_limits_events
925
+ def unsubscribe_limits_events(id)
926
+ CmdTlmServer.unsubscribe_limits_events(id)
927
+ end
928
+
929
+ # @see CmdTlmServer.get_limits_event
930
+ def get_limits_event(id, non_block = false)
931
+ CmdTlmServer.get_limits_event(id, non_block)
932
+ end
933
+
934
+ # @see CmdTlmServer.subscribe_packet_data
935
+ def subscribe_packet_data(packets,
936
+ queue_size = CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE)
937
+ CmdTlmServer.subscribe_packet_data(packets, queue_size)
938
+ end
939
+
940
+ # @see CmdTlmServer.unsubscribe_packet_data
941
+ def unsubscribe_packet_data(id)
942
+ CmdTlmServer.unsubscribe_packet_data(id)
943
+ end
944
+
945
+ # @see CmdTlmServer.get_packet_data
946
+ def get_packet_data(id, non_block = false)
947
+ CmdTlmServer.get_packet_data(id, non_block)
948
+ end
949
+
950
+ # Get a packet which was previously subscribed to by
951
+ # subscribe_packet_data. This method can block waiting for new packets or
952
+ # not based on the second parameter. It returns a single Cosmos::Packet instance
953
+ # and will return nil when no more packets are buffered (assuming non_block
954
+ # is false).
955
+ # Usage:
956
+ # get_packet(id, <true or false to block>)
957
+ def get_packet(id, non_block = false)
958
+ packet = nil
959
+ # The get_packet_data in the CmdTlmServer returns the number of seconds
960
+ # followed by microseconds after the packet_name. This is different that the Script API.
961
+ buffer, target_name, packet_name, rx_sec, rx_usec, rx_count = get_packet_data(id, non_block)
962
+ if buffer
963
+ packet = System.telemetry.packet(target_name, packet_name).clone
964
+ packet.buffer = buffer
965
+ packet.received_time = Time.at(rx_sec, rx_usec).sys
966
+ packet.received_count = rx_count
967
+ end
968
+ packet
969
+ end
970
+
971
+ #
972
+ # Methods for scripting
973
+ #
974
+
975
+ # @return [Array<String>] All the targets mapped to the given interface
976
+ def get_interface_targets(interface_name)
977
+ CmdTlmServer.interfaces.targets(interface_name)
978
+ end
979
+
980
+ # @return [Array<String>] All the interface names
981
+ def get_interface_names
982
+ CmdTlmServer.interfaces.names
983
+ end
984
+
985
+ # Connects to an interface and starts its telemetry gathering thread. If
986
+ # optional parameters are given, the interface is recreated with new
987
+ # parameters.
988
+ #
989
+ # @param interface_name [String] The name of the interface
990
+ # @param params [Array] Parameters to pass to the interface.
991
+ def connect_interface(interface_name, *params)
992
+ CmdTlmServer.interfaces.connect(interface_name, *params)
993
+ nil
994
+ end
995
+
996
+ # Disconnects from an interface and kills its telemetry gathering thread
997
+ #
998
+ # @param interface_name (see #connect_interface)
999
+ def disconnect_interface(interface_name)
1000
+ CmdTlmServer.interfaces.disconnect(interface_name)
1001
+ nil
1002
+ end
1003
+
1004
+ # @param interface_name (see #connect_interface)
1005
+ # @return [String] The state of the interface which is one of 'CONNECTED',
1006
+ # 'ATTEMPTING' or 'DISCONNECTED'.
1007
+ def interface_state(interface_name)
1008
+ CmdTlmServer.interfaces.state(interface_name)
1009
+ end
1010
+
1011
+ # Associates a target and all its commands and telemetry with a particular
1012
+ # interface. All the commands will go out over and telemetry be received
1013
+ # from that interface.
1014
+ #
1015
+ # @param target_name [String] The name of the target
1016
+ # @param interface_name (see #connect_interface)
1017
+ def map_target_to_interface(target_name, interface_name)
1018
+ CmdTlmServer.interfaces.map_target(target_name, interface_name)
1019
+ nil
1020
+ end
1021
+
1022
+ # @return [Array<String>] All the router names
1023
+ def get_router_names
1024
+ CmdTlmServer.routers.names
1025
+ end
1026
+
1027
+ # Connects a router and starts its command gathering thread. If
1028
+ # optional parameters are given, the router is recreated with new
1029
+ # parameters.
1030
+ #
1031
+ # @param router_name [String] The name of the router
1032
+ # @param params [Array] Parameters to pass to the router.
1033
+ def connect_router(router_name, *params)
1034
+ CmdTlmServer.routers.connect(router_name, *params)
1035
+ nil
1036
+ end
1037
+
1038
+ # Disconnects a router and kills its command gathering thread
1039
+ #
1040
+ # @param router_name (see #connect_router)
1041
+ def disconnect_router(router_name)
1042
+ CmdTlmServer.routers.disconnect(router_name)
1043
+ nil
1044
+ end
1045
+
1046
+ # @param router_name (see #connect_router)
1047
+ # @return [String] The state of the router which is one of 'CONNECTED',
1048
+ # 'ATTEMPTING' or 'DISCONNECTED'.
1049
+ def router_state(router_name)
1050
+ CmdTlmServer.routers.state(router_name)
1051
+ end
1052
+
1053
+ # Get information about a target
1054
+ #
1055
+ # @param target_name [String] Target name
1056
+ # @return [Array<Numeric, Numeric>] Array of \[cmd_cnt, tlm_cnt]
1057
+ def get_target_info(target_name)
1058
+ target = System.targets[target_name.upcase]
1059
+ raise "Unknown target: #{target_name}" unless target
1060
+ return [target.cmd_cnt, target.tlm_cnt]
1061
+ end
1062
+
1063
+ # Get information about an interface
1064
+ #
1065
+ # @param interface_name [String] Interface name
1066
+ # @return [Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1067
+ # Numeric, Numeric>] Array containing \[state, num clients,
1068
+ # TX queue size, RX queue size, TX bytes, RX bytes, Command count,
1069
+ # Telemetry count] for the interface
1070
+ def get_interface_info(interface_name)
1071
+ CmdTlmServer.interfaces.get_info(interface_name)
1072
+ end
1073
+
1074
+ # Get information about a router
1075
+ #
1076
+ # @param router_name [String] Router name
1077
+ # @return [Array<String, Numeric, Numeric, Numeric, Numeric, Numeric,
1078
+ # Numeric, Numeric>] Array containing \[state, num clients,
1079
+ # TX queue size, RX queue size, TX bytes, RX bytes, Pkts received,
1080
+ # Pkts sent] for the router
1081
+ def get_router_info(router_name)
1082
+ CmdTlmServer.routers.get_info(router_name)
1083
+ end
1084
+
1085
+ # Get the transmit count for a command packet
1086
+ #
1087
+ # @param target_name [String] Target name of the command
1088
+ # @param command_name [String] Packet name of the command
1089
+ # @return [Numeric] Transmit count for the command
1090
+ def get_cmd_cnt(target_name, command_name)
1091
+ packet = System.commands.packet(target_name, command_name)
1092
+ return packet.received_count
1093
+ end
1094
+
1095
+ # Get the receive count for a telemetry packet
1096
+ #
1097
+ # @param target_name [String] Name of the target
1098
+ # @param packet_name [String] Name of the packet
1099
+ # @return [Numeric] Receive count for the telemetry packet
1100
+ def get_tlm_cnt(target_name, packet_name)
1101
+ packet = System.telemetry.packet(target_name, packet_name)
1102
+ return packet.received_count
1103
+ end
1104
+
1105
+ # Get information about a packet logger.
1106
+ #
1107
+ # @param packet_logger_name [String] Name of the packet logger
1108
+ # @return [Array<<Array<String>, Boolean, Numeric, String, Numeric,
1109
+ # Boolean, Numeric, String, Numeric>] Array containing \[interfaces,
1110
+ # cmd logging enabled, cmd queue size, cmd filename, cmd file size,
1111
+ # tlm logging enabled, tlm queue size, tlm filename, tlm file size]
1112
+ # for the packet logger
1113
+ def get_packet_logger_info(packet_logger_name = 'DEFAULT')
1114
+ logger_info = CmdTlmServer.packet_logging.get_info(packet_logger_name)
1115
+ packet_log_writer_pair = CmdTlmServer.packet_logging.all[packet_logger_name.upcase]
1116
+ interfaces = []
1117
+ CmdTlmServer.interfaces.all.each do |interface_name, interface|
1118
+ if interface.packet_log_writer_pairs.include?(packet_log_writer_pair)
1119
+ interfaces << interface.name
1120
+ end
1121
+ end
1122
+ return [interfaces] + logger_info
1123
+ end
1124
+
1125
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1126
+ # is writing the command packet log
1127
+ # @return [String] The command packet log filename
1128
+ def get_cmd_log_filename(packet_log_writer_name = 'DEFAULT')
1129
+ CmdTlmServer.packet_logging.cmd_filename(packet_log_writer_name)
1130
+ end
1131
+
1132
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1133
+ # is writing the telemetry packet log
1134
+ # @return [String] The telemetry packet log filename
1135
+ def get_tlm_log_filename(packet_log_writer_name = 'DEFAULT')
1136
+ CmdTlmServer.packet_logging.tlm_filename(packet_log_writer_name)
1137
+ end
1138
+
1139
+ # Start both command and telemetry packet logging.
1140
+ #
1141
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1142
+ # is writing both the command and telemetry logs
1143
+ # @param label [String] Optional label to apply to both the command and
1144
+ # telemetry packet log filename
1145
+ def start_logging(packet_log_writer_name = 'ALL', label = nil)
1146
+ CmdTlmServer.packet_logging.start(packet_log_writer_name, label)
1147
+ nil
1148
+ end
1149
+
1150
+ # Stop both command and telemetry packet logging.
1151
+ #
1152
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1153
+ # is writing both the command and telemetry logs
1154
+ def stop_logging(packet_log_writer_name = 'ALL')
1155
+ CmdTlmServer.packet_logging.stop(packet_log_writer_name)
1156
+ nil
1157
+ end
1158
+
1159
+ # Start command packet logging.
1160
+ #
1161
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1162
+ # is writing the command logs
1163
+ # @param label [String] Optional label to apply to the command packet log
1164
+ # filename
1165
+ def start_cmd_log(packet_log_writer_name = 'ALL', label = nil)
1166
+ CmdTlmServer.packet_logging.start_cmd(packet_log_writer_name, label)
1167
+ nil
1168
+ end
1169
+
1170
+ # Start telemetry packet logging.
1171
+ #
1172
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1173
+ # is writing the telemetry logs
1174
+ # @param label [String] Optional label to apply to the telemetry packet log
1175
+ # filename
1176
+ def start_tlm_log(packet_log_writer_name = 'ALL', label = nil)
1177
+ CmdTlmServer.packet_logging.start_tlm(packet_log_writer_name, label)
1178
+ nil
1179
+ end
1180
+
1181
+ # Stop command packet logging.
1182
+ #
1183
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1184
+ # is writing the command log
1185
+ def stop_cmd_log(packet_log_writer_name = 'ALL')
1186
+ CmdTlmServer.packet_logging.stop_cmd(packet_log_writer_name)
1187
+ nil
1188
+ end
1189
+
1190
+ # Stop telemetry packet logging.
1191
+ #
1192
+ # @param packet_log_writer_name [String] The name of the packet log writer which
1193
+ # is writing the telemetry log
1194
+ def stop_tlm_log(packet_log_writer_name = 'ALL')
1195
+ CmdTlmServer.packet_logging.stop_tlm(packet_log_writer_name)
1196
+ nil
1197
+ end
1198
+
1199
+ # Starts raw logging for an interface
1200
+ #
1201
+ # @param interface_name [String] The name of the interface
1202
+ def start_raw_logging_interface(interface_name = 'ALL')
1203
+ CmdTlmServer.interfaces.start_raw_logging(interface_name)
1204
+ nil
1205
+ end
1206
+
1207
+ # Stop raw logging for an interface
1208
+ #
1209
+ # @param interface_name [String] The name of the interface
1210
+ def stop_raw_logging_interface(interface_name = 'ALL')
1211
+ CmdTlmServer.interfaces.stop_raw_logging(interface_name)
1212
+ nil
1213
+ end
1214
+
1215
+ # Starts raw logging for a router
1216
+ #
1217
+ # @param router_name [String] The name of the router
1218
+ def start_raw_logging_router(router_name = 'ALL')
1219
+ CmdTlmServer.routers.start_raw_logging(router_name)
1220
+ nil
1221
+ end
1222
+
1223
+ # Stops raw logging for a router
1224
+ #
1225
+ # @param router_name [String] The name of the router
1226
+ def stop_raw_logging_router(router_name = 'ALL')
1227
+ CmdTlmServer.routers.stop_raw_logging(router_name)
1228
+ nil
1229
+ end
1230
+
1231
+ # @return [String] The server message log filename
1232
+ def get_server_message_log_filename
1233
+ CmdTlmServer.message_log.filename
1234
+ end
1235
+
1236
+ # Starts a new server message log
1237
+ def start_new_server_message_log
1238
+ CmdTlmServer.message_log.start
1239
+ nil
1240
+ end
1241
+
1242
+ private
1243
+
1244
+ def cmd_implementation(range_check, hazardous_check, raw, method_name, *args)
1245
+ case args.length
1246
+ when 1
1247
+ target_name, cmd_name, cmd_params = extract_fields_from_cmd_text(args[0])
1248
+ when 2, 3
1249
+ target_name = args[0]
1250
+ cmd_name = args[1]
1251
+ if args.length == 2
1252
+ cmd_params = {}
1253
+ else
1254
+ cmd_params = args[2]
1255
+ end
1256
+ else
1257
+ # Invalid number of arguments
1258
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{method_name}()"
1259
+ end
1260
+
1261
+ # Build the command
1262
+ begin
1263
+ command = System.commands.build_cmd(target_name, cmd_name, cmd_params, range_check, raw)
1264
+ rescue => e
1265
+ Logger.error e.message
1266
+ raise e
1267
+ end
1268
+
1269
+ if hazardous_check
1270
+ hazardous, hazardous_description = System.commands.cmd_pkt_hazardous?(command)
1271
+ if hazardous
1272
+ error = HazardousError.new
1273
+ error.target_name = target_name
1274
+ error.cmd_name = cmd_name
1275
+ error.cmd_params = cmd_params
1276
+ error.hazardous_description = hazardous_description
1277
+ raise error
1278
+ end
1279
+ end
1280
+
1281
+ # Send the command
1282
+ @disconnect = false unless defined? @disconnect
1283
+ CmdTlmServer.commanding.send_command_to_target(target_name, command) unless @disconnect
1284
+
1285
+ [target_name, cmd_name, cmd_params]
1286
+ end
1287
+
1288
+ def tlm_process_args(args, function_name)
1289
+ case args.length
1290
+ when 1
1291
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
1292
+ when 3
1293
+ target_name = args[0]
1294
+ packet_name = args[1]
1295
+ item_name = args[2]
1296
+ else
1297
+ # Invalid number of arguments
1298
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1299
+ end
1300
+ return [target_name, packet_name, item_name]
1301
+ end
1302
+
1303
+ def tlm_variable_process_args(args, function_name)
1304
+ case args.length
1305
+ when 2
1306
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
1307
+ value_type = args[1].to_s.intern
1308
+ when 4
1309
+ target_name = args[0]
1310
+ packet_name = args[1]
1311
+ item_name = args[2]
1312
+ value_type = args[3].to_s.intern
1313
+ else
1314
+ # Invalid number of arguments
1315
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1316
+ end
1317
+ return [target_name, packet_name, item_name, value_type]
1318
+ end
1319
+
1320
+ def set_tlm_process_args(args, function_name)
1321
+ case args.length
1322
+ when 1
1323
+ target_name, packet_name, item_name, value = extract_fields_from_set_tlm_text(args[0])
1324
+ when 4
1325
+ target_name = args[0]
1326
+ packet_name = args[1]
1327
+ item_name = args[2]
1328
+ value = args[3]
1329
+ else
1330
+ # Invalid number of arguments
1331
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
1332
+ end
1333
+ return [target_name, packet_name, item_name, value]
1334
+ end
1335
+
1336
+ end # module Api
1337
+ end # module Cosmos