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,6 @@
1
+ # encoding: ascii-8bit
2
+
3
+ require 'cosmos/processors/processor'
4
+ require 'cosmos/processors/statistics_processor'
5
+ require 'cosmos/processors/watermark_processor'
6
+ require 'cosmos/processors/new_packet_log_processor'
@@ -0,0 +1,39 @@
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/processors/processor'
12
+
13
+ module Cosmos
14
+
15
+ class NewPacketLogProcessor < Processor
16
+
17
+ # @param packet_log_writer_name [String] Name of the packet log writer to start new logs on
18
+ def initialize(packet_log_writer_name = 'ALL')
19
+ super()
20
+ @packet_log_writer_name = packet_log_writer_name
21
+ end
22
+
23
+ # Create a new log file
24
+ #
25
+ # See Processor#call
26
+ def call(packet, buffer)
27
+ if CmdTlmServer.instance and $0 !~ /Replay/
28
+ CmdTlmServer.instance.start_logging(@packet_log_writer_name)
29
+ end
30
+ end
31
+
32
+ # Convert to configuration file string
33
+ def to_config
34
+ " PROCESSOR #{@name} #{self.class.name.to_s.class_name_to_filename} #{@packet_log_writer_name}\n"
35
+ end
36
+
37
+ end # class NewPacketLogProcessor
38
+
39
+ end # module Cosmos
@@ -0,0 +1,76 @@
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
+ module Cosmos
12
+
13
+ class Processor
14
+
15
+ # @return [Symbol] The value type for the processor
16
+ attr_reader :value_type
17
+
18
+ # @return [String] The processor name
19
+ attr_reader :name
20
+
21
+ # @return [Hash] The results of the most recent execution of the processor
22
+ attr_accessor :results
23
+
24
+ # Create a new Processor
25
+ # @param value_type [Symbol or String] the value type to process
26
+ def initialize(value_type = :CONVERTED)
27
+ @name = self.class.to_s.upcase
28
+ value_type = value_type.to_s.upcase.intern
29
+ @value_type = value_type
30
+ raise ArgumentError, "value_type must be RAW, CONVERTED, FORMATTED, or WITH_UNITS. Is #{@value_type}" unless Packet::VALUE_TYPES.include?(@value_type)
31
+ @results = {}
32
+ end
33
+
34
+ def name=(name)
35
+ @name = name.to_s.upcase
36
+ end
37
+
38
+ # Perform processing on the packet.
39
+ #
40
+ # @param packet [Packet] The packet which contains the value. This can
41
+ # be useful to reach into the packet and use other values in the
42
+ # conversion.
43
+ # @param buffer [String] The packet buffer
44
+ # @return The processed result
45
+ def call(packet, buffer)
46
+ raise "call method must be defined by subclass"
47
+ end
48
+
49
+ # @return [String] The processor class
50
+ def to_s
51
+ self.class.to_s.split('::')[-1]
52
+ end
53
+
54
+ # Reset any state
55
+ def reset
56
+ # By default do nothing
57
+ end
58
+
59
+ # Make a light weight clone of this processor. This only creates a new hash of results
60
+ #
61
+ # @return [Processor] A copy of the processor with a new hash of results
62
+ def clone
63
+ processor = super()
64
+ processor.results = processor.results.clone
65
+ processor
66
+ end
67
+ alias dup clone
68
+
69
+ # Convert to configuration file string
70
+ def to_config
71
+ " PROCESSOR #{@name} #{self.class.name.to_s.class_name_to_filename} #{@value_type}\n"
72
+ end
73
+
74
+ end # class Processor
75
+
76
+ end # module Cosmos
@@ -0,0 +1,70 @@
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/processors/processor'
12
+
13
+ module Cosmos
14
+
15
+ class StatisticsProcessor < Processor
16
+
17
+ # @return [Array] The set of samples stored by the processor
18
+ attr_accessor :samples
19
+
20
+ # @param item_name [String] The name of the item to gather statistics on
21
+ # @param samples_to_average [Integer] The number of samples to store for calculations
22
+ # @param value_type #See Processor::initialize
23
+ def initialize(item_name, samples_to_average, value_type = :CONVERTED)
24
+ super(value_type)
25
+ @item_name = item_name.to_s.upcase
26
+ @samples_to_average = Integer(samples_to_average)
27
+ reset()
28
+ end
29
+
30
+ # Run statistics on the item
31
+ #
32
+ # See Processor#call
33
+ def call(packet, buffer)
34
+ value = packet.read(@item_name, @value_type, buffer)
35
+ @samples << value
36
+ @samples = @samples[-@samples_to_average..-1] if @samples.length > @samples_to_average
37
+ mean, stddev = Math.stddev_sample(@samples)
38
+ @results[:MAX] = @samples.max
39
+ @results[:MIN] = @samples.min
40
+ @results[:MEAN] = mean
41
+ @results[:STDDEV] = stddev
42
+ end
43
+
44
+ # Reset any state
45
+ def reset
46
+ @samples = []
47
+ @results[:MAX] = nil
48
+ @results[:MIN] = nil
49
+ @results[:MEAN] = nil
50
+ @results[:STDDEV] = nil
51
+ end
52
+
53
+ # Make a light weight clone of this processor. This only creates a new hash of results
54
+ #
55
+ # @return [Processor] A copy of the processor with a new hash of results
56
+ def clone
57
+ processor = super()
58
+ processor.samples = processor.samples.clone
59
+ processor
60
+ end
61
+ alias dup clone
62
+
63
+ # Convert to configuration file string
64
+ def to_config
65
+ " PROCESSOR #{@name} #{self.class.name.to_s.class_name_to_filename} #{@item_name} #{@samples_to_average} #{@value_type}\n"
66
+ end
67
+
68
+ end # class StatisticsProcessor
69
+
70
+ end # module Cosmos
@@ -0,0 +1,49 @@
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/processors/processor'
12
+
13
+ module Cosmos
14
+
15
+ class WatermarkProcessor < Processor
16
+
17
+ # @param item_name [String] The name of the item to gather statistics on
18
+ # @param value_type #See Processor::initialize
19
+ def initialize(item_name, value_type = :CONVERTED)
20
+ super(value_type)
21
+ @item_name = item_name.to_s.upcase
22
+ reset()
23
+ end
24
+
25
+ # Run watermarks on the item
26
+ #
27
+ # See Processor#call
28
+ def call(packet, buffer)
29
+ value = packet.read(@item_name, @value_type, buffer)
30
+ high_water = @results[:HIGH_WATER]
31
+ @results[:HIGH_WATER] = value if !high_water or value > high_water
32
+ low_water = @results[:LOW_WATER]
33
+ @results[:LOW_WATER] = value if !low_water or value < low_water
34
+ end
35
+
36
+ # Reset any state
37
+ def reset
38
+ @results[:HIGH_WATER] = nil
39
+ @results[:LOW_WATER] = nil
40
+ end
41
+
42
+ # Convert to configuration file string
43
+ def to_config
44
+ " PROCESSOR #{@name} #{self.class.name.to_s.class_name_to_filename} #{@item_name} #{@value_type}\n"
45
+ end
46
+
47
+ end # class WatermarkProcessor
48
+
49
+ end # module Cosmos
@@ -0,0 +1,9 @@
1
+ # encoding: ascii-8bit
2
+
3
+ # Enforce not allowing this file to be included within CmdTlmServer
4
+ if $0 =~ /CmdTlmServer/ or $0 =~ /Replay/
5
+ raise "cosmos/script must not be required by any code used in the CmdTlmServer or Replay applications"
6
+ end
7
+
8
+ require 'cosmos/script/script'
9
+ include Cosmos::Script
@@ -0,0 +1,1000 @@
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2017 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
+ module Cosmos
12
+ module ApiShared
13
+ DEFAULT_TLM_POLLING_RATE = 0.25
14
+
15
+ private
16
+
17
+ # Get a packet which was previously subscribed to by
18
+ # subscribe_packet_data. This method can block waiting for new packets or
19
+ # not based on the second parameter. It returns a single Cosmos::Packet instance
20
+ # and will return nil when no more packets are buffered (assuming non_block
21
+ # is false).
22
+ # Usage:
23
+ # get_packet(id, <true or false to block>)
24
+ def get_packet(id, non_block = false)
25
+ packet = nil
26
+ buffer, target_name, packet_name, received_time, received_count = get_packet_data(id, non_block)
27
+ if buffer
28
+ packet = System.telemetry.packet(target_name, packet_name).clone
29
+ packet.buffer = buffer
30
+ packet.received_time = received_time
31
+ packet.received_count = received_count
32
+ end
33
+ packet
34
+ end
35
+
36
+ # Creates a string with the parameters upcased
37
+ def _upcase(target_name, packet_name, item_name)
38
+ "#{target_name.upcase} #{packet_name.upcase} #{item_name.upcase}"
39
+ end
40
+
41
+ # Implementaton of the various check commands. It yields back to the
42
+ # caller to allow the return of the value through various telemetry calls.
43
+ # This method should not be called directly by application code.
44
+ def _check(*args)
45
+ target_name, packet_name, item_name, comparison_to_eval = check_process_args(args, 'check')
46
+ value = yield(target_name, packet_name, item_name)
47
+ if comparison_to_eval
48
+ check_eval(target_name, packet_name, item_name, comparison_to_eval, value)
49
+ else
50
+ Logger.info "CHECK: #{_upcase(target_name, packet_name, item_name)} == #{value}"
51
+ end
52
+ end
53
+
54
+ # Check the converted value of a telmetry item against a condition
55
+ # Always print the value of the telemetry item to STDOUT
56
+ # If the condition check fails, raise an error
57
+ # Supports two signatures:
58
+ # check(target_name, packet_name, item_name, comparison_to_eval)
59
+ # or
60
+ # check('target_name packet_name item_name > 1')
61
+ def check(*args)
62
+ _check(*args) {|tgt,pkt,item| tlm(tgt,pkt,item) }
63
+ end
64
+
65
+ # Check the formatted value of a telmetry item against a condition
66
+ # Always print the value of the telemetry item to STDOUT
67
+ # If the condition check fails, raise an error
68
+ # Supports two signatures:
69
+ # check(target_name, packet_name, item_name, comparison_to_eval)
70
+ # or
71
+ # check('target_name packet_name item_name > 1')
72
+ def check_formatted(*args)
73
+ _check(*args) {|tgt,pkt,item| tlm_formatted(tgt,pkt,item) }
74
+ end
75
+
76
+ # Check the formatted with units value of a telmetry item against a condition
77
+ # Always print the value of the telemetry item to STDOUT
78
+ # If the condition check fails, raise an error
79
+ # Supports two signatures:
80
+ # check(target_name, packet_name, item_name, comparison_to_eval)
81
+ # or
82
+ # check('target_name packet_name item_name > 1')
83
+ def check_with_units(*args)
84
+ _check(*args) {|tgt,pkt,item| tlm_with_units(tgt,pkt,item) }
85
+ end
86
+
87
+ # Check the raw value of a telmetry item against a condition
88
+ # Always print the value of the telemetry item to STDOUT
89
+ # If the condition check fails, raise an error
90
+ # Supports two signatures:
91
+ # check(target_name, packet_name, item_name, comparison_to_eval)
92
+ # or
93
+ # check('target_name packet_name item_name > 1')
94
+ def check_raw(*args)
95
+ _check(*args) {|tgt,pkt,item| tlm_raw(tgt,pkt,item) }
96
+ end
97
+
98
+ # Executes the passed method and expects an exception to be raised.
99
+ # Raises a CheckError if an Exception is not raised.
100
+ # Usage:
101
+ # check_exception(method_name, method_params}
102
+ def check_exception(method_name, *method_params)
103
+ begin
104
+ send(method_name, *method_params)
105
+ rescue Exception => error
106
+ Logger.info "CHECK: #{method_name}(#{method_params.join(", ")}) raised #{error.class}:#{error.message}"
107
+ else
108
+ raise(CheckError, "#{method_name}(#{method_params.join(", ")}) should have raised an exception but did not.")
109
+ end
110
+ end
111
+
112
+ def _check_tolerance(*args)
113
+ target_name, packet_name, item_name, expected_value, tolerance =
114
+ check_tolerance_process_args(args, 'check_tolerance')
115
+ value = yield(target_name, packet_name, item_name)
116
+ if value.is_a?(Array)
117
+ expected_value, tolerance = array_tolerance_process_args(value.size, expected_value, tolerance, 'check_tolerance')
118
+
119
+ message = ""
120
+ all_checks_ok = true
121
+ value.size.times do |i|
122
+ range = (expected_value[i]-tolerance[i]..expected_value[i]+tolerance[i])
123
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)}[#{i}]"
124
+ range_str = "range #{range.first} to #{range.last} with value == #{value[i]}"
125
+ if range.include?(value[i])
126
+ message << "#{check_str} was within #{range_str}\n"
127
+ else
128
+ message << "#{check_str} failed to be within #{range_str}\n"
129
+ all_checks_ok = false
130
+ end
131
+ end
132
+
133
+ if all_checks_ok
134
+ Logger.info message
135
+ else
136
+ if $cmd_tlm_disconnect
137
+ Logger.error message
138
+ else
139
+ raise CheckError, message
140
+ end
141
+ end
142
+ else
143
+ range = (expected_value - tolerance)..(expected_value + tolerance)
144
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)}"
145
+ range_str = "range #{range.first} to #{range.last} with value == #{value}"
146
+ if range.include?(value)
147
+ Logger.info "#{check_str} was within #{range_str}"
148
+ else
149
+ message = "#{check_str} failed to be within #{range_str}"
150
+ if $cmd_tlm_disconnect
151
+ Logger.error message
152
+ else
153
+ raise CheckError, message
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ # Check the converted value of a telmetry item against an expected value with a tolerance
160
+ # Always print the value of the telemetry item to STDOUT
161
+ # If the condition check fails, raise an error
162
+ # Supports two signatures:
163
+ # check_tolerance(target_name, packet_name, item_name, expected_value, tolerance)
164
+ # or
165
+ # check_tolerance('target_name packet_name item_name', expected_value, tolerance)
166
+ def check_tolerance(*args)
167
+ _check_tolerance(*args) {|tgt,pkt,item| tlm(tgt,pkt,item) }
168
+ end
169
+
170
+ # Check the raw value of a telmetry item against an expected value with a tolerance
171
+ # Always print the value of the telemetry item to STDOUT
172
+ # If the condition check fails, raise an error
173
+ # Supports two signatures:
174
+ # check_tolerance_raw(target_name, packet_name, item_name, expected_value, tolerance)
175
+ # or
176
+ # check_tolerance_raw('target_name packet_name item_name', expected_value, tolerance)
177
+ def check_tolerance_raw(*args)
178
+ _check_tolerance(*args) {|tgt,pkt,item| tlm_raw(tgt,pkt,item) }
179
+ end
180
+
181
+ # Check to see if an expression is true without waiting. If the expression
182
+ # is not true, the script will pause.
183
+ def check_expression(exp_to_eval, context = nil)
184
+ success = cosmos_script_wait_implementation_expression(exp_to_eval, 0, DEFAULT_TLM_POLLING_RATE, context)
185
+ if success
186
+ Logger.info "CHECK: #{exp_to_eval} is TRUE"
187
+ else
188
+ message = "CHECK: #{exp_to_eval} is FALSE"
189
+ if $cmd_tlm_disconnect
190
+ Logger.error message
191
+ else
192
+ raise CheckError, message
193
+ end
194
+ end
195
+ end
196
+
197
+ # Wait on an expression to be true. On a timeout, the script will continue.
198
+ # Supports multiple signatures:
199
+ # wait(time)
200
+ # wait('target_name packet_name item_name > 1', timeout, polling_rate)
201
+ # wait('target_name', 'packet_name', 'item_name', comparison_to_eval, timeout, polling_rate)
202
+ def wait(*args)
203
+ wait_process_args(args, 'wait', :CONVERTED)
204
+ end
205
+
206
+ # Wait on an expression to be true. On a timeout, the script will continue.
207
+ # Supports multiple signatures:
208
+ # wait(time)
209
+ # wait_raw('target_name packet_name item_name > 1', timeout, polling_rate)
210
+ # wait_raw('target_name', 'packet_name', 'item_name', comparison_to_eval, timeout, polling_rate)
211
+ def wait_raw(*args)
212
+ wait_process_args(args, 'wait_raw', :RAW)
213
+ end
214
+
215
+ def _wait_tolerance(raw, *args)
216
+ type = (raw ? :RAW : :CONVERTED)
217
+ type_string = 'wait_tolerance'
218
+ type_string << '_raw' if raw
219
+ target_name, packet_name, item_name, expected_value, tolerance, timeout, polling_rate = wait_tolerance_process_args(args, type_string)
220
+ start_time = Time.now.sys
221
+ value = tlm_variable(target_name, packet_name, item_name, type)
222
+ if value.is_a?(Array)
223
+ expected_value, tolerance = array_tolerance_process_args(value.size, expected_value, tolerance, type_string)
224
+
225
+ success, value = cosmos_script_wait_implementation_array_tolerance(value.size, target_name, packet_name, item_name, type, expected_value, tolerance, timeout, polling_rate)
226
+ time = Time.now.sys - start_time
227
+
228
+ message = ""
229
+ value.size.times do |i|
230
+ range = (expected_value[i]-tolerance[i]..expected_value[i]+tolerance[i])
231
+ wait_str = "WAIT: #{_upcase(target_name, packet_name, item_name)}[#{i}]"
232
+ range_str = "range #{range.first} to #{range.last} with value == #{value[i]} after waiting #{time} seconds"
233
+ if range.include?(value[i])
234
+ message << "#{wait_str} was within #{range_str}\n"
235
+ else
236
+ message << "#{wait_str} failed to be within #{range_str}\n"
237
+ end
238
+ end
239
+
240
+ if success
241
+ Logger.info message
242
+ else
243
+ Logger.warn message
244
+ end
245
+ else
246
+ success, value = cosmos_script_wait_implementation_tolerance(target_name, packet_name, item_name, type, expected_value, tolerance, timeout, polling_rate)
247
+ time = Time.now.sys - start_time
248
+ range = (expected_value - tolerance)..(expected_value + tolerance)
249
+ wait_str = "WAIT: #{_upcase(target_name, packet_name, item_name)}"
250
+ range_str = "range #{range.first} to #{range.last} with value == #{value} after waiting #{time} seconds"
251
+ if success
252
+ Logger.info "#{wait_str} was within #{range_str}"
253
+ else
254
+ Logger.warn "#{wait_str} failed to be within #{range_str}"
255
+ end
256
+ end
257
+ time
258
+ end
259
+
260
+ # Wait on an expression to be true. On a timeout, the script will continue.
261
+ # Supports multiple signatures:
262
+ # wait_tolerance('target_name packet_name item_name', expected_value, tolerance, timeout, polling_rate)
263
+ # wait_tolerance('target_name', 'packet_name', 'item_name', expected_value, tolerance, timeout, polling_rate)
264
+ def wait_tolerance(*args)
265
+ _wait_tolerance(false, *args)
266
+ end
267
+
268
+ # Wait on an expression to be true. On a timeout, the script will continue.
269
+ # Supports multiple signatures:
270
+ # wait_tolerance_raw('target_name packet_name item_name', expected_value, tolerance, timeout, polling_rate)
271
+ # wait_tolerance_raw('target_name', 'packet_name', 'item_name', expected_value, tolerance, timeout, polling_rate)
272
+ def wait_tolerance_raw(*args)
273
+ _wait_tolerance(true, *args)
274
+ end
275
+
276
+ # Wait on a custom expression to be true
277
+ def wait_expression(exp_to_eval, timeout, polling_rate = DEFAULT_TLM_POLLING_RATE, context = nil)
278
+ start_time = Time.now.sys
279
+ success = cosmos_script_wait_implementation_expression(exp_to_eval, timeout, polling_rate, context)
280
+ time = Time.now.sys - start_time
281
+ if success
282
+ Logger.info "WAIT: #{exp_to_eval} is TRUE after waiting #{time} seconds"
283
+ else
284
+ Logger.warn "WAIT: #{exp_to_eval} is FALSE after waiting #{time} seconds"
285
+ end
286
+ time
287
+ end
288
+
289
+ def _wait_check(raw, *args)
290
+ type = (raw ? :RAW : :CONVERTED)
291
+ target_name, packet_name, item_name, comparison_to_eval, timeout, polling_rate = wait_check_process_args(args, 'wait_check')
292
+ start_time = Time.now.sys
293
+ success, value = cosmos_script_wait_implementation(target_name, packet_name, item_name, type, comparison_to_eval, timeout, polling_rate)
294
+ time = Time.now.sys - start_time
295
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)} #{comparison_to_eval}"
296
+ with_value_str = "with value == #{value} after waiting #{time} seconds"
297
+ if success
298
+ Logger.info "#{check_str} success #{with_value_str}"
299
+ else
300
+ message = "#{check_str} failed #{with_value_str}"
301
+ if $cmd_tlm_disconnect
302
+ Logger.error message
303
+ else
304
+ raise CheckError, message
305
+ end
306
+ end
307
+ time
308
+ end
309
+
310
+ # Wait for the converted value of a telmetry item against a condition or for a timeout
311
+ # and then check against the condition
312
+ # Supports two signatures:
313
+ # wait_check(target_name, packet_name, item_name, comparison_to_eval, timeout, polling_rate)
314
+ # or
315
+ # wait_check('target_name packet_name item_name > 1', timeout, polling_rate)
316
+ def wait_check(*args)
317
+ _wait_check(false, *args)
318
+ end
319
+
320
+ # Wait for the raw value of a telmetry item against a condition or for a timeout
321
+ # and then check against the condition
322
+ # Supports two signatures:
323
+ # wait_check_raw(target_name, packet_name, item_name, comparison_to_eval, timeout, polling_rate)
324
+ # or
325
+ # wait_check_raw('target_name packet_name item_name > 1', timeout, polling_rate)
326
+ def wait_check_raw(*args)
327
+ _wait_check(true, *args)
328
+ end
329
+
330
+ def _wait_check_tolerance(raw, *args)
331
+ type_string = 'wait_check_tolerance'
332
+ type_string << '_raw' if raw
333
+ type = (raw ? :RAW : :CONVERTED)
334
+ target_name, packet_name, item_name, expected_value, tolerance, timeout, polling_rate = wait_tolerance_process_args(args, type_string)
335
+ start_time = Time.now.sys
336
+ value = tlm_variable(target_name, packet_name, item_name, type)
337
+ if value.is_a?(Array)
338
+ expected_value, tolerance = array_tolerance_process_args(value.size, expected_value, tolerance, type_string)
339
+
340
+ success, value = cosmos_script_wait_implementation_array_tolerance(value.size, target_name, packet_name, item_name, type, expected_value, tolerance, timeout, polling_rate)
341
+ time = Time.now.sys - start_time
342
+
343
+ message = ""
344
+ value.size.times do |i|
345
+ range = (expected_value[i]-tolerance[i]..expected_value[i]+tolerance[i])
346
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)}[#{i}]"
347
+ range_str = "range #{range.first} to #{range.last} with value == #{value[i]} after waiting #{time} seconds"
348
+ if range.include?(value[i])
349
+ message << "#{check_str} was within #{range_str}\n"
350
+ else
351
+ message << "#{check_str} failed to be within #{range_str}\n"
352
+ end
353
+ end
354
+
355
+ if success
356
+ Logger.info message
357
+ else
358
+ if $cmd_tlm_disconnect
359
+ Logger.error message
360
+ else
361
+ raise CheckError, message
362
+ end
363
+ end
364
+ else
365
+ success, value = cosmos_script_wait_implementation_tolerance(target_name, packet_name, item_name, type, expected_value, tolerance, timeout, polling_rate)
366
+ time = Time.now.sys - start_time
367
+ range = (expected_value - tolerance)..(expected_value + tolerance)
368
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)}"
369
+ range_str = "range #{range.first} to #{range.last} with value == #{value} after waiting #{time} seconds"
370
+ if success
371
+ Logger.info "#{check_str} was within #{range_str}"
372
+ else
373
+ message = "#{check_str} failed to be within #{range_str}"
374
+ if $cmd_tlm_disconnect
375
+ Logger.error message
376
+ else
377
+ raise CheckError, message
378
+ end
379
+ end
380
+ end
381
+
382
+ time
383
+ end
384
+
385
+ def wait_check_tolerance(*args)
386
+ _wait_check_tolerance(false, *args)
387
+ end
388
+
389
+ def wait_check_tolerance_raw(*args)
390
+ _wait_check_tolerance(true, *args)
391
+ end
392
+
393
+ # Wait on an expression to be true. On a timeout, the script will pause.
394
+ def wait_check_expression(exp_to_eval,
395
+ timeout,
396
+ polling_rate = DEFAULT_TLM_POLLING_RATE,
397
+ context = nil)
398
+ start_time = Time.now.sys
399
+ success = cosmos_script_wait_implementation_expression(exp_to_eval,
400
+ timeout,
401
+ polling_rate,
402
+ context)
403
+ time = Time.now.sys - start_time
404
+ if success
405
+ Logger.info "CHECK: #{exp_to_eval} is TRUE after waiting #{time} seconds"
406
+ else
407
+ message = "CHECK: #{exp_to_eval} is FALSE after waiting #{time} seconds"
408
+ if $cmd_tlm_disconnect
409
+ Logger.error message
410
+ else
411
+ raise CheckError, message
412
+ end
413
+ end
414
+ time
415
+ end
416
+ alias wait_expression_stop_on_timeout wait_check_expression
417
+
418
+ # Wait for a telemetry packet to be received a certain number of times or timeout
419
+ def _wait_packet(check,
420
+ target_name,
421
+ packet_name,
422
+ num_packets,
423
+ timeout,
424
+ polling_rate = DEFAULT_TLM_POLLING_RATE)
425
+ type = (check ? 'CHECK' : 'WAIT')
426
+ initial_count = tlm(target_name, packet_name, 'RECEIVED_COUNT')
427
+ start_time = Time.now.sys
428
+ success, value = cosmos_script_wait_implementation(target_name,
429
+ packet_name,
430
+ 'RECEIVED_COUNT',
431
+ :CONVERTED,
432
+ ">= #{initial_count + num_packets}",
433
+ timeout,
434
+ polling_rate)
435
+ time = Time.now.sys - start_time
436
+ if success
437
+ Logger.info "#{type}: #{target_name.upcase} #{packet_name.upcase} received #{value - initial_count} times after waiting #{time} seconds"
438
+ else
439
+ message = "#{type}: #{target_name.upcase} #{packet_name.upcase} expected to be received #{num_packets} times but only received #{value - initial_count} times after waiting #{time} seconds"
440
+ if check
441
+ if $cmd_tlm_disconnect
442
+ Logger.error message
443
+ else
444
+ raise CheckError, message
445
+ end
446
+ else
447
+ Logger.warn message
448
+ end
449
+ end
450
+ time
451
+ end
452
+
453
+ def wait_packet(target_name,
454
+ packet_name,
455
+ num_packets,
456
+ timeout,
457
+ polling_rate = DEFAULT_TLM_POLLING_RATE)
458
+ _wait_packet(false, target_name, packet_name, num_packets, timeout, polling_rate)
459
+ end
460
+
461
+ # Wait for a telemetry packet to be received a certain number of times or timeout and raise an error
462
+ def wait_check_packet(target_name,
463
+ packet_name,
464
+ num_packets,
465
+ timeout,
466
+ polling_rate = DEFAULT_TLM_POLLING_RATE)
467
+ _wait_packet(true, target_name, packet_name, num_packets, timeout, polling_rate)
468
+ end
469
+
470
+ def _get_procedure_path(procedure_name)
471
+ # Handle not-giving an extension
472
+ procedure_name_with_extension = nil
473
+ procedure_name_with_extension = procedure_name + '.rb' if File.extname(procedure_name).empty?
474
+
475
+ path = nil
476
+
477
+ # Find filename in search path
478
+ ($:).each do |directory|
479
+ if File.exist?(directory + '/' + procedure_name) and not File.directory?(directory + '/' + procedure_name)
480
+ path = directory + '/' + procedure_name
481
+ break
482
+ end
483
+
484
+ if procedure_name_with_extension and File.exist?(directory + '/' + procedure_name_with_extension)
485
+ procedure_name = procedure_name_with_extension
486
+ path = directory + '/' + procedure_name
487
+ break
488
+ end
489
+ end
490
+
491
+ # Handle absolute path
492
+ path = procedure_name if !path and File.exist?(procedure_name)
493
+ path = procedure_name_with_extension if !path and procedure_name_with_extension and File.exist?(procedure_name_with_extension)
494
+
495
+ raise LoadError, "Procedure not found -- #{procedure_name}" unless path
496
+ path
497
+ end
498
+
499
+ def check_file_cache_for_instrumented_script(path, md5)
500
+ file_text = nil
501
+ instrumented_script = nil
502
+ cached = true
503
+ use_file_cache = true
504
+
505
+ Cosmos.set_working_dir do
506
+ cache_path = File.join(System.paths['TMP'], 'script_runner')
507
+ unless File.directory?(cache_path)
508
+ # Try to create .cache directory
509
+ begin
510
+ Dir.mkdir(cache_path)
511
+ rescue
512
+ use_file_cache = false
513
+ end
514
+ end
515
+
516
+ cache_filename = nil
517
+ if use_file_cache
518
+ # Check file based instrumented cache
519
+ flat_path = path.tr("/", "_").gsub("\\", "_").tr(":", "_").tr(" ", "_")
520
+ flat_path_with_md5 = flat_path + '_' + md5
521
+ cache_filename = File.join(cache_path, flat_path_with_md5)
522
+ end
523
+
524
+ begin
525
+ file_text = File.read(path)
526
+ rescue Exception => error
527
+ raise "Error reading procedure file : #{path}"
528
+ end
529
+
530
+ if use_file_cache and File.exist?(cache_filename)
531
+ # Use file cached instrumentation
532
+ File.open(cache_filename, 'r') {|file| instrumented_script = file.read}
533
+ else
534
+ cached = false
535
+
536
+ # Build instrumentation
537
+ instrumented_script = ScriptRunnerFrame.instrument_script(file_text, path, true)
538
+
539
+ # Cache instrumentation into file
540
+ if use_file_cache
541
+ begin
542
+ File.open(cache_filename, 'w') {|file| file.write(instrumented_script)}
543
+ rescue
544
+ # Oh well, failed to write cache file
545
+ end
546
+ end
547
+ end
548
+ end
549
+ [file_text, instrumented_script, cached]
550
+ end
551
+
552
+ def start(procedure_name)
553
+ cached = true
554
+ path = _get_procedure_path(procedure_name)
555
+
556
+ if defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
557
+ md5 = nil
558
+ begin
559
+ md5 = Cosmos.md5_files([path]).hexdigest
560
+ rescue Exception => error
561
+ raise "Error calculating md5 on procedure file : #{path}"
562
+ end
563
+
564
+ # Check RAM based instrumented cache
565
+ instrumented_cache = ScriptRunnerFrame.instrumented_cache[path]
566
+ instrumented_script = nil
567
+ if instrumented_cache and md5 == instrumented_cache[1]
568
+ # Use cached instrumentation
569
+ instrumented_script = instrumented_cache[0]
570
+ else
571
+ file_text, instrumented_script, cached = check_file_cache_for_instrumented_script(path, md5)
572
+ # Cache instrumentation into RAM
573
+ ScriptRunnerFrame.file_cache[path] = file_text
574
+ ScriptRunnerFrame.instrumented_cache[path] = [instrumented_script, md5]
575
+ end
576
+
577
+ Object.class_eval(instrumented_script, path, 1)
578
+ else # No ScriptRunnerFrame so just start it locally
579
+ cached = false
580
+ begin
581
+ Kernel::load(path)
582
+ rescue LoadError => error
583
+ raise LoadError, "Error loading -- #{procedure_name}\n#{error.message}"
584
+ end
585
+ end
586
+ # Return whether we had to load and instrument this file, i.e. it was not cached
587
+ !cached
588
+ end
589
+
590
+ # Require an additional ruby file
591
+ def load_utility(procedure_name)
592
+ not_cached = false
593
+ if defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
594
+ saved = ScriptRunnerFrame.instance.use_instrumentation
595
+ begin
596
+ ScriptRunnerFrame.instance.use_instrumentation = false
597
+ not_cached = start(procedure_name)
598
+ ensure
599
+ ScriptRunnerFrame.instance.use_instrumentation = saved
600
+ end
601
+ else # Just call start
602
+ not_cached = start(procedure_name)
603
+ end
604
+ # Return whether we had to load and instrument this file, i.e. it was not cached
605
+ # This is designed to match the behavior of Ruby's require and load keywords
606
+ not_cached
607
+ end
608
+ alias require_utility load_utility
609
+
610
+ ##########################################
611
+ # Protected Methods
612
+ ##########################################
613
+
614
+ def check_process_args(args, function_name)
615
+ case args.length
616
+ when 1
617
+ target_name, packet_name, item_name, comparison_to_eval = extract_fields_from_check_text(args[0])
618
+ when 4
619
+ target_name = args[0]
620
+ packet_name = args[1]
621
+ item_name = args[2]
622
+ comparison_to_eval = args[3]
623
+ else
624
+ # Invalid number of arguments
625
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
626
+ end
627
+ return [target_name, packet_name, item_name, comparison_to_eval]
628
+ end
629
+
630
+ def check_tolerance_process_args(args, function_name)
631
+ case args.length
632
+ when 3
633
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
634
+ expected_value = args[1]
635
+ if args[2].is_a?(Array)
636
+ tolerance = args[2].map!(&:abs)
637
+ else
638
+ tolerance = args[2].abs
639
+ end
640
+ when 5
641
+ target_name = args[0]
642
+ packet_name = args[1]
643
+ item_name = args[2]
644
+ expected_value = args[3]
645
+ if args[4].is_a?(Array)
646
+ tolerance = args[4].map!(&:abs)
647
+ else
648
+ tolerance = args[4].abs
649
+ end
650
+ else
651
+ # Invalid number of arguments
652
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
653
+ end
654
+ return [target_name, packet_name, item_name, expected_value, tolerance]
655
+ end
656
+
657
+ def _execute_wait(target_name, packet_name, item_name, value_type, comparison_to_eval, timeout, polling_rate)
658
+ start_time = Time.now.sys
659
+ success, value = cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, comparison_to_eval, timeout, polling_rate)
660
+ time = Time.now.sys - start_time
661
+ wait_str = "WAIT: #{_upcase(target_name, packet_name, item_name)} #{comparison_to_eval}"
662
+ value_str = "with value == #{value} after waiting #{time} seconds"
663
+ if success
664
+ Logger.info "#{wait_str} success #{value_str}"
665
+ else
666
+ Logger.warn "#{wait_str} failed #{value_str}"
667
+ end
668
+ end
669
+
670
+ def wait_process_args(args, function_name, value_type)
671
+ time = nil
672
+
673
+ case args.length
674
+ when 0
675
+ start_time = Time.now.sys
676
+ cosmos_script_sleep()
677
+ time = Time.now.sys - start_time
678
+ Logger.info("WAIT: Indefinite for actual time of #{time} seconds")
679
+ when 1
680
+ if args[0].kind_of? Numeric
681
+ start_time = Time.now.sys
682
+ cosmos_script_sleep(args[0])
683
+ time = Time.now.sys - start_time
684
+ Logger.info("WAIT: #{args[0]} seconds with actual time of #{time} seconds")
685
+ else
686
+ raise "Non-numeric wait time specified"
687
+ end
688
+ when 2, 3
689
+ target_name, packet_name, item_name, comparison_to_eval = extract_fields_from_check_text(args[0])
690
+ timeout = args[1]
691
+ if args.length == 3
692
+ polling_rate = args[2]
693
+ else
694
+ polling_rate = DEFAULT_TLM_POLLING_RATE
695
+ end
696
+ _execute_wait(target_name, packet_name, item_name, value_type, comparison_to_eval, timeout, polling_rate)
697
+
698
+ when 5, 6
699
+ target_name = args[0]
700
+ packet_name = args[1]
701
+ item_name = args[2]
702
+ comparison_to_eval = args[3]
703
+ timeout = args[4]
704
+ if args.length == 6
705
+ polling_rate = args[5]
706
+ else
707
+ polling_rate = DEFAULT_TLM_POLLING_RATE
708
+ end
709
+ _execute_wait(target_name, packet_name, item_name, value_type, comparison_to_eval, timeout, polling_rate)
710
+
711
+ else
712
+ # Invalid number of arguments
713
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
714
+ end
715
+ time
716
+ end
717
+
718
+ def wait_tolerance_process_args(args, function_name)
719
+ case args.length
720
+ when 4, 5
721
+ target_name, packet_name, item_name = extract_fields_from_tlm_text(args[0])
722
+ expected_value = args[1]
723
+ if args[2].is_a?(Array)
724
+ tolerance = args[2].map!(&:abs)
725
+ else
726
+ tolerance = args[2].abs
727
+ end
728
+ timeout = args[3]
729
+ if args.length == 5
730
+ polling_rate = args[4]
731
+ else
732
+ polling_rate = DEFAULT_TLM_POLLING_RATE
733
+ end
734
+ when 6, 7
735
+ target_name = args[0]
736
+ packet_name = args[1]
737
+ item_name = args[2]
738
+ expected_value = args[3]
739
+ if args[4].is_a?(Array)
740
+ tolerance = args[4].map!(&:abs)
741
+ else
742
+ tolerance = args[4].abs
743
+ end
744
+ timeout = args[5]
745
+ if args.length == 7
746
+ polling_rate = args[6]
747
+ else
748
+ polling_rate = DEFAULT_TLM_POLLING_RATE
749
+ end
750
+ else
751
+ # Invalid number of arguments
752
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
753
+ end
754
+ return [target_name, packet_name, item_name, expected_value, tolerance, timeout, polling_rate]
755
+ end
756
+
757
+ # When testing an array with a tolerance, the expected value and tolerance
758
+ # can both be supplied as either an array or a single value. If a single
759
+ # value is passed in, that value will be used for all array elements.
760
+ def array_tolerance_process_args(array_size, expected_value, tolerance, function_name)
761
+ if expected_value.is_a?(Array)
762
+ if array_size != expected_value.size
763
+ raise "ERROR: Invalid array size for expected_value passed to #{function_name}()"
764
+ end
765
+ else
766
+ expected_value = Array.new(array_size, expected_value)
767
+ end
768
+ if tolerance.is_a?(Array)
769
+ if array_size != tolerance.size
770
+ raise "ERROR: Invalid array size for tolerance passed to #{function_name}()"
771
+ end
772
+ else
773
+ tolerance = Array.new(array_size, tolerance)
774
+ end
775
+ return [expected_value, tolerance]
776
+ end
777
+
778
+ def wait_check_process_args(args, function_name)
779
+ case args.length
780
+ when 2, 3
781
+ target_name, packet_name, item_name, comparison_to_eval = extract_fields_from_check_text(args[0])
782
+ timeout = args[1]
783
+ if args.length == 3
784
+ polling_rate = args[2]
785
+ else
786
+ polling_rate = DEFAULT_TLM_POLLING_RATE
787
+ end
788
+ when 5, 6
789
+ target_name = args[0]
790
+ packet_name = args[1]
791
+ item_name = args[2]
792
+ comparison_to_eval = args[3]
793
+ timeout = args[4]
794
+ if args.length == 6
795
+ polling_rate = args[5]
796
+ else
797
+ polling_rate = DEFAULT_TLM_POLLING_RATE
798
+ end
799
+ else
800
+ # Invalid number of arguments
801
+ raise "ERROR: Invalid number of arguments (#{args.length}) passed to #{function_name}()"
802
+ end
803
+ return [target_name, packet_name, item_name, comparison_to_eval, timeout, polling_rate]
804
+ end
805
+
806
+ # sleep in a script - returns true if canceled mid sleep
807
+ def cosmos_script_sleep(sleep_time = nil)
808
+ return false if $cmd_tlm_disconnect
809
+ if defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
810
+ sleep_time = 30000000 unless sleep_time # Handle infinite wait
811
+ if sleep_time > 0.0
812
+ end_time = Time.now.sys + sleep_time
813
+ until (Time.now.sys >= end_time)
814
+ sleep(0.01)
815
+ if ScriptRunnerFrame.instance.pause?
816
+ ScriptRunnerFrame.instance.perform_pause
817
+ return true
818
+ end
819
+ return true if ScriptRunnerFrame.instance.go?
820
+ raise StopScript if ScriptRunnerFrame.instance.stop?
821
+ end
822
+ end
823
+ else
824
+ if sleep_time
825
+ sleep(sleep_time)
826
+ else
827
+ print 'Infinite Wait - Press Enter to Continue: '
828
+ gets()
829
+ end
830
+ end
831
+ return false
832
+ end
833
+
834
+ def _cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, timeout, polling_rate)
835
+ end_time = Time.now.sys + timeout
836
+ exp_to_eval = yield
837
+
838
+ while true
839
+ work_start = Time.now.sys
840
+ value = tlm_variable(target_name, packet_name, item_name, value_type)
841
+ if eval(exp_to_eval)
842
+ return true, value
843
+ end
844
+ break if Time.now.sys >= end_time || $cmd_tlm_disconnect
845
+
846
+ delta = Time.now.sys - work_start
847
+ sleep_time = polling_rate - delta
848
+ end_delta = end_time - Time.now.sys
849
+ sleep_time = end_delta if end_delta < sleep_time
850
+ sleep_time = 0 if sleep_time < 0
851
+ canceled = cosmos_script_sleep(sleep_time)
852
+
853
+ if canceled
854
+ value = tlm_variable(target_name, packet_name, item_name, value_type)
855
+ if eval(exp_to_eval)
856
+ return true, value
857
+ else
858
+ return false, value
859
+ end
860
+ end
861
+ end
862
+
863
+ return false, value
864
+ end
865
+
866
+ # Wait for a converted telemetry item to pass a comparison
867
+ def cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, comparison_to_eval, timeout, polling_rate = DEFAULT_TLM_POLLING_RATE)
868
+ _cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, timeout, polling_rate) do
869
+ "value " + comparison_to_eval
870
+ end
871
+ end
872
+
873
+ def cosmos_script_wait_implementation_tolerance(target_name, packet_name, item_name, value_type, expected_value, tolerance, timeout, polling_rate = DEFAULT_TLM_POLLING_RATE)
874
+ _cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, timeout, polling_rate) do
875
+ "((#{expected_value} - #{tolerance})..(#{expected_value} + #{tolerance})).include? value"
876
+ end
877
+ end
878
+
879
+ def cosmos_script_wait_implementation_array_tolerance(array_size, target_name, packet_name, item_name, value_type, expected_value, tolerance, timeout, polling_rate = DEFAULT_TLM_POLLING_RATE)
880
+ statements = []
881
+ array_size.times {|i| statements << "(((#{expected_value[i]} - #{tolerance[i]})..(#{expected_value[i]} + #{tolerance[i]})).include? value[#{i}])"}
882
+ exp_to_eval = statements.join(" && ")
883
+ _cosmos_script_wait_implementation(target_name, packet_name, item_name, value_type, timeout, polling_rate) do
884
+ exp_to_eval
885
+ end
886
+ end
887
+
888
+ # Wait on an expression to be true.
889
+ def cosmos_script_wait_implementation_expression(exp_to_eval, timeout, polling_rate, context)
890
+ end_time = Time.now.sys + timeout
891
+ context = ScriptRunnerFrame.instance.script_binding if !context and defined? ScriptRunnerFrame and ScriptRunnerFrame.instance
892
+
893
+ while true
894
+ work_start = Time.now.sys
895
+ if eval(exp_to_eval, context)
896
+ return true
897
+ end
898
+ break if Time.now.sys >= end_time
899
+
900
+ delta = Time.now.sys - work_start
901
+ sleep_time = polling_rate - delta
902
+ end_delta = end_time - Time.now.sys
903
+ sleep_time = end_delta if end_delta < sleep_time
904
+ sleep_time = 0 if sleep_time < 0
905
+ canceled = cosmos_script_sleep(sleep_time)
906
+
907
+ if canceled
908
+ if eval(exp_to_eval, context)
909
+ return true
910
+ else
911
+ return nil
912
+ end
913
+ end
914
+ end
915
+
916
+ return nil
917
+ end
918
+
919
+ def check_eval(target_name, packet_name, item_name, comparison_to_eval, value)
920
+ string = "value " + comparison_to_eval
921
+ check_str = "CHECK: #{_upcase(target_name, packet_name, item_name)} #{comparison_to_eval}"
922
+ value_str = "with value == #{value}"
923
+ if eval(string)
924
+ Logger.info "#{check_str} success #{value_str}"
925
+ else
926
+ message = "#{check_str} failed #{value_str}"
927
+ if $cmd_tlm_disconnect
928
+ Logger.error message
929
+ else
930
+ raise CheckError, message
931
+ end
932
+ end
933
+ end
934
+
935
+ #######################################
936
+ # Methods accessing tlm_viewer
937
+ #######################################
938
+
939
+ def display(display_name, x_pos = nil, y_pos = nil)
940
+ run_tlm_viewer("display", display_name) do |tlm_viewer|
941
+ tlm_viewer.display(display_name, x_pos, y_pos)
942
+ end
943
+ end
944
+
945
+ def clear(display_name)
946
+ run_tlm_viewer("clear", display_name) do |tlm_viewer|
947
+ tlm_viewer.clear(display_name)
948
+ end
949
+ end
950
+
951
+ def clear_all(target = nil)
952
+ run_tlm_viewer("clear_all") do |tlm_viewer|
953
+ tlm_viewer.clear_all(target)
954
+ end
955
+ end
956
+
957
+ def run_tlm_viewer(action, display_name = '')
958
+ tlm_viewer = JsonDRbObject.new System.connect_hosts['TLMVIEWER_API'], System.ports['TLMVIEWER_API']
959
+ begin
960
+ yield tlm_viewer
961
+ tlm_viewer.disconnect
962
+ rescue DRb::DRbConnError
963
+ # No Listening Tlm Viewer - So Start One
964
+ start_tlm_viewer
965
+ max_retries = 60
966
+ retry_count = 0
967
+ begin
968
+ yield tlm_viewer
969
+ tlm_viewer.disconnect
970
+ rescue DRb::DRbConnError
971
+ retry_count += 1
972
+ if retry_count < max_retries
973
+ canceled = cosmos_script_sleep(1)
974
+ retry unless canceled
975
+ end
976
+ raise "Unable to Successfully Start Listening Telemetry Viewer: Could not #{action} #{display_name}"
977
+ rescue Errno::ENOENT
978
+ raise "Display Screen File: #{display_name}.txt does not exist"
979
+ end
980
+ rescue Errno::ENOENT
981
+ raise "Display Screen File: #{display_name}.txt does not exist"
982
+ end
983
+ end
984
+
985
+ def start_tlm_viewer
986
+ system_file = File.basename(System.initial_filename)
987
+ mac_app = File.join(Cosmos::USERPATH, 'tools', 'mac', 'TlmViewer.app')
988
+
989
+ if Kernel.is_mac? && File.exist?(mac_app)
990
+ Cosmos.run_process("open '#{mac_app}' --args --system #{system_file}")
991
+ else
992
+ cmd = 'ruby'
993
+ cmd << 'w' if Kernel.is_windows? # Windows uses rubyw to avoid creating a DOS shell
994
+ Cosmos.run_process("#{cmd} '#{File.join(Cosmos::USERPATH, 'tools', 'TlmViewer')}' --system #{system_file}")
995
+ end
996
+ cosmos_script_sleep(1)
997
+ end
998
+
999
+ end
1000
+ end