cosmos 4.0.0-universal-java-1.8

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