cosmos 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +48 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +5 -0
  5. data/Guardfile +27 -0
  6. data/LICENSE.txt +879 -0
  7. data/Manifest.txt +1112 -0
  8. data/README.md +42 -0
  9. data/Rakefile +214 -0
  10. data/autohotkey/config/data/attitude.bin +0 -0
  11. data/autohotkey/config/data/diamond.STL +58 -0
  12. data/autohotkey/config/data/groundoff.gif +0 -0
  13. data/autohotkey/config/data/groundon.gif +0 -0
  14. data/autohotkey/config/data/position.bin +0 -0
  15. data/autohotkey/config/data/satellite.gif +0 -0
  16. data/autohotkey/config/data/tada.wav +0 -0
  17. data/autohotkey/config/system/system.txt +34 -0
  18. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
  19. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  20. data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  21. data/autohotkey/config/targets/COSMOS/target.txt +5 -0
  22. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -0
  23. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -0
  24. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -0
  25. data/autohotkey/config/targets/INST/doc/README.txt +1 -0
  26. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -0
  27. data/autohotkey/config/targets/INST/lib/sim_inst.rb +294 -0
  28. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -0
  29. data/autohotkey/config/targets/INST/screens/array.txt +7 -0
  30. data/autohotkey/config/targets/INST/screens/block.txt +8 -0
  31. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -0
  32. data/autohotkey/config/targets/INST/screens/graphs.txt +14 -0
  33. data/autohotkey/config/targets/INST/screens/ground.txt +25 -0
  34. data/autohotkey/config/targets/INST/screens/health_status.txt +33 -0
  35. data/autohotkey/config/targets/INST/screens/hs.txt +49 -0
  36. data/autohotkey/config/targets/INST/screens/image.txt +21 -0
  37. data/autohotkey/config/targets/INST/screens/latest.txt +23 -0
  38. data/autohotkey/config/targets/INST/screens/mech.txt +25 -0
  39. data/autohotkey/config/targets/INST/screens/other.txt +25 -0
  40. data/autohotkey/config/targets/INST/screens/params.txt +25 -0
  41. data/autohotkey/config/targets/INST/screens/tabs.txt +68 -0
  42. data/autohotkey/config/targets/INST/target.txt +27 -0
  43. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
  44. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -0
  45. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  46. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -0
  47. data/autohotkey/config/tools/cmd_sender/cmd_sender.txt +1 -0
  48. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -0
  49. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -0
  50. data/autohotkey/config/tools/handbook_creator/default_toc.xsl +59 -0
  51. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -0
  52. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  53. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  54. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  55. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -0
  56. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  57. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  58. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  59. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  60. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  61. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  62. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  63. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  64. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -0
  65. data/autohotkey/config/tools/launcher/launcher.txt +38 -0
  66. data/autohotkey/config/tools/limits_monitor/README.txt +1 -0
  67. data/autohotkey/config/tools/opengl_builder/error.txt +1 -0
  68. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -0
  69. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -0
  70. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -0
  71. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -0
  72. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -0
  73. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -0
  74. data/autohotkey/config/tools/test_runner/test_runner3.txt +7 -0
  75. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -0
  76. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +14 -0
  77. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -0
  78. data/autohotkey/config/tools/tlm_grapher/README.txt +1 -0
  79. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -0
  80. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -0
  81. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -0
  82. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -0
  83. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -0
  84. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -0
  85. data/autohotkey/lib/example_background_task.rb +42 -0
  86. data/autohotkey/lib/user_version.rb +3 -0
  87. data/autohotkey/outputs/handbooks/assets/css/bootstrap-theme.css +397 -0
  88. data/autohotkey/outputs/handbooks/assets/css/bootstrap-theme.min.css +7 -0
  89. data/autohotkey/outputs/handbooks/assets/css/bootstrap.css +7118 -0
  90. data/autohotkey/outputs/handbooks/assets/css/bootstrap.min.css +7 -0
  91. data/autohotkey/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  92. data/autohotkey/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  93. data/autohotkey/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  94. data/autohotkey/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  95. data/autohotkey/outputs/handbooks/assets/js/bootstrap.js +2006 -0
  96. data/autohotkey/outputs/handbooks/assets/js/bootstrap.min.js +7 -0
  97. data/autohotkey/outputs/logs/bigtlm.bin +0 -0
  98. data/autohotkey/outputs/logs/cmd.bin +0 -0
  99. data/autohotkey/outputs/logs/tlm.bin +0 -0
  100. data/autohotkey/outputs/saved_config/README.txt +1 -0
  101. data/autohotkey/outputs/tables/README.txt +1 -0
  102. data/autohotkey/outputs/tmp/README.txt +1 -0
  103. data/autohotkey/procedures/clear_util.rb +7 -0
  104. data/autohotkey/procedures/collect.rb +18 -0
  105. data/autohotkey/procedures/collect_util.rb +14 -0
  106. data/autohotkey/procedures/example_test.rb +67 -0
  107. data/autohotkey/procedures/example_test2.rb +74 -0
  108. data/autohotkey/procedures/script_test.rb +17 -0
  109. data/autohotkey/procedures/syntax_error.rb +18 -0
  110. data/autohotkey/tools/CmdExtractorAHK +16 -0
  111. data/autohotkey/tools/CmdSender +14 -0
  112. data/autohotkey/tools/CmdSenderAHK +18 -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 +20 -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/Replay.bat +59 -0
  127. data/autohotkey/tools/ReplayAHK +17 -0
  128. data/autohotkey/tools/ScriptRunner +14 -0
  129. data/autohotkey/tools/ScriptRunnerAHK +20 -0
  130. data/autohotkey/tools/ScriptRunnerAHK2 +17 -0
  131. data/autohotkey/tools/TableManager +14 -0
  132. data/autohotkey/tools/TableManagerAHK +30 -0
  133. data/autohotkey/tools/TestRunner +15 -0
  134. data/autohotkey/tools/TestRunnerAHK +17 -0
  135. data/autohotkey/tools/TestRunnerAHK2 +17 -0
  136. data/autohotkey/tools/TestRunnerAHK3 +17 -0
  137. data/autohotkey/tools/TestRunnerAHK4 +17 -0
  138. data/autohotkey/tools/TlmExtractor +15 -0
  139. data/autohotkey/tools/TlmExtractorAHK +19 -0
  140. data/autohotkey/tools/TlmExtractorAHK2 +16 -0
  141. data/autohotkey/tools/TlmExtractorAHK3 +16 -0
  142. data/autohotkey/tools/TlmGrapher +14 -0
  143. data/autohotkey/tools/TlmGrapherAHK +19 -0
  144. data/autohotkey/tools/TlmGrapherAHK2 +23 -0
  145. data/autohotkey/tools/TlmGrapherAHK3 +17 -0
  146. data/autohotkey/tools/TlmGrapherAHK4 +17 -0
  147. data/autohotkey/tools/TlmViewer +14 -0
  148. data/autohotkey/tools/TlmViewerAHK +28 -0
  149. data/autohotkey/tools/TlmViewerAHK2 +18 -0
  150. data/autohotkey/tools/TlmViewerAHK3 +18 -0
  151. data/autohotkey/tools/TlmViewerAHK4 +18 -0
  152. data/autohotkey/tools/TlmViewerAHK5 +18 -0
  153. data/autohotkey/tools/autohotkey.rb +37 -0
  154. data/autohotkey/tools/cmd_extractor.ahk +27 -0
  155. data/autohotkey/tools/cmd_sender.ahk +162 -0
  156. data/autohotkey/tools/cmd_tlm_server.ahk +89 -0
  157. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -0
  158. data/autohotkey/tools/data_viewer.ahk +135 -0
  159. data/autohotkey/tools/handbook_creator.ahk +23 -0
  160. data/autohotkey/tools/launcher.ahk +41 -0
  161. data/autohotkey/tools/limits_monitor.ahk +70 -0
  162. data/autohotkey/tools/open_gl_builder.ahk +134 -0
  163. data/autohotkey/tools/packet_viewer.ahk +143 -0
  164. data/autohotkey/tools/packet_viewer2.ahk +9 -0
  165. data/autohotkey/tools/replay.ahk +98 -0
  166. data/autohotkey/tools/script_runner.ahk +589 -0
  167. data/autohotkey/tools/script_runner2.ahk +31 -0
  168. data/autohotkey/tools/table_manager.ahk +220 -0
  169. data/autohotkey/tools/test_runner.ahk +259 -0
  170. data/autohotkey/tools/test_runner2.ahk +52 -0
  171. data/autohotkey/tools/test_runner3.ahk +13 -0
  172. data/autohotkey/tools/tlm_extractor.ahk +272 -0
  173. data/autohotkey/tools/tlm_grapher.ahk +642 -0
  174. data/autohotkey/tools/tlm_grapher2.ahk +115 -0
  175. data/autohotkey/tools/tlm_grapher3.ahk +24 -0
  176. data/autohotkey/tools/tlm_viewer.ahk +133 -0
  177. data/autohotkey/tools/tlm_viewer2.ahk +49 -0
  178. data/autohotkey/tools/tlm_viewer4.ahk +4 -0
  179. data/autohotkey/tools/tlm_viewer5.ahk +20 -0
  180. data/autohotkey/userpath.txt +1 -0
  181. data/bin/cosmos +96 -0
  182. data/bin/cstol_converter +1166 -0
  183. data/bin/exchndl20.dll +0 -0
  184. data/bin/exchndl21.dll +0 -0
  185. data/bin/mgwhelp.dll +0 -0
  186. data/bin/rubysloc +85 -0
  187. data/cosmos.gemspec +98 -0
  188. data/data/COSMOS_64x64.bmp +0 -0
  189. data/data/COSMOS_64x64.ico +0 -0
  190. data/data/COSMOS_64x64.png +0 -0
  191. data/data/CheckBoxCheck.gif +0 -0
  192. data/data/CheckBoxEmpty.gif +0 -0
  193. data/data/Earthmap1024x512.gif +0 -0
  194. data/data/about.txt +4 -0
  195. data/data/add_database.png +0 -0
  196. data/data/add_plot.png +0 -0
  197. data/data/add_tab.png +0 -0
  198. data/data/blank.png +0 -0
  199. data/data/bug.png +0 -0
  200. data/data/checkmark.png +0 -0
  201. data/data/close.png +0 -0
  202. data/data/cmd_extractor.png +0 -0
  203. data/data/cmd_sender.png +0 -0
  204. data/data/copy.png +0 -0
  205. data/data/cosmos.xcf +0 -0
  206. data/data/cosmos_word.gif +0 -0
  207. data/data/crc.txt +305 -0
  208. data/data/cts.png +0 -0
  209. data/data/cut.png +0 -0
  210. data/data/data_viewer.png +0 -0
  211. data/data/delete_database.png +0 -0
  212. data/data/delete_plot.png +0 -0
  213. data/data/delete_tab.png +0 -0
  214. data/data/diamond.STL +58 -0
  215. data/data/disconnected.png +0 -0
  216. data/data/edit.png +0 -0
  217. data/data/edit_database.png +0 -0
  218. data/data/edit_plot.png +0 -0
  219. data/data/edit_tab.png +0 -0
  220. data/data/end-26.png +0 -0
  221. data/data/fast_forward-26.png +0 -0
  222. data/data/file.png +0 -0
  223. data/data/handbook_creator.png +0 -0
  224. data/data/help.png +0 -0
  225. data/data/html-32.png +0 -0
  226. data/data/launcher.png +0 -0
  227. data/data/legal.gif +0 -0
  228. data/data/legal.txt +9 -0
  229. data/data/limits_monitor.png +0 -0
  230. data/data/moonmap1k.gif +0 -0
  231. data/data/multi.png +0 -0
  232. data/data/open.png +0 -0
  233. data/data/open_in_browser-32.png +0 -0
  234. data/data/opengl_builder.png +0 -0
  235. data/data/packet_viewer.png +0 -0
  236. data/data/pdf-32.png +0 -0
  237. data/data/play-26.png +0 -0
  238. data/data/redo.png +0 -0
  239. data/data/replay.png +0 -0
  240. data/data/reverse-play-26.png +0 -0
  241. data/data/rewind-26.png +0 -0
  242. data/data/running.png +0 -0
  243. data/data/save.png +0 -0
  244. data/data/save_as.png +0 -0
  245. data/data/screenshot.png +0 -0
  246. data/data/script_runner.png +0 -0
  247. data/data/search-14.png +0 -0
  248. data/data/search.png +0 -0
  249. data/data/send_file.png +0 -0
  250. data/data/skip_to_start-26.png +0 -0
  251. data/data/spinner.gif +0 -0
  252. data/data/splash.gif +0 -0
  253. data/data/stop-26.png +0 -0
  254. data/data/table_manager.png +0 -0
  255. data/data/test_runner.png +0 -0
  256. data/data/tlm_extractor.png +0 -0
  257. data/data/tlm_grapher.png +0 -0
  258. data/data/tlm_viewer.png +0 -0
  259. data/data/undo.png +0 -0
  260. data/demo/Gemfile +5 -0
  261. data/demo/Launcher +15 -0
  262. data/demo/Launcher.bat +59 -0
  263. data/demo/Rakefile +61 -0
  264. data/demo/config/data/attitude.bin +0 -0
  265. data/demo/config/data/crc.txt +206 -0
  266. data/demo/config/data/diamond.STL +58 -0
  267. data/demo/config/data/groundoff.gif +0 -0
  268. data/demo/config/data/groundon.gif +0 -0
  269. data/demo/config/data/hselectoff.gif +0 -0
  270. data/demo/config/data/hselecton.gif +0 -0
  271. data/demo/config/data/hswitchoff.gif +0 -0
  272. data/demo/config/data/hswitchon.gif +0 -0
  273. data/demo/config/data/meta_init.txt +4 -0
  274. data/demo/config/data/position.bin +0 -0
  275. data/demo/config/data/poweroff.gif +0 -0
  276. data/demo/config/data/poweron.gif +0 -0
  277. data/demo/config/data/satellite.gif +0 -0
  278. data/demo/config/data/tada.wav +0 -0
  279. data/demo/config/data/vswitchoff.gif +0 -0
  280. data/demo/config/data/vswitchon.gif +0 -0
  281. data/demo/config/system/system.txt +34 -0
  282. data/demo/config/system/system2.txt +33 -0
  283. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
  284. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  285. data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  286. data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -0
  287. data/demo/config/targets/COSMOS/screens/version.txt +19 -0
  288. data/demo/config/targets/COSMOS/target.txt +11 -0
  289. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -0
  290. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -0
  291. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -0
  292. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -0
  293. data/demo/config/targets/EXAMPLE/target.txt +7 -0
  294. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -0
  295. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -0
  296. data/demo/config/targets/INST/cmd_tlm_server.txt +5 -0
  297. data/demo/config/targets/INST/doc/README.txt +1 -0
  298. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -0
  299. data/demo/config/targets/INST/lib/sim_inst.rb +294 -0
  300. data/demo/config/targets/INST/screens/adcs.txt +46 -0
  301. data/demo/config/targets/INST/screens/array.txt +15 -0
  302. data/demo/config/targets/INST/screens/block.txt +8 -0
  303. data/demo/config/targets/INST/screens/commanding.txt +30 -0
  304. data/demo/config/targets/INST/screens/graphs.txt +14 -0
  305. data/demo/config/targets/INST/screens/ground.txt +25 -0
  306. data/demo/config/targets/INST/screens/hs.txt +44 -0
  307. data/demo/config/targets/INST/screens/latest.txt +23 -0
  308. data/demo/config/targets/INST/screens/other.txt +29 -0
  309. data/demo/config/targets/INST/screens/tabs.txt +70 -0
  310. data/demo/config/targets/INST/target.txt +33 -0
  311. data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -0
  312. data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -0
  313. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  314. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -0
  315. data/demo/config/targets/SYSTEM/screens/status.txt +12 -0
  316. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +12 -0
  317. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -0
  318. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -0
  319. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +48 -0
  320. data/demo/config/targets/TEMPLATED/target.txt +6 -0
  321. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -0
  322. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -0
  323. data/demo/config/tools/data_viewer/data_viewer.txt +11 -0
  324. data/demo/config/tools/handbook_creator/default_toc.xsl +59 -0
  325. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -0
  326. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  327. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  328. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  329. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -0
  330. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  331. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  332. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  333. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  334. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  335. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  336. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  337. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  338. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -0
  339. data/demo/config/tools/launcher/launcher.txt +45 -0
  340. data/demo/config/tools/launcher/launcher2.txt +45 -0
  341. data/demo/config/tools/limits_monitor/README.txt +1 -0
  342. data/demo/config/tools/opengl_builder/README.txt +1 -0
  343. data/demo/config/tools/script_runner/script_runner.txt +3 -0
  344. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -0
  345. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -0
  346. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -0
  347. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -0
  348. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -0
  349. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -0
  350. data/demo/config/tools/test_runner/test_runner.txt +17 -0
  351. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -0
  352. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -0
  353. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -0
  354. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -0
  355. data/demo/config/tools/tlm_grapher/README.txt +1 -0
  356. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -0
  357. data/demo/lib/example_background_task.rb +52 -0
  358. data/demo/lib/example_target.rb +108 -0
  359. data/demo/lib/scpi_target.rb +74 -0
  360. data/demo/lib/user_version.rb +3 -0
  361. data/demo/outputs/handbooks/assets/css/bootstrap-theme.css +397 -0
  362. data/demo/outputs/handbooks/assets/css/bootstrap-theme.min.css +7 -0
  363. data/demo/outputs/handbooks/assets/css/bootstrap.css +7118 -0
  364. data/demo/outputs/handbooks/assets/css/bootstrap.min.css +7 -0
  365. data/demo/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  366. data/demo/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  367. data/demo/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  368. data/demo/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  369. data/demo/outputs/handbooks/assets/img/ball_logo.bmp +0 -0
  370. data/demo/outputs/handbooks/assets/img/ball_logo.gif +0 -0
  371. data/demo/outputs/handbooks/assets/img/ball_logo.jpg +0 -0
  372. data/demo/outputs/handbooks/assets/js/bootstrap.js +2006 -0
  373. data/demo/outputs/handbooks/assets/js/bootstrap.min.js +7 -0
  374. data/demo/outputs/handbooks/assets/js/html5shiv.js +8 -0
  375. data/demo/outputs/handbooks/assets/js/jquery-1.10.2.min.js +6 -0
  376. data/demo/outputs/handbooks/assets/js/respond.min.js +6 -0
  377. data/demo/outputs/logs/README.txt +1 -0
  378. data/demo/outputs/saved_config/README.txt +1 -0
  379. data/demo/outputs/tables/README.txt +1 -0
  380. data/demo/outputs/tmp/README.txt +1 -0
  381. data/demo/procedures/checks.rb +11 -0
  382. data/demo/procedures/clear_util.rb +7 -0
  383. data/demo/procedures/collect.rb +18 -0
  384. data/demo/procedures/collect_util.rb +14 -0
  385. data/demo/procedures/cosmos_api_test.rb +293 -0
  386. data/demo/procedures/disconnect.rb +29 -0
  387. data/demo/procedures/example_test.rb +182 -0
  388. data/demo/procedures/plot_test.rb +8 -0
  389. data/demo/procedures/run_example_test.rb +3 -0
  390. data/demo/procedures/test.rb +51 -0
  391. data/demo/tools/CmdExtractor +15 -0
  392. data/demo/tools/CmdExtractor.bat +59 -0
  393. data/demo/tools/CmdSender +15 -0
  394. data/demo/tools/CmdSender.bat +59 -0
  395. data/demo/tools/CmdTlmServer +15 -0
  396. data/demo/tools/CmdTlmServer.bat +59 -0
  397. data/demo/tools/DataViewer +15 -0
  398. data/demo/tools/DataViewer.bat +59 -0
  399. data/demo/tools/ExampleTarget +15 -0
  400. data/demo/tools/ExampleTarget.bat +59 -0
  401. data/demo/tools/HandbookCreator +15 -0
  402. data/demo/tools/HandbookCreator.bat +61 -0
  403. data/demo/tools/Launcher +15 -0
  404. data/demo/tools/Launcher.bat +59 -0
  405. data/demo/tools/LimitsMonitor +15 -0
  406. data/demo/tools/LimitsMonitor.bat +59 -0
  407. data/demo/tools/OpenGLBuilder +15 -0
  408. data/demo/tools/OpenGLBuilder.bat +59 -0
  409. data/demo/tools/PacketViewer +15 -0
  410. data/demo/tools/PacketViewer.bat +59 -0
  411. data/demo/tools/Replay +15 -0
  412. data/demo/tools/Replay.bat +59 -0
  413. data/demo/tools/ScpiTarget +15 -0
  414. data/demo/tools/ScpiTarget.bat +59 -0
  415. data/demo/tools/ScriptRunner +15 -0
  416. data/demo/tools/ScriptRunner.bat +59 -0
  417. data/demo/tools/TableManager +15 -0
  418. data/demo/tools/TableManager.bat +59 -0
  419. data/demo/tools/TestRunner +15 -0
  420. data/demo/tools/TestRunner.bat +59 -0
  421. data/demo/tools/TlmExtractor +15 -0
  422. data/demo/tools/TlmExtractor.bat +59 -0
  423. data/demo/tools/TlmGrapher +15 -0
  424. data/demo/tools/TlmGrapher.bat +59 -0
  425. data/demo/tools/TlmViewer +15 -0
  426. data/demo/tools/TlmViewer.bat +59 -0
  427. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  428. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
  429. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
  430. data/demo/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  431. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  432. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
  433. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
  434. data/demo/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  435. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  436. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
  437. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
  438. data/demo/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  439. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  440. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
  441. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
  442. data/demo/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  443. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  444. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
  445. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
  446. data/demo/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  447. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  448. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
  449. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
  450. data/demo/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  451. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  452. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
  453. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
  454. data/demo/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  455. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  456. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
  457. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
  458. data/demo/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  459. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  460. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
  461. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
  462. data/demo/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  463. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -0
  464. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
  465. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
  466. data/demo/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  467. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  468. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
  469. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
  470. data/demo/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  471. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  472. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
  473. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
  474. data/demo/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  475. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  476. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
  477. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
  478. data/demo/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  479. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  480. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
  481. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
  482. data/demo/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  483. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  484. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
  485. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
  486. data/demo/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  487. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  488. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
  489. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
  490. data/demo/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  491. data/demo/userpath.txt +1 -0
  492. data/ext/cosmos/ext/array/array.c +111 -0
  493. data/ext/cosmos/ext/array/extconf.rb +13 -0
  494. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -0
  495. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -0
  496. data/ext/cosmos/ext/config_parser/config_parser.c +237 -0
  497. data/ext/cosmos/ext/config_parser/extconf.rb +13 -0
  498. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -0
  499. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -0
  500. data/ext/cosmos/ext/crc/crc.c +341 -0
  501. data/ext/cosmos/ext/crc/extconf.rb +13 -0
  502. data/ext/cosmos/ext/line_graph/extconf.rb +13 -0
  503. data/ext/cosmos/ext/line_graph/line_graph.c +501 -0
  504. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +13 -0
  505. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -0
  506. data/ext/cosmos/ext/packet/extconf.rb +13 -0
  507. data/ext/cosmos/ext/packet/packet.c +339 -0
  508. data/ext/cosmos/ext/platform/extconf.rb +13 -0
  509. data/ext/cosmos/ext/platform/platform.c +82 -0
  510. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -0
  511. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -0
  512. data/ext/cosmos/ext/string/extconf.rb +13 -0
  513. data/ext/cosmos/ext/string/string.c +49 -0
  514. data/ext/cosmos/ext/structure/structure.c +894 -0
  515. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -0
  516. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -0
  517. data/ext/cosmos/ext/telemetry/extconf.rb +13 -0
  518. data/ext/cosmos/ext/telemetry/telemetry.c +306 -0
  519. data/install/Gemfile +5 -0
  520. data/install/Launcher +14 -0
  521. data/install/Launcher.bat +59 -0
  522. data/install/Rakefile +61 -0
  523. data/install/config/data/README.txt +1 -0
  524. data/install/config/data/crc.txt +133 -0
  525. data/install/config/system/system.txt +29 -0
  526. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
  527. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  528. data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  529. data/install/config/targets/COSMOS/screens/limits_change.txt +20 -0
  530. data/install/config/targets/COSMOS/screens/version.txt +19 -0
  531. data/install/config/targets/COSMOS/target.txt +9 -0
  532. data/install/config/targets/SYSTEM/README.txt +1 -0
  533. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -0
  534. data/install/config/tools/data_viewer/data_viewer.txt +4 -0
  535. data/install/config/tools/handbook_creator/default_toc.xsl +59 -0
  536. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -0
  537. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -0
  538. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -0
  539. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -0
  540. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -0
  541. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -0
  542. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -0
  543. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -0
  544. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -0
  545. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -0
  546. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -0
  547. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -0
  548. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -0
  549. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -0
  550. data/install/config/tools/launcher/launcher.txt +39 -0
  551. data/install/config/tools/limits_monitor/README.txt +1 -0
  552. data/install/config/tools/opengl_builder/README.txt +1 -0
  553. data/install/config/tools/script_runner/script_runner.txt +3 -0
  554. data/install/config/tools/table_manager/README.txt +1 -0
  555. data/install/config/tools/test_runner/test_runner.txt +8 -0
  556. data/install/config/tools/tlm_extractor/README.txt +1 -0
  557. data/install/config/tools/tlm_grapher/README.txt +1 -0
  558. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -0
  559. data/install/lib/user_version.rb +3 -0
  560. data/install/outputs/handbooks/assets/css/bootstrap-theme.css +397 -0
  561. data/install/outputs/handbooks/assets/css/bootstrap-theme.min.css +7 -0
  562. data/install/outputs/handbooks/assets/css/bootstrap.css +7118 -0
  563. data/install/outputs/handbooks/assets/css/bootstrap.min.css +7 -0
  564. data/install/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  565. data/install/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  566. data/install/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  567. data/install/outputs/handbooks/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  568. data/install/outputs/handbooks/assets/img/ball_logo.bmp +0 -0
  569. data/install/outputs/handbooks/assets/img/ball_logo.gif +0 -0
  570. data/install/outputs/handbooks/assets/img/ball_logo.jpg +0 -0
  571. data/install/outputs/handbooks/assets/js/bootstrap.js +2006 -0
  572. data/install/outputs/handbooks/assets/js/bootstrap.min.js +7 -0
  573. data/install/outputs/handbooks/assets/js/html5shiv.js +8 -0
  574. data/install/outputs/handbooks/assets/js/jquery-1.10.2.min.js +6 -0
  575. data/install/outputs/handbooks/assets/js/respond.min.js +6 -0
  576. data/install/outputs/logs/README.txt +1 -0
  577. data/install/outputs/saved_config/README.txt +1 -0
  578. data/install/outputs/tables/README.txt +1 -0
  579. data/install/outputs/tmp/README.txt +1 -0
  580. data/install/procedures/README.txt +1 -0
  581. data/install/tools/CmdExtractor +15 -0
  582. data/install/tools/CmdExtractor.bat +59 -0
  583. data/install/tools/CmdSender +15 -0
  584. data/install/tools/CmdSender.bat +59 -0
  585. data/install/tools/CmdTlmServer +15 -0
  586. data/install/tools/CmdTlmServer.bat +59 -0
  587. data/install/tools/DataViewer +15 -0
  588. data/install/tools/DataViewer.bat +59 -0
  589. data/install/tools/HandbookCreator +15 -0
  590. data/install/tools/HandbookCreator.bat +61 -0
  591. data/install/tools/Launcher +15 -0
  592. data/install/tools/Launcher.bat +59 -0
  593. data/install/tools/LimitsMonitor +15 -0
  594. data/install/tools/LimitsMonitor.bat +59 -0
  595. data/install/tools/OpenGLBuilder +15 -0
  596. data/install/tools/OpenGLBuilder.bat +59 -0
  597. data/install/tools/PacketViewer +15 -0
  598. data/install/tools/PacketViewer.bat +59 -0
  599. data/install/tools/Replay +15 -0
  600. data/install/tools/Replay.bat +59 -0
  601. data/install/tools/ScriptRunner +15 -0
  602. data/install/tools/ScriptRunner.bat +59 -0
  603. data/install/tools/TableManager +15 -0
  604. data/install/tools/TableManager.bat +59 -0
  605. data/install/tools/TestRunner +15 -0
  606. data/install/tools/TestRunner.bat +59 -0
  607. data/install/tools/TlmExtractor +15 -0
  608. data/install/tools/TlmExtractor.bat +59 -0
  609. data/install/tools/TlmGrapher +15 -0
  610. data/install/tools/TlmGrapher.bat +59 -0
  611. data/install/tools/TlmViewer +15 -0
  612. data/install/tools/TlmViewer.bat +59 -0
  613. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -0
  614. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -0
  615. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -0
  616. data/install/tools/mac/CmdExtractor.app/Contents/Resources/appIcon.icns +0 -0
  617. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -0
  618. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -0
  619. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -0
  620. data/install/tools/mac/CmdSender.app/Contents/Resources/appIcon.icns +0 -0
  621. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -0
  622. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -0
  623. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -0
  624. data/install/tools/mac/CmdTlmServer.app/Contents/Resources/appIcon.icns +0 -0
  625. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -0
  626. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -0
  627. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -0
  628. data/install/tools/mac/DataViewer.app/Contents/Resources/appIcon.icns +0 -0
  629. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -0
  630. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -0
  631. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -0
  632. data/install/tools/mac/HandbookCreator.app/Contents/Resources/appIcon.icns +0 -0
  633. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -0
  634. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -0
  635. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -0
  636. data/install/tools/mac/Launcher.app/Contents/Resources/appIcon.icns +0 -0
  637. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -0
  638. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -0
  639. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -0
  640. data/install/tools/mac/LimitsMonitor.app/Contents/Resources/appIcon.icns +0 -0
  641. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -0
  642. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -0
  643. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -0
  644. data/install/tools/mac/OpenGLBuilder.app/Contents/Resources/appIcon.icns +0 -0
  645. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -0
  646. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -0
  647. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -0
  648. data/install/tools/mac/PacketViewer.app/Contents/Resources/appIcon.icns +0 -0
  649. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -0
  650. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -0
  651. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -0
  652. data/install/tools/mac/Replay.app/Contents/Resources/appIcon.icns +0 -0
  653. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -0
  654. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -0
  655. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -0
  656. data/install/tools/mac/ScriptRunner.app/Contents/Resources/appIcon.icns +0 -0
  657. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -0
  658. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -0
  659. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -0
  660. data/install/tools/mac/TableManager.app/Contents/Resources/appIcon.icns +0 -0
  661. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -0
  662. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -0
  663. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -0
  664. data/install/tools/mac/TestRunner.app/Contents/Resources/appIcon.icns +0 -0
  665. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -0
  666. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -0
  667. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -0
  668. data/install/tools/mac/TlmExtractor.app/Contents/Resources/appIcon.icns +0 -0
  669. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -0
  670. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -0
  671. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -0
  672. data/install/tools/mac/TlmGrapher.app/Contents/Resources/appIcon.icns +0 -0
  673. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -0
  674. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -0
  675. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -0
  676. data/install/tools/mac/TlmViewer.app/Contents/Resources/appIcon.icns +0 -0
  677. data/install/userpath.txt +1 -0
  678. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -0
  679. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -0
  680. data/lib/cosmos/config/config_parser.rb +324 -0
  681. data/lib/cosmos/conversions/conversion.rb +47 -0
  682. data/lib/cosmos/conversions/generic_conversion.rb +55 -0
  683. data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -0
  684. data/lib/cosmos/conversions/polynomial_conversion.rb +57 -0
  685. data/lib/cosmos/conversions/processor_conversion.rb +46 -0
  686. data/lib/cosmos/conversions/received_count_conversion.rb +33 -0
  687. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -0
  688. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -0
  689. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -0
  690. data/lib/cosmos/conversions/unix_time_conversion.rb +50 -0
  691. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -0
  692. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -0
  693. data/lib/cosmos/conversions.rb +13 -0
  694. data/lib/cosmos/core_ext/array.rb +354 -0
  695. data/lib/cosmos/core_ext/class.rb +51 -0
  696. data/lib/cosmos/core_ext/cosmos_io.rb +29 -0
  697. data/lib/cosmos/core_ext/exception.rb +52 -0
  698. data/lib/cosmos/core_ext/file.rb +75 -0
  699. data/lib/cosmos/core_ext/hash.rb +28 -0
  700. data/lib/cosmos/core_ext/io.rb +75 -0
  701. data/lib/cosmos/core_ext/kernel.rb +38 -0
  702. data/lib/cosmos/core_ext/math.rb +119 -0
  703. data/lib/cosmos/core_ext/matrix.rb +146 -0
  704. data/lib/cosmos/core_ext/objectspace.rb +29 -0
  705. data/lib/cosmos/core_ext/range.rb +22 -0
  706. data/lib/cosmos/core_ext/socket.rb +32 -0
  707. data/lib/cosmos/core_ext/string.rb +310 -0
  708. data/lib/cosmos/core_ext/stringio.rb +24 -0
  709. data/lib/cosmos/core_ext/time.rb +446 -0
  710. data/lib/cosmos/core_ext.rb +18 -0
  711. data/lib/cosmos/ext/.keep +0 -0
  712. data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -0
  713. data/lib/cosmos/gui/choosers/file_chooser.rb +68 -0
  714. data/lib/cosmos/gui/choosers/float_chooser.rb +82 -0
  715. data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -0
  716. data/lib/cosmos/gui/choosers/string_chooser.rb +53 -0
  717. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -0
  718. data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -0
  719. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -0
  720. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -0
  721. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -0
  722. data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -0
  723. data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -0
  724. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -0
  725. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -0
  726. data/lib/cosmos/gui/dialogs/legal_dialog.rb +168 -0
  727. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -0
  728. data/lib/cosmos/gui/dialogs/progress_dialog.rb +262 -0
  729. data/lib/cosmos/gui/dialogs/pry_dialog.rb +161 -0
  730. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -0
  731. data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -0
  732. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -0
  733. data/lib/cosmos/gui/dialogs/splash.rb +113 -0
  734. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -0
  735. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -0
  736. data/lib/cosmos/gui/line_graph/line_graph.rb +456 -0
  737. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -0
  738. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -0
  739. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -0
  740. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -0
  741. data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -0
  742. data/lib/cosmos/gui/line_graph/lines.rb +290 -0
  743. data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -0
  744. data/lib/cosmos/gui/opengl/earth_model.rb +22 -0
  745. data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -0
  746. data/lib/cosmos/gui/opengl/gl_light.rb +39 -0
  747. data/lib/cosmos/gui/opengl/gl_material.rb +29 -0
  748. data/lib/cosmos/gui/opengl/gl_scene.rb +72 -0
  749. data/lib/cosmos/gui/opengl/gl_shape.rb +146 -0
  750. data/lib/cosmos/gui/opengl/gl_viewer.rb +712 -0
  751. data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -0
  752. data/lib/cosmos/gui/opengl/moon_model.rb +22 -0
  753. data/lib/cosmos/gui/opengl/opengl.rb +8 -0
  754. data/lib/cosmos/gui/opengl/stl_reader.rb +211 -0
  755. data/lib/cosmos/gui/opengl/stl_shape.rb +124 -0
  756. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -0
  757. data/lib/cosmos/gui/qt.rb +786 -0
  758. data/lib/cosmos/gui/qt_tool.rb +373 -0
  759. data/lib/cosmos/gui/text/completion.rb +381 -0
  760. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -0
  761. data/lib/cosmos/gui/text/completion_text_edit.rb +179 -0
  762. data/lib/cosmos/gui/text/ruby_editor.rb +395 -0
  763. data/lib/cosmos/gui/utilities/screenshot.rb +25 -0
  764. data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -0
  765. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -0
  766. data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -0
  767. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -0
  768. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +149 -0
  769. data/lib/cosmos/interfaces/interface.rb +213 -0
  770. data/lib/cosmos/interfaces/linc_interface.rb +360 -0
  771. data/lib/cosmos/interfaces/serial_interface.rb +76 -0
  772. data/lib/cosmos/interfaces/simulated_target_interface.rb +128 -0
  773. data/lib/cosmos/interfaces/stream_interface.rb +156 -0
  774. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -0
  775. data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -0
  776. data/lib/cosmos/interfaces/udp_interface.rb +173 -0
  777. data/lib/cosmos/interfaces.rb +11 -0
  778. data/lib/cosmos/io/buffered_file.rb +11 -0
  779. data/lib/cosmos/io/cosmos_snmp.rb +50 -0
  780. data/lib/cosmos/io/io_multiplexer.rb +89 -0
  781. data/lib/cosmos/io/json_drb.rb +320 -0
  782. data/lib/cosmos/io/json_drb_object.rb +137 -0
  783. data/lib/cosmos/io/json_rpc.rb +365 -0
  784. data/lib/cosmos/io/posix_serial_driver.rb +145 -0
  785. data/lib/cosmos/io/raw_logger.rb +174 -0
  786. data/lib/cosmos/io/raw_logger_pair.rb +71 -0
  787. data/lib/cosmos/io/serial_driver.rb +85 -0
  788. data/lib/cosmos/io/stderr.rb +36 -0
  789. data/lib/cosmos/io/stdout.rb +36 -0
  790. data/lib/cosmos/io/tcpip_server.rb +532 -0
  791. data/lib/cosmos/io/udp_sockets.rb +152 -0
  792. data/lib/cosmos/io/win32_serial_driver.rb +147 -0
  793. data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -0
  794. data/lib/cosmos/packet_logs/packet_log_reader.rb +439 -0
  795. data/lib/cosmos/packet_logs/packet_log_writer.rb +309 -0
  796. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -0
  797. data/lib/cosmos/packet_logs.rb +6 -0
  798. data/lib/cosmos/packets/binary_accessor.rb +921 -0
  799. data/lib/cosmos/packets/commands.rb +291 -0
  800. data/lib/cosmos/packets/limits.rb +263 -0
  801. data/lib/cosmos/packets/limits_response.rb +38 -0
  802. data/lib/cosmos/packets/packet.rb +699 -0
  803. data/lib/cosmos/packets/packet_config.rb +1034 -0
  804. data/lib/cosmos/packets/packet_item.rb +317 -0
  805. data/lib/cosmos/packets/packet_item_limits.rb +128 -0
  806. data/lib/cosmos/packets/structure.rb +386 -0
  807. data/lib/cosmos/packets/structure_item.rb +233 -0
  808. data/lib/cosmos/packets/telemetry.rb +317 -0
  809. data/lib/cosmos/processors/new_packet_log_processor.rb +34 -0
  810. data/lib/cosmos/processors/processor.rb +71 -0
  811. data/lib/cosmos/processors/statistics_processor.rb +65 -0
  812. data/lib/cosmos/processors/watermark_processor.rb +44 -0
  813. data/lib/cosmos/processors.rb +6 -0
  814. data/lib/cosmos/script/extract.rb +115 -0
  815. data/lib/cosmos/script/script.rb +1493 -0
  816. data/lib/cosmos/script.rb +9 -0
  817. data/lib/cosmos/streams/burst_stream_protocol.rb +25 -0
  818. data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -0
  819. data/lib/cosmos/streams/length_stream_protocol.rb +140 -0
  820. data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -0
  821. data/lib/cosmos/streams/serial_stream.rb +143 -0
  822. data/lib/cosmos/streams/stream.rb +57 -0
  823. data/lib/cosmos/streams/stream_protocol.rb +369 -0
  824. data/lib/cosmos/streams/tcpip_client_stream.rb +77 -0
  825. data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -0
  826. data/lib/cosmos/streams/template_stream_protocol.rb +140 -0
  827. data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -0
  828. data/lib/cosmos/system/system.rb +558 -0
  829. data/lib/cosmos/system/target.rb +178 -0
  830. data/lib/cosmos/system.rb +4 -0
  831. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +253 -0
  832. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -0
  833. data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -0
  834. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -0
  835. data/lib/cosmos/tools/cmd_tlm_server/api.rb +940 -0
  836. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -0
  837. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +63 -0
  838. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +496 -0
  839. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -0
  840. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1008 -0
  841. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -0
  842. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -0
  843. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +221 -0
  844. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -0
  845. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -0
  846. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -0
  847. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -0
  848. data/lib/cosmos/tools/data_viewer/data_viewer.rb +600 -0
  849. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -0
  850. data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -0
  851. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -0
  852. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -0
  853. data/lib/cosmos/tools/launcher/launcher.rb +184 -0
  854. data/lib/cosmos/tools/launcher/launcher_config.rb +167 -0
  855. data/lib/cosmos/tools/launcher/launcher_multitool.rb +41 -0
  856. data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -0
  857. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +768 -0
  858. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -0
  859. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -0
  860. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -0
  861. data/lib/cosmos/tools/replay/replay.rb +488 -0
  862. data/lib/cosmos/tools/replay/replay_server.rb +91 -0
  863. data/lib/cosmos/tools/script_runner/script_audit.rb +139 -0
  864. data/lib/cosmos/tools/script_runner/script_runner.rb +914 -0
  865. data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -0
  866. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1859 -0
  867. data/lib/cosmos/tools/table_manager/table.rb +70 -0
  868. data/lib/cosmos/tools/table_manager/table_config.rb +764 -0
  869. data/lib/cosmos/tools/table_manager/table_item.rb +74 -0
  870. data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -0
  871. data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -0
  872. data/lib/cosmos/tools/test_runner/results_writer.rb +283 -0
  873. data/lib/cosmos/tools/test_runner/test.rb +480 -0
  874. data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -0
  875. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -0
  876. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -0
  877. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -0
  878. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -0
  879. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -0
  880. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -0
  881. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -0
  882. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -0
  883. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -0
  884. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -0
  885. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -0
  886. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -0
  887. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -0
  888. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -0
  889. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +409 -0
  890. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -0
  891. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -0
  892. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +320 -0
  893. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -0
  894. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -0
  895. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -0
  896. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -0
  897. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -0
  898. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -0
  899. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -0
  900. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -0
  901. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -0
  902. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -0
  903. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -0
  904. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -0
  905. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -0
  906. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -0
  907. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +95 -0
  908. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -0
  909. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +66 -0
  910. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -0
  911. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -0
  912. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -0
  913. data/lib/cosmos/tools/tlm_viewer/screen.rb +458 -0
  914. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +544 -0
  915. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -0
  916. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -0
  917. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -0
  918. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -0
  919. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -0
  920. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -0
  921. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -0
  922. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -0
  923. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -0
  924. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -0
  925. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -0
  926. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -0
  927. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -0
  928. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -0
  929. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -0
  930. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -0
  931. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -0
  932. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -0
  933. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -0
  934. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -0
  935. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -0
  936. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -0
  937. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -0
  938. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -0
  939. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -0
  940. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -0
  941. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -0
  942. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -0
  943. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -0
  944. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -0
  945. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -0
  946. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -0
  947. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -0
  948. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -0
  949. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -0
  950. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -0
  951. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -0
  952. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -0
  953. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -0
  954. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -0
  955. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -0
  956. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -0
  957. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -0
  958. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -0
  959. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -0
  960. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -0
  961. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -0
  962. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -0
  963. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -0
  964. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -0
  965. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -0
  966. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -0
  967. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -0
  968. data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -0
  969. data/lib/cosmos/top_level.rb +596 -0
  970. data/lib/cosmos/utilities/crc.rb +166 -0
  971. data/lib/cosmos/utilities/csv.rb +83 -0
  972. data/lib/cosmos/utilities/logger.rb +137 -0
  973. data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -0
  974. data/lib/cosmos/utilities/message_log.rb +74 -0
  975. data/lib/cosmos/utilities/quaternion.rb +258 -0
  976. data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -0
  977. data/lib/cosmos/utilities/simulated_target.rb +99 -0
  978. data/lib/cosmos/utilities.rb +10 -0
  979. data/lib/cosmos/version.rb +12 -0
  980. data/lib/cosmos/win32/excel.rb +66 -0
  981. data/lib/cosmos/win32/win32.rb +387 -0
  982. data/lib/cosmos/win32/win32_main.rb +311 -0
  983. data/lib/cosmos.rb +63 -0
  984. data/roodi.yml +24 -0
  985. data/run_gui_tests.bat +32 -0
  986. data/spec/ccsds/ccsds_packet_spec.rb +67 -0
  987. data/spec/ccsds/ccsds_parser_spec.rb +148 -0
  988. data/spec/config/config_parser_spec.rb +322 -0
  989. data/spec/conversions/conversion_spec.rb +31 -0
  990. data/spec/conversions/generic_conversion_spec.rb +45 -0
  991. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -0
  992. data/spec/conversions/polynomial_conversion_spec.rb +40 -0
  993. data/spec/conversions/processor_conversion_spec.rb +45 -0
  994. data/spec/conversions/received_count_conversion_spec.rb +43 -0
  995. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -0
  996. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -0
  997. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -0
  998. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -0
  999. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -0
  1000. data/spec/core_ext/array_spec.rb +186 -0
  1001. data/spec/core_ext/class_spec.rb +36 -0
  1002. data/spec/core_ext/cosmos_io_spec.rb +77 -0
  1003. data/spec/core_ext/exception_spec.rb +91 -0
  1004. data/spec/core_ext/file_spec.rb +72 -0
  1005. data/spec/core_ext/hash_spec.rb +24 -0
  1006. data/spec/core_ext/io_spec.rb +46 -0
  1007. data/spec/core_ext/kernel_spec.rb +54 -0
  1008. data/spec/core_ext/math_spec.rb +116 -0
  1009. data/spec/core_ext/matrix_spec.rb +66 -0
  1010. data/spec/core_ext/objectspace_spec.rb +29 -0
  1011. data/spec/core_ext/range_spec.rb +21 -0
  1012. data/spec/core_ext/socket_spec.rb +32 -0
  1013. data/spec/core_ext/string_spec.rb +223 -0
  1014. data/spec/core_ext/stringio_spec.rb +21 -0
  1015. data/spec/core_ext/time_spec.rb +151 -0
  1016. data/spec/gui/line_graph/line_clip_spec.rb +322 -0
  1017. data/spec/install/config/system/system.txt +33 -0
  1018. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -0
  1019. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -0
  1020. data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -0
  1021. data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -0
  1022. data/spec/install/config/targets/COSMOS/screens/version.txt +19 -0
  1023. data/spec/install/config/targets/COSMOS/target.txt +5 -0
  1024. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -0
  1025. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -0
  1026. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -0
  1027. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -0
  1028. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -0
  1029. data/spec/install/config/targets/INST/lib/sim_inst.rb +294 -0
  1030. data/spec/install/config/targets/INST/target.txt +10 -0
  1031. data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -0
  1032. data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -0
  1033. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -0
  1034. data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +1 -0
  1035. data/spec/install/lib/README.txt +1 -0
  1036. data/spec/install/userpath.txt +1 -0
  1037. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -0
  1038. data/spec/interfaces/interface_spec.rb +128 -0
  1039. data/spec/interfaces/linc_interface_spec.rb +199 -0
  1040. data/spec/interfaces/serial_interface_spec.rb +56 -0
  1041. data/spec/interfaces/simulated_target_interface_spec.rb +128 -0
  1042. data/spec/interfaces/stream_interface_spec.rb +157 -0
  1043. data/spec/interfaces/tcpip_client_interface_spec.rb +54 -0
  1044. data/spec/interfaces/tcpip_server_interface_spec.rb +151 -0
  1045. data/spec/interfaces/udp_interface_spec.rb +175 -0
  1046. data/spec/io/buffered_file_spec.rb +113 -0
  1047. data/spec/io/io_multiplexer_spec.rb +94 -0
  1048. data/spec/io/json_drb_object_spec.rb +93 -0
  1049. data/spec/io/json_drb_spec.rb +293 -0
  1050. data/spec/io/json_rpc_spec.rb +264 -0
  1051. data/spec/io/raw_logger_pair_spec.rb +76 -0
  1052. data/spec/io/raw_logger_spec.rb +133 -0
  1053. data/spec/io/serial_driver_spec.rb +61 -0
  1054. data/spec/io/stderr_spec.rb +32 -0
  1055. data/spec/io/stdout_spec.rb +32 -0
  1056. data/spec/io/tcpip_server_spec.rb +322 -0
  1057. data/spec/io/udp_sockets_spec.rb +94 -0
  1058. data/spec/io/win32_serial_driver_spec.rb +88 -0
  1059. data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -0
  1060. data/spec/packet_logs/packet_log_reader_spec.rb +408 -0
  1061. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -0
  1062. data/spec/packet_logs/packet_log_writer_spec.rb +209 -0
  1063. data/spec/packets/binary_accessor_spec.rb +2073 -0
  1064. data/spec/packets/commands_spec.rb +369 -0
  1065. data/spec/packets/limits_response_spec.rb +25 -0
  1066. data/spec/packets/limits_spec.rb +326 -0
  1067. data/spec/packets/packet_config_spec.rb +1620 -0
  1068. data/spec/packets/packet_item_limits_spec.rb +161 -0
  1069. data/spec/packets/packet_item_spec.rb +386 -0
  1070. data/spec/packets/packet_spec.rb +949 -0
  1071. data/spec/packets/structure_item_spec.rb +195 -0
  1072. data/spec/packets/structure_spec.rb +419 -0
  1073. data/spec/packets/telemetry_spec.rb +535 -0
  1074. data/spec/processors/new_packet_log_processor_spec.rb +39 -0
  1075. data/spec/processors/processor_spec.rb +55 -0
  1076. data/spec/processors/statistics_processor_spec.rb +60 -0
  1077. data/spec/processors/watermark_processor_spec.rb +51 -0
  1078. data/spec/script/script_spec.rb +650 -0
  1079. data/spec/spec_helper.rb +138 -0
  1080. data/spec/streams/burst_stream_protocol_spec.rb +32 -0
  1081. data/spec/streams/fixed_stream_protocol_spec.rb +110 -0
  1082. data/spec/streams/length_stream_protocol_spec.rb +297 -0
  1083. data/spec/streams/preidentified_stream_protocol_spec.rb +118 -0
  1084. data/spec/streams/serial_stream_spec.rb +105 -0
  1085. data/spec/streams/stream_protocol_spec.rb +332 -0
  1086. data/spec/streams/stream_spec.rb +29 -0
  1087. data/spec/streams/tcpip_client_stream_spec.rb +54 -0
  1088. data/spec/streams/tcpip_socket_stream_spec.rb +146 -0
  1089. data/spec/streams/template_stream_protocol_spec.rb +151 -0
  1090. data/spec/streams/terminated_stream_protocol_spec.rb +123 -0
  1091. data/spec/system/system_spec.rb +645 -0
  1092. data/spec/system/target_spec.rb +248 -0
  1093. data/spec/tools/cmd_tlm_server/api_spec.rb +1090 -0
  1094. data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -0
  1095. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +82 -0
  1096. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +406 -0
  1097. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +418 -0
  1098. data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -0
  1099. data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -0
  1100. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +317 -0
  1101. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +228 -0
  1102. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -0
  1103. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +104 -0
  1104. data/spec/tools/cmd_tlm_server/routers_spec.rb +196 -0
  1105. data/spec/top_level/top_level_spec.rb +320 -0
  1106. data/spec/utilities/crc_spec.rb +45 -0
  1107. data/spec/utilities/csv_spec.rb +97 -0
  1108. data/spec/utilities/logger_spec.rb +102 -0
  1109. data/spec/utilities/message_log_spec.rb +89 -0
  1110. data/spec/utilities/quaternion_spec.rb +107 -0
  1111. data/spec/utilities/ruby_lex_utils_spec.rb +86 -0
  1112. data/tasks/manifest.rake +22 -0
  1113. data/tasks/spec.rake +23 -0
  1114. metadata +1566 -0
@@ -0,0 +1,1090 @@
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
14
+ require 'cosmos/tools/cmd_tlm_server/api'
15
+
16
+ module Cosmos
17
+
18
+ describe Api do
19
+
20
+ before(:all) do
21
+ cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
22
+ FileUtils.mkdir_p(File.dirname(cts))
23
+ File.open(cts,'w') do |file|
24
+ file.puts 'INTERFACE INT interface.rb'
25
+ file.puts 'ROUTER ROUTE interface.rb'
26
+ end
27
+ end
28
+
29
+ before(:each) do
30
+ allow_any_instance_of(Interface).to receive(:connected?)
31
+ allow_any_instance_of(Interface).to receive(:connect)
32
+ allow_any_instance_of(Interface).to receive(:disconnect)
33
+ allow_any_instance_of(Interface).to receive(:write_raw)
34
+ allow_any_instance_of(Interface).to receive(:read)
35
+ @api = CmdTlmServer.new
36
+ allow(@api.commanding).to receive(:send_command_to_target)
37
+ end
38
+
39
+ after(:each) do
40
+ begin
41
+ @api.stop
42
+ rescue
43
+ # Ignore all errors when trying to stop
44
+ end
45
+ end
46
+
47
+ after(:all) do
48
+ clean_config()
49
+ FileUtils.rm_rf File.join(Cosmos::USERPATH,'config','tools')
50
+ end
51
+
52
+ def test_cmd_unknown(method)
53
+ expect { @api.send(method,"BLAH COLLECT with TYPE NORMAL") }.to raise_error(/does not exist/)
54
+ expect { @api.send(method,"INST UNKNOWN with TYPE NORMAL") }.to raise_error(/does not exist/)
55
+ expect { @api.send(method,"INST COLLECT with BLAH NORMAL") }.to raise_error(/does not exist/)
56
+ expect { @api.send(method,"BLAH","COLLECT","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
57
+ expect { @api.send(method,"INST","UNKNOWN","TYPE"=>"NORMAL") }.to raise_error(/does not exist/)
58
+ expect { @api.send(method,"INST","COLLECT","BLAH"=>"NORMAL") }.to raise_error(/does not exist/)
59
+ end
60
+
61
+ describe "cmd" do
62
+ it "should complain about unknown targets, commands, and parameters" do
63
+ test_cmd_unknown(:cmd)
64
+ end
65
+
66
+ it "should process a string" do
67
+ target_name, cmd_name, params = @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 5")
68
+ target_name.should eql 'INST'
69
+ cmd_name.should eql 'COLLECT'
70
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
71
+ end
72
+
73
+ it "should complain if parameters are not separated by commas" do
74
+ expect { @api.cmd("INST COLLECT with TYPE NORMAL DURATION 5") }.to raise_error(/Missing comma/)
75
+ end
76
+
77
+ it "should complain if parameters don't have values" do
78
+ expect { @api.cmd("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
79
+ end
80
+
81
+ it "should process parameters" do
82
+ target_name, cmd_name, params = @api.cmd("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
83
+ target_name.should eql 'INST'
84
+ cmd_name.should eql 'COLLECT'
85
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
86
+ end
87
+
88
+ it "should process commands without parameters" do
89
+ target_name, cmd_name, params = @api.cmd("INST","ABORT")
90
+ target_name.should eql 'INST'
91
+ cmd_name.should eql 'ABORT'
92
+ params.should be {}
93
+ end
94
+
95
+ it "should complain about too many parameters" do
96
+ expect { @api.cmd("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
97
+ end
98
+
99
+ it "should warn about required parameters" do
100
+ expect { @api.cmd("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
101
+ end
102
+
103
+ it "should warn about out of range parameters" do
104
+ expect { @api.cmd("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
105
+ end
106
+
107
+ it "should warn about hazardous parameters" do
108
+ expect { @api.cmd("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
109
+ end
110
+
111
+ it "should warn about hazardous commands" do
112
+ expect { @api.cmd("INST CLEAR") }.to raise_error(/Hazardous/)
113
+ end
114
+ end
115
+
116
+ describe "cmd_no_range_check" do
117
+ it "should complain about unknown targets, commands, and parameters" do
118
+ test_cmd_unknown(:cmd_no_range_check)
119
+ end
120
+
121
+ it "should process a string" do
122
+ target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 5")
123
+ target_name.should eql 'INST'
124
+ cmd_no_range_check_name.should eql 'COLLECT'
125
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
126
+ end
127
+
128
+ it "should process parameters" do
129
+ target_name, cmd_no_range_check_name, params = @api.cmd_no_range_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
130
+ target_name.should eql 'INST'
131
+ cmd_no_range_check_name.should eql 'COLLECT'
132
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
133
+ end
134
+
135
+ it "should warn about required parameters" do
136
+ expect { @api.cmd_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
137
+ end
138
+
139
+ it "should not warn about out of range parameters" do
140
+ expect { @api.cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
141
+ end
142
+
143
+ it "should warn about hazardous parameters" do
144
+ expect { @api.cmd_no_range_check("INST COLLECT with TYPE SPECIAL") }.to raise_error(/Hazardous/)
145
+ end
146
+
147
+ it "should warn about hazardous commands" do
148
+ expect { @api.cmd_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
149
+ end
150
+ end
151
+
152
+ describe "cmd_no_hazardous_check" do
153
+ it "should complain about unknown targets, commands, and parameters" do
154
+ test_cmd_unknown(:cmd_no_hazardous_check)
155
+ end
156
+
157
+ it "should process a string" do
158
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 5")
159
+ target_name.should eql 'INST'
160
+ cmd_no_hazardous_check_name.should eql 'COLLECT'
161
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
162
+ end
163
+
164
+ it "should process parameters" do
165
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_no_hazardous_check("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
166
+ target_name.should eql 'INST'
167
+ cmd_no_hazardous_check_name.should eql 'COLLECT'
168
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
169
+ end
170
+
171
+ it "should process parameters that are strings" do
172
+ target_name, cmd_name, params = @api.cmd_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
173
+ target_name.should eql 'INST'
174
+ cmd_name.should eql 'ASCIICMD'
175
+ params.should include('STRING'=>'ARM LASER')
176
+ end
177
+
178
+ it "should warn about required parameters" do
179
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
180
+ end
181
+
182
+ it "should warn about out of range parameters" do
183
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to raise_error(/not in valid range/)
184
+ end
185
+
186
+ it "should not warn about hazardous parameters" do
187
+ expect { @api.cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
188
+ end
189
+
190
+ it "should not warn about hazardous commands" do
191
+ expect { @api.cmd_no_hazardous_check("INST CLEAR") }.to_not raise_error
192
+ end
193
+ end
194
+
195
+ describe "cmd_no_checks" do
196
+ it "should complain about unknown targets, commands, and parameters" do
197
+ test_cmd_unknown(:cmd_no_checks)
198
+ end
199
+
200
+ it "should process a string" do
201
+ target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 5")
202
+ target_name.should eql 'INST'
203
+ cmd_no_checks_name.should eql 'COLLECT'
204
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
205
+ end
206
+
207
+ it "should process parameters" do
208
+ target_name, cmd_no_checks_name, params = @api.cmd_no_checks("INST","COLLECT","TYPE"=>"NORMAL","DURATION"=>5)
209
+ target_name.should eql 'INST'
210
+ cmd_no_checks_name.should eql 'COLLECT'
211
+ params.should include('TYPE'=>'NORMAL', 'DURATION'=>5)
212
+ end
213
+
214
+ it "should warn about required parameters" do
215
+ expect { @api.cmd_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
216
+ end
217
+
218
+ it "should not warn about out of range parameters" do
219
+ expect { @api.cmd_no_checks("INST COLLECT with TYPE NORMAL, DURATION 1000") }.to_not raise_error
220
+ end
221
+
222
+ it "should not warn about hazardous parameters" do
223
+ expect { @api.cmd_no_checks("INST COLLECT with TYPE SPECIAL") }.to_not raise_error
224
+ end
225
+
226
+ it "should not warn about hazardous commands" do
227
+ expect { @api.cmd_no_checks("INST CLEAR") }.to_not raise_error
228
+ end
229
+ end
230
+
231
+ describe "cmd_raw" do
232
+ it "should complain about unknown targets, commands, and parameters" do
233
+ test_cmd_unknown(:cmd_raw)
234
+ end
235
+
236
+ it "should process a string" do
237
+ target_name, cmd_name, params = @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 5")
238
+ target_name.should eql 'INST'
239
+ cmd_name.should eql 'COLLECT'
240
+ params.should include('TYPE'=>0, 'DURATION'=>5)
241
+ end
242
+
243
+ it "should complain if parameters are not separated by commas" do
244
+ expect { @api.cmd_raw("INST COLLECT with TYPE 0 DURATION 5") }.to raise_error(/Missing comma/)
245
+ end
246
+
247
+ it "should complain if parameters don't have values" do
248
+ expect { @api.cmd_raw("INST COLLECT with TYPE") }.to raise_error(/Missing value/)
249
+ end
250
+
251
+ it "should process parameters" do
252
+ target_name, cmd_name, params = @api.cmd_raw("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
253
+ target_name.should eql 'INST'
254
+ cmd_name.should eql 'COLLECT'
255
+ params.should include('TYPE'=>0, 'DURATION'=>5)
256
+ end
257
+
258
+ it "should process commands without parameters" do
259
+ target_name, cmd_name, params = @api.cmd_raw("INST","ABORT")
260
+ target_name.should eql 'INST'
261
+ cmd_name.should eql 'ABORT'
262
+ params.should be {}
263
+ end
264
+
265
+ it "should complain about too many parameters" do
266
+ expect { @api.cmd_raw("INST","COLLECT","TYPE","DURATION") }.to raise_error(/Invalid number of arguments/)
267
+ end
268
+
269
+ it "should warn about required parameters" do
270
+ expect { @api.cmd_raw("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
271
+ end
272
+
273
+ it "should warn about out of range parameters" do
274
+ expect { @api.cmd_raw("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
275
+ end
276
+
277
+ it "should warn about hazardous parameters" do
278
+ expect { @api.cmd_raw("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
279
+ end
280
+
281
+ it "should warn about hazardous commands" do
282
+ expect { @api.cmd_raw("INST CLEAR") }.to raise_error(/Hazardous/)
283
+ end
284
+ end
285
+
286
+ describe "cmd_no_range_check" do
287
+ it "should complain about unknown targets, commands, and parameters" do
288
+ test_cmd_unknown(:cmd_raw_no_range_check)
289
+ end
290
+
291
+ it "should process a string" do
292
+ target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 5")
293
+ target_name.should eql 'INST'
294
+ cmd_no_range_check_name.should eql 'COLLECT'
295
+ params.should include('TYPE'=>0, 'DURATION'=>5)
296
+ end
297
+
298
+ it "should process parameters" do
299
+ target_name, cmd_no_range_check_name, params = @api.cmd_raw_no_range_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
300
+ target_name.should eql 'INST'
301
+ cmd_no_range_check_name.should eql 'COLLECT'
302
+ params.should include('TYPE'=>0, 'DURATION'=>5)
303
+ end
304
+
305
+ it "should warn about required parameters" do
306
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
307
+ end
308
+
309
+ it "should not warn about out of range parameters" do
310
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
311
+ end
312
+
313
+ it "should warn about hazardous parameters" do
314
+ expect { @api.cmd_raw_no_range_check("INST COLLECT with TYPE 1") }.to raise_error(/Hazardous/)
315
+ end
316
+
317
+ it "should warn about hazardous commands" do
318
+ expect { @api.cmd_raw_no_range_check("INST CLEAR") }.to raise_error(/Hazardous/)
319
+ end
320
+ end
321
+
322
+ describe "cmd_raw_no_hazardous_check" do
323
+ it "should complain about unknown targets, commands, and parameters" do
324
+ test_cmd_unknown(:cmd_raw_no_hazardous_check)
325
+ end
326
+
327
+ it "should process a string" do
328
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 5")
329
+ target_name.should eql 'INST'
330
+ cmd_no_hazardous_check_name.should eql 'COLLECT'
331
+ params.should include('TYPE'=>0, 'DURATION'=>5)
332
+ end
333
+
334
+ it "should process parameters" do
335
+ target_name, cmd_no_hazardous_check_name, params = @api.cmd_raw_no_hazardous_check("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
336
+ target_name.should eql 'INST'
337
+ cmd_no_hazardous_check_name.should eql 'COLLECT'
338
+ params.should include('TYPE'=>0, 'DURATION'=>5)
339
+ end
340
+
341
+ it "should process parameters that are strings" do
342
+ target_name, cmd_name, params = @api.cmd_raw_no_hazardous_check("INST ASCIICMD with STRING 'ARM LASER'")
343
+ target_name.should eql 'INST'
344
+ cmd_name.should eql 'ASCIICMD'
345
+ params.should include('STRING'=>'ARM LASER')
346
+ end
347
+
348
+ it "should warn about required parameters" do
349
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
350
+ end
351
+
352
+ it "should warn about out of range parameters" do
353
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 0, DURATION 1000") }.to raise_error(/not in valid range/)
354
+ end
355
+
356
+ it "should not warn about hazardous parameters" do
357
+ expect { @api.cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1") }.to_not raise_error
358
+ end
359
+
360
+ it "should not warn about hazardous commands" do
361
+ expect { @api.cmd_raw_no_hazardous_check("INST CLEAR") }.to_not raise_error
362
+ end
363
+ end
364
+
365
+ describe "cmd_raw_no_checks" do
366
+ it "should complain about unknown targets, commands, and parameters" do
367
+ test_cmd_unknown(:cmd_raw_no_checks)
368
+ end
369
+
370
+ it "should process a string" do
371
+ target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 5")
372
+ target_name.should eql 'INST'
373
+ cmd_no_checks_name.should eql 'COLLECT'
374
+ params.should include('TYPE'=>0, 'DURATION'=>5)
375
+ end
376
+
377
+ it "should process parameters" do
378
+ target_name, cmd_no_checks_name, params = @api.cmd_raw_no_checks("INST","COLLECT","TYPE"=>0,"DURATION"=>5)
379
+ target_name.should eql 'INST'
380
+ cmd_no_checks_name.should eql 'COLLECT'
381
+ params.should include('TYPE'=>0, 'DURATION'=>5)
382
+ end
383
+
384
+ it "should warn about required parameters" do
385
+ expect { @api.cmd_raw_no_checks("INST COLLECT with DURATION 5") }.to raise_error(/Required/)
386
+ end
387
+
388
+ it "should not warn about out of range parameters" do
389
+ expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 0, DURATION 1000") }.to_not raise_error
390
+ end
391
+
392
+ it "should not warn about hazardous parameters" do
393
+ expect { @api.cmd_raw_no_checks("INST COLLECT with TYPE 1") }.to_not raise_error
394
+ end
395
+
396
+ it "should not warn about hazardous commands" do
397
+ expect { @api.cmd_raw_no_checks("INST CLEAR") }.to_not raise_error
398
+ end
399
+ end
400
+
401
+ describe "get_cmd_list" do
402
+ it "should return command names sorted" do
403
+ result = @api.get_cmd_list("INST")
404
+ result.sort.should eql result
405
+ end
406
+
407
+ it "should complain with a unknown target" do
408
+ expect { @api.get_cmd_list("BLAH") }.to raise_error(/does not exist/)
409
+ end
410
+
411
+ it "should return command names and descriptions for a given target" do
412
+ result = @api.get_cmd_list("INST")
413
+ result[0][0].should eql "ABORT"
414
+ # The second parameter is the description ... only test one
415
+ result[0][1].should eql "Aborts a collect on the instrument"
416
+ result[1][0].should eql "ARYCMD"
417
+ result[2][0].should eql "ASCIICMD"
418
+ result[3][0].should eql "CLEAR"
419
+ result[4][0].should eql "COLLECT"
420
+ result[5][0].should eql "COSMOS_ERROR_HANDLE"
421
+ result[6][0].should eql "COSMOS_ERROR_IGNORE"
422
+ result[7][0].should eql "COSMOS_HANDSHAKE_DS"
423
+ result[8][0].should eql "COSMOS_HANDSHAKE_EN"
424
+ result[9][0].should eql "FLTCMD"
425
+ result[10][0].should eql "LINC_COMMAND"
426
+ result[11][0].should eql "SETPARAMS"
427
+ result[12][0].should eql "SLRPNLDEPLOY"
428
+ result[13][0].should eql "SLRPNLRESET"
429
+ end
430
+ end
431
+
432
+ describe "get_cmd_param_list" do
433
+ it "should return parameters for the command" do
434
+ result = @api.get_cmd_param_list("INST","COLLECT")
435
+ # Each element in the results array contains:
436
+ # name, default, states, description, full units, units, required
437
+ result.should include ['TYPE',0,{"NORMAL"=>0,"SPECIAL"=>1},'Collect type',nil,nil,true]
438
+ result.should include ['TEMP',0.0,nil,'Collect temperature','Celcius','C',false]
439
+ end
440
+
441
+ it "should return array parameters for the command" do
442
+ result = @api.get_cmd_param_list("INST","ARYCMD")
443
+ # Each element in the results array contains:
444
+ # name, default, states, description, full units, units, required
445
+ result.should include ['ARRAY',[],nil,'Array parameter',nil,nil,false]
446
+ end
447
+ end
448
+
449
+ describe "get_cmd_hazardous" do
450
+ it "should return whether the command with parameters is hazardous" do
451
+ @api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"NORMAL"}).should be_falsey
452
+ @api.get_cmd_hazardous("INST","COLLECT",{"TYPE"=>"SPECIAL"}).should be_truthy
453
+ end
454
+
455
+ it "should return whether the command is hazardous" do
456
+ @api.get_cmd_hazardous("INST","CLEAR").should be_truthy
457
+ end
458
+ end
459
+
460
+ def test_tlm_unknown(method)
461
+ expect { @api.send(method,"BLAH HEALTH_STATUS COLLECTS") }.to raise_error(/does not exist/)
462
+ expect { @api.send(method,"INST UNKNOWN COLLECTS") }.to raise_error(/does not exist/)
463
+ expect { @api.send(method,"INST HEALTH_STATUS BLAH") }.to raise_error(/does not exist/)
464
+ expect { @api.send(method,"BLAH","HEALTH_STATUS","COLLECTS") }.to raise_error(/does not exist/)
465
+ expect { @api.send(method,"INST","UNKNOWN","COLLECTS") }.to raise_error(/does not exist/)
466
+ expect { @api.send(method,"INST","HEALTH_STATUS","BLAH") }.to raise_error(/does not exist/)
467
+ end
468
+
469
+ describe "tlm" do
470
+ it "should complain about unknown targets, commands, and parameters" do
471
+ test_tlm_unknown(:tlm)
472
+ end
473
+
474
+ it "should process a string" do
475
+ value = @api.tlm("INST HEALTH_STATUS TEMP1")
476
+ value.should eql -100.0
477
+ end
478
+
479
+ it "should process parameters" do
480
+ value = @api.tlm("INST","HEALTH_STATUS","TEMP1")
481
+ end
482
+
483
+ it "should complain if too many parameters" do
484
+ expect { @api.tlm("INST","HEALTH_STATUS","TEMP1","TEMP2") }.to raise_error(/Invalid number of arguments/)
485
+ end
486
+ end
487
+
488
+ describe "tlm_raw" do
489
+ it "should complain about unknown targets, commands, and parameters" do
490
+ test_tlm_unknown(:tlm_raw)
491
+ end
492
+
493
+ it "should process a string" do
494
+ @api.tlm_raw("INST HEALTH_STATUS TEMP1").should eql 0
495
+ end
496
+
497
+ it "should return the value using LATEST" do
498
+ @api.tlm_raw("INST LATEST TEMP1").should eql 0
499
+ end
500
+
501
+ it "should process parameters" do
502
+ @api.tlm_raw("INST","HEALTH_STATUS","TEMP1").should eql 0
503
+ end
504
+ end
505
+
506
+ describe "tlm_formatted" do
507
+ it "should complain about unknown targets, commands, and parameters" do
508
+ test_tlm_unknown(:tlm_formatted)
509
+ end
510
+
511
+ it "should process a string" do
512
+ @api.tlm_formatted("INST HEALTH_STATUS TEMP1").should eql "-100.000"
513
+ end
514
+
515
+ it "should return the value using LATEST" do
516
+ @api.tlm_formatted("INST LATEST TEMP1").should eql "-100.000"
517
+ end
518
+
519
+ it "should process parameters" do
520
+ @api.tlm_formatted("INST","HEALTH_STATUS","TEMP1").should eql "-100.000"
521
+ end
522
+ end
523
+
524
+ describe "tlm_with_units" do
525
+ it "should complain about unknown targets, commands, and parameters" do
526
+ test_tlm_unknown(:tlm_with_units)
527
+ end
528
+
529
+ it "should process a string" do
530
+ @api.tlm_with_units("INST HEALTH_STATUS TEMP1").should eql "-100.000 C"
531
+ end
532
+
533
+ it "should return the value using LATEST" do
534
+ @api.tlm_with_units("INST LATEST TEMP1").should eql "-100.000 C"
535
+ end
536
+
537
+ it "should process parameters" do
538
+ @api.tlm_with_units("INST","HEALTH_STATUS","TEMP1").should eql "-100.000 C"
539
+ end
540
+ end
541
+
542
+ describe "tlm_variable" do
543
+ it "should complain about unknown targets, commands, and parameters" do
544
+ expect { @api.tlm_variable("BLAH HEALTH_STATUS COLLECTS",:RAW) }.to raise_error(/does not exist/)
545
+ expect { @api.tlm_variable("INST UNKNOWN COLLECTS",:RAW) }.to raise_error(/does not exist/)
546
+ expect { @api.tlm_variable("INST HEALTH_STATUS BLAH",:RAW) }.to raise_error(/does not exist/)
547
+ expect { @api.tlm_variable("BLAH","HEALTH_STATUS","COLLECTS",:RAW) }.to raise_error(/does not exist/)
548
+ expect { @api.tlm_variable("INST","UNKNOWN","COLLECTS",:RAW) }.to raise_error(/does not exist/)
549
+ expect { @api.tlm_variable("INST","HEALTH_STATUS","BLAH",:RAW) }.to raise_error(/does not exist/)
550
+ end
551
+
552
+ it "should process a string" do
553
+ @api.tlm_variable("INST HEALTH_STATUS TEMP1",:CONVERTED).should eql -100.0
554
+ @api.tlm_variable("INST HEALTH_STATUS TEMP1",:RAW).should eql 0
555
+ @api.tlm_variable("INST HEALTH_STATUS TEMP1",:FORMATTED).should eql "-100.000"
556
+ @api.tlm_variable("INST HEALTH_STATUS TEMP1",:WITH_UNITS).should eql "-100.000 C"
557
+ end
558
+
559
+ it "should return the value using LATEST" do
560
+ @api.tlm_variable("INST LATEST TEMP1",:CONVERTED).should eql -100.0
561
+ @api.tlm_variable("INST LATEST TEMP1",:RAW).should eql 0
562
+ @api.tlm_variable("INST LATEST TEMP1",:FORMATTED).should eql "-100.000"
563
+ @api.tlm_variable("INST LATEST TEMP1",:WITH_UNITS).should eql "-100.000 C"
564
+ end
565
+
566
+ it "should process parameters" do
567
+ @api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:CONVERTED).should eql -100.0
568
+ @api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:RAW).should eql 0
569
+ @api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:FORMATTED).should eql "-100.000"
570
+ @api.tlm_variable("INST","HEALTH_STATUS","TEMP1",:WITH_UNITS).should eql "-100.000 C"
571
+ end
572
+
573
+ it "should complain with too many parameters" do
574
+ expect { @api.tlm_variable("INST","HEALTH_STATUS","TEMP1","TEMP2",:CONVERTED) }.to raise_error(/Invalid number of arguments/)
575
+ end
576
+ end
577
+
578
+ describe "set_tlm" do
579
+ it "should complain about unknown targets, commands, and parameters" do
580
+ expect { @api.set_tlm("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
581
+ expect { @api.set_tlm("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
582
+ expect { @api.set_tlm("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
583
+ expect { @api.set_tlm("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
584
+ expect { @api.set_tlm("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
585
+ expect { @api.set_tlm("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
586
+ end
587
+
588
+ it "should process a string" do
589
+ @api.set_tlm("INST HEALTH_STATUS TEMP1 = 0.0")
590
+ @api.tlm("INST HEALTH_STATUS TEMP1").should be_within(0.00001).of(-0.05759)
591
+ end
592
+
593
+ it "should process parameters" do
594
+ @api.set_tlm("INST","HEALTH_STATUS","TEMP1", 0.0)
595
+ @api.tlm("INST HEALTH_STATUS TEMP1").should be_within(0.00001).of(-0.05759)
596
+ end
597
+
598
+ it "should complain with too many parameters" do
599
+ expect { @api.set_tlm("INST","HEALTH_STATUS","TEMP1","TEMP2",0.0) }.to raise_error(/Invalid number of arguments/)
600
+ end
601
+ end
602
+
603
+ describe "set_tlm_raw" do
604
+ it "should complain about unknown targets, commands, and parameters" do
605
+ expect { @api.set_tlm_raw("BLAH HEALTH_STATUS COLLECTS = 1") }.to raise_error(/does not exist/)
606
+ expect { @api.set_tlm_raw("INST UNKNOWN COLLECTS = 1") }.to raise_error(/does not exist/)
607
+ expect { @api.set_tlm_raw("INST HEALTH_STATUS BLAH = 1") }.to raise_error(/does not exist/)
608
+ expect { @api.set_tlm_raw("BLAH","HEALTH_STATUS","COLLECTS",1) }.to raise_error(/does not exist/)
609
+ expect { @api.set_tlm_raw("INST","UNKNOWN","COLLECTS",1) }.to raise_error(/does not exist/)
610
+ expect { @api.set_tlm_raw("INST","HEALTH_STATUS","BLAH",1) }.to raise_error(/does not exist/)
611
+ end
612
+
613
+ it "should process a string" do
614
+ @api.set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0.0")
615
+ @api.tlm("INST HEALTH_STATUS TEMP1").should eql -100.0
616
+ end
617
+
618
+ it "should process parameters" do
619
+ @api.set_tlm_raw("INST","HEALTH_STATUS","TEMP1", 0.0)
620
+ @api.tlm("INST HEALTH_STATUS TEMP1").should eql -100.0
621
+ end
622
+ end
623
+
624
+ describe "get_tlm_packet" do
625
+ it "should complain about non-existant targets" do
626
+ expect { @api.get_tlm_packet("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
627
+ end
628
+
629
+ it "should complain about non-existant packets" do
630
+ expect { @api.get_tlm_packet("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
631
+ end
632
+
633
+ it "should complain using LATEST" do
634
+ expect { @api.get_tlm_packet("INST","LATEST") }.to raise_error(RuntimeError, "Telemetry packet 'INST LATEST' does not exist")
635
+ end
636
+
637
+ it "should complain about non-existant value_types" do
638
+ expect { @api.get_tlm_packet("INST","HEALTH_STATUS",:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
639
+ end
640
+
641
+ it "should read all telemetry items with their limits states" do
642
+ vals = @api.get_tlm_packet("INST","HEALTH_STATUS")
643
+ vals[0][0].should eql "RECEIVED_TIMESECONDS"
644
+ vals[0][1].should eql 0.0
645
+ vals[0][2].should be_nil
646
+ vals[1][0].should eql "RECEIVED_TIMEFORMATTED"
647
+ vals[1][1].should eql "No Packet Received Time"
648
+ vals[1][2].should be_nil
649
+ vals[2][0].should eql "RECEIVED_COUNT"
650
+ vals[2][1].should eql 0
651
+ vals[2][2].should be_nil
652
+ # Spot check a few more
653
+ vals[22][0].should eql "TEMP1"
654
+ vals[22][1].should eql -100.0
655
+ vals[22][2].should eql :RED_LOW
656
+ vals[23][0].should eql "TEMP2"
657
+ vals[23][1].should eql -100.0
658
+ vals[23][2].should eql :RED_LOW
659
+ vals[24][0].should eql "TEMP3"
660
+ vals[24][1].should eql -100.0
661
+ vals[24][2].should eql :RED_LOW
662
+ vals[25][0].should eql "TEMP4"
663
+ vals[25][1].should eql -100.0
664
+ vals[25][2].should eql :RED_LOW
665
+ end
666
+ end
667
+
668
+ describe "get_tlm_values" do
669
+ it "should handle an empty request" do
670
+ @api.get_tlm_values([]).should eql [[], [], [], :DEFAULT]
671
+ end
672
+
673
+ it "should complain about non-existant targets" do
674
+ expect { @api.get_tlm_values([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
675
+ end
676
+
677
+ it "should complain about non-existant packets" do
678
+ expect { @api.get_tlm_values([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
679
+ end
680
+
681
+ it "should complain about non-existant items" do
682
+ expect { @api.get_tlm_values([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
683
+ end
684
+
685
+ it "should complain about non-existant value_types" do
686
+ expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],:MINE) }.to raise_error(ArgumentError, "Unknown value type on read: MINE")
687
+ end
688
+
689
+ it "should complain about bad arguments" do
690
+ expect { @api.get_tlm_values("INST",:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
691
+ expect { @api.get_tlm_values(["INST","HEALTH_STATUS","TEMP1"],:MINE) }.to raise_error(ArgumentError, /item_array must be nested array/)
692
+ expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],10) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
693
+ expect { @api.get_tlm_values([["INST","HEALTH_STATUS","TEMP1"]],[10]) }.to raise_error(ArgumentError, /value_types must be a single symbol or array of symbols/)
694
+ end
695
+
696
+ it "should read all the specified items" do
697
+ items = []
698
+ items << %w(INST HEALTH_STATUS TEMP1)
699
+ items << %w(INST HEALTH_STATUS TEMP2)
700
+ items << %w(INST HEALTH_STATUS TEMP3)
701
+ items << %w(INST HEALTH_STATUS TEMP4)
702
+ vals = @api.get_tlm_values(items)
703
+ vals[0][0].should eql -100.0
704
+ vals[0][1].should eql -100.0
705
+ vals[0][2].should eql -100.0
706
+ vals[0][3].should eql -100.0
707
+ vals[1][0].should eql :RED_LOW
708
+ vals[1][1].should eql :RED_LOW
709
+ vals[1][2].should eql :RED_LOW
710
+ vals[1][3].should eql :RED_LOW
711
+ vals[2][0].should eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
712
+ vals[2][1].should eql [-60.0, -55.0, 30.0, 35.0]
713
+ vals[2][2].should eql [-25.0, -10.0, 50.0, 55.0]
714
+ vals[2][3].should eql [-80.0, -70.0, 60.0, 80.0]
715
+ vals[3].should eql :DEFAULT
716
+ end
717
+
718
+ it "should read all the specified items with one conversion" do
719
+ items = []
720
+ items << %w(INST HEALTH_STATUS TEMP1)
721
+ items << %w(INST HEALTH_STATUS TEMP2)
722
+ items << %w(INST HEALTH_STATUS TEMP3)
723
+ items << %w(INST HEALTH_STATUS TEMP4)
724
+ vals = @api.get_tlm_values(items, :RAW)
725
+ vals[0][0].should eql 0
726
+ vals[0][1].should eql 0
727
+ vals[0][2].should eql 0
728
+ vals[0][3].should eql 0
729
+ vals[1][0].should eql :RED_LOW
730
+ vals[1][1].should eql :RED_LOW
731
+ vals[1][2].should eql :RED_LOW
732
+ vals[1][3].should eql :RED_LOW
733
+ vals[2][0].should eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
734
+ vals[2][1].should eql [-60.0, -55.0, 30.0, 35.0]
735
+ vals[2][2].should eql [-25.0, -10.0, 50.0, 55.0]
736
+ vals[2][3].should eql [-80.0, -70.0, 60.0, 80.0]
737
+ vals[3].should eql :DEFAULT
738
+ end
739
+
740
+ it "should read all the specified items with different conversions" do
741
+ items = []
742
+ items << %w(INST HEALTH_STATUS TEMP1)
743
+ items << %w(INST HEALTH_STATUS TEMP2)
744
+ items << %w(INST HEALTH_STATUS TEMP3)
745
+ items << %w(INST HEALTH_STATUS TEMP4)
746
+ vals = @api.get_tlm_values(items, [:RAW, :CONVERTED, :FORMATTED, :WITH_UNITS])
747
+ vals[0][0].should eql 0
748
+ vals[0][1].should eql -100.0
749
+ vals[0][2].should eql "-100.000"
750
+ vals[0][3].should eql "-100.000 C"
751
+ vals[1][0].should eql :RED_LOW
752
+ vals[1][1].should eql :RED_LOW
753
+ vals[1][2].should eql :RED_LOW
754
+ vals[1][3].should eql :RED_LOW
755
+ vals[2][0].should eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
756
+ vals[2][1].should eql [-60.0, -55.0, 30.0, 35.0]
757
+ vals[2][2].should eql [-25.0, -10.0, 50.0, 55.0]
758
+ vals[2][3].should eql [-80.0, -70.0, 60.0, 80.0]
759
+ vals[3].should eql :DEFAULT
760
+ end
761
+
762
+ it "should complain if items length != conversions length" do
763
+ items = []
764
+ items << %w(INST HEALTH_STATUS TEMP1)
765
+ items << %w(INST HEALTH_STATUS TEMP2)
766
+ items << %w(INST HEALTH_STATUS TEMP3)
767
+ items << %w(INST HEALTH_STATUS TEMP4)
768
+ expect { @api.get_tlm_values(items, [:RAW, :CONVERTED]) }.to raise_error(ArgumentError, "Passed 4 items but only 2 value types")
769
+ end
770
+ end
771
+
772
+ describe "get_tlm_list" do
773
+ it "should complain about non-existant targets" do
774
+ expect { @api.get_tlm_list("BLAH") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
775
+ end
776
+
777
+ it "should return the sorted packet names for a target" do
778
+ pkts = @api.get_tlm_list("INST")
779
+ pkts[0][0].should eql "ADCS"
780
+ pkts[1][0].should eql "ERROR"
781
+ pkts[2][0].should eql "HANDSHAKE"
782
+ pkts[3][0].should eql "HEALTH_STATUS"
783
+ pkts[4][0].should eql "IMAGE"
784
+ pkts[5][0].should eql "MECH"
785
+ pkts[6][0].should eql "PARAMS"
786
+ end
787
+ end
788
+
789
+ describe "get_tlm_item_list" do
790
+ it "should complain about non-existant targets" do
791
+ expect { @api.get_tlm_item_list("BLAH","HEALTH_STATUS") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
792
+ end
793
+
794
+ it "should complain about non-existant packets" do
795
+ expect { @api.get_tlm_item_list("INST","BLAH") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
796
+ end
797
+
798
+ it "should return all the items for a target/packet" do
799
+ items = @api.get_tlm_item_list("INST","HEALTH_STATUS")
800
+ items[0][0].should eql "RECEIVED_TIMESECONDS"
801
+ items[1][0].should eql "RECEIVED_TIMEFORMATTED"
802
+ items[2][0].should eql "RECEIVED_COUNT"
803
+ # Spot check a few more
804
+ items[22][0].should eql "TEMP1"
805
+ items[22][1].should be_nil
806
+ items[22][2].should eql "Temperature #1"
807
+ items[28][0].should eql "COLLECT_TYPE"
808
+ items[28][1].should include("NORMAL"=>0, "SPECIAL"=>1)
809
+ items[28][2].should eql "Most recent collect type"
810
+ end
811
+ end
812
+
813
+ describe "get_tlm_details" do
814
+ it "should complain about non-existant targets" do
815
+ expect { @api.get_tlm_details([["BLAH","HEALTH_STATUS","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
816
+ end
817
+
818
+ it "should complain about non-existant packets" do
819
+ expect { @api.get_tlm_details([["INST","BLAH","TEMP1"]]) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
820
+ end
821
+
822
+ it "should complain about non-existant items" do
823
+ expect { @api.get_tlm_details([["INST","LATEST","BLAH"]]) }.to raise_error(RuntimeError, "Telemetry item 'INST LATEST BLAH' does not exist")
824
+ end
825
+
826
+ it "should complain about bad parameters" do
827
+ expect { @api.get_tlm_details("INST") }.to raise_error(ArgumentError, /item_array must be nested array/)
828
+ expect { @api.get_tlm_details(["INST","LATEST","BLAH"]) }.to raise_error(ArgumentError, /item_array must be nested array/)
829
+ end
830
+
831
+ it "should read all the specified items" do
832
+ items = []
833
+ items << %w(INST HEALTH_STATUS TEMP1)
834
+ items << %w(INST HEALTH_STATUS TEMP2)
835
+ items << %w(INST HEALTH_STATUS TEMP3)
836
+ items << %w(INST HEALTH_STATUS TEMP4)
837
+ details = @api.get_tlm_details(items)
838
+ details.length.should eql 4
839
+ details[0]["name"].should eql "TEMP1"
840
+ details[1]["name"].should eql "TEMP2"
841
+ details[2]["name"].should eql "TEMP3"
842
+ details[3]["name"].should eql "TEMP4"
843
+ end
844
+ end
845
+
846
+ describe "get_out_of_limits" do
847
+ it "should return all out of limits items" do
848
+ items = @api.get_out_of_limits
849
+ (0..3).each do |i|
850
+ items[i][0].should eql "INST"
851
+ items[i][1].should eql "HEALTH_STATUS"
852
+ items[i][2].should eql "TEMP#{i+1}"
853
+ items[i][3].should eql :RED_LOW
854
+ end
855
+ end
856
+ end
857
+
858
+ describe "limits_enabled?" do
859
+ it "should complain about non-existant targets" do
860
+ expect { @api.limits_enabled?("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
861
+ end
862
+
863
+ it "should complain about non-existant packets" do
864
+ expect { @api.limits_enabled?("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
865
+ end
866
+
867
+ it "should complain about non-existant items" do
868
+ expect { @api.limits_enabled?("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
869
+ end
870
+
871
+ it "should return whether limits are enable for an item" do
872
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
873
+ end
874
+ end
875
+
876
+ describe "enable_limits" do
877
+ it "should complain about non-existant targets" do
878
+ expect { @api.enable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
879
+ end
880
+
881
+ it "should complain about non-existant packets" do
882
+ expect { @api.enable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
883
+ end
884
+
885
+ it "should complain about non-existant items" do
886
+ expect { @api.enable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
887
+ end
888
+
889
+ it "should enable limits for an item" do
890
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
891
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
892
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_falsey
893
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
894
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
895
+ end
896
+ end
897
+
898
+ describe "disable_limits" do
899
+ it "should complain about non-existant targets" do
900
+ expect { @api.disable_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
901
+ end
902
+
903
+ it "should complain about non-existant packets" do
904
+ expect { @api.disable_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
905
+ end
906
+
907
+ it "should complain about non-existant items" do
908
+ expect { @api.disable_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
909
+ end
910
+
911
+ it "should disable limits for an item" do
912
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
913
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
914
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_falsey
915
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
916
+ end
917
+ end
918
+
919
+ describe "get_limits" do
920
+ it "should complain about non-existant targets" do
921
+ expect { @api.get_limits("BLAH","HEALTH_STATUS","TEMP1") }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
922
+ end
923
+
924
+ it "should complain about non-existant packets" do
925
+ expect { @api.get_limits("INST","BLAH","TEMP1") }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
926
+ end
927
+
928
+ it "should complain about non-existant items" do
929
+ expect { @api.get_limits("INST","HEALTH_STATUS","BLAH") }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
930
+ end
931
+
932
+ it "should get limits for an item" do
933
+ @api.get_limits("INST","HEALTH_STATUS","TEMP1").should eql([:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0])
934
+ @api.get_limits("INST","HEALTH_STATUS","TEMP1",:TVAC).should eql([:TVAC, 1, true, -80.0, -30.0, 30.0, 80.0, nil, nil])
935
+ end
936
+ end
937
+
938
+ describe "set_limits" do
939
+ it "should complain about non-existant targets" do
940
+ expect { @api.set_limits("BLAH","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry target 'BLAH' does not exist")
941
+ end
942
+
943
+ it "should complain about non-existant packets" do
944
+ expect { @api.set_limits("INST","BLAH","TEMP1",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Telemetry packet 'INST BLAH' does not exist")
945
+ end
946
+
947
+ it "should complain about non-existant items" do
948
+ expect { @api.set_limits("INST","HEALTH_STATUS","BLAH",0.0,10.0,20.0,30.0) }.to raise_error(RuntimeError, "Packet item 'INST HEALTH_STATUS BLAH' does not exist")
949
+ end
950
+
951
+ it "should get limits for an item" do
952
+ @api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0).should eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, nil, nil])
953
+ @api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM2,2,false).should eql([:CUSTOM2, 2, false, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
954
+ @api.set_limits("INST","HEALTH_STATUS","TEMP1",0.0,10.0,20.0,30.0,12.0,15.0,:CUSTOM,1,true).should eql([:CUSTOM, 1, true, 0.0, 10.0, 20.0, 30.0, 12.0, 15.0])
955
+ end
956
+ end
957
+
958
+ describe "get_limits_groups" do
959
+ it "should return all the limits groups" do
960
+ @api.get_limits_groups.should eql %w(FIRST SECOND)
961
+ end
962
+ end
963
+
964
+ describe "enable_limits_group" do
965
+ it "should complain about undefined limits groups" do
966
+ expect { @api.enable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
967
+ end
968
+
969
+ it "should enable limits for all items in the group" do
970
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP1")
971
+ @api.disable_limits("INST","HEALTH_STATUS","TEMP3")
972
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_falsey
973
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP3").should be_falsey
974
+ @api.enable_limits_group("FIRST")
975
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
976
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP3").should be_truthy
977
+ end
978
+ end
979
+
980
+ describe "disable_limits_group" do
981
+ it "should complain about undefined limits groups" do
982
+ expect { @api.disable_limits_group("MINE") }.to raise_error(RuntimeError, "LIMITS_GROUP MINE undefined. Ensure your telemetry definition contains the line: LIMITS_GROUP MINE")
983
+ end
984
+
985
+ it "should disable limits for all items in the group" do
986
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP1")
987
+ @api.enable_limits("INST","HEALTH_STATUS","TEMP3")
988
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_truthy
989
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP3").should be_truthy
990
+ @api.disable_limits_group("FIRST")
991
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP1").should be_falsey
992
+ @api.limits_enabled?("INST","HEALTH_STATUS","TEMP3").should be_falsey
993
+ end
994
+ end
995
+
996
+ describe "get_limits_sets, get_limits_set, set_limits_set" do
997
+ it "should get and set the active limits set" do
998
+ if @api.get_limits_sets.include?(:CUSTOM)
999
+ @api.get_limits_sets.should eql [:DEFAULT,:TVAC, :CUSTOM, :CUSTOM2]
1000
+ else
1001
+ @api.get_limits_sets.should eql [:DEFAULT,:TVAC]
1002
+ end
1003
+ @api.set_limits_set("TVAC")
1004
+ @api.get_limits_set.should eql "TVAC"
1005
+ @api.set_limits_set("DEFAULT")
1006
+ @api.get_limits_set.should eql "DEFAULT"
1007
+ end
1008
+ end
1009
+
1010
+ describe "get_target_list" do
1011
+ it "should return all target names" do
1012
+ @api.get_target_list.should eql %w(COSMOS INST META SYSTEM)
1013
+ end
1014
+ end
1015
+
1016
+ describe "subscribe_limits_events" do
1017
+ it "should call CmdTlmServer" do
1018
+ stub_const("Cosmos::CmdTlmServer::DEFAULT_LIMITS_EVENT_QUEUE_SIZE", 100)
1019
+ expect(CmdTlmServer).to receive(:subscribe_limits_events)
1020
+ @api.subscribe_limits_events
1021
+ end
1022
+ end
1023
+
1024
+ describe "unsubscribe_limits_events" do
1025
+ it "should call CmdTlmServer" do
1026
+ expect(CmdTlmServer).to receive(:unsubscribe_limits_events)
1027
+ @api.unsubscribe_limits_events(0)
1028
+ end
1029
+ end
1030
+
1031
+ describe "get_limits_event" do
1032
+ it "should get a limits event" do
1033
+ expect(CmdTlmServer).to receive(:get_limits_event)
1034
+ @api.get_limits_event(0)
1035
+ end
1036
+ end
1037
+
1038
+ describe "subscribe_packet_data" do
1039
+ it "should call CmdTlmServer" do
1040
+ stub_const("Cosmos::CmdTlmServer::DEFAULT_PACKET_DATA_QUEUE_SIZE", 100)
1041
+ expect(CmdTlmServer).to receive(:subscribe_packet_data)
1042
+ @api.subscribe_packet_data([["TGT","PKT1"],["TGT","PKT2"]])
1043
+ end
1044
+ end
1045
+
1046
+ describe "unsubscribe_packet_datas" do
1047
+ it "should call CmdTlmServer" do
1048
+ expect(CmdTlmServer).to receive(:unsubscribe_packet_data)
1049
+ @api.unsubscribe_packet_data(10)
1050
+ end
1051
+ end
1052
+
1053
+ describe "get_packet_data" do
1054
+ it "should call CmdTlmServer" do
1055
+ expect(CmdTlmServer).to receive(:get_packet_data)
1056
+ @api.get_packet_data(10)
1057
+ end
1058
+ end
1059
+
1060
+ # All these methods simply pass through directly to CmdTlmServer without
1061
+ # adding any functionality. Thus we just test that they are are received
1062
+ # by the CmdTlmServer.
1063
+ describe "CmdTlmServer pass-throughs" do
1064
+ it "should call through to the CmdTlmServer" do
1065
+ @api.get_interface_names
1066
+ @api.connect_interface("INT")
1067
+ @api.disconnect_interface("INT")
1068
+ @api.interface_state("INT")
1069
+ @api.map_target_to_interface("INST", "INT")
1070
+ @api.get_router_names
1071
+ @api.connect_router("ROUTE")
1072
+ @api.disconnect_router("ROUTE")
1073
+ @api.router_state("ROUTE")
1074
+ @api.send_raw("INT","\x00\x01")
1075
+ @api.get_cmd_log_filename('DEFAULT')
1076
+ @api.get_tlm_log_filename('DEFAULT')
1077
+ @api.start_logging('ALL')
1078
+ @api.stop_logging('ALL')
1079
+ @api.start_cmd_log('ALL')
1080
+ @api.start_tlm_log('ALL')
1081
+ @api.stop_cmd_log('ALL')
1082
+ @api.stop_tlm_log('ALL')
1083
+ @api.get_server_message_log_filename
1084
+ @api.start_new_server_message_log
1085
+ end
1086
+ end
1087
+
1088
+ end
1089
+ end
1090
+